123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- "use strict";
- var __defProp = Object.defineProperty;
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
- var __getOwnPropNames = Object.getOwnPropertyNames;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
- var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
- };
- var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
- };
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- var structured_clone_exports = {};
- __export(structured_clone_exports, {
- structuredClone: () => esm_default
- });
- module.exports = __toCommonJS(structured_clone_exports);
- var VOID = -1;
- var PRIMITIVE = 0;
- var ARRAY = 1;
- var OBJECT = 2;
- var DATE = 3;
- var REGEXP = 4;
- var MAP = 5;
- var SET = 6;
- var ERROR = 7;
- var BIGINT = 8;
- var env = typeof self === "object" ? self : globalThis;
- var deserializer = __name(($, _) => {
- const as = __name((out, index) => {
- $.set(index, out);
- return out;
- }, "as");
- const unpair = __name((index) => {
- if ($.has(index))
- return $.get(index);
- const [type, value] = _[index];
- switch (type) {
- case PRIMITIVE:
- case VOID:
- return as(value, index);
- case ARRAY: {
- const arr = as([], index);
- for (const index2 of value)
- arr.push(unpair(index2));
- return arr;
- }
- case OBJECT: {
- const object = as({}, index);
- for (const [key, index2] of value)
- object[unpair(key)] = unpair(index2);
- return object;
- }
- case DATE:
- return as(new Date(value), index);
- case REGEXP: {
- const { source, flags } = value;
- return as(new RegExp(source, flags), index);
- }
- case MAP: {
- const map = as( new Map(), index);
- for (const [key, index2] of value)
- map.set(unpair(key), unpair(index2));
- return map;
- }
- case SET: {
- const set = as( new Set(), index);
- for (const index2 of value)
- set.add(unpair(index2));
- return set;
- }
- case ERROR: {
- const { name, message } = value;
- return as(new env[name](message), index);
- }
- case BIGINT:
- return as(BigInt(value), index);
- case "BigInt":
- return as(Object(BigInt(value)), index);
- }
- return as(new env[type](value), index);
- }, "unpair");
- return unpair;
- }, "deserializer");
- var deserialize = __name((serialized) => deserializer( new Map(), serialized)(0), "deserialize");
- var EMPTY = "";
- var { toString } = {};
- var { keys } = Object;
- var typeOf = __name((value) => {
- const type = typeof value;
- if (type !== "object" || !value)
- return [PRIMITIVE, type];
- const asString = toString.call(value).slice(8, -1);
- switch (asString) {
- case "Array":
- return [ARRAY, EMPTY];
- case "Object":
- return [OBJECT, EMPTY];
- case "Date":
- return [DATE, EMPTY];
- case "RegExp":
- return [REGEXP, EMPTY];
- case "Map":
- return [MAP, EMPTY];
- case "Set":
- return [SET, EMPTY];
- }
- if (asString.includes("Array"))
- return [ARRAY, asString];
- if (asString.includes("Error"))
- return [ERROR, asString];
- return [OBJECT, asString];
- }, "typeOf");
- var shouldSkip = __name(([TYPE, type]) => TYPE === PRIMITIVE && (type === "function" || type === "symbol"), "shouldSkip");
- var serializer = __name((strict, json, $, _) => {
- const as = __name((out, value) => {
- const index = _.push(out) - 1;
- $.set(value, index);
- return index;
- }, "as");
- const pair = __name((value) => {
- if ($.has(value))
- return $.get(value);
- let [TYPE, type] = typeOf(value);
- switch (TYPE) {
- case PRIMITIVE: {
- let entry = value;
- switch (type) {
- case "bigint":
- TYPE = BIGINT;
- entry = value.toString();
- break;
- case "function":
- case "symbol":
- if (strict)
- throw new TypeError("unable to serialize " + type);
- entry = null;
- break;
- case "undefined":
- return as([VOID], value);
- }
- return as([TYPE, entry], value);
- }
- case ARRAY: {
- if (type)
- return as([type, [...value]], value);
- const arr = [];
- const index = as([TYPE, arr], value);
- for (const entry of value)
- arr.push(pair(entry));
- return index;
- }
- case OBJECT: {
- if (type) {
- switch (type) {
- case "BigInt":
- return as([type, value.toString()], value);
- case "Boolean":
- case "Number":
- case "String":
- return as([type, value.valueOf()], value);
- }
- }
- if (json && "toJSON" in value)
- return pair(value.toJSON());
- const entries = [];
- const index = as([TYPE, entries], value);
- for (const key of keys(value)) {
- if (strict || !shouldSkip(typeOf(value[key])))
- entries.push([pair(key), pair(value[key])]);
- }
- return index;
- }
- case DATE:
- return as([TYPE, value.toISOString()], value);
- case REGEXP: {
- const { source, flags } = value;
- return as([TYPE, { source, flags }], value);
- }
- case MAP: {
- const entries = [];
- const index = as([TYPE, entries], value);
- for (const [key, entry] of value) {
- if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))
- entries.push([pair(key), pair(entry)]);
- }
- return index;
- }
- case SET: {
- const entries = [];
- const index = as([TYPE, entries], value);
- for (const entry of value) {
- if (strict || !shouldSkip(typeOf(entry)))
- entries.push(pair(entry));
- }
- return index;
- }
- }
- const { message } = value;
- return as([TYPE, { name: type, message }], value);
- }, "pair");
- return pair;
- }, "serializer");
- var serialize = __name((value, { json, lossy } = {}) => {
- const _ = [];
- return serializer(!(json || lossy), !!json, new Map(), _)(value), _;
- }, "serialize");
- var esm_default = typeof structuredClone === "function" ? (any, options) => options && ("json" in options || "lossy" in options) ? deserialize(serialize(any, options)) : structuredClone(any) : (any, options) => deserialize(serialize(any, options));
- 0 && (module.exports = {
- structuredClone
- });
|