Flows komponentförråd: 146 komponenter, katalogen och testaren
totaljs/flowstreamcomponents innehåller komponenterna med öppen källkod som Flows editor erbjuder. I revisionen som dokumenteras här (e34d283) har det 146 komponenter i components/, 32 äldre i archived/, katalogens generator (db.js), själva katalogen (db.json) och en testare.
Vad katalogen täcker
Komponenterna är ordnade i grupper. Några av de större:
| Grupp | Komponenter (exempel) |
|---|---|
| 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 |
Dessutom finns komponenter för tolkning (xmlparser, dataparser, csvdataset, cheerio), datum och tidszoner (date, timezone, duration), text och mallar (tangular, qrcode), OAuth2 (oauth2), nedladdningar (downloader, urldownload), notiser (sms, rssreader, openweather, googlesearch) och Linux-hårdvara (nvidiasmi). Mappen archived/ behåller för referens den äldre generationen av familjen (Raspberry Pi GPIO och I2C, RabbitMQ, systemmått).
Hur Flow hittar dem: db.json
Flow laddar inte ner HTML-koden för varje komponent. Det laddar ner en katalog, en JSON-fil (som standard https://cdn.totaljs.com/flowstream/webcomponents/db.json, inställd i inställningarna) med en post per komponent:
{
"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. ..."
}Editorn visar listan med readme och laddar ner komponentens url när du lägger till den. För att erbjuda dina egna komponenter vid sidan av de officiella publicerar du dina HTML-filer och en egen db.json och skriver dess adress i inställningen components2.
db.js genererar katalogen: den läser varje fil i components/, hämtar group, name, author, icon, color, version och kind från dess exports, hämtar texten i <readme>, bygger url på CDN och skriver db.json sorterad efter namn. Kör den med Node.js efter att du lagt till eller ändrat en komponent.
Testaren
tester.js kör en komponent utan editorn och tests/ har exempel (counter.js, example.js, example-multiple.js, influxdb.js, sqlite3.js, trigger.js) och en readme.md med alla alternativ. Ett test ser ut så här:
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 laddar komponenten, test.input(data) skickar ett meddelande till den, test.output och test.message tar emot vad den skickar, test.configure({...}) ändrar dess konfiguration, test.trigger() anropar dess trigger och test.ok() och test.fail() markerar resultatet. För att köra alla tester: cd flowstreamcomponents, en gång npm install total4 och node tester.js. Testaren i den här revisionen är skriven för Total.js 4 (require('total4')), som dess readme säger.
Bidra
Förrådet ber dig följa Total.js kodstandarder och riktlinjer, och dess readme länkar dem; kontakten är info@totaljs.com. För att skriva en komponent, se skriv en komponent.