smob 1.5.0 → 1.6.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.
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- exports.PriorityName = void 0;
4
- (function(PriorityName) {
3
+ var PriorityName = /*#__PURE__*/ function(PriorityName) {
5
4
  PriorityName["LEFT"] = "left";
6
5
  PriorityName["RIGHT"] = "right";
7
- })(exports.PriorityName || (exports.PriorityName = {}));
6
+ return PriorityName;
7
+ }({});
8
8
 
9
9
  function isObject(item) {
10
10
  return !!item && typeof item === 'object' && !Array.isArray(item);
@@ -117,20 +117,16 @@ function hasOwnProperty(obj, prop) {
117
117
  }
118
118
 
119
119
  function buildOptions(options = {}) {
120
- var _options_array;
121
- options.array = (_options_array = options.array) != null ? _options_array : true;
122
- var _options_arrayDistinct;
123
- options.arrayDistinct = (_options_arrayDistinct = options.arrayDistinct) != null ? _options_arrayDistinct : false;
124
- var _options_clone;
125
- options.clone = (_options_clone = options.clone) != null ? _options_clone : false;
126
- var _options_inPlace;
127
- options.inPlace = (_options_inPlace = options.inPlace) != null ? _options_inPlace : false;
128
- options.priority = options.priority || exports.PriorityName.LEFT;
120
+ options.array = options.array ?? true;
121
+ options.arrayDistinct = options.arrayDistinct ?? false;
122
+ options.clone = options.clone ?? false;
123
+ options.inPlace = options.inPlace ?? false;
124
+ options.priority = options.priority || PriorityName.LEFT;
129
125
  options.arrayPriority = options.arrayPriority || options.priority;
130
126
  return options;
131
127
  }
132
128
  function togglePriority(priority) {
133
- return priority === exports.PriorityName.LEFT ? `${exports.PriorityName.RIGHT}` : `${exports.PriorityName.LEFT}`;
129
+ return priority === PriorityName.LEFT ? `${PriorityName.RIGHT}` : `${PriorityName.LEFT}`;
134
130
  }
135
131
 
136
132
  function baseMerger(context, ...sources) {
@@ -142,7 +138,7 @@ function baseMerger(context, ...sources) {
142
138
  priority = context.options.arrayPriority;
143
139
  }
144
140
  }
145
- if (priority === exports.PriorityName.RIGHT) {
141
+ if (priority === PriorityName.RIGHT) {
146
142
  target = sources.pop();
147
143
  source = sources.pop();
148
144
  } else {
@@ -157,7 +153,7 @@ function baseMerger(context, ...sources) {
157
153
  }
158
154
  if (Array.isArray(target) && Array.isArray(source)) {
159
155
  target.push(...source);
160
- if (context.options.arrayPriority === exports.PriorityName.RIGHT) {
156
+ if (context.options.arrayPriority === PriorityName.RIGHT) {
161
157
  return baseMerger(context, ...sources, target);
162
158
  }
163
159
  return baseMerger(context, target, ...sources);
@@ -187,7 +183,7 @@ function baseMerger(context, ...sources) {
187
183
  }
188
184
  continue;
189
185
  }
190
- if (context.options.priority === exports.PriorityName.RIGHT) {
186
+ if (context.options.priority === PriorityName.RIGHT) {
191
187
  target[key] = baseMerger(context, source[key], target[key]);
192
188
  } else {
193
189
  target[key] = baseMerger(context, target[key], source[key]);
@@ -197,12 +193,12 @@ function baseMerger(context, ...sources) {
197
193
  if (context.options.array && Array.isArray(target[key]) && Array.isArray(source[key])) {
198
194
  const arrayPriority = context.options.priority !== context.options.arrayPriority ? togglePriority(context.options.arrayPriority) : context.options.arrayPriority;
199
195
  switch(arrayPriority){
200
- case exports.PriorityName.LEFT:
196
+ case PriorityName.LEFT:
201
197
  Object.assign(target, {
202
198
  [key]: baseMerger(context, target[key], source[key])
203
199
  });
204
200
  break;
205
- case exports.PriorityName.RIGHT:
201
+ case PriorityName.RIGHT:
206
202
  Object.assign(target, {
207
203
  [key]: baseMerger(context, source[key], target[key])
208
204
  });
@@ -217,7 +213,7 @@ function baseMerger(context, ...sources) {
217
213
  }
218
214
  }
219
215
  context.map = new WeakMap();
220
- if (context.options.priority === exports.PriorityName.RIGHT) {
216
+ if (context.options.priority === PriorityName.RIGHT) {
221
217
  return baseMerger(context, ...sources, target);
222
218
  }
223
219
  return baseMerger(context, target, ...sources);
@@ -236,15 +232,15 @@ function createMerger(input) {
236
232
  return baseMerger(ctx, ...clone(sources));
237
233
  }
238
234
  if (!options.inPlace) {
239
- if (Array.isArray(sources.at(0)) && options.arrayPriority === exports.PriorityName.LEFT) {
235
+ if (Array.isArray(sources.at(0)) && options.arrayPriority === PriorityName.LEFT) {
240
236
  sources.unshift([]);
241
237
  return baseMerger(ctx, ...sources);
242
238
  }
243
- if (Array.isArray(sources.at(-1)) && options.arrayPriority === exports.PriorityName.RIGHT) {
239
+ if (Array.isArray(sources.at(-1)) && options.arrayPriority === PriorityName.RIGHT) {
244
240
  sources.push([]);
245
241
  return baseMerger(ctx, ...sources);
246
242
  }
247
- if (options.priority === exports.PriorityName.LEFT) {
243
+ if (options.priority === PriorityName.LEFT) {
248
244
  sources.unshift({});
249
245
  } else {
250
246
  sources.push({});
@@ -268,6 +264,7 @@ const merge = createMerger();
268
264
  })(target, ...sources);
269
265
  }
270
266
 
267
+ exports.PriorityName = PriorityName;
271
268
  exports.assign = assign;
272
269
  exports.buildOptions = buildOptions;
273
270
  exports.clone = clone;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/utils/check.ts","../src/utils/array.ts","../src/utils/clone.ts","../src/utils/object.ts","../src/utils/options.ts","../src/module.ts","../src/presets.ts"],"sourcesContent":["export enum PriorityName {\n LEFT = 'left',\n RIGHT = 'right',\n}\n","export function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n\nexport function isSafeKey(key: string) : boolean {\n return key !== '__proto__' &&\n key !== 'prototype' &&\n key !== 'constructor';\n}\n\nexport function isEqual(x: any, y: any): boolean {\n if (Object.is(x, y)) return true;\n\n if (x instanceof Date && y instanceof Date) {\n return x.getTime() === y.getTime();\n }\n\n if (x instanceof RegExp && y instanceof RegExp) {\n return x.toString() === y.toString();\n }\n\n if (\n isObject(x) &&\n isObject(y)\n ) {\n const keysX = Reflect.ownKeys(x) as string[];\n const keysY = Reflect.ownKeys(y) as string[];\n if (keysX.length !== keysY.length) {\n return false;\n }\n\n for (let i = 0; i < keysX.length; i++) {\n const key = keysX[i];\n if (!Reflect.has(y, key) || !isEqual(x[key], y[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (\n Array.isArray(x) &&\n Array.isArray(y)\n ) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (let i = 0; i < x.length; i++) {\n if (!isEqual(x[i], y[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n","import { isEqual } from './check';\n\nexport function distinctArray<T = any>(arr: T[]) : T[] {\n for (let i = 0; i < arr.length; i++) {\n for (let j = arr.length - 1; j > i; j--) {\n if (isEqual(arr[i], arr[j])) {\n arr.splice(j, 1);\n }\n }\n }\n\n return arr;\n}\n","import { isObject } from './check';\n\n/* istanbul ignore next */\nconst gT = (() => {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line no-restricted-globals\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n throw new Error('unable to locate global object');\n})();\n\nexport function polyfillClone<T>(input: T) {\n const map = new WeakMap();\n\n const fn = <A>(value: A) : A => {\n if (Array.isArray(value)) {\n if (map.has(value)) {\n return map.get(value);\n }\n\n const cloned = [] as A;\n map.set(value, cloned);\n\n value.map((el) => (cloned as any[]).push(fn(el)));\n\n return cloned;\n }\n\n if (isObject(value)) {\n if (map.has(value)) {\n return map.get(value);\n }\n\n const output = {} as A;\n const keys = Object.keys(value);\n\n map.set(value, output);\n for (let i = 0; i < keys.length; i++) {\n output[keys[i] as keyof A] = fn(value[keys[i]]);\n }\n\n return output;\n }\n\n return value;\n };\n\n return fn(input);\n}\n\n/* istanbul ignore next */\nexport function clone<T>(value: T) : T {\n if (gT.structuredClone) {\n return gT.structuredClone(value);\n }\n\n /* istanbul ignore next */\n return polyfillClone(value);\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","import { PriorityName } from '../constants';\nimport type { Options, OptionsInput } from '../type';\n\nexport function buildOptions(options: OptionsInput = {}) : Options {\n options.array = options.array ?? true;\n options.arrayDistinct = options.arrayDistinct ?? false;\n options.clone = options.clone ?? false;\n options.inPlace = options.inPlace ?? false;\n options.priority = options.priority || PriorityName.LEFT;\n options.arrayPriority = options.arrayPriority || options.priority;\n\n return options as Options;\n}\n\nexport function togglePriority(priority: `${PriorityName}`) {\n return priority === PriorityName.LEFT ?\n `${PriorityName.RIGHT}` :\n `${PriorityName.LEFT}`;\n}\n","import { PriorityName } from './constants';\nimport type {\n Merger, MergerContext,\n MergerResult,\n MergerSource,\n MergerSourceUnwrap,\n OptionsInput,\n} from './type';\n\nimport {\n buildOptions,\n clone,\n distinctArray,\n hasOwnProperty,\n isObject,\n isSafeKey, togglePriority,\n} from './utils';\n\nfunction baseMerger<B extends MergerSource[]>(\n context: MergerContext,\n ...sources: B\n) : MergerResult<B> {\n let target : MergerSourceUnwrap<B>;\n let source : MergerSourceUnwrap<B> | undefined;\n\n let { priority } = context.options;\n if (sources.length >= 2) {\n if (\n Array.isArray(sources.at(0)) &&\n Array.isArray(sources.at(-1))\n ) {\n priority = context.options.arrayPriority;\n }\n }\n\n if (priority === PriorityName.RIGHT) {\n target = sources.pop() as MergerSourceUnwrap<B>;\n source = sources.pop() as MergerSourceUnwrap<B>;\n } else {\n target = sources.shift() as MergerSourceUnwrap<B>;\n source = sources.shift() as MergerSourceUnwrap<B>;\n }\n\n if (!source) {\n if (\n Array.isArray(target) &&\n context.options.arrayDistinct\n ) {\n return distinctArray(target) as MergerResult<B>;\n }\n\n return target as MergerResult<B>;\n }\n\n if (\n Array.isArray(target) &&\n Array.isArray(source)\n ) {\n target.push(...source as MergerSource[]);\n\n if (context.options.arrayPriority === PriorityName.RIGHT) {\n return baseMerger(\n context,\n ...sources,\n target,\n ) as MergerResult<B>;\n }\n\n return baseMerger(\n context,\n target,\n ...sources,\n ) as MergerResult<B>;\n }\n\n context.map.set(source, true);\n\n if (\n isObject(target) &&\n isObject(source)\n ) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as (keyof MergerSourceUnwrap<B>);\n\n if (hasOwnProperty(target, key)) {\n if (!isSafeKey(key as string)) {\n continue;\n }\n\n if (context.options.strategy) {\n const applied = context.options.strategy(target, key as string, source[key]);\n if (typeof applied !== 'undefined') {\n continue;\n }\n }\n\n if (\n isObject(target[key]) &&\n isObject(source[key])\n ) {\n if (context.map.has(source[key])) {\n const sourceKeys = Object.keys(source[key] as Record<string, any>);\n for (let j = 0; j < sourceKeys.length; j++) {\n if (\n isSafeKey(sourceKeys[j]) &&\n !hasOwnProperty(target[key] as Record<string, any>, sourceKeys[j])\n ) {\n (target[key] as Record<string, any>)[sourceKeys[j]] = (source[key] as Record<string, any>)[sourceKeys[j]];\n }\n }\n\n continue;\n }\n\n if (context.options.priority === PriorityName.RIGHT) {\n target[key] = baseMerger(\n context,\n source[key] as MergerSource,\n target[key] as MergerSource,\n ) as MergerSourceUnwrap<B>[keyof MergerSourceUnwrap<B>];\n } else {\n target[key] = baseMerger(\n context,\n target[key] as MergerSource,\n source[key] as MergerSource,\n ) as MergerSourceUnwrap<B>[keyof MergerSourceUnwrap<B>];\n }\n\n continue;\n }\n\n if (\n context.options.array &&\n Array.isArray(target[key]) &&\n Array.isArray(source[key])\n ) {\n const arrayPriority = context.options.priority !== context.options.arrayPriority ?\n togglePriority(context.options.arrayPriority) :\n context.options.arrayPriority;\n\n switch (arrayPriority) {\n case PriorityName.LEFT:\n Object.assign(target, {\n [key]: baseMerger(context, target[key] as MergerSource, source[key] as MergerSource),\n });\n break;\n case PriorityName.RIGHT:\n Object.assign(target, {\n [key]: baseMerger(context, source[key] as MergerSource, target[key] as MergerSource),\n });\n break;\n }\n }\n } else {\n Object.assign(target, {\n [key]: source[key],\n });\n }\n }\n }\n\n context.map = new WeakMap();\n\n if (context.options.priority === PriorityName.RIGHT) {\n return baseMerger(context, ...sources, target) as MergerResult<B>;\n }\n\n return baseMerger(context, target, ...sources) as MergerResult<B>;\n}\n\nexport function createMerger(input?: OptionsInput) : Merger {\n const options = buildOptions(input);\n\n return <B extends MergerSource[]>(\n ...sources: B\n ) : MergerResult<B> => {\n if (!sources.length) {\n throw new SyntaxError('At least one input element is required.');\n }\n\n const ctx : MergerContext = {\n options,\n map: new WeakMap<any, any>(),\n };\n\n if (options.clone) {\n return baseMerger(ctx, ...clone(sources));\n }\n\n if (!options.inPlace) {\n if (\n Array.isArray(sources.at(0)) &&\n options.arrayPriority === PriorityName.LEFT\n ) {\n sources.unshift([]);\n return baseMerger(ctx, ...sources);\n }\n\n if (\n Array.isArray(sources.at(-1)) &&\n options.arrayPriority === PriorityName.RIGHT\n ) {\n sources.push([]);\n return baseMerger(ctx, ...sources);\n }\n\n if (options.priority === PriorityName.LEFT) {\n sources.unshift({});\n } else {\n sources.push({});\n }\n }\n\n return baseMerger(ctx, ...sources);\n };\n}\n\nexport const merge = createMerger();\n","import { createMerger } from './module';\nimport type { MergerResult } from './type';\n\n/**\n * Assign source attributes to a target object.\n *\n * @param target\n * @param sources\n */\nexport function assign<A extends Record<string, any>, B extends Record<string, any>[]>(\n target: A,\n ...sources: B\n) : A & MergerResult<B> {\n return createMerger({\n inPlace: true,\n priority: 'left',\n array: false,\n })(target, ...sources) as A & MergerResult<B>;\n}\n"],"names":["PriorityName","isObject","item","Array","isArray","isSafeKey","key","isEqual","x","y","Object","is","Date","getTime","RegExp","toString","keysX","Reflect","ownKeys","keysY","length","i","has","distinctArray","arr","j","splice","gT","globalThis","self","window","global","Error","polyfillClone","input","map","WeakMap","fn","value","get","cloned","set","el","push","output","keys","clone","structuredClone","hasOwnProperty","obj","prop","prototype","call","buildOptions","options","array","arrayDistinct","inPlace","priority","LEFT","arrayPriority","togglePriority","RIGHT","baseMerger","context","sources","target","source","at","pop","shift","strategy","applied","sourceKeys","assign","createMerger","SyntaxError","ctx","unshift","merge"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/utils/check.ts","../src/utils/array.ts","../src/utils/clone.ts","../src/utils/object.ts","../src/utils/options.ts","../src/module.ts","../src/presets.ts"],"sourcesContent":["export enum PriorityName {\n LEFT = 'left',\n RIGHT = 'right',\n}\n","export function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n\nexport function isSafeKey(key: string) : boolean {\n return key !== '__proto__' &&\n key !== 'prototype' &&\n key !== 'constructor';\n}\n\nexport function isEqual(x: any, y: any): boolean {\n if (Object.is(x, y)) return true;\n\n if (x instanceof Date && y instanceof Date) {\n return x.getTime() === y.getTime();\n }\n\n if (x instanceof RegExp && y instanceof RegExp) {\n return x.toString() === y.toString();\n }\n\n if (\n isObject(x) &&\n isObject(y)\n ) {\n const keysX = Reflect.ownKeys(x) as string[];\n const keysY = Reflect.ownKeys(y) as string[];\n if (keysX.length !== keysY.length) {\n return false;\n }\n\n for (let i = 0; i < keysX.length; i++) {\n const key = keysX[i];\n if (!Reflect.has(y, key) || !isEqual(x[key], y[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (\n Array.isArray(x) &&\n Array.isArray(y)\n ) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (let i = 0; i < x.length; i++) {\n if (!isEqual(x[i], y[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n","import { isEqual } from './check';\n\nexport function distinctArray<T = any>(arr: T[]) : T[] {\n for (let i = 0; i < arr.length; i++) {\n for (let j = arr.length - 1; j > i; j--) {\n if (isEqual(arr[i], arr[j])) {\n arr.splice(j, 1);\n }\n }\n }\n\n return arr;\n}\n","import { isObject } from './check';\n\n/* istanbul ignore next */\nconst gT = (() => {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line no-restricted-globals\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n throw new Error('unable to locate global object');\n})();\n\nexport function polyfillClone<T>(input: T) {\n const map = new WeakMap();\n\n const fn = <A>(value: A) : A => {\n if (Array.isArray(value)) {\n if (map.has(value)) {\n return map.get(value);\n }\n\n const cloned = [] as A;\n map.set(value, cloned);\n\n value.map((el) => (cloned as any[]).push(fn(el)));\n\n return cloned;\n }\n\n if (isObject(value)) {\n if (map.has(value)) {\n return map.get(value);\n }\n\n const output = {} as A;\n const keys = Object.keys(value);\n\n map.set(value, output);\n for (let i = 0; i < keys.length; i++) {\n output[keys[i] as keyof A] = fn(value[keys[i]]);\n }\n\n return output;\n }\n\n return value;\n };\n\n return fn(input);\n}\n\n/* istanbul ignore next */\nexport function clone<T>(value: T) : T {\n if (gT.structuredClone) {\n return gT.structuredClone(value);\n }\n\n /* istanbul ignore next */\n return polyfillClone(value);\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","import { PriorityName } from '../constants';\nimport type { Options, OptionsInput } from '../type';\n\nexport function buildOptions(options: OptionsInput = {}) : Options {\n options.array = options.array ?? true;\n options.arrayDistinct = options.arrayDistinct ?? false;\n options.clone = options.clone ?? false;\n options.inPlace = options.inPlace ?? false;\n options.priority = options.priority || PriorityName.LEFT;\n options.arrayPriority = options.arrayPriority || options.priority;\n\n return options as Options;\n}\n\nexport function togglePriority(priority: `${PriorityName}`) {\n return priority === PriorityName.LEFT ?\n `${PriorityName.RIGHT}` :\n `${PriorityName.LEFT}`;\n}\n","import { PriorityName } from './constants';\nimport type {\n Merger, MergerContext,\n MergerResult,\n MergerSource,\n MergerSourceUnwrap,\n OptionsInput,\n} from './type';\n\nimport {\n buildOptions,\n clone,\n distinctArray,\n hasOwnProperty,\n isObject,\n isSafeKey, togglePriority,\n} from './utils';\n\nfunction baseMerger<B extends MergerSource[]>(\n context: MergerContext,\n ...sources: B\n) : MergerResult<B> {\n let target : MergerSourceUnwrap<B>;\n let source : MergerSourceUnwrap<B> | undefined;\n\n let { priority } = context.options;\n if (sources.length >= 2) {\n if (\n Array.isArray(sources.at(0)) &&\n Array.isArray(sources.at(-1))\n ) {\n priority = context.options.arrayPriority;\n }\n }\n\n if (priority === PriorityName.RIGHT) {\n target = sources.pop() as MergerSourceUnwrap<B>;\n source = sources.pop() as MergerSourceUnwrap<B>;\n } else {\n target = sources.shift() as MergerSourceUnwrap<B>;\n source = sources.shift() as MergerSourceUnwrap<B>;\n }\n\n if (!source) {\n if (\n Array.isArray(target) &&\n context.options.arrayDistinct\n ) {\n return distinctArray(target) as MergerResult<B>;\n }\n\n return target as MergerResult<B>;\n }\n\n if (\n Array.isArray(target) &&\n Array.isArray(source)\n ) {\n target.push(...source as MergerSource[]);\n\n if (context.options.arrayPriority === PriorityName.RIGHT) {\n return baseMerger(\n context,\n ...sources,\n target,\n ) as MergerResult<B>;\n }\n\n return baseMerger(\n context,\n target,\n ...sources,\n ) as MergerResult<B>;\n }\n\n context.map.set(source, true);\n\n if (\n isObject(target) &&\n isObject(source)\n ) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as (keyof MergerSourceUnwrap<B>);\n\n if (hasOwnProperty(target, key)) {\n if (!isSafeKey(key as string)) {\n continue;\n }\n\n if (context.options.strategy) {\n const applied = context.options.strategy(target, key as string, source[key]);\n if (typeof applied !== 'undefined') {\n continue;\n }\n }\n\n if (\n isObject(target[key]) &&\n isObject(source[key])\n ) {\n if (context.map.has(source[key])) {\n const sourceKeys = Object.keys(source[key] as Record<string, any>);\n for (let j = 0; j < sourceKeys.length; j++) {\n if (\n isSafeKey(sourceKeys[j]) &&\n !hasOwnProperty(target[key] as Record<string, any>, sourceKeys[j])\n ) {\n (target[key] as Record<string, any>)[sourceKeys[j]] = (source[key] as Record<string, any>)[sourceKeys[j]];\n }\n }\n\n continue;\n }\n\n if (context.options.priority === PriorityName.RIGHT) {\n target[key] = baseMerger(\n context,\n source[key] as MergerSource,\n target[key] as MergerSource,\n ) as MergerSourceUnwrap<B>[keyof MergerSourceUnwrap<B>];\n } else {\n target[key] = baseMerger(\n context,\n target[key] as MergerSource,\n source[key] as MergerSource,\n ) as MergerSourceUnwrap<B>[keyof MergerSourceUnwrap<B>];\n }\n\n continue;\n }\n\n if (\n context.options.array &&\n Array.isArray(target[key]) &&\n Array.isArray(source[key])\n ) {\n const arrayPriority = context.options.priority !== context.options.arrayPriority ?\n togglePriority(context.options.arrayPriority) :\n context.options.arrayPriority;\n\n switch (arrayPriority) {\n case PriorityName.LEFT:\n Object.assign(target, {\n [key]: baseMerger(context, target[key] as MergerSource, source[key] as MergerSource),\n });\n break;\n case PriorityName.RIGHT:\n Object.assign(target, {\n [key]: baseMerger(context, source[key] as MergerSource, target[key] as MergerSource),\n });\n break;\n }\n }\n } else {\n Object.assign(target, {\n [key]: source[key],\n });\n }\n }\n }\n\n context.map = new WeakMap();\n\n if (context.options.priority === PriorityName.RIGHT) {\n return baseMerger(context, ...sources, target) as MergerResult<B>;\n }\n\n return baseMerger(context, target, ...sources) as MergerResult<B>;\n}\n\nexport function createMerger(input?: OptionsInput) : Merger {\n const options = buildOptions(input);\n\n return <B extends MergerSource[]>(\n ...sources: B\n ) : MergerResult<B> => {\n if (!sources.length) {\n throw new SyntaxError('At least one input element is required.');\n }\n\n const ctx : MergerContext = {\n options,\n map: new WeakMap<any, any>(),\n };\n\n if (options.clone) {\n return baseMerger(ctx, ...clone(sources));\n }\n\n if (!options.inPlace) {\n if (\n Array.isArray(sources.at(0)) &&\n options.arrayPriority === PriorityName.LEFT\n ) {\n sources.unshift([]);\n return baseMerger(ctx, ...sources);\n }\n\n if (\n Array.isArray(sources.at(-1)) &&\n options.arrayPriority === PriorityName.RIGHT\n ) {\n sources.push([]);\n return baseMerger(ctx, ...sources);\n }\n\n if (options.priority === PriorityName.LEFT) {\n sources.unshift({});\n } else {\n sources.push({});\n }\n }\n\n return baseMerger(ctx, ...sources);\n };\n}\n\nexport const merge = createMerger();\n","import { createMerger } from './module';\nimport type { MergerResult } from './type';\n\n/**\n * Assign source attributes to a target object.\n *\n * @param target\n * @param sources\n */\nexport function assign<A extends Record<string, any>, B extends Record<string, any>[]>(\n target: A,\n ...sources: B\n) : A & MergerResult<B> {\n return createMerger({\n inPlace: true,\n priority: 'left',\n array: false,\n })(target, ...sources) as A & MergerResult<B>;\n}\n"],"names":["PriorityName","isObject","item","Array","isArray","isSafeKey","key","isEqual","x","y","Object","is","Date","getTime","RegExp","toString","keysX","Reflect","ownKeys","keysY","length","i","has","distinctArray","arr","j","splice","gT","globalThis","self","window","global","Error","polyfillClone","input","map","WeakMap","fn","value","get","cloned","set","el","push","output","keys","clone","structuredClone","hasOwnProperty","obj","prop","prototype","call","buildOptions","options","array","arrayDistinct","inPlace","priority","LEFT","arrayPriority","togglePriority","RIGHT","baseMerger","context","sources","target","source","at","pop","shift","strategy","applied","sourceKeys","assign","createMerger","SyntaxError","ctx","unshift","merge"],"mappings":";;AAAO,IAAA,YAAKA,iBAAAA,SAAAA,YAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,YAAAA;AAGX,CAAA,CAAA,EAAA;;ACHM,SAASC,SAASC,IAAa,EAAA;IAClC,OACI,CAAC,CAACA,IAAAA,IACF,OAAOA,SAAS,QAAA,IAChB,CAACC,KAAAA,CAAMC,OAAO,CAACF,IAAAA,CAAAA;AAEvB;AAEO,SAASG,UAAUC,GAAW,EAAA;AACjC,IAAA,OAAOA,GAAAA,KAAQ,WAAA,IACXA,GAAAA,KAAQ,WAAA,IACRA,GAAAA,KAAQ,aAAA;AAChB;AAEO,SAASC,OAAAA,CAAQC,CAAM,EAAEC,CAAM,EAAA;AAClC,IAAA,IAAIC,MAAAA,CAAOC,EAAE,CAACH,CAAAA,EAAGC,IAAI,OAAO,IAAA;IAE5B,IAAID,CAAAA,YAAaI,IAAAA,IAAQH,CAAAA,YAAaG,IAAAA,EAAM;AACxC,QAAA,OAAOJ,CAAAA,CAAEK,OAAO,EAAA,KAAOJ,CAAAA,CAAEI,OAAO,EAAA;AACpC,IAAA;IAEA,IAAIL,CAAAA,YAAaM,MAAAA,IAAUL,CAAAA,YAAaK,MAAAA,EAAQ;AAC5C,QAAA,OAAON,CAAAA,CAAEO,QAAQ,EAAA,KAAON,CAAAA,CAAEM,QAAQ,EAAA;AACtC,IAAA;IAEA,IACId,QAAAA,CAASO,CAAAA,CAAAA,IACTP,QAAAA,CAASQ,CAAAA,CAAAA,EACX;QACE,MAAMO,KAAAA,GAAQC,OAAAA,CAAQC,OAAO,CAACV,CAAAA,CAAAA;QAC9B,MAAMW,KAAAA,GAAQF,OAAAA,CAAQC,OAAO,CAACT,CAAAA,CAAAA;AAC9B,QAAA,IAAIO,KAAAA,CAAMI,MAAM,KAAKD,KAAAA,CAAMC,MAAM,EAAE;YAC/B,OAAO,KAAA;AACX,QAAA;AAEA,QAAA,IAAK,IAAIC,CAAAA,GAAI,CAAA,EAAGA,IAAIL,KAAAA,CAAMI,MAAM,EAAEC,CAAAA,EAAAA,CAAK;YACnC,MAAMf,GAAAA,GAAMU,KAAK,CAACK,CAAAA,CAAE;AACpB,YAAA,IAAI,CAACJ,OAAAA,CAAQK,GAAG,CAACb,GAAGH,GAAAA,CAAAA,IAAQ,CAACC,OAAAA,CAAQC,CAAC,CAACF,GAAAA,CAAI,EAAEG,CAAC,CAACH,IAAI,CAAA,EAAG;gBAClD,OAAO,KAAA;AACX,YAAA;AACJ,QAAA;QAEA,OAAO,IAAA;AACX,IAAA;AAEA,IAAA,IACIH,MAAMC,OAAO,CAACI,MACdL,KAAAA,CAAMC,OAAO,CAACK,CAAAA,CAAAA,EAChB;AACE,QAAA,IAAID,CAAAA,CAAEY,MAAM,KAAKX,CAAAA,CAAEW,MAAM,EAAE;YACvB,OAAO,KAAA;AACX,QAAA;AAEA,QAAA,IAAK,IAAIC,CAAAA,GAAI,CAAA,EAAGA,IAAIb,CAAAA,CAAEY,MAAM,EAAEC,CAAAA,EAAAA,CAAK;YAC/B,IAAI,CAACd,QAAQC,CAAC,CAACa,EAAE,EAAEZ,CAAC,CAACY,CAAAA,CAAE,CAAA,EAAG;gBACtB,OAAO,KAAA;AACX,YAAA;AACJ,QAAA;QAEA,OAAO,IAAA;AACX,IAAA;IAEA,OAAO,KAAA;AACX;;AC7DO,SAASE,cAAuBC,GAAQ,EAAA;AAC3C,IAAA,IAAK,IAAIH,CAAAA,GAAI,CAAA,EAAGA,IAAIG,GAAAA,CAAIJ,MAAM,EAAEC,CAAAA,EAAAA,CAAK;QACjC,IAAK,IAAII,IAAID,GAAAA,CAAIJ,MAAM,GAAG,CAAA,EAAGK,CAAAA,GAAIJ,GAAGI,CAAAA,EAAAA,CAAK;YACrC,IAAIlB,OAAAA,CAAQiB,GAAG,CAACH,CAAAA,CAAE,EAAEG,GAAG,CAACC,EAAE,CAAA,EAAG;gBACzBD,GAAAA,CAAIE,MAAM,CAACD,CAAAA,EAAG,CAAA,CAAA;AAClB,YAAA;AACJ,QAAA;AACJ,IAAA;IAEA,OAAOD,GAAAA;AACX;;ACVA,2BACA,MAAMG,EAAAA,GAAM,CAAA,IAAA;IACR,IAAI,OAAOC,eAAe,WAAA,EAAa;QACnC,OAAOA,UAAAA;AACX,IAAA;;IAGA,IAAI,OAAOC,SAAS,WAAA,EAAa;;QAE7B,OAAOA,IAAAA;AACX,IAAA;IAEA,IAAI,OAAOC,WAAW,WAAA,EAAa;QAC/B,OAAOA,MAAAA;AACX,IAAA;IAEA,IAAI,OAAOC,WAAW,WAAA,EAAa;QAC/B,OAAOA,MAAAA;AACX,IAAA;AAEA,IAAA,MAAM,IAAIC,KAAAA,CAAM,gCAAA,CAAA;AACpB,CAAA,GAAA;AAEO,SAASC,cAAiBC,KAAQ,EAAA;AACrC,IAAA,MAAMC,MAAM,IAAIC,OAAAA,EAAAA;AAEhB,IAAA,MAAMC,KAAK,CAAIC,KAAAA,GAAAA;QACX,IAAInC,KAAAA,CAAMC,OAAO,CAACkC,KAAAA,CAAAA,EAAQ;YACtB,IAAIH,GAAAA,CAAIb,GAAG,CAACgB,KAAAA,CAAAA,EAAQ;gBAChB,OAAOH,GAAAA,CAAII,GAAG,CAACD,KAAAA,CAAAA;AACnB,YAAA;AAEA,YAAA,MAAME,SAAS,EAAE;YACjBL,GAAAA,CAAIM,GAAG,CAACH,KAAAA,EAAOE,MAAAA,CAAAA;YAEfF,KAAAA,CAAMH,GAAG,CAAC,CAACO,EAAAA,GAAO,MAACF,CAAiBG,IAAI,CAACN,EAAAA,CAAGK,EAAAA,CAAAA,CAAAA,CAAAA;YAE5C,OAAOF,MAAAA;AACX,QAAA;AAEA,QAAA,IAAIvC,SAASqC,KAAAA,CAAAA,EAAQ;YACjB,IAAIH,GAAAA,CAAIb,GAAG,CAACgB,KAAAA,CAAAA,EAAQ;gBAChB,OAAOH,GAAAA,CAAII,GAAG,CAACD,KAAAA,CAAAA;AACnB,YAAA;AAEA,YAAA,MAAMM,SAAS,EAAC;YAChB,MAAMC,IAAAA,GAAOnC,MAAAA,CAAOmC,IAAI,CAACP,KAAAA,CAAAA;YAEzBH,GAAAA,CAAIM,GAAG,CAACH,KAAAA,EAAOM,MAAAA,CAAAA;AACf,YAAA,IAAK,IAAIvB,CAAAA,GAAI,CAAA,EAAGA,IAAIwB,IAAAA,CAAKzB,MAAM,EAAEC,CAAAA,EAAAA,CAAK;AAClCuB,gBAAAA,MAAM,CAACC,IAAI,CAACxB,CAAAA,CAAE,CAAY,GAAGgB,EAAAA,CAAGC,KAAK,CAACO,IAAI,CAACxB,CAAAA,CAAE,CAAC,CAAA;AAClD,YAAA;YAEA,OAAOuB,MAAAA;AACX,QAAA;QAEA,OAAON,KAAAA;AACX,IAAA,CAAA;AAEA,IAAA,OAAOD,EAAAA,CAAGH,KAAAA,CAAAA;AACd;AAEA,2BACO,SAASY,KAAAA,CAASR,KAAQ,EAAA;IAC7B,IAAIX,EAAAA,CAAGoB,eAAe,EAAE;QACpB,OAAOpB,EAAAA,CAAGoB,eAAe,CAACT,KAAAA,CAAAA;AAC9B,IAAA;+BAGA,OAAOL,aAAAA,CAAcK,KAAAA,CAAAA;AACzB;;ACxEA;AACO,SAASU,cAAAA,CAAoDC,GAAM,EAAEC,IAAO,EAAA;AAC/E,IAAA,OAAOxC,OAAOyC,SAAS,CAACH,cAAc,CAACI,IAAI,CAACH,GAAAA,EAAKC,IAAAA,CAAAA;AACrD;;ACAO,SAASG,YAAAA,CAAaC,OAAAA,GAAwB,EAAE,EAAA;AACnDA,IAAAA,OAAAA,CAAQC,KAAK,GAAGD,OAAAA,CAAQC,KAAK,IAAI,IAAA;AACjCD,IAAAA,OAAAA,CAAQE,aAAa,GAAGF,OAAAA,CAAQE,aAAa,IAAI,KAAA;AACjDF,IAAAA,OAAAA,CAAQR,KAAK,GAAGQ,OAAAA,CAAQR,KAAK,IAAI,KAAA;AACjCQ,IAAAA,OAAAA,CAAQG,OAAO,GAAGH,OAAAA,CAAQG,OAAO,IAAI,KAAA;AACrCH,IAAAA,OAAAA,CAAQI,QAAQ,GAAGJ,OAAAA,CAAQI,QAAQ,IAAI1D,aAAa2D,IAAI;AACxDL,IAAAA,OAAAA,CAAQM,aAAa,GAAGN,OAAAA,CAAQM,aAAa,IAAIN,QAAQI,QAAQ;IAEjE,OAAOJ,OAAAA;AACX;AAEO,SAASO,eAAeH,QAA2B,EAAA;AACtD,IAAA,OAAOA,QAAAA,KAAa1D,YAAAA,CAAa2D,IAAI,GACjC,CAAA,EAAG3D,YAAAA,CAAa8D,KAAK,CAAA,CAAE,GACvB,CAAA,EAAG9D,YAAAA,CAAa2D,IAAI,CAAA,CAAE;AAC9B;;ACAA,SAASI,UAAAA,CACLC,OAAsB,EACtB,GAAGC,OAAU,EAAA;IAEb,IAAIC,MAAAA;IACJ,IAAIC,MAAAA;AAEJ,IAAA,IAAI,EAAET,QAAQ,EAAE,GAAGM,QAAQV,OAAO;IAClC,IAAIW,OAAAA,CAAQ7C,MAAM,IAAI,CAAA,EAAG;AACrB,QAAA,IACIjB,KAAAA,CAAMC,OAAO,CAAC6D,OAAAA,CAAQG,EAAE,CAAC,CAAA,CAAA,CAAA,IACzBjE,KAAAA,CAAMC,OAAO,CAAC6D,OAAAA,CAAQG,EAAE,CAAC,EAAC,CAAA,CAAA,EAC5B;YACEV,QAAAA,GAAWM,OAAAA,CAAQV,OAAO,CAACM,aAAa;AAC5C,QAAA;AACJ,IAAA;IAEA,IAAIF,QAAAA,KAAa1D,YAAAA,CAAa8D,KAAK,EAAE;AACjCI,QAAAA,MAAAA,GAASD,QAAQI,GAAG,EAAA;AACpBF,QAAAA,MAAAA,GAASF,QAAQI,GAAG,EAAA;IACxB,CAAA,MAAO;AACHH,QAAAA,MAAAA,GAASD,QAAQK,KAAK,EAAA;AACtBH,QAAAA,MAAAA,GAASF,QAAQK,KAAK,EAAA;AAC1B,IAAA;AAEA,IAAA,IAAI,CAACH,MAAAA,EAAQ;QACT,IACIhE,KAAAA,CAAMC,OAAO,CAAC8D,MAAAA,CAAAA,IACdF,QAAQV,OAAO,CAACE,aAAa,EAC/B;AACE,YAAA,OAAOjC,aAAAA,CAAc2C,MAAAA,CAAAA;AACzB,QAAA;QAEA,OAAOA,MAAAA;AACX,IAAA;AAEA,IAAA,IACI/D,MAAMC,OAAO,CAAC8D,WACd/D,KAAAA,CAAMC,OAAO,CAAC+D,MAAAA,CAAAA,EAChB;AACED,QAAAA,MAAAA,CAAOvB,IAAI,CAAA,GAAIwB,MAAAA,CAAAA;AAEf,QAAA,IAAIH,QAAQV,OAAO,CAACM,aAAa,KAAK5D,YAAAA,CAAa8D,KAAK,EAAE;YACtD,OAAOC,UAAAA,CACHC,YACGC,OAAAA,EACHC,MAAAA,CAAAA;AAER,QAAA;QAEA,OAAOH,UAAAA,CACHC,SACAE,MAAAA,EAAAA,GACGD,OAAAA,CAAAA;AAEX,IAAA;AAEAD,IAAAA,OAAAA,CAAQ7B,GAAG,CAACM,GAAG,CAAC0B,MAAAA,EAAQ,IAAA,CAAA;IAExB,IACIlE,QAAAA,CAASiE,MAAAA,CAAAA,IACTjE,QAAAA,CAASkE,MAAAA,CAAAA,EACX;QACE,MAAMtB,IAAAA,GAAOnC,MAAAA,CAAOmC,IAAI,CAACsB,MAAAA,CAAAA;AACzB,QAAA,IAAK,IAAI9C,CAAAA,GAAI,CAAA,EAAGA,IAAIwB,IAAAA,CAAKzB,MAAM,EAAEC,CAAAA,EAAAA,CAAK;YAClC,MAAMf,GAAAA,GAAMuC,IAAI,CAACxB,CAAAA,CAAE;YAEnB,IAAI2B,cAAAA,CAAekB,QAAQ5D,GAAAA,CAAAA,EAAM;gBAC7B,IAAI,CAACD,UAAUC,GAAAA,CAAAA,EAAgB;AAC3B,oBAAA;AACJ,gBAAA;AAEA,gBAAA,IAAI0D,OAAAA,CAAQV,OAAO,CAACiB,QAAQ,EAAE;oBAC1B,MAAMC,OAAAA,GAAUR,OAAAA,CAAQV,OAAO,CAACiB,QAAQ,CAACL,MAAAA,EAAQ5D,GAAAA,EAAe6D,MAAM,CAAC7D,GAAAA,CAAI,CAAA;oBAC3E,IAAI,OAAOkE,YAAY,WAAA,EAAa;AAChC,wBAAA;AACJ,oBAAA;AACJ,gBAAA;gBAEA,IACIvE,QAAAA,CAASiE,MAAM,CAAC5D,GAAAA,CAAI,KACpBL,QAAAA,CAASkE,MAAM,CAAC7D,GAAAA,CAAI,CAAA,EACtB;oBACE,IAAI0D,OAAAA,CAAQ7B,GAAG,CAACb,GAAG,CAAC6C,MAAM,CAAC7D,IAAI,CAAA,EAAG;AAC9B,wBAAA,MAAMmE,aAAa/D,MAAAA,CAAOmC,IAAI,CAACsB,MAAM,CAAC7D,GAAAA,CAAI,CAAA;AAC1C,wBAAA,IAAK,IAAImB,CAAAA,GAAI,CAAA,EAAGA,IAAIgD,UAAAA,CAAWrD,MAAM,EAAEK,CAAAA,EAAAA,CAAK;AACxC,4BAAA,IACIpB,SAAAA,CAAUoE,UAAU,CAAChD,CAAAA,CAAE,KACvB,CAACuB,cAAAA,CAAekB,MAAM,CAAC5D,GAAAA,CAAI,EAAyBmE,UAAU,CAAChD,EAAE,CAAA,EACnE;AACGyC,gCAAAA,MAAM,CAAC5D,GAAAA,CAA4B,CAACmE,UAAU,CAAChD,EAAE,CAAC,GAAG,MAAO,CAACnB,GAAAA,CAA4B,CAACmE,UAAU,CAAChD,EAAE,CAAC;AAC7G,4BAAA;AACJ,wBAAA;AAEA,wBAAA;AACJ,oBAAA;AAEA,oBAAA,IAAIuC,QAAQV,OAAO,CAACI,QAAQ,KAAK1D,YAAAA,CAAa8D,KAAK,EAAE;wBACjDI,MAAM,CAAC5D,GAAAA,CAAI,GAAGyD,UAAAA,CACVC,OAAAA,EACAG,MAAM,CAAC7D,GAAAA,CAAI,EACX4D,MAAM,CAAC5D,GAAAA,CAAI,CAAA;oBAEnB,CAAA,MAAO;wBACH4D,MAAM,CAAC5D,GAAAA,CAAI,GAAGyD,UAAAA,CACVC,OAAAA,EACAE,MAAM,CAAC5D,GAAAA,CAAI,EACX6D,MAAM,CAAC7D,GAAAA,CAAI,CAAA;AAEnB,oBAAA;AAEA,oBAAA;AACJ,gBAAA;AAEA,gBAAA,IACI0D,QAAQV,OAAO,CAACC,KAAK,IACrBpD,KAAAA,CAAMC,OAAO,CAAC8D,MAAM,CAAC5D,GAAAA,CAAI,KACzBH,KAAAA,CAAMC,OAAO,CAAC+D,MAAM,CAAC7D,IAAI,CAAA,EAC3B;oBACE,MAAMsD,aAAAA,GAAgBI,QAAQV,OAAO,CAACI,QAAQ,KAAKM,OAAAA,CAAQV,OAAO,CAACM,aAAa,GAC5EC,cAAAA,CAAeG,OAAAA,CAAQV,OAAO,CAACM,aAAa,IAC5CI,OAAAA,CAAQV,OAAO,CAACM,aAAa;oBAEjC,OAAQA,aAAAA;AACJ,wBAAA,KAAK5D,aAAa2D,IAAI;4BAClBjD,MAAAA,CAAOgE,MAAM,CAACR,MAAAA,EAAQ;gCAClB,CAAC5D,GAAAA,GAAMyD,UAAAA,CAAWC,OAAAA,EAASE,MAAM,CAAC5D,GAAAA,CAAI,EAAkB6D,MAAM,CAAC7D,GAAAA,CAAI;AACvE,6BAAA,CAAA;AACA,4BAAA;AACJ,wBAAA,KAAKN,aAAa8D,KAAK;4BACnBpD,MAAAA,CAAOgE,MAAM,CAACR,MAAAA,EAAQ;gCAClB,CAAC5D,GAAAA,GAAMyD,UAAAA,CAAWC,OAAAA,EAASG,MAAM,CAAC7D,GAAAA,CAAI,EAAkB4D,MAAM,CAAC5D,GAAAA,CAAI;AACvE,6BAAA,CAAA;AACA,4BAAA;AACR;AACJ,gBAAA;YACJ,CAAA,MAAO;gBACHI,MAAAA,CAAOgE,MAAM,CAACR,MAAAA,EAAQ;AAClB,oBAAA,CAAC5D,GAAAA,GAAM6D,MAAM,CAAC7D,GAAAA;AAClB,iBAAA,CAAA;AACJ,YAAA;AACJ,QAAA;AACJ,IAAA;IAEA0D,OAAAA,CAAQ7B,GAAG,GAAG,IAAIC,OAAAA,EAAAA;AAElB,IAAA,IAAI4B,QAAQV,OAAO,CAACI,QAAQ,KAAK1D,YAAAA,CAAa8D,KAAK,EAAE;QACjD,OAAOC,UAAAA,CAAWC,YAAYC,OAAAA,EAASC,MAAAA,CAAAA;AAC3C,IAAA;IAEA,OAAOH,UAAAA,CAAWC,SAASE,MAAAA,EAAAA,GAAWD,OAAAA,CAAAA;AAC1C;AAEO,SAASU,aAAazC,KAAoB,EAAA;AAC7C,IAAA,MAAMoB,UAAUD,YAAAA,CAAanB,KAAAA,CAAAA;AAE7B,IAAA,OAAO,CACH,GAAG+B,OAAAA,GAAAA;QAEH,IAAI,CAACA,OAAAA,CAAQ7C,MAAM,EAAE;AACjB,YAAA,MAAM,IAAIwD,WAAAA,CAAY,yCAAA,CAAA;AAC1B,QAAA;AAEA,QAAA,MAAMC,GAAAA,GAAsB;AACxBvB,YAAAA,OAAAA;AACAnB,YAAAA,GAAAA,EAAK,IAAIC,OAAAA;AACb,SAAA;QAEA,IAAIkB,OAAAA,CAAQR,KAAK,EAAE;YACf,OAAOiB,UAAAA,CAAWc,QAAQ/B,KAAAA,CAAMmB,OAAAA,CAAAA,CAAAA;AACpC,QAAA;QAEA,IAAI,CAACX,OAAAA,CAAQG,OAAO,EAAE;AAClB,YAAA,IACItD,KAAAA,CAAMC,OAAO,CAAC6D,OAAAA,CAAQG,EAAE,CAAC,CAAA,CAAA,CAAA,IACzBd,OAAAA,CAAQM,aAAa,KAAK5D,YAAAA,CAAa2D,IAAI,EAC7C;gBACEM,OAAAA,CAAQa,OAAO,CAAC,EAAE,CAAA;AAClB,gBAAA,OAAOf,WAAWc,GAAAA,EAAAA,GAAQZ,OAAAA,CAAAA;AAC9B,YAAA;AAEA,YAAA,IACI9D,KAAAA,CAAMC,OAAO,CAAC6D,OAAAA,CAAQG,EAAE,CAAC,EAAC,CAAA,CAAA,IAC1Bd,OAAAA,CAAQM,aAAa,KAAK5D,YAAAA,CAAa8D,KAAK,EAC9C;gBACEG,OAAAA,CAAQtB,IAAI,CAAC,EAAE,CAAA;AACf,gBAAA,OAAOoB,WAAWc,GAAAA,EAAAA,GAAQZ,OAAAA,CAAAA;AAC9B,YAAA;AAEA,YAAA,IAAIX,OAAAA,CAAQI,QAAQ,KAAK1D,YAAAA,CAAa2D,IAAI,EAAE;gBACxCM,OAAAA,CAAQa,OAAO,CAAC,EAAC,CAAA;YACrB,CAAA,MAAO;gBACHb,OAAAA,CAAQtB,IAAI,CAAC,EAAC,CAAA;AAClB,YAAA;AACJ,QAAA;AAEA,QAAA,OAAOoB,WAAWc,GAAAA,EAAAA,GAAQZ,OAAAA,CAAAA;AAC9B,IAAA,CAAA;AACJ;AAEO,MAAMc,QAAQJ,YAAAA;;ACvNrB;;;;;AAKC,IACM,SAASD,MAAAA,CACZR,MAAS,EACT,GAAGD,OAAU,EAAA;AAEb,IAAA,OAAOU,YAAAA,CAAa;QAChBlB,OAAAA,EAAS,IAAA;QACTC,QAAAA,EAAU,MAAA;QACVH,KAAAA,EAAO;AACX,KAAA,CAAA,CAAGW,MAAAA,EAAAA,GAAWD,OAAAA,CAAAA;AAClB;;;;;;;;;;;;;;;;"}
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- var PriorityName;
2
- (function(PriorityName) {
1
+ var PriorityName = /*#__PURE__*/ function(PriorityName) {
3
2
  PriorityName["LEFT"] = "left";
4
3
  PriorityName["RIGHT"] = "right";
5
- })(PriorityName || (PriorityName = {}));
4
+ return PriorityName;
5
+ }({});
6
6
 
7
7
  function isObject(item) {
8
8
  return !!item && typeof item === 'object' && !Array.isArray(item);
@@ -115,14 +115,10 @@ function hasOwnProperty(obj, prop) {
115
115
  }
116
116
 
117
117
  function buildOptions(options = {}) {
118
- var _options_array;
119
- options.array = (_options_array = options.array) != null ? _options_array : true;
120
- var _options_arrayDistinct;
121
- options.arrayDistinct = (_options_arrayDistinct = options.arrayDistinct) != null ? _options_arrayDistinct : false;
122
- var _options_clone;
123
- options.clone = (_options_clone = options.clone) != null ? _options_clone : false;
124
- var _options_inPlace;
125
- options.inPlace = (_options_inPlace = options.inPlace) != null ? _options_inPlace : false;
118
+ options.array = options.array ?? true;
119
+ options.arrayDistinct = options.arrayDistinct ?? false;
120
+ options.clone = options.clone ?? false;
121
+ options.inPlace = options.inPlace ?? false;
126
122
  options.priority = options.priority || PriorityName.LEFT;
127
123
  options.arrayPriority = options.arrayPriority || options.priority;
128
124
  return options;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/utils/check.ts","../src/utils/array.ts","../src/utils/clone.ts","../src/utils/object.ts","../src/utils/options.ts","../src/module.ts","../src/presets.ts"],"sourcesContent":["export enum PriorityName {\n LEFT = 'left',\n RIGHT = 'right',\n}\n","export function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n\nexport function isSafeKey(key: string) : boolean {\n return key !== '__proto__' &&\n key !== 'prototype' &&\n key !== 'constructor';\n}\n\nexport function isEqual(x: any, y: any): boolean {\n if (Object.is(x, y)) return true;\n\n if (x instanceof Date && y instanceof Date) {\n return x.getTime() === y.getTime();\n }\n\n if (x instanceof RegExp && y instanceof RegExp) {\n return x.toString() === y.toString();\n }\n\n if (\n isObject(x) &&\n isObject(y)\n ) {\n const keysX = Reflect.ownKeys(x) as string[];\n const keysY = Reflect.ownKeys(y) as string[];\n if (keysX.length !== keysY.length) {\n return false;\n }\n\n for (let i = 0; i < keysX.length; i++) {\n const key = keysX[i];\n if (!Reflect.has(y, key) || !isEqual(x[key], y[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (\n Array.isArray(x) &&\n Array.isArray(y)\n ) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (let i = 0; i < x.length; i++) {\n if (!isEqual(x[i], y[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n","import { isEqual } from './check';\n\nexport function distinctArray<T = any>(arr: T[]) : T[] {\n for (let i = 0; i < arr.length; i++) {\n for (let j = arr.length - 1; j > i; j--) {\n if (isEqual(arr[i], arr[j])) {\n arr.splice(j, 1);\n }\n }\n }\n\n return arr;\n}\n","import { isObject } from './check';\n\n/* istanbul ignore next */\nconst gT = (() => {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line no-restricted-globals\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n throw new Error('unable to locate global object');\n})();\n\nexport function polyfillClone<T>(input: T) {\n const map = new WeakMap();\n\n const fn = <A>(value: A) : A => {\n if (Array.isArray(value)) {\n if (map.has(value)) {\n return map.get(value);\n }\n\n const cloned = [] as A;\n map.set(value, cloned);\n\n value.map((el) => (cloned as any[]).push(fn(el)));\n\n return cloned;\n }\n\n if (isObject(value)) {\n if (map.has(value)) {\n return map.get(value);\n }\n\n const output = {} as A;\n const keys = Object.keys(value);\n\n map.set(value, output);\n for (let i = 0; i < keys.length; i++) {\n output[keys[i] as keyof A] = fn(value[keys[i]]);\n }\n\n return output;\n }\n\n return value;\n };\n\n return fn(input);\n}\n\n/* istanbul ignore next */\nexport function clone<T>(value: T) : T {\n if (gT.structuredClone) {\n return gT.structuredClone(value);\n }\n\n /* istanbul ignore next */\n return polyfillClone(value);\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","import { PriorityName } from '../constants';\nimport type { Options, OptionsInput } from '../type';\n\nexport function buildOptions(options: OptionsInput = {}) : Options {\n options.array = options.array ?? true;\n options.arrayDistinct = options.arrayDistinct ?? false;\n options.clone = options.clone ?? false;\n options.inPlace = options.inPlace ?? false;\n options.priority = options.priority || PriorityName.LEFT;\n options.arrayPriority = options.arrayPriority || options.priority;\n\n return options as Options;\n}\n\nexport function togglePriority(priority: `${PriorityName}`) {\n return priority === PriorityName.LEFT ?\n `${PriorityName.RIGHT}` :\n `${PriorityName.LEFT}`;\n}\n","import { PriorityName } from './constants';\nimport type {\n Merger, MergerContext,\n MergerResult,\n MergerSource,\n MergerSourceUnwrap,\n OptionsInput,\n} from './type';\n\nimport {\n buildOptions,\n clone,\n distinctArray,\n hasOwnProperty,\n isObject,\n isSafeKey, togglePriority,\n} from './utils';\n\nfunction baseMerger<B extends MergerSource[]>(\n context: MergerContext,\n ...sources: B\n) : MergerResult<B> {\n let target : MergerSourceUnwrap<B>;\n let source : MergerSourceUnwrap<B> | undefined;\n\n let { priority } = context.options;\n if (sources.length >= 2) {\n if (\n Array.isArray(sources.at(0)) &&\n Array.isArray(sources.at(-1))\n ) {\n priority = context.options.arrayPriority;\n }\n }\n\n if (priority === PriorityName.RIGHT) {\n target = sources.pop() as MergerSourceUnwrap<B>;\n source = sources.pop() as MergerSourceUnwrap<B>;\n } else {\n target = sources.shift() as MergerSourceUnwrap<B>;\n source = sources.shift() as MergerSourceUnwrap<B>;\n }\n\n if (!source) {\n if (\n Array.isArray(target) &&\n context.options.arrayDistinct\n ) {\n return distinctArray(target) as MergerResult<B>;\n }\n\n return target as MergerResult<B>;\n }\n\n if (\n Array.isArray(target) &&\n Array.isArray(source)\n ) {\n target.push(...source as MergerSource[]);\n\n if (context.options.arrayPriority === PriorityName.RIGHT) {\n return baseMerger(\n context,\n ...sources,\n target,\n ) as MergerResult<B>;\n }\n\n return baseMerger(\n context,\n target,\n ...sources,\n ) as MergerResult<B>;\n }\n\n context.map.set(source, true);\n\n if (\n isObject(target) &&\n isObject(source)\n ) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as (keyof MergerSourceUnwrap<B>);\n\n if (hasOwnProperty(target, key)) {\n if (!isSafeKey(key as string)) {\n continue;\n }\n\n if (context.options.strategy) {\n const applied = context.options.strategy(target, key as string, source[key]);\n if (typeof applied !== 'undefined') {\n continue;\n }\n }\n\n if (\n isObject(target[key]) &&\n isObject(source[key])\n ) {\n if (context.map.has(source[key])) {\n const sourceKeys = Object.keys(source[key] as Record<string, any>);\n for (let j = 0; j < sourceKeys.length; j++) {\n if (\n isSafeKey(sourceKeys[j]) &&\n !hasOwnProperty(target[key] as Record<string, any>, sourceKeys[j])\n ) {\n (target[key] as Record<string, any>)[sourceKeys[j]] = (source[key] as Record<string, any>)[sourceKeys[j]];\n }\n }\n\n continue;\n }\n\n if (context.options.priority === PriorityName.RIGHT) {\n target[key] = baseMerger(\n context,\n source[key] as MergerSource,\n target[key] as MergerSource,\n ) as MergerSourceUnwrap<B>[keyof MergerSourceUnwrap<B>];\n } else {\n target[key] = baseMerger(\n context,\n target[key] as MergerSource,\n source[key] as MergerSource,\n ) as MergerSourceUnwrap<B>[keyof MergerSourceUnwrap<B>];\n }\n\n continue;\n }\n\n if (\n context.options.array &&\n Array.isArray(target[key]) &&\n Array.isArray(source[key])\n ) {\n const arrayPriority = context.options.priority !== context.options.arrayPriority ?\n togglePriority(context.options.arrayPriority) :\n context.options.arrayPriority;\n\n switch (arrayPriority) {\n case PriorityName.LEFT:\n Object.assign(target, {\n [key]: baseMerger(context, target[key] as MergerSource, source[key] as MergerSource),\n });\n break;\n case PriorityName.RIGHT:\n Object.assign(target, {\n [key]: baseMerger(context, source[key] as MergerSource, target[key] as MergerSource),\n });\n break;\n }\n }\n } else {\n Object.assign(target, {\n [key]: source[key],\n });\n }\n }\n }\n\n context.map = new WeakMap();\n\n if (context.options.priority === PriorityName.RIGHT) {\n return baseMerger(context, ...sources, target) as MergerResult<B>;\n }\n\n return baseMerger(context, target, ...sources) as MergerResult<B>;\n}\n\nexport function createMerger(input?: OptionsInput) : Merger {\n const options = buildOptions(input);\n\n return <B extends MergerSource[]>(\n ...sources: B\n ) : MergerResult<B> => {\n if (!sources.length) {\n throw new SyntaxError('At least one input element is required.');\n }\n\n const ctx : MergerContext = {\n options,\n map: new WeakMap<any, any>(),\n };\n\n if (options.clone) {\n return baseMerger(ctx, ...clone(sources));\n }\n\n if (!options.inPlace) {\n if (\n Array.isArray(sources.at(0)) &&\n options.arrayPriority === PriorityName.LEFT\n ) {\n sources.unshift([]);\n return baseMerger(ctx, ...sources);\n }\n\n if (\n Array.isArray(sources.at(-1)) &&\n options.arrayPriority === PriorityName.RIGHT\n ) {\n sources.push([]);\n return baseMerger(ctx, ...sources);\n }\n\n if (options.priority === PriorityName.LEFT) {\n sources.unshift({});\n } else {\n sources.push({});\n }\n }\n\n return baseMerger(ctx, ...sources);\n };\n}\n\nexport const merge = createMerger();\n","import { createMerger } from './module';\nimport type { MergerResult } from './type';\n\n/**\n * Assign source attributes to a target object.\n *\n * @param target\n * @param sources\n */\nexport function assign<A extends Record<string, any>, B extends Record<string, any>[]>(\n target: A,\n ...sources: B\n) : A & MergerResult<B> {\n return createMerger({\n inPlace: true,\n priority: 'left',\n array: false,\n })(target, ...sources) as A & MergerResult<B>;\n}\n"],"names":["PriorityName","isObject","item","Array","isArray","isSafeKey","key","isEqual","x","y","Object","is","Date","getTime","RegExp","toString","keysX","Reflect","ownKeys","keysY","length","i","has","distinctArray","arr","j","splice","gT","globalThis","self","window","global","Error","polyfillClone","input","map","WeakMap","fn","value","get","cloned","set","el","push","output","keys","clone","structuredClone","hasOwnProperty","obj","prop","prototype","call","buildOptions","options","array","arrayDistinct","inPlace","priority","LEFT","arrayPriority","togglePriority","RIGHT","baseMerger","context","sources","target","source","at","pop","shift","strategy","applied","sourceKeys","assign","createMerger","SyntaxError","ctx","unshift","merge"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/utils/check.ts","../src/utils/array.ts","../src/utils/clone.ts","../src/utils/object.ts","../src/utils/options.ts","../src/module.ts","../src/presets.ts"],"sourcesContent":["export enum PriorityName {\n LEFT = 'left',\n RIGHT = 'right',\n}\n","export function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n\nexport function isSafeKey(key: string) : boolean {\n return key !== '__proto__' &&\n key !== 'prototype' &&\n key !== 'constructor';\n}\n\nexport function isEqual(x: any, y: any): boolean {\n if (Object.is(x, y)) return true;\n\n if (x instanceof Date && y instanceof Date) {\n return x.getTime() === y.getTime();\n }\n\n if (x instanceof RegExp && y instanceof RegExp) {\n return x.toString() === y.toString();\n }\n\n if (\n isObject(x) &&\n isObject(y)\n ) {\n const keysX = Reflect.ownKeys(x) as string[];\n const keysY = Reflect.ownKeys(y) as string[];\n if (keysX.length !== keysY.length) {\n return false;\n }\n\n for (let i = 0; i < keysX.length; i++) {\n const key = keysX[i];\n if (!Reflect.has(y, key) || !isEqual(x[key], y[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (\n Array.isArray(x) &&\n Array.isArray(y)\n ) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (let i = 0; i < x.length; i++) {\n if (!isEqual(x[i], y[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n","import { isEqual } from './check';\n\nexport function distinctArray<T = any>(arr: T[]) : T[] {\n for (let i = 0; i < arr.length; i++) {\n for (let j = arr.length - 1; j > i; j--) {\n if (isEqual(arr[i], arr[j])) {\n arr.splice(j, 1);\n }\n }\n }\n\n return arr;\n}\n","import { isObject } from './check';\n\n/* istanbul ignore next */\nconst gT = (() => {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line no-restricted-globals\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n throw new Error('unable to locate global object');\n})();\n\nexport function polyfillClone<T>(input: T) {\n const map = new WeakMap();\n\n const fn = <A>(value: A) : A => {\n if (Array.isArray(value)) {\n if (map.has(value)) {\n return map.get(value);\n }\n\n const cloned = [] as A;\n map.set(value, cloned);\n\n value.map((el) => (cloned as any[]).push(fn(el)));\n\n return cloned;\n }\n\n if (isObject(value)) {\n if (map.has(value)) {\n return map.get(value);\n }\n\n const output = {} as A;\n const keys = Object.keys(value);\n\n map.set(value, output);\n for (let i = 0; i < keys.length; i++) {\n output[keys[i] as keyof A] = fn(value[keys[i]]);\n }\n\n return output;\n }\n\n return value;\n };\n\n return fn(input);\n}\n\n/* istanbul ignore next */\nexport function clone<T>(value: T) : T {\n if (gT.structuredClone) {\n return gT.structuredClone(value);\n }\n\n /* istanbul ignore next */\n return polyfillClone(value);\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","import { PriorityName } from '../constants';\nimport type { Options, OptionsInput } from '../type';\n\nexport function buildOptions(options: OptionsInput = {}) : Options {\n options.array = options.array ?? true;\n options.arrayDistinct = options.arrayDistinct ?? false;\n options.clone = options.clone ?? false;\n options.inPlace = options.inPlace ?? false;\n options.priority = options.priority || PriorityName.LEFT;\n options.arrayPriority = options.arrayPriority || options.priority;\n\n return options as Options;\n}\n\nexport function togglePriority(priority: `${PriorityName}`) {\n return priority === PriorityName.LEFT ?\n `${PriorityName.RIGHT}` :\n `${PriorityName.LEFT}`;\n}\n","import { PriorityName } from './constants';\nimport type {\n Merger, MergerContext,\n MergerResult,\n MergerSource,\n MergerSourceUnwrap,\n OptionsInput,\n} from './type';\n\nimport {\n buildOptions,\n clone,\n distinctArray,\n hasOwnProperty,\n isObject,\n isSafeKey, togglePriority,\n} from './utils';\n\nfunction baseMerger<B extends MergerSource[]>(\n context: MergerContext,\n ...sources: B\n) : MergerResult<B> {\n let target : MergerSourceUnwrap<B>;\n let source : MergerSourceUnwrap<B> | undefined;\n\n let { priority } = context.options;\n if (sources.length >= 2) {\n if (\n Array.isArray(sources.at(0)) &&\n Array.isArray(sources.at(-1))\n ) {\n priority = context.options.arrayPriority;\n }\n }\n\n if (priority === PriorityName.RIGHT) {\n target = sources.pop() as MergerSourceUnwrap<B>;\n source = sources.pop() as MergerSourceUnwrap<B>;\n } else {\n target = sources.shift() as MergerSourceUnwrap<B>;\n source = sources.shift() as MergerSourceUnwrap<B>;\n }\n\n if (!source) {\n if (\n Array.isArray(target) &&\n context.options.arrayDistinct\n ) {\n return distinctArray(target) as MergerResult<B>;\n }\n\n return target as MergerResult<B>;\n }\n\n if (\n Array.isArray(target) &&\n Array.isArray(source)\n ) {\n target.push(...source as MergerSource[]);\n\n if (context.options.arrayPriority === PriorityName.RIGHT) {\n return baseMerger(\n context,\n ...sources,\n target,\n ) as MergerResult<B>;\n }\n\n return baseMerger(\n context,\n target,\n ...sources,\n ) as MergerResult<B>;\n }\n\n context.map.set(source, true);\n\n if (\n isObject(target) &&\n isObject(source)\n ) {\n const keys = Object.keys(source);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as (keyof MergerSourceUnwrap<B>);\n\n if (hasOwnProperty(target, key)) {\n if (!isSafeKey(key as string)) {\n continue;\n }\n\n if (context.options.strategy) {\n const applied = context.options.strategy(target, key as string, source[key]);\n if (typeof applied !== 'undefined') {\n continue;\n }\n }\n\n if (\n isObject(target[key]) &&\n isObject(source[key])\n ) {\n if (context.map.has(source[key])) {\n const sourceKeys = Object.keys(source[key] as Record<string, any>);\n for (let j = 0; j < sourceKeys.length; j++) {\n if (\n isSafeKey(sourceKeys[j]) &&\n !hasOwnProperty(target[key] as Record<string, any>, sourceKeys[j])\n ) {\n (target[key] as Record<string, any>)[sourceKeys[j]] = (source[key] as Record<string, any>)[sourceKeys[j]];\n }\n }\n\n continue;\n }\n\n if (context.options.priority === PriorityName.RIGHT) {\n target[key] = baseMerger(\n context,\n source[key] as MergerSource,\n target[key] as MergerSource,\n ) as MergerSourceUnwrap<B>[keyof MergerSourceUnwrap<B>];\n } else {\n target[key] = baseMerger(\n context,\n target[key] as MergerSource,\n source[key] as MergerSource,\n ) as MergerSourceUnwrap<B>[keyof MergerSourceUnwrap<B>];\n }\n\n continue;\n }\n\n if (\n context.options.array &&\n Array.isArray(target[key]) &&\n Array.isArray(source[key])\n ) {\n const arrayPriority = context.options.priority !== context.options.arrayPriority ?\n togglePriority(context.options.arrayPriority) :\n context.options.arrayPriority;\n\n switch (arrayPriority) {\n case PriorityName.LEFT:\n Object.assign(target, {\n [key]: baseMerger(context, target[key] as MergerSource, source[key] as MergerSource),\n });\n break;\n case PriorityName.RIGHT:\n Object.assign(target, {\n [key]: baseMerger(context, source[key] as MergerSource, target[key] as MergerSource),\n });\n break;\n }\n }\n } else {\n Object.assign(target, {\n [key]: source[key],\n });\n }\n }\n }\n\n context.map = new WeakMap();\n\n if (context.options.priority === PriorityName.RIGHT) {\n return baseMerger(context, ...sources, target) as MergerResult<B>;\n }\n\n return baseMerger(context, target, ...sources) as MergerResult<B>;\n}\n\nexport function createMerger(input?: OptionsInput) : Merger {\n const options = buildOptions(input);\n\n return <B extends MergerSource[]>(\n ...sources: B\n ) : MergerResult<B> => {\n if (!sources.length) {\n throw new SyntaxError('At least one input element is required.');\n }\n\n const ctx : MergerContext = {\n options,\n map: new WeakMap<any, any>(),\n };\n\n if (options.clone) {\n return baseMerger(ctx, ...clone(sources));\n }\n\n if (!options.inPlace) {\n if (\n Array.isArray(sources.at(0)) &&\n options.arrayPriority === PriorityName.LEFT\n ) {\n sources.unshift([]);\n return baseMerger(ctx, ...sources);\n }\n\n if (\n Array.isArray(sources.at(-1)) &&\n options.arrayPriority === PriorityName.RIGHT\n ) {\n sources.push([]);\n return baseMerger(ctx, ...sources);\n }\n\n if (options.priority === PriorityName.LEFT) {\n sources.unshift({});\n } else {\n sources.push({});\n }\n }\n\n return baseMerger(ctx, ...sources);\n };\n}\n\nexport const merge = createMerger();\n","import { createMerger } from './module';\nimport type { MergerResult } from './type';\n\n/**\n * Assign source attributes to a target object.\n *\n * @param target\n * @param sources\n */\nexport function assign<A extends Record<string, any>, B extends Record<string, any>[]>(\n target: A,\n ...sources: B\n) : A & MergerResult<B> {\n return createMerger({\n inPlace: true,\n priority: 'left',\n array: false,\n })(target, ...sources) as A & MergerResult<B>;\n}\n"],"names":["PriorityName","isObject","item","Array","isArray","isSafeKey","key","isEqual","x","y","Object","is","Date","getTime","RegExp","toString","keysX","Reflect","ownKeys","keysY","length","i","has","distinctArray","arr","j","splice","gT","globalThis","self","window","global","Error","polyfillClone","input","map","WeakMap","fn","value","get","cloned","set","el","push","output","keys","clone","structuredClone","hasOwnProperty","obj","prop","prototype","call","buildOptions","options","array","arrayDistinct","inPlace","priority","LEFT","arrayPriority","togglePriority","RIGHT","baseMerger","context","sources","target","source","at","pop","shift","strategy","applied","sourceKeys","assign","createMerger","SyntaxError","ctx","unshift","merge"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smob",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Zero dependency library to safe merge objects.",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
@@ -14,8 +14,11 @@
14
14
  }
15
15
  },
16
16
  "files": [
17
- "dist/"
17
+ "dist"
18
18
  ],
19
+ "engines": {
20
+ "node": ">=22.0.0"
21
+ },
19
22
  "scripts": {
20
23
  "build:types": "tsc --emitDeclarationOnly",
21
24
  "build:js": "rollup -c",
@@ -23,8 +26,8 @@
23
26
  "commit": "npx git-cz",
24
27
  "lint": "eslint --ext .js,.ts ./src",
25
28
  "lint:fix": "npm run lint -- --fix",
26
- "test": "cross-env NODE_ENV=test jest --config ./test/jest.config.js",
27
- "test:coverage": "npm run test -- --coverage",
29
+ "test": "cross-env NODE_ENV=test vitest run --config test/vitest.config.ts",
30
+ "test:coverage": "cross-env NODE_ENV=test vitest run --config test/vitest.config.ts --coverage",
28
31
  "prepare": "npx husky install",
29
32
  "prepublishOnly": "npm run build"
30
33
  },
@@ -51,21 +54,19 @@
51
54
  },
52
55
  "homepage": "https://github.com/Tada5hi/smob#readme",
53
56
  "devDependencies": {
54
- "@rollup/plugin-node-resolve": "^15.2.3",
55
- "@swc/core": "^1.4.11",
56
- "@swc/jest": "^0.2.29",
57
- "@tada5hi/commitlint-config": "^1.2.0",
58
- "@tada5hi/eslint-config-typescript": "^1.2.10",
59
- "@tada5hi/semantic-release": "^0.3.1",
60
- "@tada5hi/tsconfig": "^0.5.1",
61
- "@types/jest": "^29.5.3",
62
- "@types/node": "^20.10.4",
63
- "cross-env": "^7.0.3",
64
- "eslint": "^8.57.0",
65
- "husky": "^9.0.11",
66
- "jest": "^29.6.1",
67
- "rollup": "^4.13.2",
68
- "semantic-release": "^23.0.6",
69
- "typescript": "^5.4.3"
57
+ "@rollup/plugin-node-resolve": "^16.0.3",
58
+ "@swc/core": "^1.15.11",
59
+ "@tada5hi/commitlint-config": "^1.2.7",
60
+ "@tada5hi/eslint-config-typescript": "^1.2.18",
61
+ "@tada5hi/tsconfig": "^0.7.0",
62
+ "@types/node": "^25.2.3",
63
+ "@vitest/coverage-v8": "^4.0.18",
64
+ "cross-env": "^10.1.0",
65
+ "eslint": "^8.57.1",
66
+ "husky": "^9.1.7",
67
+ "rollup": "^4.57.1",
68
+ "typescript": "^5.9.3",
69
+ "vitest": "^4.0.18",
70
+ "workspaces-publish": "^1.6.0"
70
71
  }
71
72
  }