ForgeFlow
pl

Flow

Repozytorium komponentów Flow: 146 komponentów, katalog i tester

Flow · flow@11.1 flowcomponentscataloguedb.jsontester

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:

GrupaKomponenty (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, Ollamamqtt-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.