UNPKG

@telepilotco/n8n-nodes-kv-storage

Version:

Key-Value Storage Node for n8n supporting different scopes

134 lines 5.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KvStorageTrigger = void 0; const KvStorageService_1 = require("./KvStorageService"); const typedi_1 = require("typedi"); const debug = require('debug')('kv-storage'); class KvStorageTrigger { constructor() { this.description = { displayName: 'Key-Value Storage Trigger', name: 'kvStorageTrigger', icon: 'file:KvStorage.svg', group: ['trigger'], version: 1, description: 'Key-Value Storage change listener', defaults: { name: 'KVStorage Trigger', }, inputs: [], outputs: ['main'], credentials: [], properties: [ { displayName: 'Scope', name: 'scope', type: 'options', required: true, options: [ { name: 'ALL Scopes', value: KvStorageService_1.Scope.ALL, }, { name: 'Execution Scope', value: KvStorageService_1.Scope.EXECUTION, }, { name: 'Workflow Scope', value: KvStorageService_1.Scope.WORKFLOW, }, { name: 'Instance Scope', value: KvStorageService_1.Scope.INSTANCE, }, ], default: 'WORKFLOW', }, { displayName: 'EventType', name: 'eventType', type: 'multiOptions', default: [KvStorageService_1.EventType.ANY], required: true, options: [ { name: 'ANY', value: KvStorageService_1.EventType.ANY, }, { name: 'Added', value: KvStorageService_1.EventType.ADDED, }, { name: 'Updated', value: KvStorageService_1.EventType.UPDATED, }, { name: 'Deleted', value: KvStorageService_1.EventType.DELETED, }, ], description: 'Specify which operations you would like to receive', }, { displayName: 'Specifier', name: 'specifier', type: 'string', default: '', required: true, placeholder: '41,42,43,102', displayOptions: { show: { scope: [KvStorageService_1.Scope.WORKFLOW], }, }, description: 'Comma-separated list of Workflow IDs', }, ], }; } async trigger() { const service = typedi_1.Container.get(KvStorageService_1.KvStorageService); const scopeVar = this.getNodeParameter('scope', 0); const specifier = this.getNodeParameter('specifier', 0); const eventTypes = this.getNodeParameter('eventType', [KvStorageService_1.EventType.ANY]); const scope = KvStorageService_1.Scope[scopeVar]; const _listener = (a) => { if (eventTypes.includes(a['eventType']) || eventTypes.includes(KvStorageService_1.EventType.ANY)) { _emit(a); } }; service.addListener(scope, specifier, _listener); async function closeFunction() { debug('closeFunction'); service.removeListener(scope, specifier, _listener); } const _emit = (data) => { this.emit([this.helpers.returnJsonArray([data])]); }; const manualTriggerFunction = async () => { await new Promise((resolve, reject) => { const timeoutHandler = setTimeout(() => { reject(new Error('Aborted, no message received within 30secs. This 30sec timeout is only set for "manually triggered execution". Active Workflows will listen indefinitely.')); }, 30000); const _listener2 = (a) => { if (eventTypes.includes(a['eventType']) || eventTypes.includes(KvStorageService_1.EventType.ANY)) { _emit(a); clearTimeout(timeoutHandler); service.removeListener(scope, specifier, _listener2); resolve(true); } }; service.addListener(scope, specifier, _listener2); }); }; return { closeFunction, manualTriggerFunction, }; } } exports.KvStorageTrigger = KvStorageTrigger; exports.KvStorageTrigger = KvStorageTrigger; //# sourceMappingURL=KvStorageTrigger.node.js.map