UNPKG

@nestjs-mod/schematics

Version:

The Nx Plugin for NestJS that contains executors and generators for allowing your workspace to create NestJS-mod applications

50 lines 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.merge = merge; exports.defaults = defaults; /* eslint-disable @typescript-eslint/no-explicit-any */ // Copied from https://github.com/sindresorhus/node-defaults/blob/main/index.js const isPlainObject = (value) => { if (typeof value !== 'object' || value === null) { return false; } const prototype = Object.getPrototypeOf(value); return ((prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value)); }; const disallowedKeys = new Set(['__proto__', 'prototype', 'constructor']); function merge(destination, source) { if (!isPlainObject(source)) { return destination; } if (!destination) { destination = {}; } for (const [sourceKey, sourceValue] of Object.entries(source)) { if (disallowedKeys.has(sourceKey)) { continue; } const destinationValue = destination[sourceKey]; if (isPlainObject(destinationValue) && isPlainObject(sourceValue)) { destination[sourceKey] = merge(destinationValue, sourceValue); // Merge plain objects recursively } else if (sourceValue === undefined) { continue; // Skip undefined values in source } else if (isPlainObject(sourceValue)) { destination[sourceKey] = merge({}, sourceValue); // Clone plain objects } else if (Array.isArray(sourceValue)) { destination[sourceKey] = [...sourceValue]; // Clone arrays } else { destination[sourceKey] = sourceValue; // Assign other types } } return destination; } function defaults(options = {}, defaultOptions = {}) { return merge(structuredClone(defaultOptions), structuredClone(options)); } //# sourceMappingURL=node-defaults.js.map