bunshin-clone 1.8.13 → 1.8.15
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 +1 -1
- package/dist/index.cjs +14 -13
- package/dist/index.js +14 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ If `true`, preserves shared backing buffers between TypedArray and DataView inst
|
|
|
47
47
|
|
|
48
48
|
### `preserveDescriptors`
|
|
49
49
|
|
|
50
|
-
If `true`, preserves property descriptors
|
|
50
|
+
If `true`, preserves property descriptors, including non-enumerable properties.
|
|
51
51
|
|
|
52
52
|
### `preserveSymbolKeys`
|
|
53
53
|
|
package/dist/index.cjs
CHANGED
|
@@ -81,15 +81,18 @@ function clone(value, settings, refs) {
|
|
|
81
81
|
refs.set(value, value);
|
|
82
82
|
return value;
|
|
83
83
|
}
|
|
84
|
-
var IS_ENUMERABLE = Object.prototype.propertyIsEnumerable;
|
|
85
84
|
var OWN_DESCS = Object.getOwnPropertyDescriptors;
|
|
86
|
-
var
|
|
87
|
-
var
|
|
85
|
+
var OWN_ENUM_STRING_KEYS = Object.keys;
|
|
86
|
+
var OWN_ENUM_SYMBOL_KEYS = (object) => OWN_SYMBOL_KEYS(object).filter(
|
|
87
|
+
(k) => Object.prototype.propertyIsEnumerable.call(object, k)
|
|
88
|
+
);
|
|
89
|
+
var OWN_STRING_KEYS = Object.getOwnPropertyNames;
|
|
90
|
+
var OWN_SYMBOL_KEYS = Object.getOwnPropertySymbols;
|
|
88
91
|
function cloneWithDescriptors(object, settings, refs) {
|
|
89
92
|
const result = Object.create(Object.getPrototypeOf(object));
|
|
90
93
|
refs.set(object, result);
|
|
91
94
|
const descs = OWN_DESCS(object);
|
|
92
|
-
for (const key of
|
|
95
|
+
for (const key of OWN_STRING_KEYS(object)) {
|
|
93
96
|
if (isUnsafeKey(key)) {
|
|
94
97
|
continue;
|
|
95
98
|
}
|
|
@@ -106,13 +109,13 @@ function cloneWithDescriptors(object, settings, refs) {
|
|
|
106
109
|
}
|
|
107
110
|
}
|
|
108
111
|
if (settings.preserveSymbolKeys) {
|
|
109
|
-
for (const
|
|
110
|
-
const desc = { ...descs[
|
|
112
|
+
for (const key of OWN_SYMBOL_KEYS(object)) {
|
|
113
|
+
const desc = { ...descs[key] };
|
|
111
114
|
if ("value" in desc) {
|
|
112
115
|
desc.value = clone(desc.value, settings, refs);
|
|
113
116
|
}
|
|
114
117
|
try {
|
|
115
|
-
Object.defineProperty(result,
|
|
118
|
+
Object.defineProperty(result, key, desc);
|
|
116
119
|
} catch (error) {
|
|
117
120
|
if (settings.strictDescriptors) {
|
|
118
121
|
throw error;
|
|
@@ -130,16 +133,14 @@ function cloneArray(array, settings, refs) {
|
|
|
130
133
|
function clonePlainObject(object, settings, refs) {
|
|
131
134
|
const result = Object.create(Object.getPrototypeOf(object));
|
|
132
135
|
refs.set(object, result);
|
|
133
|
-
for (const key of
|
|
136
|
+
for (const key of OWN_ENUM_STRING_KEYS(object)) {
|
|
134
137
|
if (!isUnsafeKey(key)) {
|
|
135
138
|
result[key] = clone(object[key], settings, refs);
|
|
136
139
|
}
|
|
137
140
|
}
|
|
138
141
|
if (settings.preserveSymbolKeys) {
|
|
139
|
-
for (const
|
|
140
|
-
|
|
141
|
-
result[symbol] = clone(object[symbol], settings, refs);
|
|
142
|
-
}
|
|
142
|
+
for (const key of OWN_ENUM_SYMBOL_KEYS(object)) {
|
|
143
|
+
result[key] = clone(object[key], settings, refs);
|
|
143
144
|
}
|
|
144
145
|
}
|
|
145
146
|
return result;
|
|
@@ -212,7 +213,7 @@ function cloneError(error, settings, refs) {
|
|
|
212
213
|
if ("cause" in error && cause !== void 0) {
|
|
213
214
|
result.cause = clone(cause, settings, refs);
|
|
214
215
|
}
|
|
215
|
-
for (const key of
|
|
216
|
+
for (const key of OWN_ENUM_STRING_KEYS(error)) {
|
|
216
217
|
Reflect.set(result, key, clone(Reflect.get(error, key), settings, refs));
|
|
217
218
|
}
|
|
218
219
|
return result;
|
package/dist/index.js
CHANGED
|
@@ -79,15 +79,18 @@ function clone(value, settings, refs) {
|
|
|
79
79
|
refs.set(value, value);
|
|
80
80
|
return value;
|
|
81
81
|
}
|
|
82
|
-
var IS_ENUMERABLE = Object.prototype.propertyIsEnumerable;
|
|
83
82
|
var OWN_DESCS = Object.getOwnPropertyDescriptors;
|
|
84
|
-
var
|
|
85
|
-
var
|
|
83
|
+
var OWN_ENUM_STRING_KEYS = Object.keys;
|
|
84
|
+
var OWN_ENUM_SYMBOL_KEYS = (object) => OWN_SYMBOL_KEYS(object).filter(
|
|
85
|
+
(k) => Object.prototype.propertyIsEnumerable.call(object, k)
|
|
86
|
+
);
|
|
87
|
+
var OWN_STRING_KEYS = Object.getOwnPropertyNames;
|
|
88
|
+
var OWN_SYMBOL_KEYS = Object.getOwnPropertySymbols;
|
|
86
89
|
function cloneWithDescriptors(object, settings, refs) {
|
|
87
90
|
const result = Object.create(Object.getPrototypeOf(object));
|
|
88
91
|
refs.set(object, result);
|
|
89
92
|
const descs = OWN_DESCS(object);
|
|
90
|
-
for (const key of
|
|
93
|
+
for (const key of OWN_STRING_KEYS(object)) {
|
|
91
94
|
if (isUnsafeKey(key)) {
|
|
92
95
|
continue;
|
|
93
96
|
}
|
|
@@ -104,13 +107,13 @@ function cloneWithDescriptors(object, settings, refs) {
|
|
|
104
107
|
}
|
|
105
108
|
}
|
|
106
109
|
if (settings.preserveSymbolKeys) {
|
|
107
|
-
for (const
|
|
108
|
-
const desc = { ...descs[
|
|
110
|
+
for (const key of OWN_SYMBOL_KEYS(object)) {
|
|
111
|
+
const desc = { ...descs[key] };
|
|
109
112
|
if ("value" in desc) {
|
|
110
113
|
desc.value = clone(desc.value, settings, refs);
|
|
111
114
|
}
|
|
112
115
|
try {
|
|
113
|
-
Object.defineProperty(result,
|
|
116
|
+
Object.defineProperty(result, key, desc);
|
|
114
117
|
} catch (error) {
|
|
115
118
|
if (settings.strictDescriptors) {
|
|
116
119
|
throw error;
|
|
@@ -128,16 +131,14 @@ function cloneArray(array, settings, refs) {
|
|
|
128
131
|
function clonePlainObject(object, settings, refs) {
|
|
129
132
|
const result = Object.create(Object.getPrototypeOf(object));
|
|
130
133
|
refs.set(object, result);
|
|
131
|
-
for (const key of
|
|
134
|
+
for (const key of OWN_ENUM_STRING_KEYS(object)) {
|
|
132
135
|
if (!isUnsafeKey(key)) {
|
|
133
136
|
result[key] = clone(object[key], settings, refs);
|
|
134
137
|
}
|
|
135
138
|
}
|
|
136
139
|
if (settings.preserveSymbolKeys) {
|
|
137
|
-
for (const
|
|
138
|
-
|
|
139
|
-
result[symbol] = clone(object[symbol], settings, refs);
|
|
140
|
-
}
|
|
140
|
+
for (const key of OWN_ENUM_SYMBOL_KEYS(object)) {
|
|
141
|
+
result[key] = clone(object[key], settings, refs);
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
return result;
|
|
@@ -210,7 +211,7 @@ function cloneError(error, settings, refs) {
|
|
|
210
211
|
if ("cause" in error && cause !== void 0) {
|
|
211
212
|
result.cause = clone(cause, settings, refs);
|
|
212
213
|
}
|
|
213
|
-
for (const key of
|
|
214
|
+
for (const key of OWN_ENUM_STRING_KEYS(error)) {
|
|
214
215
|
Reflect.set(result, key, clone(Reflect.get(error, key), settings, refs));
|
|
215
216
|
}
|
|
216
217
|
return result;
|