@stryke/helpers 0.1.5 → 0.2.1
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 +39 -0
- package/dist/deep-clone.cjs +4 -3
- package/dist/deep-clone.d.ts +22 -19
- package/dist/deep-clone.mjs +1 -1
- package/dist/deep-copy.cjs +190 -0
- package/dist/deep-copy.d.ts +13 -0
- package/dist/deep-copy.mjs +1 -0
- package/dist/index.cjs +11 -22
- package/dist/index.d.ts +1 -2
- package/dist/index.mjs +1 -1
- package/package.json +16 -30
- package/dist/is-production.cjs +0 -12
- package/dist/is-production.d.ts +0 -30
- package/dist/is-production.mjs +0 -1
- package/dist/is-runtime-server.cjs +0 -10
- package/dist/is-runtime-server.d.ts +0 -11
- package/dist/is-runtime-server.mjs +0 -1
package/README.md
CHANGED
|
@@ -57,6 +57,7 @@ other Stryke projects.
|
|
|
57
57
|
|
|
58
58
|
- [Stryke - Helper Functions](#stryke---helper-functions)
|
|
59
59
|
- [Table of Contents](#table-of-contents)
|
|
60
|
+
- [Quick Features](#quick-features)
|
|
60
61
|
- [Installing](#installing)
|
|
61
62
|
- [Reduced Package Size](#reduced-package-size)
|
|
62
63
|
- [Development](#development)
|
|
@@ -73,6 +74,44 @@ other Stryke projects.
|
|
|
73
74
|
|
|
74
75
|
<!-- END doctoc -->
|
|
75
76
|
|
|
77
|
+
## Quick Features
|
|
78
|
+
|
|
79
|
+
The following modules are available in this package:
|
|
80
|
+
|
|
81
|
+
- **arg-identity**: Provides a function that returns its argument.
|
|
82
|
+
- **debounce**: Provides a function to debounce another function, delaying its
|
|
83
|
+
execution.
|
|
84
|
+
- **deep-clone**: Provides a function to create a deep clone of an object.
|
|
85
|
+
- **deep-copy**: Provides a function to create a deep copy of an object.
|
|
86
|
+
- **deep-merge**: Provides a function to deeply merge two objects.
|
|
87
|
+
- **delay**: Provides a function to delay execution for a specified amount of
|
|
88
|
+
time.
|
|
89
|
+
- **flatten-object**: Provides a function to flatten a nested object into a
|
|
90
|
+
single level object.
|
|
91
|
+
- **get-field**: Provides a function to get the value of a field from an object.
|
|
92
|
+
- **get-ordered-by**: Provides a function to order an array of objects by a
|
|
93
|
+
specified field.
|
|
94
|
+
- **get-unique**: Provides a function to get unique values from an array.
|
|
95
|
+
- **identity**: Provides a function that returns its argument.
|
|
96
|
+
- **is-equal**: Provides a function to check if two values are deeply equal.
|
|
97
|
+
- **match-sorter**: Provides a function to sort an array based on a search
|
|
98
|
+
query.
|
|
99
|
+
- **noop**: Provides a no-operation function.
|
|
100
|
+
- **remove-accents**: Provides a function to remove accents from a string.
|
|
101
|
+
- **remove-empty-items**: Provides a function to remove empty items from an
|
|
102
|
+
array.
|
|
103
|
+
- **set-field**: Provides a function to set the value of a field in an object.
|
|
104
|
+
- **throttle**: Provides a function to throttle another function, limiting its
|
|
105
|
+
execution rate.
|
|
106
|
+
- **timeout**: Provides a function to execute another function with a timeout.
|
|
107
|
+
- **to-deep-key**: Provides a function to convert a path to a deep key.
|
|
108
|
+
- **to-path**: Provides a function to convert a deep key to a path.
|
|
109
|
+
- **unflatten-object**: Provides a function to unflatten a single level object
|
|
110
|
+
into a nested object.
|
|
111
|
+
- **union**: Provides a function to create a union of two arrays.
|
|
112
|
+
- **with-timeout**: Provides a function to execute another function with a
|
|
113
|
+
timeout.
|
|
114
|
+
|
|
76
115
|
## Installing
|
|
77
116
|
|
|
78
117
|
Using [pnpm](http://pnpm.io):
|
package/dist/deep-clone.cjs
CHANGED
|
@@ -4,9 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.deepClone = deepClone;
|
|
7
|
-
var
|
|
7
|
+
var _isPrimitive = require("@stryke/types/type-checks/is-primitive");
|
|
8
|
+
var _isTypedArray = require("@stryke/types/type-checks/is-typed-array");
|
|
8
9
|
function deepClone(e) {
|
|
9
|
-
if ((0,
|
|
10
|
+
if ((0, _isPrimitive.isPrimitive)(e)) return e;
|
|
10
11
|
if (Array.isArray(e)) return e.map(n => deepClone(n));
|
|
11
12
|
if (e instanceof Date) return new Date(e.getTime());
|
|
12
13
|
if (e instanceof RegExp) return new RegExp(e.source, e.flags);
|
|
@@ -20,7 +21,7 @@ function deepClone(e) {
|
|
|
20
21
|
for (const t of e.values()) n.add(deepClone(t));
|
|
21
22
|
return n;
|
|
22
23
|
}
|
|
23
|
-
if ((0,
|
|
24
|
+
if ((0, _isTypedArray.isTypedArray)(e)) {
|
|
24
25
|
const n = new (Object.getPrototypeOf(e).constructor)(e.length);
|
|
25
26
|
for (const [t, s] of e.entries()) n[t] = deepClone(s);
|
|
26
27
|
return n;
|
package/dist/deep-clone.d.ts
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
|
+
export type Resolved<T> = Equal<T, ResolvedMain<T>> extends true ? T : ResolvedMain<T>;
|
|
2
|
+
type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
3
|
+
type ResolvedMain<T> = T extends [never] ? never : ValueOf<T> extends boolean | number | bigint | string ? ValueOf<T> : T extends (...args: any[]) => any ? never : T extends object ? ResolvedObject<T> : ValueOf<T>;
|
|
4
|
+
type ResolvedObject<T extends object> = T extends (infer U)[] ? IsTuple<T> extends true ? ResolvedTuple<T> : ResolvedMain<U>[] : T extends Set<infer U> ? Set<ResolvedMain<U>> : T extends Map<infer K, infer V> ? Map<ResolvedMain<K>, ResolvedMain<V>> : T extends WeakSet<any> | WeakMap<any, any> ? never : T extends Date | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array | ArrayBuffer | SharedArrayBuffer | DataView | Blob | File ? T : {
|
|
5
|
+
[P in keyof T]: ResolvedMain<T[P]>;
|
|
6
|
+
};
|
|
7
|
+
type ResolvedTuple<T extends readonly any[]> = T extends [] ? [] : T extends [infer F] ? [ResolvedMain<F>] : T extends [infer F, ...infer Rest extends readonly any[]] ? [ResolvedMain<F>, ...ResolvedTuple<Rest>] : T extends [(infer F)?] ? [ResolvedMain<F>?] : T extends [(infer F)?, ...infer Rest extends readonly any[]] ? [ResolvedMain<F>?, ...ResolvedTuple<Rest>] : [];
|
|
8
|
+
type IsTuple<T extends readonly any[] | {
|
|
9
|
+
length: number;
|
|
10
|
+
}> = [T] extends [
|
|
11
|
+
never
|
|
12
|
+
] ? false : T extends readonly any[] ? number extends T["length"] ? false : true : false;
|
|
13
|
+
type ValueOf<Instance> = IsValueOf<Instance, boolean> extends true ? boolean : IsValueOf<Instance, number> extends true ? number : IsValueOf<Instance, string> extends true ? string : Instance;
|
|
14
|
+
type IsValueOf<Instance, O extends IValueOf<any>> = Instance extends O ? O extends IValueOf<infer Primitive> ? Instance extends Primitive ? false : true : false : false;
|
|
15
|
+
interface IValueOf<T> {
|
|
16
|
+
valueOf(): T;
|
|
17
|
+
}
|
|
1
18
|
/**
|
|
2
19
|
* Creates a deep clone of the given object.
|
|
3
20
|
*
|
|
4
|
-
* @
|
|
5
|
-
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* This function creates a deep clone of the given object, including nested objects and arrays. The resulting output will be of type `Resolved<T>`, which is a type that resolves to the most specific type possible for the given input type `T`. **If you are just looking for a way to copy an object deeply, use {@link deepCopy} instead.**
|
|
6
23
|
*
|
|
7
24
|
* @example
|
|
8
25
|
* ```typescript
|
|
@@ -41,23 +58,9 @@
|
|
|
41
58
|
* console.log(clonedObj); // { a: 1, b: { c: 1 } }
|
|
42
59
|
* console.log(clonedObj === obj); // false
|
|
43
60
|
* ```
|
|
61
|
+
*
|
|
62
|
+
* @param obj - The object to clone.
|
|
63
|
+
* @returns A deep clone of the given object.
|
|
44
64
|
*/
|
|
45
65
|
export declare function deepClone<T>(obj: T): Resolved<T>;
|
|
46
|
-
export type Resolved<T> = Equal<T, ResolvedMain<T>> extends true ? T : ResolvedMain<T>;
|
|
47
|
-
type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
48
|
-
type ResolvedMain<T> = T extends [never] ? never : ValueOf<T> extends boolean | number | bigint | string ? ValueOf<T> : T extends (...args: any[]) => any ? never : T extends object ? ResolvedObject<T> : ValueOf<T>;
|
|
49
|
-
type ResolvedObject<T extends object> = T extends (infer U)[] ? IsTuple<T> extends true ? ResolvedTuple<T> : ResolvedMain<U>[] : T extends Set<infer U> ? Set<ResolvedMain<U>> : T extends Map<infer K, infer V> ? Map<ResolvedMain<K>, ResolvedMain<V>> : T extends WeakSet<any> | WeakMap<any, any> ? never : T extends Date | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array | ArrayBuffer | SharedArrayBuffer | DataView | Blob | File ? T : {
|
|
50
|
-
[P in keyof T]: ResolvedMain<T[P]>;
|
|
51
|
-
};
|
|
52
|
-
type ResolvedTuple<T extends readonly any[]> = T extends [] ? [] : T extends [infer F] ? [ResolvedMain<F>] : T extends [infer F, ...infer Rest extends readonly any[]] ? [ResolvedMain<F>, ...ResolvedTuple<Rest>] : T extends [(infer F)?] ? [ResolvedMain<F>?] : T extends [(infer F)?, ...infer Rest extends readonly any[]] ? [ResolvedMain<F>?, ...ResolvedTuple<Rest>] : [];
|
|
53
|
-
type IsTuple<T extends readonly any[] | {
|
|
54
|
-
length: number;
|
|
55
|
-
}> = [T] extends [
|
|
56
|
-
never
|
|
57
|
-
] ? false : T extends readonly any[] ? number extends T["length"] ? false : true : false;
|
|
58
|
-
type ValueOf<Instance> = IsValueOf<Instance, boolean> extends true ? boolean : IsValueOf<Instance, number> extends true ? number : IsValueOf<Instance, string> extends true ? string : Instance;
|
|
59
|
-
type IsValueOf<Instance, O extends IValueOf<any>> = Instance extends O ? O extends IValueOf<infer Primitive> ? Instance extends Primitive ? false : true : false : false;
|
|
60
|
-
interface IValueOf<T> {
|
|
61
|
-
valueOf(): T;
|
|
62
|
-
}
|
|
63
66
|
export {};
|
package/dist/deep-clone.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isPrimitive as l
|
|
1
|
+
import{isPrimitive as l}from"@stryke/types/type-checks/is-primitive";import{isTypedArray as i}from"@stryke/types/type-checks/is-typed-array";export function deepClone(e){if(l(e))return e;if(Array.isArray(e))return e.map(n=>deepClone(n));if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(e instanceof Map){const n=new Map;for(const[t,s]of e.entries())n.set(t,deepClone(s));return n}if(e instanceof Set){const n=new Set;for(const t of e.values())n.add(deepClone(t));return n}if(i(e)){const n=new(Object.getPrototypeOf(e)).constructor(e.length);for(const[t,s]of e.entries())n[t]=deepClone(s);return n}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return[...e];if(e instanceof DataView){const n=new DataView([...e.buffer]);return r(e,n),n}if(typeof File<"u"&&e instanceof File){const n=new File([e],e.name,{type:e.type});return r(e,n),n}if(e instanceof Blob){const n=new Blob([e],{type:e.type});return r(e,n),n}if(e instanceof Error){const n=new e.constructor;return n.message=e.message,n.name=e.name,n.stack=e.stack,n.cause=e.cause,r(e,n),n}if(typeof e=="object"&&e!==null){const n={};return r(e,n),n}return e}function r(e,n){const t=Object.keys(e);for(const s of t){const a=Object.getOwnPropertyDescriptor(e,s);(a?.writable||a?.set)&&(n[s]=deepClone(e[s]))}}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.deepCopy = deepCopy;
|
|
7
|
+
var _typeDetect = _interopRequireDefault(require("type-detect"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
const m = typeof Buffer < "u",
|
|
10
|
+
S = m ? Buffer.isBuffer.bind(Buffer) : function (r) {
|
|
11
|
+
return !1;
|
|
12
|
+
},
|
|
13
|
+
I = m ? Buffer.from.bind(Buffer) : function (r) {
|
|
14
|
+
return r;
|
|
15
|
+
};
|
|
16
|
+
function U(n, r) {
|
|
17
|
+
switch (r) {
|
|
18
|
+
case "ArrayBuffer":
|
|
19
|
+
return n.slice(0);
|
|
20
|
+
case "Boolean":
|
|
21
|
+
return !!n.valueOf();
|
|
22
|
+
case "Buffer":
|
|
23
|
+
return I(n);
|
|
24
|
+
case "DataView":
|
|
25
|
+
return new DataView(n.buffer);
|
|
26
|
+
case "Date":
|
|
27
|
+
return new Date(n.getTime());
|
|
28
|
+
case "Number":
|
|
29
|
+
return Number(n);
|
|
30
|
+
case "RegExp":
|
|
31
|
+
return new RegExp(n.source, n.flags);
|
|
32
|
+
case "String":
|
|
33
|
+
return String(n);
|
|
34
|
+
case "Float32Array":
|
|
35
|
+
return new Float32Array(n);
|
|
36
|
+
case "Float64Array":
|
|
37
|
+
return new Float64Array(n);
|
|
38
|
+
case "Int16Array":
|
|
39
|
+
return new Int16Array(n);
|
|
40
|
+
case "Int32Array":
|
|
41
|
+
return new Int32Array(n);
|
|
42
|
+
case "Int8Array":
|
|
43
|
+
return new Int8Array(n);
|
|
44
|
+
case "Uint16Array":
|
|
45
|
+
return new Uint16Array(n);
|
|
46
|
+
case "Uint32Array":
|
|
47
|
+
return new Uint32Array(n);
|
|
48
|
+
case "Uint8Array":
|
|
49
|
+
return new Uint8Array(n);
|
|
50
|
+
case "Uint8ClampedArray":
|
|
51
|
+
return new Uint8ClampedArray(n);
|
|
52
|
+
case "Array Iterator":
|
|
53
|
+
return n;
|
|
54
|
+
case "Map Iterator":
|
|
55
|
+
return n;
|
|
56
|
+
case "Promise":
|
|
57
|
+
return n;
|
|
58
|
+
case "Set Iterator":
|
|
59
|
+
return n;
|
|
60
|
+
case "String Iterator":
|
|
61
|
+
return n;
|
|
62
|
+
case "function":
|
|
63
|
+
return n;
|
|
64
|
+
case "global":
|
|
65
|
+
return n;
|
|
66
|
+
case "WeakMap":
|
|
67
|
+
return n;
|
|
68
|
+
case "WeakSet":
|
|
69
|
+
return n;
|
|
70
|
+
case "boolean":
|
|
71
|
+
return n;
|
|
72
|
+
case "null":
|
|
73
|
+
return n;
|
|
74
|
+
case "number":
|
|
75
|
+
return n;
|
|
76
|
+
case "string":
|
|
77
|
+
return n;
|
|
78
|
+
case "symbol":
|
|
79
|
+
return n;
|
|
80
|
+
case "undefined":
|
|
81
|
+
return n;
|
|
82
|
+
case a:
|
|
83
|
+
return [];
|
|
84
|
+
case c:
|
|
85
|
+
return [];
|
|
86
|
+
case i:
|
|
87
|
+
return new Map();
|
|
88
|
+
case u:
|
|
89
|
+
return {};
|
|
90
|
+
case f:
|
|
91
|
+
return new Set();
|
|
92
|
+
default:
|
|
93
|
+
return n;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function w(n, r, e = null) {
|
|
97
|
+
if (e && r === "Object") {
|
|
98
|
+
const t = e(n, r);
|
|
99
|
+
if (t !== void 0) return t;
|
|
100
|
+
}
|
|
101
|
+
return U(n, r);
|
|
102
|
+
}
|
|
103
|
+
const a = "Arguments",
|
|
104
|
+
c = "Array",
|
|
105
|
+
u = "Object",
|
|
106
|
+
i = "Map",
|
|
107
|
+
f = "Set",
|
|
108
|
+
M = new Set([a, c, i, u, f]);
|
|
109
|
+
function g(n) {
|
|
110
|
+
return M.has(n);
|
|
111
|
+
}
|
|
112
|
+
function O(n, r) {
|
|
113
|
+
switch (r) {
|
|
114
|
+
case a:
|
|
115
|
+
case c:
|
|
116
|
+
return Object.keys(n);
|
|
117
|
+
case u:
|
|
118
|
+
return [].concat(Object.keys(n), Object.getOwnPropertySymbols(n));
|
|
119
|
+
case i:
|
|
120
|
+
case f:
|
|
121
|
+
return [...n.keys()];
|
|
122
|
+
default:
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function V(n, r, e) {
|
|
127
|
+
switch (e) {
|
|
128
|
+
case a:
|
|
129
|
+
case c:
|
|
130
|
+
case u:
|
|
131
|
+
return n[r];
|
|
132
|
+
case i:
|
|
133
|
+
return n.get(r);
|
|
134
|
+
case f:
|
|
135
|
+
return r;
|
|
136
|
+
default:
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function B(n, r, e, t) {
|
|
140
|
+
switch (t) {
|
|
141
|
+
case a:
|
|
142
|
+
case c:
|
|
143
|
+
case u:
|
|
144
|
+
{
|
|
145
|
+
n[r] = e;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
case i:
|
|
149
|
+
{
|
|
150
|
+
n.set(r, e);
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
case f:
|
|
154
|
+
{
|
|
155
|
+
n.add(e);
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
default:
|
|
159
|
+
}
|
|
160
|
+
return n;
|
|
161
|
+
}
|
|
162
|
+
function A(n) {
|
|
163
|
+
return S(n) ? "Buffer" : (0, _typeDetect.default)(n);
|
|
164
|
+
}
|
|
165
|
+
function l(n, r, e, t, y) {
|
|
166
|
+
const s = A(n),
|
|
167
|
+
p = w(n, s);
|
|
168
|
+
if (!g(s)) return p;
|
|
169
|
+
const C = O(n, s);
|
|
170
|
+
for (const k of C) {
|
|
171
|
+
const o = V(n, k, s);
|
|
172
|
+
if (t.has(o)) B(r, k, e.get(o), s);else {
|
|
173
|
+
const d = A(o),
|
|
174
|
+
b = w(o, d);
|
|
175
|
+
g(d) && (e.set(o, b), t.add(o)), B(r, k, l(o, b, e, t, y), s);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return r;
|
|
179
|
+
}
|
|
180
|
+
function deepCopy(n, r) {
|
|
181
|
+
const {
|
|
182
|
+
customizer: e = null
|
|
183
|
+
} = r ?? {},
|
|
184
|
+
t = A(n);
|
|
185
|
+
if (!g(t)) return w(n, t, e);
|
|
186
|
+
const y = w(n, t, e),
|
|
187
|
+
s = new WeakMap([[n, y]]),
|
|
188
|
+
p = new WeakSet([n]);
|
|
189
|
+
return l(n, y, s, p, e);
|
|
190
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type Customizer = (value: unknown, type: string) => unknown;
|
|
2
|
+
export type Options = {
|
|
3
|
+
customizer?: Customizer;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Deep copy value
|
|
7
|
+
*
|
|
8
|
+
* @param value - The value to copy.
|
|
9
|
+
* @param options - The options object.
|
|
10
|
+
* @returns Returns the copied value.
|
|
11
|
+
*/
|
|
12
|
+
export declare function deepCopy<T extends Record<string, any>>(value: T, options?: Options): T;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import R from"type-detect";const m=typeof Buffer<"u",S=m?Buffer.isBuffer.bind(Buffer):function(r){return!1},I=m?Buffer.from.bind(Buffer):function(r){return r};function U(n,r){switch(r){case"ArrayBuffer":return n.slice(0);case"Boolean":return!!n.valueOf();case"Buffer":return I(n);case"DataView":return new DataView(n.buffer);case"Date":return new Date(n.getTime());case"Number":return Number(n);case"RegExp":return new RegExp(n.source,n.flags);case"String":return String(n);case"Float32Array":return new Float32Array(n);case"Float64Array":return new Float64Array(n);case"Int16Array":return new Int16Array(n);case"Int32Array":return new Int32Array(n);case"Int8Array":return new Int8Array(n);case"Uint16Array":return new Uint16Array(n);case"Uint32Array":return new Uint32Array(n);case"Uint8Array":return new Uint8Array(n);case"Uint8ClampedArray":return new Uint8ClampedArray(n);case"Array Iterator":return n;case"Map Iterator":return n;case"Promise":return n;case"Set Iterator":return n;case"String Iterator":return n;case"function":return n;case"global":return n;case"WeakMap":return n;case"WeakSet":return n;case"boolean":return n;case"null":return n;case"number":return n;case"string":return n;case"symbol":return n;case"undefined":return n;case a:return[];case c:return[];case i:return new Map;case u:return{};case f:return new Set;default:return n}}function w(n,r,e=null){if(e&&r==="Object"){const t=e(n,r);if(t!==void 0)return t}return U(n,r)}const a="Arguments",c="Array",u="Object",i="Map",f="Set",M=new Set([a,c,i,u,f]);function g(n){return M.has(n)}function O(n,r){switch(r){case a:case c:return Object.keys(n);case u:return[].concat(Object.keys(n),Object.getOwnPropertySymbols(n));case i:case f:return[...n.keys()];default:return[]}}function V(n,r,e){switch(e){case a:case c:case u:return n[r];case i:return n.get(r);case f:return r;default:}}function B(n,r,e,t){switch(t){case a:case c:case u:{n[r]=e;break}case i:{n.set(r,e);break}case f:{n.add(e);break}default:}return n}function A(n){return S(n)?"Buffer":R(n)}function l(n,r,e,t,y){const s=A(n),p=w(n,s);if(!g(s))return p;const C=O(n,s);for(const k of C){const o=V(n,k,s);if(t.has(o))B(r,k,e.get(o),s);else{const d=A(o),b=w(o,d);g(d)&&(e.set(o,b),t.add(o)),B(r,k,l(o,b,e,t,y),s)}}return r}export function deepCopy(n,r){const{customizer:e=null}=r??{},t=A(n);if(!g(t))return w(n,t,e);const y=w(n,t,e),s=new WeakMap([[n,y]]),p=new WeakSet([n]);return l(n,y,s,p,e)}
|
package/dist/index.cjs
CHANGED
|
@@ -36,6 +36,17 @@ Object.keys(_deepClone).forEach(function (key) {
|
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
|
+
var _deepCopy = require("./deep-copy.cjs");
|
|
40
|
+
Object.keys(_deepCopy).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _deepCopy[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _deepCopy[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
39
50
|
var _deepMerge = require("./deep-merge.cjs");
|
|
40
51
|
Object.keys(_deepMerge).forEach(function (key) {
|
|
41
52
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -124,28 +135,6 @@ Object.keys(_isEqual).forEach(function (key) {
|
|
|
124
135
|
}
|
|
125
136
|
});
|
|
126
137
|
});
|
|
127
|
-
var _isProduction = require("./is-production.cjs");
|
|
128
|
-
Object.keys(_isProduction).forEach(function (key) {
|
|
129
|
-
if (key === "default" || key === "__esModule") return;
|
|
130
|
-
if (key in exports && exports[key] === _isProduction[key]) return;
|
|
131
|
-
Object.defineProperty(exports, key, {
|
|
132
|
-
enumerable: true,
|
|
133
|
-
get: function () {
|
|
134
|
-
return _isProduction[key];
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
var _isRuntimeServer = require("./is-runtime-server.cjs");
|
|
139
|
-
Object.keys(_isRuntimeServer).forEach(function (key) {
|
|
140
|
-
if (key === "default" || key === "__esModule") return;
|
|
141
|
-
if (key in exports && exports[key] === _isRuntimeServer[key]) return;
|
|
142
|
-
Object.defineProperty(exports, key, {
|
|
143
|
-
enumerable: true,
|
|
144
|
-
get: function () {
|
|
145
|
-
return _isRuntimeServer[key];
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
138
|
var _matchSorter = require("./match-sorter.cjs");
|
|
150
139
|
Object.keys(_matchSorter).forEach(function (key) {
|
|
151
140
|
if (key === "default" || key === "__esModule") return;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from "./arg-identity";
|
|
2
2
|
export * from "./debounce";
|
|
3
3
|
export * from "./deep-clone";
|
|
4
|
+
export * from "./deep-copy";
|
|
4
5
|
export * from "./deep-merge";
|
|
5
6
|
export * from "./delay";
|
|
6
7
|
export * from "./flatten-object";
|
|
@@ -9,8 +10,6 @@ export * from "./get-ordered-by";
|
|
|
9
10
|
export * from "./get-unique";
|
|
10
11
|
export * from "./identity";
|
|
11
12
|
export * from "./is-equal";
|
|
12
|
-
export * from "./is-production";
|
|
13
|
-
export * from "./is-runtime-server";
|
|
14
13
|
export * from "./match-sorter";
|
|
15
14
|
export * from "./noop";
|
|
16
15
|
export * from "./remove-accents";
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./arg-identity";export*from"./debounce";export*from"./deep-clone";export*from"./deep-merge";export*from"./delay";export*from"./flatten-object";export*from"./get-field";export*from"./get-ordered-by";export*from"./get-unique";export*from"./identity";export*from"./is-equal";export*from"./
|
|
1
|
+
export*from"./arg-identity";export*from"./debounce";export*from"./deep-clone";export*from"./deep-copy";export*from"./deep-merge";export*from"./delay";export*from"./flatten-object";export*from"./get-field";export*from"./get-ordered-by";export*from"./get-unique";export*from"./identity";export*from"./is-equal";export*from"./match-sorter";export*from"./noop";export*from"./remove-accents";export*from"./remove-empty-items";export*from"./set-field";export*from"./throttle";export*from"./timeout";export*from"./to-deep-key";export*from"./to-path";export*from"./unflatten-object";export*from"./union";export*from"./with-timeout";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stryke/helpers",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
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": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"private": false,
|
|
12
12
|
"publishConfig": { "access": "public" },
|
|
13
|
-
"dependencies": { "@stryke/types": ">=0.1.
|
|
13
|
+
"dependencies": { "type-detect": "^4.1.0", "@stryke/types": ">=0.1.3" },
|
|
14
14
|
"devDependencies": {},
|
|
15
15
|
"sideEffects": false,
|
|
16
16
|
"files": ["dist/**/*"],
|
|
@@ -209,34 +209,6 @@
|
|
|
209
209
|
"default": "./dist/match-sorter.mjs"
|
|
210
210
|
}
|
|
211
211
|
},
|
|
212
|
-
"./is-runtime-server": {
|
|
213
|
-
"import": {
|
|
214
|
-
"types": "./dist/is-runtime-server.d.ts",
|
|
215
|
-
"default": "./dist/is-runtime-server.mjs"
|
|
216
|
-
},
|
|
217
|
-
"require": {
|
|
218
|
-
"types": "./dist/is-runtime-server.d.ts",
|
|
219
|
-
"default": "./dist/is-runtime-server.cjs"
|
|
220
|
-
},
|
|
221
|
-
"default": {
|
|
222
|
-
"types": "./dist/is-runtime-server.d.ts",
|
|
223
|
-
"default": "./dist/is-runtime-server.mjs"
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
"./is-production": {
|
|
227
|
-
"import": {
|
|
228
|
-
"types": "./dist/is-production.d.ts",
|
|
229
|
-
"default": "./dist/is-production.mjs"
|
|
230
|
-
},
|
|
231
|
-
"require": {
|
|
232
|
-
"types": "./dist/is-production.d.ts",
|
|
233
|
-
"default": "./dist/is-production.cjs"
|
|
234
|
-
},
|
|
235
|
-
"default": {
|
|
236
|
-
"types": "./dist/is-production.d.ts",
|
|
237
|
-
"default": "./dist/is-production.mjs"
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
212
|
"./is-equal": {
|
|
241
213
|
"import": {
|
|
242
214
|
"types": "./dist/is-equal.d.ts",
|
|
@@ -365,6 +337,20 @@
|
|
|
365
337
|
"default": "./dist/deep-merge.mjs"
|
|
366
338
|
}
|
|
367
339
|
},
|
|
340
|
+
"./deep-copy": {
|
|
341
|
+
"import": {
|
|
342
|
+
"types": "./dist/deep-copy.d.ts",
|
|
343
|
+
"default": "./dist/deep-copy.mjs"
|
|
344
|
+
},
|
|
345
|
+
"require": {
|
|
346
|
+
"types": "./dist/deep-copy.d.ts",
|
|
347
|
+
"default": "./dist/deep-copy.cjs"
|
|
348
|
+
},
|
|
349
|
+
"default": {
|
|
350
|
+
"types": "./dist/deep-copy.d.ts",
|
|
351
|
+
"default": "./dist/deep-copy.mjs"
|
|
352
|
+
}
|
|
353
|
+
},
|
|
368
354
|
"./deep-clone": {
|
|
369
355
|
"import": {
|
|
370
356
|
"types": "./dist/deep-clone.d.ts",
|
package/dist/is-production.cjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.isProduction = exports.isMode = exports.isDevelopment = void 0;
|
|
7
|
-
const isMode = (o, t) => t?.toLowerCase() === o,
|
|
8
|
-
isProduction = o => isMode("production", o),
|
|
9
|
-
isDevelopment = o => !isProduction(o);
|
|
10
|
-
exports.isDevelopment = isDevelopment;
|
|
11
|
-
exports.isProduction = isProduction;
|
|
12
|
-
exports.isMode = isMode;
|
package/dist/is-production.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Check the current runtime mode of the process
|
|
3
|
-
*
|
|
4
|
-
* @param mode - The mode to check the current process's mode against
|
|
5
|
-
* @param env - An optional environment name to check the current process's mode against
|
|
6
|
-
* @returns An indicator specifying if the current runtime matches the `mode` parameter
|
|
7
|
-
*/
|
|
8
|
-
export declare const isMode: (mode: string, env: string) => boolean;
|
|
9
|
-
/**
|
|
10
|
-
* The function checks if the code is running in production.
|
|
11
|
-
*
|
|
12
|
-
* @param env - An environment name to check the current process's mode against
|
|
13
|
-
* @returns A boolean indicating if the code is running in production.
|
|
14
|
-
*/
|
|
15
|
-
export declare const isProduction: (env: string) => boolean;
|
|
16
|
-
/**
|
|
17
|
-
* The function checks if the code is **NOT** running in production.
|
|
18
|
-
*
|
|
19
|
-
* @remarks
|
|
20
|
-
* **Please note:** This function does **not** check if the mode equals 'development' specifically.
|
|
21
|
-
*
|
|
22
|
-
* To check for the 'development' mode specifically, run:
|
|
23
|
-
*
|
|
24
|
-
* ```typescript
|
|
25
|
-
* const isDevelopmentSpecifically = isMode("development");
|
|
26
|
-
* ```
|
|
27
|
-
* @param env - An environment name to check the current process's mode against
|
|
28
|
-
* @returns A boolean indicating if the code is **NOT** running in production.
|
|
29
|
-
*/
|
|
30
|
-
export declare const isDevelopment: (env: string) => boolean;
|
package/dist/is-production.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const isMode=(o,t)=>t?.toLowerCase()===o,isProduction=o=>isMode("production",o),isDevelopment=o=>!isProduction(o);
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.isRuntimeServer = exports.isRuntimeClient = void 0;
|
|
7
|
-
const isRuntimeServer = () => typeof globalThis > "u" || "Deno" in globalThis,
|
|
8
|
-
isRuntimeClient = () => !isRuntimeServer();
|
|
9
|
-
exports.isRuntimeClient = isRuntimeClient;
|
|
10
|
-
exports.isRuntimeServer = isRuntimeServer;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The function checks if the code is running on the server-side
|
|
3
|
-
*
|
|
4
|
-
* @returns An indicator specifying if the code is running on the server-side
|
|
5
|
-
*/
|
|
6
|
-
export declare const isRuntimeServer: () => boolean;
|
|
7
|
-
/**
|
|
8
|
-
* The function checks if the code is running in
|
|
9
|
-
* the browser (and not on the server).
|
|
10
|
-
*/
|
|
11
|
-
export declare const isRuntimeClient: () => boolean;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const isRuntimeServer=()=>typeof globalThis>"u"||"Deno"in globalThis,isRuntimeClient=()=>!isRuntimeServer();
|