@baseplate-dev/utils 0.2.3 → 0.2.4
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/json/index.d.ts +1 -0
- package/dist/json/index.d.ts.map +1 -1
- package/dist/json/index.js +1 -0
- package/dist/json/index.js.map +1 -1
- package/dist/json/json-deep-clone.d.ts +10 -0
- package/dist/json/json-deep-clone.d.ts.map +1 -0
- package/dist/json/json-deep-clone.js +44 -0
- package/dist/json/json-deep-clone.js.map +1 -0
- package/package.json +2 -2
package/dist/json/index.d.ts
CHANGED
package/dist/json/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/json/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/json/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC"}
|
package/dist/json/index.js
CHANGED
package/dist/json/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/json/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/json/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively deep clones JSON-compatible values.
|
|
3
|
+
* Throws if the value is not JSON-serializable.
|
|
4
|
+
*
|
|
5
|
+
* @param value - The value to clone
|
|
6
|
+
* @returns A deep-cloned copy of the value
|
|
7
|
+
* @throws Error if a non-JSON value is encountered
|
|
8
|
+
*/
|
|
9
|
+
export declare function jsonDeepClone<T>(value: T): T;
|
|
10
|
+
//# sourceMappingURL=json-deep-clone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-deep-clone.d.ts","sourceRoot":"","sources":["../../src/json/json-deep-clone.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA2C5C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively deep clones JSON-compatible values.
|
|
3
|
+
* Throws if the value is not JSON-serializable.
|
|
4
|
+
*
|
|
5
|
+
* @param value - The value to clone
|
|
6
|
+
* @returns A deep-cloned copy of the value
|
|
7
|
+
* @throws Error if a non-JSON value is encountered
|
|
8
|
+
*/
|
|
9
|
+
export function jsonDeepClone(value) {
|
|
10
|
+
if (value === undefined ||
|
|
11
|
+
value === null ||
|
|
12
|
+
typeof value === 'boolean' ||
|
|
13
|
+
typeof value === 'string') {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
if (typeof value === 'number') {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
if (typeof value === 'object') {
|
|
20
|
+
if (value instanceof Date || value instanceof RegExp) {
|
|
21
|
+
throw new TypeError(`Cannot clone value of unsupported type: ${value.constructor.name}`);
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
// Clone array elements
|
|
25
|
+
const copy = [];
|
|
26
|
+
for (const [i, element] of value.entries()) {
|
|
27
|
+
copy[i] = jsonDeepClone(element);
|
|
28
|
+
}
|
|
29
|
+
return copy;
|
|
30
|
+
}
|
|
31
|
+
// Clone plain object properties
|
|
32
|
+
const copy = {};
|
|
33
|
+
for (const key in value) {
|
|
34
|
+
if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
35
|
+
const prop = value[key];
|
|
36
|
+
copy[key] = jsonDeepClone(prop);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return copy;
|
|
40
|
+
}
|
|
41
|
+
// Reject functions, symbols, BigInt, etc.
|
|
42
|
+
throw new Error(`Cannot clone value of unsupported type: ${typeof value}`);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=json-deep-clone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-deep-clone.js","sourceRoot":"","sources":["../../src/json/json-deep-clone.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAI,KAAQ;IACvC,IACE,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,SAAS;QAC1B,OAAO,KAAK,KAAK,QAAQ,EACzB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YACrD,MAAM,IAAI,SAAS,CACjB,2CAA2C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,uBAAuB;YACvB,MAAM,IAAI,GAAc,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3C,IAAI,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,IAAS,CAAC;QACnB,CAAC;QAED,gCAAgC;QAChC,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;gBACrD,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,0CAA0C;IAC1C,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,KAAK,EAAE,CAAC,CAAC;AAC7E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baseplate-dev/utils",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "Shared utility functions for Baseplate",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"utilities",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"prettier": "3.5.3",
|
|
52
52
|
"typescript": "5.7.3",
|
|
53
53
|
"vitest": "3.0.7",
|
|
54
|
-
"@baseplate-dev/tools": "0.2.
|
|
54
|
+
"@baseplate-dev/tools": "0.2.4"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"node": "^22.0.0"
|