@fsai-flow/core 0.0.1
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.
- package/README.md +11 -0
- package/dist/README.md +11 -0
- package/dist/package.json +44 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.js +29 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/ActiveWebhooks.d.ts +59 -0
- package/dist/src/lib/ActiveWebhooks.js +184 -0
- package/dist/src/lib/ActiveWebhooks.js.map +1 -0
- package/dist/src/lib/ActiveWorkflows.d.ts +58 -0
- package/dist/src/lib/ActiveWorkflows.js +244 -0
- package/dist/src/lib/ActiveWorkflows.js.map +1 -0
- package/dist/src/lib/BinaryDataManager/FileSystem.d.ts +26 -0
- package/dist/src/lib/BinaryDataManager/FileSystem.js +179 -0
- package/dist/src/lib/BinaryDataManager/FileSystem.js.map +1 -0
- package/dist/src/lib/BinaryDataManager/index.d.ts +21 -0
- package/dist/src/lib/BinaryDataManager/index.js +146 -0
- package/dist/src/lib/BinaryDataManager/index.js.map +1 -0
- package/dist/src/lib/ChangeCase.d.ts +9 -0
- package/dist/src/lib/ChangeCase.js +43 -0
- package/dist/src/lib/ChangeCase.js.map +1 -0
- package/dist/src/lib/Constants.d.ts +14 -0
- package/dist/src/lib/Constants.js +19 -0
- package/dist/src/lib/Constants.js.map +1 -0
- package/dist/src/lib/Credentials.d.ts +27 -0
- package/dist/src/lib/Credentials.js +89 -0
- package/dist/src/lib/Credentials.js.map +1 -0
- package/dist/src/lib/FileSystem.d.ts +26 -0
- package/dist/src/lib/FileSystem.js +179 -0
- package/dist/src/lib/FileSystem.js.map +1 -0
- package/dist/src/lib/InputConnectionDataLegacy.d.ts +2 -0
- package/dist/src/lib/InputConnectionDataLegacy.js +79 -0
- package/dist/src/lib/InputConnectionDataLegacy.js.map +1 -0
- package/dist/src/lib/Interfaces.d.ts +148 -0
- package/dist/src/lib/Interfaces.js +3 -0
- package/dist/src/lib/Interfaces.js.map +1 -0
- package/dist/src/lib/LoadNodeParameterOptions.d.ts +39 -0
- package/dist/src/lib/LoadNodeParameterOptions.js +150 -0
- package/dist/src/lib/LoadNodeParameterOptions.js.map +1 -0
- package/dist/src/lib/NodeExecuteFunctions.d.ts +226 -0
- package/dist/src/lib/NodeExecuteFunctions.js +2483 -0
- package/dist/src/lib/NodeExecuteFunctions.js.map +1 -0
- package/dist/src/lib/NodesLoader/constants.d.ts +5 -0
- package/dist/src/lib/NodesLoader/constants.js +106 -0
- package/dist/src/lib/NodesLoader/constants.js.map +1 -0
- package/dist/src/lib/NodesLoader/custom-directory-loader.d.ts +9 -0
- package/dist/src/lib/NodesLoader/custom-directory-loader.js +36 -0
- package/dist/src/lib/NodesLoader/custom-directory-loader.js.map +1 -0
- package/dist/src/lib/NodesLoader/directory-loader.d.ts +66 -0
- package/dist/src/lib/NodesLoader/directory-loader.js +325 -0
- package/dist/src/lib/NodesLoader/directory-loader.js.map +1 -0
- package/dist/src/lib/NodesLoader/index.d.ts +5 -0
- package/dist/src/lib/NodesLoader/index.js +12 -0
- package/dist/src/lib/NodesLoader/index.js.map +1 -0
- package/dist/src/lib/NodesLoader/lazy-package-directory-loader.d.ts +7 -0
- package/dist/src/lib/NodesLoader/lazy-package-directory-loader.js +52 -0
- package/dist/src/lib/NodesLoader/lazy-package-directory-loader.js.map +1 -0
- package/dist/src/lib/NodesLoader/load-class-in-isolation.d.ts +1 -0
- package/dist/src/lib/NodesLoader/load-class-in-isolation.js +22 -0
- package/dist/src/lib/NodesLoader/load-class-in-isolation.js.map +1 -0
- package/dist/src/lib/NodesLoader/package-directory-loader.d.ts +17 -0
- package/dist/src/lib/NodesLoader/package-directory-loader.js +100 -0
- package/dist/src/lib/NodesLoader/package-directory-loader.js.map +1 -0
- package/dist/src/lib/NodesLoader/types.d.ts +14 -0
- package/dist/src/lib/NodesLoader/types.js +3 -0
- package/dist/src/lib/NodesLoader/types.js.map +1 -0
- package/dist/src/lib/UserSettings.d.ts +80 -0
- package/dist/src/lib/UserSettings.js +261 -0
- package/dist/src/lib/UserSettings.js.map +1 -0
- package/dist/src/lib/WorkflowExecute.d.ts +53 -0
- package/dist/src/lib/WorkflowExecute.js +835 -0
- package/dist/src/lib/WorkflowExecute.js.map +1 -0
- package/dist/src/lib/index.d.ts +21 -0
- package/dist/src/lib/index.js +146 -0
- package/dist/src/lib/index.js.map +1 -0
- package/dist/src/utils/crypto.d.ts +1 -0
- package/dist/src/utils/crypto.js +8 -0
- package/dist/src/utils/crypto.js.map +1 -0
- package/eslint.config.js +19 -0
- package/jest.config.ts +10 -0
- package/package.json +44 -0
- package/project.json +19 -0
- package/src/index.ts +27 -0
- package/src/lib/ActiveWebhooks.ts +245 -0
- package/src/lib/ActiveWorkflows.ts +304 -0
- package/src/lib/BinaryDataManager/FileSystem.ts +214 -0
- package/src/lib/BinaryDataManager/index.ts +187 -0
- package/src/lib/ChangeCase.ts +45 -0
- package/src/lib/Constants.ts +16 -0
- package/src/lib/Credentials.ts +108 -0
- package/src/lib/FileSystem.ts +214 -0
- package/src/lib/InputConnectionDataLegacy.ts +123 -0
- package/src/lib/Interfaces.ts +338 -0
- package/src/lib/LoadNodeParameterOptions.ts +235 -0
- package/src/lib/NodeExecuteFunctions.ts +3704 -0
- package/src/lib/NodesLoader/constants.ts +112 -0
- package/src/lib/NodesLoader/custom-directory-loader.ts +31 -0
- package/src/lib/NodesLoader/directory-loader.ts +458 -0
- package/src/lib/NodesLoader/index.ts +5 -0
- package/src/lib/NodesLoader/lazy-package-directory-loader.ts +55 -0
- package/src/lib/NodesLoader/load-class-in-isolation.ts +19 -0
- package/src/lib/NodesLoader/package-directory-loader.ts +107 -0
- package/src/lib/NodesLoader/types.ts +14 -0
- package/src/lib/UserSettings.ts +292 -0
- package/src/lib/WorkflowExecute.ts +1108 -0
- package/src/lib/index.ts +187 -0
- package/src/utils/crypto.ts +5 -0
- package/tests/Credentials.test.ts +88 -0
- package/tests/Helpers.ts +808 -0
- package/tests/WorkflowExecute.test.ts +1242 -0
- package/tsconfig.json +42 -0
- package/tsconfig.lib.json +10 -0
- package/tsconfig.spec.json +14 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActiveWorkflows = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/* eslint-disable no-continue */
|
|
6
|
+
/* eslint-disable no-await-in-loop */
|
|
7
|
+
/* eslint-disable no-restricted-syntax */
|
|
8
|
+
const cron_1 = require("cron");
|
|
9
|
+
const workflow_1 = require("@fsai-flow/workflow");
|
|
10
|
+
const crypto_1 = require("../utils/crypto");
|
|
11
|
+
class ActiveWorkflows {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.workflowData = {};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Returns if the workflow is active
|
|
17
|
+
*
|
|
18
|
+
* @param {string} id The id of the workflow to check
|
|
19
|
+
* @returns {boolean}
|
|
20
|
+
* @memberof ActiveWorkflows
|
|
21
|
+
*/
|
|
22
|
+
isActive(id) {
|
|
23
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
24
|
+
return this.workflowData.hasOwnProperty(id);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns the ids of the currently active workflows
|
|
28
|
+
*
|
|
29
|
+
* @returns {string[]}
|
|
30
|
+
* @memberof ActiveWorkflows
|
|
31
|
+
*/
|
|
32
|
+
allActiveWorkflows() {
|
|
33
|
+
return Object.keys(this.workflowData);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns the Workflow data for the workflow with
|
|
37
|
+
* the given id if it is currently active
|
|
38
|
+
*
|
|
39
|
+
* @param {string} id
|
|
40
|
+
* @returns {(WorkflowData | undefined)}
|
|
41
|
+
* @memberof ActiveWorkflows
|
|
42
|
+
*/
|
|
43
|
+
get(id) {
|
|
44
|
+
return this.workflowData[id];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Makes a workflow active
|
|
48
|
+
*
|
|
49
|
+
* @param {string} id The id of the workflow to activate
|
|
50
|
+
* @param {Workflow} workflow The workflow to activate
|
|
51
|
+
* @param {IWorkflowExecuteAdditionalData} additionalData The additional data which is needed to run workflows
|
|
52
|
+
* @returns {Promise<void>}
|
|
53
|
+
* @memberof ActiveWorkflows
|
|
54
|
+
*/
|
|
55
|
+
add(id, workflow, additionalData, mode, activation, getTriggerFunctions, getPollFunctions) {
|
|
56
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
this.workflowData[id] = {};
|
|
58
|
+
const triggerNodes = workflow.getTriggerNodes();
|
|
59
|
+
let triggerResponse;
|
|
60
|
+
this.workflowData[id].triggerResponses = [];
|
|
61
|
+
for (const triggerNode of triggerNodes) {
|
|
62
|
+
triggerResponse = yield workflow.runTrigger(triggerNode, getTriggerFunctions, additionalData, mode, activation);
|
|
63
|
+
if (triggerResponse !== undefined) {
|
|
64
|
+
// If a response was given save it
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
66
|
+
this.workflowData[id].triggerResponses.push(triggerResponse);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const pollNodes = workflow.getPollNodes();
|
|
70
|
+
if (pollNodes.length) {
|
|
71
|
+
this.workflowData[id].pollResponses = [];
|
|
72
|
+
for (const pollNode of pollNodes) {
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
74
|
+
this.workflowData[id].pollResponses.push(yield this.activatePolling(pollNode, workflow, additionalData, getPollFunctions, mode, activation));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Activates polling for the given node
|
|
81
|
+
*
|
|
82
|
+
* @param {INode} node
|
|
83
|
+
* @param {Workflow} workflow
|
|
84
|
+
* @param {IWorkflowExecuteAdditionalData} additionalData
|
|
85
|
+
* @param {IGetExecutePollFunctions} getPollFunctions
|
|
86
|
+
* @returns {Promise<IPollResponse>}
|
|
87
|
+
* @memberof ActiveWorkflows
|
|
88
|
+
*/
|
|
89
|
+
activatePolling(node, workflow, additionalData, getPollFunctions, mode, activation) {
|
|
90
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const pollFunctions = getPollFunctions(workflow, node, additionalData, mode, activation);
|
|
92
|
+
const pollTimes = pollFunctions.getNodeParameter('pollTimes');
|
|
93
|
+
// Define the order the cron-time-parameter appear
|
|
94
|
+
const parameterOrder = [
|
|
95
|
+
'second', // 0 - 59
|
|
96
|
+
'minute', // 0 - 59
|
|
97
|
+
'hour', // 0 - 23
|
|
98
|
+
'dayOfMonth', // 1 - 31
|
|
99
|
+
'month', // 0 - 11(Jan - Dec)
|
|
100
|
+
'weekday', // 0 - 6(Sun - Sat)
|
|
101
|
+
];
|
|
102
|
+
// Get all the trigger times
|
|
103
|
+
const cronTimes = [];
|
|
104
|
+
let cronTime;
|
|
105
|
+
let parameterName;
|
|
106
|
+
if (pollTimes.item !== undefined) {
|
|
107
|
+
for (const item of pollTimes.item) {
|
|
108
|
+
cronTime = [];
|
|
109
|
+
if (item.mode === 'custom') {
|
|
110
|
+
cronTimes.push(item['cronExpression'].trim());
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (item.mode === 'everyMinute') {
|
|
114
|
+
cronTimes.push(`${(0, crypto_1.secureRandomNumber)(1, 60).toString()} * * * * *`);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (item.mode === 'everyX') {
|
|
118
|
+
if (item['unit'] === 'minutes') {
|
|
119
|
+
cronTimes.push(`${(0, crypto_1.secureRandomNumber)(1, 60).toString()} */${item['value']} * * * *`);
|
|
120
|
+
}
|
|
121
|
+
else if (item['unit'] === 'hours') {
|
|
122
|
+
cronTimes.push(`${(0, crypto_1.secureRandomNumber)(1, 60).toString()} 0 */${item['value']} * * *`);
|
|
123
|
+
}
|
|
124
|
+
else if (item['unit'] === 'seconds') {
|
|
125
|
+
cronTimes.push(`*/${item['value']} * * * * *`);
|
|
126
|
+
}
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
for (parameterName of parameterOrder) {
|
|
130
|
+
if (item[parameterName] !== undefined) {
|
|
131
|
+
// Value is set so use it
|
|
132
|
+
cronTime.push(item[parameterName]);
|
|
133
|
+
}
|
|
134
|
+
else if (parameterName === 'second') {
|
|
135
|
+
// For seconds we use by default a random one to make sure to
|
|
136
|
+
// balance the load a little bit over time
|
|
137
|
+
cronTime.push((0, crypto_1.secureRandomNumber)(1, 60).toString());
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// For all others set "any"
|
|
141
|
+
cronTime.push('*');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
cronTimes.push(cronTime.join(' '));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// The trigger function to execute when the cron-time got reached
|
|
148
|
+
const executeTrigger = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
150
|
+
workflow_1.LoggerProxy.debug(`Polling trigger initiated for workflow "${workflow.name}"`, {
|
|
151
|
+
workflowName: workflow.name,
|
|
152
|
+
workflowId: workflow.id,
|
|
153
|
+
});
|
|
154
|
+
const pollResponse = yield workflow.runPoll(node, pollFunctions);
|
|
155
|
+
if (pollResponse !== null) {
|
|
156
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
157
|
+
pollFunctions.__emit(pollResponse);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
// Execute the trigger directly to be able to know if it works
|
|
161
|
+
yield executeTrigger();
|
|
162
|
+
const timezone = pollFunctions.getTimezone();
|
|
163
|
+
// Start the cron-jobs
|
|
164
|
+
const cronJobs = [];
|
|
165
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
166
|
+
for (const cronTime of cronTimes) {
|
|
167
|
+
const cronTimeParts = cronTime.split(' ');
|
|
168
|
+
// Verificar se é polling em segundos
|
|
169
|
+
if (cronTimeParts.length === 6 && cronTimeParts[0].includes('/')) {
|
|
170
|
+
const secondsInterval = parseInt(cronTimeParts[0].replace('*/', ''), 10);
|
|
171
|
+
if (secondsInterval < 1) {
|
|
172
|
+
throw new Error('The polling interval is too short. It has to be at least 1 second!');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else if (cronTimeParts.length > 0 && cronTimeParts[0].includes('*') && !cronTimeParts[0].includes('/')) {
|
|
176
|
+
throw new Error('The polling interval is too short. It has to be at least a minute!');
|
|
177
|
+
}
|
|
178
|
+
cronJobs.push(new cron_1.CronJob(cronTime, executeTrigger, undefined, true, timezone));
|
|
179
|
+
}
|
|
180
|
+
// Stop the cron-jobs
|
|
181
|
+
function closeFunction() {
|
|
182
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
183
|
+
for (const cronJob of cronJobs) {
|
|
184
|
+
cronJob.stop();
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
closeFunction,
|
|
190
|
+
};
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Makes a workflow inactive
|
|
195
|
+
*
|
|
196
|
+
* @param {string} id The id of the workflow to deactivate
|
|
197
|
+
* @returns {Promise<void>}
|
|
198
|
+
* @memberof ActiveWorkflows
|
|
199
|
+
*/
|
|
200
|
+
remove(id) {
|
|
201
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
202
|
+
if (!this.isActive(id)) {
|
|
203
|
+
// Workflow is currently not registered
|
|
204
|
+
throw new Error(`The workflow with the id "${id}" is currently not active and can so not be removed`);
|
|
205
|
+
}
|
|
206
|
+
const workflowData = this.workflowData[id];
|
|
207
|
+
if (workflowData.triggerResponses) {
|
|
208
|
+
for (const triggerResponse of workflowData.triggerResponses) {
|
|
209
|
+
if (triggerResponse.closeFunction) {
|
|
210
|
+
try {
|
|
211
|
+
yield triggerResponse.closeFunction();
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
workflow_1.LoggerProxy.error(
|
|
215
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions
|
|
216
|
+
`There was a problem deactivating trigger of workflow "${id}": "${error.message}"`, {
|
|
217
|
+
workflowId: id,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (workflowData.pollResponses) {
|
|
224
|
+
for (const pollResponse of workflowData.pollResponses) {
|
|
225
|
+
if (pollResponse.closeFunction) {
|
|
226
|
+
try {
|
|
227
|
+
yield pollResponse.closeFunction();
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
workflow_1.LoggerProxy.error(
|
|
231
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions
|
|
232
|
+
`There was a problem deactivating polling trigger of workflow "${id}": "${error.message}"`, {
|
|
233
|
+
workflowId: id,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
delete this.workflowData[id];
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
exports.ActiveWorkflows = ActiveWorkflows;
|
|
244
|
+
//# sourceMappingURL=ActiveWorkflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActiveWorkflows.js","sourceRoot":"","sources":["../../../src/lib/ActiveWorkflows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IBinaryDataConfig, IBinaryDataManager } from '../Interfaces';
|
|
2
|
+
export declare class BinaryDataFileSystem implements IBinaryDataManager {
|
|
3
|
+
private storagePath;
|
|
4
|
+
private binaryDataTTL;
|
|
5
|
+
private persistedBinaryDataTTL;
|
|
6
|
+
constructor(config: IBinaryDataConfig);
|
|
7
|
+
init(startPurger?: boolean): Promise<void>;
|
|
8
|
+
storeBinaryData(binaryBuffer: Buffer, executionId: string): Promise<string>;
|
|
9
|
+
retrieveBinaryDataByIdentifier(identifier: string): Promise<Buffer>;
|
|
10
|
+
markDataForDeletionByExecutionId(executionId: string): Promise<void>;
|
|
11
|
+
deleteMarkedFiles(): Promise<void>;
|
|
12
|
+
deleteMarkedPersistedFiles(): Promise<void>;
|
|
13
|
+
private addBinaryIdToPersistMeta;
|
|
14
|
+
private deleteMarkedFilesByMeta;
|
|
15
|
+
duplicateBinaryDataByIdentifier(binaryDataId: string, prefix: string): Promise<string>;
|
|
16
|
+
deleteBinaryDataByExecutionId(executionId: string): Promise<void>;
|
|
17
|
+
deleteBinaryDataByIdentifier(identifier: string): Promise<void>;
|
|
18
|
+
persistBinaryDataForExecutionId(executionId: string): Promise<void>;
|
|
19
|
+
private generateFileName;
|
|
20
|
+
private getBinaryDataMetaPath;
|
|
21
|
+
private getBinaryDataPersistMetaPath;
|
|
22
|
+
private deleteMetaFileByPath;
|
|
23
|
+
private deleteFromLocalStorage;
|
|
24
|
+
private saveToLocalStorage;
|
|
25
|
+
private retrieveFromLocalStorage;
|
|
26
|
+
}
|
|
@@ -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/BinaryDataManager/FileSystem.ts"],"names":[],"mappings":";;;;AAAA,2BAAoC;AACpC,mDAA6B;AAC7B,+BAAkC;AAIlC,MAAM,eAAe,GAAG,YAAY,CAAC;AACrC,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAElD,MAAa,oBAAoB;IAOhC,YAAY,MAAyB;QACpC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;IAC7D,CAAC;IAEK,IAAI;qEAAC,WAAW,GAAG,KAAK;YAC7B,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,GAAS,EAAE;oBACtB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAChC,CAAC,CAAA,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;gBAE/B,WAAW,CAAC,GAAS,EAAE;oBACtB,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBACzC,CAAC,CAAA,EAAE,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,aAAE;iBACP,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;iBACzB,KAAK,CAAC,GAAS,EAAE,wDAAC,OAAA,aAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA,GAAA,CAAC;iBAClE,IAAI,CAAC,GAAS,EAAE,wDAAC,OAAA,aAAE,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAA,GAAA,CAAC;iBAC1D,KAAK,CAAC,GAAS,EAAE,wDAAC,OAAA,aAAE,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA,GAAA,CAAC;iBAC9E,IAAI,CAAC,GAAS,EAAE,wDAAC,OAAA,aAAE,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAA,GAAA,CAAC;iBACjE,KAAK,CAAC,GAAS,EAAE,wDAAC,OAAA,aAAE,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA,GAAA,CAAC;iBACrF,IAAI,CAAC,GAAS,EAAE,wDAAC,OAAA,IAAI,CAAC,iBAAiB,EAAE,CAAA,GAAA,CAAC;iBAC1C,IAAI,CAAC,GAAS,EAAE,wDAAC,OAAA,IAAI,CAAC,0BAA0B,EAAE,CAAA,GAAA,CAAC;iBACnD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClB,CAAC;KAAA;IAEK,eAAe,CAAC,YAAoB,EAAE,WAAmB;;YAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAS,EAAE,wDAC/E,OAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAA,GAAA,CAC5E,CAAC;QACH,CAAC;KAAA;IAEK,8BAA8B,CAAC,UAAkB;;YACtD,OAAO,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;KAAA;IAEK,gCAAgC,CAAC,WAAmB;;YACzD,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;YACvE,OAAO,aAAE,CAAC,SAAS,CAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,eAAe,IAAI,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAC5F,EAAE,CACF,CAAC;QACH,CAAC;KAAA;IAEK,iBAAiB;;YACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,eAAe,CAAC,CAAC;QACpF,CAAC;KAAA;IAEK,0BAA0B;;YAC/B,OAAO,IAAI,CAAC,uBAAuB,CAClC,IAAI,CAAC,4BAA4B,EAAE,EACnC,yBAAyB,CACzB,CAAC;QACH,CAAC;KAAA;IAEa,wBAAwB,CAAC,WAAmB,EAAE,UAAkB;;YAC7E,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,cAAc,GAAG,WAAW,GAAG,OAAO,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YAEzE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACzB,IAAI,CAAC,4BAA4B,EAAE,EACnC,GAAG,yBAAyB,IAAI,WAAW,IAAI,WAAW,EAAE,CAC5D,CAAC;YAEF,OAAO,aAAE;iBACP,QAAQ,CAAC,QAAQ,CAAC;iBAClB,KAAK,CAAC,GAAS,EAAE,wDAAC,OAAA,aAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA,GAAA,CAAC;iBACrD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClB,CAAC;KAAA;IAEa,uBAAuB,CAAC,QAAgB,EAAE,UAAkB;;YACzE,MAAM,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,MAAM,aAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEjD,MAAM,UAAU,GAA8B,EAAE,CAAC;YAEjD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CACjC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;gBACd,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAElD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;oBAC3B,OAAO,IAAI,CAAC;gBACb,CAAC;gBAED,MAAM,aAAa,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEvC,IAAI,aAAa,GAAG,gBAAgB,EAAE,CAAC;oBACtC,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC7B,qCAAqC;wBACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;wBAChE,OAAO,IAAI,CAAC;oBACb,CAAC;oBAED,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,CAAC,IAAI,CACR,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAS,EAAE,wDAC/D,OAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA,GAAA,CACpD,CACD,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,CAAC;YACb,CAAC,EACD,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CACnB,CAAC;YAEF,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,+BAA+B,CAAC,YAAoB,EAAE,MAAc;;YACzE,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEtD,OAAO,aAAE;iBACP,QAAQ,CACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAC5C;iBACA,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;KAAA;IAEK,6BAA6B,CAAC,WAAmB;;YACtD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,MAAM,aAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAEhE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAC7B,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBACtB,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,QAAQ,CAAC,IAAI,CAAC,aAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBAED,OAAO,QAAQ,CAAC;YACjB,CAAC,EACD,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CACnB,CAAC;YAEF,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAS,EAAE,wDAAC,OAAA,OAAO,CAAC,OAAO,EAAE,CAAA,GAAA,CAAC,CAAC;QAC/D,CAAC;KAAA;IAEK,4BAA4B,CAAC,UAAkB;;YACpD,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;KAAA;IAEK,+BAA+B,CAAC,WAAmB;;YACxD,OAAO,aAAE,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAO,SAAS,EAAE,EAAE;gBAC/E,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAC7B,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;oBACd,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,yBAAyB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACrE,IAAI,CAAC,IAAI,CAAC,aAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;wBACvE,OAAO,IAAI,CAAC;oBACb,CAAC;oBAED,OAAO,IAAI,CAAC;gBACb,CAAC,EACD,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CACnB,CAAC;gBAEF,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC;KAAA;IAEO,gBAAgB,CAAC,MAAc;QACtC,OAAO,GAAG,MAAM,IAAI,IAAA,SAAI,GAAE,EAAE,CAAC;IAC9B,CAAC;IAEO,qBAAqB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEO,4BAA4B;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;IAEa,oBAAoB,CAAC,YAAoB;;YACtD,OAAO,aAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;KAAA;IAEa,sBAAsB,CAAC,UAAkB;;YACtD,OAAO,aAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;QACvD,CAAC;KAAA;IAEa,kBAAkB,CAAC,IAAY,EAAE,UAAkB;;YAChE,MAAM,aAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;KAAA;IAEa,wBAAwB,CAAC,UAAkB;;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC;gBACJ,OAAO,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;YACpD,CAAC;QACF,CAAC;KAAA;CACD;AA5MD,oDA4MC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IBinaryData, INodeExecutionData } from '@fsai-flow/workflow';
|
|
2
|
+
import { IBinaryDataConfig } from '../Interfaces';
|
|
3
|
+
export declare class BinaryDataManager {
|
|
4
|
+
private static instance;
|
|
5
|
+
private managers;
|
|
6
|
+
private binaryDataMode;
|
|
7
|
+
private availableModes;
|
|
8
|
+
constructor(config: IBinaryDataConfig);
|
|
9
|
+
static init(config: IBinaryDataConfig, mainManager?: boolean): Promise<void>;
|
|
10
|
+
static getInstance(): BinaryDataManager;
|
|
11
|
+
storeBinaryData(binaryData: IBinaryData, binaryBuffer: Buffer, executionId: string): Promise<IBinaryData>;
|
|
12
|
+
retrieveBinaryData(binaryData: IBinaryData): Promise<Buffer>;
|
|
13
|
+
retrieveBinaryDataByIdentifier(identifier: string): Promise<Buffer>;
|
|
14
|
+
markDataForDeletionByExecutionId(executionId: string): Promise<void>;
|
|
15
|
+
persistBinaryDataForExecutionId(executionId: string): Promise<void>;
|
|
16
|
+
deleteBinaryDataByExecutionId(executionId: string): Promise<void>;
|
|
17
|
+
duplicateBinaryData(inputData: Array<INodeExecutionData[] | null> | unknown, executionId: string): Promise<INodeExecutionData[][]>;
|
|
18
|
+
private generateBinaryId;
|
|
19
|
+
private splitBinaryModeFileId;
|
|
20
|
+
private duplicateBinaryDataInExecData;
|
|
21
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BinaryDataManager = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const Constants_1 = require("../Constants");
|
|
6
|
+
const FileSystem_1 = require("./FileSystem");
|
|
7
|
+
class BinaryDataManager {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.binaryDataMode = config.mode;
|
|
10
|
+
this.availableModes = config.availableModes.split(',');
|
|
11
|
+
this.managers = {};
|
|
12
|
+
}
|
|
13
|
+
static init(config_1) {
|
|
14
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (config, mainManager = false) {
|
|
15
|
+
if (BinaryDataManager.instance) {
|
|
16
|
+
throw new Error('Binary Data Manager already initialized');
|
|
17
|
+
}
|
|
18
|
+
BinaryDataManager.instance = new BinaryDataManager(config);
|
|
19
|
+
if (BinaryDataManager.instance.availableModes.includes('filesystem')) {
|
|
20
|
+
BinaryDataManager.instance.managers['filesystem'] = new FileSystem_1.BinaryDataFileSystem(config);
|
|
21
|
+
yield BinaryDataManager.instance.managers['filesystem'].init(mainManager);
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
static getInstance() {
|
|
27
|
+
if (!BinaryDataManager.instance) {
|
|
28
|
+
throw new Error('Binary Data Manager not initialized');
|
|
29
|
+
}
|
|
30
|
+
return BinaryDataManager.instance;
|
|
31
|
+
}
|
|
32
|
+
storeBinaryData(binaryData, binaryBuffer, executionId) {
|
|
33
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const retBinaryData = binaryData;
|
|
35
|
+
if (this.managers[this.binaryDataMode]) {
|
|
36
|
+
return this.managers[this.binaryDataMode]
|
|
37
|
+
.storeBinaryData(binaryBuffer, executionId)
|
|
38
|
+
.then((filename) => {
|
|
39
|
+
retBinaryData.id = this.generateBinaryId(filename);
|
|
40
|
+
return retBinaryData;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
retBinaryData.data = binaryBuffer.toString(Constants_1.BINARY_ENCODING);
|
|
44
|
+
return binaryData;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
retrieveBinaryData(binaryData) {
|
|
48
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
if (binaryData.id) {
|
|
50
|
+
return this.retrieveBinaryDataByIdentifier(binaryData.id);
|
|
51
|
+
}
|
|
52
|
+
return Buffer.from(binaryData.data, Constants_1.BINARY_ENCODING);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
retrieveBinaryDataByIdentifier(identifier) {
|
|
56
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const { mode, id } = this.splitBinaryModeFileId(identifier);
|
|
58
|
+
if (this.managers[mode]) {
|
|
59
|
+
return this.managers[mode].retrieveBinaryDataByIdentifier(id);
|
|
60
|
+
}
|
|
61
|
+
throw new Error('Storage mode used to store binary data not available');
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
markDataForDeletionByExecutionId(executionId) {
|
|
65
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
if (this.managers[this.binaryDataMode]) {
|
|
67
|
+
return this.managers[this.binaryDataMode].markDataForDeletionByExecutionId(executionId);
|
|
68
|
+
}
|
|
69
|
+
return Promise.resolve();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
persistBinaryDataForExecutionId(executionId) {
|
|
73
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
if (this.managers[this.binaryDataMode]) {
|
|
75
|
+
return this.managers[this.binaryDataMode].persistBinaryDataForExecutionId(executionId);
|
|
76
|
+
}
|
|
77
|
+
return Promise.resolve();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
deleteBinaryDataByExecutionId(executionId) {
|
|
81
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
if (this.managers[this.binaryDataMode]) {
|
|
83
|
+
return this.managers[this.binaryDataMode].deleteBinaryDataByExecutionId(executionId);
|
|
84
|
+
}
|
|
85
|
+
return Promise.resolve();
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
duplicateBinaryData(inputData, executionId) {
|
|
89
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
if (inputData && this.managers[this.binaryDataMode]) {
|
|
91
|
+
const returnInputData = inputData.map((executionDataArray) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
if (executionDataArray) {
|
|
93
|
+
return Promise.all(executionDataArray.map((executionData) => {
|
|
94
|
+
if (executionData.binary) {
|
|
95
|
+
return this.duplicateBinaryDataInExecData(executionData, executionId);
|
|
96
|
+
}
|
|
97
|
+
return executionData;
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
return executionDataArray;
|
|
101
|
+
}));
|
|
102
|
+
return Promise.all(returnInputData);
|
|
103
|
+
}
|
|
104
|
+
return Promise.resolve(inputData);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
generateBinaryId(filename) {
|
|
108
|
+
return `${this.binaryDataMode}:${filename}`;
|
|
109
|
+
}
|
|
110
|
+
splitBinaryModeFileId(fileId) {
|
|
111
|
+
const [mode, id] = fileId.split(':');
|
|
112
|
+
return { mode, id };
|
|
113
|
+
}
|
|
114
|
+
duplicateBinaryDataInExecData(executionData, executionId) {
|
|
115
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
const binaryManager = this.managers[this.binaryDataMode];
|
|
117
|
+
if (executionData.binary) {
|
|
118
|
+
const binaryDataKeys = Object.keys(executionData.binary);
|
|
119
|
+
const bdPromises = binaryDataKeys.map((key) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
if (!executionData.binary) {
|
|
121
|
+
return { key, newId: undefined };
|
|
122
|
+
}
|
|
123
|
+
const binaryDataId = executionData.binary[key].id;
|
|
124
|
+
if (!binaryDataId) {
|
|
125
|
+
return { key, newId: undefined };
|
|
126
|
+
}
|
|
127
|
+
return binaryManager === null || binaryManager === void 0 ? void 0 : binaryManager.duplicateBinaryDataByIdentifier(this.splitBinaryModeFileId(binaryDataId).id, executionId).then((filename) => ({
|
|
128
|
+
newId: this.generateBinaryId(filename),
|
|
129
|
+
key,
|
|
130
|
+
}));
|
|
131
|
+
}));
|
|
132
|
+
return Promise.all(bdPromises).then((b) => {
|
|
133
|
+
return b.reduce((acc, curr) => {
|
|
134
|
+
if (acc.binary && curr) {
|
|
135
|
+
acc.binary[curr.key].id = curr.newId;
|
|
136
|
+
}
|
|
137
|
+
return acc;
|
|
138
|
+
}, executionData);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return executionData;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.BinaryDataManager = BinaryDataManager;
|
|
146
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/BinaryDataManager/index.ts"],"names":[],"mappings":"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"}
|