@fsai-flow/workflow 0.0.2 → 0.0.3
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/dist/README.md +31 -0
- package/dist/package.json +42 -0
- package/dist/src/index.d.ts +21 -0
- package/dist/src/index.js +33 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/Constants.d.ts +68 -0
- package/dist/src/lib/Constants.js +106 -0
- package/dist/src/lib/Constants.js.map +1 -0
- package/dist/src/lib/DeferredPromise.d.ts +6 -0
- package/dist/src/lib/DeferredPromise.js +11 -0
- package/dist/src/lib/DeferredPromise.js.map +1 -0
- package/dist/src/lib/Expression.d.ts +65 -0
- package/dist/src/lib/Expression.js +215 -0
- package/dist/src/lib/Expression.js.map +1 -0
- package/dist/src/lib/Interfaces.d.ts +1579 -0
- package/dist/src/lib/Interfaces.js +44 -0
- package/dist/src/lib/Interfaces.js.map +1 -0
- package/dist/src/lib/LoggerProxy.d.ts +9 -0
- package/dist/src/lib/LoggerProxy.js +40 -0
- package/dist/src/lib/LoggerProxy.js.map +1 -0
- package/dist/src/lib/MetadataUtils.d.ts +4 -0
- package/dist/src/lib/MetadataUtils.js +27 -0
- package/dist/src/lib/MetadataUtils.js.map +1 -0
- package/dist/src/lib/NodeErrors.d.ts +82 -0
- package/dist/src/lib/NodeErrors.js +289 -0
- package/dist/src/lib/NodeErrors.js.map +1 -0
- package/dist/src/lib/NodeHelpers.d.ts +198 -0
- package/dist/src/lib/NodeHelpers.js +1348 -0
- package/dist/src/lib/NodeHelpers.js.map +1 -0
- package/dist/src/lib/ObservableObject.d.ts +5 -0
- package/dist/src/lib/ObservableObject.js +61 -0
- package/dist/src/lib/ObservableObject.js.map +1 -0
- package/dist/src/lib/RoutingNode.d.ts +18 -0
- package/dist/src/lib/RoutingNode.js +508 -0
- package/dist/src/lib/RoutingNode.js.map +1 -0
- package/dist/src/lib/TelemetryHelpers.d.ts +3 -0
- package/dist/src/lib/TelemetryHelpers.js +69 -0
- package/dist/src/lib/TelemetryHelpers.js.map +1 -0
- package/dist/src/lib/TypeValidation.d.ts +21 -0
- package/dist/src/lib/TypeValidation.js +385 -0
- package/dist/src/lib/TypeValidation.js.map +1 -0
- package/dist/src/lib/VersionedNodeType.d.ts +9 -0
- package/dist/src/lib/VersionedNodeType.js +26 -0
- package/dist/src/lib/VersionedNodeType.js.map +1 -0
- package/dist/src/lib/Workflow.d.ts +248 -0
- package/dist/src/lib/Workflow.js +904 -0
- package/dist/src/lib/Workflow.js.map +1 -0
- package/dist/src/lib/WorkflowDataProxy.d.ts +87 -0
- package/dist/src/lib/WorkflowDataProxy.js +556 -0
- package/dist/src/lib/WorkflowDataProxy.js.map +1 -0
- package/dist/src/lib/WorkflowErrors.d.ts +9 -0
- package/dist/src/lib/WorkflowErrors.js +18 -0
- package/dist/src/lib/WorkflowErrors.js.map +1 -0
- package/dist/src/lib/WorkflowHooks.d.ts +11 -0
- package/dist/src/lib/WorkflowHooks.js +34 -0
- package/dist/src/lib/WorkflowHooks.js.map +1 -0
- package/dist/src/lib/errors/base/base.error.d.ts +30 -0
- package/dist/src/lib/errors/base/base.error.js +45 -0
- package/dist/src/lib/errors/base/base.error.js.map +1 -0
- package/dist/src/lib/errors/base/operational.error.d.ts +15 -0
- package/dist/src/lib/errors/base/operational.error.js +19 -0
- package/dist/src/lib/errors/base/operational.error.js.map +1 -0
- package/dist/src/lib/errors/error.types.d.ts +11 -0
- package/dist/src/lib/errors/error.types.js +3 -0
- package/dist/src/lib/errors/error.types.js.map +1 -0
- package/dist/src/lib/errors/index.d.ts +1 -0
- package/dist/src/lib/errors/index.js +6 -0
- package/dist/src/lib/errors/index.js.map +1 -0
- package/dist/src/lib/result.d.ts +19 -0
- package/dist/src/lib/result.js +36 -0
- package/dist/src/lib/result.js.map +1 -0
- package/dist/src/lib/utils.d.ts +50 -0
- package/dist/src/lib/utils.js +119 -0
- package/dist/src/lib/utils.js.map +1 -0
- package/package.json +5 -1
- package/src/lib/Interfaces.ts +28 -33
- package/src/lib/Workflow.ts +1 -1
- package/src/lib/WorkflowDataProxy.ts +1 -1
- package/src/lib/utils.ts +99 -120
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowHooks.js","sourceRoot":"","sources":["../../../src/lib/WorkflowHooks.ts"],"names":[],"mappings":";;;AAQA,MAAa,aAAa;IACzB,IAAI,CAAsB;IAE1B,YAAY,CAAgB;IAE5B,WAAW,CAAS;IAEpB,SAAS,CAAU;IAEnB,OAAO,CAAU;IAEjB,aAAa,CAAwB;IAErC,YACC,aAAoC,EACpC,IAAyB,EACzB,WAAmB,EACnB,YAA2B,EAC3B,kBAAqD;QAErD,2FAA2F;QAC3F,kBAAkB,GAAG,kBAAkB,IAAI,EAAE,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,iHAAiH;IACjH,KAAK,CAAC,oBAAoB,CAAC,QAAgB,EAAE,UAAiB;QAC7D,6BAA6B;QAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC/F,0FAA0F;YAC1F,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAE,EAAE,CAAC;gBAC1D,4CAA4C;gBAC5C,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;IACF,CAAC;CACD;AA1CD,sCA0CC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Event } from '@sentry/node';
|
|
2
|
+
import type { ErrorTags, ErrorLevel, ReportingOptions } from '../error.types';
|
|
3
|
+
export type BaseErrorOptions = {
|
|
4
|
+
description?: undefined | null;
|
|
5
|
+
} & ErrorOptions & ReportingOptions;
|
|
6
|
+
interface ErrorOptions {
|
|
7
|
+
cause?: unknown;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Base class for all errors
|
|
11
|
+
*/
|
|
12
|
+
export declare abstract class BaseError extends Error {
|
|
13
|
+
/**
|
|
14
|
+
* Error level. Defines which level the error should be logged/reported
|
|
15
|
+
* @default 'error'
|
|
16
|
+
*/
|
|
17
|
+
level: ErrorLevel;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the error should be reported to Sentry.
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
22
|
+
readonly shouldReport: boolean;
|
|
23
|
+
readonly description: string | null | undefined;
|
|
24
|
+
readonly tags: ErrorTags;
|
|
25
|
+
readonly extra?: Event['extra'];
|
|
26
|
+
readonly packageName?: string;
|
|
27
|
+
readonly cause?: unknown;
|
|
28
|
+
constructor(message: string, { level, description, shouldReport, tags, extra, ...rest }?: BaseErrorOptions);
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseError = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const callsites_1 = tslib_1.__importDefault(require("callsites"));
|
|
6
|
+
/**
|
|
7
|
+
* Base class for all errors
|
|
8
|
+
*/
|
|
9
|
+
class BaseError extends Error {
|
|
10
|
+
/**
|
|
11
|
+
* Error level. Defines which level the error should be logged/reported
|
|
12
|
+
* @default 'error'
|
|
13
|
+
*/
|
|
14
|
+
level;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the error should be reported to Sentry.
|
|
17
|
+
* @default true
|
|
18
|
+
*/
|
|
19
|
+
shouldReport;
|
|
20
|
+
description;
|
|
21
|
+
tags;
|
|
22
|
+
extra;
|
|
23
|
+
packageName;
|
|
24
|
+
cause;
|
|
25
|
+
constructor(message, { level = 'error', description, shouldReport, tags = {}, extra, ...rest } = {}) {
|
|
26
|
+
super(message);
|
|
27
|
+
if (rest.cause !== undefined) {
|
|
28
|
+
this.cause = rest.cause;
|
|
29
|
+
}
|
|
30
|
+
this.level = level;
|
|
31
|
+
this.shouldReport = shouldReport ?? (level === 'error' || level === 'fatal');
|
|
32
|
+
this.description = description;
|
|
33
|
+
this.tags = tags;
|
|
34
|
+
this.extra = extra;
|
|
35
|
+
try {
|
|
36
|
+
const filePath = (0, callsites_1.default)()[2].getFileName() ?? '';
|
|
37
|
+
const match = /packages\/([^\/]+)\//.exec(filePath)?.[1];
|
|
38
|
+
if (match)
|
|
39
|
+
this.tags['packageName'] = match;
|
|
40
|
+
}
|
|
41
|
+
catch { }
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.BaseError = BaseError;
|
|
45
|
+
//# sourceMappingURL=base.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.error.js","sourceRoot":"","sources":["../../../../../src/lib/errors/base/base.error.ts"],"names":[],"mappings":";;;;AACA,kEAAkC;AAUlC;;GAEG;AACH,MAAsB,SAAU,SAAQ,KAAK;IAC5C;;;OAGG;IACH,KAAK,CAAa;IAElB;;;OAGG;IACM,YAAY,CAAU;IAEtB,WAAW,CAA4B;IAEvC,IAAI,CAAY;IAEhB,KAAK,CAAkB;IAEvB,WAAW,CAAU;IAErB,KAAK,CAAW;IAEzB,YACC,OAAe,EACf,EACC,KAAK,GAAG,OAAO,EACf,WAAW,EACX,YAAY,EACZ,IAAI,GAAG,EAAE,EACT,KAAK,EACL,GAAG,IAAI,KACc,EAAE;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,IAAA,mBAAS,GAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEzD,IAAI,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACX,CAAC;CACD;AArDD,8BAqDC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { BaseErrorOptions } from './base.error';
|
|
2
|
+
import { BaseError } from './base.error';
|
|
3
|
+
export type OperationalErrorOptions = Omit<BaseErrorOptions, 'level'> & {
|
|
4
|
+
level?: 'info' | 'warning' | 'error';
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Error that indicates a transient issue, like a network request failing,
|
|
8
|
+
* a database query timing out, etc. These are expected to happen, are
|
|
9
|
+
* transient by nature and should be handled gracefully.
|
|
10
|
+
*
|
|
11
|
+
* Default level: warning
|
|
12
|
+
*/
|
|
13
|
+
export declare class OperationalError extends BaseError {
|
|
14
|
+
constructor(message: string, opts?: OperationalErrorOptions);
|
|
15
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperationalError = void 0;
|
|
4
|
+
const base_error_1 = require("./base.error");
|
|
5
|
+
/**
|
|
6
|
+
* Error that indicates a transient issue, like a network request failing,
|
|
7
|
+
* a database query timing out, etc. These are expected to happen, are
|
|
8
|
+
* transient by nature and should be handled gracefully.
|
|
9
|
+
*
|
|
10
|
+
* Default level: warning
|
|
11
|
+
*/
|
|
12
|
+
class OperationalError extends base_error_1.BaseError {
|
|
13
|
+
constructor(message, opts = {}) {
|
|
14
|
+
opts.level = opts.level ?? 'warning';
|
|
15
|
+
super(message, opts);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.OperationalError = OperationalError;
|
|
19
|
+
//# sourceMappingURL=operational.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operational.error.js","sourceRoot":"","sources":["../../../../../src/lib/errors/base/operational.error.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAMzC;;;;;;GAMG;AACH,MAAa,gBAAiB,SAAQ,sBAAS;IAC9C,YAAY,OAAe,EAAE,OAAgC,EAAE;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;QAErC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;CACD;AAND,4CAMC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Event } from '@sentry/node';
|
|
2
|
+
export type ErrorLevel = 'fatal' | 'error' | 'warning' | 'info';
|
|
3
|
+
export type ErrorTags = NonNullable<Event['tags']>;
|
|
4
|
+
export type ReportingOptions = {
|
|
5
|
+
/** Whether the error should be reported to Sentry */
|
|
6
|
+
shouldReport?: boolean;
|
|
7
|
+
level?: ErrorLevel;
|
|
8
|
+
tags?: ErrorTags;
|
|
9
|
+
extra?: Event['extra'];
|
|
10
|
+
executionId?: string;
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.types.js","sourceRoot":"","sources":["../../../../src/lib/errors/error.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { OperationalError, type OperationalErrorOptions } from './base/operational.error';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperationalError = void 0;
|
|
4
|
+
var operational_error_1 = require("./base/operational.error");
|
|
5
|
+
Object.defineProperty(exports, "OperationalError", { enumerable: true, get: function () { return operational_error_1.OperationalError; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/errors/index.ts"],"names":[],"mappings":";;;AAAA,8DAA0F;AAAjF,qHAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type ResultOk<T> = {
|
|
2
|
+
ok: true;
|
|
3
|
+
result: T;
|
|
4
|
+
};
|
|
5
|
+
export type ResultError<E> = {
|
|
6
|
+
ok: false;
|
|
7
|
+
error: E;
|
|
8
|
+
};
|
|
9
|
+
export type Result<T, E> = ResultOk<T> | ResultError<E>;
|
|
10
|
+
export declare const createResultOk: <T>(data: T) => ResultOk<T>;
|
|
11
|
+
export declare const createResultError: <E = unknown>(error: E) => ResultError<E>;
|
|
12
|
+
export declare function ensureError(error: unknown): Error;
|
|
13
|
+
/**
|
|
14
|
+
* Executes the given function and converts it to a Result object.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const result = toResult(() => fs.writeFileSync('file.txt', 'Hello, World!'));
|
|
18
|
+
*/
|
|
19
|
+
export declare const toResult: <T, E extends Error = Error>(fn: () => T) => Result<T, E>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toResult = exports.createResultError = exports.createResultOk = void 0;
|
|
4
|
+
exports.ensureError = ensureError;
|
|
5
|
+
const createResultOk = (data) => ({
|
|
6
|
+
ok: true,
|
|
7
|
+
result: data,
|
|
8
|
+
});
|
|
9
|
+
exports.createResultOk = createResultOk;
|
|
10
|
+
const createResultError = (error) => ({
|
|
11
|
+
ok: false,
|
|
12
|
+
error,
|
|
13
|
+
});
|
|
14
|
+
exports.createResultError = createResultError;
|
|
15
|
+
function ensureError(error) {
|
|
16
|
+
return error instanceof Error
|
|
17
|
+
? error
|
|
18
|
+
: new Error('Error that was not an instance of Error was thrown, cause: ' + error);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Executes the given function and converts it to a Result object.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const result = toResult(() => fs.writeFileSync('file.txt', 'Hello, World!'));
|
|
25
|
+
*/
|
|
26
|
+
const toResult = (fn) => {
|
|
27
|
+
try {
|
|
28
|
+
return (0, exports.createResultOk)(fn());
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
const error = ensureError(e);
|
|
32
|
+
return (0, exports.createResultError)(error);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.toResult = toResult;
|
|
36
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/lib/result.ts"],"names":[],"mappings":";;;AAcA,kCAIC;AAdM,MAAM,cAAc,GAAG,CAAI,IAAO,EAAe,EAAE,CAAC,CAAC;IAC3D,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,IAAI;CACZ,CAAC,CAAC;AAHU,QAAA,cAAc,kBAGxB;AAEI,MAAM,iBAAiB,GAAG,CAAc,KAAQ,EAAkB,EAAE,CAAC,CAAC;IAC5E,EAAE,EAAE,KAAK;IACT,KAAK;CACL,CAAC,CAAC;AAHU,QAAA,iBAAiB,qBAG3B;AAEH,SAAgB,WAAW,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,KAAK;QAC5B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,KAAK,CAAC,6DAA6D,GAAG,KAAK,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACI,MAAM,QAAQ,GAAG,CAA6B,EAAW,EAAgB,EAAE;IACjF,IAAI,CAAC;QACJ,OAAO,IAAA,sBAAc,EAAI,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAA,yBAAiB,EAAI,KAAU,CAAC,CAAC;IACzC,CAAC;AACF,CAAC,CAAC;AAPW,QAAA,QAAQ,YAOnB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IDisplayOptions, INodeProperties } from './Interfaces';
|
|
2
|
+
export declare function updateDisplayOptions(displayOptions: IDisplayOptions, properties: INodeProperties[]): {
|
|
3
|
+
displayOptions: IDisplayOptions;
|
|
4
|
+
displayName: string;
|
|
5
|
+
name: string;
|
|
6
|
+
type: import("./Interfaces").NodePropertyTypes;
|
|
7
|
+
typeOptions?: import("./Interfaces").INodePropertyTypeOptions;
|
|
8
|
+
default: import("./Interfaces").NodeParameterValue | import("./Interfaces").INodeParameters | import("./Interfaces").INodeParameters[] | import("./Interfaces").NodeParameterValue[];
|
|
9
|
+
description?: string;
|
|
10
|
+
hint?: string;
|
|
11
|
+
options?: Array<import("./Interfaces").INodePropertyOptions | INodeProperties | import("./Interfaces").INodePropertyCollection>;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
isNodeSetting?: boolean;
|
|
14
|
+
noDataExpression?: boolean;
|
|
15
|
+
required?: boolean;
|
|
16
|
+
routing?: import("./Interfaces").INodePropertyRouting;
|
|
17
|
+
modes?: import("./Interfaces").INodePropertyMode[];
|
|
18
|
+
validateType?: import("./Interfaces").FieldType;
|
|
19
|
+
ignoreValidationDuringExecution?: boolean;
|
|
20
|
+
disabledOptions?: {
|
|
21
|
+
show?: {
|
|
22
|
+
[key: string]: Array<import("./Interfaces").NodeParameterValue | import("./Interfaces").DisplayCondition> | import("./Interfaces").NodeParameterValue[] | undefined;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
}[];
|
|
26
|
+
export declare function randomInt(max: number): number;
|
|
27
|
+
export declare function randomInt(min: number, max: number): number;
|
|
28
|
+
type MutuallyExclusive<T, U> = (T & {
|
|
29
|
+
[k in Exclude<keyof U, keyof T>]?: never;
|
|
30
|
+
}) | (U & {
|
|
31
|
+
[k in Exclude<keyof T, keyof U>]?: never;
|
|
32
|
+
});
|
|
33
|
+
type JSONParseOptions<T> = {
|
|
34
|
+
acceptJSObject?: boolean;
|
|
35
|
+
} & MutuallyExclusive<{
|
|
36
|
+
errorMessage?: string;
|
|
37
|
+
}, {
|
|
38
|
+
fallbackValue?: T;
|
|
39
|
+
}>;
|
|
40
|
+
export declare const jsonParse: <T>(jsonString: string, options?: JSONParseOptions<T>) => T;
|
|
41
|
+
type JSONStringifyOptions = {
|
|
42
|
+
replaceCircularRefs?: boolean;
|
|
43
|
+
};
|
|
44
|
+
export declare const replaceCircularReferences: <T>(value: T, knownObjects?: WeakSet<object>) => T;
|
|
45
|
+
export declare const jsonStringify: (obj: unknown, options?: JSONStringifyOptions) => string;
|
|
46
|
+
/**
|
|
47
|
+
* Checks if a value is an object with a specific key and provides a type guard for the key.
|
|
48
|
+
*/
|
|
49
|
+
export declare function hasKey<T extends PropertyKey>(value: unknown, key: T): value is Record<T, unknown>;
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jsonStringify = exports.replaceCircularReferences = exports.jsonParse = void 0;
|
|
4
|
+
exports.updateDisplayOptions = updateDisplayOptions;
|
|
5
|
+
exports.randomInt = randomInt;
|
|
6
|
+
exports.hasKey = hasKey;
|
|
7
|
+
const esprima_next_1 = require("esprima-next");
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
function updateDisplayOptions(displayOptions, properties) {
|
|
10
|
+
return properties.map((nodeProperty) => {
|
|
11
|
+
return {
|
|
12
|
+
...nodeProperty,
|
|
13
|
+
displayOptions: (0, lodash_1.merge)({}, nodeProperty.displayOptions, displayOptions),
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generates a random integer within a specified range.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} min - The lower bound of the range. If `max` is not provided, this value is used as the upper bound and the lower bound is set to 0.
|
|
21
|
+
* @param {number} [max] - The upper bound of the range, not inclusive.
|
|
22
|
+
* @returns {number} A random integer within the specified range.
|
|
23
|
+
*/
|
|
24
|
+
function randomInt(min, max) {
|
|
25
|
+
if (max === undefined) {
|
|
26
|
+
max = min;
|
|
27
|
+
min = 0;
|
|
28
|
+
}
|
|
29
|
+
if (max <= min) {
|
|
30
|
+
throw new Error("max must be greater than min");
|
|
31
|
+
}
|
|
32
|
+
const range = max - min;
|
|
33
|
+
const maxUnbiased = Math.floor(0xffffffff / range) * range;
|
|
34
|
+
let rand;
|
|
35
|
+
do {
|
|
36
|
+
rand = crypto.getRandomValues(new Uint32Array(1))[0];
|
|
37
|
+
} while (rand >= maxUnbiased);
|
|
38
|
+
return min + (rand % range);
|
|
39
|
+
}
|
|
40
|
+
const jsonParse = (jsonString, options) => {
|
|
41
|
+
try {
|
|
42
|
+
return JSON.parse(jsonString);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (options?.acceptJSObject) {
|
|
46
|
+
try {
|
|
47
|
+
const jsonStringCleaned = parseJSObject(jsonString);
|
|
48
|
+
return jsonStringCleaned;
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
// Ignore this error and return the original error or the fallback value
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (options?.fallbackValue !== undefined) {
|
|
55
|
+
if (options.fallbackValue instanceof Function) {
|
|
56
|
+
return options.fallbackValue();
|
|
57
|
+
}
|
|
58
|
+
return options.fallbackValue;
|
|
59
|
+
}
|
|
60
|
+
else if (options?.errorMessage) {
|
|
61
|
+
// TODO REFACTOR: Use ApplicationError from offical @fsai-flow/workflow repo
|
|
62
|
+
throw new Error(options.errorMessage);
|
|
63
|
+
}
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
exports.jsonParse = jsonParse;
|
|
68
|
+
const replaceCircularReferences = (value, knownObjects = new WeakSet()) => {
|
|
69
|
+
if (typeof value !== 'object' || value === null || value instanceof RegExp)
|
|
70
|
+
return value;
|
|
71
|
+
if ('toJSON' in value && typeof value.toJSON === 'function')
|
|
72
|
+
return value.toJSON();
|
|
73
|
+
if (knownObjects.has(value))
|
|
74
|
+
return '[Circular Reference]';
|
|
75
|
+
knownObjects.add(value);
|
|
76
|
+
const copy = (Array.isArray(value) ? [] : {});
|
|
77
|
+
for (const key in value) {
|
|
78
|
+
copy[key] = (0, exports.replaceCircularReferences)(value[key], knownObjects);
|
|
79
|
+
}
|
|
80
|
+
knownObjects.delete(value);
|
|
81
|
+
return copy;
|
|
82
|
+
};
|
|
83
|
+
exports.replaceCircularReferences = replaceCircularReferences;
|
|
84
|
+
const jsonStringify = (obj, options = {}) => {
|
|
85
|
+
return JSON.stringify(options?.replaceCircularRefs ? (0, exports.replaceCircularReferences)(obj) : obj);
|
|
86
|
+
};
|
|
87
|
+
exports.jsonStringify = jsonStringify;
|
|
88
|
+
function syntaxNodeToValue(expression) {
|
|
89
|
+
switch (expression?.type) {
|
|
90
|
+
case esprima_next_1.Syntax.ObjectExpression:
|
|
91
|
+
return Object.fromEntries(expression.properties
|
|
92
|
+
.filter((prop) => prop.type === esprima_next_1.Syntax.Property)
|
|
93
|
+
.map(({ key, value }) => [syntaxNodeToValue(key), syntaxNodeToValue(value)]));
|
|
94
|
+
case esprima_next_1.Syntax.Identifier:
|
|
95
|
+
return expression.name;
|
|
96
|
+
case esprima_next_1.Syntax.Literal:
|
|
97
|
+
return expression.value;
|
|
98
|
+
case esprima_next_1.Syntax.ArrayExpression:
|
|
99
|
+
return expression.elements.map((exp) => syntaxNodeToValue(exp));
|
|
100
|
+
default:
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Parse any JavaScript ObjectExpression, including:
|
|
106
|
+
* - single quoted keys
|
|
107
|
+
* - unquoted keys
|
|
108
|
+
*/
|
|
109
|
+
function parseJSObject(objectAsString) {
|
|
110
|
+
const jsExpression = (0, esprima_next_1.parse)(`(${objectAsString})`).body.find((node) => node.type === esprima_next_1.Syntax.ExpressionStatement && node.expression.type === esprima_next_1.Syntax.ObjectExpression);
|
|
111
|
+
return syntaxNodeToValue(jsExpression?.expression);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Checks if a value is an object with a specific key and provides a type guard for the key.
|
|
115
|
+
*/
|
|
116
|
+
function hasKey(value, key) {
|
|
117
|
+
return value !== null && typeof value === 'object' && value.hasOwnProperty(key);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fsai-flow/workflow",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"license": "PolyForm Noncommercial License 1.0.0",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"form-data": "^4.0.1",
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
"lodash.isequal": "^4.5.0",
|
|
11
11
|
"lodash.merge": "^4.6.2",
|
|
12
12
|
"luxon": "^3.5.0",
|
|
13
|
+
"request": "^2.88.2",
|
|
14
|
+
"request-promise-native": "^1.0.9",
|
|
13
15
|
"riot-tmpl": "^3.0.8",
|
|
14
16
|
"tslib": "^2.3.0",
|
|
15
17
|
"@sentry/node": "^9.15.0",
|
|
@@ -24,6 +26,8 @@
|
|
|
24
26
|
"@types/lodash.isequal": "^4.5.8",
|
|
25
27
|
"@types/lodash.merge": "^4.6.9",
|
|
26
28
|
"@types/luxon": "^3.4.2",
|
|
29
|
+
"@types/request": "^2.48.12",
|
|
30
|
+
"@types/request-promise-native": "^1.0.15",
|
|
27
31
|
"@types/xml2js": "^0.4.14",
|
|
28
32
|
"@typescript-eslint/eslint-plugin": "^8.18.0",
|
|
29
33
|
"@typescript-eslint/parser": "^8.18.0",
|
package/src/lib/Interfaces.ts
CHANGED
|
@@ -13,6 +13,8 @@ import { NodeApiError, NodeOperationError } from './NodeErrors';
|
|
|
13
13
|
import { Workflow } from './Workflow';
|
|
14
14
|
import { CODE_EXECUTION_MODES, CODE_LANGUAGES, LOG_LEVELS } from './Constants';
|
|
15
15
|
|
|
16
|
+
import { OptionsWithUri, OptionsWithUrl } from 'request';
|
|
17
|
+
import * as requestPromise from 'request-promise-native';
|
|
16
18
|
export interface IAdditionalCredentialOptions {
|
|
17
19
|
oauth2?: IOAuth2Options;
|
|
18
20
|
credentialsDecrypted?: ICredentialsDecrypted;
|
|
@@ -692,8 +694,33 @@ export type ISupplyDataFunctions = {
|
|
|
692
694
|
requestOptions: IHttpRequestOptions,
|
|
693
695
|
additionalCredentialOptions?: IAdditionalCredentialOptions,
|
|
694
696
|
): Promise<IN8nHttpResponse | IN8nHttpFullResponse>;
|
|
697
|
+
request: (uriOrObject: string | IDataObject | any, options?: IDataObject) => Promise<any>; // tslint:disable-line:no-any
|
|
698
|
+
requestWithAuthentication(
|
|
699
|
+
this: IAllExecuteFunctions,
|
|
700
|
+
credentialsType: string,
|
|
701
|
+
requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions,
|
|
702
|
+
additionalCredentialOptions?: IAdditionalCredentialOptions,
|
|
703
|
+
): Promise<any>;
|
|
704
|
+
requestOAuth2(
|
|
705
|
+
this: IAllExecuteFunctions,
|
|
706
|
+
credentialsType: string,
|
|
707
|
+
requestOptions: OptionsWithUri | requestPromise.RequestPromiseOptions,
|
|
708
|
+
oAuth2Options?: IOAuth2Options,
|
|
709
|
+
): Promise<any>;
|
|
710
|
+
requestOAuth1(
|
|
711
|
+
this: IAllExecuteFunctions,
|
|
712
|
+
credentialsType: string,
|
|
713
|
+
requestOptions: OptionsWithUrl | requestPromise.RequestPromiseOptions,
|
|
714
|
+
): Promise<any>;
|
|
715
|
+
prepareBinaryData(
|
|
716
|
+
binaryData: Buffer,
|
|
717
|
+
filePath?: string,
|
|
718
|
+
mimeType?: string,
|
|
719
|
+
): Promise<IBinaryData>;
|
|
695
720
|
assertBinaryData(itemIndex: number, propertyName: string, inputIndex?: number): IBinaryData;
|
|
696
721
|
getBinaryDataBuffer(itemIndex: number, propertyName: string, inputIndex?: number): Promise<Buffer>;
|
|
722
|
+
returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExecutionData[];
|
|
723
|
+
normalizeItems(items: INodeExecutionData | INodeExecutionData[]): INodeExecutionData[];
|
|
697
724
|
[key: string]: (...args: any[]) => any; // tslint:disable-line:no-any
|
|
698
725
|
};
|
|
699
726
|
}
|
|
@@ -1041,7 +1068,6 @@ export interface IWebhookFunctions {
|
|
|
1041
1068
|
node?: INode,
|
|
1042
1069
|
): { outputExecutionData: IRunExecutionData };
|
|
1043
1070
|
logAiEvent(event: AiEvent, data?: string): void;
|
|
1044
|
-
|
|
1045
1071
|
}
|
|
1046
1072
|
|
|
1047
1073
|
export interface INodeCredentialsDetails {
|
|
@@ -1994,6 +2020,7 @@ export interface IWorkflowBase {
|
|
|
1994
2020
|
connections: IConnections;
|
|
1995
2021
|
settings?: IWorkflowSettings;
|
|
1996
2022
|
staticData?: IDataObject;
|
|
2023
|
+
teamId?: string | null;
|
|
1997
2024
|
}
|
|
1998
2025
|
|
|
1999
2026
|
export interface IWorkflowCredentials {
|
|
@@ -2228,35 +2255,3 @@ export type AiEvent =
|
|
|
2228
2255
|
| 'ai-llm-errored'
|
|
2229
2256
|
| 'ai-vector-store-populated'
|
|
2230
2257
|
| 'ai-vector-store-updated';
|
|
2231
|
-
|
|
2232
|
-
export type SetNodeOptions = {
|
|
2233
|
-
dotNotation?: boolean;
|
|
2234
|
-
ignoreConversionErrors?: boolean;
|
|
2235
|
-
include?: IncludeMods;
|
|
2236
|
-
includeBinary?: boolean;
|
|
2237
|
-
};
|
|
2238
|
-
|
|
2239
|
-
export type SetField = {
|
|
2240
|
-
name: string;
|
|
2241
|
-
type: 'stringValue' | 'numberValue' | 'booleanValue' | 'arrayValue' | 'objectValue';
|
|
2242
|
-
stringValue?: string;
|
|
2243
|
-
numberValue?: number;
|
|
2244
|
-
booleanValue?: boolean;
|
|
2245
|
-
arrayValue?: string[] | string | IDataObject | IDataObject[];
|
|
2246
|
-
objectValue?: string | IDataObject;
|
|
2247
|
-
};
|
|
2248
|
-
|
|
2249
|
-
export type AssignmentSetField = {
|
|
2250
|
-
name: string;
|
|
2251
|
-
value: unknown;
|
|
2252
|
-
type: string;
|
|
2253
|
-
};
|
|
2254
|
-
|
|
2255
|
-
export const INCLUDE = {
|
|
2256
|
-
ALL: 'all',
|
|
2257
|
-
NONE: 'none',
|
|
2258
|
-
SELECTED: 'selected',
|
|
2259
|
-
EXCEPT: 'except',
|
|
2260
|
-
} as const;
|
|
2261
|
-
|
|
2262
|
-
export type IncludeMods = (typeof INCLUDE)[keyof typeof INCLUDE];
|
package/src/lib/Workflow.ts
CHANGED
|
@@ -158,7 +158,7 @@ export class Workflow {
|
|
|
158
158
|
if (connectionInfo.node === '__proto__' || connectionInfo.node === 'constructor' || connectionInfo.node === 'prototype') {
|
|
159
159
|
throw new Error('Prototype-polluting assignment detected');
|
|
160
160
|
}
|
|
161
|
-
|
|
161
|
+
|
|
162
162
|
if (!returnConnection.hasOwnProperty(connectionInfo.node)) {
|
|
163
163
|
returnConnection[connectionInfo.node] = {};
|
|
164
164
|
}
|