UNPKG

n8n-nodes-base

Version:

Base nodes of n8n

100 lines 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareFieldsArray = void 0; exports.sortByCode = sortByCode; exports.addBinariesToItem = addBinariesToItem; exports.typeToNumber = typeToNumber; const n8n_workflow_1 = require("n8n-workflow"); const JsTaskRunnerSandbox_1 = require("../../../Code/JsTaskRunnerSandbox"); const prepareFieldsArray = (fields, fieldName = 'Fields') => { if (typeof fields === 'string') { return fields .split(',') .map((entry) => entry.trim()) .filter((entry) => entry !== ''); } if (Array.isArray(fields)) { return fields; } throw new n8n_workflow_1.ApplicationError(`The \'${fieldName}\' parameter must be a string of fields separated by commas or an array of strings.`, { level: 'warning' }); }; exports.prepareFieldsArray = prepareFieldsArray; const returnRegExp = /\breturn\b/g; async function sortByCode(items) { const userCode = this.getNodeParameter('code', 0); if (!returnRegExp.test(userCode)) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Sort code doesn't return. Please add a 'return' statement to your code"); } const mode = this.getMode(); const chunkSize = undefined; const sortCode = `return items.sort((a, b) => { ${userCode} })`; const sandbox = new JsTaskRunnerSandbox_1.JsTaskRunnerSandbox(mode, this, chunkSize, { items }); const executionResult = await sandbox.runCode(sortCode); return executionResult; } const isBinaryUniqueSetup = () => { const binaries = []; return (binary) => { for (const existingBinary of binaries) { if (existingBinary.mimeType === binary.mimeType && existingBinary.fileType === binary.fileType && existingBinary.fileSize === binary.fileSize && existingBinary.fileExtension === binary.fileExtension) { return false; } } binaries.push({ mimeType: binary.mimeType, fileType: binary.fileType, fileSize: binary.fileSize, fileExtension: binary.fileExtension, }); return true; }; }; function addBinariesToItem(newItem, items, uniqueOnly) { const isBinaryUnique = uniqueOnly ? isBinaryUniqueSetup() : undefined; for (const item of items) { if (item.binary === undefined) continue; for (const key of Object.keys(item.binary)) { if (!newItem.binary) newItem.binary = {}; let binaryKey = key; const binary = item.binary[key]; if (isBinaryUnique && !isBinaryUnique(binary)) { continue; } // If the binary key already exists add a suffix to it let i = 1; while (newItem.binary[binaryKey] !== undefined) { binaryKey = `${key}_${i}`; i++; } newItem.binary[binaryKey] = binary; } } return newItem; } function typeToNumber(value) { if (typeof value === 'object') { if (Array.isArray(value)) return 9; if (value === null) return 10; if (value instanceof Date) return 11; } const types = { _string: 1, _number: 2, _bigint: 3, _boolean: 4, _symbol: 5, _undefined: 6, _object: 7, _function: 8, }; return types[`_${typeof value}`]; } //# sourceMappingURL=utils.js.map