@rudderstack/integrations-lib
Version:
84 lines • 10.2 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NldC12YWx1ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUFpQztBQUVqQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQUM5QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBRS9FLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYSxFQUFFLFVBQTRCLEVBQUUsRUFBdUIsRUFBRTtJQUN6RixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLGlCQUFpQixDQUFDO0lBQ25ELE1BQU0sUUFBUSxHQUFHLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUU3RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4RSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUF3QixFQUFFLENBQUM7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsdUNBQXVDO0lBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkIsdUNBQXVDO1lBQ3ZDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUF3QixFQUFFLE9BQTBCLEVBQTZCLEVBQUU7SUFDaEcsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNyQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxVQUFVO1lBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9FLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBZ0MsRUFBVyxFQUFFO0lBQ3RFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFtQyxFQUNuQyxPQUEwQixFQUNsQixFQUFFO0lBQ1YsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQztBQUVGLGtCQUFlLENBQUMsR0FBVyxFQUFFLElBQXdCLEVBQUUsS0FBVSxFQUFFLE9BQTBCLEVBQUUsRUFBRTtJQUMvRixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZDLGtEQUFrRDtJQUNsRCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFO1lBQ25DLEtBQUs7WUFDTCxRQUFRLEVBQUUsSUFBSTtZQUNkLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE9BQU8sSUFBQSxtQkFBUSxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzZXRWYWx1ZSBmcm9tICdzZXQtdmFsdWUnO1xuXG5jb25zdCBERUZBVUxUX1NFUEFSQVRPUiA9ICcuJztcbmNvbnN0IFJFU0VSVkVEX0tFWVMgPSBPYmplY3QuZnJlZXplKFsnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ3Byb3RvdHlwZSddKTtcblxuY29uc3Qgc3BsaXRTdHJpbmcgPSAoaW5wdXQ6IHN0cmluZywgb3B0aW9uczogc2V0VmFsdWUuT3B0aW9ucyA9IHt9KTogKHN0cmluZyB8IG51bWJlcilbXSA9PiB7XG4gIGNvbnN0IHNlcCA9IG9wdGlvbnMuc2VwYXJhdG9yIHx8IERFRkFVTFRfU0VQQVJBVE9SO1xuICBjb25zdCBwcmVzZXJ2ZSA9IHNlcCA9PT0gJy8nID8gZmFsc2UgOiBvcHRpb25zLnByZXNlcnZlUGF0aHM7XG5cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgJiYgcHJlc2VydmUgIT09IGZhbHNlICYmIC9cXC8vLnRlc3QoaW5wdXQpKSB7XG4gICAgcmV0dXJuIFtpbnB1dF07XG4gIH1cblxuICBjb25zdCBwYXJ0czogKHN0cmluZyB8IG51bWJlcilbXSA9IFtdO1xuICBsZXQgcGFydCA9ICcnO1xuXG4gIGNvbnN0IGNvbnZlcnRUb1B1c2hhYmxlUGFydCA9IChwdXNoUGFydDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHB1c2hQYXJ0KTtcbiAgICBpZiAocHVzaFBhcnQudHJpbSgpICE9PSAnJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuICAgIHJldHVybiBwdXNoUGFydDtcbiAgfTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHZhbHVlID0gaW5wdXRbaV07XG4gICAgaWYgKHZhbHVlICE9PSAnXFxcXCcgJiYgdmFsdWUgIT09IHNlcCkge1xuICAgICAgcGFydCArPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICdcXFxcJykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gICAgICBwYXJ0ICs9IGlucHV0WysraV07XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBzZXApIHtcbiAgICAgIHBhcnRzLnB1c2goY29udmVydFRvUHVzaGFibGVQYXJ0KHBhcnQpKTtcbiAgICAgIHBhcnQgPSAnJztcbiAgICB9XG4gIH1cblxuICBpZiAocGFydCkge1xuICAgIHBhcnRzLnB1c2goY29udmVydFRvUHVzaGFibGVQYXJ0KHBhcnQpKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cztcbn07XG5cbmNvbnN0IHNwbGl0ID0gKHBhdGg6IHNldFZhbHVlLklucHV0VHlwZSwgb3B0aW9ucz86IHNldFZhbHVlLk9wdGlvbnMpOiBzdHJpbmcgfCAoc3RyaW5nIHwgYW55KVtdID0+IHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3ltYm9sJykgcmV0dXJuIFtwYXRoXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkpIHJldHVybiBwYXRoO1xuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMuc3BsaXQgPT09ICdmdW5jdGlvbicpIHJldHVybiBvcHRpb25zLnNwbGl0KHBhdGgpO1xuICAgIHJldHVybiBzcGxpdFN0cmluZyhwYXRoLCBvcHRpb25zKTtcbiAgfVxuICByZXR1cm4gW107XG59O1xuXG5jb25zdCBkb1Vuc2FmZUtleXNFeGlzdCA9IChwYXJ0czogc3RyaW5nIHwgKHN0cmluZyB8IGFueSlbXSk6IGJvb2xlYW4gPT4ge1xuICBpZiAodHlwZW9mIHBhcnRzID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBSRVNFUlZFRF9LRVlTLmluY2x1ZGVzKHBhcnRzKTtcbiAgfVxuICByZXR1cm4gcGFydHMuc29tZSgocGFydCkgPT4gUkVTRVJWRURfS0VZUy5pbmNsdWRlcyhwYXJ0KSk7XG59O1xuXG5jb25zdCB0cmVhdFVuc2FmZUtleXMgPSAoXG4gIHBhcnRzOiBzdHJpbmcgfCAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICBvcHRpb25zPzogc2V0VmFsdWUuT3B0aW9ucyxcbik6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgcGFydHMgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnRzO1xuICB9XG4gIHJldHVybiBwYXJ0cy5qb2luKG9wdGlvbnM/LnNlcGFyYXRvciB8fCBERUZBVUxUX1NFUEFSQVRPUik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCAob2JqOiBvYmplY3QsIHBhdGg6IHNldFZhbHVlLklucHV0VHlwZSwgdmFsdWU6IGFueSwgb3B0aW9ucz86IHNldFZhbHVlLk9wdGlvbnMpID0+IHtcbiAgY29uc3QgcGF0aFBhcnRzID0gc3BsaXQocGF0aCwgb3B0aW9ucyk7XG5cbiAgLy8gQ2hlY2sgaWYgYW55IHBhcnQgb2YgdGhlIHBhdGggaXMgYSByZXNlcnZlZCBrZXlcbiAgY29uc3QgdW5zYWZlS2V5RXhpc3QgPSBkb1Vuc2FmZUtleXNFeGlzdChwYXRoUGFydHMpO1xuICBpZiAodW5zYWZlS2V5RXhpc3QpIHtcbiAgICBjb25zdCBzYWZlUGF0aCA9IHRyZWF0VW5zYWZlS2V5cyhwYXRoUGFydHMsIG9wdGlvbnMpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHNhZmVQYXRoLCB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcmV0dXJuIHNldFZhbHVlKG9iaiwgcGF0aCwgdmFsdWUsIG9wdGlvbnMpO1xufTtcbiJdfQ==