@signaldb/core
Version:
SignalDB is a client-side database that provides a simple MongoDB-like interface to the data with first-class typescript support to achieve an optimistic UI. Data persistence can be achieved by using storage providers that store the data through a JSON in
44 lines (43 loc) • 1.15 kB
JavaScript
function clone(value) {
if (typeof value === "function")
throw new Error("Cloning functions is not supported");
if (value === null || typeof value !== "object")
return value;
if (value instanceof Date)
return new Date(value);
if (Array.isArray(value))
return value.map((item) => clone(item));
if (value instanceof Map) {
const result2 = /* @__PURE__ */ new Map();
value.forEach((currentValue, key) => {
result2.set(key, clone(currentValue));
});
return result2;
}
if (value instanceof Set) {
const result2 = /* @__PURE__ */ new Set();
value.forEach((currentValue) => {
result2.add(clone(currentValue));
});
return result2;
}
if (value instanceof RegExp)
return new RegExp(value);
const result = {};
for (const key in value) {
if (Object.hasOwnProperty.call(value, key)) {
result[key] = clone(value[key]);
}
}
return result;
}
function deepClone(object) {
if (typeof structuredClone === "function")
return structuredClone(object);
/* istanbul ignore next -- @preserve */
return clone(object);
}
export {
clone,
deepClone as default
};