projen-modules 3.2.3 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mergeOptions = mergeOptions;
4
- const isObject = (obj) => obj && typeof obj === 'object';
4
+ const isPlainObject = (obj) => {
5
+ if (!obj || typeof obj !== 'object') {
6
+ return false;
7
+ }
8
+ const proto = Object.getPrototypeOf(obj);
9
+ return proto === Object.prototype || proto === null;
10
+ };
5
11
  /**
6
12
  * Performs a deep merge of objects and returns new object. Does not modify
7
- * objects (immutable) and merges arrays via concatenation.
13
+ * objects (immutable) and merges arrays via concatenation. Only plain objects
14
+ * are merged recursively, class instances in `options` replace the default.
8
15
  *
9
16
  * @param objects - Objects to merge
10
17
  * @returns New object with merged key/values
@@ -21,7 +28,7 @@ function mergeOptions(defaults, options) {
21
28
  if (Array.isArray(pVal) && Array.isArray(oVal)) {
22
29
  result[key] = [...pVal, ...oVal];
23
30
  }
24
- else if (isObject(pVal) && isObject(oVal)) {
31
+ else if (isPlainObject(pVal) && isPlainObject(oVal)) {
25
32
  result[key] = mergeOptions(pVal, oVal);
26
33
  }
27
34
  else {
@@ -31,4 +38,4 @@ function mergeOptions(defaults, options) {
31
38
  return result;
32
39
  }, {});
33
40
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2Utb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tZXJnZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0Esb0NBeUJDO0FBbENELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0FBRWxFOzs7Ozs7R0FNRztBQUNILFNBQWdCLFlBQVksQ0FHMUIsUUFBa0IsRUFBRSxPQUFpQjtJQUNyQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBc0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDbkUsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQXdCLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFdEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLEVBQUUsRUFBRSxDQUF1QixDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc09iamVjdCA9IChvYmo6IHVua25vd24pID0+IG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JztcblxuLyoqXG4gKiBQZXJmb3JtcyBhIGRlZXAgbWVyZ2Ugb2Ygb2JqZWN0cyBhbmQgcmV0dXJucyBuZXcgb2JqZWN0LiBEb2VzIG5vdCBtb2RpZnlcbiAqIG9iamVjdHMgKGltbXV0YWJsZSkgYW5kIG1lcmdlcyBhcnJheXMgdmlhIGNvbmNhdGVuYXRpb24uXG4gKlxuICogQHBhcmFtICBvYmplY3RzIC0gT2JqZWN0cyB0byBtZXJnZVxuICogQHJldHVybnMgIE5ldyBvYmplY3Qgd2l0aCBtZXJnZWQga2V5L3ZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VPcHRpb25zPFxuICBEZWZhdWx0cyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIE9wdGlvbnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuPihkZWZhdWx0czogRGVmYXVsdHMsIG9wdGlvbnM/OiBPcHRpb25zKTogRGVmYXVsdHMgJiBPcHRpb25zIHtcbiAgcmV0dXJuIFtkZWZhdWx0cywgb3B0aW9uc10ucmVkdWNlPFJlY29yZDxzdHJpbmcsIGFueT4+KChwcmV2LCBvYmopID0+IHtcbiAgICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHsgLi4ucHJldiB9O1xuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBwVmFsID0gcHJldltrZXldO1xuICAgICAgY29uc3Qgb1ZhbCA9IG9ialtrZXldO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwVmFsKSAmJiBBcnJheS5pc0FycmF5KG9WYWwpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gWy4uLnBWYWwsIC4uLm9WYWxdO1xuICAgICAgfSBlbHNlIGlmIChpc09iamVjdChwVmFsKSAmJiBpc09iamVjdChvVmFsKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IG1lcmdlT3B0aW9ucyhwVmFsLCBvVmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gb1ZhbDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHt9KSBhcyBEZWZhdWx0cyAmIE9wdGlvbnM7XG59XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2Utb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tZXJnZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0JBLG9DQXlCQztBQXpDRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQVksRUFBa0MsRUFBRTtJQUNyRSxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsT0FBTyxLQUFLLEtBQUssTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixZQUFZLENBRzFCLFFBQWtCLEVBQUUsT0FBaUI7SUFDckMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQXNCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ25FLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUF3QixFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXRCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDbkMsQ0FBQztpQkFBTSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxFQUFFLEVBQUUsQ0FBdUIsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNQbGFpbk9iamVjdCA9IChvYmo6IHVua25vd24pOiBvYmogaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopO1xuICByZXR1cm4gcHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUgfHwgcHJvdG8gPT09IG51bGw7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgZGVlcCBtZXJnZSBvZiBvYmplY3RzIGFuZCByZXR1cm5zIG5ldyBvYmplY3QuIERvZXMgbm90IG1vZGlmeVxuICogb2JqZWN0cyAoaW1tdXRhYmxlKSBhbmQgbWVyZ2VzIGFycmF5cyB2aWEgY29uY2F0ZW5hdGlvbi4gT25seSBwbGFpbiBvYmplY3RzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LCBjbGFzcyBpbnN0YW5jZXMgaW4gYG9wdGlvbnNgIHJlcGxhY2UgdGhlIGRlZmF1bHQuXG4gKlxuICogQHBhcmFtICBvYmplY3RzIC0gT2JqZWN0cyB0byBtZXJnZVxuICogQHJldHVybnMgIE5ldyBvYmplY3Qgd2l0aCBtZXJnZWQga2V5L3ZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VPcHRpb25zPFxuICBEZWZhdWx0cyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIE9wdGlvbnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuPihkZWZhdWx0czogRGVmYXVsdHMsIG9wdGlvbnM/OiBPcHRpb25zKTogRGVmYXVsdHMgJiBPcHRpb25zIHtcbiAgcmV0dXJuIFtkZWZhdWx0cywgb3B0aW9uc10ucmVkdWNlPFJlY29yZDxzdHJpbmcsIGFueT4+KChwcmV2LCBvYmopID0+IHtcbiAgICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHsgLi4ucHJldiB9O1xuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBwVmFsID0gcHJldltrZXldO1xuICAgICAgY29uc3Qgb1ZhbCA9IG9ialtrZXldO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwVmFsKSAmJiBBcnJheS5pc0FycmF5KG9WYWwpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gWy4uLnBWYWwsIC4uLm9WYWxdO1xuICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHBWYWwpICYmIGlzUGxhaW5PYmplY3Qob1ZhbCkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZU9wdGlvbnMocFZhbCwgb1ZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRba2V5XSA9IG9WYWw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSkgYXMgRGVmYXVsdHMgJiBPcHRpb25zO1xufVxuIl19
package/package.json CHANGED
@@ -83,7 +83,7 @@
83
83
  "publishConfig": {
84
84
  "access": "public"
85
85
  },
86
- "version": "3.2.3",
86
+ "version": "4.1.0",
87
87
  "jest": {
88
88
  "coverageProvider": "v8",
89
89
  "testMatch": [