@fsai-flow/core 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/README.md +31 -0
  2. package/dist/package.json +54 -0
  3. package/dist/src/index.d.ts +16 -0
  4. package/dist/src/index.js +30 -0
  5. package/dist/src/index.js.map +1 -0
  6. package/dist/src/lib/ActiveWebhooks.d.ts +59 -0
  7. package/dist/src/lib/ActiveWebhooks.js +184 -0
  8. package/dist/src/lib/ActiveWebhooks.js.map +1 -0
  9. package/dist/src/lib/ActiveWorkflows.d.ts +87 -0
  10. package/dist/src/lib/ActiveWorkflows.js +456 -0
  11. package/dist/src/lib/ActiveWorkflows.js.map +1 -0
  12. package/dist/src/lib/BinaryDataManager/FileSystem.d.ts +26 -0
  13. package/dist/src/lib/BinaryDataManager/FileSystem.js +179 -0
  14. package/dist/src/lib/BinaryDataManager/FileSystem.js.map +1 -0
  15. package/dist/src/lib/BinaryDataManager/index.d.ts +21 -0
  16. package/dist/src/lib/BinaryDataManager/index.js +146 -0
  17. package/dist/src/lib/BinaryDataManager/index.js.map +1 -0
  18. package/dist/src/lib/ChangeCase.d.ts +9 -0
  19. package/dist/src/lib/ChangeCase.js +43 -0
  20. package/dist/src/lib/ChangeCase.js.map +1 -0
  21. package/dist/src/lib/Constants.d.ts +14 -0
  22. package/dist/src/lib/Constants.js +19 -0
  23. package/dist/src/lib/Constants.js.map +1 -0
  24. package/dist/src/lib/Credentials.d.ts +27 -0
  25. package/dist/src/lib/Credentials.js +89 -0
  26. package/dist/src/lib/Credentials.js.map +1 -0
  27. package/dist/src/lib/FileSystem.d.ts +26 -0
  28. package/dist/src/lib/FileSystem.js +179 -0
  29. package/dist/src/lib/FileSystem.js.map +1 -0
  30. package/dist/src/lib/InputConnectionDataLegacy.d.ts +2 -0
  31. package/dist/src/lib/InputConnectionDataLegacy.js +79 -0
  32. package/dist/src/lib/InputConnectionDataLegacy.js.map +1 -0
  33. package/dist/src/lib/Interfaces.d.ts +148 -0
  34. package/dist/src/lib/Interfaces.js +3 -0
  35. package/dist/src/lib/Interfaces.js.map +1 -0
  36. package/dist/src/lib/LoadNodeParameterOptions.d.ts +39 -0
  37. package/dist/src/lib/LoadNodeParameterOptions.js +150 -0
  38. package/dist/src/lib/LoadNodeParameterOptions.js.map +1 -0
  39. package/dist/src/lib/NodeExecuteFunctions.d.ts +226 -0
  40. package/dist/src/lib/NodeExecuteFunctions.js +2479 -0
  41. package/dist/src/lib/NodeExecuteFunctions.js.map +1 -0
  42. package/dist/src/lib/NodesLoader/constants.d.ts +5 -0
  43. package/dist/src/lib/NodesLoader/constants.js +106 -0
  44. package/dist/src/lib/NodesLoader/constants.js.map +1 -0
  45. package/dist/src/lib/NodesLoader/custom-directory-loader.d.ts +9 -0
  46. package/dist/src/lib/NodesLoader/custom-directory-loader.js +36 -0
  47. package/dist/src/lib/NodesLoader/custom-directory-loader.js.map +1 -0
  48. package/dist/src/lib/NodesLoader/directory-loader.d.ts +66 -0
  49. package/dist/src/lib/NodesLoader/directory-loader.js +325 -0
  50. package/dist/src/lib/NodesLoader/directory-loader.js.map +1 -0
  51. package/dist/src/lib/NodesLoader/index.d.ts +5 -0
  52. package/dist/src/lib/NodesLoader/index.js +12 -0
  53. package/dist/src/lib/NodesLoader/index.js.map +1 -0
  54. package/dist/src/lib/NodesLoader/lazy-package-directory-loader.d.ts +7 -0
  55. package/dist/src/lib/NodesLoader/lazy-package-directory-loader.js +52 -0
  56. package/dist/src/lib/NodesLoader/lazy-package-directory-loader.js.map +1 -0
  57. package/dist/src/lib/NodesLoader/load-class-in-isolation.d.ts +1 -0
  58. package/dist/src/lib/NodesLoader/load-class-in-isolation.js +22 -0
  59. package/dist/src/lib/NodesLoader/load-class-in-isolation.js.map +1 -0
  60. package/dist/src/lib/NodesLoader/package-directory-loader.d.ts +17 -0
  61. package/dist/src/lib/NodesLoader/package-directory-loader.js +100 -0
  62. package/dist/src/lib/NodesLoader/package-directory-loader.js.map +1 -0
  63. package/dist/src/lib/NodesLoader/types.d.ts +14 -0
  64. package/dist/src/lib/NodesLoader/types.js +3 -0
  65. package/dist/src/lib/NodesLoader/types.js.map +1 -0
  66. package/dist/src/lib/RedisLeaderElectionManager.d.ts +53 -0
  67. package/dist/src/lib/RedisLeaderElectionManager.js +294 -0
  68. package/dist/src/lib/RedisLeaderElectionManager.js.map +1 -0
  69. package/dist/src/lib/UserSettings.d.ts +80 -0
  70. package/dist/src/lib/UserSettings.js +261 -0
  71. package/dist/src/lib/UserSettings.js.map +1 -0
  72. package/dist/src/lib/WorkflowExecute.d.ts +53 -0
  73. package/dist/src/lib/WorkflowExecute.js +854 -0
  74. package/dist/src/lib/WorkflowExecute.js.map +1 -0
  75. package/dist/src/lib/index.d.ts +21 -0
  76. package/dist/src/lib/index.js +146 -0
  77. package/dist/src/lib/index.js.map +1 -0
  78. package/dist/src/utils/crypto.d.ts +1 -0
  79. package/dist/src/utils/crypto.js +8 -0
  80. package/dist/src/utils/crypto.js.map +1 -0
  81. package/package.json +2 -2
  82. package/src/lib/ActiveWebhooks.ts +1 -1
  83. package/src/lib/ActiveWorkflows.ts +1 -1
  84. package/src/lib/LoadNodeParameterOptions.ts +1 -1
  85. package/src/lib/NodeExecuteFunctions.ts +1 -1
  86. package/src/lib/RedisLeaderElectionManager.ts +82 -0
  87. package/src/lib/UserSettings.ts +1 -1
  88. package/src/lib/WorkflowExecute.ts +1 -5
  89. package/tsconfig.json +0 -1
  90. package/tsconfig.base.json +0 -28
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BinaryDataFileSystem = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fs_1 = require("fs");
6
+ const path = tslib_1.__importStar(require("path"));
7
+ const uuid_1 = require("uuid");
8
+ const PREFIX_METAFILE = 'binarymeta';
9
+ const PREFIX_PERSISTED_METAFILE = 'persistedmeta';
10
+ class BinaryDataFileSystem {
11
+ constructor(config) {
12
+ this.storagePath = config.localStoragePath;
13
+ this.binaryDataTTL = config.binaryDataTTL;
14
+ this.persistedBinaryDataTTL = config.persistedBinaryDataTTL;
15
+ }
16
+ init() {
17
+ return tslib_1.__awaiter(this, arguments, void 0, function* (startPurger = false) {
18
+ if (startPurger) {
19
+ setInterval(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
20
+ yield this.deleteMarkedFiles();
21
+ }), this.binaryDataTTL * 30000);
22
+ setInterval(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
23
+ yield this.deleteMarkedPersistedFiles();
24
+ }), this.persistedBinaryDataTTL * 30000);
25
+ }
26
+ return fs_1.promises
27
+ .readdir(this.storagePath)
28
+ .catch(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return fs_1.promises.mkdir(this.storagePath, { recursive: true }); }))
29
+ .then(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return fs_1.promises.readdir(this.getBinaryDataMetaPath()); }))
30
+ .catch(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return fs_1.promises.mkdir(this.getBinaryDataMetaPath(), { recursive: true }); }))
31
+ .then(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return fs_1.promises.readdir(this.getBinaryDataPersistMetaPath()); }))
32
+ .catch(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return fs_1.promises.mkdir(this.getBinaryDataPersistMetaPath(), { recursive: true }); }))
33
+ .then(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return this.deleteMarkedFiles(); }))
34
+ .then(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return this.deleteMarkedPersistedFiles(); }))
35
+ .then(() => { });
36
+ });
37
+ }
38
+ storeBinaryData(binaryBuffer, executionId) {
39
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
40
+ const binaryDataId = this.generateFileName(executionId);
41
+ return this.addBinaryIdToPersistMeta(executionId, binaryDataId).then(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return this.saveToLocalStorage(binaryBuffer, binaryDataId).then(() => binaryDataId); }));
42
+ });
43
+ }
44
+ retrieveBinaryDataByIdentifier(identifier) {
45
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
46
+ return this.retrieveFromLocalStorage(identifier);
47
+ });
48
+ }
49
+ markDataForDeletionByExecutionId(executionId) {
50
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
51
+ const tt = new Date(new Date().getTime() + this.binaryDataTTL * 60000);
52
+ return fs_1.promises.writeFile(path.join(this.getBinaryDataMetaPath(), `${PREFIX_METAFILE}_${executionId}_${tt.valueOf()}`), '');
53
+ });
54
+ }
55
+ deleteMarkedFiles() {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
+ return this.deleteMarkedFilesByMeta(this.getBinaryDataMetaPath(), PREFIX_METAFILE);
58
+ });
59
+ }
60
+ deleteMarkedPersistedFiles() {
61
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
62
+ return this.deleteMarkedFilesByMeta(this.getBinaryDataPersistMetaPath(), PREFIX_PERSISTED_METAFILE);
63
+ });
64
+ }
65
+ addBinaryIdToPersistMeta(executionId, identifier) {
66
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
67
+ const currentTime = new Date().getTime();
68
+ const timeAtNextHour = currentTime + 3600000 - (currentTime % 3600000);
69
+ const timeoutTime = timeAtNextHour + this.persistedBinaryDataTTL * 60000;
70
+ const filePath = path.join(this.getBinaryDataPersistMetaPath(), `${PREFIX_PERSISTED_METAFILE}_${executionId}_${timeoutTime}`);
71
+ return fs_1.promises
72
+ .readFile(filePath)
73
+ .catch(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return fs_1.promises.writeFile(filePath, identifier); }))
74
+ .then(() => { });
75
+ });
76
+ }
77
+ deleteMarkedFilesByMeta(metaPath, filePrefix) {
78
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
79
+ const currentTimeValue = new Date().valueOf();
80
+ const metaFileNames = yield fs_1.promises.readdir(metaPath);
81
+ const execsAdded = {};
82
+ const proms = metaFileNames.reduce((prev, curr) => {
83
+ const [prefix, executionId, ts] = curr.split('_');
84
+ if (prefix !== filePrefix) {
85
+ return prev;
86
+ }
87
+ const execTimestamp = parseInt(ts, 10);
88
+ if (execTimestamp < currentTimeValue) {
89
+ if (execsAdded[executionId]) {
90
+ // do not delete data, only meta file
91
+ prev.push(this.deleteMetaFileByPath(path.join(metaPath, curr)));
92
+ return prev;
93
+ }
94
+ execsAdded[executionId] = 1;
95
+ prev.push(this.deleteBinaryDataByExecutionId(executionId).then(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return this.deleteMetaFileByPath(path.join(metaPath, curr)); })));
96
+ }
97
+ return prev;
98
+ }, [Promise.resolve()]);
99
+ return Promise.all(proms).then(() => { });
100
+ });
101
+ }
102
+ duplicateBinaryDataByIdentifier(binaryDataId, prefix) {
103
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
104
+ const newBinaryDataId = this.generateFileName(prefix);
105
+ return fs_1.promises
106
+ .copyFile(path.join(this.storagePath, binaryDataId), path.join(this.storagePath, newBinaryDataId))
107
+ .then(() => newBinaryDataId);
108
+ });
109
+ }
110
+ deleteBinaryDataByExecutionId(executionId) {
111
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
112
+ const regex = new RegExp(`${executionId}_*`);
113
+ const filenames = yield fs_1.promises.readdir(path.join(this.storagePath));
114
+ const proms = filenames.reduce((allProms, filename) => {
115
+ if (regex.test(filename)) {
116
+ allProms.push(fs_1.promises.rm(path.join(this.storagePath, filename)));
117
+ }
118
+ return allProms;
119
+ }, [Promise.resolve()]);
120
+ return Promise.all(proms).then(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return Promise.resolve(); }));
121
+ });
122
+ }
123
+ deleteBinaryDataByIdentifier(identifier) {
124
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
125
+ return this.deleteFromLocalStorage(identifier);
126
+ });
127
+ }
128
+ persistBinaryDataForExecutionId(executionId) {
129
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
130
+ return fs_1.promises.readdir(this.getBinaryDataPersistMetaPath()).then((metafiles) => tslib_1.__awaiter(this, void 0, void 0, function* () {
131
+ const proms = metafiles.reduce((prev, curr) => {
132
+ if (curr.startsWith(`${PREFIX_PERSISTED_METAFILE}_${executionId}_`)) {
133
+ prev.push(fs_1.promises.rm(path.join(this.getBinaryDataPersistMetaPath(), curr)));
134
+ return prev;
135
+ }
136
+ return prev;
137
+ }, [Promise.resolve()]);
138
+ return Promise.all(proms).then(() => { });
139
+ }));
140
+ });
141
+ }
142
+ generateFileName(prefix) {
143
+ return `${prefix}_${(0, uuid_1.v4)()}`;
144
+ }
145
+ getBinaryDataMetaPath() {
146
+ return path.join(this.storagePath, 'meta');
147
+ }
148
+ getBinaryDataPersistMetaPath() {
149
+ return path.join(this.storagePath, 'persistMeta');
150
+ }
151
+ deleteMetaFileByPath(metafilePath) {
152
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
153
+ return fs_1.promises.rm(metafilePath);
154
+ });
155
+ }
156
+ deleteFromLocalStorage(identifier) {
157
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
158
+ return fs_1.promises.rm(path.join(this.storagePath, identifier));
159
+ });
160
+ }
161
+ saveToLocalStorage(data, identifier) {
162
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
163
+ yield fs_1.promises.writeFile(path.join(this.storagePath, identifier), data);
164
+ });
165
+ }
166
+ retrieveFromLocalStorage(identifier) {
167
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
168
+ const filePath = path.join(this.storagePath, identifier);
169
+ try {
170
+ return yield fs_1.promises.readFile(filePath);
171
+ }
172
+ catch (e) {
173
+ throw new Error(`Error finding file: ${filePath}`);
174
+ }
175
+ });
176
+ }
177
+ }
178
+ exports.BinaryDataFileSystem = BinaryDataFileSystem;
179
+ //# sourceMappingURL=FileSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSystem.js","sourceRoot":"","sources":["../../../src/lib/FileSystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { INodeType, ISupplyDataFunctions, Workflow, NodeConnectionType, IWebhookFunctions } from '@fsai-flow/workflow';
2
+ export declare function getInputConnectionDataLegacy(this: ISupplyDataFunctions | IWebhookFunctions, workflow: Workflow, connectionType: NodeConnectionType, itemIndex: number, nodeTypeData: INodeType): Promise<unknown>;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInputConnectionDataLegacy = getInputConnectionDataLegacy;
4
+ const tslib_1 = require("tslib");
5
+ const workflow_1 = require("@fsai-flow/workflow");
6
+ function getInputConnectionDataLegacy(workflow, connectionType, itemIndex, nodeTypeData) {
7
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
8
+ var _a, _b, _c, _d;
9
+ const parentNode = this.getNode();
10
+ const nodeInputs = getNodeInputs(workflow, parentNode, nodeTypeData.description).map((input) => (typeof input === 'string' ? { type: input } : input));
11
+ const inputConfiguration = nodeInputs.find((input) => input.type === connectionType);
12
+ if (inputConfiguration === undefined) {
13
+ throw new workflow_1.NodeOperationError(parentNode, `Node does not have input of type`, {
14
+ description: `Node ${parentNode.name} does not have input of type ${connectionType}`,
15
+ });
16
+ }
17
+ const connectedNodes = getConnectedNodes(workflow, parentNode, connectionType);
18
+ if (connectedNodes.length === 0) {
19
+ if (inputConfiguration.required) {
20
+ throw new workflow_1.NodeOperationError(parentNode, `A ${(_a = inputConfiguration === null || inputConfiguration === void 0 ? void 0 : inputConfiguration.displayName) !== null && _a !== void 0 ? _a : connectionType} sub-node must be connected and enabled`);
21
+ }
22
+ return inputConfiguration.maxConnections === 1 ? undefined : [];
23
+ }
24
+ if (inputConfiguration.maxConnections !== undefined &&
25
+ connectedNodes.length > inputConfiguration.maxConnections) {
26
+ throw new workflow_1.NodeOperationError(parentNode, `Only ${inputConfiguration.maxConnections} ${connectionType} sub-nodes are/is allowed to be connected`);
27
+ }
28
+ const nodes = [];
29
+ for (const connectedNode of connectedNodes) {
30
+ const connectedNodeType = workflow.nodeTypes.getByNameAndVersion(connectedNode.type, connectedNode.typeVersion);
31
+ if (!connectedNodeType) {
32
+ continue;
33
+ }
34
+ if (connectedNodeType && !connectedNodeType.supplyData) {
35
+ throw new workflow_1.NodeOperationError(connectedNode, 'Node does not have a `supplyData` method defined', {
36
+ itemIndex,
37
+ });
38
+ }
39
+ else {
40
+ try {
41
+ const supplyData = yield ((_b = connectedNodeType.supplyData) === null || _b === void 0 ? void 0 : _b.call(this, itemIndex));
42
+ if (supplyData) {
43
+ nodes.push(supplyData);
44
+ }
45
+ }
46
+ catch (error) {
47
+ throw new workflow_1.NodeOperationError(connectedNode, `Error in sub-node ${connectedNode.name}`, {
48
+ itemIndex,
49
+ description: (_c = error === null || error === void 0 ? void 0 : error.message) !== null && _c !== void 0 ? _c : 'Unknown error',
50
+ });
51
+ }
52
+ }
53
+ }
54
+ return inputConfiguration.maxConnections === 1
55
+ ? (_d = (nodes || [])[0]) === null || _d === void 0 ? void 0 : _d.response
56
+ : nodes.map((node) => node.response);
57
+ });
58
+ }
59
+ function getNodeInputs(workflow, node, nodeTypeData) {
60
+ if (Array.isArray(nodeTypeData === null || nodeTypeData === void 0 ? void 0 : nodeTypeData.inputs)) {
61
+ return nodeTypeData.inputs;
62
+ }
63
+ // Calculate the outputs dynamically
64
+ try {
65
+ return (workflow.expression.getSimpleParameterValue(node, nodeTypeData.inputs, 'internal', {}) || []);
66
+ }
67
+ catch (e) {
68
+ console.warn('Could not calculate inputs dynamically for node: ', node.name);
69
+ return [];
70
+ }
71
+ }
72
+ function getConnectedNodes(workflow, node, connectionType) {
73
+ return workflow
74
+ .getParentNodes(node.name, connectionType, 1)
75
+ .map((nodeName) => workflow.getNode(nodeName))
76
+ .filter((node) => !!node)
77
+ .filter((node) => node.disabled !== true);
78
+ }
79
+ //# sourceMappingURL=InputConnectionDataLegacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputConnectionDataLegacy.js","sourceRoot":"","sources":["../../../src/lib/InputConnectionDataLegacy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ import { IAdditionalCredentialOptions, IAllExecuteFunctions, IBinaryData, ICredentialTestFunctions as ICredentialTestFunctionsBase, ICredentialType, IDataObject, IExecuteFunctions as IExecuteFunctionsBase, IExecuteSingleFunctions as IExecuteSingleFunctionsBase, IHookFunctions as IHookFunctionsBase, IHttpRequestOptions, ILoadOptionsFunctions as ILoadOptionsFunctionsBase, INodeExecutionData, INodeType, IOAuth2Options, IPollFunctions as IPollFunctionsBase, IPollResponse, ITriggerFunctions as ITriggerFunctionsBase, ITriggerResponse, IWebhookFunctions as IWebhookFunctionsBase, IWorkflowSettings as IWorkflowSettingsWorkflow } from '@fsai-flow/workflow';
2
+ import { OptionsWithUri, OptionsWithUrl } from 'request';
3
+ import * as requestPromise from 'request-promise-native';
4
+ interface Constructable<T> {
5
+ new (): T;
6
+ }
7
+ export interface IProcessMessage {
8
+ data?: any;
9
+ type: string;
10
+ }
11
+ export type Class<T = object, A extends unknown[] = unknown[]> = new (...args: A) => T;
12
+ export interface IExecuteFunctions extends IExecuteFunctionsBase {
13
+ helpers: {
14
+ httpRequest(requestOptions: IHttpRequestOptions): Promise<any>;
15
+ prepareBinaryData(binaryData: Buffer, filePath?: string, mimeType?: string): Promise<IBinaryData>;
16
+ assertBinaryData(itemIndex: number, propertyName: string, inputIndex?: number): IBinaryData;
17
+ getBinaryDataBuffer(itemIndex: number, propertyName: string, inputIndex?: number): Promise<Buffer>;
18
+ request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>;
19
+ requestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions): Promise<any>;
20
+ requestOAuth2(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options): Promise<any>;
21
+ requestOAuth1(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions): Promise<any>;
22
+ returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[];
23
+ normalizeItems(items: INodeExecutionData | INodeExecutionData[]): INodeExecutionData[];
24
+ httpRequestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions): Promise<any>;
25
+ };
26
+ }
27
+ export interface IExecuteSingleFunctions extends IExecuteSingleFunctionsBase {
28
+ helpers: {
29
+ httpRequest(requestOptions: IHttpRequestOptions): Promise<any>;
30
+ prepareBinaryData(binaryData: Buffer, filePath?: string, mimeType?: string): Promise<IBinaryData>;
31
+ request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>;
32
+ requestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions): Promise<any>;
33
+ requestOAuth2(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options): Promise<any>;
34
+ requestOAuth1(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions): Promise<any>;
35
+ httpRequestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions): Promise<any>;
36
+ };
37
+ }
38
+ export interface IPollFunctions extends IPollFunctionsBase {
39
+ helpers: {
40
+ httpRequest(requestOptions: IHttpRequestOptions): Promise<any>;
41
+ prepareBinaryData(binaryData: Buffer, filePath?: string, mimeType?: string): Promise<IBinaryData>;
42
+ request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>;
43
+ requestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions): Promise<any>;
44
+ requestOAuth2(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options): Promise<any>;
45
+ requestOAuth1(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions): Promise<any>;
46
+ returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[];
47
+ httpRequestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions): Promise<any>;
48
+ };
49
+ }
50
+ export interface IResponseError extends Error {
51
+ statusCode?: number;
52
+ }
53
+ export interface ITriggerFunctions extends ITriggerFunctionsBase {
54
+ helpers: {
55
+ httpRequest(requestOptions: IHttpRequestOptions): Promise<any>;
56
+ prepareBinaryData(binaryData: Buffer, filePath?: string, mimeType?: string): Promise<IBinaryData>;
57
+ request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>;
58
+ requestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions): Promise<any>;
59
+ requestOAuth2(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options): Promise<any>;
60
+ requestOAuth1(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions): Promise<any>;
61
+ returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[];
62
+ httpRequestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions): Promise<any>;
63
+ };
64
+ }
65
+ export interface ITriggerTime {
66
+ mode: string;
67
+ hour: number;
68
+ minute: number;
69
+ dayOfMonth: number;
70
+ weekeday: number;
71
+ [key: string]: string | number;
72
+ }
73
+ export interface IUserSettings {
74
+ encryptionKey?: string;
75
+ tunnelSubdomain?: string;
76
+ instanceId?: string;
77
+ }
78
+ export interface ILoadOptionsFunctions extends ILoadOptionsFunctionsBase {
79
+ helpers: {
80
+ httpRequest(requestOptions: IHttpRequestOptions): Promise<any>;
81
+ request?: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>;
82
+ requestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions): Promise<any>;
83
+ requestOAuth2?: (this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options) => Promise<any>;
84
+ requestOAuth1?(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions): Promise<any>;
85
+ httpRequestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions): Promise<any>;
86
+ };
87
+ }
88
+ export interface ICredentialTestFunctions extends ICredentialTestFunctionsBase {
89
+ helpers: {
90
+ request?: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>;
91
+ };
92
+ }
93
+ export interface IHookFunctions extends IHookFunctionsBase {
94
+ helpers: {
95
+ httpRequest(requestOptions: IHttpRequestOptions): Promise<any>;
96
+ request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>;
97
+ requestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions): Promise<any>;
98
+ requestOAuth2(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options): Promise<any>;
99
+ requestOAuth1(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions): Promise<any>;
100
+ httpRequestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions): Promise<any>;
101
+ };
102
+ }
103
+ export interface IWebhookFunctions extends IWebhookFunctionsBase {
104
+ helpers: {
105
+ httpRequest(requestOptions: IHttpRequestOptions): Promise<any>;
106
+ prepareBinaryData(binaryData: Buffer, filePath?: string, mimeType?: string): Promise<IBinaryData>;
107
+ request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>;
108
+ requestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, additionalCredentialOptions?: IAdditionalCredentialOptions): Promise<any>;
109
+ requestOAuth2(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions, oAuth2Options?: IOAuth2Options): Promise<any>;
110
+ requestOAuth1(this: IAllExecuteFunctions, credentialsType: string, requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions): Promise<any>;
111
+ returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[];
112
+ httpRequestWithAuthentication(this: IAllExecuteFunctions, credentialsType: string, requestOptions: IHttpRequestOptions): Promise<any>;
113
+ };
114
+ }
115
+ export interface IWorkflowSettings extends IWorkflowSettingsWorkflow {
116
+ errorWorkflow?: string;
117
+ timezone?: string;
118
+ saveManualRuns?: boolean;
119
+ }
120
+ export interface INodeDefinitionFile {
121
+ [key: string]: Constructable<INodeType | ICredentialType>;
122
+ }
123
+ export interface INodeInputDataConnections {
124
+ [key: string]: INodeExecutionData[][];
125
+ }
126
+ export interface IWorkflowData {
127
+ pollResponses?: IPollResponse[];
128
+ triggerResponses?: ITriggerResponse[];
129
+ }
130
+ export interface IBinaryDataConfig {
131
+ mode: 'default' | 'filesystem';
132
+ availableModes: string;
133
+ localStoragePath: string;
134
+ binaryDataTTL: number;
135
+ persistedBinaryDataTTL: number;
136
+ }
137
+ export interface IBinaryDataManager {
138
+ init(startPurger: boolean): Promise<void>;
139
+ storeBinaryData(binaryBuffer: Buffer, executionId: string): Promise<string>;
140
+ retrieveBinaryDataByIdentifier(identifier: string): Promise<Buffer>;
141
+ markDataForDeletionByExecutionId(executionId: string): Promise<void>;
142
+ deleteMarkedFiles(): Promise<unknown>;
143
+ deleteBinaryDataByIdentifier(identifier: string): Promise<void>;
144
+ duplicateBinaryDataByIdentifier(binaryDataId: string, prefix: string): Promise<string>;
145
+ deleteBinaryDataByExecutionId(executionId: string): Promise<void>;
146
+ persistBinaryDataForExecutionId(executionId: string): Promise<void>;
147
+ }
148
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Interfaces.js","sourceRoot":"","sources":["../../../src/lib/Interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { ILoadOptions, INode, INodeCredentials, INodeParameters, INodePropertyOptions, INodeTypeNameVersion, INodeTypes, IWorkflowExecuteAdditionalData, Workflow } from '@fsai-flow/workflow';
2
+ export declare class LoadNodeParameterOptions {
3
+ currentNodeParameters: INodeParameters;
4
+ path: string;
5
+ workflow: Workflow;
6
+ constructor(nodeTypeNameAndVersion: INodeTypeNameVersion, nodeTypes: INodeTypes, path: string, currentNodeParameters: INodeParameters, credentials?: INodeCredentials);
7
+ /**
8
+ * Returns data of a fake workflow
9
+ *
10
+ * @returns
11
+ * @memberof LoadNodeParameterOptions
12
+ */
13
+ getWorkflowData(): {
14
+ name: string;
15
+ active: boolean;
16
+ connections: {};
17
+ nodes: INode[];
18
+ createdAt: Date;
19
+ updatedAt: Date;
20
+ };
21
+ /**
22
+ * Returns the available options via a predefined method
23
+ *
24
+ * @param {string} methodName The name of the method of which to get the data from
25
+ * @param {IWorkflowExecuteAdditionalData} additionalData
26
+ * @returns {Promise<INodePropertyOptions[]>}
27
+ * @memberof LoadNodeParameterOptions
28
+ */
29
+ getOptionsViaMethodName(methodName: string, additionalData: IWorkflowExecuteAdditionalData): Promise<INodePropertyOptions[]>;
30
+ /**
31
+ * Returns the available options via a load request informatoin
32
+ *
33
+ * @param {ILoadOptions} loadOptions The load options which also contain the request information
34
+ * @param {IWorkflowExecuteAdditionalData} additionalData
35
+ * @returns {Promise<INodePropertyOptions[]>}
36
+ * @memberof LoadNodeParameterOptions
37
+ */
38
+ getOptionsViaRequestProperty(loadOptions: ILoadOptions, additionalData: IWorkflowExecuteAdditionalData): Promise<INodePropertyOptions[]>;
39
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ /* eslint-disable no-restricted-syntax */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
4
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
5
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
6
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
7
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
8
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.LoadNodeParameterOptions = void 0;
11
+ const tslib_1 = require("tslib");
12
+ const workflow_1 = require("@fsai-flow/workflow");
13
+ // eslint-disable-next-line import/no-cycle
14
+ const __1 = require("..");
15
+ const TEMP_NODE_NAME = 'Temp-Node';
16
+ const TEMP_WORKFLOW_NAME = 'Temp-Workflow';
17
+ class LoadNodeParameterOptions {
18
+ constructor(nodeTypeNameAndVersion, nodeTypes, path, currentNodeParameters, credentials) {
19
+ const nodeType = nodeTypes.getByNameAndVersion(nodeTypeNameAndVersion.name, nodeTypeNameAndVersion.version);
20
+ this.currentNodeParameters = currentNodeParameters;
21
+ this.path = path;
22
+ if (nodeType === undefined) {
23
+ throw new Error(`The node-type "${nodeTypeNameAndVersion.name} v${nodeTypeNameAndVersion.version}" is not known!`);
24
+ }
25
+ const nodeData = {
26
+ parameters: currentNodeParameters,
27
+ name: TEMP_NODE_NAME,
28
+ type: nodeTypeNameAndVersion.name,
29
+ typeVersion: nodeTypeNameAndVersion.version,
30
+ position: [0, 0],
31
+ id: '',
32
+ };
33
+ if (credentials) {
34
+ nodeData.credentials = credentials;
35
+ }
36
+ const workflowData = {
37
+ nodes: [nodeData],
38
+ connections: {},
39
+ };
40
+ this.workflow = new workflow_1.Workflow({
41
+ nodes: workflowData.nodes,
42
+ connections: workflowData.connections,
43
+ active: false,
44
+ nodeTypes,
45
+ });
46
+ }
47
+ /**
48
+ * Returns data of a fake workflow
49
+ *
50
+ * @returns
51
+ * @memberof LoadNodeParameterOptions
52
+ */
53
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
54
+ getWorkflowData() {
55
+ return {
56
+ name: TEMP_WORKFLOW_NAME,
57
+ active: false,
58
+ connections: {},
59
+ nodes: Object.values(this.workflow.nodes),
60
+ createdAt: new Date(),
61
+ updatedAt: new Date(),
62
+ };
63
+ }
64
+ /**
65
+ * Returns the available options via a predefined method
66
+ *
67
+ * @param {string} methodName The name of the method of which to get the data from
68
+ * @param {IWorkflowExecuteAdditionalData} additionalData
69
+ * @returns {Promise<INodePropertyOptions[]>}
70
+ * @memberof LoadNodeParameterOptions
71
+ */
72
+ getOptionsViaMethodName(methodName, additionalData) {
73
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
74
+ const node = this.workflow.getNode(TEMP_NODE_NAME);
75
+ const nodeType = this.workflow.nodeTypes.getByNameAndVersion(node.type, node === null || node === void 0 ? void 0 : node.typeVersion);
76
+ if (!nodeType ||
77
+ nodeType.methods === undefined ||
78
+ nodeType.methods.loadOptions === undefined ||
79
+ nodeType.methods.loadOptions[methodName] === undefined) {
80
+ throw new Error(`The node-type "${node.type}" does not have the method "${methodName}" defined!`);
81
+ }
82
+ const thisArgs = __1.NodeExecuteFunctions.getLoadOptionsFunctions(this.workflow, node, this.path, additionalData);
83
+ try {
84
+ return yield nodeType.methods.loadOptions[methodName].call(thisArgs);
85
+ }
86
+ catch (error) {
87
+ return [{
88
+ name: 'Error trying to load options',
89
+ value: '',
90
+ description: error.message || 'Error trying to load options.'
91
+ }];
92
+ }
93
+ });
94
+ }
95
+ /**
96
+ * Returns the available options via a load request informatoin
97
+ *
98
+ * @param {ILoadOptions} loadOptions The load options which also contain the request information
99
+ * @param {IWorkflowExecuteAdditionalData} additionalData
100
+ * @returns {Promise<INodePropertyOptions[]>}
101
+ * @memberof LoadNodeParameterOptions
102
+ */
103
+ getOptionsViaRequestProperty(loadOptions, additionalData) {
104
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
105
+ const node = this.workflow.getNode(TEMP_NODE_NAME);
106
+ const nodeType = this.workflow.nodeTypes.getByNameAndVersion(node.type, node === null || node === void 0 ? void 0 : node.typeVersion);
107
+ if (nodeType === undefined ||
108
+ !nodeType.description.requestDefaults ||
109
+ !nodeType.description.requestDefaults.baseURL) {
110
+ // This in in here for now for security reasons.
111
+ // Background: As the full data for the request to make does get send, and the auth data
112
+ // will then be applied, would it be possible to retrieve that data like that. By at least
113
+ // requiring a baseURL to be defined can at least not a random server be called.
114
+ // In the future this code has to get improved that it does not use the request information from
115
+ // the request rather resolves it via the parameter-path and nodeType data.
116
+ throw new Error(`The node-type "${node.type}" does not exist or does not have "requestDefaults.baseURL" defined!`);
117
+ }
118
+ const mode = 'internal';
119
+ const runIndex = 0;
120
+ const connectionInputData = [];
121
+ const runExecutionData = { resultData: { runData: {} } };
122
+ const routingNode = new workflow_1.RoutingNode(this.workflow, node, connectionInputData, runExecutionData !== null && runExecutionData !== void 0 ? runExecutionData : null, additionalData, mode);
123
+ // Create copy of node-type with the single property we want to get the data off
124
+ const tempNode = Object.assign(Object.assign({}, nodeType), {
125
+ description: Object.assign(Object.assign({}, nodeType.description), { properties: [
126
+ {
127
+ displayName: '',
128
+ type: 'string',
129
+ name: '',
130
+ default: '',
131
+ routing: loadOptions.routing,
132
+ },
133
+ ] }),
134
+ });
135
+ const inputData = {
136
+ main: [[{ json: {} }]],
137
+ };
138
+ const optionsData = yield routingNode.runNode(inputData, runIndex, tempNode, __1.NodeExecuteFunctions);
139
+ if ((optionsData === null || optionsData === void 0 ? void 0 : optionsData.length) === 0) {
140
+ return [];
141
+ }
142
+ if (!Array.isArray(optionsData)) {
143
+ throw new Error('The returned data is not an array!');
144
+ }
145
+ return optionsData[0].map((item) => item.json);
146
+ });
147
+ }
148
+ }
149
+ exports.LoadNodeParameterOptions = LoadNodeParameterOptions;
150
+ //# sourceMappingURL=LoadNodeParameterOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadNodeParameterOptions.js","sourceRoot":"","sources":["../../../src/lib/LoadNodeParameterOptions.ts"],"names":[],"mappings":"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"}