UNPKG

@rudderstack/integrations-lib

Version:
84 lines 10.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const set_value_1 = __importDefault(require("set-value")); const DEFAULT_SEPARATOR = '.'; const RESERVED_KEYS = Object.freeze(['__proto__', 'constructor', 'prototype']); const splitString = (input, options = {}) => { const sep = options.separator || DEFAULT_SEPARATOR; const preserve = sep === '/' ? false : options.preservePaths; if (typeof input === 'string' && preserve !== false && /\//.test(input)) { return [input]; } const parts = []; let part = ''; const convertToPushablePart = (pushPart) => { const number = Number(pushPart); if (pushPart.trim() !== '' && Number.isInteger(number)) { return number; } return pushPart; }; // eslint-disable-next-line no-plusplus for (let i = 0; i < input.length; i++) { const value = input[i]; if (value !== '\\' && value !== sep) { part += value; } if (value === '\\') { // eslint-disable-next-line no-plusplus part += input[++i]; } if (value === sep) { parts.push(convertToPushablePart(part)); part = ''; } } if (part) { parts.push(convertToPushablePart(part)); } return parts; }; const split = (path, options) => { if (typeof path === 'symbol') return [path]; if (Array.isArray(path)) return path; if (typeof path === 'string') { if (options && typeof options.split === 'function') return options.split(path); return splitString(path, options); } return []; }; const doUnsafeKeysExist = (parts) => { if (typeof parts === 'string') { return RESERVED_KEYS.includes(parts); } return parts.some((part) => RESERVED_KEYS.includes(part)); }; const treatUnsafeKeys = (parts, options) => { if (typeof parts === 'string') { return parts; } return parts.join(options?.separator || DEFAULT_SEPARATOR); }; exports.default = (obj, path, value, options) => { const pathParts = split(path, options); // Check if any part of the path is a reserved key const unsafeKeyExist = doUnsafeKeysExist(pathParts); if (unsafeKeyExist) { const safePath = treatUnsafeKeys(pathParts, options); Object.defineProperty(obj, safePath, { value, writable: true, enumerable: true, configurable: true, }); return obj; } return (0, set_value_1.default)(obj, path, value, options); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NldC12YWx1ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUFpQztBQUVqQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQUM5QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBRS9FLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYSxFQUFFLFVBQTRCLEVBQUUsRUFBdUIsRUFBRTtJQUN6RixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLGlCQUFpQixDQUFDO0lBQ25ELE1BQU0sUUFBUSxHQUFHLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUU3RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4RSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUF3QixFQUFFLENBQUM7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFD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QUFRLEVBQUUsSUFBSTtZQUNkLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE9BQU8sSUFBQSxtQkFBUSxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzZXRWYWx1ZSBmcm9tICdzZXQtdmFsdWUnO1xuXG5jb25zdCBERUZBVUxUX1NFUEFSQVRPUiA9ICcuJztcbmNvbnN0IFJFU0VSVkVEX0tFWVMgPSBPYmplY3QuZnJlZXplKFsnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ3Byb3RvdHlwZSddKTtcblxuY29uc3Qgc3BsaXRTdHJpbmcgPSAoaW5wdXQ6IHN0cmluZywgb3B0aW9uczogc2V0VmFsdWUuT3B0aW9ucyA9IHt9KTogKHN0cmluZyB8IG51bWJlcilbXSA9PiB7XG4gIGNvbnN0IHNlcCA9IG9wdGlvbnMuc2VwYXJhdG9yIHx8IERFRkFVTFRfU0VQQVJBVE9SO1xuICBjb25zdCBwcmVzZXJ2ZSA9IHNlcCA9PT0gJy8nID8gZmFsc2UgOiBvcHRpb25zLnByZXNlcnZlUGF0aHM7XG5cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgJiYgcHJlc2VydmUgIT09IGZhbHNlICYmIC9cXC8vLnRlc3QoaW5wdXQpKSB7XG4gICAgcmV0dXJuIFtpbnB1dF07XG4gIH1cblxuICBjb25zdCBwYXJ0czogKHN0cmluZyB8IG51bWJlcilbXSA9IFtdO1xuICBsZXQgcGFydCA9ICcnO1xuXG4gIGNvbnN0IGNvbnZlcnRUb1B1c2hhYmxlUGFydCA9IChwdXNoUGFydDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHB1c2hQYXJ0KTtcbiAgICBpZiAocHVzaFBhcnQudHJpbSgpICE9PSAnJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuICAgIHJldHVybiBwdXNoUGFydDtcbiAgfTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHZhbHVlID0gaW5wdXRbaV07XG4gICAgaWYgKHZhbHVlICE9PSAnXFxcXCcgJiYgdmFsdWUgIT09IHNlcCkge1xuICAgICAgcGFydCArPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICdcXFxcJykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gICAgICBwYXJ0ICs9IGlucHV0WysraV07XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBzZXApIHtcbiAgICAgIHBhcnRzLnB1c2goY29udmVydFRvUHVzaGFibGVQYXJ0KHBhcnQpKTtcbiAgICAgIHBhcnQgPSAnJztcbiAgICB9XG4gIH1cblxuICBpZiAocGFydCkge1xuICAgIHBhcnRzLnB1c2goY29udmVydFRvUHVzaGFibGVQYXJ0KHBhcnQpKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cztcbn07XG5cbmNvbnN0IHNwbGl0ID0gKHBhdGg6IHNldFZhbHVlLklucHV0VHlwZSwgb3B0aW9ucz86IHNldFZhbHVlLk9wdGlvbnMpOiBzdHJpbmcgfCAoc3RyaW5nIHwgYW55KVtdID0+IHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3ltYm9sJykgcmV0dXJuIFtwYXRoXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkpIHJldHVybiBwYXRoO1xuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMuc3BsaXQgPT09ICdmdW5jdGlvbicpIHJldHVybiBvcHRpb25zLnNwbGl0KHBhdGgpO1xuICAgIHJldHVybiBzcGxpdFN0cmluZyhwYXRoLCBvcHRpb25zKTtcbiAgfVxuICByZXR1cm4gW107XG59O1xuXG5jb25zdCBkb1Vuc2FmZUtleXNFeGlzdCA9IChwYXJ0czogc3RyaW5nIHwgKHN0cmluZyB8IGFueSlbXSk6IGJvb2xlYW4gPT4ge1xuICBpZiAodHlwZW9mIHBhcnRzID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBSRVNFUlZFRF9LRVlTLmluY2x1ZGVzKHBhcnRzKTtcbiAgfVxuICByZXR1cm4gcGFydHMuc29tZSgocGFydCkgPT4gUkVTRVJWRURfS0VZUy5pbmNsdWRlcyhwYXJ0KSk7XG59O1xuXG5jb25zdCB0cmVhdFVuc2FmZUtleXMgPSAoXG4gIHBhcnRzOiBzdHJpbmcgfCAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICBvcHRpb25zPzogc2V0VmFsdWUuT3B0aW9ucyxcbik6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgcGFydHMgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnRzO1xuICB9XG4gIHJldHVybiBwYXJ0cy5qb2luKG9wdGlvbnM/LnNlcGFyYXRvciB8fCBERUZBVUxUX1NFUEFSQVRPUik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCAob2JqOiBvYmplY3QsIHBhdGg6IHNldFZhbHVlLklucHV0VHlwZSwgdmFsdWU6IGFueSwgb3B0aW9ucz86IHNldFZhbHVlLk9wdGlvbnMpID0+IHtcbiAgY29uc3QgcGF0aFBhcnRzID0gc3BsaXQocGF0aCwgb3B0aW9ucyk7XG5cbiAgLy8gQ2hlY2sgaWYgYW55IHBhcnQgb2YgdGhlIHBhdGggaXMgYSByZXNlcnZlZCBrZXlcbiAgY29uc3QgdW5zYWZlS2V5RXhpc3QgPSBkb1Vuc2FmZUtleXNFeGlzdChwYXRoUGFydHMpO1xuICBpZiAodW5zYWZlS2V5RXhpc3QpIHtcbiAgICBjb25zdCBzYWZlUGF0aCA9IHRyZWF0VW5zYWZlS2V5cyhwYXRoUGFydHMsIG9wdGlvbnMpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHNhZmVQYXRoLCB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcmV0dXJuIHNldFZhbHVlKG9iaiwgcGF0aCwgdmFsdWUsIG9wdGlvbnMpO1xufTtcbiJdfQ==