n8n-workflow
Advanced tools
Comparing version 0.150.0 to 0.151.0
@@ -27,3 +27,3 @@ /// <reference types="node" /> | ||
export { isObjectEmpty, deepCopy, jsonParse, jsonStringify, sleep, fileTypeFromMimeType, assert, } from './utils'; | ||
export { isINodeProperties, isINodePropertyOptions, isINodePropertyCollection, isINodePropertiesList, isINodePropertyCollectionList, isINodePropertyOptionsList, } from './type-guards'; | ||
export { isINodeProperties, isINodePropertyOptions, isINodePropertyCollection, isINodePropertiesList, isINodePropertyCollectionList, isINodePropertyOptionsList, isResourceMapperValue, } from './type-guards'; | ||
export { ExpressionExtensions } from './Extensions'; | ||
@@ -30,0 +30,0 @@ export { NativeMethods } from './NativeMethods'; |
@@ -29,3 +29,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.NativeMethods = exports.ExpressionExtensions = exports.isINodePropertyOptionsList = exports.isINodePropertyCollectionList = exports.isINodePropertiesList = exports.isINodePropertyCollection = exports.isINodePropertyOptions = exports.isINodeProperties = exports.assert = exports.fileTypeFromMimeType = exports.sleep = exports.jsonStringify = exports.jsonParse = exports.deepCopy = exports.isObjectEmpty = exports.TelemetryHelpers = exports.ObservableObject = exports.NodeHelpers = exports.LoggerProxy = exports.ErrorReporterProxy = void 0; | ||
exports.NativeMethods = exports.ExpressionExtensions = exports.isResourceMapperValue = exports.isINodePropertyOptionsList = exports.isINodePropertyCollectionList = exports.isINodePropertiesList = exports.isINodePropertyCollection = exports.isINodePropertyOptions = exports.isINodeProperties = exports.assert = exports.fileTypeFromMimeType = exports.sleep = exports.jsonStringify = exports.jsonParse = exports.deepCopy = exports.isObjectEmpty = exports.TelemetryHelpers = exports.ObservableObject = exports.NodeHelpers = exports.LoggerProxy = exports.ErrorReporterProxy = void 0; | ||
const LoggerProxy = __importStar(require("./LoggerProxy")); | ||
@@ -73,2 +73,3 @@ exports.LoggerProxy = LoggerProxy; | ||
Object.defineProperty(exports, "isINodePropertyOptionsList", { enumerable: true, get: function () { return type_guards_1.isINodePropertyOptionsList; } }); | ||
Object.defineProperty(exports, "isResourceMapperValue", { enumerable: true, get: function () { return type_guards_1.isResourceMapperValue; } }); | ||
var Extensions_1 = require("./Extensions"); | ||
@@ -75,0 +76,0 @@ Object.defineProperty(exports, "ExpressionExtensions", { enumerable: true, get: function () { return Extensions_1.ExpressionExtensions; } }); |
@@ -592,7 +592,7 @@ /// <reference types="node" /> | ||
} | ||
export type NodeParameterValueType = NodeParameterValue | INodeParameters | INodeParameterResourceLocator | NodeParameterValue[] | INodeParameters[] | INodeParameterResourceLocator[]; | ||
export type NodeParameterValueType = NodeParameterValue | INodeParameters | INodeParameterResourceLocator | NodeParameterValue[] | INodeParameters[] | INodeParameterResourceLocator[] | ResourceMapperValue[]; | ||
export interface INodeParameters { | ||
[key: string]: NodeParameterValueType; | ||
} | ||
export type NodePropertyTypes = 'boolean' | 'collection' | 'color' | 'dateTime' | 'fixedCollection' | 'hidden' | 'json' | 'notice' | 'multiOptions' | 'number' | 'options' | 'string' | 'credentialsSelect' | 'resourceLocator' | 'curlImport'; | ||
export type NodePropertyTypes = 'boolean' | 'collection' | 'color' | 'dateTime' | 'fixedCollection' | 'hidden' | 'json' | 'notice' | 'multiOptions' | 'number' | 'options' | 'string' | 'credentialsSelect' | 'resourceLocator' | 'curlImport' | 'resourceMapper'; | ||
export type CodeAutocompleteTypes = 'function' | 'functionItem'; | ||
@@ -629,4 +629,22 @@ export type EditorType = 'code' | 'codeNodeEditor' | 'htmlEditor' | 'sqlEditor' | 'json'; | ||
expirable?: boolean; | ||
resourceMapper?: ResourceMapperTypeOptions; | ||
[key: string]: any; | ||
} | ||
export interface ResourceMapperTypeOptions { | ||
resourceMapperMethod: string; | ||
mode: 'add' | 'update' | 'upsert'; | ||
fieldWords?: { | ||
singular: string; | ||
plural: string; | ||
}; | ||
addAllFields?: boolean; | ||
noFieldsError?: string; | ||
multiKeyMatch?: boolean; | ||
supportAutoMap?: boolean; | ||
matchingFieldsLabels?: { | ||
title?: string; | ||
description?: string; | ||
hint?: string; | ||
}; | ||
} | ||
export interface IDisplayOptions { | ||
@@ -765,2 +783,5 @@ hide?: { | ||
}; | ||
resourceMapping?: { | ||
[functionName: string]: (this: ILoadOptionsFunctions) => Promise<ResourceMapperFields>; | ||
}; | ||
}; | ||
@@ -1345,2 +1366,30 @@ webhookMethods?: { | ||
} | ||
export interface ResourceMapperFields { | ||
fields: ResourceMapperField[]; | ||
} | ||
export interface ResourceMapperField { | ||
id: string; | ||
displayName: string; | ||
defaultMatch: boolean; | ||
canBeUsedToMatch?: boolean; | ||
required: boolean; | ||
display: boolean; | ||
type?: FieldType; | ||
removed?: boolean; | ||
options?: INodePropertyOptions[]; | ||
} | ||
export type FieldType = 'string' | 'number' | 'dateTime' | 'boolean' | 'time' | 'array' | 'object' | 'options'; | ||
export type ValidationResult = { | ||
valid: boolean; | ||
errorMessage?: string; | ||
newValue?: string | number | boolean | object | null | undefined; | ||
}; | ||
export type ResourceMapperValue = { | ||
mappingMode: string; | ||
value: { | ||
[key: string]: string | number | boolean | null; | ||
} | null; | ||
matchingColumns: string[]; | ||
schema: ResourceMapperField[]; | ||
}; | ||
export interface ExecutionOptions { | ||
@@ -1369,2 +1418,9 @@ limit?: number; | ||
} | ||
export interface IUserSettings { | ||
isOnboarded?: boolean; | ||
showUserActivationSurvey?: boolean; | ||
firstSuccessfulWorkflowId?: string; | ||
userActivated?: boolean; | ||
allowSSOManualLogin?: boolean; | ||
} | ||
export interface IPublicApiSettings { | ||
@@ -1371,0 +1427,0 @@ enabled: boolean; |
@@ -1,3 +0,4 @@ | ||
import type { IContextObject, INode, INodeCredentialDescription, INodeExecutionData, INodeIssues, INodeParameterResourceLocator, INodeParameters, INodeProperties, INodePropertyCollection, INodePropertyMode, INodeType, IVersionedNodeType, IParameterDependencies, IRunExecutionData, IWebhookData, IWorkflowExecuteAdditionalData, NodeParameterValue } from './Interfaces'; | ||
import type { IContextObject, INode, INodeCredentialDescription, INodeExecutionData, INodeIssues, INodeParameterResourceLocator, INodeParameters, INodeProperties, INodePropertyCollection, INodePropertyMode, INodeType, IVersionedNodeType, IParameterDependencies, IRunExecutionData, IWebhookData, IWorkflowExecuteAdditionalData, NodeParameterValue, FieldType, INodePropertyOptions, ResourceMapperValue, ValidationResult } from './Interfaces'; | ||
import type { Workflow } from './Workflow'; | ||
import { DateTime } from 'luxon'; | ||
export declare const cronNodeOptions: INodePropertyCollection[]; | ||
@@ -16,3 +17,11 @@ export declare function applySpecialNodeParameters(nodeType: INodeType): void; | ||
export declare function nodeIssuesToString(issues: INodeIssues, node?: INode): string[]; | ||
export declare const validateFieldType: (fieldName: string, value: unknown, type: FieldType, options?: INodePropertyOptions[]) => ValidationResult; | ||
export declare const tryToParseNumber: (value: unknown) => number; | ||
export declare const tryToParseBoolean: (value: unknown) => value is boolean; | ||
export declare const tryToParseDateTime: (value: unknown) => DateTime; | ||
export declare const tryToParseTime: (value: unknown) => string; | ||
export declare const tryToParseArray: (value: unknown) => unknown[]; | ||
export declare const tryToParseObject: (value: unknown) => object; | ||
export declare const validateResourceLocatorParameter: (value: INodeParameterResourceLocator, parameterMode: INodePropertyMode) => string[]; | ||
export declare const validateResourceMapperParameter: (nodeProperties: INodeProperties, value: ResourceMapperValue, skipRequiredCheck?: boolean) => Record<string, string[]>; | ||
export declare function addToIssuesIfMissing(foundIssues: INodeIssues, nodeProperties: INodeProperties, value: NodeParameterValue | INodeParameterResourceLocator): void; | ||
@@ -19,0 +28,0 @@ export declare function getParameterValueByPath(nodeValues: INodeParameters, parameterName: string, path: string): import("./Interfaces").NodeParameterValueType; |
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getVersionedNodeTypeAll = exports.getVersionedNodeType = exports.mergeNodeProperties = exports.mergeIssues = exports.getParameterIssues = exports.getParameterValueByPath = exports.addToIssuesIfMissing = exports.validateResourceLocatorParameter = exports.nodeIssuesToString = exports.getNodeParametersIssues = exports.getNodeWebhookUrl = exports.getNodeWebhookPath = exports.getNodeWebhooks = exports.prepareOutputData = exports.getNodeParameters = exports.getParameterResolveOrder = exports.getContext = exports.displayParameterPath = exports.displayParameter = exports.applySpecialNodeParameters = exports.cronNodeOptions = void 0; | ||
exports.getVersionedNodeTypeAll = exports.getVersionedNodeType = exports.mergeNodeProperties = exports.mergeIssues = exports.getParameterIssues = exports.getParameterValueByPath = exports.addToIssuesIfMissing = exports.validateResourceMapperParameter = exports.validateResourceLocatorParameter = exports.tryToParseObject = exports.tryToParseArray = exports.tryToParseTime = exports.tryToParseDateTime = exports.tryToParseBoolean = exports.tryToParseNumber = exports.validateFieldType = exports.nodeIssuesToString = exports.getNodeParametersIssues = exports.getNodeWebhookUrl = exports.getNodeWebhookPath = exports.getNodeWebhooks = exports.prepareOutputData = exports.getNodeParameters = exports.getParameterResolveOrder = exports.getContext = exports.displayParameterPath = exports.displayParameter = exports.applySpecialNodeParameters = exports.cronNodeOptions = void 0; | ||
const lodash_get_1 = __importDefault(require("lodash.get")); | ||
@@ -12,2 +12,3 @@ const lodash_isequal_1 = __importDefault(require("lodash.isequal")); | ||
const utils_1 = require("./utils"); | ||
const luxon_1 = require("luxon"); | ||
exports.cronNodeOptions = [ | ||
@@ -703,2 +704,160 @@ { | ||
exports.nodeIssuesToString = nodeIssuesToString; | ||
const validateFieldType = (fieldName, value, type, options) => { | ||
if (value === null || value === undefined) | ||
return { valid: true }; | ||
const defaultErrorMessage = `'${fieldName}' expects a ${type} but we got '${String(value)}'.`; | ||
switch (type.toLowerCase()) { | ||
case 'number': { | ||
try { | ||
return { valid: true, newValue: (0, exports.tryToParseNumber)(value) }; | ||
} | ||
catch (e) { | ||
return { valid: false, errorMessage: defaultErrorMessage }; | ||
} | ||
} | ||
case 'boolean': { | ||
try { | ||
return { valid: true, newValue: (0, exports.tryToParseBoolean)(value) }; | ||
} | ||
catch (e) { | ||
return { valid: false, errorMessage: defaultErrorMessage }; | ||
} | ||
} | ||
case 'datetime': { | ||
try { | ||
return { valid: true, newValue: (0, exports.tryToParseDateTime)(value) }; | ||
} | ||
catch (e) { | ||
const luxonDocsURL = 'https://moment.github.io/luxon/api-docs/index.html#datetimefromformat'; | ||
const errorMessage = `${defaultErrorMessage} <br/><br/> Consider using <a href="${luxonDocsURL}" target="_blank"><code>DateTime.fromFormat</code></a> to work with custom date formats.`; | ||
return { valid: false, errorMessage }; | ||
} | ||
} | ||
case 'time': { | ||
try { | ||
return { valid: true, newValue: (0, exports.tryToParseTime)(value) }; | ||
} | ||
catch (e) { | ||
return { | ||
valid: false, | ||
errorMessage: `'${fieldName}' expects time (hh:mm:(:ss)) but we got '${String(value)}'.`, | ||
}; | ||
} | ||
} | ||
case 'object': { | ||
try { | ||
return { valid: true, newValue: (0, exports.tryToParseObject)(value) }; | ||
} | ||
catch (e) { | ||
return { valid: false, errorMessage: defaultErrorMessage }; | ||
} | ||
} | ||
case 'array': { | ||
try { | ||
return { valid: true, newValue: (0, exports.tryToParseArray)(value) }; | ||
} | ||
catch (e) { | ||
return { valid: false, errorMessage: defaultErrorMessage }; | ||
} | ||
} | ||
case 'options': { | ||
const validOptions = (options === null || options === void 0 ? void 0 : options.map((option) => option.value).join(', ')) || ''; | ||
const isValidOption = (options === null || options === void 0 ? void 0 : options.some((option) => option.value === value)) || false; | ||
if (!isValidOption) { | ||
return { | ||
valid: false, | ||
errorMessage: `'${fieldName}' expects one of the following values: [${validOptions}] but we got '${String(value)}'`, | ||
}; | ||
} | ||
return { valid: true, newValue: value }; | ||
} | ||
default: { | ||
return { valid: true, newValue: value }; | ||
} | ||
} | ||
}; | ||
exports.validateFieldType = validateFieldType; | ||
const tryToParseNumber = (value) => { | ||
const isValidNumber = !isNaN(Number(value)); | ||
if (!isValidNumber) { | ||
throw new Error(`Could not parse '${String(value)}' to number.`); | ||
} | ||
return Number(value); | ||
}; | ||
exports.tryToParseNumber = tryToParseNumber; | ||
const tryToParseBoolean = (value) => { | ||
if (typeof value === 'boolean') { | ||
return value; | ||
} | ||
if (typeof value === 'string' && ['true', 'false'].includes(value.toLowerCase())) { | ||
return value.toLowerCase() === 'true'; | ||
} | ||
const num = Number(value); | ||
if (num === 0) { | ||
return false; | ||
} | ||
else if (num === 1) { | ||
return true; | ||
} | ||
throw new Error(`Could not parse '${String(value)}' to boolean.`); | ||
}; | ||
exports.tryToParseBoolean = tryToParseBoolean; | ||
const tryToParseDateTime = (value) => { | ||
const dateString = String(value).trim(); | ||
const isoDate = luxon_1.DateTime.fromISO(dateString, { setZone: true }); | ||
if (isoDate.isValid) { | ||
return isoDate; | ||
} | ||
const httpDate = luxon_1.DateTime.fromHTTP(dateString, { setZone: true }); | ||
if (httpDate.isValid) { | ||
return httpDate; | ||
} | ||
const rfc2822Date = luxon_1.DateTime.fromRFC2822(dateString, { setZone: true }); | ||
if (rfc2822Date.isValid) { | ||
return rfc2822Date; | ||
} | ||
const sqlDate = luxon_1.DateTime.fromSQL(dateString, { setZone: true }); | ||
if (sqlDate.isValid) { | ||
return sqlDate; | ||
} | ||
throw new Error(`The value "${dateString}" is not a valid date.`); | ||
}; | ||
exports.tryToParseDateTime = tryToParseDateTime; | ||
const tryToParseTime = (value) => { | ||
const isTimeInput = /^\d{2}:\d{2}(:\d{2})?((\-|\+)\d{4})?((\-|\+)\d{1,2}(:\d{2})?)?$/s.test(String(value)); | ||
if (!isTimeInput) { | ||
throw new Error(`The value "${String(value)}" is not a valid time.`); | ||
} | ||
return String(value); | ||
}; | ||
exports.tryToParseTime = tryToParseTime; | ||
const tryToParseArray = (value) => { | ||
try { | ||
const parsed = JSON.parse(String(value)); | ||
if (!Array.isArray(parsed)) { | ||
throw new Error(`The value "${String(value)}" is not a valid array.`); | ||
} | ||
return parsed; | ||
} | ||
catch (e) { | ||
throw new Error(`The value "${String(value)}" is not a valid array.`); | ||
} | ||
}; | ||
exports.tryToParseArray = tryToParseArray; | ||
const tryToParseObject = (value) => { | ||
if (value && typeof value === 'object' && !Array.isArray(value)) { | ||
return value; | ||
} | ||
try { | ||
const o = JSON.parse(String(value)); | ||
if (typeof o !== 'object' || Array.isArray(o)) { | ||
throw new Error(`The value "${String(value)}" is not a valid object.`); | ||
} | ||
return o; | ||
} | ||
catch (e) { | ||
throw new Error(`The value "${String(value)}" is not a valid object.`); | ||
} | ||
}; | ||
exports.tryToParseObject = tryToParseObject; | ||
const validateResourceLocatorParameter = (value, parameterMode) => { | ||
@@ -725,2 +884,30 @@ var _a; | ||
exports.validateResourceLocatorParameter = validateResourceLocatorParameter; | ||
const validateResourceMapperParameter = (nodeProperties, value, skipRequiredCheck = false) => { | ||
var _a, _b, _c; | ||
const issues = {}; | ||
let fieldWordSingular = ((_c = (_b = (_a = nodeProperties.typeOptions) === null || _a === void 0 ? void 0 : _a.resourceMapper) === null || _b === void 0 ? void 0 : _b.fieldWords) === null || _c === void 0 ? void 0 : _c.singular) || 'Field'; | ||
fieldWordSingular = fieldWordSingular.charAt(0).toUpperCase() + fieldWordSingular.slice(1); | ||
value.schema.forEach((field) => { | ||
const fieldValue = value.value ? value.value[field.id] : null; | ||
const key = `${nodeProperties.name}.${field.id}`; | ||
const fieldErrors = []; | ||
if (field.required && !skipRequiredCheck) { | ||
if (value.value === null || fieldValue === null || fieldValue === undefined) { | ||
const error = `${fieldWordSingular} "${field.id}" is required`; | ||
fieldErrors.push(error); | ||
} | ||
} | ||
if (!(fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.toString().startsWith('=')) && field.type) { | ||
const validationResult = (0, exports.validateFieldType)(field.id, fieldValue, field.type, field.options); | ||
if (!validationResult.valid && validationResult.errorMessage) { | ||
fieldErrors.push(validationResult.errorMessage); | ||
} | ||
} | ||
if (fieldErrors.length > 0) { | ||
issues[key] = fieldErrors; | ||
} | ||
}); | ||
return issues; | ||
}; | ||
exports.validateResourceMapperParameter = validateResourceMapperParameter; | ||
function addToIssuesIfMissing(foundIssues, nodeProperties, value) { | ||
@@ -751,6 +938,7 @@ if ((nodeProperties.type === 'string' && (value === '' || value === undefined)) || | ||
function getParameterIssues(nodeProperties, nodeValues, path, node) { | ||
var _a; | ||
var _a, _b, _c; | ||
const foundIssues = {}; | ||
const isDisplayed = displayParameterPath(nodeValues, nodeProperties, path, node); | ||
if (nodeProperties.required === true) { | ||
if (displayParameterPath(nodeValues, nodeProperties, path, node)) { | ||
if (isDisplayed) { | ||
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path); | ||
@@ -770,19 +958,33 @@ if (nodeProperties.typeOptions !== undefined && | ||
} | ||
if (nodeProperties.type === 'resourceLocator') { | ||
if (displayParameterPath(nodeValues, nodeProperties, path, node)) { | ||
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path); | ||
if (isINodeParameterResourceLocator(value)) { | ||
const mode = (_a = nodeProperties.modes) === null || _a === void 0 ? void 0 : _a.find((option) => option.name === value.mode); | ||
if (mode) { | ||
const errors = (0, exports.validateResourceLocatorParameter)(value, mode); | ||
errors.forEach((error) => { | ||
if (foundIssues.parameters === undefined) { | ||
foundIssues.parameters = {}; | ||
} | ||
if (foundIssues.parameters[nodeProperties.name] === undefined) { | ||
foundIssues.parameters[nodeProperties.name] = []; | ||
} | ||
foundIssues.parameters[nodeProperties.name].push(error); | ||
}); | ||
if (nodeProperties.type === 'resourceLocator' && isDisplayed) { | ||
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path); | ||
if (isINodeParameterResourceLocator(value)) { | ||
const mode = (_a = nodeProperties.modes) === null || _a === void 0 ? void 0 : _a.find((option) => option.name === value.mode); | ||
if (mode) { | ||
const errors = (0, exports.validateResourceLocatorParameter)(value, mode); | ||
errors.forEach((error) => { | ||
if (foundIssues.parameters === undefined) { | ||
foundIssues.parameters = {}; | ||
} | ||
if (foundIssues.parameters[nodeProperties.name] === undefined) { | ||
foundIssues.parameters[nodeProperties.name] = []; | ||
} | ||
foundIssues.parameters[nodeProperties.name].push(error); | ||
}); | ||
} | ||
} | ||
} | ||
else if (nodeProperties.type === 'resourceMapper' && isDisplayed) { | ||
const skipRequiredCheck = ((_c = (_b = nodeProperties.typeOptions) === null || _b === void 0 ? void 0 : _b.resourceMapper) === null || _c === void 0 ? void 0 : _c.mode) !== 'add'; | ||
const value = getParameterValueByPath(nodeValues, nodeProperties.name, path); | ||
if ((0, type_guards_1.isResourceMapperValue)(value)) { | ||
const issues = (0, exports.validateResourceMapperParameter)(nodeProperties, value, skipRequiredCheck); | ||
if (Object.keys(issues).length > 0) { | ||
if (foundIssues.parameters === undefined) { | ||
foundIssues.parameters = {}; | ||
} | ||
if (foundIssues.parameters[nodeProperties.name] === undefined) { | ||
foundIssues.parameters[nodeProperties.name] = []; | ||
} | ||
foundIssues.parameters = { ...foundIssues.parameters, ...issues }; | ||
} | ||
@@ -789,0 +991,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import type { INodeProperties, INodePropertyOptions, INodePropertyCollection, INodeParameterResourceLocator } from './Interfaces'; | ||
import type { INodeProperties, INodePropertyOptions, INodePropertyCollection, INodeParameterResourceLocator, ResourceMapperValue } from './Interfaces'; | ||
export declare const isINodeProperties: (item: INodePropertyOptions | INodeProperties | INodePropertyCollection) => item is INodeProperties; | ||
@@ -9,1 +9,2 @@ export declare const isINodePropertyOptions: (item: INodePropertyOptions | INodeProperties | INodePropertyCollection) => item is INodePropertyOptions; | ||
export declare const isValidResourceLocatorParameterValue: (value: INodeParameterResourceLocator) => boolean; | ||
export declare const isResourceMapperValue: (value: unknown) => value is ResourceMapperValue; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.isValidResourceLocatorParameterValue = exports.isINodePropertyCollectionList = exports.isINodePropertyOptionsList = exports.isINodePropertiesList = exports.isINodePropertyCollection = exports.isINodePropertyOptions = exports.isINodeProperties = void 0; | ||
exports.isResourceMapperValue = exports.isValidResourceLocatorParameterValue = exports.isINodePropertyCollectionList = exports.isINodePropertyOptionsList = exports.isINodePropertiesList = exports.isINodePropertyCollection = exports.isINodePropertyOptions = exports.isINodeProperties = void 0; | ||
const isINodeProperties = (item) => 'name' in item && 'type' in item && !('value' in item); | ||
@@ -30,2 +30,10 @@ exports.isINodeProperties = isINodeProperties; | ||
exports.isValidResourceLocatorParameterValue = isValidResourceLocatorParameterValue; | ||
const isResourceMapperValue = (value) => { | ||
return (typeof value === 'object' && | ||
value !== null && | ||
'mappingMode' in value && | ||
'schema' in value && | ||
'value' in value); | ||
}; | ||
exports.isResourceMapperValue = isResourceMapperValue; | ||
//# sourceMappingURL=type-guards.js.map |
{ | ||
"name": "n8n-workflow", | ||
"version": "0.150.0", | ||
"version": "0.151.0", | ||
"description": "Workflow base code of n8n", | ||
@@ -5,0 +5,0 @@ "license": "SEE LICENSE IN LICENSE.md", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
673998
9174