smob 1.4.0 → 1.5.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/README.MD +3 -2
- package/dist/index.cjs +30 -66
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +30 -66
- package/dist/index.mjs.map +1 -1
- package/dist/type.d.ts +8 -0
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/options.d.ts +2 -0
- package/package.json +16 -16
- package/dist/utils/cut.d.ts +0 -1
package/README.MD
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://snyk.io/test/github/Tada5hi/smob?targetFile=package.json)
|
|
7
7
|
[](https://github.com/semantic-release/semantic-release)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
A zero dependency library to **s**afe **m**erge **ob**jects and arrays with customizable behavior.
|
|
10
10
|
|
|
11
11
|
**Table of Contents**
|
|
12
12
|
|
|
@@ -33,9 +33,10 @@ const output = merge(...sources);
|
|
|
33
33
|
The following merge options are set by default:
|
|
34
34
|
- **array**: `true` Merge object array properties.
|
|
35
35
|
- **arrayDistinct**: `false` Remove duplicates, when merging array elements.
|
|
36
|
+
- **arrayPriority**: `left` (options.priority) The source aka leftmost array has by **default** the highest priority.
|
|
36
37
|
- **clone**: `false` Deep clone input sources.
|
|
37
38
|
- **inPlace**: `false` Merge sources in place.
|
|
38
|
-
- **priority**: `left` The source aka leftmost
|
|
39
|
+
- **priority**: `left` The source aka leftmost object has by **default** the highest priority.
|
|
39
40
|
|
|
40
41
|
The merge behaviour can be changed by creating a custom [merger](#merger).
|
|
41
42
|
|
package/dist/index.cjs
CHANGED
|
@@ -1,22 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* Copyright (c) 2023.
|
|
5
|
-
* Author Peter Placzek (tada5hi)
|
|
6
|
-
* For the full copyright and license information,
|
|
7
|
-
* view the LICENSE file that was distributed with this source code.
|
|
8
|
-
*/ exports.PriorityName = void 0;
|
|
3
|
+
exports.PriorityName = void 0;
|
|
9
4
|
(function(PriorityName) {
|
|
10
|
-
PriorityName["LEFT"] =
|
|
11
|
-
PriorityName["RIGHT"] =
|
|
5
|
+
PriorityName["LEFT"] = "left";
|
|
6
|
+
PriorityName["RIGHT"] = "right";
|
|
12
7
|
})(exports.PriorityName || (exports.PriorityName = {}));
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
* Copyright (c) 2022.
|
|
16
|
-
* Author Peter Placzek (tada5hi)
|
|
17
|
-
* For the full copyright and license information,
|
|
18
|
-
* view the LICENSE file that was distributed with this source code.
|
|
19
|
-
*/ function isObject(item) {
|
|
9
|
+
function isObject(item) {
|
|
20
10
|
return !!item && typeof item === 'object' && !Array.isArray(item);
|
|
21
11
|
}
|
|
22
12
|
function isSafeKey(key) {
|
|
@@ -121,51 +111,12 @@ function polyfillClone(input) {
|
|
|
121
111
|
/* istanbul ignore next */ return polyfillClone(value);
|
|
122
112
|
}
|
|
123
113
|
|
|
124
|
-
|
|
125
|
-
* Copyright (c) 2022.
|
|
126
|
-
* Author Peter Placzek (tada5hi)
|
|
127
|
-
* For the full copyright and license information,
|
|
128
|
-
* view the LICENSE file that was distributed with this source code.
|
|
129
|
-
*/ function _extends() {
|
|
130
|
-
_extends = Object.assign || function(target) {
|
|
131
|
-
for(var i = 1; i < arguments.length; i++){
|
|
132
|
-
var source = arguments[i];
|
|
133
|
-
for(var key in source){
|
|
134
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
135
|
-
target[key] = source[key];
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return target;
|
|
140
|
-
};
|
|
141
|
-
return _extends.apply(this, arguments);
|
|
142
|
-
}
|
|
143
|
-
function cutObject(input, depth) {
|
|
144
|
-
if (depth < 0) {
|
|
145
|
-
return {};
|
|
146
|
-
}
|
|
147
|
-
const value = _extends({}, input);
|
|
148
|
-
const keys = Object.keys(value);
|
|
149
|
-
for(let i = 0; i < keys.length; i++){
|
|
150
|
-
if (isObject(value[keys[i]])) {
|
|
151
|
-
value[keys[i]] = cutObject(value[keys[i]], depth - 1);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return value;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/*
|
|
158
|
-
* Copyright (c) 2021.
|
|
159
|
-
* Author Peter Placzek (tada5hi)
|
|
160
|
-
* For the full copyright and license information,
|
|
161
|
-
* view the LICENSE file that was distributed with this source code.
|
|
162
|
-
*/ // eslint-disable-next-line @typescript-eslint/ban-types
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
163
115
|
function hasOwnProperty(obj, prop) {
|
|
164
116
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
165
117
|
}
|
|
166
118
|
|
|
167
|
-
function buildOptions(options) {
|
|
168
|
-
options = options || {};
|
|
119
|
+
function buildOptions(options = {}) {
|
|
169
120
|
var _options_array;
|
|
170
121
|
options.array = (_options_array = options.array) != null ? _options_array : true;
|
|
171
122
|
var _options_arrayDistinct;
|
|
@@ -175,13 +126,23 @@ function buildOptions(options) {
|
|
|
175
126
|
var _options_inPlace;
|
|
176
127
|
options.inPlace = (_options_inPlace = options.inPlace) != null ? _options_inPlace : false;
|
|
177
128
|
options.priority = options.priority || exports.PriorityName.LEFT;
|
|
129
|
+
options.arrayPriority = options.arrayPriority || options.priority;
|
|
178
130
|
return options;
|
|
179
131
|
}
|
|
132
|
+
function togglePriority(priority) {
|
|
133
|
+
return priority === exports.PriorityName.LEFT ? `${exports.PriorityName.RIGHT}` : `${exports.PriorityName.LEFT}`;
|
|
134
|
+
}
|
|
180
135
|
|
|
181
136
|
function baseMerger(context, ...sources) {
|
|
182
137
|
let target;
|
|
183
138
|
let source;
|
|
184
|
-
|
|
139
|
+
let { priority } = context.options;
|
|
140
|
+
if (sources.length >= 2) {
|
|
141
|
+
if (Array.isArray(sources.at(0)) && Array.isArray(sources.at(-1))) {
|
|
142
|
+
priority = context.options.arrayPriority;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (priority === exports.PriorityName.RIGHT) {
|
|
185
146
|
target = sources.pop();
|
|
186
147
|
source = sources.pop();
|
|
187
148
|
} else {
|
|
@@ -196,7 +157,7 @@ function baseMerger(context, ...sources) {
|
|
|
196
157
|
}
|
|
197
158
|
if (Array.isArray(target) && Array.isArray(source)) {
|
|
198
159
|
target.push(...source);
|
|
199
|
-
if (context.options.
|
|
160
|
+
if (context.options.arrayPriority === exports.PriorityName.RIGHT) {
|
|
200
161
|
return baseMerger(context, ...sources, target);
|
|
201
162
|
}
|
|
202
163
|
return baseMerger(context, target, ...sources);
|
|
@@ -234,7 +195,8 @@ function baseMerger(context, ...sources) {
|
|
|
234
195
|
continue;
|
|
235
196
|
}
|
|
236
197
|
if (context.options.array && Array.isArray(target[key]) && Array.isArray(source[key])) {
|
|
237
|
-
|
|
198
|
+
const arrayPriority = context.options.priority !== context.options.arrayPriority ? togglePriority(context.options.arrayPriority) : context.options.arrayPriority;
|
|
199
|
+
switch(arrayPriority){
|
|
238
200
|
case exports.PriorityName.LEFT:
|
|
239
201
|
Object.assign(target, {
|
|
240
202
|
[key]: baseMerger(context, target[key], source[key])
|
|
@@ -274,14 +236,16 @@ function createMerger(input) {
|
|
|
274
236
|
return baseMerger(ctx, ...clone(sources));
|
|
275
237
|
}
|
|
276
238
|
if (!options.inPlace) {
|
|
277
|
-
if (options.
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
}
|
|
283
|
-
} else if (Array.isArray(sources[0])) {
|
|
239
|
+
if (Array.isArray(sources.at(0)) && options.arrayPriority === exports.PriorityName.LEFT) {
|
|
240
|
+
sources.unshift([]);
|
|
241
|
+
return baseMerger(ctx, ...sources);
|
|
242
|
+
}
|
|
243
|
+
if (Array.isArray(sources.at(-1)) && options.arrayPriority === exports.PriorityName.RIGHT) {
|
|
284
244
|
sources.push([]);
|
|
245
|
+
return baseMerger(ctx, ...sources);
|
|
246
|
+
}
|
|
247
|
+
if (options.priority === exports.PriorityName.LEFT) {
|
|
248
|
+
sources.unshift({});
|
|
285
249
|
} else {
|
|
286
250
|
sources.push({});
|
|
287
251
|
}
|
|
@@ -308,7 +272,6 @@ exports.assign = assign;
|
|
|
308
272
|
exports.buildOptions = buildOptions;
|
|
309
273
|
exports.clone = clone;
|
|
310
274
|
exports.createMerger = createMerger;
|
|
311
|
-
exports.cutObject = cutObject;
|
|
312
275
|
exports.distinctArray = distinctArray;
|
|
313
276
|
exports.hasOwnProperty = hasOwnProperty;
|
|
314
277
|
exports.isEqual = isEqual;
|
|
@@ -316,4 +279,5 @@ exports.isObject = isObject;
|
|
|
316
279
|
exports.isSafeKey = isSafeKey;
|
|
317
280
|
exports.merge = merge;
|
|
318
281
|
exports.polyfillClone = polyfillClone;
|
|
282
|
+
exports.togglePriority = togglePriority;
|
|
319
283
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -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/cut.ts","../src/utils/object.ts","../src/utils/options.ts","../src/module.ts","../src/presets.ts"],"sourcesContent":["/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum PriorityName {\n LEFT = 'left',\n RIGHT = 'right',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport 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","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { 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","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { 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","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from './check';\n\nexport function cutObject<T extends Record<string, any>>(input: T, depth: number) : T {\n if (depth < 0) {\n return {} as T;\n }\n\n const value = { ...input };\n const keys : (keyof T)[] = Object.keys(value);\n\n for (let i = 0; i < keys.length; i++) {\n if (isObject(value[keys[i]])) {\n value[keys[i]] = cutObject(value[keys[i]], depth - 1);\n }\n }\n\n return value;\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\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","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { PriorityName } from '../constants';\nimport type { Options, OptionsInput } from '../type';\n\nexport function buildOptions(options?: OptionsInput) : Options {\n options = options || {};\n\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\n return options as Options;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { 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,\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 if (context.options.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.priority === 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 switch (context.options.priority) {\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 (options.priority === PriorityName.LEFT) {\n if (Array.isArray(sources[0])) {\n sources.unshift([]);\n } else {\n sources.unshift({});\n }\n } else if (Array.isArray(sources[0])) {\n sources.push([]);\n } else {\n sources.push({});\n }\n }\n\n return baseMerger(ctx, ...sources);\n };\n}\n\nexport const merge = createMerger();\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { 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","LEFT","RIGHT","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","cutObject","depth","hasOwnProperty","obj","prop","prototype","call","buildOptions","options","array","arrayDistinct","inPlace","priority","baseMerger","context","sources","target","source","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":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,20 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
* Copyright (c) 2023.
|
|
3
|
-
* Author Peter Placzek (tada5hi)
|
|
4
|
-
* For the full copyright and license information,
|
|
5
|
-
* view the LICENSE file that was distributed with this source code.
|
|
6
|
-
*/ var PriorityName;
|
|
1
|
+
var PriorityName;
|
|
7
2
|
(function(PriorityName) {
|
|
8
|
-
PriorityName["LEFT"] =
|
|
9
|
-
PriorityName["RIGHT"] =
|
|
3
|
+
PriorityName["LEFT"] = "left";
|
|
4
|
+
PriorityName["RIGHT"] = "right";
|
|
10
5
|
})(PriorityName || (PriorityName = {}));
|
|
11
6
|
|
|
12
|
-
|
|
13
|
-
* Copyright (c) 2022.
|
|
14
|
-
* Author Peter Placzek (tada5hi)
|
|
15
|
-
* For the full copyright and license information,
|
|
16
|
-
* view the LICENSE file that was distributed with this source code.
|
|
17
|
-
*/ function isObject(item) {
|
|
7
|
+
function isObject(item) {
|
|
18
8
|
return !!item && typeof item === 'object' && !Array.isArray(item);
|
|
19
9
|
}
|
|
20
10
|
function isSafeKey(key) {
|
|
@@ -119,51 +109,12 @@ function polyfillClone(input) {
|
|
|
119
109
|
/* istanbul ignore next */ return polyfillClone(value);
|
|
120
110
|
}
|
|
121
111
|
|
|
122
|
-
|
|
123
|
-
* Copyright (c) 2022.
|
|
124
|
-
* Author Peter Placzek (tada5hi)
|
|
125
|
-
* For the full copyright and license information,
|
|
126
|
-
* view the LICENSE file that was distributed with this source code.
|
|
127
|
-
*/ function _extends() {
|
|
128
|
-
_extends = Object.assign || function(target) {
|
|
129
|
-
for(var i = 1; i < arguments.length; i++){
|
|
130
|
-
var source = arguments[i];
|
|
131
|
-
for(var key in source){
|
|
132
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
133
|
-
target[key] = source[key];
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return target;
|
|
138
|
-
};
|
|
139
|
-
return _extends.apply(this, arguments);
|
|
140
|
-
}
|
|
141
|
-
function cutObject(input, depth) {
|
|
142
|
-
if (depth < 0) {
|
|
143
|
-
return {};
|
|
144
|
-
}
|
|
145
|
-
const value = _extends({}, input);
|
|
146
|
-
const keys = Object.keys(value);
|
|
147
|
-
for(let i = 0; i < keys.length; i++){
|
|
148
|
-
if (isObject(value[keys[i]])) {
|
|
149
|
-
value[keys[i]] = cutObject(value[keys[i]], depth - 1);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return value;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/*
|
|
156
|
-
* Copyright (c) 2021.
|
|
157
|
-
* Author Peter Placzek (tada5hi)
|
|
158
|
-
* For the full copyright and license information,
|
|
159
|
-
* view the LICENSE file that was distributed with this source code.
|
|
160
|
-
*/ // eslint-disable-next-line @typescript-eslint/ban-types
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
161
113
|
function hasOwnProperty(obj, prop) {
|
|
162
114
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
163
115
|
}
|
|
164
116
|
|
|
165
|
-
function buildOptions(options) {
|
|
166
|
-
options = options || {};
|
|
117
|
+
function buildOptions(options = {}) {
|
|
167
118
|
var _options_array;
|
|
168
119
|
options.array = (_options_array = options.array) != null ? _options_array : true;
|
|
169
120
|
var _options_arrayDistinct;
|
|
@@ -173,13 +124,23 @@ function buildOptions(options) {
|
|
|
173
124
|
var _options_inPlace;
|
|
174
125
|
options.inPlace = (_options_inPlace = options.inPlace) != null ? _options_inPlace : false;
|
|
175
126
|
options.priority = options.priority || PriorityName.LEFT;
|
|
127
|
+
options.arrayPriority = options.arrayPriority || options.priority;
|
|
176
128
|
return options;
|
|
177
129
|
}
|
|
130
|
+
function togglePriority(priority) {
|
|
131
|
+
return priority === PriorityName.LEFT ? `${PriorityName.RIGHT}` : `${PriorityName.LEFT}`;
|
|
132
|
+
}
|
|
178
133
|
|
|
179
134
|
function baseMerger(context, ...sources) {
|
|
180
135
|
let target;
|
|
181
136
|
let source;
|
|
182
|
-
|
|
137
|
+
let { priority } = context.options;
|
|
138
|
+
if (sources.length >= 2) {
|
|
139
|
+
if (Array.isArray(sources.at(0)) && Array.isArray(sources.at(-1))) {
|
|
140
|
+
priority = context.options.arrayPriority;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (priority === PriorityName.RIGHT) {
|
|
183
144
|
target = sources.pop();
|
|
184
145
|
source = sources.pop();
|
|
185
146
|
} else {
|
|
@@ -194,7 +155,7 @@ function baseMerger(context, ...sources) {
|
|
|
194
155
|
}
|
|
195
156
|
if (Array.isArray(target) && Array.isArray(source)) {
|
|
196
157
|
target.push(...source);
|
|
197
|
-
if (context.options.
|
|
158
|
+
if (context.options.arrayPriority === PriorityName.RIGHT) {
|
|
198
159
|
return baseMerger(context, ...sources, target);
|
|
199
160
|
}
|
|
200
161
|
return baseMerger(context, target, ...sources);
|
|
@@ -232,7 +193,8 @@ function baseMerger(context, ...sources) {
|
|
|
232
193
|
continue;
|
|
233
194
|
}
|
|
234
195
|
if (context.options.array && Array.isArray(target[key]) && Array.isArray(source[key])) {
|
|
235
|
-
|
|
196
|
+
const arrayPriority = context.options.priority !== context.options.arrayPriority ? togglePriority(context.options.arrayPriority) : context.options.arrayPriority;
|
|
197
|
+
switch(arrayPriority){
|
|
236
198
|
case PriorityName.LEFT:
|
|
237
199
|
Object.assign(target, {
|
|
238
200
|
[key]: baseMerger(context, target[key], source[key])
|
|
@@ -272,14 +234,16 @@ function createMerger(input) {
|
|
|
272
234
|
return baseMerger(ctx, ...clone(sources));
|
|
273
235
|
}
|
|
274
236
|
if (!options.inPlace) {
|
|
275
|
-
if (options.
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
}
|
|
281
|
-
} else if (Array.isArray(sources[0])) {
|
|
237
|
+
if (Array.isArray(sources.at(0)) && options.arrayPriority === PriorityName.LEFT) {
|
|
238
|
+
sources.unshift([]);
|
|
239
|
+
return baseMerger(ctx, ...sources);
|
|
240
|
+
}
|
|
241
|
+
if (Array.isArray(sources.at(-1)) && options.arrayPriority === PriorityName.RIGHT) {
|
|
282
242
|
sources.push([]);
|
|
243
|
+
return baseMerger(ctx, ...sources);
|
|
244
|
+
}
|
|
245
|
+
if (options.priority === PriorityName.LEFT) {
|
|
246
|
+
sources.unshift({});
|
|
283
247
|
} else {
|
|
284
248
|
sources.push({});
|
|
285
249
|
}
|
|
@@ -302,5 +266,5 @@ const merge = createMerger();
|
|
|
302
266
|
})(target, ...sources);
|
|
303
267
|
}
|
|
304
268
|
|
|
305
|
-
export { PriorityName, assign, buildOptions, clone, createMerger,
|
|
269
|
+
export { PriorityName, assign, buildOptions, clone, createMerger, distinctArray, hasOwnProperty, isEqual, isObject, isSafeKey, merge, polyfillClone, togglePriority };
|
|
306
270
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -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/cut.ts","../src/utils/object.ts","../src/utils/options.ts","../src/module.ts","../src/presets.ts"],"sourcesContent":["/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum PriorityName {\n LEFT = 'left',\n RIGHT = 'right',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport 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","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { 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","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { 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","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from './check';\n\nexport function cutObject<T extends Record<string, any>>(input: T, depth: number) : T {\n if (depth < 0) {\n return {} as T;\n }\n\n const value = { ...input };\n const keys : (keyof T)[] = Object.keys(value);\n\n for (let i = 0; i < keys.length; i++) {\n if (isObject(value[keys[i]])) {\n value[keys[i]] = cutObject(value[keys[i]], depth - 1);\n }\n }\n\n return value;\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\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","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { PriorityName } from '../constants';\nimport type { Options, OptionsInput } from '../type';\n\nexport function buildOptions(options?: OptionsInput) : Options {\n options = options || {};\n\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\n return options as Options;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { 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,\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 if (context.options.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.priority === 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 switch (context.options.priority) {\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 (options.priority === PriorityName.LEFT) {\n if (Array.isArray(sources[0])) {\n sources.unshift([]);\n } else {\n sources.unshift({});\n }\n } else if (Array.isArray(sources[0])) {\n sources.push([]);\n } else {\n sources.push({});\n }\n }\n\n return baseMerger(ctx, ...sources);\n };\n}\n\nexport const merge = createMerger();\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { 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","LEFT","RIGHT","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","cutObject","depth","hasOwnProperty","obj","prop","prototype","call","buildOptions","options","array","arrayDistinct","inPlace","priority","baseMerger","context","sources","target","source","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/dist/type.d.ts
CHANGED
|
@@ -13,6 +13,13 @@ export type Options = {
|
|
|
13
13
|
* default: false
|
|
14
14
|
*/
|
|
15
15
|
arrayDistinct: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Merge sources from left-to-right or right-to-left.
|
|
18
|
+
* From v2 upwards default to left independent of the option priority.
|
|
19
|
+
*
|
|
20
|
+
* default: left (aka. options.priority)
|
|
21
|
+
*/
|
|
22
|
+
arrayPriority: `${PriorityName}`;
|
|
16
23
|
/**
|
|
17
24
|
* Strategy to merge different object keys.
|
|
18
25
|
*
|
|
@@ -35,6 +42,7 @@ export type Options = {
|
|
|
35
42
|
clone?: boolean;
|
|
36
43
|
/**
|
|
37
44
|
* Merge sources from left-to-right or right-to-left.
|
|
45
|
+
* From v2 upwards default to right.
|
|
38
46
|
*
|
|
39
47
|
* default: left
|
|
40
48
|
*/
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/options.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "smob",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Zero dependency library to safe merge objects.",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -51,21 +51,21 @@
|
|
|
51
51
|
},
|
|
52
52
|
"homepage": "https://github.com/Tada5hi/smob#readme",
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@rollup/plugin-node-resolve": "^15.
|
|
55
|
-
"@swc/core": "^1.
|
|
56
|
-
"@swc/jest": "^0.2.
|
|
57
|
-
"@tada5hi/commitlint-config": "^1.0
|
|
58
|
-
"@tada5hi/eslint-config-typescript": "^1.
|
|
59
|
-
"@tada5hi/semantic-release": "^0.1
|
|
60
|
-
"@tada5hi/tsconfig": "^0.
|
|
61
|
-
"@types/jest": "^29.5.
|
|
62
|
-
"@types/node": "^20.
|
|
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
63
|
"cross-env": "^7.0.3",
|
|
64
|
-
"eslint": "^8.
|
|
65
|
-
"husky": "^
|
|
66
|
-
"jest": "^29.
|
|
67
|
-
"rollup": "^
|
|
68
|
-
"semantic-release": "^
|
|
69
|
-
"typescript": "^5.
|
|
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"
|
|
70
70
|
}
|
|
71
71
|
}
|
package/dist/utils/cut.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function cutObject<T extends Record<string, any>>(input: T, depth: number): T;
|