@visulima/deep-clone 2.1.6 → 2.1.8
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/CHANGELOG.md +28 -0
- package/LICENSE.md +6 -0
- package/README.md +73 -73
- package/dist/handler.cjs +32 -1
- package/dist/handler.mjs +10 -1
- package/dist/index.cjs +121 -1
- package/dist/index.mjs +117 -1
- package/dist/packem_shared/copyArrayBuffer-ClXU6N_V.mjs +34 -0
- package/dist/packem_shared/copyArrayBuffer-RMfO5nNu.cjs +36 -0
- package/dist/packem_shared/copyArrayLoose-DutO2eEt.mjs +19 -0
- package/dist/packem_shared/copyArrayLoose-jv5B0O8W.cjs +24 -0
- package/dist/packem_shared/copyBlob-B8SnIatQ.cjs +7 -0
- package/dist/packem_shared/copyBlob-ChzBsdC1.mjs +5 -0
- package/dist/packem_shared/copyDataView-BfhmLiTi.cjs +9 -0
- package/dist/packem_shared/copyDataView-xL-RicuC.mjs +7 -0
- package/dist/packem_shared/copyDate-Bgbm3mwe.mjs +5 -0
- package/dist/packem_shared/copyDate-CSIVko_l.cjs +7 -0
- package/dist/packem_shared/copyError-8k5J3dj4.mjs +22 -0
- package/dist/packem_shared/copyError-C1oK1eBT.cjs +24 -0
- package/dist/packem_shared/copyMapLoose-6OISt6H6.mjs +15 -0
- package/dist/packem_shared/copyMapLoose-DpoR0LmV.cjs +20 -0
- package/dist/packem_shared/copyObjectLoose-C0Xe4P0E.mjs +47 -0
- package/dist/packem_shared/copyObjectLoose-PHaYRVaE.cjs +52 -0
- package/dist/packem_shared/copyOwnProperties-FDDRgAnK.mjs +30 -0
- package/dist/packem_shared/copyOwnProperties-NdANNH2P.cjs +32 -0
- package/dist/packem_shared/copyRegExpLoose-455kIpwH.cjs +20 -0
- package/dist/packem_shared/copyRegExpLoose-CPAMvOoY.mjs +15 -0
- package/dist/packem_shared/copySetLoose-BBgAFOdx.cjs +20 -0
- package/dist/packem_shared/copySetLoose-BIxHjmWz.mjs +15 -0
- package/dist/packem_shared/getCleanClone-BhfRMqgx.cjs +22 -0
- package/dist/packem_shared/getCleanClone-Ch3gqIzM.mjs +20 -0
- package/dist/utils.cjs +11 -1
- package/dist/utils.mjs +2 -1
- package/package.json +17 -17
- package/dist/packem_shared/copyArrayBuffer-CErFt6r1.cjs +0 -1
- package/dist/packem_shared/copyArrayBuffer-hX6Bv2Yc.mjs +0 -1
- package/dist/packem_shared/copyArrayLoose-B2xEXxZi.mjs +0 -1
- package/dist/packem_shared/copyArrayLoose-ukX__AC4.cjs +0 -1
- package/dist/packem_shared/copyBlob-CCIQ88PB.cjs +0 -1
- package/dist/packem_shared/copyBlob-zWtjc8BU.mjs +0 -1
- package/dist/packem_shared/copyDataView-C9SuIdXo.cjs +0 -1
- package/dist/packem_shared/copyDataView-CHZxqd6h.mjs +0 -1
- package/dist/packem_shared/copyDate-CSebYDy0.mjs +0 -1
- package/dist/packem_shared/copyDate-CfZZ3WAO.cjs +0 -1
- package/dist/packem_shared/copyError-BzQAysGw.mjs +0 -1
- package/dist/packem_shared/copyError-DGbUXsSU.cjs +0 -1
- package/dist/packem_shared/copyMapLoose-CorlUnMI.mjs +0 -1
- package/dist/packem_shared/copyMapLoose-CuTK-fBO.cjs +0 -1
- package/dist/packem_shared/copyObjectLoose-CbVJDz5e.cjs +0 -1
- package/dist/packem_shared/copyObjectLoose-DrrTtApt.mjs +0 -1
- package/dist/packem_shared/copyOwnProperties-QEhjt2x8.mjs +0 -1
- package/dist/packem_shared/copyOwnProperties-Zk6Vg6Oe.cjs +0 -1
- package/dist/packem_shared/copyRegExpLoose-BvCnMoGQ.mjs +0 -1
- package/dist/packem_shared/copyRegExpLoose-DzJvEX_n.cjs +0 -1
- package/dist/packem_shared/copySetLoose-FGAEcE9e.mjs +0 -1
- package/dist/packem_shared/copySetLoose-v1Cjaq91.cjs +0 -1
- package/dist/packem_shared/getCleanClone-D0FN9QGR.mjs +0 -1
- package/dist/packem_shared/getCleanClone-DLZ_E9xd.cjs +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
## @visulima/deep-clone [2.1.8](https://github.com/visulima/visulima/compare/@visulima/deep-clone@2.1.7...@visulima/deep-clone@2.1.8) (2025-01-12)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* updated @visulima/packem, and all other dev dependencies ([7797a1c](https://github.com/visulima/visulima/commit/7797a1c3e6f1fc532895247bd88285a8a9883c40))
|
|
6
|
+
|
|
7
|
+
### Miscellaneous Chores
|
|
8
|
+
|
|
9
|
+
* updated dev dependencies ([9de2eab](https://github.com/visulima/visulima/commit/9de2eab91e95c8b9289d12f863a5167218770650))
|
|
10
|
+
|
|
11
|
+
## @visulima/deep-clone [2.1.7](https://github.com/visulima/visulima/compare/@visulima/deep-clone@2.1.6...@visulima/deep-clone@2.1.7) (2024-12-12)
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* added missing placeholder variables into LICENSE.md file ([cef32c6](https://github.com/visulima/visulima/commit/cef32c6eb19dc3215a835e848ef12223a8fa05e0))
|
|
16
|
+
* allow node v23 ([8ca929a](https://github.com/visulima/visulima/commit/8ca929af311ce8036cbbfde68b6db05381b860a5))
|
|
17
|
+
* allowed node 23, updated dev dependencies ([f99d34e](https://github.com/visulima/visulima/commit/f99d34e01f6b13be8586a1b5d37dc8b8df0a5817))
|
|
18
|
+
* updated packem to v1.8.2 ([23f869b](https://github.com/visulima/visulima/commit/23f869b4120856cc97e2bffa6d508e2ae30420ea))
|
|
19
|
+
* updated packem to v1.9.2 ([47bdc2d](https://github.com/visulima/visulima/commit/47bdc2dfaeca4e7014dbe7772eae2fdf8c8b35bb))
|
|
20
|
+
|
|
21
|
+
### Styles
|
|
22
|
+
|
|
23
|
+
* cs fixes ([46d31e0](https://github.com/visulima/visulima/commit/46d31e082e1865262bf380859c14fabd28ff456d))
|
|
24
|
+
|
|
25
|
+
### Miscellaneous Chores
|
|
26
|
+
|
|
27
|
+
* updated dev dependencies ([a916944](https://github.com/visulima/visulima/commit/a916944b888bb34c34b0c54328b38d29e4399857))
|
|
28
|
+
|
|
1
29
|
## @visulima/deep-clone [2.1.6](https://github.com/visulima/visulima/compare/@visulima/deep-clone@2.1.5...@visulima/deep-clone@2.1.6) (2024-10-05)
|
|
2
30
|
|
|
3
31
|
### Bug Fixes
|
package/LICENSE.md
CHANGED
|
@@ -19,3 +19,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
<!-- DEPENDENCIES -->
|
|
24
|
+
<!-- /DEPENDENCIES -->
|
|
25
|
+
|
|
26
|
+
<!-- TYPE_DEPENDENCIES -->
|
|
27
|
+
<!-- /TYPE_DEPENDENCIES -->
|
package/README.md
CHANGED
|
@@ -79,24 +79,24 @@ Type: `object`
|
|
|
79
79
|
|
|
80
80
|
A set of custom handlers for specific type of value. Each handler is a function that takes the original value and returns a new value or throws an error if the value is not supported.
|
|
81
81
|
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
82
|
+
- Array: InternalHandler<unknown[]>;
|
|
83
|
+
- ArrayBuffer: InternalHandler<ArrayBuffer>;
|
|
84
|
+
- Blob: InternalHandler<Blob>;
|
|
85
|
+
- DataView: InternalHandler<DataView>;
|
|
86
|
+
- Date: InternalHandler<Date>;
|
|
87
|
+
- Error: InternalHandler<Error>;
|
|
88
|
+
- Float32Array: InternalHandler<Float32Array>;
|
|
89
|
+
- Float64Array: InternalHandler<Float64Array>;
|
|
90
|
+
- Int8Array: InternalHandler<Int8Array>;
|
|
91
|
+
- Int16Array: InternalHandler<Int16Array>;
|
|
92
|
+
- Int32Array: InternalHandler<Int32Array>;
|
|
93
|
+
- Map: InternalHandler<Map<unknown, unknown>>;
|
|
94
|
+
- Object: InternalHandler<Record<string, unknown>>;
|
|
95
|
+
- Promise: InternalHandler<Promise<unknown>>;
|
|
96
|
+
- RegExp: InternalHandler<RegExp>;
|
|
97
|
+
- Set: InternalHandler<Set<unknown>>;
|
|
98
|
+
- WeakMap: InternalHandler<WeakMap<any, unknown>>;
|
|
99
|
+
- WeakSet: InternalHandler<WeakSet<any>>;
|
|
100
100
|
|
|
101
101
|
## Utils
|
|
102
102
|
|
|
@@ -130,59 +130,59 @@ console.log(clean); // => {}
|
|
|
130
130
|
|
|
131
131
|
## Notes
|
|
132
132
|
|
|
133
|
-
-
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
|
|
168
|
-
-
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
133
|
+
- List of **supported** values/types:
|
|
134
|
+
|
|
135
|
+
- `undefined` (original value is returned)
|
|
136
|
+
- `null` (original value is returned)
|
|
137
|
+
- `boolean`/`Boolean` (original value is returned)
|
|
138
|
+
- `string`/`String` (original value is returned)
|
|
139
|
+
- `number`/`Number` (original value is returned)
|
|
140
|
+
- `function`
|
|
141
|
+
- `Object`
|
|
142
|
+
- `Date`
|
|
143
|
+
- `RegExp`
|
|
144
|
+
- `Set`
|
|
145
|
+
- `Map`
|
|
146
|
+
- [`Error`][mdn-error]
|
|
147
|
+
- [`URIError`][mdn-uri-error]
|
|
148
|
+
- [`ReferenceError`][mdn-reference-error]
|
|
149
|
+
- [`SyntaxError`][mdn-syntax-error]
|
|
150
|
+
- [`RangeError`][mdn-range-error]
|
|
151
|
+
- [`EvalError`][mdn-eval-error]
|
|
152
|
+
- [`TypeError`][mdn-type-error]
|
|
153
|
+
- [`System Error`][node-system-error] (Node.js)
|
|
154
|
+
- `Array`
|
|
155
|
+
- `Int8Array`
|
|
156
|
+
- `Uint8Array`
|
|
157
|
+
- `Uint8ClampedArray`
|
|
158
|
+
- `Init16Array`
|
|
159
|
+
- `Uint16Array`
|
|
160
|
+
- `Int32Array`
|
|
161
|
+
- `Uint32Array`
|
|
162
|
+
- `Float32Array`
|
|
163
|
+
- `Float64Array`
|
|
164
|
+
- `Buffer` ([Node.js][node-buffer])
|
|
165
|
+
- `DataView`
|
|
166
|
+
- `Blob`
|
|
167
|
+
|
|
168
|
+
- List of **unsupported** values/types:
|
|
169
|
+
|
|
170
|
+
- `DOMElement`: to copy DOM elements, use `element.cloneNode()`.
|
|
171
|
+
- `Symbol`
|
|
172
|
+
- `WeakMap`
|
|
173
|
+
- `WeakSet`
|
|
174
|
+
- `File`
|
|
175
|
+
- `FileList`
|
|
176
|
+
- `ImageData`
|
|
177
|
+
- `ImageBitmap`
|
|
178
|
+
- `Promise`
|
|
179
|
+
- `SharedArrayBuffer`
|
|
180
|
+
|
|
181
|
+
- The implementation **can** handle circular references.
|
|
182
|
+
- If a `Number`, `String`, or `Boolean` object is encountered, the value is cloned as a **primitive**. This behavior is intentional. The implementation is opinionated in wanting to **avoid** creating `numbers`, `strings`, and `booleans` via the `new` operator and a constructor.
|
|
183
|
+
- The implementation **only** checks whether basic `Objects`, `Arrays`, and class instances are `extensible`, `sealed`, and/or `frozen`.
|
|
184
|
+
- `functions` are **not** cloned; their reference is copied.
|
|
185
|
+
- The implementation supports custom [`error`][mdn-error] types which are [`Error`][mdn-error] instances (e.g., ES2015 subclasses).
|
|
186
186
|
|
|
187
187
|
## Benchmarks
|
|
188
188
|
|
|
@@ -207,8 +207,8 @@ If you would like to help take a look at the [list of issues](https://github.com
|
|
|
207
207
|
|
|
208
208
|
## Credits
|
|
209
209
|
|
|
210
|
-
-
|
|
211
|
-
-
|
|
210
|
+
- [Daniel Bannert](https://github.com/prisis)
|
|
211
|
+
- [All Contributors](https://github.com/visulima/visulima/graphs/contributors)
|
|
212
212
|
|
|
213
213
|
## License
|
|
214
214
|
|
package/dist/handler.cjs
CHANGED
|
@@ -1 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
+
|
|
5
|
+
const copyArrayLoose = require('./packem_shared/copyArrayLoose-jv5B0O8W.cjs');
|
|
6
|
+
const copyArrayBuffer = require('./packem_shared/copyArrayBuffer-RMfO5nNu.cjs');
|
|
7
|
+
const copyBlob = require('./packem_shared/copyBlob-B8SnIatQ.cjs');
|
|
8
|
+
const copyDataView = require('./packem_shared/copyDataView-BfhmLiTi.cjs');
|
|
9
|
+
const copyDate = require('./packem_shared/copyDate-CSIVko_l.cjs');
|
|
10
|
+
const copyError = require('./packem_shared/copyError-C1oK1eBT.cjs');
|
|
11
|
+
const copyMapLoose = require('./packem_shared/copyMapLoose-DpoR0LmV.cjs');
|
|
12
|
+
const copyObjectLoose = require('./packem_shared/copyObjectLoose-PHaYRVaE.cjs');
|
|
13
|
+
const copyRegExpLoose = require('./packem_shared/copyRegExpLoose-455kIpwH.cjs');
|
|
14
|
+
const copySetLoose = require('./packem_shared/copySetLoose-BBgAFOdx.cjs');
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
exports.copyArrayLoose = copyArrayLoose.copyArrayLoose;
|
|
19
|
+
exports.copyArrayStrict = copyArrayLoose.copyArrayStrict;
|
|
20
|
+
exports.copyArrayBuffer = copyArrayBuffer;
|
|
21
|
+
exports.copyBlob = copyBlob;
|
|
22
|
+
exports.copyDataView = copyDataView;
|
|
23
|
+
exports.copyDate = copyDate;
|
|
24
|
+
exports.copyError = copyError;
|
|
25
|
+
exports.copyMapLoose = copyMapLoose.copyMapLoose;
|
|
26
|
+
exports.copyMapStrict = copyMapLoose.copyMapStrict;
|
|
27
|
+
exports.copyObjectLoose = copyObjectLoose.copyObjectLoose;
|
|
28
|
+
exports.copyObjectStrict = copyObjectLoose.copyObjectStrict;
|
|
29
|
+
exports.copyRegExpLoose = copyRegExpLoose.copyRegExpLoose;
|
|
30
|
+
exports.copyRegExpStrict = copyRegExpLoose.copyRegExpStrict;
|
|
31
|
+
exports.copySetLoose = copySetLoose.copySetLoose;
|
|
32
|
+
exports.copySetStrict = copySetLoose.copySetStrict;
|
package/dist/handler.mjs
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
export { copyArrayLoose, copyArrayStrict } from './packem_shared/copyArrayLoose-DutO2eEt.mjs';
|
|
2
|
+
export { default as copyArrayBuffer } from './packem_shared/copyArrayBuffer-ClXU6N_V.mjs';
|
|
3
|
+
export { default as copyBlob } from './packem_shared/copyBlob-ChzBsdC1.mjs';
|
|
4
|
+
export { default as copyDataView } from './packem_shared/copyDataView-xL-RicuC.mjs';
|
|
5
|
+
export { default as copyDate } from './packem_shared/copyDate-Bgbm3mwe.mjs';
|
|
6
|
+
export { default as copyError } from './packem_shared/copyError-8k5J3dj4.mjs';
|
|
7
|
+
export { copyMapLoose, copyMapStrict } from './packem_shared/copyMapLoose-6OISt6H6.mjs';
|
|
8
|
+
export { copyObjectLoose, copyObjectStrict } from './packem_shared/copyObjectLoose-C0Xe4P0E.mjs';
|
|
9
|
+
export { copyRegExpLoose, copyRegExpStrict } from './packem_shared/copyRegExpLoose-CPAMvOoY.mjs';
|
|
10
|
+
export { copySetLoose, copySetStrict } from './packem_shared/copySetLoose-BIxHjmWz.mjs';
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1,121 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
+
|
|
5
|
+
const copyArrayLoose = require('./packem_shared/copyArrayLoose-jv5B0O8W.cjs');
|
|
6
|
+
const copyArrayBuffer = require('./packem_shared/copyArrayBuffer-RMfO5nNu.cjs');
|
|
7
|
+
const copyBlob = require('./packem_shared/copyBlob-B8SnIatQ.cjs');
|
|
8
|
+
const copyDataView = require('./packem_shared/copyDataView-BfhmLiTi.cjs');
|
|
9
|
+
const copyDate = require('./packem_shared/copyDate-CSIVko_l.cjs');
|
|
10
|
+
const copyError = require('./packem_shared/copyError-C1oK1eBT.cjs');
|
|
11
|
+
const copyMapLoose = require('./packem_shared/copyMapLoose-DpoR0LmV.cjs');
|
|
12
|
+
const copyObjectLoose = require('./packem_shared/copyObjectLoose-PHaYRVaE.cjs');
|
|
13
|
+
const copyRegExpLoose = require('./packem_shared/copyRegExpLoose-455kIpwH.cjs');
|
|
14
|
+
const copySetLoose = require('./packem_shared/copySetLoose-BBgAFOdx.cjs');
|
|
15
|
+
|
|
16
|
+
var __defProp = Object.defineProperty;
|
|
17
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
18
|
+
const canValueHaveProperties = /* @__PURE__ */ __name((value) => typeof value === "object" && value !== null || typeof value === "function", "canValueHaveProperties");
|
|
19
|
+
const handlers = {
|
|
20
|
+
Array: copyArrayLoose.copyArrayLoose,
|
|
21
|
+
ArrayBuffer: copyArrayBuffer,
|
|
22
|
+
Blob: copyBlob,
|
|
23
|
+
DataView: copyDataView,
|
|
24
|
+
Date: copyDate,
|
|
25
|
+
Error: copyError,
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-types,@typescript-eslint/no-unused-vars
|
|
27
|
+
Function: /* @__PURE__ */ __name((object, _state) => object, "Function"),
|
|
28
|
+
Map: copyMapLoose.copyMapLoose,
|
|
29
|
+
Object: copyObjectLoose.copyObjectLoose,
|
|
30
|
+
Promise: /* @__PURE__ */ __name((object) => {
|
|
31
|
+
throw new TypeError(`${object.constructor.name} objects cannot be cloned`);
|
|
32
|
+
}, "Promise"),
|
|
33
|
+
RegExp: copyRegExpLoose.copyRegExpLoose,
|
|
34
|
+
Set: copySetLoose.copySetLoose,
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
36
|
+
SharedArrayBuffer: /* @__PURE__ */ __name((object, _state) => {
|
|
37
|
+
throw new TypeError(`${object.constructor.name} objects cannot be cloned`);
|
|
38
|
+
}, "SharedArrayBuffer"),
|
|
39
|
+
WeakMap: /* @__PURE__ */ __name((object) => {
|
|
40
|
+
throw new TypeError(`${object.constructor.name} objects cannot be cloned`);
|
|
41
|
+
}, "WeakMap"),
|
|
42
|
+
WeakSet: /* @__PURE__ */ __name((object) => {
|
|
43
|
+
throw new TypeError(`${object.constructor.name} objects cannot be cloned`);
|
|
44
|
+
}, "WeakSet")
|
|
45
|
+
};
|
|
46
|
+
const deepClone = /* @__PURE__ */ __name((originalData, options) => {
|
|
47
|
+
if (!canValueHaveProperties(originalData)) {
|
|
48
|
+
return originalData;
|
|
49
|
+
}
|
|
50
|
+
const cloner = {
|
|
51
|
+
...handlers,
|
|
52
|
+
...options?.strict ? { Array: copyArrayLoose.copyArrayStrict, Map: copyMapLoose.copyMapStrict, Object: copyObjectLoose.copyObjectStrict, RegExp: copyRegExpLoose.copyRegExpStrict, Set: copySetLoose.copySetStrict } : {},
|
|
53
|
+
...options?.handler
|
|
54
|
+
};
|
|
55
|
+
let cache = /* @__PURE__ */ new WeakMap();
|
|
56
|
+
const clone = /* @__PURE__ */ __name((value, state) => {
|
|
57
|
+
if (!canValueHaveProperties(value)) {
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
if (state.cache.has(value)) {
|
|
61
|
+
return state.cache.get(value);
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(value)) {
|
|
64
|
+
return cloner.Array(value, state);
|
|
65
|
+
}
|
|
66
|
+
if (typeof value === "object" && value.constructor === Object && value.nodeType === undefined) {
|
|
67
|
+
return cloner.Object(value, state);
|
|
68
|
+
}
|
|
69
|
+
if (value.nodeType !== undefined && value.cloneNode !== undefined) {
|
|
70
|
+
return value.cloneNode(true);
|
|
71
|
+
}
|
|
72
|
+
if (value instanceof Date) {
|
|
73
|
+
return cloner.Date(value, state);
|
|
74
|
+
}
|
|
75
|
+
if (value instanceof RegExp) {
|
|
76
|
+
return cloner.RegExp(value, state);
|
|
77
|
+
}
|
|
78
|
+
if (value instanceof Map) {
|
|
79
|
+
return cloner.Map(value, state);
|
|
80
|
+
}
|
|
81
|
+
if (value instanceof Set) {
|
|
82
|
+
return cloner.Set(value, state);
|
|
83
|
+
}
|
|
84
|
+
if (value instanceof Error) {
|
|
85
|
+
return cloner.Error(value, state);
|
|
86
|
+
}
|
|
87
|
+
if (value instanceof ArrayBuffer || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Uint32Array || value instanceof Int32Array || value instanceof Float32Array || value instanceof Float64Array) {
|
|
88
|
+
return cloner.ArrayBuffer(value, state);
|
|
89
|
+
}
|
|
90
|
+
if (value instanceof Blob) {
|
|
91
|
+
return cloner.Blob(value, state);
|
|
92
|
+
}
|
|
93
|
+
if (value instanceof DataView) {
|
|
94
|
+
return cloner.DataView(value, state);
|
|
95
|
+
}
|
|
96
|
+
if (value instanceof SharedArrayBuffer) {
|
|
97
|
+
return cloner.SharedArrayBuffer(value, state);
|
|
98
|
+
}
|
|
99
|
+
if (value instanceof Promise) {
|
|
100
|
+
return cloner.Promise(value, state);
|
|
101
|
+
}
|
|
102
|
+
if (value instanceof WeakMap) {
|
|
103
|
+
return cloner.WeakMap(value, state);
|
|
104
|
+
}
|
|
105
|
+
if (value instanceof WeakSet) {
|
|
106
|
+
return cloner.WeakSet(value, state);
|
|
107
|
+
}
|
|
108
|
+
if (value instanceof Function) {
|
|
109
|
+
return cloner.Function(value, state);
|
|
110
|
+
}
|
|
111
|
+
if (typeof value === "object") {
|
|
112
|
+
return cloner.Object(value, state);
|
|
113
|
+
}
|
|
114
|
+
throw new TypeError(`Type of ${typeof value} cannot be cloned`, value);
|
|
115
|
+
}, "clone");
|
|
116
|
+
const cloned = clone(originalData, { cache, clone });
|
|
117
|
+
cache = null;
|
|
118
|
+
return cloned;
|
|
119
|
+
}, "deepClone");
|
|
120
|
+
|
|
121
|
+
exports.deepClone = deepClone;
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1,117 @@
|
|
|
1
|
-
|
|
1
|
+
import { copyArrayStrict, copyArrayLoose } from './packem_shared/copyArrayLoose-DutO2eEt.mjs';
|
|
2
|
+
import copyArrayBuffer from './packem_shared/copyArrayBuffer-ClXU6N_V.mjs';
|
|
3
|
+
import copyBlob from './packem_shared/copyBlob-ChzBsdC1.mjs';
|
|
4
|
+
import copyDataView from './packem_shared/copyDataView-xL-RicuC.mjs';
|
|
5
|
+
import copyDate from './packem_shared/copyDate-Bgbm3mwe.mjs';
|
|
6
|
+
import copyError from './packem_shared/copyError-8k5J3dj4.mjs';
|
|
7
|
+
import { copyMapStrict, copyMapLoose } from './packem_shared/copyMapLoose-6OISt6H6.mjs';
|
|
8
|
+
import { copyObjectStrict, copyObjectLoose } from './packem_shared/copyObjectLoose-C0Xe4P0E.mjs';
|
|
9
|
+
import { copyRegExpStrict, copyRegExpLoose } from './packem_shared/copyRegExpLoose-CPAMvOoY.mjs';
|
|
10
|
+
import { copySetStrict, copySetLoose } from './packem_shared/copySetLoose-BIxHjmWz.mjs';
|
|
11
|
+
|
|
12
|
+
var __defProp = Object.defineProperty;
|
|
13
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
14
|
+
const canValueHaveProperties = /* @__PURE__ */ __name((value) => typeof value === "object" && value !== null || typeof value === "function", "canValueHaveProperties");
|
|
15
|
+
const handlers = {
|
|
16
|
+
Array: copyArrayLoose,
|
|
17
|
+
ArrayBuffer: copyArrayBuffer,
|
|
18
|
+
Blob: copyBlob,
|
|
19
|
+
DataView: copyDataView,
|
|
20
|
+
Date: copyDate,
|
|
21
|
+
Error: copyError,
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/ban-types,@typescript-eslint/no-unused-vars
|
|
23
|
+
Function: /* @__PURE__ */ __name((object, _state) => object, "Function"),
|
|
24
|
+
Map: copyMapLoose,
|
|
25
|
+
Object: copyObjectLoose,
|
|
26
|
+
Promise: /* @__PURE__ */ __name((object) => {
|
|
27
|
+
throw new TypeError(`${object.constructor.name} objects cannot be cloned`);
|
|
28
|
+
}, "Promise"),
|
|
29
|
+
RegExp: copyRegExpLoose,
|
|
30
|
+
Set: copySetLoose,
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
+
SharedArrayBuffer: /* @__PURE__ */ __name((object, _state) => {
|
|
33
|
+
throw new TypeError(`${object.constructor.name} objects cannot be cloned`);
|
|
34
|
+
}, "SharedArrayBuffer"),
|
|
35
|
+
WeakMap: /* @__PURE__ */ __name((object) => {
|
|
36
|
+
throw new TypeError(`${object.constructor.name} objects cannot be cloned`);
|
|
37
|
+
}, "WeakMap"),
|
|
38
|
+
WeakSet: /* @__PURE__ */ __name((object) => {
|
|
39
|
+
throw new TypeError(`${object.constructor.name} objects cannot be cloned`);
|
|
40
|
+
}, "WeakSet")
|
|
41
|
+
};
|
|
42
|
+
const deepClone = /* @__PURE__ */ __name((originalData, options) => {
|
|
43
|
+
if (!canValueHaveProperties(originalData)) {
|
|
44
|
+
return originalData;
|
|
45
|
+
}
|
|
46
|
+
const cloner = {
|
|
47
|
+
...handlers,
|
|
48
|
+
...options?.strict ? { Array: copyArrayStrict, Map: copyMapStrict, Object: copyObjectStrict, RegExp: copyRegExpStrict, Set: copySetStrict } : {},
|
|
49
|
+
...options?.handler
|
|
50
|
+
};
|
|
51
|
+
let cache = /* @__PURE__ */ new WeakMap();
|
|
52
|
+
const clone = /* @__PURE__ */ __name((value, state) => {
|
|
53
|
+
if (!canValueHaveProperties(value)) {
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
if (state.cache.has(value)) {
|
|
57
|
+
return state.cache.get(value);
|
|
58
|
+
}
|
|
59
|
+
if (Array.isArray(value)) {
|
|
60
|
+
return cloner.Array(value, state);
|
|
61
|
+
}
|
|
62
|
+
if (typeof value === "object" && value.constructor === Object && value.nodeType === undefined) {
|
|
63
|
+
return cloner.Object(value, state);
|
|
64
|
+
}
|
|
65
|
+
if (value.nodeType !== undefined && value.cloneNode !== undefined) {
|
|
66
|
+
return value.cloneNode(true);
|
|
67
|
+
}
|
|
68
|
+
if (value instanceof Date) {
|
|
69
|
+
return cloner.Date(value, state);
|
|
70
|
+
}
|
|
71
|
+
if (value instanceof RegExp) {
|
|
72
|
+
return cloner.RegExp(value, state);
|
|
73
|
+
}
|
|
74
|
+
if (value instanceof Map) {
|
|
75
|
+
return cloner.Map(value, state);
|
|
76
|
+
}
|
|
77
|
+
if (value instanceof Set) {
|
|
78
|
+
return cloner.Set(value, state);
|
|
79
|
+
}
|
|
80
|
+
if (value instanceof Error) {
|
|
81
|
+
return cloner.Error(value, state);
|
|
82
|
+
}
|
|
83
|
+
if (value instanceof ArrayBuffer || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Uint32Array || value instanceof Int32Array || value instanceof Float32Array || value instanceof Float64Array) {
|
|
84
|
+
return cloner.ArrayBuffer(value, state);
|
|
85
|
+
}
|
|
86
|
+
if (value instanceof Blob) {
|
|
87
|
+
return cloner.Blob(value, state);
|
|
88
|
+
}
|
|
89
|
+
if (value instanceof DataView) {
|
|
90
|
+
return cloner.DataView(value, state);
|
|
91
|
+
}
|
|
92
|
+
if (value instanceof SharedArrayBuffer) {
|
|
93
|
+
return cloner.SharedArrayBuffer(value, state);
|
|
94
|
+
}
|
|
95
|
+
if (value instanceof Promise) {
|
|
96
|
+
return cloner.Promise(value, state);
|
|
97
|
+
}
|
|
98
|
+
if (value instanceof WeakMap) {
|
|
99
|
+
return cloner.WeakMap(value, state);
|
|
100
|
+
}
|
|
101
|
+
if (value instanceof WeakSet) {
|
|
102
|
+
return cloner.WeakSet(value, state);
|
|
103
|
+
}
|
|
104
|
+
if (value instanceof Function) {
|
|
105
|
+
return cloner.Function(value, state);
|
|
106
|
+
}
|
|
107
|
+
if (typeof value === "object") {
|
|
108
|
+
return cloner.Object(value, state);
|
|
109
|
+
}
|
|
110
|
+
throw new TypeError(`Type of ${typeof value} cannot be cloned`, value);
|
|
111
|
+
}, "clone");
|
|
112
|
+
const cloned = clone(originalData, { cache, clone });
|
|
113
|
+
cache = null;
|
|
114
|
+
return cloned;
|
|
115
|
+
}, "deepClone");
|
|
116
|
+
|
|
117
|
+
export { deepClone };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
const copyArrayBuffer = /* @__PURE__ */ __name((arrayBuffer) => {
|
|
4
|
+
const typeHandlers = {
|
|
5
|
+
BigInt64Array,
|
|
6
|
+
BigUint64Array,
|
|
7
|
+
// @ts-expect-error - Buffer has no constructor
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
9
|
+
Buffer: Buffer.from,
|
|
10
|
+
Float32Array,
|
|
11
|
+
Float64Array,
|
|
12
|
+
Int8Array,
|
|
13
|
+
Int16Array,
|
|
14
|
+
Int32Array,
|
|
15
|
+
Uint8Array,
|
|
16
|
+
Uint8ClampedArray,
|
|
17
|
+
Uint16Array,
|
|
18
|
+
Uint32Array
|
|
19
|
+
};
|
|
20
|
+
if (arrayBuffer instanceof ArrayBuffer) {
|
|
21
|
+
const newBuffer = new ArrayBuffer(arrayBuffer.byteLength);
|
|
22
|
+
const origView = new Uint8Array(arrayBuffer);
|
|
23
|
+
const newView = new Uint8Array(newBuffer);
|
|
24
|
+
newView.set(origView);
|
|
25
|
+
return newBuffer;
|
|
26
|
+
}
|
|
27
|
+
const Ctor = typeHandlers[arrayBuffer.constructor.name] ?? undefined;
|
|
28
|
+
if (Ctor) {
|
|
29
|
+
return new Ctor(arrayBuffer);
|
|
30
|
+
}
|
|
31
|
+
return new arrayBuffer.constructor([...arrayBuffer.buffer], arrayBuffer.byteOffset, arrayBuffer.length);
|
|
32
|
+
}, "copyArrayBuffer");
|
|
33
|
+
|
|
34
|
+
export { copyArrayBuffer as default };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
const copyArrayBuffer = /* @__PURE__ */ __name((arrayBuffer) => {
|
|
6
|
+
const typeHandlers = {
|
|
7
|
+
BigInt64Array,
|
|
8
|
+
BigUint64Array,
|
|
9
|
+
// @ts-expect-error - Buffer has no constructor
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
11
|
+
Buffer: Buffer.from,
|
|
12
|
+
Float32Array,
|
|
13
|
+
Float64Array,
|
|
14
|
+
Int8Array,
|
|
15
|
+
Int16Array,
|
|
16
|
+
Int32Array,
|
|
17
|
+
Uint8Array,
|
|
18
|
+
Uint8ClampedArray,
|
|
19
|
+
Uint16Array,
|
|
20
|
+
Uint32Array
|
|
21
|
+
};
|
|
22
|
+
if (arrayBuffer instanceof ArrayBuffer) {
|
|
23
|
+
const newBuffer = new ArrayBuffer(arrayBuffer.byteLength);
|
|
24
|
+
const origView = new Uint8Array(arrayBuffer);
|
|
25
|
+
const newView = new Uint8Array(newBuffer);
|
|
26
|
+
newView.set(origView);
|
|
27
|
+
return newBuffer;
|
|
28
|
+
}
|
|
29
|
+
const Ctor = typeHandlers[arrayBuffer.constructor.name] ?? undefined;
|
|
30
|
+
if (Ctor) {
|
|
31
|
+
return new Ctor(arrayBuffer);
|
|
32
|
+
}
|
|
33
|
+
return new arrayBuffer.constructor([...arrayBuffer.buffer], arrayBuffer.byteOffset, arrayBuffer.length);
|
|
34
|
+
}, "copyArrayBuffer");
|
|
35
|
+
|
|
36
|
+
module.exports = copyArrayBuffer;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import copyOwnProperties from './copyOwnProperties-FDDRgAnK.mjs';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
const copyArrayLoose = /* @__PURE__ */ __name((array, state) => {
|
|
6
|
+
const clone = [];
|
|
7
|
+
state.cache.set(array, clone);
|
|
8
|
+
for (let index = 0, { length } = array; index < length; ++index) {
|
|
9
|
+
clone[index] = state.clone(array[index], state);
|
|
10
|
+
}
|
|
11
|
+
return clone;
|
|
12
|
+
}, "copyArrayLoose");
|
|
13
|
+
const copyArrayStrict = /* @__PURE__ */ __name((array, state) => {
|
|
14
|
+
const clone = [];
|
|
15
|
+
state.cache.set(array, clone);
|
|
16
|
+
return copyOwnProperties(array, clone, state);
|
|
17
|
+
}, "copyArrayStrict");
|
|
18
|
+
|
|
19
|
+
export { copyArrayLoose, copyArrayStrict };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
+
|
|
5
|
+
const copyOwnProperties = require('./copyOwnProperties-NdANNH2P.cjs');
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
const copyArrayLoose = /* @__PURE__ */ __name((array, state) => {
|
|
10
|
+
const clone = [];
|
|
11
|
+
state.cache.set(array, clone);
|
|
12
|
+
for (let index = 0, { length } = array; index < length; ++index) {
|
|
13
|
+
clone[index] = state.clone(array[index], state);
|
|
14
|
+
}
|
|
15
|
+
return clone;
|
|
16
|
+
}, "copyArrayLoose");
|
|
17
|
+
const copyArrayStrict = /* @__PURE__ */ __name((array, state) => {
|
|
18
|
+
const clone = [];
|
|
19
|
+
state.cache.set(array, clone);
|
|
20
|
+
return copyOwnProperties(array, clone, state);
|
|
21
|
+
}, "copyArrayStrict");
|
|
22
|
+
|
|
23
|
+
exports.copyArrayLoose = copyArrayLoose;
|
|
24
|
+
exports.copyArrayStrict = copyArrayStrict;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
const copyBlob = /* @__PURE__ */ __name((blob) => blob.slice(0, blob.size, blob.type), "copyBlob");
|
|
6
|
+
|
|
7
|
+
module.exports = copyBlob;
|