@fsai-flow/workflow 0.0.2 → 0.1.0

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 (136) hide show
  1. package/dist/README.md +31 -0
  2. package/dist/package.json +42 -0
  3. package/dist/src/index.d.ts +22 -0
  4. package/dist/src/index.d.ts.map +1 -0
  5. package/dist/src/index.js +68 -0
  6. package/dist/src/index.js.map +1 -0
  7. package/dist/src/lib/Constants.d.ts +69 -0
  8. package/dist/src/lib/Constants.d.ts.map +1 -0
  9. package/dist/src/lib/Constants.js +106 -0
  10. package/dist/src/lib/Constants.js.map +1 -0
  11. package/dist/src/lib/DeferredPromise.d.ts +7 -0
  12. package/dist/src/lib/DeferredPromise.d.ts.map +1 -0
  13. package/dist/src/lib/DeferredPromise.js +11 -0
  14. package/dist/src/lib/DeferredPromise.js.map +1 -0
  15. package/dist/src/lib/Expression.d.ts +66 -0
  16. package/dist/src/lib/Expression.d.ts.map +1 -0
  17. package/dist/src/lib/Expression.js +247 -0
  18. package/dist/src/lib/Expression.js.map +1 -0
  19. package/dist/src/lib/Interfaces.d.ts +1623 -0
  20. package/dist/src/lib/Interfaces.d.ts.map +1 -0
  21. package/dist/src/lib/Interfaces.js +44 -0
  22. package/dist/src/lib/Interfaces.js.map +1 -0
  23. package/dist/src/lib/LoggerProxy.d.ts +10 -0
  24. package/dist/src/lib/LoggerProxy.d.ts.map +1 -0
  25. package/dist/src/lib/LoggerProxy.js +40 -0
  26. package/dist/src/lib/LoggerProxy.js.map +1 -0
  27. package/dist/src/lib/MetadataUtils.d.ts +5 -0
  28. package/dist/src/lib/MetadataUtils.d.ts.map +1 -0
  29. package/dist/src/lib/MetadataUtils.js +27 -0
  30. package/dist/src/lib/MetadataUtils.js.map +1 -0
  31. package/dist/src/lib/NodeErrors.d.ts +83 -0
  32. package/dist/src/lib/NodeErrors.d.ts.map +1 -0
  33. package/dist/src/lib/NodeErrors.js +284 -0
  34. package/dist/src/lib/NodeErrors.js.map +1 -0
  35. package/dist/src/lib/NodeHelpers.d.ts +199 -0
  36. package/dist/src/lib/NodeHelpers.d.ts.map +1 -0
  37. package/dist/src/lib/NodeHelpers.js +1335 -0
  38. package/dist/src/lib/NodeHelpers.js.map +1 -0
  39. package/dist/src/lib/ObservableObject.d.ts +6 -0
  40. package/dist/src/lib/ObservableObject.d.ts.map +1 -0
  41. package/dist/src/lib/ObservableObject.js +61 -0
  42. package/dist/src/lib/ObservableObject.js.map +1 -0
  43. package/dist/src/lib/RoutingNode.d.ts +24 -0
  44. package/dist/src/lib/RoutingNode.d.ts.map +1 -0
  45. package/dist/src/lib/RoutingNode.js +528 -0
  46. package/dist/src/lib/RoutingNode.js.map +1 -0
  47. package/dist/src/lib/TelemetryHelpers.d.ts +4 -0
  48. package/dist/src/lib/TelemetryHelpers.d.ts.map +1 -0
  49. package/dist/src/lib/TelemetryHelpers.js +67 -0
  50. package/dist/src/lib/TelemetryHelpers.js.map +1 -0
  51. package/dist/src/lib/TypeValidation.d.ts +22 -0
  52. package/dist/src/lib/TypeValidation.d.ts.map +1 -0
  53. package/dist/src/lib/TypeValidation.js +376 -0
  54. package/dist/src/lib/TypeValidation.js.map +1 -0
  55. package/dist/src/lib/VersionedNodeType.d.ts +10 -0
  56. package/dist/src/lib/VersionedNodeType.d.ts.map +1 -0
  57. package/dist/src/lib/VersionedNodeType.js +24 -0
  58. package/dist/src/lib/VersionedNodeType.js.map +1 -0
  59. package/dist/src/lib/Workflow.d.ts +249 -0
  60. package/dist/src/lib/Workflow.d.ts.map +1 -0
  61. package/dist/src/lib/Workflow.js +899 -0
  62. package/dist/src/lib/Workflow.js.map +1 -0
  63. package/dist/src/lib/WorkflowDataProxy.d.ts +88 -0
  64. package/dist/src/lib/WorkflowDataProxy.d.ts.map +1 -0
  65. package/dist/src/lib/WorkflowDataProxy.js +583 -0
  66. package/dist/src/lib/WorkflowDataProxy.js.map +1 -0
  67. package/dist/src/lib/WorkflowErrors.d.ts +10 -0
  68. package/dist/src/lib/WorkflowErrors.d.ts.map +1 -0
  69. package/dist/src/lib/WorkflowErrors.js +18 -0
  70. package/dist/src/lib/WorkflowErrors.js.map +1 -0
  71. package/dist/src/lib/WorkflowHooks.d.ts +12 -0
  72. package/dist/src/lib/WorkflowHooks.d.ts.map +1 -0
  73. package/dist/src/lib/WorkflowHooks.js +32 -0
  74. package/dist/src/lib/WorkflowHooks.js.map +1 -0
  75. package/dist/src/lib/errors/base/base.error.d.ts +30 -0
  76. package/dist/src/lib/errors/base/base.error.d.ts.map +1 -0
  77. package/dist/src/lib/errors/base/base.error.js +47 -0
  78. package/dist/src/lib/errors/base/base.error.js.map +1 -0
  79. package/dist/src/lib/errors/base/operational.error.d.ts +16 -0
  80. package/dist/src/lib/errors/base/operational.error.d.ts.map +1 -0
  81. package/dist/src/lib/errors/base/operational.error.js +19 -0
  82. package/dist/src/lib/errors/base/operational.error.js.map +1 -0
  83. package/dist/src/lib/errors/error.types.d.ts +14 -0
  84. package/dist/src/lib/errors/error.types.d.ts.map +1 -0
  85. package/dist/src/lib/errors/error.types.js +3 -0
  86. package/dist/src/lib/errors/error.types.js.map +1 -0
  87. package/dist/src/lib/errors/index.d.ts +2 -0
  88. package/dist/src/lib/errors/index.d.ts.map +1 -0
  89. package/dist/src/lib/errors/index.js +6 -0
  90. package/dist/src/lib/errors/index.js.map +1 -0
  91. package/dist/src/lib/result.d.ts +20 -0
  92. package/dist/src/lib/result.d.ts.map +1 -0
  93. package/dist/src/lib/result.js +36 -0
  94. package/dist/src/lib/result.js.map +1 -0
  95. package/dist/src/lib/utils.d.ts +51 -0
  96. package/dist/src/lib/utils.d.ts.map +1 -0
  97. package/dist/src/lib/utils.js +119 -0
  98. package/dist/src/lib/utils.js.map +1 -0
  99. package/package.json +49 -35
  100. package/.eslintrc.json +0 -33
  101. package/eslint.config.js +0 -19
  102. package/jest.config.ts +0 -10
  103. package/project.json +0 -19
  104. package/src/index.ts +0 -33
  105. package/src/lib/Constants.ts +0 -124
  106. package/src/lib/DeferredPromise.ts +0 -14
  107. package/src/lib/Expression.ts +0 -375
  108. package/src/lib/Interfaces.ts +0 -2262
  109. package/src/lib/LoggerProxy.ts +0 -43
  110. package/src/lib/MetadataUtils.ts +0 -34
  111. package/src/lib/NodeErrors.ts +0 -332
  112. package/src/lib/NodeHelpers.ts +0 -1666
  113. package/src/lib/ObservableObject.ts +0 -77
  114. package/src/lib/RoutingNode.ts +0 -862
  115. package/src/lib/TelemetryHelpers.ts +0 -86
  116. package/src/lib/TypeValidation.ts +0 -431
  117. package/src/lib/VersionedNodeType.ts +0 -30
  118. package/src/lib/Workflow.ts +0 -1270
  119. package/src/lib/WorkflowDataProxy.ts +0 -708
  120. package/src/lib/WorkflowErrors.ts +0 -18
  121. package/src/lib/WorkflowHooks.ts +0 -51
  122. package/src/lib/errors/base/base.error.ts +0 -68
  123. package/src/lib/errors/base/operational.error.ts +0 -21
  124. package/src/lib/errors/error.types.ts +0 -14
  125. package/src/lib/errors/index.ts +0 -1
  126. package/src/lib/result.ts +0 -34
  127. package/src/lib/utils.ts +0 -166
  128. package/tests/Helpers.ts +0 -667
  129. package/tests/NodeHelpers.test.ts +0 -3053
  130. package/tests/ObservableObject.test.ts +0 -171
  131. package/tests/RoutingNode.test.ts +0 -1680
  132. package/tests/Workflow.test.ts +0 -1284
  133. package/tests/WorkflowDataProxy.test.ts +0 -199
  134. package/tsconfig.json +0 -27
  135. package/tsconfig.lib.json +0 -11
  136. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,22 @@
