Repozytorium komponentów Flow: 146 komponentów, katalog i tester
totaljs/flowstreamcomponents zawiera komponenty open source, które oferuje edytor Flow. W opisanej tu rewizji (e34d283) ma 146 komponentów w components/, 32 starsze przechowywane w archived/, generator katalogu (db.js), sam katalog (db.json) i tester.
Co obejmuje katalog
Komponenty są uporządkowane w grupy. Kilka z większych:
| Grupa | Komponenty (przykłady) |
|---|---|
| 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 |
Ponadto są komponenty do parsowania (xmlparser, dataparser, csvdataset, cheerio), dat i stref czasowych (date, timezone, duration), tekstu i szablonów (tangular, qrcode), OAuth2 (oauth2), pobierania (downloader, urldownload), powiadomień (sms, rssreader, openweather, googlesearch) i sprzętu Linuksa (nvidiasmi). Folder archived/ przechowuje dla odniesienia starszą generację rodziny (GPIO i I2C Raspberry Pi, RabbitMQ, metryki systemowe).
Jak Flow je znajduje: db.json
Flow nie pobiera HTML każdego komponentu. Pobiera katalog, plik JSON (domyślnie https://cdn.totaljs.com/flowstream/webcomponents/db.json, ustawiany w ustawieniach) z jednym wpisem na 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. ..."
}Edytor pokazuje listę z readme i pobiera url komponentu, gdy go dodasz. Aby oferować własne komponenty obok oficjalnych, opublikuj swoje pliki HTML i własny db.json i wpisz jego adres w ustawieniu components2.
db.js generuje katalog: czyta każdy plik z components/, bierze group, name, author, icon, color, version i kind z jego exports, bierze tekst z <readme>, buduje url w CDN i zapisuje db.json posortowany według nazwy. Uruchom go w Node.js po dodaniu lub zmianie komponentu.
Tester
tester.js uruchamia komponent bez edytora, a tests/ zawiera przykłady (counter.js, example.js, example-multiple.js, influxdb.js, sqlite3.js, trigger.js) oraz readme.md ze wszystkimi opcjami. Test wygląda tak:
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 ładuje komponent, test.input(data) wysyła mu wiadomość, test.output i test.message odbierają to, co wysyła, test.configure({...}) zmienia jego konfigurację, test.trigger() wywołuje jego trigger, a test.ok() i test.fail() oznaczają wynik. Aby uruchomić wszystkie testy: cd flowstreamcomponents, raz npm install total4 i node tester.js. Tester z tej rewizji jest napisany dla Total.js 4 (require('total4')), jak mówi jego readme.
Współtworzenie
Repozytorium prosi o przestrzeganie standardów i wytycznych kodu Total.js, a jego readme je linkuje; kontakt to info@totaljs.com. Aby napisać komponent, zobacz napisz komponent.