A Flow komponenstárolója: 146 komponens, a katalógus és a teszter
A totaljs/flowstreamcomponents tartalmazza a Flow szerkesztője által kínált nyílt forráskódú komponenseket. Az itt dokumentált revízióban (e34d283) 146 komponens van a components/ mappában, 32 régebbi az archived/ mappában, ott a katalógus generátora (db.js), maga a katalógus (db.json) és egy teszter.
Mit fed le a katalógus
A komponensek csoportokba vannak szervezve. Néhány a nagyobbak közül:
| Csoport | Komponensek (példák) |
|---|---|
| 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, Ollama | mqtt-broker, mqtt-publish, mqtt-subscribe, aiagent, aitool, aicontext, chatgpt, ollamaprompt, ollamals, ollamawebsearch |
Emellett vannak komponensek az elemzéshez (xmlparser, dataparser, csvdataset, cheerio), dátumokhoz és időzónákhoz (date, timezone, duration), szöveghez és sablonokhoz (tangular, qrcode), OAuth2-höz (oauth2), letöltésekhez (downloader, urldownload), értesítésekhez (sms, rssreader, openweather, googlesearch) és a Linux hardveréhez (nvidiasmi). Az archived/ mappa referenciaként őrzi a család régebbi generációját (Raspberry Pi GPIO és I2C, RabbitMQ, rendszermetrikák).
Hogyan találja meg őket a Flow: db.json
A Flow nem tölti le minden komponens HTML-jét. Egy katalógust tölt le, egy JSON fájlt (alapértelmezés szerint https://cdn.totaljs.com/flowstream/webcomponents/db.json, a beállítások között állítható), komponensenként egy bejegyzéssel:
{
"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. ..."
}A szerkesztő a readme szöveggel mutatja a listát, és a komponens url címét tölti le, amikor hozzáadod. Hogy a hivatalosak mellett saját komponenseket is kínálj, tedd közzé a HTML fájljaidat és egy saját db.json fájlt, és írd a címét a components2 beállításba.
A db.js előállítja a katalógust: beolvassa a components/ minden fájlját, az exports részéből kiveszi a group, name, author, icon, color, version és kind értékeket, átveszi a <readme> szövegét, felépíti az url címet a CDN-en, és névsorba rendezve írja a db.json fájlt. Futtasd Node.js-szel, miután hozzáadtál vagy módosítottál egy komponenst.
A teszter
A tester.js szerkesztő nélkül futtat egy komponenst, a tests/ mappa példákat (counter.js, example.js, example-multiple.js, influxdb.js, sqlite3.js, trigger.js) és egy readme.md fájlt tartalmaz az összes beállítással. Egy teszt így néz ki:
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();
});A describe betölti a komponenst, a test.input(data) üzenetet küld neki, a test.output és a test.message fogadja, amit küld, a test.configure({...}) megváltoztatja a konfigurációját, a test.trigger() meghívja a triggerét, a test.ok() és a test.fail() pedig megjelöli az eredményt. Az összes teszt futtatásához: cd flowstreamcomponents, egyszer npm install total4, majd node tester.js. Ennek a revíziónak a tesztere Total.js 4-hez készült (require('total4')), ahogy a readme is mondja.
Közreműködés
A tároló kéri a Total.js kódolási szabványainak és irányelveinek követését, a readme pedig hivatkozik rájuk; az elérhetőség info@totaljs.com. Komponens írásához lásd a komponens írása oldalt.