1
+ import { DateTime } from "luxon";
2
+ import type { FieldType, FormFieldsParameter, INodePropertyOptions, ValidationResult } from "./Interfaces";
3
+ export declare const tryToParseNumber: (value: unknown) => number;
4
+ export declare const tryToParseString: (value: unknown) => string;
5
+ export declare const tryToParseAlphanumericString: (value: unknown) => string;
6
+ export declare const tryToParseBoolean: (value: unknown) => value is boolean;
7
+ export declare const tryToParseDateTime: (value: unknown) => DateTime;
8
+ export declare const tryToParseTime: (value: unknown) => string;
9
+ export declare const tryToParseArray: (value: unknown) => unknown[];
10
+ export declare const tryToParseObject: (value: unknown) => object;
11
+ export declare const tryToParseJsonToFormFields: (value: unknown) => FormFieldsParameter;
12
+ export declare const getValueDescription: <T>(value: T) => string;
13
+ export declare const tryToParseUrl: (value: unknown) => string;
14
+ export declare const tryToParseJwt: (value: unknown) => string;
15
+ type ValidateFieldTypeOptions = Partial<{
16
+ valueOptions: INodePropertyOptions[];
17
+ strict: boolean;
18
+ parseStrings: boolean;
19
+ }>;
20
+ export declare function validateFieldType<K extends FieldType>(fieldName: string, value: unknown, type: K, options?: ValidateFieldTypeOptions): ValidationResult<K>;
21
+ export {};
22
+ //# sourceMappingURL=TypeValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeValidation.d.ts","sourceRoot":"","sources":["../../../src/lib/TypeValidation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAI3G,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,MAOjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,MAajD,CAAC;AACF,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,MAO7D,CAAC;AACF,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAqB3D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,QAsCnD,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAM/C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,OAAO,EAoBvD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,MAcjD,CAAC;AAgBF,eAAO,MAAM,0BAA0B,GAAI,OAAO,OAAO,KAAG,mBAuD3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,MAQjD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAS9C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAU9C,CAAC;AAEF,KAAK,wBAAwB,GAAG,OAAO,CAAC;IACvC,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACtB,CAAC,CAAC;AAGH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,SAAS,EACpD,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,wBAAwB,GAChC,gBAAgB,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.tryToParseJwt = exports.tryToParseUrl = exports.getValueDescription = exports.tryToParseJsonToFormFields = exports.tryToParseObject = exports.tryToParseArray = exports.tryToParseTime = exports.tryToParseDateTime = exports.tryToParseBoolean = exports.tryToParseAlphanumericString = exports.tryToParseString = exports.tryToParseNumber = void 0;
7
+ exports.validateFieldType = validateFieldType;
8
+ const isObject_1 = __importDefault(require("lodash/isObject"));
9
+ const luxon_1 = require("luxon");
10
+ const utils_1 = require("./utils");
11
+ const tryToParseNumber = (value) => {
12
+ const isValidNumber = !Number.isNaN(Number(value));
13
+ if (!isValidNumber) {
14
+ throw new Error("Failed to parse value to number");
15
+ }
16
+ return Number(value);
17
+ };
18
+ exports.tryToParseNumber = tryToParseNumber;
19
+ const tryToParseString = (value) => {
20
+ if (typeof value === "object")
21
+ return JSON.stringify(value);
22
+ if (typeof value === "undefined")
23
+ return "";
24
+ if (typeof value === "string" ||
25
+ typeof value === "bigint" ||
26
+ typeof value === "boolean" ||
27
+ typeof value === "number") {
28
+ return value.toString();
29
+ }
30
+ return String(value);
31
+ };
32
+ exports.tryToParseString = tryToParseString;
33
+ const tryToParseAlphanumericString = (value) => {
34
+ const parsed = (0, exports.tryToParseString)(value);
35
+ const regex = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
36
+ if (!regex.test(parsed)) {
37
+ throw new Error("Value is not a valid alphanumeric string");
38
+ }
39
+ return parsed;
40
+ };
41
+ exports.tryToParseAlphanumericString = tryToParseAlphanumericString;
42
+ const tryToParseBoolean = (value) => {
43
+ if (typeof value === "boolean") {
44
+ return value;
45
+ }
46
+ if (typeof value === "string" && ["true", "false"].includes(value.toLowerCase())) {
47
+ return value.toLowerCase() === "true";
48
+ }
49
+ // If value is not a empty string, try to parse it to a number
50
+ if (!(typeof value === "string" && value.trim() === "")) {
51
+ const num = Number(value);
52
+ if (num === 0) {
53
+ return false;
54
+ }
55
+ if (num === 1) {
56
+ return true;
57
+ }
58
+ }
59
+ throw new Error("Failed to parse value as boolean");
60
+ };
61
+ exports.tryToParseBoolean = tryToParseBoolean;
62
+ const tryToParseDateTime = (value) => {
63
+ if (value instanceof luxon_1.DateTime && value.isValid) {
64
+ return value;
65
+ }
66
+ if (value instanceof Date) {
67
+ const fromJSDate = luxon_1.DateTime.fromJSDate(value);
68
+ if (fromJSDate.isValid) {
69
+ return fromJSDate;
70
+ }
71
+ }
72
+ const dateString = String(value).trim();
73
+ // Rely on luxon to parse different date formats
74
+ const isoDate = luxon_1.DateTime.fromISO(dateString, { setZone: true });
75
+ if (isoDate.isValid) {
76
+ return isoDate;
77
+ }
78
+ const httpDate = luxon_1.DateTime.fromHTTP(dateString, { setZone: true });
79
+ if (httpDate.isValid) {
80
+ return httpDate;
81
+ }
82
+ const rfc2822Date = luxon_1.DateTime.fromRFC2822(dateString, { setZone: true });
83
+ if (rfc2822Date.isValid) {
84
+ return rfc2822Date;
85
+ }
86
+ const sqlDate = luxon_1.DateTime.fromSQL(dateString, { setZone: true });
87
+ if (sqlDate.isValid) {
88
+ return sqlDate;
89
+ }
90
+ const parsedDateTime = luxon_1.DateTime.fromMillis(Date.parse(dateString));
91
+ if (parsedDateTime.isValid) {
92
+ return parsedDateTime;
93
+ }
94
+ throw new Error("Value is not a valid date");
95
+ };
96
+ exports.tryToParseDateTime = tryToParseDateTime;
97
+ const tryToParseTime = (value) => {
98
+ const isTimeInput = /^\d{2}:\d{2}(:\d{2})?((-|\+)\d{4})?((-|\+)\d{1,2}(:\d{2})?)?$/s.test(String(value));
99
+ if (!isTimeInput) {
100
+ throw new Error("Value is not a valid time");
101
+ }
102
+ return String(value);
103
+ };
104
+ exports.tryToParseTime = tryToParseTime;
105
+ const tryToParseArray = (value) => {
106
+ try {
107
+ if (typeof value === "object" && Array.isArray(value)) {
108
+ return value;
109
+ }
110
+ let parsed;
111
+ try {
112
+ parsed = JSON.parse(String(value));
113
+ }
114
+ catch (_e) {
115
+ parsed = JSON.parse(String(value).replace(/'/g, '"'));
116
+ }
117
+ if (!Array.isArray(parsed)) {
118
+ throw new Error("Value is not a valid array");
119
+ }
120
+ return parsed;
121
+ }
122
+ catch (_e) {
123
+ throw new Error("Value is not a valid array");
124
+ }
125
+ };
126
+ exports.tryToParseArray = tryToParseArray;
127
+ const tryToParseObject = (value) => {
128
+ if (value && typeof value === "object" && !Array.isArray(value)) {
129
+ return value;
130
+ }
131
+ try {
132
+ const o = (0, utils_1.jsonParse)(String(value), { acceptJSObject: true });
133
+ if (typeof o !== "object" || Array.isArray(o)) {
134
+ throw new Error("Value is not a valid object");
135
+ }
136
+ return o;
137
+ }
138
+ catch (_e) {
139
+ throw new Error("Value is not a valid object");
140
+ }
141
+ };
142
+ exports.tryToParseObject = tryToParseObject;
143
+ const ALLOWED_FORM_FIELDS_KEYS = [
144
+ "fieldLabel",
145
+ "fieldType",
146
+ "placeholder",
147
+ "fieldOptions",
148
+ "multiselect",
149
+ "multipleFiles",
150
+ "acceptFileTypes",
151
+ "formatDate",
152
+ "requiredField",
153
+ ];
154
+ const ALLOWED_FIELD_TYPES = ["date", "dropdown", "email", "file", "number", "password", "text", "textarea"];
155
+ const tryToParseJsonToFormFields = (value) => {
156
+ const fields = [];
157
+ try {
158
+ const rawFields = (0, utils_1.jsonParse)(value, {
159
+ acceptJSObject: true,
160
+ });
161
+ for (const [index, field] of rawFields.entries()) {
162
+ for (const key of Object.keys(field)) {
163
+ if (!ALLOWED_FORM_FIELDS_KEYS.includes(key)) {
164
+ throw new Error(`Key '${key}' in field ${index} is not valid for form fields`);
165
+ }
166
+ if (key !== "fieldOptions" && !["string", "number", "boolean"].includes(typeof field[key])) {
167
+ field[key] = String(field[key]);
168
+ }
169
+ else if (typeof field[key] === "string") {
170
+ field[key] = field[key].replace(/</g, "&lt;").replace(/>/g, "&gt;");
171
+ }
172
+ if (key === "fieldType" && !ALLOWED_FIELD_TYPES.includes(field[key])) {
173
+ throw new Error(`Field type '${field[key]}' in field ${index} is not valid for form fields`);
174
+ }
175
+ if (key === "fieldOptions") {
176
+ if (Array.isArray(field[key])) {
177
+ field[key] = { values: field[key] };
178
+ }
179
+ if (typeof field[key] !== "object" || !field[key].values) {
180
+ throw new Error(`Field dropdown in field ${index} does has no 'values' property that contain an array of options`);
181
+ }
182
+ for (const [optionIndex, option] of field[key].values.entries()) {
183
+ if (Object.keys(option).length !== 1 || typeof option.option !== "string") {
184
+ throw new Error(`Field dropdown in field ${index} has an invalid option ${optionIndex}`);
185
+ }
186
+ }
187
+ }
188
+ }
189
+ fields.push(field);
190
+ }
191
+ }
192
+ catch (error) {
193
+ if (error instanceof Error)
194
+ throw error;
195
+ throw new Error("Value is not valid JSON");
196
+ }
197
+ return fields;
198
+ };
199
+ exports.tryToParseJsonToFormFields = tryToParseJsonToFormFields;
200
+ const getValueDescription = (value) => {
201
+ if (typeof value === "object") {
202
+ if (value === null)
203
+ return "'null'";
204
+ if (Array.isArray(value))
205
+ return "array";
206
+ return "object";
207
+ }
208
+ return `'${String(value)}'`;
209
+ };
210
+ exports.getValueDescription = getValueDescription;
211
+ const tryToParseUrl = (value) => {
212
+ if (typeof value === "string" && !value.includes("://")) {
213
+ value = `http://${value}`;
214
+ }
215
+ const urlPattern = /^(https?|ftp|file):\/\/\S+|www\.\S+/;
216
+ if (!urlPattern.test(String(value))) {
217
+ throw new Error(`The value "${String(value)}" is not a valid url.`);
218
+ }
219
+ return String(value);
220
+ };
221
+ exports.tryToParseUrl = tryToParseUrl;
222
+ const tryToParseJwt = (value) => {
223
+ const error = new Error(`The value "${String(value)}" is not a valid JWT token.`);
224
+ if (!value)
225
+ throw error;
226
+ const jwtPattern = /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/=]*$/;
227
+ if (!jwtPattern.test(String(value)))
228
+ throw error;
229
+ return String(value);
230
+ };
231
+ exports.tryToParseJwt = tryToParseJwt;
232
+ // eslint-disable-next-line complexity
233
+ function validateFieldType(fieldName, value, type, options = {}) {
234
+ if (value === null || value === undefined)
235
+ return { valid: true };
236
+ const strict = options.strict ?? false;
237
+ const valueOptions = options.valueOptions ?? [];
238
+ const parseStrings = options.parseStrings ?? false;
239
+ const defaultErrorMessage = `'${fieldName}' expects a ${type} but we got ${(0, exports.getValueDescription)(value)}`;
240
+ switch (type.toLowerCase()) {
241
+ case "string": {
242
+ if (!parseStrings)
243
+ return { valid: true, newValue: value };
244
+ try {
245
+ if (strict && typeof value !== "string") {
246
+ return { valid: false, errorMessage: defaultErrorMessage };
247
+ }
248
+ return { valid: true, newValue: (0, exports.tryToParseString)(value) };
249
+ }
250
+ catch (_e) {
251
+ return { valid: false, errorMessage: defaultErrorMessage };
252
+ }
253
+ }
254
+ case "string-alphanumeric": {
255
+ try {
256
+ return { valid: true, newValue: (0, exports.tryToParseAlphanumericString)(value) };
257
+ }
258
+ catch (_e) {
259
+ return {
260
+ valid: false,
261
+ errorMessage: "Value is not a valid alphanumeric string, only letters, numbers and underscore allowed",
262
+ };
263
+ }
264
+ }
265
+ case "number": {
266
+ try {
267
+ if (strict && typeof value !== "number") {
268
+ return { valid: false, errorMessage: defaultErrorMessage };
269
+ }
270
+ return { valid: true, newValue: (0, exports.tryToParseNumber)(value) };
271
+ }
272
+ catch (_e) {
273
+ return { valid: false, errorMessage: defaultErrorMessage };
274
+ }
275
+ }
276
+ case "boolean": {
277
+ try {
278
+ if (strict && typeof value !== "boolean") {
279
+ return { valid: false, errorMessage: defaultErrorMessage };
280
+ }
281
+ return { valid: true, newValue: (0, exports.tryToParseBoolean)(value) };
282
+ }
283
+ catch (_e) {
284
+ return { valid: false, errorMessage: defaultErrorMessage };
285
+ }
286
+ }
287
+ case "datetime": {
288
+ try {
289
+ return { valid: true, newValue: (0, exports.tryToParseDateTime)(value) };
290
+ }
291
+ catch (_e) {
292
+ const luxonDocsURL = "https://moment.github.io/luxon/api-docs/index.html#datetimefromformat";
293
+ const errorMessage = `${defaultErrorMessage} <br/><br/> Consider using <a href="${luxonDocsURL}" target="_blank"><code>DateTime.fromFormat</code></a> to work with custom date formats.`;
294
+ return { valid: false, errorMessage };
295
+ }
296
+ }
297
+ case "time": {
298
+ try {
299
+ return { valid: true, newValue: (0, exports.tryToParseTime)(value) };
300
+ }
301
+ catch (_e) {
302
+ return {
303
+ valid: false,
304
+ errorMessage: `'${fieldName}' expects time (hh:mm:(:ss)) but we got ${(0, exports.getValueDescription)(value)}.`,
305
+ };
306
+ }
307
+ }
308
+ case "object": {
309
+ try {
310
+ if (strict && !(0, isObject_1.default)(value)) {
311
+ return { valid: false, errorMessage: defaultErrorMessage };
312
+ }
313
+ return { valid: true, newValue: (0, exports.tryToParseObject)(value) };
314
+ }
315
+ catch (_e) {
316
+ return { valid: false, errorMessage: defaultErrorMessage };
317
+ }
318
+ }
319
+ case "array": {
320
+ if (strict && !Array.isArray(value)) {
321
+ return { valid: false, errorMessage: defaultErrorMessage };
322
+ }
323
+ try {
324
+ return { valid: true, newValue: (0, exports.tryToParseArray)(value) };
325
+ }
326
+ catch (_e) {
327
+ return { valid: false, errorMessage: defaultErrorMessage };
328
+ }
329
+ }
330
+ case "options": {
331
+ const validOptions = valueOptions.map((option) => option.value).join(", ");
332
+ const isValidOption = valueOptions.some((option) => option.value === value);
333
+ if (!isValidOption) {
334
+ return {
335
+ valid: false,
336
+ errorMessage: `'${fieldName}' expects one of the following values: [${validOptions}] but we got ${(0, exports.getValueDescription)(value)}`,
337
+ };
338
+ }
339
+ return { valid: true, newValue: value };
340
+ }
341
+ case "url": {
342
+ try {
343
+ return { valid: true, newValue: (0, exports.tryToParseUrl)(value) };
344
+ }
345
+ catch (_e) {
346
+ return { valid: false, errorMessage: defaultErrorMessage };
347
+ }
348
+ }
349
+ case "jwt": {
350
+ try {
351
+ return { valid: true, newValue: (0, exports.tryToParseJwt)(value) };
352
+ }
353
+ catch (_e) {
354
+ return {
355
+ valid: false,
356
+ errorMessage: "Value is not a valid JWT token",
357
+ };
358
+ }
359
+ }
360
+ case "form-fields": {
361
+ try {
362
+ return { valid: true, newValue: (0, exports.tryToParseJsonToFormFields)(value) };
363
+ }
364
+ catch (e) {
365
+ return {
366
+ valid: false,
367
+ errorMessage: e.message,
368
+ };
369
+ }
370
+ }
371
+ default: {
372
+ return { valid: true, newValue: value };
373
+ }
374
+ }
375
+ }
376
+ //# sourceMappingURL=TypeValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeValidation.js","sourceRoot":"","sources":["../../../src/lib/TypeValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { INodeType, INodeTypeBaseDescription, IVersionedNodeType } from "./Interfaces";
2
+ export declare class VersionedNodeType implements IVersionedNodeType {
3
+ currentVersion: number;
4
+ nodeVersions: IVersionedNodeType["nodeVersions"];
5
+ description: INodeTypeBaseDescription;
6
+ constructor(nodeVersions: IVersionedNodeType["nodeVersions"], description: INodeTypeBaseDescription);
7
+ getLatestVersion(): number;
8
+ getNodeType(version?: number): INodeType;
9
+ }
10
+ //# sourceMappingURL=VersionedNodeType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionedNodeType.d.ts","sourceRoot":"","sources":["../../../src/lib/VersionedNodeType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE5F,qBAAa,iBAAkB,YAAW,kBAAkB;IAC3D,cAAc,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAEjD,WAAW,EAAE,wBAAwB,CAAC;gBAE1B,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,wBAAwB;IAMnG,gBAAgB;IAIhB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS;CAMxC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VersionedNodeType = void 0;
4
+ class VersionedNodeType {
5
+ currentVersion;
6
+ nodeVersions;
7
+ description;
8
+ constructor(nodeVersions, description) {
9
+ this.nodeVersions = nodeVersions;
10
+ this.currentVersion = description.defaultVersion ?? this.getLatestVersion();
11
+ this.description = description;
12
+ }
13
+ getLatestVersion() {
14
+ return Math.max(...Object.keys(this.nodeVersions).map(Number));
15
+ }
16
+ getNodeType(version) {
17
+ if (version) {
18
+ return this.nodeVersions[version];
19
+ }
20
+ return this.nodeVersions[this.currentVersion];
21
+ }
22
+ }
23
+ exports.VersionedNodeType = VersionedNodeType;
24
+ //# sourceMappingURL=VersionedNodeType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionedNodeType.js","sourceRoot":"","sources":["../../../src/lib/VersionedNodeType.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAC7B,cAAc,CAAS;IAEvB,YAAY,CAAqC;IAEjD,WAAW,CAA2B;IAEtC,YAAY,YAAgD,EAAE,WAAqC;QAClG,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,WAAW,CAAC,OAAgB;QAC3B,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;CACD;AAvBD,8CAuBC"}