ForgeFlow
bg

Flow

Хранилището с компоненти на Flow: 146 компонента, каталогът и тестерът

Flow · flow@11.1 flowcomponentscataloguedb.jsontester

totaljs/flowstreamcomponents съдържа компонентите с отворен код, които предлага редакторът на Flow. В документираната тук ревизия (e34d283) има 146 компонента в components/, 32 по-стари в archived/, генератора на каталога (db.js), самия каталог (db.json) и тестер.

Какво покрива каталогът

Компонентите са организирани в групи. Някои от по-големите:

ГрупаКомпоненти (примери)
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

Освен това има компоненти за анализ (xmlparser, dataparser, csvdataset, cheerio), дати и часови зони (date, timezone, duration), текст и шаблони (tangular, qrcode), OAuth2 (oauth2), изтегляния (downloader, urldownload), известия (sms, rssreader, openweather, googlesearch) и хардуера на Linux (nvidiasmi). Папката archived/ пази за справка по-старото поколение на семейството (GPIO и I2C на Raspberry Pi, RabbitMQ, системни метрики).

Как ги намира Flow: db.json

Flow не изтегля HTML на всеки компонент. Той изтегля каталог, JSON файл (по подразбиране https://cdn.totaljs.com/flowstream/webcomponents/db.json, задава се в настройките) с по един запис за компонент:

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

Редакторът показва списъка с readme и изтегля url на компонента, когато го добавите. За да предлагате собствени компоненти до официалните, публикувайте своите HTML файлове и собствен db.json и запишете адреса му в настройката components2.

db.js генерира каталога: чете всеки файл от components/, взема group, name, author, icon, color, version и kind от неговите exports, взема текста от <readme>, изгражда url в CDN и записва db.json, подреден по име. Изпълнете го с Node.js, след като добавите или промените компонент.

Тестерът

tester.js изпълнява компонент без редактора, а tests/ съдържа примери (counter.js, example.js, example-multiple.js, influxdb.js, sqlite3.js, trigger.js) и readme.md с всички опции. Един тест изглежда така:

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 зарежда компонента, test.input(data) му изпраща съобщение, test.output и test.message получават каквото изпраща, test.configure({...}) променя конфигурацията му, test.trigger() извиква неговия trigger, а test.ok() и test.fail() отбелязват резултата. За да изпълните всички тестове: cd flowstreamcomponents, веднъж npm install total4 и node tester.js. Тестерът на тази ревизия е написан за Total.js 4 (require('total4')), както казва неговият readme.

Принос

Хранилището моли да се спазват стандартите и насоките за код на Total.js, а неговият readme ги свързва; контактът е info@totaljs.com. За да напишете компонент, вижте напишете компонент.