ForgeFlow
hu

Flow

A Flow komponenstárolója: 146 komponens, a katalógus és a teszter

Flow · flow@11.1 flowcomponentscataloguedb.jsontester

A totaljs/flowstreamcomponents tartalmazza a Flow szerkesztője által kínált nyílt forráskódú komponenseket. Az itt dokumentált revízióban (e34d283) 146 komponens van a components/ mappában, 32 régebbi az archived/ mappában, ott a katalógus generátora (db.js), maga a katalógus (db.json) és egy teszter.

Mit fed le a katalógus

A komponensek csoportokba vannak szervezve. Néhány a nagyobbak közül:

CsoportKomponensek (példák)
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

Emellett vannak komponensek az elemzéshez (xmlparser, dataparser, csvdataset, cheerio), dátumokhoz és időzónákhoz (date, timezone, duration), szöveghez és sablonokhoz (tangular, qrcode), OAuth2-höz (oauth2), letöltésekhez (downloader, urldownload), értesítésekhez (sms, rssreader, openweather, googlesearch) és a Linux hardveréhez (nvidiasmi). Az archived/ mappa referenciaként őrzi a család régebbi generációját (Raspberry Pi GPIO és I2C, RabbitMQ, rendszermetrikák).

Hogyan találja meg őket a Flow: db.json

A Flow nem tölti le minden komponens HTML-jét. Egy katalógust tölt le, egy JSON fájlt (alapértelmezés szerint https://cdn.totaljs.com/flowstream/webcomponents/db.json, a beállítások között állítható), komponensenként egy bejegyzéssel:

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

A szerkesztő a readme szöveggel mutatja a listát, és a komponens url címét tölti le, amikor hozzáadod. Hogy a hivatalosak mellett saját komponenseket is kínálj, tedd közzé a HTML fájljaidat és egy saját db.json fájlt, és írd a címét a components2 beállításba.

A db.js előállítja a katalógust: beolvassa a components/ minden fájlját, az exports részéből kiveszi a group, name, author, icon, color, version és kind értékeket, átveszi a <readme> szövegét, felépíti az url címet a CDN-en, és névsorba rendezve írja a db.json fájlt. Futtasd Node.js-szel, miután hozzáadtál vagy módosítottál egy komponenst.

A teszter

A tester.js szerkesztő nélkül futtat egy komponenst, a tests/ mappa példákat (counter.js, example.js, example-multiple.js, influxdb.js, sqlite3.js, trigger.js) és egy readme.md fájlt tartalmaz az összes beállítással. Egy teszt így néz ki:

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();
});

A describe betölti a komponenst, a test.input(data) üzenetet küld neki, a test.output és a test.message fogadja, amit küld, a test.configure({...}) megváltoztatja a konfigurációját, a test.trigger() meghívja a triggerét, a test.ok() és a test.fail() pedig megjelöli az eredményt. Az összes teszt futtatásához: cd flowstreamcomponents, egyszer npm install total4, majd node tester.js. Ennek a revíziónak a tesztere Total.js 4-hez készült (require('total4')), ahogy a readme is mondja.

Közreműködés

A tároló kéri a Total.js kódolási szabványainak és irányelveinek követését, a readme pedig hivatkozik rájuk; az elérhetőség info@totaljs.com. Komponens írásához lásd a komponens írása oldalt.