Il repository dei componenti di Flow: 146 componenti, il catalogo e il tester
totaljs/flowstreamcomponents contiene i componenti open source offerti dall’editor di Flow. Nella revisione documentata qui (e34d283) ha 146 componenti in components/, 32 più vecchi conservati in archived/, il generatore del catalogo (db.js), il catalogo stesso (db.json) e un tester.
Cosa copre il catalogo
I componenti sono organizzati in gruppi. Alcuni dei più grandi:
| Gruppo | Componenti (esempi) |
|---|---|
| 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 |
Inoltre ci sono componenti per l’analisi (xmlparser, dataparser, csvdataset, cheerio), date e fusi orari (date, timezone, duration), testo e modelli (tangular, qrcode), OAuth2 (oauth2), download (downloader, urldownload), notifiche (sms, rssreader, openweather, googlesearch) e l’hardware di Linux (nvidiasmi). La cartella archived/ conserva per riferimento la generazione precedente della famiglia (GPIO e I2C di Raspberry Pi, RabbitMQ, metriche di sistema).
Come li trova Flow: db.json
Flow non scarica l’HTML di ogni componente. Scarica un catalogo, un file JSON (per impostazione predefinita https://cdn.totaljs.com/flowstream/webcomponents/db.json, impostato in le impostazioni) con una voce per componente:
{
"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. ..."
}L’editor mostra l’elenco con il readme e scarica l’url del componente quando lo aggiungi. Per offrire i tuoi componenti accanto a quelli ufficiali, pubblica i tuoi file HTML e un tuo db.json e scrivi il suo indirizzo nell’impostazione components2.
db.js genera il catalogo: legge ogni file di components/, prende group, name, author, icon, color, version e kind dai suoi exports, prende il testo di <readme>, costruisce l’url sulla CDN e scrive db.json ordinato per nome. Eseguilo con Node.js dopo aver aggiunto o modificato un componente.
Il tester
tester.js esegue un componente senza l’editor e tests/ contiene esempi (counter.js, example.js, example-multiple.js, influxdb.js, sqlite3.js, trigger.js) e un readme.md con tutte le opzioni. Un test ha questo aspetto:
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 carica il componente, test.input(data) gli invia un messaggio, test.output e test.message ricevono ciò che invia, test.configure({...}) ne cambia la configurazione, test.trigger() chiama il suo trigger e test.ok() e test.fail() segnano il risultato. Per eseguire tutti i test: cd flowstreamcomponents, npm install total4 una volta e node tester.js. Il tester di questa revisione è scritto per Total.js 4 (require('total4')), come dice il suo readme.
Contribuire
Il repository chiede di seguire gli standard e le linee guida di codice di Total.js e il suo readme li collega; il contatto è info@totaljs.com. Per scrivere un componente, vedi scrivere un componente.