@stryke/helpers 0.4.5 → 0.4.6
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/deep-merge.cjs +18 -19
- package/dist/deep-merge.d.ts +14 -4
- package/dist/deep-merge.mjs +1 -1
- package/dist/is-equal.cjs +1 -1
- package/dist/is-equal.mjs +1 -1
- package/package.json +4 -4
package/dist/deep-merge.cjs
CHANGED
|
@@ -3,35 +3,34 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.deepMerge =
|
|
6
|
+
exports.deepMerge = deepMerge;
|
|
7
7
|
var _isFunction = require("@stryke/type-checks/is-function");
|
|
8
8
|
var _isMergeableObject = require("@stryke/type-checks/is-mergeable-object");
|
|
9
9
|
var _propertyExists = require("@stryke/type-checks/property-exists");
|
|
10
10
|
const b = e => Array.isArray(e) ? [] : {},
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
o = (e, r) => r.clone !== !1 && r.isMergeableObject(e) ? deepMerge(b(e), e, r) : e,
|
|
12
|
+
g = (e, r, n) => [...e, ...r].map(a => o(a, n)),
|
|
13
|
+
u = (e, r) => {
|
|
14
14
|
if (!r.customMerge) return deepMerge;
|
|
15
15
|
const n = r.customMerge(e);
|
|
16
16
|
return (0, _isFunction.isFunction)(n) ? n : deepMerge;
|
|
17
17
|
},
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
if (n.isMergeableObject(e)) for (const
|
|
22
|
-
for (const
|
|
23
|
-
return
|
|
18
|
+
s = e => [...Object.keys(e), ...(Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(e).filter(r => Object.propertyIsEnumerable.call(e, r)) : [])],
|
|
19
|
+
M = (e, r, n) => {
|
|
20
|
+
const a = {};
|
|
21
|
+
if (n.isMergeableObject(e)) for (const t of s(e)) a[t] = o(e[t], n);
|
|
22
|
+
for (const t of s(r)) a[t] = (0, _propertyExists.propertyUnsafe)(e, t) && n.isMergeableObject(r[t]) ? u(t, n)(e[t], r[t], n) : o(r[t], n);
|
|
23
|
+
return a;
|
|
24
24
|
};
|
|
25
|
-
|
|
25
|
+
function deepMerge(e, r, n) {
|
|
26
26
|
if (!e || !r) return e || r;
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
return
|
|
32
|
-
}
|
|
33
|
-
exports.deepMerge = deepMerge;
|
|
27
|
+
const a = n ?? {};
|
|
28
|
+
a.arrayMerge ??= g, a.isMergeableObject ??= _isMergeableObject.isMergeableObject, a.cloneUnlessOtherwiseSpecified ??= o;
|
|
29
|
+
const t = Array.isArray(r),
|
|
30
|
+
y = Array.isArray(e);
|
|
31
|
+
return t === y ? t ? a.arrayMerge(e, r, a) : M(e, r, a) : o(r, a);
|
|
32
|
+
}
|
|
34
33
|
deepMerge.all = function (r, n) {
|
|
35
34
|
if (!Array.isArray(r)) throw new TypeError("first argument should be an array");
|
|
36
|
-
return r.reduce((
|
|
35
|
+
return r.reduce((a, t) => deepMerge(a, t, n), {});
|
|
37
36
|
};
|
package/dist/deep-merge.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
export interface DeepMergeOptions {
|
|
2
|
+
clone?: boolean;
|
|
3
|
+
customMerge?: (key: string) => any;
|
|
4
|
+
isMergeableObject: (value: any) => boolean;
|
|
5
|
+
cloneUnlessOtherwiseSpecified: (value: any, options: {
|
|
6
|
+
clone?: boolean;
|
|
7
|
+
isMergeableObject: (value: any) => boolean;
|
|
8
|
+
}) => any;
|
|
9
|
+
arrayMerge: (target: any[], source: any[], options: any) => any;
|
|
10
|
+
}
|
|
1
11
|
/**
|
|
2
12
|
* Deep merge two objects
|
|
3
13
|
*
|
|
@@ -6,7 +16,7 @@
|
|
|
6
16
|
* @param options - The options object
|
|
7
17
|
* @returns The merged object
|
|
8
18
|
*/
|
|
9
|
-
export declare
|
|
10
|
-
|
|
11
|
-
all(array: any[], options?: any)
|
|
12
|
-
}
|
|
19
|
+
export declare function deepMerge<X = any | any[], Y = any | any[], Z = X & Y>(target: X, source: Y, options?: Partial<DeepMergeOptions>): Z;
|
|
20
|
+
export declare namespace deepMerge {
|
|
21
|
+
var all: (array: any[], options?: any) => any;
|
|
22
|
+
}
|
package/dist/deep-merge.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isFunction as
|
|
1
|
+
import{isFunction as c}from"@stryke/type-checks/is-function";import{isMergeableObject as i}from"@stryke/type-checks/is-mergeable-object";import{propertyUnsafe as l}from"@stryke/type-checks/property-exists";const b=e=>Array.isArray(e)?[]:{},o=(e,r)=>r.clone!==!1&&r.isMergeableObject(e)?deepMerge(b(e),e,r):e,g=(e,r,n)=>[...e,...r].map(a=>o(a,n)),u=(e,r)=>{if(!r.customMerge)return deepMerge;const n=r.customMerge(e);return c(n)?n:deepMerge},s=e=>[...Object.keys(e),...Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(r=>Object.propertyIsEnumerable.call(e,r)):[]],M=(e,r,n)=>{const a={};if(n.isMergeableObject(e))for(const t of s(e))a[t]=o(e[t],n);for(const t of s(r))a[t]=l(e,t)&&n.isMergeableObject(r[t])?u(t,n)(e[t],r[t],n):o(r[t],n);return a};export function deepMerge(e,r,n){if(!e||!r)return e||r;const a=n??{};a.arrayMerge??=g,a.isMergeableObject??=i,a.cloneUnlessOtherwiseSpecified??=o;const t=Array.isArray(r),y=Array.isArray(e);return t===y?t?a.arrayMerge(e,r,a):M(e,r,a):o(r,a)}deepMerge.all=function(r,n){if(!Array.isArray(r))throw new TypeError("first argument should be an array");return r.reduce((a,t)=>deepMerge(a,t,n),{})};
|
package/dist/is-equal.cjs
CHANGED
|
@@ -8,7 +8,7 @@ var _isSet = require("@stryke/type-checks/is-set");
|
|
|
8
8
|
var _isSetString = require("@stryke/type-checks/is-set-string");
|
|
9
9
|
const l = typeof Map == "function",
|
|
10
10
|
a = typeof Set == "function",
|
|
11
|
-
c = typeof ArrayBuffer == "function" &&
|
|
11
|
+
c = typeof ArrayBuffer == "function" && ArrayBuffer.isView !== void 0;
|
|
12
12
|
function o(e, r) {
|
|
13
13
|
if (e === r) return !0;
|
|
14
14
|
if (e && r && typeof e == "object" && typeof r == "object") {
|
package/dist/is-equal.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isSet as s}from"@stryke/type-checks/is-set";import{isSetString as u}from"@stryke/type-checks/is-set-string";const l=typeof Map=="function",a=typeof Set=="function",c=typeof ArrayBuffer=="function"
|
|
1
|
+
import{isSet as s}from"@stryke/type-checks/is-set";import{isSetString as u}from"@stryke/type-checks/is-set-string";const l=typeof Map=="function",a=typeof Set=="function",c=typeof ArrayBuffer=="function"&&ArrayBuffer.isView!==void 0;function o(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;let n;if(Array.isArray(e)){if(n=e.length,n!=r.length)return!1;for(let t=n;t--!==0;)if(!o(e[t],r[t]))return!1;return!0}let i;if(l&&e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;i=e.entries();let t;for(;!(t=i.next()).done;)if(!r.has(t.value[0]))return!1;for(i=e.entries();!(t=i.next()).done;)if(!o(t.value[1],r.get(t.value[0])))return!1;return!0}if(a&&e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;i=e.entries();let t;for(;!(t=i.next()).done;)if(!r.has(t.value[0]))return!1;return!0}if(Array.isArray(e)&&Array.isArray(r)&&c&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(n=e.length,n!=r.length)return!1;for(let t=n;t--!==0;)if(e[t]!==r[t])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof r.valueOf=="function")return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof r.toString=="function")return e.toString()===r.toString();const f=Object.keys(e);if(n=f.length,n!==Object.keys(r).length)return!1;for(let t=n;t--!==0;)if(!s(t)||!u(f[t])||!Object.prototype.hasOwnProperty.call(r,f[t]))return!1;for(let t=n;t--!==0;)if(!(Array.isArray(f)&&(f[t]==="_owner"||f[t]==="__v"||f[t]==="__o")&&e.$$typeof)&&(!s(t)||!u(f[t])||!o(e[f[t]],r[f[t]])))return!1;return!0}return e!==e&&r!==r}export function isEqual(e,r){try{return o(e,r)}catch(n){if(/stack|recursion/i.test(n?.message||""))return console.warn("isEqual cannot handle circular refs"),!1;throw n}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stryke/helpers",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A package containing miscellaneous helper functions that are used across many different Storm Software projects.",
|
|
6
6
|
"repository": {
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"private": false,
|
|
12
12
|
"publishConfig": { "access": "public" },
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@stryke/convert": "
|
|
15
|
-
"@stryke/type-checks": "
|
|
16
|
-
"@stryke/types": "
|
|
14
|
+
"@stryke/convert": "^0.1.4",
|
|
15
|
+
"@stryke/type-checks": "^0.3.0",
|
|
16
|
+
"@stryke/types": "^0.8.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {},
|
|
19
19
|
"sideEffects": false,
|