ForgeFlow
el

Flow

Το αποθετήριο συνιστωσών του Flow: 146 συνιστώσες, ο κατάλογος και ο ελεγκτής

Flow · flow@11.1 flowcomponentscataloguedb.jsontester

Το totaljs/flowstreamcomponents περιέχει τις συνιστώσες ανοιχτού κώδικα που προσφέρει ο επεξεργαστής του Flow. Στην αναθεώρηση που τεκμηριώνεται εδώ (e34d283) έχει 146 συνιστώσες στο components/, 32 παλαιότερες στο archived/, τη γεννήτρια του καταλόγου (db.js), τον ίδιο τον κατάλογο (db.json) και έναν ελεγκτή.

Τι καλύπτει ο κατάλογος

Οι συνιστώσες είναι οργανωμένες σε ομάδες. Μερικές από τις μεγαλύτερες:

ΟμάδαΣυνιστώσες (παραδείγματα)
Common (40)delay, print, counter, switch, merge, code, request, throttle, transform, macro, modify, stringoperations
Total.js (17)taction, troute, tschema, tcors, tresponse, tauthtoken, twebsocketroute, tuploadedfiles, tsql, querybuilderpg
Total.js API Services (13)tapiocrapi, tapigeoipapi, tapiweatherapi, tapismsapi, tapichatgptapi, tapiinvoiceparserapi, tapicheckvatapi, tapiprintapi
Databases (8)postgresql, mysql, sqlite3, mongodb-query, mongodb-insert, influxdb, nosql, localstorage
Triggers (7)timer, trigger, crontab, minutely, notify
Files (6)filewriter, filewatcher, fileswatcher, fsrename, fstouch, fsunlink
Flow, FlowStream, Stats, Checks, Security...debug, flowstats, input, output, publish, subscribe, stopwatch, checkurl, checklog, checkfreespace, totp, iplimiter
MQTT, AI, Ollamamqtt-broker, mqtt-publish, mqtt-subscribe, aiagent, aitool, aicontext, chatgpt, ollamaprompt, ollamals, ollamawebsearch

Επιπλέον, υπάρχουν συνιστώσες για ανάλυση (xmlparser, dataparser, csvdataset, cheerio), ημερομηνίες και ζώνες ώρας (date, timezone, duration), κείμενο και πρότυπα (tangular, qrcode), OAuth2 (oauth2), λήψεις (downloader, urldownload), ειδοποιήσεις (sms, rssreader, openweather, googlesearch) και το υλικό του Linux (nvidiasmi). Ο φάκελος archived/ κρατά για αναφορά την παλαιότερη γενιά της οικογένειας (GPIO και I2C του Raspberry Pi, RabbitMQ, μετρικές συστήματος).

Πώς τις βρίσκει το Flow: db.json

Το Flow δεν κατεβάζει το HTML κάθε συνιστώσας. Κατεβάζει έναν κατάλογο, ένα αρχείο JSON (από προεπιλογή https://cdn.totaljs.com/flowstream/webcomponents/db.json, που ορίζεται στις ρυθμίσεις) με μία εγγραφή ανά συνιστώσα:

{
  "id": "taction",
  "group": "Total.js",
  "name": "Action",
  "url": "https://cdn.totaljs.com/flowstream/webcomponents/taction.html",
  "author": "Peter Širka | Total.js",
  "icon": "ti ti-totaljs",
  "color": "",
  "version": "2",
  "kind": "",
  "readme": "This component creates similar functionality as Total.js Actions. ..."
}

Ο επεξεργαστής εμφανίζει τη λίστα με το readme και κατεβάζει το url της συνιστώσας όταν την προσθέτετε. Για να προσφέρετε δικές σας συνιστώσες δίπλα στις επίσημες, δημοσιεύστε τα αρχεία HTML σας και ένα δικό σας db.json και γράψτε τη διεύθυνσή του στη ρύθμιση components2.

Το db.js δημιουργεί τον κατάλογο: διαβάζει κάθε αρχείο του components/, παίρνει τα group, name, author, icon, color, version και kind από τα exports του, παίρνει το κείμενο του <readme>, φτιάχνει το url στο CDN και γράφει το db.json ταξινομημένο κατά όνομα. Εκτελέστε το με Node.js αφού προσθέσετε ή αλλάξετε μια συνιστώσα.

Ο ελεγκτής

Το tester.js εκτελεί μια συνιστώσα χωρίς τον επεξεργαστή και το tests/ έχει παραδείγματα (counter.js, example.js, example-multiple.js, influxdb.js, sqlite3.js, trigger.js) και ένα readme.md με όλες τις επιλογές. Ένα τεστ μοιάζει έτσι:

require('../tester')(async function(describe, done) {

	await describe(function(test, next) {

		let messages = 0;
		let status = 0;

		test.status = function(data) {
			status = data;
		};

		test.input('Hello World!');
		messages++;

		setTimeout(function() {
			test.ok(status === messages, 'Counting');
			next();
		}, 2000);

	});

	done();
});

Το describe φορτώνει τη συνιστώσα, το test.input(data) της στέλνει ένα μήνυμα, τα test.output και test.message λαμβάνουν ό,τι στέλνει, το test.configure({...}) αλλάζει τη διαμόρφωσή της, το test.trigger() καλεί το trigger της και τα test.ok() και test.fail() σημειώνουν το αποτέλεσμα. Για να εκτελέσετε όλα τα τεστ: cd flowstreamcomponents, μία φορά npm install total4 και node tester.js. Ο ελεγκτής αυτής της αναθεώρησης είναι γραμμένος για Total.js 4 (require('total4')), όπως λέει το readme του.

Συνεισφορά

Το αποθετήριο ζητά να ακολουθείτε τα πρότυπα και τις οδηγίες κώδικα του Total.js και το readme του τα συνδέει· η επαφή είναι info@totaljs.com. Για να γράψετε μια συνιστώσα, δείτε γράψτε μια συνιστώσα.