ForgeFlow
de

Flow

Das Flow-Komponenten-Repository: 146 Komponenten, der Katalog und der Tester

Flow · flow@11.1 flowcomponentscataloguedb.jsontester

totaljs/flowstreamcomponents enthält die Open-Source-Komponenten, die der Editor von Flow anbietet. In der hier dokumentierten Revision (e34d283) hat es 146 Komponenten in components/, 32 ältere in archived/, den Generator des Katalogs (db.js), den Katalog selbst (db.json) und einen Tester.

Was der Katalog abdeckt

Die Komponenten sind in Gruppen organisiert. Einige der größeren:

GruppeKomponenten (Beispiele)
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

Außerdem gibt es Komponenten für das Parsen (xmlparser, dataparser, csvdataset, cheerio), Datum und Zeitzonen (date, timezone, duration), Text und Vorlagen (tangular, qrcode), OAuth2 (oauth2), Downloads (downloader, urldownload), Benachrichtigungen (sms, rssreader, openweather, googlesearch) und die Hardware von Linux (nvidiasmi). Der Ordner archived/ bewahrt die ältere Generation der Familie (Raspberry-Pi-GPIO und I2C, RabbitMQ, Systemmetriken) zur Referenz auf.

Wie Flow sie findet: db.json

Flow lädt nicht das HTML jeder Komponente herunter. Es lädt einen Katalog, eine JSON-Datei (standardmäßig https://cdn.totaljs.com/flowstream/webcomponents/db.json, festgelegt in den Einstellungen) mit einem Eintrag pro Komponente:

{
  "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. ..."
}

Der Editor zeigt die Liste mit dem readme und lädt die url der Komponente herunter, wenn Sie sie hinzufügen. Um eigene Komponenten neben den offiziellen anzubieten, veröffentlichen Sie Ihre HTML-Dateien und eine eigene db.json und tragen deren Adresse in die Einstellung components2 ein.

db.js erzeugt den Katalog: Es liest jede Datei in components/, entnimmt group, name, author, icon, color, version und kind ihren exports, übernimmt den Text von <readme>, baut die url auf dem CDN und schreibt db.json nach Namen sortiert. Führen Sie es mit Node.js aus, nachdem Sie eine Komponente hinzugefügt oder geändert haben.

Der Tester

tester.js führt eine Komponente ohne den Editor aus, und tests/ enthält Beispiele (counter.js, example.js, example-multiple.js, influxdb.js, sqlite3.js, trigger.js) sowie eine readme.md mit allen Optionen. Ein Test sieht so aus:

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 lädt die Komponente, test.input(data) schickt ihr eine Nachricht, test.output und test.message empfangen, was sie sendet, test.configure({...}) ändert ihre Konfiguration, test.trigger() ruft ihren Trigger auf und test.ok() und test.fail() markieren das Ergebnis. So führen Sie alle Tests aus: cd flowstreamcomponents, einmal npm install total4 und node tester.js. Der Tester dieser Revision ist für Total.js 4 geschrieben (require('total4')), wie sein Readme sagt.

Beitragen

Das Repository bittet darum, die Coding-Standards und Richtlinien von Total.js einzuhalten, und sein Readme verlinkt sie; der Kontakt ist info@totaljs.com. Um eine Komponente zu schreiben, siehe Eine Komponente schreiben.