n8n-workflow 1.20.0 → 1.21.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 (42) hide show
  1. package/README.md +1 -1
  2. package/dist/ErrorReporterProxy.d.ts +1 -0
  3. package/dist/ErrorReporterProxy.js +2 -1
  4. package/dist/ErrorReporterProxy.js.map +1 -1
  5. package/dist/Interfaces.d.ts +42 -3
  6. package/dist/Interfaces.js.map +1 -1
  7. package/dist/NodeHelpers.d.ts +1 -9
  8. package/dist/NodeHelpers.js +19 -175
  9. package/dist/NodeHelpers.js.map +1 -1
  10. package/dist/NodeParameters/FilterParameter.d.ts +18 -0
  11. package/dist/NodeParameters/FilterParameter.js +285 -0
  12. package/dist/NodeParameters/FilterParameter.js.map +1 -0
  13. package/dist/TypeValidation.d.ts +17 -0
  14. package/dist/TypeValidation.js +245 -0
  15. package/dist/TypeValidation.js.map +1 -0
  16. package/dist/build.tsbuildinfo +1 -1
  17. package/dist/errors/abstract/execution-base.error.d.ts +1 -2
  18. package/dist/errors/abstract/execution-base.error.js +0 -1
  19. package/dist/errors/abstract/execution-base.error.js.map +1 -1
  20. package/dist/errors/application.error.d.ts +3 -2
  21. package/dist/errors/application.error.js +13 -1
  22. package/dist/errors/application.error.js.map +1 -1
  23. package/dist/errors/node-api.error.d.ts +4 -3
  24. package/dist/errors/node-api.error.js +4 -4
  25. package/dist/errors/node-api.error.js.map +1 -1
  26. package/dist/errors/node-operation.error.js +2 -2
  27. package/dist/errors/node-operation.error.js.map +1 -1
  28. package/dist/errors/webhook-taken.error.js +1 -1
  29. package/dist/errors/webhook-taken.error.js.map +1 -1
  30. package/dist/errors/workflow-activation.error.d.ts +4 -3
  31. package/dist/errors/workflow-activation.error.js +3 -3
  32. package/dist/errors/workflow-activation.error.js.map +1 -1
  33. package/dist/errors/workflow-operation.error.d.ts +1 -1
  34. package/dist/errors/workflow-operation.error.js +4 -2
  35. package/dist/errors/workflow-operation.error.js.map +1 -1
  36. package/dist/index.d.ts +3 -1
  37. package/dist/index.js +4 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/type-guards.d.ts +2 -1
  40. package/dist/type-guards.js +5 -1
  41. package/dist/type-guards.js.map +1 -1
  42. package/package.json +2 -1
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.validateFilterParameter = exports.executeFilter = exports.executeFilterCondition = exports.FilterError = void 0;
27
+ const TypeValidation_1 = require("../TypeValidation");
28
+ const LoggerProxy = __importStar(require("../LoggerProxy"));
29
+ class FilterError extends Error {
30
+ constructor(message, description) {
31
+ super(message);
32
+ this.description = description;
33
+ }
34
+ }
35
+ exports.FilterError = FilterError;
36
+ function parseSingleFilterValue(value, type, strict = false) {
37
+ return type === 'any' || value === null || value === undefined || value === ''
38
+ ? { valid: true, newValue: value }
39
+ : (0, TypeValidation_1.validateFieldType)('filter', value, type, { strict, parseStrings: true });
40
+ }
41
+ function parseFilterConditionValues(condition, options, metadata) {
42
+ var _a, _b, _c, _d;
43
+ const index = (_a = metadata.index) !== null && _a !== void 0 ? _a : 0;
44
+ const itemIndex = (_b = metadata.itemIndex) !== null && _b !== void 0 ? _b : 0;
45
+ const errorFormat = (_c = metadata.errorFormat) !== null && _c !== void 0 ? _c : 'full';
46
+ const strict = options.typeValidation === 'strict';
47
+ const { operator } = condition;
48
+ const rightType = (_d = operator.rightType) !== null && _d !== void 0 ? _d : operator.type;
49
+ const parsedLeftValue = parseSingleFilterValue(condition.leftValue, operator.type, strict);
50
+ const parsedRightValue = parseSingleFilterValue(condition.rightValue, rightType, strict);
51
+ const leftValid = parsedLeftValue.valid ||
52
+ (metadata.unresolvedExpressions &&
53
+ typeof condition.leftValue === 'string' &&
54
+ condition.leftValue.startsWith('='));
55
+ const rightValid = parsedRightValue.valid ||
56
+ !!operator.singleValue ||
57
+ (metadata.unresolvedExpressions &&
58
+ typeof condition.rightValue === 'string' &&
59
+ condition.rightValue.startsWith('='));
60
+ const leftValueString = String(condition.leftValue);
61
+ const rightValueString = String(condition.rightValue);
62
+ const errorDescription = 'Try to change the operator, or change the type with an expression';
63
+ const inCondition = errorFormat === 'full' ? ` in condition ${index + 1} ` : ' ';
64
+ const itemSuffix = `[item ${itemIndex}]`;
65
+ if (!leftValid && !rightValid) {
66
+ const providedValues = 'The provided values';
67
+ let types = `'${operator.type}'`;
68
+ if (rightType !== operator.type) {
69
+ types = `'${operator.type}' and '${rightType}' respectively`;
70
+ }
71
+ if (strict) {
72
+ return {
73
+ ok: false,
74
+ error: new FilterError(`${providedValues} '${leftValueString}' and '${rightValueString}'${inCondition}are not of the expected type ${types} ${itemSuffix}`, errorDescription),
75
+ };
76
+ }
77
+ return {
78
+ ok: false,
79
+ error: new FilterError(`${providedValues} '${leftValueString}' and '${rightValueString}'${inCondition}cannot be converted to the expected type ${types} ${itemSuffix}`, errorDescription),
80
+ };
81
+ }
82
+ const composeInvalidTypeMessage = (field, type, value) => {
83
+ const fieldNumber = field === 'left' ? 1 : 2;
84
+ if (strict) {
85
+ return `The provided value ${fieldNumber} '${value}'${inCondition}is not of the expected type '${type}' ${itemSuffix}`;
86
+ }
87
+ return `The provided value ${fieldNumber} '${value}'${inCondition}cannot be converted to the expected type '${type}' ${itemSuffix}`;
88
+ };
89
+ if (!leftValid) {
90
+ return {
91
+ ok: false,
92
+ error: new FilterError(composeInvalidTypeMessage('left', operator.type, leftValueString), errorDescription),
93
+ };
94
+ }
95
+ if (!rightValid) {
96
+ return {
97
+ ok: false,
98
+ error: new FilterError(composeInvalidTypeMessage('right', rightType, rightValueString), errorDescription),
99
+ };
100
+ }
101
+ return { ok: true, result: { left: parsedLeftValue.newValue, right: parsedRightValue.newValue } };
102
+ }
103
+ function executeFilterCondition(condition, filterOptions, metadata = {}) {
104
+ const ignoreCase = !filterOptions.caseSensitive;
105
+ const { operator } = condition;
106
+ const parsedValues = parseFilterConditionValues(condition, filterOptions, metadata);
107
+ if (!parsedValues.ok) {
108
+ throw parsedValues.error;
109
+ }
110
+ let { left: leftValue, right: rightValue } = parsedValues.result;
111
+ const exists = leftValue !== undefined && leftValue !== null;
112
+ if (condition.operator.operation === 'exists') {
113
+ return exists;
114
+ }
115
+ else if (condition.operator.operation === 'notExists') {
116
+ return !exists;
117
+ }
118
+ switch (operator.type) {
119
+ case 'string': {
120
+ if (ignoreCase) {
121
+ if (typeof leftValue === 'string') {
122
+ leftValue = leftValue.toLocaleLowerCase();
123
+ }
124
+ if (typeof rightValue === 'string' &&
125
+ !(condition.operator.operation === 'regex' || condition.operator.operation === 'notRegex')) {
126
+ rightValue = rightValue.toLocaleLowerCase();
127
+ }
128
+ }
129
+ const left = (leftValue !== null && leftValue !== void 0 ? leftValue : '');
130
+ const right = (rightValue !== null && rightValue !== void 0 ? rightValue : '');
131
+ switch (condition.operator.operation) {
132
+ case 'equals':
133
+ return left === right;
134
+ case 'notEquals':
135
+ return left !== right;
136
+ case 'contains':
137
+ return left.includes(right);
138
+ case 'notContains':
139
+ return !left.includes(right);
140
+ case 'startsWith':
141
+ return left.startsWith(right);
142
+ case 'notStartsWith':
143
+ return !left.startsWith(right);
144
+ case 'endsWith':
145
+ return left.endsWith(right);
146
+ case 'notEndsWith':
147
+ return !left.endsWith(right);
148
+ case 'regex':
149
+ return new RegExp(right).test(left);
150
+ case 'notRegex':
151
+ return !new RegExp(right).test(left);
152
+ }
153
+ break;
154
+ }
155
+ case 'number': {
156
+ const left = leftValue;
157
+ const right = rightValue;
158
+ switch (condition.operator.operation) {
159
+ case 'equals':
160
+ return left === right;
161
+ case 'notEquals':
162
+ return left !== right;
163
+ case 'gt':
164
+ return left > right;
165
+ case 'lt':
166
+ return left < right;
167
+ case 'gte':
168
+ return left >= right;
169
+ case 'lte':
170
+ return left <= right;
171
+ }
172
+ }
173
+ case 'dateTime': {
174
+ const left = leftValue;
175
+ const right = rightValue;
176
+ if (!left || !right) {
177
+ return false;
178
+ }
179
+ switch (condition.operator.operation) {
180
+ case 'equals':
181
+ return left.toMillis() === right.toMillis();
182
+ case 'notEquals':
183
+ return left.toMillis() !== right.toMillis();
184
+ case 'after':
185
+ return left.toMillis() > right.toMillis();
186
+ case 'before':
187
+ return left.toMillis() < right.toMillis();
188
+ case 'afterOrEquals':
189
+ return left.toMillis() >= right.toMillis();
190
+ case 'beforeOrEquals':
191
+ return left.toMillis() <= right.toMillis();
192
+ }
193
+ }
194
+ case 'boolean': {
195
+ const left = leftValue;
196
+ const right = rightValue;
197
+ switch (condition.operator.operation) {
198
+ case 'true':
199
+ return left;
200
+ case 'false':
201
+ return !left;
202
+ case 'equals':
203
+ return left === right;
204
+ case 'notEquals':
205
+ return left !== right;
206
+ }
207
+ }
208
+ case 'array': {
209
+ const left = (leftValue !== null && leftValue !== void 0 ? leftValue : []);
210
+ const rightNumber = rightValue;
211
+ switch (condition.operator.operation) {
212
+ case 'contains':
213
+ if (ignoreCase && typeof rightValue === 'string') {
214
+ rightValue = rightValue.toLocaleLowerCase();
215
+ }
216
+ return left.includes(rightValue);
217
+ case 'notContains':
218
+ if (ignoreCase && typeof rightValue === 'string') {
219
+ rightValue = rightValue.toLocaleLowerCase();
220
+ }
221
+ return !left.includes(rightValue);
222
+ case 'lengthEquals':
223
+ return left.length === rightNumber;
224
+ case 'lengthNotEquals':
225
+ return left.length !== rightNumber;
226
+ case 'lengthGt':
227
+ return left.length > rightNumber;
228
+ case 'lengthLt':
229
+ return left.length < rightNumber;
230
+ case 'lengthGte':
231
+ return left.length >= rightNumber;
232
+ case 'lengthLte':
233
+ return left.length <= rightNumber;
234
+ case 'empty':
235
+ return left.length === 0;
236
+ case 'notEmpty':
237
+ return left.length !== 0;
238
+ }
239
+ }
240
+ case 'object': {
241
+ const left = leftValue;
242
+ switch (condition.operator.operation) {
243
+ case 'empty':
244
+ return !!left && Object.keys(left).length === 0;
245
+ case 'notEmpty':
246
+ return !!left && Object.keys(left).length !== 0;
247
+ }
248
+ }
249
+ }
250
+ LoggerProxy.warn(`Unknown filter parameter operator "${operator.type}:${operator.operation}"`);
251
+ return false;
252
+ }
253
+ exports.executeFilterCondition = executeFilterCondition;
254
+ function executeFilter(value, { itemIndex } = {}) {
255
+ const conditionPass = (condition, index) => executeFilterCondition(condition, value.options, { index, itemIndex });
256
+ if (value.combinator === 'and') {
257
+ return value.conditions.every(conditionPass);
258
+ }
259
+ else if (value.combinator === 'or') {
260
+ return value.conditions.some(conditionPass);
261
+ }
262
+ LoggerProxy.warn(`Unknown filter combinator "${value.combinator}"`);
263
+ return false;
264
+ }
265
+ exports.executeFilter = executeFilter;
266
+ const validateFilterParameter = (nodeProperties, value) => {
267
+ return value.conditions.reduce((issues, condition, index) => {
268
+ const key = `${nodeProperties.name}.${index}`;
269
+ try {
270
+ parseFilterConditionValues(condition, value.options, {
271
+ index,
272
+ unresolvedExpressions: true,
273
+ errorFormat: 'inline',
274
+ });
275
+ }
276
+ catch (error) {
277
+ if (error instanceof FilterError) {
278
+ issues[key].push(error.message);
279
+ }
280
+ }
281
+ return issues;
282
+ }, {});
283
+ };
284
+ exports.validateFilterParameter = validateFilterParameter;
285
+ //# sourceMappingURL=FilterParameter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterParameter.js","sourceRoot":"","sources":["../../src/NodeParameters/FilterParameter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { DateTime } from 'luxon';
2
+ import type { FieldType, INodePropertyOptions, ValidationResult } from './Interfaces';
3
+ export declare const tryToParseNumber: (value: unknown) => number;
4
+ export declare const tryToParseString: (value: unknown) => string;
5
+ export declare const tryToParseBoolean: (value: unknown) => value is boolean;
6
+ export declare const tryToParseDateTime: (value: unknown) => DateTime;
7
+ export declare const tryToParseTime: (value: unknown) => string;
8
+ export declare const tryToParseArray: (value: unknown) => unknown[];
9
+ export declare const tryToParseObject: (value: unknown) => object;
10
+ export declare const tryToParseUrl: (value: unknown) => string;
11
+ type ValidateFieldTypeOptions = Partial<{
12
+ valueOptions: INodePropertyOptions[];
13
+ strict: boolean;
14
+ parseStrings: boolean;
15
+ }>;
16
+ export declare const validateFieldType: (fieldName: string, value: unknown, type: FieldType, options?: ValidateFieldTypeOptions) => ValidationResult;
17
+ export {};
@@ -0,0 +1,245 @@
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.validateFieldType = exports.tryToParseUrl = exports.tryToParseObject = exports.tryToParseArray = exports.tryToParseTime = exports.tryToParseDateTime = exports.tryToParseBoolean = exports.tryToParseString = exports.tryToParseNumber = void 0;
7
+ const luxon_1 = require("luxon");
8
+ const isObject_1 = __importDefault(require("lodash/isObject"));
9
+ const errors_1 = require("./errors");
10
+ const tryToParseNumber = (value) => {
11
+ const isValidNumber = !isNaN(Number(value));
12
+ if (!isValidNumber) {
13
+ throw new errors_1.ApplicationError('Failed to parse value to number', { extra: { value } });
14
+ }
15
+ return Number(value);
16
+ };
17
+ exports.tryToParseNumber = tryToParseNumber;
18
+ const tryToParseString = (value) => {
19
+ if (typeof value === 'object')
20
+ return JSON.stringify(value);
21
+ if (typeof value === 'undefined')
22
+ return '';
23
+ if (typeof value === 'string' ||
24
+ typeof value === 'bigint' ||
25
+ typeof value === 'boolean' ||
26
+ typeof value === 'number') {
27
+ return value.toString();
28
+ }
29
+ return String(value);
30
+ };
31
+ exports.tryToParseString = tryToParseString;
32
+ const tryToParseBoolean = (value) => {
33
+ if (typeof value === 'boolean') {
34
+ return value;
35
+ }
36
+ if (typeof value === 'string' && ['true', 'false'].includes(value.toLowerCase())) {
37
+ return value.toLowerCase() === 'true';
38
+ }
39
+ if (!(typeof value === 'string' && value.trim() === '')) {
40
+ const num = Number(value);
41
+ if (num === 0) {
42
+ return false;
43
+ }
44
+ else if (num === 1) {
45
+ return true;
46
+ }
47
+ }
48
+ throw new errors_1.ApplicationError('Failed to parse value as boolean', {
49
+ extra: { value },
50
+ });
51
+ };
52
+ exports.tryToParseBoolean = tryToParseBoolean;
53
+ const tryToParseDateTime = (value) => {
54
+ const dateString = String(value).trim();
55
+ const isoDate = luxon_1.DateTime.fromISO(dateString, { setZone: true });
56
+ if (isoDate.isValid) {
57
+ return isoDate;
58
+ }
59
+ const httpDate = luxon_1.DateTime.fromHTTP(dateString, { setZone: true });
60
+ if (httpDate.isValid) {
61
+ return httpDate;
62
+ }
63
+ const rfc2822Date = luxon_1.DateTime.fromRFC2822(dateString, { setZone: true });
64
+ if (rfc2822Date.isValid) {
65
+ return rfc2822Date;
66
+ }
67
+ const sqlDate = luxon_1.DateTime.fromSQL(dateString, { setZone: true });
68
+ if (sqlDate.isValid) {
69
+ return sqlDate;
70
+ }
71
+ throw new errors_1.ApplicationError('Value is not a valid date', { extra: { dateString } });
72
+ };
73
+ exports.tryToParseDateTime = tryToParseDateTime;
74
+ const tryToParseTime = (value) => {
75
+ const isTimeInput = /^\d{2}:\d{2}(:\d{2})?((\-|\+)\d{4})?((\-|\+)\d{1,2}(:\d{2})?)?$/s.test(String(value));
76
+ if (!isTimeInput) {
77
+ throw new errors_1.ApplicationError('Value is not a valid time', { extra: { value } });
78
+ }
79
+ return String(value);
80
+ };
81
+ exports.tryToParseTime = tryToParseTime;
82
+ const tryToParseArray = (value) => {
83
+ try {
84
+ if (typeof value === 'object' && Array.isArray(value)) {
85
+ return value;
86
+ }
87
+ let parsed;
88
+ try {
89
+ parsed = JSON.parse(String(value));
90
+ }
91
+ catch (e) {
92
+ parsed = JSON.parse(String(value).replace(/'/g, '"'));
93
+ }
94
+ if (!Array.isArray(parsed)) {
95
+ throw new errors_1.ApplicationError('Value is not a valid array', { extra: { value } });
96
+ }
97
+ return parsed;
98
+ }
99
+ catch (e) {
100
+ throw new errors_1.ApplicationError('Value is not a valid array', { extra: { value } });
101
+ }
102
+ };
103
+ exports.tryToParseArray = tryToParseArray;
104
+ const tryToParseObject = (value) => {
105
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
106
+ return value;
107
+ }
108
+ try {
109
+ const o = JSON.parse(String(value));
110
+ if (typeof o !== 'object' || Array.isArray(o)) {
111
+ throw new errors_1.ApplicationError('Value is not a valid object', { extra: { value } });
112
+ }
113
+ return o;
114
+ }
115
+ catch (e) {
116
+ throw new errors_1.ApplicationError('Value is not a valid object', { extra: { value } });
117
+ }
118
+ };
119
+ exports.tryToParseObject = tryToParseObject;
120
+ const tryToParseUrl = (value) => {
121
+ if (typeof value === 'string' && !value.includes('://')) {
122
+ value = `http://${value}`;
123
+ }
124
+ const urlPattern = /^(https?|ftp|file):\/\/\S+|www\.\S+/;
125
+ if (!urlPattern.test(String(value))) {
126
+ throw new errors_1.ApplicationError(`The value "${String(value)}" is not a valid url.`, {
127
+ extra: { value },
128
+ });
129
+ }
130
+ return String(value);
131
+ };
132
+ exports.tryToParseUrl = tryToParseUrl;
133
+ const validateFieldType = (fieldName, value, type, options = {}) => {
134
+ var _a, _b, _c;
135
+ if (value === null || value === undefined)
136
+ return { valid: true };
137
+ const strict = (_a = options.strict) !== null && _a !== void 0 ? _a : false;
138
+ const valueOptions = (_b = options.valueOptions) !== null && _b !== void 0 ? _b : [];
139
+ const parseStrings = (_c = options.parseStrings) !== null && _c !== void 0 ? _c : false;
140
+ const defaultErrorMessage = `'${fieldName}' expects a ${type} but we got '${String(value)}'`;
141
+ switch (type.toLowerCase()) {
142
+ case 'string': {
143
+ if (!parseStrings)
144
+ return { valid: true, newValue: value };
145
+ try {
146
+ if (strict && typeof value !== 'string') {
147
+ return { valid: false, errorMessage: defaultErrorMessage };
148
+ }
149
+ return { valid: true, newValue: (0, exports.tryToParseString)(value) };
150
+ }
151
+ catch (e) {
152
+ return { valid: false, errorMessage: defaultErrorMessage };
153
+ }
154
+ }
155
+ case 'number': {
156
+ try {
157
+ if (strict && typeof value !== 'number') {
158
+ return { valid: false, errorMessage: defaultErrorMessage };
159
+ }
160
+ return { valid: true, newValue: (0, exports.tryToParseNumber)(value) };
161
+ }
162
+ catch (e) {
163
+ return { valid: false, errorMessage: defaultErrorMessage };
164
+ }
165
+ }
166
+ case 'boolean': {
167
+ try {
168
+ if (strict && typeof value !== 'boolean') {
169
+ return { valid: false, errorMessage: defaultErrorMessage };
170
+ }
171
+ return { valid: true, newValue: (0, exports.tryToParseBoolean)(value) };
172
+ }
173
+ catch (e) {
174
+ return { valid: false, errorMessage: defaultErrorMessage };
175
+ }
176
+ }
177
+ case 'datetime': {
178
+ try {
179
+ return { valid: true, newValue: (0, exports.tryToParseDateTime)(value) };
180
+ }
181
+ catch (e) {
182
+ const luxonDocsURL = 'https://moment.github.io/luxon/api-docs/index.html#datetimefromformat';
183
+ const errorMessage = `${defaultErrorMessage} <br/><br/> Consider using <a href="${luxonDocsURL}" target="_blank"><code>DateTime.fromFormat</code></a> to work with custom date formats.`;
184
+ return { valid: false, errorMessage };
185
+ }
186
+ }
187
+ case 'time': {
188
+ try {
189
+ return { valid: true, newValue: (0, exports.tryToParseTime)(value) };
190
+ }
191
+ catch (e) {
192
+ return {
193
+ valid: false,
194
+ errorMessage: `'${fieldName}' expects time (hh:mm:(:ss)) but we got '${String(value)}'.`,
195
+ };
196
+ }
197
+ }
198
+ case 'object': {
199
+ try {
200
+ if (strict && !(0, isObject_1.default)(value)) {
201
+ return { valid: false, errorMessage: defaultErrorMessage };
202
+ }
203
+ return { valid: true, newValue: (0, exports.tryToParseObject)(value) };
204
+ }
205
+ catch (e) {
206
+ return { valid: false, errorMessage: defaultErrorMessage };
207
+ }
208
+ }
209
+ case 'array': {
210
+ if (strict && !Array.isArray(value)) {
211
+ return { valid: false, errorMessage: defaultErrorMessage };
212
+ }
213
+ try {
214
+ return { valid: true, newValue: (0, exports.tryToParseArray)(value) };
215
+ }
216
+ catch (e) {
217
+ return { valid: false, errorMessage: defaultErrorMessage };
218
+ }
219
+ }
220
+ case 'options': {
221
+ const validOptions = valueOptions.map((option) => option.value).join(', ');
222
+ const isValidOption = valueOptions.some((option) => option.value === value);
223
+ if (!isValidOption) {
224
+ return {
225
+ valid: false,
226
+ errorMessage: `'${fieldName}' expects one of the following values: [${validOptions}] but we got '${String(value)}'`,
227
+ };
228
+ }
229
+ return { valid: true, newValue: value };
230
+ }
231
+ case 'url': {
232
+ try {
233
+ return { valid: true, newValue: (0, exports.tryToParseUrl)(value) };
234
+ }
235
+ catch (e) {
236
+ return { valid: false, errorMessage: defaultErrorMessage };
237
+ }
238
+ }
239
+ default: {
240
+ return { valid: true, newValue: value };
241
+ }
242
+ }
243
+ };
244
+ exports.validateFieldType = validateFieldType;
245
+ //# sourceMappingURL=TypeValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeValidation.js","sourceRoot":"","sources":["../src/TypeValidation.ts"],"names":[],"mappings":"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"}