@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,53 @@
1
+ import { RedisOptions } from 'ioredis';
2
+ export interface RedisLeaderElectionCallbacks {
3
+ onStartedLeading: () => void;
4
+ onStoppedLeading: () => void;
5
+ onNewLeader?: (identity: string) => void;
6
+ }
7
+ export declare class RedisLeaderElectionManager {
8
+ private redis;
9
+ private isLeader;
10
+ private lockKey;
11
+ private nodeId;
12
+ private lockTTL;
13
+ private renewalInterval;
14
+ private renewalTimer?;
15
+ private callbacks;
16
+ constructor(lockKey: string, redisConfig: string | RedisOptions, callbacks: RedisLeaderElectionCallbacks);
17
+ /**
18
+ * Wait for Redis connection to be ready
19
+ */
20
+ private waitForRedisConnection;
21
+ /**
22
+ * Start the leader election process
23
+ */
24
+ start(): Promise<void>;
25
+ /**
26
+ * Stop the leader election process
27
+ */
28
+ stop(): Promise<void>;
29
+ /**
30
+ * Check if this node is currently the leader
31
+ */
32
+ getIsLeader(): boolean;
33
+ /**
34
+ * Try to acquire leadership
35
+ */
36
+ private tryAcquireLeadership;
37
+ /**
38
+ * Renew the leadership lock
39
+ */
40
+ private renewLock;
41
+ /**
42
+ * Release the leadership lock
43
+ */
44
+ private releaseLock;
45
+ /**
46
+ * Start the renewal/retry loop
47
+ */
48
+ private startRenewalLoop;
49
+ /**
50
+ * Generate a unique node identifier
51
+ */
52
+ private generateNodeId;
53
+ }
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RedisLeaderElectionManager = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ioredis_1 = tslib_1.__importDefault(require("ioredis"));
6
+ const workflow_1 = require("@fsai-flow/workflow");
7
+ class RedisLeaderElectionManager {
8
+ constructor(lockKey, redisConfig, callbacks) {
9
+ this.isLeader = false;
10
+ this.lockTTL = 30000; // 30 seconds in milliseconds
11
+ this.renewalInterval = 10000; // 10 seconds in milliseconds
12
+ this.lockKey = `leader:${lockKey}`;
13
+ this.nodeId = this.generateNodeId();
14
+ this.callbacks = callbacks;
15
+ // Initialize Redis connection
16
+ if (typeof redisConfig === 'string') {
17
+ this.redis = new ioredis_1.default(redisConfig);
18
+ }
19
+ else {
20
+ this.redis = new ioredis_1.default(redisConfig);
21
+ }
22
+ // Handle Redis connection events
23
+ this.redis.on('connect', () => {
24
+ workflow_1.LoggerProxy.info(`Redis connected for leader election: ${this.lockKey}`);
25
+ });
26
+ this.redis.on('ready', () => {
27
+ workflow_1.LoggerProxy.info(`Redis ready for leader election: ${this.lockKey}`);
28
+ });
29
+ this.redis.on('error', (error) => {
30
+ workflow_1.LoggerProxy.error(`Redis connection error for leader election: ${error.message}`);
31
+ });
32
+ }
33
+ /**
34
+ * Wait for Redis connection to be ready
35
+ */
36
+ waitForRedisConnection() {
37
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
38
+ return new Promise((resolve, reject) => {
39
+ if (this.redis.status === 'ready') {
40
+ workflow_1.LoggerProxy.debug(`Redis already ready for ${this.lockKey}`);
41
+ resolve();
42
+ return;
43
+ }
44
+ let isSettled = false;
45
+ let timeoutId = null;
46
+ // Cleanup function to prevent memory leaks
47
+ const cleanup = () => {
48
+ if (isSettled)
49
+ return; // Already cleaned up
50
+ isSettled = true;
51
+ // Clear timeout safely
52
+ if (timeoutId !== null) {
53
+ clearTimeout(timeoutId);
54
+ timeoutId = null;
55
+ }
56
+ // Remove event listeners safely
57
+ try {
58
+ this.redis.off('ready', onReady);
59
+ this.redis.off('error', onError);
60
+ }
61
+ catch (error) {
62
+ // Ignore cleanup errors - Redis connection might be destroyed
63
+ workflow_1.LoggerProxy.debug(`Cleanup warning for ${this.lockKey}: ${error}`);
64
+ }
65
+ };
66
+ const onReady = () => {
67
+ cleanup();
68
+ workflow_1.LoggerProxy.debug(`Redis connection established for ${this.lockKey}`);
69
+ resolve();
70
+ };
71
+ const onError = (error) => {
72
+ cleanup();
73
+ workflow_1.LoggerProxy.error(`Redis connection failed for ${this.lockKey}: ${error.message}`);
74
+ reject(error);
75
+ };
76
+ const onTimeout = () => {
77
+ cleanup();
78
+ reject(new Error(`Redis connection timeout after 10 seconds for ${this.lockKey}`));
79
+ };
80
+ // Set up timeout
81
+ timeoutId = setTimeout(onTimeout, 10000); // 10 second timeout
82
+ // Set up event listeners
83
+ this.redis.once('ready', onReady);
84
+ this.redis.once('error', onError);
85
+ });
86
+ });
87
+ }
88
+ /**
89
+ * Start the leader election process
90
+ */
91
+ start() {
92
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
93
+ workflow_1.LoggerProxy.info(`🚀 Starting Redis leader election for ${this.nodeId} on key ${this.lockKey}`);
94
+ workflow_1.LoggerProxy.info(`🔧 Leader election config: TTL=${this.lockTTL}ms, RenewalInterval=${this.renewalInterval}ms`);
95
+ // Wait for Redis connection to be ready
96
+ workflow_1.LoggerProxy.info(`⏳ ${this.nodeId} waiting for Redis connection...`);
97
+ yield this.waitForRedisConnection();
98
+ workflow_1.LoggerProxy.info(`✅ Redis connection ready for ${this.nodeId}`);
99
+ // Try to acquire leadership immediately
100
+ workflow_1.LoggerProxy.info(`🎯 ${this.nodeId} making initial leadership attempt...`);
101
+ yield this.tryAcquireLeadership();
102
+ // Start the renewal/retry loop
103
+ this.startRenewalLoop();
104
+ workflow_1.LoggerProxy.info(`✅ Leader election process started for ${this.nodeId}`);
105
+ });
106
+ }
107
+ /**
108
+ * Stop the leader election process
109
+ */
110
+ stop() {
111
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
112
+ workflow_1.LoggerProxy.info(`🛑 Stopping Redis leader election for ${this.nodeId}`);
113
+ // Stop renewal timer
114
+ if (this.renewalTimer) {
115
+ workflow_1.LoggerProxy.debug(`⏹️ Stopping leadership monitoring loop for ${this.nodeId}`);
116
+ clearInterval(this.renewalTimer);
117
+ this.renewalTimer = undefined;
118
+ }
119
+ // Release leadership if we have it
120
+ if (this.isLeader) {
121
+ workflow_1.LoggerProxy.info(`👋 ${this.nodeId} releasing leadership voluntarily for ${this.lockKey}`);
122
+ yield this.releaseLock();
123
+ }
124
+ // Close Redis connection
125
+ workflow_1.LoggerProxy.debug(`🔌 Disconnecting Redis for ${this.nodeId}`);
126
+ this.redis.disconnect();
127
+ workflow_1.LoggerProxy.info(`✅ Leader election stopped for ${this.nodeId}`);
128
+ });
129
+ }
130
+ /**
131
+ * Check if this node is currently the leader
132
+ */
133
+ getIsLeader() {
134
+ return this.isLeader;
135
+ }
136
+ /**
137
+ * Try to acquire leadership
138
+ */
139
+ tryAcquireLeadership() {
140
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
141
+ try {
142
+ // Check if Redis connection is ready before attempting operations
143
+ if (this.redis.status !== 'ready') {
144
+ workflow_1.LoggerProxy.warn(`Redis not ready for ${this.nodeId}, current status: ${this.redis.status}`);
145
+ return false;
146
+ }
147
+ workflow_1.LoggerProxy.debug(`Node ${this.nodeId} attempting to acquire leadership for ${this.lockKey}`);
148
+ // Use SET with NX (not exists) and PX (expire in milliseconds)
149
+ const result = yield this.redis.set(this.lockKey, this.nodeId, 'PX', this.lockTTL, 'NX');
150
+ if (result === 'OK') {
151
+ // Successfully acquired leadership
152
+ if (!this.isLeader) {
153
+ this.isLeader = true;
154
+ workflow_1.LoggerProxy.info(`🏆 Node ${this.nodeId} ACQUIRED LEADERSHIP for ${this.lockKey} (TTL: ${this.lockTTL}ms)`);
155
+ this.callbacks.onStartedLeading();
156
+ }
157
+ else {
158
+ workflow_1.LoggerProxy.debug(`Node ${this.nodeId} renewed leadership lock for ${this.lockKey}`);
159
+ }
160
+ return true;
161
+ }
162
+ else {
163
+ // Failed to acquire leadership - check who is the current leader
164
+ const currentLeader = yield this.redis.get(this.lockKey);
165
+ const lockTTL = yield this.redis.pttl(this.lockKey);
166
+ if (currentLeader) {
167
+ if (currentLeader !== this.nodeId) {
168
+ workflow_1.LoggerProxy.debug(`👑 Node ${this.nodeId} sees ${currentLeader} is the current leader for ${this.lockKey} (TTL: ${lockTTL}ms)`);
169
+ if (this.callbacks.onNewLeader) {
170
+ this.callbacks.onNewLeader(currentLeader);
171
+ }
172
+ }
173
+ }
174
+ else {
175
+ workflow_1.LoggerProxy.debug(`Node ${this.nodeId} found no current leader for ${this.lockKey}, but failed to acquire lock`);
176
+ }
177
+ // Lost leadership if we previously had it
178
+ if (this.isLeader) {
179
+ this.isLeader = false;
180
+ workflow_1.LoggerProxy.info(`📉 Node ${this.nodeId} LOST LEADERSHIP for ${this.lockKey}`);
181
+ this.callbacks.onStoppedLeading();
182
+ }
183
+ return false;
184
+ }
185
+ }
186
+ catch (error) {
187
+ workflow_1.LoggerProxy.error(`❌ Error during leader election for ${this.nodeId}: ${error.message}`);
188
+ // If we had leadership and there's an error, assume we lost it
189
+ if (this.isLeader) {
190
+ this.isLeader = false;
191
+ workflow_1.LoggerProxy.info(`💥 Node ${this.nodeId} LOST LEADERSHIP due to error: ${this.lockKey}`);
192
+ this.callbacks.onStoppedLeading();
193
+ }
194
+ return false;
195
+ }
196
+ });
197
+ }
198
+ /**
199
+ * Renew the leadership lock
200
+ */
201
+ renewLock() {
202
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
203
+ try {
204
+ // Check if Redis connection is ready before attempting operations
205
+ if (this.redis.status !== 'ready') {
206
+ workflow_1.LoggerProxy.warn(`Redis not ready for ${this.nodeId} renewal, current status: ${this.redis.status}`);
207
+ return false;
208
+ }
209
+ workflow_1.LoggerProxy.debug(`🔄 Node ${this.nodeId} attempting to renew leadership for ${this.lockKey}`);
210
+ // Use Lua script to atomically check ownership and renew
211
+ const script = `
212
+ if redis.call("get", KEYS[1]) == ARGV[1] then
213
+ return redis.call("pexpire", KEYS[1], ARGV[2])
214
+ else
215
+ return 0
216
+ end
217
+ `;
218
+ const result = yield this.redis.eval(script, 1, this.lockKey, this.nodeId, this.lockTTL.toString());
219
+ if (result === 1) {
220
+ workflow_1.LoggerProxy.debug(`✅ Node ${this.nodeId} successfully renewed leadership for ${this.lockKey} (TTL: ${this.lockTTL}ms)`);
221
+ return true;
222
+ }
223
+ else {
224
+ workflow_1.LoggerProxy.warn(`⚠️ Node ${this.nodeId} failed to renew leadership for ${this.lockKey} - lock no longer owned by this node`);
225
+ return false;
226
+ }
227
+ }
228
+ catch (error) {
229
+ workflow_1.LoggerProxy.error(`❌ Error renewing leadership lock for ${this.nodeId}: ${error.message}`);
230
+ return false;
231
+ }
232
+ });
233
+ }
234
+ /**
235
+ * Release the leadership lock
236
+ */
237
+ releaseLock() {
238
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
239
+ try {
240
+ // Use Lua script to atomically check ownership and delete
241
+ const script = `
242
+ if redis.call("get", KEYS[1]) == ARGV[1] then
243
+ return redis.call("del", KEYS[1])
244
+ else
245
+ return 0
246
+ end
247
+ `;
248
+ yield this.redis.eval(script, 1, this.lockKey, this.nodeId);
249
+ workflow_1.LoggerProxy.info(`Node ${this.nodeId} released leadership lock for ${this.lockKey}`);
250
+ }
251
+ catch (error) {
252
+ workflow_1.LoggerProxy.error(`Error releasing lock for ${this.nodeId}: ${error.message}`);
253
+ }
254
+ });
255
+ }
256
+ /**
257
+ * Start the renewal/retry loop
258
+ */
259
+ startRenewalLoop() {
260
+ workflow_1.LoggerProxy.info(`Starting leadership monitoring loop for ${this.nodeId} (check every ${this.renewalInterval}ms)`);
261
+ this.renewalTimer = setInterval(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
262
+ if (this.isLeader) {
263
+ // Leader: Try to renew the lock
264
+ workflow_1.LoggerProxy.debug(`⏰ [LEADER] Node ${this.nodeId} periodic leadership renewal check`);
265
+ const renewed = yield this.renewLock();
266
+ if (!renewed) {
267
+ // Failed to renew - we lost leadership
268
+ this.isLeader = false;
269
+ workflow_1.LoggerProxy.info(`💔 [LEADER] Node ${this.nodeId} LOST LEADERSHIP (failed to renew) for ${this.lockKey}`);
270
+ this.callbacks.onStoppedLeading();
271
+ }
272
+ else {
273
+ // Successfully renewed - keeping leadership
274
+ //Logger.info(`🔒 [LEADER] Node ${this.nodeId} RENEWED LEADERSHIP - staying active for ${this.lockKey}`);
275
+ }
276
+ }
277
+ else {
278
+ // Follower: Try to acquire leadership
279
+ workflow_1.LoggerProxy.debug(`⏰ [FOLLOWER] Node ${this.nodeId} checking for available leadership`);
280
+ yield this.tryAcquireLeadership();
281
+ }
282
+ }), this.renewalInterval);
283
+ }
284
+ /**
285
+ * Generate a unique node identifier
286
+ */
287
+ generateNodeId() {
288
+ return process.env['POD_NAME'] ||
289
+ process.env['HOSTNAME'] ||
290
+ `node-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
291
+ }
292
+ }
293
+ exports.RedisLeaderElectionManager = RedisLeaderElectionManager;
294
+ //# sourceMappingURL=RedisLeaderElectionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisLeaderElectionManager.js","sourceRoot":"","sources":["../../../src/lib/RedisLeaderElectionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { IUserSettings } from '..';
2
+ /**
3
+ * Creates the user settings if they do not exist yet
4
+ *
5
+ * @export
6
+ */
7
+ export declare function prepareUserSettings(): Promise<IUserSettings>;
8
+ /**
9
+ * Returns the encryption key which is used to encrypt
10
+ * the credentials.
11
+ *
12
+ * @export
13
+ * @returns
14
+ */
15
+ export declare function getEncryptionKey(): Promise<string | undefined>;
16
+ /**
17
+ * Returns the instance ID
18
+ *
19
+ * @export
20
+ * @returns
21
+ */
22
+ export declare function getInstanceId(): Promise<string>;
23
+ /**
24
+ * Adds/Overwrite the given settings in the currently
25
+ * saved user settings
26
+ *
27
+ * @export
28
+ * @param {IUserSettings} addSettings The settings to add/overwrite
29
+ * @param {string} [settingsPath] Optional settings file path
30
+ * @returns {Promise<IUserSettings>}
31
+ */
32
+ export declare function addToUserSettings(addSettings: IUserSettings, settingsPath?: string): Promise<IUserSettings>;
33
+ /**
34
+ * Writes a user settings file
35
+ *
36
+ * @export
37
+ * @param {IUserSettings} userSettings The settings to write
38
+ * @param {string} [settingsPath] Optional settings file path
39
+ * @returns {Promise<IUserSettings>}
40
+ */
41
+ export declare function writeUserSettings(userSettings: IUserSettings, settingsPath?: string): Promise<IUserSettings>;
42
+ /**
43
+ * Returns the content of the user settings
44
+ *
45
+ * @export
46
+ * @returns {UserSettings}
47
+ */
48
+ export declare function getUserSettings(settingsPath?: string, ignoreCache?: boolean): Promise<IUserSettings | undefined>;
49
+ /**
50
+ * Returns the path to the user settings
51
+ *
52
+ * @export
53
+ * @returns {string}
54
+ */
55
+ export declare function getUserSettingsPath(): string;
56
+ /**
57
+ * Retruns the path to the n8n folder in which all n8n
58
+ * related data gets saved
59
+ *
60
+ * @export
61
+ * @returns {string}
62
+ */
63
+ export declare function getUserN8nFolderPath(): string;
64
+ /**
65
+ * Returns the path to the n8n user folder with the custom
66
+ * extensions like nodes and credentials
67
+ *
68
+ * @export
69
+ * @returns {string}
70
+ */
71
+ export declare function getUserN8nFolderCustomExtensionPath(): string;
72
+ /**
73
+ * Returns the home folder path of the user if
74
+ * none can be found it falls back to the current
75
+ * working directory
76
+ *
77
+ * @export
78
+ * @returns {string}
79
+ */
80
+ export declare function getUserHome(): string;