UNPKG

fexios

Version:

Fetch based HTTP client with similar API to axios for browser and Node.js

79 lines (76 loc) 2.41 kB
function clone(value) { if (typeof globalThis.structuredClone === "function") { try { return globalThis.structuredClone(value); } catch { } } return _structuredClone(value, /* @__PURE__ */ new WeakMap()); } function _structuredClone(value, seen) { if (typeof value !== "object" || value === null) return value; const cached = seen.get(value); if (cached) return cached; if (value instanceof Date) return new Date(value.getTime()); if (value instanceof RegExp) return new RegExp(value.source, value.flags); if (value instanceof URL) return new URL(value.toString()); if (value instanceof URLSearchParams) return new URLSearchParams(value.toString()); if (value instanceof ArrayBuffer) return value.slice(0); if (ArrayBuffer.isView(value)) { if (value instanceof DataView) { return new DataView( value.buffer.slice(0), value.byteOffset, value.byteLength ); } const ta = value; const Ctor = ta.constructor; return new Ctor(ta.buffer.slice(0), ta.byteOffset, ta.length); } if (value instanceof Map) { const out2 = /* @__PURE__ */ new Map(); seen.set(value, out2); value.forEach((v, k) => { out2.set(_structuredClone(k, seen), _structuredClone(v, seen)); }); return out2; } if (value instanceof Set) { const out2 = /* @__PURE__ */ new Set(); seen.set(value, out2); value.forEach((v) => out2.add(_structuredClone(v, seen))); return out2; } if (Array.isArray(value)) { const arr = new Array(value.length); seen.set(value, arr); for (let i = 0; i < arr.length; i++) { arr[i] = _structuredClone(value[i], seen); } return arr; } const proto = Object.getPrototypeOf(value); const out = Object.create(proto); seen.set(value, out); const descriptors = Object.getOwnPropertyDescriptors(value); for (const key of Reflect.ownKeys(descriptors)) { const d = descriptors[key]; if ("value" in d) { d.value = _structuredClone(d.value, seen); } Object.defineProperty(out, key, d); } return out; } function isPlainObject(payload) { if (typeof payload !== "object" || payload === null) { return false; } const proto = Object.getPrototypeOf(payload); return proto === Object.prototype || proto === null; } export { clone as c, isPlainObject as i }; //# sourceMappingURL=fexios.DtQgiOCE.mjs.map