seroval 0.2.1 → 0.4.0-alpha.0
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 +121 -15
- package/dist/cjs/development/index.cjs +979 -439
- package/dist/cjs/development/index.cjs.map +4 -4
- package/dist/cjs/production/index.cjs +2 -2
- package/dist/esm/development/index.mjs +979 -439
- package/dist/esm/development/index.mjs.map +4 -4
- package/dist/esm/production/index.mjs +2 -2
- package/dist/types/assert.d.ts +1 -0
- package/dist/types/checks.d.ts +5 -0
- package/dist/types/compat.d.ts +37 -0
- package/dist/types/index.d.ts +5 -4
- package/dist/types/tree.d.ts +112 -0
- package/dist/types/types.d.ts +7 -3
- package/package.json +2 -2
- package/src/assert.ts +5 -0
- package/src/checks.ts +41 -0
- package/src/compat.ts +247 -0
- package/src/index.ts +57 -51
- package/src/tree.ts +1178 -0
- package/src/types.ts +37 -4
- package/dist/types/array.d.ts +0 -2
- package/dist/types/async.d.ts +0 -4
- package/dist/types/context.d.ts +0 -33
- package/dist/types/is-primitive.d.ts +0 -2
- package/dist/types/is-promise.d.ts +0 -1
- package/dist/types/serialize-primitive.d.ts +0 -2
- package/dist/types/sync.d.ts +0 -4
- package/src/array.ts +0 -18
- package/src/async.ts +0 -229
- package/src/context.ts +0 -200
- package/src/is-primitive.ts +0 -14
- package/src/is-promise.ts +0 -6
- package/src/serialize-primitive.ts +0 -32
- package/src/sync.ts +0 -199
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/index.ts", "../../../src/
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-await-in-loop */\nimport { join } from './array';\nimport { lookupRefsAsync, traverseAsync } from './async';\nimport {\n SerializationContext,\n getRefParam,\n createRef,\n resolvePatches,\n createSerializationContext,\n} from './context';\nimport isPrimitive from './is-primitive';\nimport serializePrimitive from './serialize-primitive';\nimport { lookupRefs, traverseSync } from './sync';\nimport {\n AsyncServerValue,\n NonPrimitiveServerValue,\n PrimitiveValue,\n ServerValue,\n} from './types';\n\nexport { AsyncServerValue, ServerValue, PrimitiveValue };\n\nfunction finalize<T extends ServerValue | AsyncServerValue>(\n ctx: SerializationContext,\n source: NonPrimitiveServerValue<T>,\n result: string,\n) {\n // Shared references detected\n if (ctx.vars.length) {\n // Get (or create) a ref from the source\n const index = getRefParam(ctx, createRef(ctx, source));\n const patches = resolvePatches(ctx);\n const params = ctx.vars.length > 1\n ? `(${join(ctx.vars, ',')})`\n : ctx.vars[0];\n // Source is probably already assigned\n if (result.startsWith(`${index}=`)) {\n return `(${params}=>(${result},${patches}${index}))()`;\n }\n return `(${params}=>(${index}=${result},${patches}${index}))()`;\n }\n if (source.constructor === Object) {\n return `(${result})`;\n }\n return result;\n}\n\nexport function serialize(source: ServerValue) {\n if (isPrimitive(source)) {\n return serializePrimitive(source);\n }\n const ctx = createSerializationContext();\n // Lookup possible shared references\n lookupRefs(ctx, source);\n // Add shared references to refs\n for (const [key, value] of ctx.refCount.entries()) {\n if (value > 1) {\n createRef(ctx, key);\n }\n }\n // Get top-level serialization\n const result = traverseSync(ctx, source);\n if (typeof result !== 'string') {\n throw new Error('Unreachable error');\n }\n return finalize(ctx, source, result);\n}\n\nexport async function serializeAsync(source: AsyncServerValue) {\n if (isPrimitive(source)) {\n return serializePrimitive(source);\n }\n const ctx = createSerializationContext();\n // Lookup possible shared references\n await lookupRefsAsync(ctx, source);\n // Add shared references to refs\n for (const [key, value] of ctx.refCount.entries()) {\n if (value > 1) {\n createRef(ctx, key);\n }\n }\n // Get top-level serialization\n const result = await traverseAsync(ctx, source);\n if (typeof result !== 'string') {\n throw new Error('Unreachable error');\n }\n return finalize(ctx, source, result);\n}\n\nexport function deserialize<T extends AsyncServerValue>(source: string): T {\n // eslint-disable-next-line no-eval\n return (0, eval)(source) as T;\n}\n\nexport default serialize;\n", "export function forEach<T>(arr: T[], callback: (value: T, index: number) => (boolean | void)) {\n for (let i = 0, len = arr.length; i < len; i++) {\n if (callback(arr[i], i)) {\n break;\n }\n }\n}\n\nexport function join(arr: string[], joiner: string): string {\n let result = '';\n forEach(arr, (value, index) => {\n result += value;\n if (index < arr.length - 1) {\n result += joiner;\n }\n });\n return result;\n}\n", "// Written by https://github.com/DylanPiercey and is distributed under the MIT license.\nconst REF_START_CHARS = 'hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_'; // Avoids chars that could evaluate to a reserved word.\nconst REF_START_CHARS_LEN = REF_START_CHARS.length;\nconst REF_CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_';\nconst REF_CHARS_LEN = REF_CHARS.length;\n\nexport default function getIdentifier(index: number) {\n let mod = index % REF_START_CHARS_LEN;\n let ref = REF_START_CHARS[mod];\n index = (index - mod) / REF_START_CHARS_LEN;\n while (index > 0) {\n mod = index % REF_CHARS_LEN;\n ref += REF_CHARS[mod];\n index = (index - mod) / REF_CHARS_LEN;\n }\n return ref;\n}\n", "import { forEach, join } from './array';\nimport getIdentifier from './get-identifier';\nimport { AsyncServerValue } from './types';\n\nexport const EMPTY_SET = 'new Set';\nexport const EMPTY_MAP = 'new Map';\nexport const EMPTY_ARRAY = '[]';\n\n// Array of assignments to be done (used for recursion)\nexport type Assignment = [source: string, value: string];\n\n// Array of Map.prototype.set calls\nexport type MapSet = [source: string, key: string, value: string];\n\n// Array of Set.prototype.add calls\nexport type SetAdd = [source: string, value: string];\n\nexport interface SerializationContext {\n stack: Set<unknown>;\n // Set to check if ref id already has an assigned value\n assignedRefs: Set<number>;\n // Variables\n vars: string[];\n // Array of assignments to be done (used for recursion)\n assignments: Assignment[];\n // Array of Map.prototype.set calls\n mapSets: MapSet[];\n // Array of Set.prototype.add calls\n setAdds: SetAdd[];\n // Reference counter\n refCount: Map<unknown, number>;\n // Value-to-ref map\n refs: Map<unknown, number>;\n}\n\nexport function createSerializationContext(): SerializationContext {\n return {\n refCount: new Map(),\n stack: new Set(),\n refs: new Map(),\n assignedRefs: new Set(),\n vars: [],\n assignments: [],\n mapSets: [],\n setAdds: [],\n };\n}\n\nexport function resolveAssignments(ctx: SerializationContext) {\n if (ctx.assignments.length) {\n const result: Record<string, string> = {};\n\n // Merge all assignments with similar source\n forEach(ctx.assignments, ([source, value]) => {\n if (value in result) {\n result[value] = `${source}=${result[value]}`;\n } else {\n result[value] = `${source}=${value}`;\n }\n });\n\n return `${join(Object.values(result), ',')},`;\n }\n return '';\n}\n\nexport function resolveMapSets(ctx: SerializationContext) {\n if (ctx.mapSets.length) {\n const result: Record<string, string> = {};\n\n // Merge all assignments with similar source\n forEach(ctx.mapSets, ([source, key, value]) => {\n if (source in result) {\n result[source] = `${result[source]}.set(${key},${value})`;\n } else {\n result[source] = `${source}.set(${key},${value})`;\n }\n });\n\n return `${join(Object.values(result), ',')},`;\n }\n return '';\n}\n\nexport function resolveSetAdds(ctx: SerializationContext) {\n if (ctx.setAdds.length) {\n const result: Record<string, string> = {};\n\n // Merge all assignments with similar source\n forEach(ctx.setAdds, ([source, value]) => {\n if (source in result) {\n result[source] = `${result[source]}.add(${value})`;\n } else {\n result[source] = `${source}.add(${value})`;\n }\n });\n\n return `${join(Object.values(result), ',')},`;\n }\n return '';\n}\n\nexport function resolvePatches(ctx: SerializationContext) {\n return `${resolveAssignments(ctx)}${resolveMapSets(ctx)}${resolveSetAdds(ctx)}`;\n}\n\nexport function insertRef(ctx: SerializationContext, current: unknown) {\n const count = ctx.refCount.get(current) || 0;\n ctx.refCount.set(current, count + 1);\n return count === 0;\n}\n\nexport function constructorCheck<T extends NonNullable<AsyncServerValue>>(\n value: NonNullable<AsyncServerValue>,\n constructor: unknown,\n): value is T {\n return value.constructor === constructor;\n}\n\nexport function createRef(\n ctx: SerializationContext,\n value: unknown,\n) {\n const current = ctx.refs.get(value);\n if (current != null) {\n return current;\n }\n const id = ctx.refs.size;\n ctx.refs.set(value, id);\n return id;\n}\n\nexport function getRefParam(ctx: SerializationContext, index: number) {\n if (ctx.vars[index]) {\n return ctx.vars[index];\n }\n const result = getIdentifier(index);\n ctx.vars[index] = result;\n return result;\n}\n\nexport function assignRef(\n ctx: SerializationContext,\n index: number,\n value: string,\n) {\n return `${getRefParam(ctx, index)}=${value}`;\n}\n\nexport function createAssignment(\n ctx: SerializationContext,\n source: string,\n value: string,\n) {\n ctx.assignments.push([source, value]);\n}\n\nexport function createSetAdd(\n ctx: SerializationContext,\n ref: number,\n value: string,\n) {\n ctx.setAdds.push([getRefParam(ctx, ref), value]);\n}\n\nexport function createMapSet(\n ctx: SerializationContext,\n ref: number,\n key: string,\n value: string,\n) {\n ctx.mapSets.push([getRefParam(ctx, ref), key, value]);\n}\n\nexport function createArrayAssign(\n ctx: SerializationContext,\n ref: number,\n index: number,\n value: string,\n) {\n createAssignment(ctx, `${getRefParam(ctx, ref)}[${index}]`, value);\n}\n\nexport function createObjectIdentifierAssign(\n ctx: SerializationContext,\n ref: number,\n key: string,\n value: string,\n) {\n createAssignment(ctx, `${getRefParam(ctx, ref)}.${key}`, value);\n}\n\nexport function createObjectComputedAssign(\n ctx: SerializationContext,\n ref: number,\n key: string,\n value: string,\n) {\n createAssignment(ctx, `${getRefParam(ctx, ref)}[${key}]`, value);\n}\n", "import { PrimitiveValue } from './types';\n\nexport default function isPrimitive(current: unknown): current is PrimitiveValue {\n if (!current || current === true) {\n return true;\n }\n const type = typeof current;\n const classConst = current.constructor;\n return type === 'number'\n || type === 'string'\n || type === 'bigint'\n || classConst === Date\n || classConst === RegExp;\n}\n", "export default function isPromise<T>(obj: unknown): obj is PromiseLike<T> {\n return !!obj\n && (typeof obj === 'object' || typeof obj === 'function')\n && 'then' in obj\n && typeof obj.then === 'function';\n}\n", "// Written by https://github.com/DylanPiercey and is distributed under the MIT license.\n// Creates a JavaScript double quoted string and escapes all characters\n// not listed as DoubleStringCharacters on\n// Also includes \"<\" to escape \"</script>\" and \"\\\" to avoid invalid escapes in the output.\n// http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\nexport default function quote(str: string) {\n let result = '';\n let lastPos = 0;\n for (let i = 0, len = str.length; i < len; i++) {\n let replacement;\n switch (str[i]) {\n case '\"':\n replacement = '\\\\\"';\n break;\n case '\\\\':\n replacement = '\\\\\\\\';\n break;\n case '<':\n replacement = '\\\\x3C';\n break;\n case '\\n':\n replacement = '\\\\n';\n break;\n case '\\r':\n replacement = '\\\\r';\n break;\n case '\\u2028':\n replacement = '\\\\u2028';\n break;\n case '\\u2029':\n replacement = '\\\\u2029';\n break;\n default:\n continue;\n }\n result += str.slice(lastPos, i) + replacement;\n lastPos = i + 1;\n }\n if (lastPos === 0) {\n result = str;\n } else {\n result += str.slice(lastPos);\n }\n return `\"${result}\"`;\n}\n", "import quote from './quote';\nimport { PrimitiveValue } from './types';\n\nexport default function serializePrimitive(value: PrimitiveValue): string {\n // Shortened forms\n if (value === true) {\n return '!0';\n }\n if (value === false) {\n return '!1';\n }\n if (value === undefined) {\n return 'void 0';\n }\n if (value === null) {\n return 'null';\n }\n // negative 0 isn't the same as 0\n if (Object.is(value, -0)) {\n return '-0';\n }\n if (typeof value === 'bigint') {\n return `BigInt(\"${value}\")`;\n }\n if (typeof value === 'string') {\n return quote(value);\n }\n if (value.constructor === Date) {\n return `new Date(\"${value.toISOString()}\")`;\n }\n return String(value);\n}\n", "/* eslint-disable no-await-in-loop */\nimport { join } from './array';\nimport {\n SerializationContext,\n insertRef,\n constructorCheck,\n getRefParam,\n createRef,\n assignRef,\n createSetAdd,\n EMPTY_SET,\n createMapSet,\n EMPTY_MAP,\n createArrayAssign,\n EMPTY_ARRAY,\n createObjectIdentifierAssign,\n createObjectComputedAssign,\n} from './context';\nimport isPrimitive from './is-primitive';\nimport isPromise from './is-promise';\nimport quote from './quote';\nimport serializePrimitive from './serialize-primitive';\nimport { ServerValue, AsyncServerValue } from './types';\n\nexport async function lookupRefsAsync(\n ctx: SerializationContext,\n current: AsyncServerValue,\n) {\n if (isPrimitive(current)) {\n return;\n }\n if (isPromise(current)) {\n if (insertRef(ctx, current)) {\n await current.then((value) => lookupRefsAsync(ctx, value));\n }\n } else if (Array.isArray(current)) {\n if (insertRef(ctx, current)) {\n for (const value of current) {\n await lookupRefsAsync(ctx, value);\n }\n }\n } else if (constructorCheck<Set<AsyncServerValue>>(current, Set)) {\n if (insertRef(ctx, current)) {\n for (const item of current.keys()) {\n await lookupRefsAsync(ctx, item);\n }\n }\n } else if (constructorCheck<Map<AsyncServerValue, AsyncServerValue>>(current, Map)) {\n if (insertRef(ctx, current)) {\n for (const [key, value] of current.entries()) {\n await lookupRefsAsync(ctx, key);\n await lookupRefsAsync(ctx, value);\n }\n }\n } else if (\n (current.constructor === Object || current.constructor == null)\n && insertRef(ctx, current)\n ) {\n for (const value of Object.values(current)) {\n await lookupRefsAsync(ctx, value);\n }\n }\n}\n\nexport async function traverseAsync(\n ctx: SerializationContext,\n current: AsyncServerValue,\n): Promise<string> {\n // Skip primitives\n if (isPrimitive(current)) {\n return serializePrimitive(current);\n }\n // Get reference of the current object\n let refResult = ctx.refs.get(current);\n if (refResult != null) {\n // Return the reference if already assigned a value\n if (ctx.assignedRefs.has(refResult)) {\n return getRefParam(ctx, refResult);\n }\n // Early sign (to prevent recursion)\n ctx.assignedRefs.add(refResult);\n }\n function getCurrentRef() {\n // This object received a ref, we must generate a setter ref\n if (refResult == null) {\n refResult = createRef(ctx, current);\n }\n return refResult;\n }\n function processRef(value: string) {\n if (refResult != null) {\n return assignRef(ctx, refResult, value);\n }\n return value;\n }\n if (isPromise(current)) {\n return current.then(async (value) => {\n ctx.stack.add(current);\n let result: string;\n if (ctx.stack.has(value)) {\n const refParam = getRefParam(ctx, createRef(ctx, value));\n result = `Promise.resolve().then(()=>${refParam})`;\n } else {\n result = `Promise.resolve(${await traverseAsync(ctx, value)})`;\n }\n ctx.stack.delete(current);\n return processRef(result);\n });\n }\n // Transform Set\n if (constructorCheck<Set<AsyncServerValue>>(current, Set)) {\n if (current.size) {\n const values: string[] = [];\n\n ctx.stack.add(current);\n for (const value of current.keys()) {\n if (ctx.stack.has(value)) {\n // Received a ref, this might be a recursive ref, defer an assignment\n createSetAdd(ctx, getCurrentRef(), getRefParam(ctx, createRef(ctx, value)));\n } else {\n values.push(await traverseAsync(ctx, value));\n }\n }\n ctx.stack.delete(current);\n\n return processRef(values.length ? `new Set([${join(values, ',')}])` : EMPTY_SET);\n }\n return EMPTY_SET;\n }\n if (constructorCheck<Map<ServerValue, ServerValue>>(current, Map)) {\n if (current.size) {\n const values: string[] = [];\n\n ctx.stack.add(current);\n for (const [key, value] of current.entries()) {\n if (ctx.stack.has(key)) {\n const ref = getCurrentRef();\n const keyRef = getRefParam(ctx, createRef(ctx, key));\n if (ctx.stack.has(value)) {\n const valueRef = getRefParam(ctx, createRef(ctx, value));\n createMapSet(ctx, ref, keyRef, valueRef);\n } else {\n const valueResult = await traverseAsync(ctx, value);\n createMapSet(ctx, ref, keyRef, valueResult);\n }\n } else if (ctx.stack.has(value)) {\n const valueRef = getRefParam(ctx, createRef(ctx, value));\n const keyResult = await traverseAsync(ctx, key);\n createMapSet(ctx, getCurrentRef(), keyResult, valueRef);\n } else {\n const keyResult = await traverseAsync(ctx, key);\n const valueResult = await traverseAsync(ctx, value);\n values.push(`[${keyResult},${valueResult}]`);\n }\n }\n ctx.stack.delete(current);\n return processRef(values.length ? `new Map([${join(values, ',')}])` : EMPTY_MAP);\n }\n return EMPTY_MAP;\n }\n if (Array.isArray(current)) {\n if (current.length) {\n let values = '';\n\n ctx.stack.add(current);\n for (let i = 0, len = current.length; i < len; i += 1) {\n if (i in current) {\n const item = current[i];\n if (ctx.stack.has(item)) {\n const refParam = getRefParam(ctx, createRef(ctx, item));\n createArrayAssign(ctx, getCurrentRef(), i, refParam);\n values += ',';\n } else {\n values += await traverseAsync(ctx, item);\n if (i < current.length - 1) {\n values += ',';\n }\n }\n } else {\n values += ',';\n }\n }\n ctx.stack.delete(current);\n return processRef(`[${values}]`);\n }\n return EMPTY_ARRAY;\n }\n const empty = current.constructor == null;\n if (current.constructor === Object || empty) {\n const values: string[] = [];\n\n ctx.stack.add(current);\n for (const [key, value] of Object.entries(current)) {\n const check = Number(key);\n // Test if key is a valid number or JS identifier\n // so that we don't have to serialize the key and wrap with brackets\n if (\n check >= 0\n || (Number.isNaN(check) && /^([$A-Z_][0-9A-Z_$]*)$/i.test(key))\n ) {\n if (ctx.stack.has(value)) {\n const ref = getCurrentRef();\n const refParam = getRefParam(ctx, createRef(ctx, value));\n if (Number.isNaN(check)) {\n createObjectIdentifierAssign(ctx, ref, key, refParam);\n } else {\n createObjectComputedAssign(ctx, ref, key, refParam);\n }\n } else {\n const valueResult = await traverseAsync(ctx, value as AsyncServerValue);\n values.push(`${key}:${valueResult}`);\n }\n } else if (ctx.stack.has(value)) {\n const refParam = getRefParam(ctx, createRef(ctx, value));\n createObjectComputedAssign(ctx, getCurrentRef(), quote(key), refParam);\n } else {\n const valueResult = await traverseAsync(ctx, value as AsyncServerValue);\n values.push(`${quote(key)}:${valueResult}`);\n }\n }\n ctx.stack.delete(current);\n const value = `{${join(values, ',')}}`;\n if (empty) {\n return processRef(`Object.assign(Object.create(null),${value})`);\n }\n return processRef(value);\n }\n throw new Error('Unserializable value');\n}\n", "import { forEach, join } from './array';\nimport {\n SerializationContext,\n insertRef,\n constructorCheck,\n getRefParam,\n createRef,\n assignRef,\n createSetAdd,\n EMPTY_SET,\n createMapSet,\n EMPTY_MAP,\n createArrayAssign,\n EMPTY_ARRAY,\n createObjectIdentifierAssign,\n createObjectComputedAssign,\n} from './context';\nimport isPrimitive from './is-primitive';\nimport quote from './quote';\nimport serializePrimitive from './serialize-primitive';\nimport { AsyncServerValue, ServerValue } from './types';\n\nexport function lookupRefs(ctx: SerializationContext, current: ServerValue) {\n if (isPrimitive(current)) {\n return;\n }\n if (Array.isArray(current)) {\n if (insertRef(ctx, current)) {\n forEach(current, (value) => {\n lookupRefs(ctx, value);\n });\n }\n } else if (constructorCheck<Set<AsyncServerValue>>(current, Set)) {\n if (insertRef(ctx, current)) {\n for (const item of current.keys()) {\n lookupRefs(ctx, item);\n }\n }\n } else if (constructorCheck<Map<AsyncServerValue, AsyncServerValue>>(current, Map)) {\n if (insertRef(ctx, current)) {\n for (const [key, value] of current.entries()) {\n lookupRefs(ctx, key);\n lookupRefs(ctx, value);\n }\n }\n } else if (\n (current.constructor === Object || current.constructor == null)\n && insertRef(ctx, current)\n ) {\n forEach(Object.values(current), (value) => {\n lookupRefs(ctx, value);\n });\n }\n}\n\nexport function traverseSync(\n ctx: SerializationContext,\n current: ServerValue,\n): string {\n // Skip primitives\n if (isPrimitive(current)) {\n return serializePrimitive(current);\n }\n // Get reference of the current object\n let refResult = ctx.refs.get(current);\n if (refResult != null) {\n // Return the reference if already assigned a value\n if (ctx.assignedRefs.has(refResult)) {\n return getRefParam(ctx, refResult);\n }\n // Early sign (to prevent recursion)\n ctx.assignedRefs.add(refResult);\n }\n function getCurrentRef() {\n // This object received a ref, we must generate a setter ref\n if (refResult == null) {\n refResult = createRef(ctx, current);\n }\n return refResult;\n }\n function processRef(value: string) {\n if (refResult != null) {\n return assignRef(ctx, refResult, value);\n }\n return value;\n }\n // Transform Set\n if (constructorCheck<Set<ServerValue>>(current, Set)) {\n if (current.size) {\n const values: string[] = [];\n\n ctx.stack.add(current);\n for (const value of current.keys()) {\n if (ctx.stack.has(value)) {\n // Received a ref, this might be a recursive ref, defer an assignment\n createSetAdd(ctx, getCurrentRef(), getRefParam(ctx, createRef(ctx, value)));\n } else {\n values.push(traverseSync(ctx, value));\n }\n }\n ctx.stack.delete(current);\n\n return processRef(values.length ? `new Set([${join(values, ',')}])` : EMPTY_SET);\n }\n return EMPTY_SET;\n }\n if (constructorCheck<Map<ServerValue, ServerValue>>(current, Map)) {\n if (current.size) {\n const values: string[] = [];\n\n ctx.stack.add(current);\n for (const [key, value] of current.entries()) {\n if (ctx.stack.has(key)) {\n const ref = getCurrentRef();\n const keyRef = getRefParam(ctx, createRef(ctx, key));\n if (ctx.stack.has(value)) {\n const valueRef = getRefParam(ctx, createRef(ctx, value));\n createMapSet(ctx, ref, keyRef, valueRef);\n } else {\n createMapSet(ctx, ref, keyRef, traverseSync(ctx, value));\n }\n } else if (ctx.stack.has(value)) {\n const valueRef = getRefParam(ctx, createRef(ctx, value));\n createMapSet(ctx, getCurrentRef(), traverseSync(ctx, key), valueRef);\n } else {\n values.push(`[${traverseSync(ctx, key)},${traverseSync(ctx, value)}]`);\n }\n }\n ctx.stack.delete(current);\n return processRef(values.length ? `new Map([${join(values, ',')}])` : EMPTY_MAP);\n }\n return EMPTY_MAP;\n }\n if (Array.isArray(current)) {\n if (current.length) {\n let values = '';\n\n ctx.stack.add(current);\n forEach(current, (item, i) => {\n if (i in current) {\n if (ctx.stack.has(item)) {\n const refParam = getRefParam(ctx, createRef(ctx, item));\n createArrayAssign(ctx, getCurrentRef(), i, refParam);\n values += ',';\n } else {\n values += traverseSync(ctx, item);\n if (i < current.length - 1) {\n values += ',';\n }\n }\n } else {\n values += ',';\n }\n });\n ctx.stack.delete(current);\n return processRef(`[${values}]`);\n }\n return EMPTY_ARRAY;\n }\n const empty = current.constructor == null;\n if (current.constructor === Object || empty) {\n const values: string[] = [];\n\n ctx.stack.add(current);\n forEach(Object.entries(current), ([key, value]) => {\n const check = Number(key);\n // Test if key is a valid number or JS identifier\n // so that we don't have to serialize the key and wrap with brackets\n if (\n check >= 0\n || (Number.isNaN(check) && /^([$A-Z_][0-9A-Z_$]*)$/i.test(key))\n ) {\n if (ctx.stack.has(value)) {\n const ref = getCurrentRef();\n const refParam = getRefParam(ctx, createRef(ctx, value));\n if (!Number.isNaN(check)) {\n createObjectComputedAssign(ctx, ref, key, refParam);\n } else {\n createObjectIdentifierAssign(ctx, ref, key, refParam);\n }\n } else {\n values.push(`${key}:${traverseSync(ctx, value)}`);\n }\n } else if (ctx.stack.has(value)) {\n const refParam = getRefParam(ctx, createRef(ctx, value));\n createObjectComputedAssign(ctx, getCurrentRef(), quote(key), refParam);\n } else {\n values.push(`${quote(key)}:${traverseSync(ctx, value)}`);\n }\n });\n ctx.stack.delete(current);\n const value = `{${join(values, ',')}}`;\n if (empty) {\n return processRef(`Object.assign(Object.create(null),${value})`);\n }\n return processRef(value);\n }\n throw new Error('Unserializable value');\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": [
|
|
3
|
+
"sources": ["../../../src/index.ts", "../../../src/checks.ts", "../../../src/quote.ts", "../../../src/get-identifier.ts", "../../../src/assert.ts", "../../../src/compat.ts", "../../../src/tree.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-await-in-loop */\nimport { isPrimitive } from './checks';\nimport {\n createRef,\n createSerializationContext,\n generateTreeAsync,\n generateTreeSync,\n getRefParam,\n Options,\n resolvePatches,\n SerializationContext,\n serializePrimitive,\n serializeTree,\n} from './tree';\nimport {\n AsyncServerValue,\n NonPrimitiveServerValue,\n PrimitiveValue,\n ServerValue,\n CommonServerValue,\n SemiPrimitiveValue,\n ErrorValue,\n} from './types';\n\nexport {\n AsyncServerValue,\n ServerValue,\n PrimitiveValue,\n CommonServerValue,\n SemiPrimitiveValue,\n ErrorValue,\n};\n\nfunction finalize<T extends NonPrimitiveServerValue<ServerValue | AsyncServerValue>>(\n ctx: SerializationContext,\n source: T,\n result: string,\n) {\n // Shared references detected\n if (ctx.vars.length) {\n const patches = resolvePatches(ctx);\n let body = result;\n if (patches) {\n // Get (or create) a ref from the source\n const index = getRefParam(ctx, createRef(ctx, source));\n if (result.startsWith(`${index}=`)) {\n body = `${result},${patches}${index}`;\n } else {\n body = `${index}=${result},${patches}${index}`;\n }\n }\n let params = ctx.vars.length > 1\n ? ctx.vars.join(',')\n : ctx.vars[0];\n // Source is probably already assigned\n if (ctx.features.has('arrow-function')) {\n params = ctx.vars.length > 1 || ctx.vars.length === 0\n ? `(${params})`\n : params;\n return `(${params}=>(${body}))()`;\n }\n return `(function(${params}){return ${body}})()`;\n }\n if (source.constructor === Object) {\n return `(${result})`;\n }\n return result;\n}\n\nexport function serialize<T extends ServerValue>(\n source: T,\n options?: Partial<Options>,\n) {\n const ctx = createSerializationContext(options);\n if (isPrimitive(source)) {\n return serializePrimitive(ctx, source);\n }\n const tree = generateTreeSync(ctx, source);\n const result = serializeTree(ctx, tree);\n return finalize(ctx, source, result);\n}\n\nexport async function serializeAsync<T extends AsyncServerValue>(\n source: T,\n options?: Partial<Options>,\n) {\n const ctx = createSerializationContext(options);\n if (isPrimitive(source)) {\n return serializePrimitive(ctx, source);\n }\n const tree = await generateTreeAsync(ctx, source);\n const result = serializeTree(ctx, tree);\n return finalize(ctx, source, result);\n}\n\nexport function deserialize<T extends AsyncServerValue>(source: string): T {\n // eslint-disable-next-line no-eval\n return (0, eval)(source) as T;\n}\n\nexport default serialize;\n", "import { AsyncServerValue, PrimitiveValue } from './types';\n\nexport function isPrimitive(current: unknown): current is PrimitiveValue {\n if (!current || current === true) {\n return true;\n }\n const type = typeof current;\n return type === 'number'\n || type === 'string'\n || type === 'bigint';\n}\n\nexport function isPromise<T>(obj: unknown): obj is PromiseLike<T> {\n return !!obj\n && (typeof obj === 'object' || typeof obj === 'function')\n && 'then' in obj\n && typeof obj.then === 'function';\n}\n\nexport function constructorCheck<T extends NonNullable<AsyncServerValue>>(\n value: unknown,\n constructor: unknown,\n): value is T {\n return (value as { constructor: unknown }).constructor === constructor;\n}\n\nfunction isIterableBuiltin(obj: unknown) {\n return (\n Array.isArray(obj)\n || constructorCheck<Set<any>>(obj, Set)\n || constructorCheck<Map<any, any>>(obj, Map)\n );\n}\n\nexport function isIterable<T>(obj: unknown): obj is Iterable<T> {\n return !!obj\n && typeof obj === 'object'\n && !isIterableBuiltin(obj)\n && Symbol.iterator in obj\n && typeof obj[Symbol.iterator] === 'function';\n}\n", "// Written by https://github.com/DylanPiercey and is distributed under the MIT license.\n// Creates a JavaScript double quoted string and escapes all characters\n// not listed as DoubleStringCharacters on\n// Also includes \"<\" to escape \"</script>\" and \"\\\" to avoid invalid escapes in the output.\n// http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\nexport default function quote(str: string) {\n let result = '';\n let lastPos = 0;\n for (let i = 0, len = str.length; i < len; i++) {\n let replacement;\n switch (str[i]) {\n case '\"':\n replacement = '\\\\\"';\n break;\n case '\\\\':\n replacement = '\\\\\\\\';\n break;\n case '<':\n replacement = '\\\\x3C';\n break;\n case '\\n':\n replacement = '\\\\n';\n break;\n case '\\r':\n replacement = '\\\\r';\n break;\n case '\\u2028':\n replacement = '\\\\u2028';\n break;\n case '\\u2029':\n replacement = '\\\\u2029';\n break;\n default:\n continue;\n }\n result += str.slice(lastPos, i) + replacement;\n lastPos = i + 1;\n }\n if (lastPos === 0) {\n result = str;\n } else {\n result += str.slice(lastPos);\n }\n return `\"${result}\"`;\n}\n", "// Written by https://github.com/DylanPiercey and is distributed under the MIT license.\nconst REF_START_CHARS = 'hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_'; // Avoids chars that could evaluate to a reserved word.\nconst REF_START_CHARS_LEN = REF_START_CHARS.length;\nconst REF_CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_';\nconst REF_CHARS_LEN = REF_CHARS.length;\n\nexport default function getIdentifier(index: number) {\n let mod = index % REF_START_CHARS_LEN;\n let ref = REF_START_CHARS[mod];\n index = (index - mod) / REF_START_CHARS_LEN;\n while (index > 0) {\n mod = index % REF_CHARS_LEN;\n ref += REF_CHARS[mod];\n index = (index - mod) / REF_CHARS_LEN;\n }\n return ref;\n}\n", "export default function assert(cond: unknown, error: string): asserts cond {\n if (!cond) {\n throw new Error(error);\n }\n}\n", "/**\n * References\n * - https://kangax.github.io/compat-table/es6/\n * - MDN\n * - ESBuild\n */\n\nimport assert from './assert';\n\nexport type Version = [major: number, minor: number, patch: number];\n\nfunction compareVersion(left: Version, right: Version) {\n let diff = left[0] - right[0];\n if (diff === 0) {\n diff = left[1] - right[1];\n }\n if (diff === 0) {\n diff = left[2] - right[2];\n }\n return diff;\n}\n\nexport interface PlatformVersion {\n es: Version;\n // desktop\n chrome?: Version;\n edge?: Version;\n safari?: Version;\n firefox?: Version;\n opera?: Version;\n // mobile\n ios?: Version;\n samsung?: Version;\n // js runtimes\n deno?: Version;\n node?: Version;\n}\n\nexport type Platform = keyof PlatformVersion;\n\ninterface VersionTable {\n 'aggregate-error': PlatformVersion;\n 'array-values': PlatformVersion;\n 'arrow-function': PlatformVersion;\n 'bigint': PlatformVersion;\n 'map': PlatformVersion;\n 'method-shorthand': PlatformVersion;\n 'object-assign': PlatformVersion;\n 'promise': PlatformVersion;\n 'set': PlatformVersion;\n 'symbol-iterator': PlatformVersion;\n 'typed-arrays': PlatformVersion;\n}\n\nexport type Feature = keyof VersionTable;\n\nconst VERSION_TABLE: VersionTable = {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError#browser_compatibility\n 'aggregate-error': {\n es: [2021, 0, 0],\n chrome: [85, 0, 0],\n edge: [85, 0, 0],\n firefox: [79, 0, 0],\n opera: [71, 0, 0],\n safari: [14, 0, 0],\n ios: [14, 0, 0],\n samsung: [14, 0, 0],\n deno: [1, 2, 0],\n node: [15, 0, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/values#browser_compatibility\n 'array-values': {\n es: [6, 0, 0],\n chrome: [66, 0, 0],\n edge: [14, 0, 0],\n firefox: [60, 0, 0],\n opera: [53, 0, 0],\n safari: [9, 0, 0],\n ios: [9, 0, 0],\n samsung: [9, 0, 0],\n deno: [1, 0, 0],\n node: [10, 9, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#browser_compatibility\n 'arrow-function': {\n es: [6, 0, 0],\n chrome: [45, 0, 0],\n edge: [12, 0, 0],\n firefox: [24, 0, 0],\n opera: [32, 0, 0],\n safari: [10, 0, 0],\n ios: [10, 0, 0],\n samsung: [5, 0, 0],\n deno: [1, 0, 0],\n node: [4, 0, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#browser_compatibility\n bigint: {\n es: [2020, 0, 0],\n chrome: [67, 0, 0],\n edge: [79, 0, 0],\n firefox: [68, 0, 0],\n opera: [54, 0, 0],\n safari: [14, 0, 0],\n ios: [14, 0, 0],\n samsung: [9, 0, 0],\n deno: [1, 0, 0],\n node: [10, 4, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#browser_compatibility\n map: {\n es: [6, 0, 0],\n chrome: [38, 0, 0],\n edge: [12, 0, 0],\n firefox: [13, 0, 0],\n opera: [25, 0, 0],\n safari: [8, 0, 0],\n ios: [8, 0, 0],\n samsung: [3, 0, 0],\n deno: [1, 0, 0],\n node: [0, 12, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions#browser_compatibility\n 'method-shorthand': {\n es: [6, 0, 0],\n chrome: [39, 0, 0],\n edge: [12, 0, 0],\n firefox: [34, 0, 0],\n opera: [26, 0, 0],\n safari: [9, 0, 0],\n ios: [9, 0, 0],\n samsung: [4, 0, 0],\n deno: [1, 0, 0],\n node: [4, 0, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#browser_compatibility\n 'object-assign': {\n es: [6, 0, 0],\n chrome: [45, 0, 0],\n edge: [12, 0, 0],\n firefox: [34, 0, 0],\n opera: [32, 0, 0],\n safari: [9, 0, 0],\n ios: [9, 0, 0],\n samsung: [5, 0, 0],\n deno: [1, 0, 0],\n node: [4, 0, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#browser_compatibility\n promise: {\n es: [6, 0, 0],\n chrome: [32, 0, 0],\n edge: [12, 0, 0],\n firefox: [29, 0, 0],\n opera: [19, 0, 0],\n safari: [8, 0, 0],\n ios: [8, 0, 0],\n samsung: [2, 0, 0],\n deno: [1, 0, 0],\n node: [0, 12, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#browser_compatibility\n set: {\n es: [6, 0, 0],\n chrome: [38, 0, 0],\n edge: [12, 0, 0],\n firefox: [13, 0, 0],\n opera: [25, 0, 0],\n safari: [8, 0, 0],\n ios: [8, 0, 0],\n samsung: [3, 0, 0],\n deno: [1, 0, 0],\n node: [0, 12, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator#browser_compatibility\n 'symbol-iterator': {\n es: [6, 0, 0],\n chrome: [43, 0, 0],\n edge: [12, 0, 0],\n firefox: [36, 0, 0],\n opera: [30, 0, 0],\n safari: [10, 0, 0],\n ios: [10, 0, 0],\n samsung: [4, 0, 0],\n deno: [1, 0, 0],\n node: [0, 12, 0],\n },\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#browser_compatibility\n 'typed-arrays': {\n es: [6, 0, 0],\n chrome: [7, 0, 0],\n edge: [12, 0, 0],\n firefox: [4, 0, 0],\n opera: [11, 6, 0],\n safari: [5, 1, 0],\n ios: [4, 2, 0],\n samsung: [1, 0, 0],\n deno: [1, 0, 0],\n node: [0, 10, 0],\n },\n};\n\nconst TARGET_REGEX = /^(es|chrome|edge|safari|firefox|opera|ios|samsung|deno|node)([0-9]+(\\.[0-9]+(\\.[0-9]+)?)?)$/i;\n\nexport type Target = [platform: Platform, version: Version];\n\nfunction parseTarget(target: string): Target {\n const result = TARGET_REGEX.exec(target);\n assert(result, `Invalid target \"${target}\"`);\n const [, platform, version] = result;\n const [major, minor = '0', patch = '0'] = version.split('.');\n return [platform as Platform, [Number(major), Number(minor), Number(patch)]];\n}\n\nfunction getTargetVersions(targets: string | string[]): Target[] {\n if (Array.isArray(targets)) {\n const versions: Target[] = [];\n for (const target of targets) {\n versions.push(parseTarget(target));\n }\n return versions;\n }\n return [parseTarget(targets)];\n}\n\nfunction isFeatureSupported(key: Feature, targets: Target[]) {\n const base = VERSION_TABLE[key];\n let flag = true;\n for (const [platform, version] of targets) {\n const baseVersion = base[platform];\n flag = flag && !!baseVersion && (compareVersion(baseVersion, version) <= 0);\n }\n return flag;\n}\n\nexport function parseTargets(targets: string | string[]): Set<Feature> {\n const parsed = getTargetVersions(targets);\n const flags = new Set<Feature>();\n\n for (const key in VERSION_TABLE) {\n if (isFeatureSupported(key as Feature, parsed)) {\n flags.add(key as Feature);\n }\n }\n\n return flags;\n}\n", "/* eslint-disable guard-for-in */\n/* eslint-disable @typescript-eslint/no-for-in-array */\n/* eslint-disable no-await-in-loop */\nimport {\n isIterable,\n isPrimitive,\n isPromise,\n constructorCheck,\n} from './checks';\nimport quote from './quote';\nimport {\n AsyncServerValue,\n ErrorValue,\n PrimitiveValue,\n ServerValue,\n TypedArrayValue,\n} from './types';\nimport getIdentifier from './get-identifier';\nimport { Feature, parseTargets } from './compat';\nimport assert from './assert';\n\ninterface IndexAssignment {\n type: 'index';\n source: string;\n value: string;\n}\n\ninterface MapAssignment {\n type: 'map';\n source: string;\n key: string;\n value: string;\n}\n\ninterface SetAssignment {\n type: 'set';\n source: string;\n value: string;\n}\n\n// Array of assignments to be done (used for recursion)\nexport type Assignment =\n | IndexAssignment\n | MapAssignment\n | SetAssignment;\n\nexport interface SerializationContext {\n stack: number[];\n // Value-to-ref map\n refs: Map<unknown, number>;\n // Map tree refs to actual refs\n validRefs: Map<number, number>;\n // Refs that are...referenced\n markedRefs: boolean[];\n // Variables\n vars: string[];\n // Array of assignments to be done (used for recursion)\n assignments: Assignment[];\n // Supported features\n features: Set<Feature>;\n}\n\nexport interface Options {\n target: string | string[];\n}\n\nconst DEFAULT_OPTIONS: Options = {\n target: 'es2023',\n};\n\nexport function createSerializationContext(options: Partial<Options> = {}): SerializationContext {\n // eslint-disable-next-line prefer-object-spread\n const result = Object.assign({}, DEFAULT_OPTIONS, options || {});\n return {\n markedRefs: [],\n stack: [],\n refs: new Map(),\n vars: [],\n assignments: [],\n validRefs: new Map(),\n features: parseTargets(result.target),\n };\n}\n\nfunction getAssignmentExpression(assignment: Assignment): string {\n switch (assignment.type) {\n case 'index':\n return `${assignment.source}=${assignment.value}`;\n case 'map':\n return `${assignment.source}.set(${assignment.key},${assignment.value})`;\n case 'set':\n return `${assignment.source}.add(${assignment.value})`;\n default:\n return '';\n }\n}\n\nfunction mergeAssignments(assignments: Assignment[]) {\n const newAssignments = [];\n let current = assignments[0];\n let prev = current;\n for (let i = 1, len = assignments.length; i < len; i++) {\n const item = assignments[i];\n if (item.type === prev.type) {\n if (item.type === 'index' && item.value === prev.value) {\n // Merge if the right-hand value is the same\n // saves at least 2 chars\n current = {\n type: 'index',\n source: item.source,\n value: getAssignmentExpression(current),\n };\n } else if (item.type === 'map' && item.source === prev.source) {\n // Maps has chaining methods, merge if source is the same\n current = {\n type: 'map',\n source: getAssignmentExpression(current),\n key: item.key,\n value: item.value,\n };\n } else if (item.type === 'set' && item.source === prev.source) {\n // Sets has chaining methods too\n current = {\n type: 'set',\n source: getAssignmentExpression(current),\n value: item.value,\n };\n } else {\n // Different assignment, push current\n newAssignments.push(current);\n current = item;\n }\n } else {\n newAssignments.push(current);\n current = item;\n }\n prev = item;\n }\n\n newAssignments.push(current);\n\n return newAssignments;\n}\n\nfunction resolveAssignments(assignments: Assignment[]) {\n if (assignments.length) {\n let result = '';\n const merged = mergeAssignments(assignments);\n for (let i = 0, len = merged.length; i < len; i++) {\n result += `${getAssignmentExpression(merged[i])},`;\n }\n return result;\n }\n return undefined;\n}\n\nexport function resolvePatches(ctx: SerializationContext) {\n return resolveAssignments(ctx.assignments);\n}\n\n/**\n * Increments the number of references the referenced value has\n */\nfunction markRef(ctx: SerializationContext, current: number) {\n ctx.markedRefs[current] = true;\n}\n\n/**\n * Creates a reference ID from the given values\n */\nexport function createRef(\n ctx: SerializationContext,\n index: unknown,\n) {\n const current = ctx.refs.get(index);\n if (current != null) {\n return current;\n }\n const id = ctx.refs.size;\n ctx.refs.set(index, id);\n return id;\n}\n\n/**\n * Creates a new reference ID from a given reference ID\n * This new reference ID means that the reference itself\n * has been referenced at least once, and is used to generate\n * the variables\n */\nfunction createValidRef(\n ctx: SerializationContext,\n index: number,\n) {\n const current = ctx.validRefs.get(index);\n if (current != null) {\n return current;\n }\n const id = ctx.validRefs.size;\n ctx.validRefs.set(index, id);\n return id;\n}\n\n/**\n * Creates the reference param (identifier) from the given reference ID\n * Calling this function means the value has been referenced somewhere\n */\nexport function getRefParam(ctx: SerializationContext, index: number) {\n const actualIndex = createValidRef(ctx, index);\n if (ctx.vars[actualIndex]) {\n return ctx.vars[actualIndex];\n }\n const result = getIdentifier(actualIndex);\n ctx.vars[actualIndex] = result;\n return result;\n}\n\n/**\n * Generates the inlined assignment for the reference\n * This is different from the assignments array as this one\n * signifies creation rather than mutation\n */\nfunction assignRef(\n ctx: SerializationContext,\n index: number,\n value: string,\n) {\n if (ctx.markedRefs[index]) {\n return `${getRefParam(ctx, index)}=${value}`;\n }\n return value;\n}\n\nfunction createAssignment(\n ctx: SerializationContext,\n source: string,\n value: string,\n) {\n ctx.assignments.push({\n type: 'index',\n source,\n value,\n });\n}\n\nfunction createSetAdd(\n ctx: SerializationContext,\n ref: number,\n value: string,\n) {\n markRef(ctx, ref);\n ctx.assignments.push({\n type: 'set',\n source: getRefParam(ctx, ref),\n value,\n });\n}\n\nfunction createMapSet(\n ctx: SerializationContext,\n ref: number,\n key: string,\n value: string,\n) {\n markRef(ctx, ref);\n ctx.assignments.push({\n type: 'map',\n source: getRefParam(ctx, ref),\n key,\n value,\n });\n}\n\nfunction createArrayAssign(\n ctx: SerializationContext,\n ref: number,\n index: number,\n value: string,\n) {\n markRef(ctx, ref);\n createAssignment(ctx, `${getRefParam(ctx, ref)}[${index}]`, value);\n}\n\nfunction createObjectIdentifierAssign(\n ctx: SerializationContext,\n ref: number,\n key: string,\n value: string,\n) {\n markRef(ctx, ref);\n createAssignment(ctx, `${getRefParam(ctx, ref)}.${key}`, value);\n}\n\nfunction createObjectComputedAssign(\n ctx: SerializationContext,\n ref: number,\n key: string,\n value: string,\n) {\n markRef(ctx, ref);\n createAssignment(ctx, `${getRefParam(ctx, ref)}[${key}]`, value);\n}\n\nfunction getErrorConstructor(error: ErrorValue) {\n if (error instanceof EvalError) {\n return 'EvalError';\n }\n if (error instanceof RangeError) {\n return 'RangeError';\n }\n if (error instanceof ReferenceError) {\n return 'ReferenceError';\n }\n if (error instanceof SyntaxError) {\n return 'SyntaxError';\n }\n if (error instanceof TypeError) {\n return 'TypeError';\n }\n if (error instanceof URIError) {\n return 'URIError';\n }\n return 'Error';\n}\n\nfunction getErrorOptions(\n error: Error,\n) {\n let options: Record<string, any> | undefined;\n const constructor = getErrorConstructor(error);\n // Name has been modified\n if (error.name !== constructor) {\n options = { name: error.name };\n } else if (error.constructor.name !== constructor) {\n // Otherwise, name is overriden because\n // the Error class is extended\n options = { name: error.constructor.name };\n }\n const names = Object.getOwnPropertyNames(error);\n for (const name of names) {\n if (name !== 'name' && name !== 'message') {\n options = options || {};\n options[name] = error[name as keyof Error];\n }\n }\n return options;\n}\n\nfunction getIterableOptions(obj: Iterable<any>) {\n const names = Object.getOwnPropertyNames(obj);\n if (names.length) {\n const options: Record<string, unknown> = {};\n for (const name of names) {\n options[name] = obj[name as unknown as keyof typeof obj];\n }\n return options;\n }\n return undefined;\n}\n\nconst enum SerovalNodeType {\n Primitive,\n Reference,\n Date,\n RegExp,\n Set,\n Map,\n Array,\n Object,\n NullConstructor,\n Promise,\n Error,\n AggregateError,\n Iterable,\n TypedArray,\n}\n\ntype SerovalPrimitiveNode = [type: SerovalNodeType.Primitive, value: PrimitiveValue];\ntype SerovalReferenceNode = [type: SerovalNodeType.Reference, value: number];\ntype SerovalSemiPrimitiveNode =\n | [type: SerovalNodeType.Date, value: Date, id: number]\n | [type: SerovalNodeType.RegExp, value: RegExp, id: number]\n | [\n type: SerovalNodeType.TypedArray,\n value: [constructor: string, array: TypedArrayValue],\n id: number\n ];\n\ntype SerovalDictionaryNode = [key: string[], value: SerovalNode[], size: number];\ntype SerovalSetNode = [type: SerovalNodeType.Set, value: SerovalNode[], id: number];\ntype SerovalMapNode = [\n type: SerovalNodeType.Map,\n value: [key: SerovalNode[], value: SerovalNode[], size: number],\n id: number\n];\ntype SerovalArrayNode = [type: SerovalNodeType.Array, value: SerovalNode[], id: number];\ntype SerovalObjectNode = [type: SerovalNodeType.Object, value: SerovalDictionaryNode, id: number];\ntype SerovalNullConstructorNode = [\n type: SerovalNodeType.NullConstructor,\n value: SerovalDictionaryNode,\n id: number,\n];\ntype SerovalPromiseNode = [type: SerovalNodeType.Promise, value: SerovalNode, id: number];\ntype SerovalErrorNode = [\n type: SerovalNodeType.Error,\n value: [\n constructor: string,\n message: string,\n options?: SerovalDictionaryNode,\n ],\n id: number\n];\ntype SerovalAggregateErrorNode = [\n type: SerovalNodeType.AggregateError,\n value: [\n message: string,\n options: SerovalDictionaryNode | undefined,\n errors: SerovalNode,\n ],\n id: number\n];\n\ntype SerovalIterableNode = [\n type: SerovalNodeType.Iterable,\n value: [\n options: SerovalDictionaryNode | undefined,\n items: SerovalNode,\n ],\n id: number,\n];\n\ntype SerovalNode =\n | SerovalPrimitiveNode\n | SerovalReferenceNode\n | SerovalSemiPrimitiveNode\n | SerovalSetNode\n | SerovalMapNode\n | SerovalArrayNode\n | SerovalObjectNode\n | SerovalNullConstructorNode\n | SerovalPromiseNode\n | SerovalErrorNode\n | SerovalAggregateErrorNode\n | SerovalIterableNode;\n\nfunction isReferenceInStack(\n ctx: SerializationContext,\n node: SerovalNode,\n): node is SerovalReferenceNode {\n return node[0] === SerovalNodeType.Reference && ctx.stack.includes(node[1]);\n}\n\nfunction generateRef(\n ctx: SerializationContext,\n current: unknown,\n): number | SerovalReferenceNode {\n // Check if reference number already exists\n const ref = ctx.refs.has(current);\n if (ref) {\n // Exists, means this value is currently\n // being referenced\n const refID = ctx.refs.get(current) || 0;\n // Mark reference\n markRef(ctx, refID);\n return [SerovalNodeType.Reference, refID];\n }\n // Create a new reference ID\n const id = ctx.refs.size;\n ctx.refs.set(current, id);\n return id;\n}\n\nfunction generateSemiPrimitiveValue(\n ctx: SerializationContext,\n current: unknown,\n id: number,\n): SerovalNode | undefined {\n if (constructorCheck<Date>(current, Date)) {\n return [SerovalNodeType.Date, current, id];\n }\n if (constructorCheck<RegExp>(current, RegExp)) {\n return [SerovalNodeType.RegExp, current, id];\n }\n if (constructorCheck<Int8Array>(current, Int8Array)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Int8Array\"');\n return [SerovalNodeType.TypedArray, ['Int8Array', current], id];\n }\n if (constructorCheck<Int16Array>(current, Int16Array)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Int16Array\"');\n return [SerovalNodeType.TypedArray, ['Int16Array', current], id];\n }\n if (constructorCheck<Int32Array>(current, Int32Array)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Int32Array\"');\n return [SerovalNodeType.TypedArray, ['Int32Array', current], id];\n }\n if (constructorCheck<Uint8Array>(current, Uint8Array)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Uint8Array\"');\n return [SerovalNodeType.TypedArray, ['Uint8Array', current], id];\n }\n if (constructorCheck<Uint16Array>(current, Uint16Array)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Uint16Array\"');\n return [SerovalNodeType.TypedArray, ['Uint16Array', current], id];\n }\n if (constructorCheck<Uint32Array>(current, Uint32Array)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Uint32Array\"');\n return [SerovalNodeType.TypedArray, ['Uint32Array', current], id];\n }\n if (constructorCheck<Uint8ClampedArray>(current, Uint8ClampedArray)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Uint8ClampedArray\"');\n return [SerovalNodeType.TypedArray, ['Uint8ClampedArray', current], id];\n }\n if (constructorCheck<Float32Array>(current, Float32Array)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Float32Array\"');\n return [SerovalNodeType.TypedArray, ['Float32Array', current], id];\n }\n if (constructorCheck<Float64Array>(current, Float64Array)) {\n assert(ctx.features.has('typed-arrays'), 'Unsupported value type \"Float64Array\"');\n return [SerovalNodeType.TypedArray, ['Float64Array', current], id];\n }\n if (constructorCheck<BigInt64Array>(current, BigInt64Array)) {\n assert(\n ctx.features.has('typed-arrays')\n && ctx.features.has('bigint'),\n 'Unsupported value type \"BigInt64Array\"',\n );\n return [SerovalNodeType.TypedArray, ['BigInt64Array', current], id];\n }\n if (constructorCheck<BigUint64Array>(current, BigUint64Array)) {\n assert(\n ctx.features.has('typed-arrays')\n && ctx.features.has('bigint'),\n 'Unsupported value type \"BigUint64Array\"',\n );\n return [SerovalNodeType.TypedArray, ['BigUint64Array', current], id];\n }\n return undefined;\n}\n\nexport function generateTreeSync(\n ctx: SerializationContext,\n current: ServerValue,\n): SerovalNode {\n function serializeProperties(\n properties: Record<string, unknown>,\n ): SerovalDictionaryNode {\n const keyNodes: string[] = [];\n const valueNodes: SerovalNode[] = [];\n const deferredKeys: string[] = [];\n const deferredValues: ServerValue[] = [];\n const keys = Object.keys(properties);\n let deferredSize = 0;\n for (const key of keys) {\n if (isIterable(properties[key])) {\n deferredKeys.push(key);\n deferredValues.push(properties[key] as ServerValue);\n deferredSize++;\n } else {\n keyNodes.push(key);\n valueNodes.push(generateTreeSync(ctx, properties[key] as ServerValue));\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes.push(deferredKeys[i]);\n valueNodes.push(generateTreeSync(ctx, deferredValues[i]));\n }\n return [keyNodes, valueNodes, keys.length];\n }\n if (isPrimitive(current)) {\n return [SerovalNodeType.Primitive, current];\n }\n // Non-primitive values needs a reference ID\n // mostly because the values themselves are stateful\n const id = generateRef(ctx, current);\n if (Array.isArray(id)) {\n return id;\n }\n const semiPrimitive = generateSemiPrimitiveValue(ctx, current, id);\n if (semiPrimitive) {\n return semiPrimitive;\n }\n if (constructorCheck<Set<ServerValue>>(current, Set)) {\n assert(ctx.features.has('set'), 'Unsupported type \"Set\"');\n const nodes: SerovalNode[] = [];\n const deferred: ServerValue[] = [];\n for (const item of current.keys()) {\n // Iterables are lazy, so the evaluation must be deferred\n if (isIterable(item)) {\n deferred.push(item);\n } else {\n nodes.push(generateTreeSync(ctx, item));\n }\n }\n // Parse deferred items\n for (let i = 0, len = deferred.length; i < len; i++) {\n nodes.push(generateTreeSync(ctx, deferred[i]));\n }\n return [SerovalNodeType.Set, nodes, id];\n }\n if (constructorCheck<Map<ServerValue, ServerValue>>(current, Map)) {\n assert(ctx.features.has('map'), 'Unsupported type \"Map\"');\n const keyNodes: SerovalNode[] = [];\n const valueNodes: SerovalNode[] = [];\n const deferredKey: ServerValue[] = [];\n const deferredValue: ServerValue[] = [];\n let deferredSize = 0;\n for (const [key, value] of current.entries()) {\n // Either key or value might be an iterable\n if (isIterable(key) || isIterable(value)) {\n deferredKey.push(key);\n deferredValue.push(value);\n deferredSize++;\n } else {\n keyNodes.push(generateTreeSync(ctx, key));\n valueNodes.push(generateTreeSync(ctx, value));\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes.push(generateTreeSync(ctx, deferredKey[i]));\n valueNodes.push(generateTreeSync(ctx, deferredValue[i]));\n }\n return [SerovalNodeType.Map, [keyNodes, valueNodes, current.size], id];\n }\n if (Array.isArray(current)) {\n const size = current.length;\n const nodes = new Array<SerovalNode>(size);\n const deferred = new Array<ServerValue>(size);\n for (let i = 0; i < size; i++) {\n if (i in current) {\n if (isIterable(current[i])) {\n deferred[i] = current[i];\n } else {\n nodes[i] = generateTreeSync(ctx, current[i]);\n }\n }\n }\n for (let i = 0; i < size; i++) {\n if (i in deferred) {\n nodes[i] = generateTreeSync(ctx, deferred[i]);\n }\n }\n return [SerovalNodeType.Array, nodes, id];\n }\n if (current instanceof AggregateError && ctx.features.has('aggregate-error')) {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? serializeProperties(options)\n : undefined;\n const errorsNode = generateTreeSync(ctx, current.errors as ServerValue);\n return [SerovalNodeType.AggregateError, [current.message, optionsNode, errorsNode], id];\n }\n if (current instanceof Error) {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? serializeProperties(options)\n : undefined;\n return [\n SerovalNodeType.Error,\n [getErrorConstructor(current), current.message, optionsNode],\n id,\n ];\n }\n if (isIterable(current)) {\n assert(ctx.features.has('symbol-iterator'), 'Unsupported type \"Iterable\"');\n const options = getIterableOptions(current);\n return [SerovalNodeType.Iterable, [\n // Parse options first before the items\n options ? serializeProperties(options) : undefined,\n generateTreeSync(ctx, Array.from(current)),\n ], id];\n }\n const empty = current.constructor == null;\n if (current.constructor === Object || empty) {\n return [\n empty ? SerovalNodeType.NullConstructor : SerovalNodeType.Object,\n serializeProperties(current as Record<string, unknown>),\n id,\n ];\n }\n throw new Error('Unsupported value');\n}\n\nexport async function generateTreeAsync(\n ctx: SerializationContext,\n current: AsyncServerValue,\n): Promise<SerovalNode> {\n async function serializeProperties(\n properties: Record<string, unknown>,\n ): Promise<SerovalDictionaryNode> {\n const keyNodes: string[] = [];\n const valueNodes: SerovalNode[] = [];\n const deferredKeys: string[] = [];\n const deferredValues: ServerValue[] = [];\n const keys = Object.keys(properties);\n let deferredSize = 0;\n for (const key of keys) {\n if (isIterable(properties[key])) {\n deferredKeys.push(key);\n deferredValues.push(properties[key] as ServerValue);\n deferredSize++;\n } else {\n keyNodes.push(key);\n valueNodes.push(await generateTreeAsync(ctx, properties[key] as ServerValue));\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes.push(deferredKeys[i]);\n valueNodes.push(await generateTreeAsync(ctx, deferredValues[i]));\n }\n return [keyNodes, valueNodes, keys.length];\n }\n if (isPrimitive(current)) {\n return [SerovalNodeType.Primitive, current];\n }\n const id = generateRef(ctx, current);\n if (Array.isArray(id)) {\n return id;\n }\n const semiPrimitive = generateSemiPrimitiveValue(ctx, current, id);\n if (semiPrimitive) {\n return semiPrimitive;\n }\n if (isPromise(current)) {\n assert(ctx.features.has('promise'), 'Unsupported type \"Promise\"');\n return current.then(async (value) => [\n SerovalNodeType.Promise,\n await generateTreeAsync(ctx, value),\n id,\n ]);\n }\n if (constructorCheck<Set<AsyncServerValue>>(current, Set)) {\n assert(ctx.features.has('set'), 'Unsupported type \"Set\"');\n const nodes: SerovalNode[] = [];\n const deferred: AsyncServerValue[] = [];\n for (const item of current.keys()) {\n if (isIterable(item)) {\n deferred.push(item);\n } else {\n nodes.push(await generateTreeAsync(ctx, item));\n }\n }\n for (let i = 0, len = deferred.length; i < len; i++) {\n nodes.push(await generateTreeAsync(ctx, deferred[i]));\n }\n return [SerovalNodeType.Set, nodes, id];\n }\n if (constructorCheck<Map<AsyncServerValue, AsyncServerValue>>(current, Map)) {\n assert(ctx.features.has('map'), 'Unsupported type \"Map\"');\n const keyNodes: SerovalNode[] = [];\n const valueNodes: SerovalNode[] = [];\n const deferredKey: AsyncServerValue[] = [];\n const deferredValue: AsyncServerValue[] = [];\n let deferredSize = 0;\n for (const [key, value] of current.entries()) {\n if (isIterable(key) || isIterable(value)) {\n deferredKey.push(key);\n deferredValue.push(value);\n deferredSize++;\n } else {\n keyNodes.push(await generateTreeAsync(ctx, key));\n valueNodes.push(await generateTreeAsync(ctx, value));\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes.push(await generateTreeAsync(ctx, deferredKey[i]));\n valueNodes.push(await generateTreeAsync(ctx, deferredValue[i]));\n }\n return [SerovalNodeType.Map, [keyNodes, valueNodes, current.size], id];\n }\n if (Array.isArray(current)) {\n const size = current.length;\n const nodes = new Array<SerovalNode>(size);\n const deferred = new Array<AsyncServerValue>(size);\n for (let i = 0; i < size; i++) {\n const item = current[i];\n if (i in current) {\n if (isIterable(item)) {\n deferred[i] = item;\n } else {\n nodes[i] = await generateTreeAsync(ctx, item);\n }\n }\n }\n for (let i = 0; i < size; i++) {\n if (i in deferred) {\n nodes[i] = await generateTreeAsync(ctx, deferred[i]);\n }\n }\n return [SerovalNodeType.Array, nodes, id];\n }\n if (current instanceof AggregateError) {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? await serializeProperties(options)\n : undefined;\n const errorsNode = await generateTreeAsync(ctx, current.errors as ServerValue);\n return [SerovalNodeType.AggregateError, [current.message, optionsNode, errorsNode], id];\n }\n if (current instanceof Error) {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? await serializeProperties(options)\n : undefined;\n return [\n SerovalNodeType.Error,\n [getErrorConstructor(current), current.message, optionsNode],\n id,\n ];\n }\n if (isIterable(current)) {\n assert(ctx.features.has('symbol-iterator'), 'Unsupported type \"Iterable\"');\n const options = getIterableOptions(current);\n return [SerovalNodeType.Iterable, [\n options\n ? await serializeProperties(options)\n : undefined,\n await generateTreeAsync(ctx, Array.from(current)),\n ], id];\n }\n const empty = current.constructor == null;\n if (current.constructor === Object || empty) {\n return [\n empty ? SerovalNodeType.NullConstructor : SerovalNodeType.Object,\n await serializeProperties(current as Record<string, unknown>),\n id,\n ];\n }\n throw new Error('Unsupported value');\n}\n\nexport function serializePrimitive(\n ctx: SerializationContext,\n value: PrimitiveValue,\n): string {\n // Shortened forms\n if (value === true) {\n return '!0';\n }\n if (value === false) {\n return '!1';\n }\n if (value === undefined) {\n return 'void 0';\n }\n if (value === null) {\n return 'null';\n }\n if (typeof value === 'bigint') {\n assert(ctx.features.has('bigint'), 'Unsupported type \"BigInt\"');\n return `${value}n`;\n }\n if (typeof value === 'string') {\n return quote(value);\n }\n // negative 0 isn't the same as 0\n if (Object.is(value, -0)) {\n return '-0';\n }\n if (Object.is(value, Infinity)) {\n return '1/0';\n }\n if (Object.is(value, -Infinity)) {\n return '-1/0';\n }\n return String(value);\n}\n\nexport function serializeTree(\n ctx: SerializationContext,\n [type, value, id]: SerovalNode,\n): string {\n function serializeAssignments(\n targetRef: number,\n [keys, values, size]: SerovalDictionaryNode,\n ) {\n ctx.stack.push(targetRef);\n const mainAssignments: Assignment[] = [];\n for (let i = 0; i < size; i++) {\n const parentStack = ctx.stack;\n ctx.stack = [];\n const refParam = serializeTree(ctx, values[i]);\n ctx.stack = parentStack;\n const key = keys[i];\n const check = Number(key);\n // Test if key is a valid number or JS identifier\n // so that we don't have to serialize the key and wrap with brackets\n const parentAssignment = ctx.assignments;\n ctx.assignments = mainAssignments;\n if (\n check >= 0\n || (Number.isNaN(check) && /^([$A-Z_][0-9A-Z_$]*)$/i.test(key))\n ) {\n if (!Number.isNaN(check)) {\n createObjectComputedAssign(ctx, targetRef, key, refParam);\n } else {\n createObjectIdentifierAssign(ctx, targetRef, key, refParam);\n }\n } else {\n createObjectComputedAssign(ctx, targetRef, quote(key), refParam);\n }\n ctx.assignments = parentAssignment;\n }\n ctx.stack.pop();\n return resolveAssignments(mainAssignments);\n }\n function serializeObject(\n sourceID: number,\n [keys, values, size]: SerovalDictionaryNode,\n ) {\n let result = '';\n ctx.stack.push(sourceID);\n for (let i = 0; i < size; i++) {\n const key = keys[i];\n const val = values[i];\n const check = Number(key);\n // Test if key is a valid number or JS identifier\n // so that we don't have to serialize the key and wrap with brackets\n if (\n check >= 0\n || (Number.isNaN(check) && /^([$A-Z_][0-9A-Z_$]*)$/i.test(key))\n ) {\n if (isReferenceInStack(ctx, val)) {\n const refParam = getRefParam(ctx, val[1]);\n if (!Number.isNaN(check)) {\n createObjectComputedAssign(ctx, sourceID, key, refParam);\n } else {\n createObjectIdentifierAssign(ctx, sourceID, key, refParam);\n }\n } else {\n result += `${key}:${serializeTree(ctx, val)},`;\n }\n } else if (isReferenceInStack(ctx, val)) {\n const refParam = getRefParam(ctx, val[1]);\n createObjectComputedAssign(ctx, sourceID, quote(key), refParam);\n } else {\n result += `${quote(key)}:${serializeTree(ctx, val)},`;\n }\n }\n ctx.stack.pop();\n return `{${result.substring(0, result.length - 1)}}`;\n }\n switch (type) {\n case SerovalNodeType.Primitive:\n return serializePrimitive(ctx, value);\n case SerovalNodeType.Reference:\n return getRefParam(ctx, value);\n case SerovalNodeType.Promise: {\n let serialized: string;\n // Check if resolved value is a parent expression\n if (isReferenceInStack(ctx, value)) {\n // A Promise trick, reference the value\n // inside the `then` expression so that\n // the Promise evaluates after the parent\n // has initialized\n serialized = `Promise.resolve().then(()=>${getRefParam(ctx, value[1])})`;\n } else {\n ctx.stack.push(id);\n const result = serializeTree(ctx, value);\n ctx.stack.pop();\n // just inline the value/reference here\n serialized = `Promise.resolve(${result})`;\n }\n return assignRef(ctx, id, serialized);\n }\n case SerovalNodeType.Date:\n return assignRef(ctx, id, `new Date(\"${value.toISOString()}\")`);\n case SerovalNodeType.RegExp:\n return assignRef(ctx, id, String(value));\n case SerovalNodeType.TypedArray: {\n // BigInt typed arrays are broken for toString()\n let values = '';\n for (let i = 0, len = value[1].length; i < len; i++) {\n values += `${serializePrimitive(ctx, value[1][i])},`;\n }\n let args = values ? `[${values.substring(0, values.length - 1)}]` : '[]';\n if (value[1].byteOffset !== 0) {\n args += `,${value[1].byteOffset}`;\n }\n return assignRef(ctx, id, `new ${value[0]}(${args})`);\n }\n case SerovalNodeType.Set: {\n let serialized = 'new Set';\n const size = value.length;\n if (size) {\n let result = '';\n ctx.stack.push(id);\n for (let i = 0; i < size; i++) {\n const item = value[i];\n if (isReferenceInStack(ctx, item)) {\n createSetAdd(ctx, id, getRefParam(ctx, item[1]));\n } else {\n // Push directly\n result += `${serializeTree(ctx, item)},`;\n }\n }\n ctx.stack.pop();\n if (result) {\n serialized += `([${result.substring(0, result.length - 1)}])`;\n }\n }\n return assignRef(ctx, id, serialized);\n }\n case SerovalNodeType.Map: {\n let serialized = 'new Map';\n const size = value[2];\n if (size) {\n let result = '';\n ctx.stack.push(id);\n for (let i = 0; i < size; i++) {\n // Check if key is a parent\n const key = value[0][i];\n const val = value[1][i];\n if (isReferenceInStack(ctx, key)) {\n // Create reference for the map instance\n const keyRef = getRefParam(ctx, key[1]);\n // Check if value is a parent\n if (isReferenceInStack(ctx, val)) {\n const valueRef = getRefParam(ctx, val[1]);\n // Register an assignment since\n // both key and value are a parent of this\n // Map instance\n createMapSet(ctx, id, keyRef, valueRef);\n } else {\n // Reset the stack\n // This is required because the serialized\n // value is no longer part of the expression\n // tree and has been moved to the deferred\n // assignment\n const parent = ctx.stack;\n ctx.stack = [];\n createMapSet(ctx, id, keyRef, serializeTree(ctx, val));\n ctx.stack = parent;\n }\n } else if (isReferenceInStack(ctx, val)) {\n // Create ref for the Map instance\n const valueRef = getRefParam(ctx, val[1]);\n // Reset stack for the key serialization\n const parent = ctx.stack;\n ctx.stack = [];\n createMapSet(ctx, id, serializeTree(ctx, key), valueRef);\n ctx.stack = parent;\n } else {\n result += `[${serializeTree(ctx, key)},${serializeTree(ctx, val)}],`;\n }\n }\n ctx.stack.pop();\n // Check if there are any values\n // so that the empty Map constructor\n // can be used instead\n if (result) {\n serialized += `([${result.substring(0, result.length - 1)}])`;\n }\n }\n return assignRef(ctx, id, serialized);\n }\n case SerovalNodeType.Array: {\n // This is different than Map and Set\n // because we also need to serialize\n // the holes of the Array\n const size = value.length;\n let values = '';\n ctx.stack.push(id);\n for (let i = 0; i < size; i++) {\n const item = value[i];\n // Check if index is a hole\n if (i in value) {\n // Check if item is a parent\n if (isReferenceInStack(ctx, item)) {\n createArrayAssign(ctx, id, i, getRefParam(ctx, item[1]));\n values += ',';\n } else {\n values += serializeTree(ctx, item);\n if (i < size - 1) {\n values += ',';\n }\n }\n } else {\n // Add an empty item\n values += ',';\n }\n }\n ctx.stack.pop();\n return assignRef(ctx, id, `[${values}]`);\n }\n case SerovalNodeType.AggregateError: {\n // Serialize the required arguments\n ctx.stack.push(id);\n let serialized = `new AggregateError(${serializeTree(ctx, value[2])},${quote(value[0])})`;\n ctx.stack.pop();\n // `AggregateError` might've been extended\n // either through class or custom properties\n // Make sure to assign extra properties\n if (value[1]) {\n if (ctx.features.has('object-assign')) {\n const options = serializeObject(id, value[1]);\n serialized = `Object.assign(${serialized},${options})`;\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(id, value[1]);\n if (assignments) {\n const ref = getRefParam(ctx, id);\n return `(${assignRef(ctx, id, serialized)},${assignments}${ref})`;\n }\n }\n }\n return assignRef(ctx, id, serialized);\n }\n case SerovalNodeType.Error: {\n let serialized = `new ${value[0]}(${quote(value[1])})`;\n if (value[2]) {\n if (ctx.features.has('object-assign')) {\n const options = serializeObject(id, value[2]);\n serialized = `Object.assign(${serialized},${options})`;\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(id, value[2]);\n if (assignments) {\n const ref = getRefParam(ctx, id);\n return `(${assignRef(ctx, id, serialized)},${assignments}${ref})`;\n }\n }\n }\n return assignRef(ctx, id, serialized);\n }\n case SerovalNodeType.Iterable: {\n const parent = ctx.stack;\n ctx.stack = [];\n const values = serializeTree(ctx, value[1]);\n ctx.stack = parent;\n let serialized: string;\n if (ctx.features.has('array-values')) {\n serialized = `${values}.values()`;\n } else {\n serialized = `${values}[Symbol.iterator]()`;\n }\n if (ctx.features.has('arrow-function')) {\n serialized = `{[Symbol.iterator]:()=>${serialized}}`;\n } else if (ctx.features.has('method-shorthand')) {\n serialized = `{[Symbol.iterator](){return ${serialized}}}`;\n } else {\n serialized = `{[Symbol.iterator]:function(){return ${serialized}}}`;\n }\n if (value[0]) {\n if (ctx.features.has('object-assign')) {\n const options = serializeObject(id, value[0]);\n serialized = `Object.assign(${serialized},${options})`;\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(id, value[0]);\n if (assignments) {\n const ref = getRefParam(ctx, id);\n return `(${assignRef(ctx, id, serialized)},${assignments}${ref})`;\n }\n }\n }\n return assignRef(ctx, id, serialized);\n }\n case SerovalNodeType.NullConstructor: {\n let serialized = 'Object.create(null)';\n if (ctx.features.has('object-assign')) {\n const fields = serializeObject(id, value);\n if (fields !== '{}') {\n serialized = `Object.assign(${serialized},${fields})`;\n }\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(id, value);\n if (assignments) {\n const ref = getRefParam(ctx, id);\n return `(${assignRef(ctx, id, serialized)},${assignments}${ref})`;\n }\n }\n return assignRef(ctx, id, serialized);\n }\n case SerovalNodeType.Object:\n return assignRef(ctx, id, serializeObject(id, value));\n default:\n throw new Error('Unsupported type');\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,SAAS,YAAY,SAA6C;AACvE,MAAI,CAAC,WAAW,YAAY,MAAM;AAChC,WAAO;AAAA,EACT;AACA,QAAM,OAAO,OAAO;AACpB,SAAO,SAAS,YACX,SAAS,YACT,SAAS;AAChB;AAEO,SAAS,UAAa,KAAqC;AAChE,SAAO,CAAC,CAAC,QACH,OAAO,QAAQ,YAAY,OAAO,QAAQ,eAC3C,UAAU,OACV,OAAO,IAAI,SAAS;AAC3B;AAEO,SAAS,iBACd,OACA,aACY;AACZ,SAAQ,MAAmC,gBAAgB;AAC7D;AAEA,SAAS,kBAAkB,KAAc;AACvC,SACE,MAAM,QAAQ,GAAG,KACd,iBAA2B,KAAK,GAAG,KACnC,iBAAgC,KAAK,GAAG;AAE/C;AAEO,SAAS,WAAc,KAAkC;AAC9D,SAAO,CAAC,CAAC,OACJ,OAAO,QAAQ,YACf,CAAC,kBAAkB,GAAG,KACtB,OAAO,YAAY,OACnB,OAAO,IAAI,OAAO,QAAQ,MAAM;AACvC;;;ACnCe,SAAR,MAAuB,KAAa;AACzC,MAAI,SAAS;AACb,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,KAAK;AAC9C,QAAI;AACJ,YAAQ,IAAI,CAAC,GAAG;AAAA,MACd,KAAK;AACH,sBAAc;AACd;AAAA,MACF,KAAK;AACH,sBAAc;AACd;AAAA,MACF,KAAK;AACH,sBAAc;AACd;AAAA,MACF,KAAK;AACH,sBAAc;AACd;AAAA,MACF,KAAK;AACH,sBAAc;AACd;AAAA,MACF,KAAK;AACH,sBAAc;AACd;AAAA,MACF,KAAK;AACH,sBAAc;AACd;AAAA,MACF;AACE;AAAA,IACJ;AACA,cAAU,IAAI,MAAM,SAAS,CAAC,IAAI;AAClC,cAAU,IAAI;AAAA,EAChB;AACA,MAAI,YAAY,GAAG;AACjB,aAAS;AAAA,EACX,OAAO;AACL,cAAU,IAAI,MAAM,OAAO;AAAA,EAC7B;AACA,SAAO,IAAI;AACb;;;AC3CA,IAAM,kBAAkB;AACxB,IAAM,sBAAsB,gBAAgB;AAC5C,IAAM,YAAY;AAClB,IAAM,gBAAgB,UAAU;AAEjB,SAAR,cAA+B,OAAe;AACnD,MAAI,MAAM,QAAQ;AAClB,MAAI,MAAM,gBAAgB,GAAG;AAC7B,WAAS,QAAQ,OAAO;AACxB,SAAO,QAAQ,GAAG;AAChB,UAAM,QAAQ;AACd,WAAO,UAAU,GAAG;AACpB,aAAS,QAAQ,OAAO;AAAA,EAC1B;AACA,SAAO;AACT;;;AChBe,SAAR,OAAwB,MAAe,OAA6B;AACzE,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,KAAK;AAAA,EACvB;AACF;;;ACOA,SAAS,eAAe,MAAe,OAAgB;AACrD,MAAI,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC;AAC5B,MAAI,SAAS,GAAG;AACd,WAAO,KAAK,CAAC,IAAI,MAAM,CAAC;AAAA,EAC1B;AACA,MAAI,SAAS,GAAG;AACd,WAAO,KAAK,CAAC,IAAI,MAAM,CAAC;AAAA,EAC1B;AACA,SAAO;AACT;AAoCA,IAAM,gBAA8B;AAAA;AAAA,EAElC,mBAAmB;AAAA,IACjB,IAAI,CAAC,MAAM,GAAG,CAAC;AAAA,IACf,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,KAAK,CAAC,IAAI,GAAG,CAAC;AAAA,IACd,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,EACjB;AAAA;AAAA,EAEA,gBAAgB;AAAA,IACd,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,IACb,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,EACjB;AAAA;AAAA,EAEA,kBAAkB;AAAA,IAChB,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,KAAK,CAAC,IAAI,GAAG,CAAC;AAAA,IACd,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAAA;AAAA,EAEA,QAAQ;AAAA,IACN,IAAI,CAAC,MAAM,GAAG,CAAC;AAAA,IACf,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,KAAK,CAAC,IAAI,GAAG,CAAC;AAAA,IACd,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,EACjB;AAAA;AAAA,EAEA,KAAK;AAAA,IACH,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,IACb,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,GAAG,IAAI,CAAC;AAAA,EACjB;AAAA;AAAA,EAEA,oBAAoB;AAAA,IAClB,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,IACb,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAAA;AAAA,EAEA,iBAAiB;AAAA,IACf,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,IACb,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAAA;AAAA,EAEA,SAAS;AAAA,IACP,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,IACb,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,GAAG,IAAI,CAAC;AAAA,EACjB;AAAA;AAAA,EAEA,KAAK;AAAA,IACH,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,IACb,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,GAAG,IAAI,CAAC;AAAA,EACjB;AAAA;AAAA,EAEA,mBAAmB;AAAA,IACjB,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,IAAI,GAAG,CAAC;AAAA,IAClB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,IAAI,GAAG,CAAC;AAAA,IACjB,KAAK,CAAC,IAAI,GAAG,CAAC;AAAA,IACd,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,GAAG,IAAI,CAAC;AAAA,EACjB;AAAA;AAAA,EAEA,gBAAgB;AAAA,IACd,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,IACZ,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,MAAM,CAAC,IAAI,GAAG,CAAC;AAAA,IACf,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,OAAO,CAAC,IAAI,GAAG,CAAC;AAAA,IAChB,QAAQ,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,IACb,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,IACd,MAAM,CAAC,GAAG,IAAI,CAAC;AAAA,EACjB;AACF;AAEA,IAAM,eAAe;AAIrB,SAAS,YAAY,QAAwB;AAC3C,QAAM,SAAS,aAAa,KAAK,MAAM;AACvC,SAAO,QAAQ,mBAAmB,SAAS;AAC3C,QAAM,CAAC,EAAE,UAAU,OAAO,IAAI;AAC9B,QAAM,CAAC,OAAO,QAAQ,KAAK,QAAQ,GAAG,IAAI,QAAQ,MAAM,GAAG;AAC3D,SAAO,CAAC,UAAsB,CAAC,OAAO,KAAK,GAAG,OAAO,KAAK,GAAG,OAAO,KAAK,CAAC,CAAC;AAC7E;AAEA,SAAS,kBAAkB,SAAsC;AAC/D,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,UAAM,WAAqB,CAAC;AAC5B,eAAW,UAAU,SAAS;AAC5B,eAAS,KAAK,YAAY,MAAM,CAAC;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACA,SAAO,CAAC,YAAY,OAAO,CAAC;AAC9B;AAEA,SAAS,mBAAmB,KAAc,SAAmB;AAC3D,QAAM,OAAO,cAAc,GAAG;AAC9B,MAAI,OAAO;AACX,aAAW,CAAC,UAAU,OAAO,KAAK,SAAS;AACzC,UAAM,cAAc,KAAK,QAAQ;AACjC,WAAO,QAAQ,CAAC,CAAC,eAAgB,eAAe,aAAa,OAAO,KAAK;AAAA,EAC3E;AACA,SAAO;AACT;AAEO,SAAS,aAAa,SAA0C;AACrE,QAAM,SAAS,kBAAkB,OAAO;AACxC,QAAM,QAAQ,oBAAI,IAAa;AAE/B,aAAW,OAAO,eAAe;AAC/B,QAAI,mBAAmB,KAAgB,MAAM,GAAG;AAC9C,YAAM,IAAI,GAAc;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO;AACT;;;ACpLA,IAAM,kBAA2B;AAAA,EAC/B,QAAQ;AACV;AAEO,SAAS,2BAA2B,UAA4B,CAAC,GAAyB;AAE/F,QAAM,SAAS,OAAO,OAAO,CAAC,GAAG,iBAAiB,WAAW,CAAC,CAAC;AAC/D,SAAO;AAAA,IACL,YAAY,CAAC;AAAA,IACb,OAAO,CAAC;AAAA,IACR,MAAM,oBAAI,IAAI;AAAA,IACd,MAAM,CAAC;AAAA,IACP,aAAa,CAAC;AAAA,IACd,WAAW,oBAAI,IAAI;AAAA,IACnB,UAAU,aAAa,OAAO,MAAM;AAAA,EACtC;AACF;AAEA,SAAS,wBAAwB,YAAgC;AAC/D,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK;AACH,aAAO,GAAG,WAAW,UAAU,WAAW;AAAA,IAC5C,KAAK;AACH,aAAO,GAAG,WAAW,cAAc,WAAW,OAAO,WAAW;AAAA,IAClE,KAAK;AACH,aAAO,GAAG,WAAW,cAAc,WAAW;AAAA,IAChD;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,iBAAiB,aAA2B;AACnD,QAAM,iBAAiB,CAAC;AACxB,MAAI,UAAU,YAAY,CAAC;AAC3B,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,MAAM,YAAY,QAAQ,IAAI,KAAK,KAAK;AACtD,UAAM,OAAO,YAAY,CAAC;AAC1B,QAAI,KAAK,SAAS,KAAK,MAAM;AAC3B,UAAI,KAAK,SAAS,WAAW,KAAK,UAAU,KAAK,OAAO;AAGtD,kBAAU;AAAA,UACR,MAAM;AAAA,UACN,QAAQ,KAAK;AAAA,UACb,OAAO,wBAAwB,OAAO;AAAA,QACxC;AAAA,MACF,WAAW,KAAK,SAAS,SAAS,KAAK,WAAW,KAAK,QAAQ;AAE7D,kBAAU;AAAA,UACR,MAAM;AAAA,UACN,QAAQ,wBAAwB,OAAO;AAAA,UACvC,KAAK,KAAK;AAAA,UACV,OAAO,KAAK;AAAA,QACd;AAAA,MACF,WAAW,KAAK,SAAS,SAAS,KAAK,WAAW,KAAK,QAAQ;AAE7D,kBAAU;AAAA,UACR,MAAM;AAAA,UACN,QAAQ,wBAAwB,OAAO;AAAA,UACvC,OAAO,KAAK;AAAA,QACd;AAAA,MACF,OAAO;AAEL,uBAAe,KAAK,OAAO;AAC3B,kBAAU;AAAA,MACZ;AAAA,IACF,OAAO;AACL,qBAAe,KAAK,OAAO;AAC3B,gBAAU;AAAA,IACZ;AACA,WAAO;AAAA,EACT;AAEA,iBAAe,KAAK,OAAO;AAE3B,SAAO;AACT;AAEA,SAAS,mBAAmB,aAA2B;AACrD,MAAI,YAAY,QAAQ;AACtB,QAAI,SAAS;AACb,UAAM,SAAS,iBAAiB,WAAW;AAC3C,aAAS,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AACjD,gBAAU,GAAG,wBAAwB,OAAO,CAAC,CAAC;AAAA,IAChD;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,eAAe,KAA2B;AACxD,SAAO,mBAAmB,IAAI,WAAW;AAC3C;AAKA,SAAS,QAAQ,KAA2B,SAAiB;AAC3D,MAAI,WAAW,OAAO,IAAI;AAC5B;AAKO,SAAS,UACd,KACA,OACA;AACA,QAAM,UAAU,IAAI,KAAK,IAAI,KAAK;AAClC,MAAI,WAAW,MAAM;AACnB,WAAO;AAAA,EACT;AACA,QAAM,KAAK,IAAI,KAAK;AACpB,MAAI,KAAK,IAAI,OAAO,EAAE;AACtB,SAAO;AACT;AAQA,SAAS,eACP,KACA,OACA;AACA,QAAM,UAAU,IAAI,UAAU,IAAI,KAAK;AACvC,MAAI,WAAW,MAAM;AACnB,WAAO;AAAA,EACT;AACA,QAAM,KAAK,IAAI,UAAU;AACzB,MAAI,UAAU,IAAI,OAAO,EAAE;AAC3B,SAAO;AACT;AAMO,SAAS,YAAY,KAA2B,OAAe;AACpE,QAAM,cAAc,eAAe,KAAK,KAAK;AAC7C,MAAI,IAAI,KAAK,WAAW,GAAG;AACzB,WAAO,IAAI,KAAK,WAAW;AAAA,EAC7B;AACA,QAAM,SAAS,cAAc,WAAW;AACxC,MAAI,KAAK,WAAW,IAAI;AACxB,SAAO;AACT;AAOA,SAAS,UACP,KACA,OACA,OACA;AACA,MAAI,IAAI,WAAW,KAAK,GAAG;AACzB,WAAO,GAAG,YAAY,KAAK,KAAK,KAAK;AAAA,EACvC;AACA,SAAO;AACT;AAEA,SAAS,iBACP,KACA,QACA,OACA;AACA,MAAI,YAAY,KAAK;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,aACP,KACA,KACA,OACA;AACA,UAAQ,KAAK,GAAG;AAChB,MAAI,YAAY,KAAK;AAAA,IACnB,MAAM;AAAA,IACN,QAAQ,YAAY,KAAK,GAAG;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,aACP,KACA,KACA,KACA,OACA;AACA,UAAQ,KAAK,GAAG;AAChB,MAAI,YAAY,KAAK;AAAA,IACnB,MAAM;AAAA,IACN,QAAQ,YAAY,KAAK,GAAG;AAAA,IAC5B;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,kBACP,KACA,KACA,OACA,OACA;AACA,UAAQ,KAAK,GAAG;AAChB,mBAAiB,KAAK,GAAG,YAAY,KAAK,GAAG,KAAK,UAAU,KAAK;AACnE;AAEA,SAAS,6BACP,KACA,KACA,KACA,OACA;AACA,UAAQ,KAAK,GAAG;AAChB,mBAAiB,KAAK,GAAG,YAAY,KAAK,GAAG,KAAK,OAAO,KAAK;AAChE;AAEA,SAAS,2BACP,KACA,KACA,KACA,OACA;AACA,UAAQ,KAAK,GAAG;AAChB,mBAAiB,KAAK,GAAG,YAAY,KAAK,GAAG,KAAK,QAAQ,KAAK;AACjE;AAEA,SAAS,oBAAoB,OAAmB;AAC9C,MAAI,iBAAiB,WAAW;AAC9B,WAAO;AAAA,EACT;AACA,MAAI,iBAAiB,YAAY;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,iBAAiB,gBAAgB;AACnC,WAAO;AAAA,EACT;AACA,MAAI,iBAAiB,aAAa;AAChC,WAAO;AAAA,EACT;AACA,MAAI,iBAAiB,WAAW;AAC9B,WAAO;AAAA,EACT;AACA,MAAI,iBAAiB,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,gBACP,OACA;AACA,MAAI;AACJ,QAAM,cAAc,oBAAoB,KAAK;AAE7C,MAAI,MAAM,SAAS,aAAa;AAC9B,cAAU,EAAE,MAAM,MAAM,KAAK;AAAA,EAC/B,WAAW,MAAM,YAAY,SAAS,aAAa;AAGjD,cAAU,EAAE,MAAM,MAAM,YAAY,KAAK;AAAA,EAC3C;AACA,QAAM,QAAQ,OAAO,oBAAoB,KAAK;AAC9C,aAAW,QAAQ,OAAO;AACxB,QAAI,SAAS,UAAU,SAAS,WAAW;AACzC,gBAAU,WAAW,CAAC;AACtB,cAAQ,IAAI,IAAI,MAAM,IAAmB;AAAA,IAC3C;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,KAAoB;AAC9C,QAAM,QAAQ,OAAO,oBAAoB,GAAG;AAC5C,MAAI,MAAM,QAAQ;AAChB,UAAM,UAAmC,CAAC;AAC1C,eAAW,QAAQ,OAAO;AACxB,cAAQ,IAAI,IAAI,IAAI,IAAmC;AAAA,IACzD;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAuFA,SAAS,mBACP,KACA,MAC8B;AAC9B,SAAO,KAAK,CAAC,MAAM,qBAA6B,IAAI,MAAM,SAAS,KAAK,CAAC,CAAC;AAC5E;AAEA,SAAS,YACP,KACA,SAC+B;AAE/B,QAAM,MAAM,IAAI,KAAK,IAAI,OAAO;AAChC,MAAI,KAAK;AAGP,UAAM,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK;AAEvC,YAAQ,KAAK,KAAK;AAClB,WAAO,CAAC,mBAA2B,KAAK;AAAA,EAC1C;AAEA,QAAM,KAAK,IAAI,KAAK;AACpB,MAAI,KAAK,IAAI,SAAS,EAAE;AACxB,SAAO;AACT;AAEA,SAAS,2BACP,KACA,SACA,IACyB;AACzB,MAAI,iBAAuB,SAAS,IAAI,GAAG;AACzC,WAAO,CAAC,cAAsB,SAAS,EAAE;AAAA,EAC3C;AACA,MAAI,iBAAyB,SAAS,MAAM,GAAG;AAC7C,WAAO,CAAC,gBAAwB,SAAS,EAAE;AAAA,EAC7C;AACA,MAAI,iBAA4B,SAAS,SAAS,GAAG;AACnD,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,oCAAoC;AAC7E,WAAO,CAAC,qBAA4B,CAAC,aAAa,OAAO,GAAG,EAAE;AAAA,EAChE;AACA,MAAI,iBAA6B,SAAS,UAAU,GAAG;AACrD,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,qCAAqC;AAC9E,WAAO,CAAC,qBAA4B,CAAC,cAAc,OAAO,GAAG,EAAE;AAAA,EACjE;AACA,MAAI,iBAA6B,SAAS,UAAU,GAAG;AACrD,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,qCAAqC;AAC9E,WAAO,CAAC,qBAA4B,CAAC,cAAc,OAAO,GAAG,EAAE;AAAA,EACjE;AACA,MAAI,iBAA6B,SAAS,UAAU,GAAG;AACrD,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,qCAAqC;AAC9E,WAAO,CAAC,qBAA4B,CAAC,cAAc,OAAO,GAAG,EAAE;AAAA,EACjE;AACA,MAAI,iBAA8B,SAAS,WAAW,GAAG;AACvD,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,sCAAsC;AAC/E,WAAO,CAAC,qBAA4B,CAAC,eAAe,OAAO,GAAG,EAAE;AAAA,EAClE;AACA,MAAI,iBAA8B,SAAS,WAAW,GAAG;AACvD,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,sCAAsC;AAC/E,WAAO,CAAC,qBAA4B,CAAC,eAAe,OAAO,GAAG,EAAE;AAAA,EAClE;AACA,MAAI,iBAAoC,SAAS,iBAAiB,GAAG;AACnE,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,4CAA4C;AACrF,WAAO,CAAC,qBAA4B,CAAC,qBAAqB,OAAO,GAAG,EAAE;AAAA,EACxE;AACA,MAAI,iBAA+B,SAAS,YAAY,GAAG;AACzD,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,uCAAuC;AAChF,WAAO,CAAC,qBAA4B,CAAC,gBAAgB,OAAO,GAAG,EAAE;AAAA,EACnE;AACA,MAAI,iBAA+B,SAAS,YAAY,GAAG;AACzD,WAAO,IAAI,SAAS,IAAI,cAAc,GAAG,uCAAuC;AAChF,WAAO,CAAC,qBAA4B,CAAC,gBAAgB,OAAO,GAAG,EAAE;AAAA,EACnE;AACA,MAAI,iBAAgC,SAAS,aAAa,GAAG;AAC3D;AAAA,MACE,IAAI,SAAS,IAAI,cAAc,KAC5B,IAAI,SAAS,IAAI,QAAQ;AAAA,MAC5B;AAAA,IACF;AACA,WAAO,CAAC,qBAA4B,CAAC,iBAAiB,OAAO,GAAG,EAAE;AAAA,EACpE;AACA,MAAI,iBAAiC,SAAS,cAAc,GAAG;AAC7D;AAAA,MACE,IAAI,SAAS,IAAI,cAAc,KAC5B,IAAI,SAAS,IAAI,QAAQ;AAAA,MAC5B;AAAA,IACF;AACA,WAAO,CAAC,qBAA4B,CAAC,kBAAkB,OAAO,GAAG,EAAE;AAAA,EACrE;AACA,SAAO;AACT;AAEO,SAAS,iBACd,KACA,SACa;AACb,WAAS,oBACP,YACuB;AACvB,UAAM,WAAqB,CAAC;AAC5B,UAAM,aAA4B,CAAC;AACnC,UAAM,eAAyB,CAAC;AAChC,UAAM,iBAAgC,CAAC;AACvC,UAAM,OAAO,OAAO,KAAK,UAAU;AACnC,QAAI,eAAe;AACnB,eAAW,OAAO,MAAM;AACtB,UAAI,WAAW,WAAW,GAAG,CAAC,GAAG;AAC/B,qBAAa,KAAK,GAAG;AACrB,uBAAe,KAAK,WAAW,GAAG,CAAgB;AAClD;AAAA,MACF,OAAO;AACL,iBAAS,KAAK,GAAG;AACjB,mBAAW,KAAK,iBAAiB,KAAK,WAAW,GAAG,CAAgB,CAAC;AAAA,MACvE;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,eAAS,KAAK,aAAa,CAAC,CAAC;AAC7B,iBAAW,KAAK,iBAAiB,KAAK,eAAe,CAAC,CAAC,CAAC;AAAA,IAC1D;AACA,WAAO,CAAC,UAAU,YAAY,KAAK,MAAM;AAAA,EAC3C;AACA,MAAI,YAAY,OAAO,GAAG;AACxB,WAAO,CAAC,mBAA2B,OAAO;AAAA,EAC5C;AAGA,QAAM,KAAK,YAAY,KAAK,OAAO;AACnC,MAAI,MAAM,QAAQ,EAAE,GAAG;AACrB,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,2BAA2B,KAAK,SAAS,EAAE;AACjE,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AACA,MAAI,iBAAmC,SAAS,GAAG,GAAG;AACpD,WAAO,IAAI,SAAS,IAAI,KAAK,GAAG,wBAAwB;AACxD,UAAM,QAAuB,CAAC;AAC9B,UAAM,WAA0B,CAAC;AACjC,eAAW,QAAQ,QAAQ,KAAK,GAAG;AAEjC,UAAI,WAAW,IAAI,GAAG;AACpB,iBAAS,KAAK,IAAI;AAAA,MACpB,OAAO;AACL,cAAM,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAAA,MACxC;AAAA,IACF;AAEA,aAAS,IAAI,GAAG,MAAM,SAAS,QAAQ,IAAI,KAAK,KAAK;AACnD,YAAM,KAAK,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC;AAAA,IAC/C;AACA,WAAO,CAAC,aAAqB,OAAO,EAAE;AAAA,EACxC;AACA,MAAI,iBAAgD,SAAS,GAAG,GAAG;AACjE,WAAO,IAAI,SAAS,IAAI,KAAK,GAAG,wBAAwB;AACxD,UAAM,WAA0B,CAAC;AACjC,UAAM,aAA4B,CAAC;AACnC,UAAM,cAA6B,CAAC;AACpC,UAAM,gBAA+B,CAAC;AACtC,QAAI,eAAe;AACnB,eAAW,CAAC,KAAK,KAAK,KAAK,QAAQ,QAAQ,GAAG;AAE5C,UAAI,WAAW,GAAG,KAAK,WAAW,KAAK,GAAG;AACxC,oBAAY,KAAK,GAAG;AACpB,sBAAc,KAAK,KAAK;AACxB;AAAA,MACF,OAAO;AACL,iBAAS,KAAK,iBAAiB,KAAK,GAAG,CAAC;AACxC,mBAAW,KAAK,iBAAiB,KAAK,KAAK,CAAC;AAAA,MAC9C;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,eAAS,KAAK,iBAAiB,KAAK,YAAY,CAAC,CAAC,CAAC;AACnD,iBAAW,KAAK,iBAAiB,KAAK,cAAc,CAAC,CAAC,CAAC;AAAA,IACzD;AACA,WAAO,CAAC,aAAqB,CAAC,UAAU,YAAY,QAAQ,IAAI,GAAG,EAAE;AAAA,EACvE;AACA,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,UAAM,OAAO,QAAQ;AACrB,UAAM,QAAQ,IAAI,MAAmB,IAAI;AACzC,UAAM,WAAW,IAAI,MAAmB,IAAI;AAC5C,aAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,UAAI,KAAK,SAAS;AAChB,YAAI,WAAW,QAAQ,CAAC,CAAC,GAAG;AAC1B,mBAAS,CAAC,IAAI,QAAQ,CAAC;AAAA,QACzB,OAAO;AACL,gBAAM,CAAC,IAAI,iBAAiB,KAAK,QAAQ,CAAC,CAAC;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,UAAI,KAAK,UAAU;AACjB,cAAM,CAAC,IAAI,iBAAiB,KAAK,SAAS,CAAC,CAAC;AAAA,MAC9C;AAAA,IACF;AACA,WAAO,CAAC,eAAuB,OAAO,EAAE;AAAA,EAC1C;AACA,MAAI,mBAAmB,kBAAkB,IAAI,SAAS,IAAI,iBAAiB,GAAG;AAC5E,UAAM,UAAU,gBAAgB,OAAO;AACvC,UAAM,cAAc,UAChB,oBAAoB,OAAO,IAC3B;AACJ,UAAM,aAAa,iBAAiB,KAAK,QAAQ,MAAqB;AACtE,WAAO,CAAC,yBAAgC,CAAC,QAAQ,SAAS,aAAa,UAAU,GAAG,EAAE;AAAA,EACxF;AACA,MAAI,mBAAmB,OAAO;AAC5B,UAAM,UAAU,gBAAgB,OAAO;AACvC,UAAM,cAAc,UAChB,oBAAoB,OAAO,IAC3B;AACJ,WAAO;AAAA,MACL;AAAA,MACA,CAAC,oBAAoB,OAAO,GAAG,QAAQ,SAAS,WAAW;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,OAAO,GAAG;AACvB,WAAO,IAAI,SAAS,IAAI,iBAAiB,GAAG,6BAA6B;AACzE,UAAM,UAAU,mBAAmB,OAAO;AAC1C,WAAO,CAAC,mBAA0B;AAAA;AAAA,MAEhC,UAAU,oBAAoB,OAAO,IAAI;AAAA,MACzC,iBAAiB,KAAK,MAAM,KAAK,OAAO,CAAC;AAAA,IAC3C,GAAG,EAAE;AAAA,EACP;AACA,QAAM,QAAQ,QAAQ,eAAe;AACrC,MAAI,QAAQ,gBAAgB,UAAU,OAAO;AAC3C,WAAO;AAAA,MACL,QAAQ,0BAAkC;AAAA,MAC1C,oBAAoB,OAAkC;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AACA,QAAM,IAAI,MAAM,mBAAmB;AACrC;AAEA,eAAsB,kBACpB,KACA,SACsB;AACtB,iBAAe,oBACb,YACgC;AAChC,UAAM,WAAqB,CAAC;AAC5B,UAAM,aAA4B,CAAC;AACnC,UAAM,eAAyB,CAAC;AAChC,UAAM,iBAAgC,CAAC;AACvC,UAAM,OAAO,OAAO,KAAK,UAAU;AACnC,QAAI,eAAe;AACnB,eAAW,OAAO,MAAM;AACtB,UAAI,WAAW,WAAW,GAAG,CAAC,GAAG;AAC/B,qBAAa,KAAK,GAAG;AACrB,uBAAe,KAAK,WAAW,GAAG,CAAgB;AAClD;AAAA,MACF,OAAO;AACL,iBAAS,KAAK,GAAG;AACjB,mBAAW,KAAK,MAAM,kBAAkB,KAAK,WAAW,GAAG,CAAgB,CAAC;AAAA,MAC9E;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,eAAS,KAAK,aAAa,CAAC,CAAC;AAC7B,iBAAW,KAAK,MAAM,kBAAkB,KAAK,eAAe,CAAC,CAAC,CAAC;AAAA,IACjE;AACA,WAAO,CAAC,UAAU,YAAY,KAAK,MAAM;AAAA,EAC3C;AACA,MAAI,YAAY,OAAO,GAAG;AACxB,WAAO,CAAC,mBAA2B,OAAO;AAAA,EAC5C;AACA,QAAM,KAAK,YAAY,KAAK,OAAO;AACnC,MAAI,MAAM,QAAQ,EAAE,GAAG;AACrB,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,2BAA2B,KAAK,SAAS,EAAE;AACjE,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,OAAO,GAAG;AACtB,WAAO,IAAI,SAAS,IAAI,SAAS,GAAG,4BAA4B;AAChE,WAAO,QAAQ,KAAK,OAAO,UAAU;AAAA,MACnC;AAAA,MACA,MAAM,kBAAkB,KAAK,KAAK;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,iBAAwC,SAAS,GAAG,GAAG;AACzD,WAAO,IAAI,SAAS,IAAI,KAAK,GAAG,wBAAwB;AACxD,UAAM,QAAuB,CAAC;AAC9B,UAAM,WAA+B,CAAC;AACtC,eAAW,QAAQ,QAAQ,KAAK,GAAG;AACjC,UAAI,WAAW,IAAI,GAAG;AACpB,iBAAS,KAAK,IAAI;AAAA,MACpB,OAAO;AACL,cAAM,KAAK,MAAM,kBAAkB,KAAK,IAAI,CAAC;AAAA,MAC/C;AAAA,IACF;AACA,aAAS,IAAI,GAAG,MAAM,SAAS,QAAQ,IAAI,KAAK,KAAK;AACnD,YAAM,KAAK,MAAM,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC;AAAA,IACtD;AACA,WAAO,CAAC,aAAqB,OAAO,EAAE;AAAA,EACxC;AACA,MAAI,iBAA0D,SAAS,GAAG,GAAG;AAC3E,WAAO,IAAI,SAAS,IAAI,KAAK,GAAG,wBAAwB;AACxD,UAAM,WAA0B,CAAC;AACjC,UAAM,aAA4B,CAAC;AACnC,UAAM,cAAkC,CAAC;AACzC,UAAM,gBAAoC,CAAC;AAC3C,QAAI,eAAe;AACnB,eAAW,CAAC,KAAK,KAAK,KAAK,QAAQ,QAAQ,GAAG;AAC5C,UAAI,WAAW,GAAG,KAAK,WAAW,KAAK,GAAG;AACxC,oBAAY,KAAK,GAAG;AACpB,sBAAc,KAAK,KAAK;AACxB;AAAA,MACF,OAAO;AACL,iBAAS,KAAK,MAAM,kBAAkB,KAAK,GAAG,CAAC;AAC/C,mBAAW,KAAK,MAAM,kBAAkB,KAAK,KAAK,CAAC;AAAA,MACrD;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,eAAS,KAAK,MAAM,kBAAkB,KAAK,YAAY,CAAC,CAAC,CAAC;AAC1D,iBAAW,KAAK,MAAM,kBAAkB,KAAK,cAAc,CAAC,CAAC,CAAC;AAAA,IAChE;AACA,WAAO,CAAC,aAAqB,CAAC,UAAU,YAAY,QAAQ,IAAI,GAAG,EAAE;AAAA,EACvE;AACA,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,UAAM,OAAO,QAAQ;AACrB,UAAM,QAAQ,IAAI,MAAmB,IAAI;AACzC,UAAM,WAAW,IAAI,MAAwB,IAAI;AACjD,aAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,YAAM,OAAO,QAAQ,CAAC;AACtB,UAAI,KAAK,SAAS;AAChB,YAAI,WAAW,IAAI,GAAG;AACpB,mBAAS,CAAC,IAAI;AAAA,QAChB,OAAO;AACL,gBAAM,CAAC,IAAI,MAAM,kBAAkB,KAAK,IAAI;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,UAAI,KAAK,UAAU;AACjB,cAAM,CAAC,IAAI,MAAM,kBAAkB,KAAK,SAAS,CAAC,CAAC;AAAA,MACrD;AAAA,IACF;AACA,WAAO,CAAC,eAAuB,OAAO,EAAE;AAAA,EAC1C;AACA,MAAI,mBAAmB,gBAAgB;AACrC,UAAM,UAAU,gBAAgB,OAAO;AACvC,UAAM,cAAc,UAChB,MAAM,oBAAoB,OAAO,IACjC;AACJ,UAAM,aAAa,MAAM,kBAAkB,KAAK,QAAQ,MAAqB;AAC7E,WAAO,CAAC,yBAAgC,CAAC,QAAQ,SAAS,aAAa,UAAU,GAAG,EAAE;AAAA,EACxF;AACA,MAAI,mBAAmB,OAAO;AAC5B,UAAM,UAAU,gBAAgB,OAAO;AACvC,UAAM,cAAc,UAChB,MAAM,oBAAoB,OAAO,IACjC;AACJ,WAAO;AAAA,MACL;AAAA,MACA,CAAC,oBAAoB,OAAO,GAAG,QAAQ,SAAS,WAAW;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,OAAO,GAAG;AACvB,WAAO,IAAI,SAAS,IAAI,iBAAiB,GAAG,6BAA6B;AACzE,UAAM,UAAU,mBAAmB,OAAO;AAC1C,WAAO,CAAC,mBAA0B;AAAA,MAChC,UACI,MAAM,oBAAoB,OAAO,IACjC;AAAA,MACJ,MAAM,kBAAkB,KAAK,MAAM,KAAK,OAAO,CAAC;AAAA,IAClD,GAAG,EAAE;AAAA,EACP;AACA,QAAM,QAAQ,QAAQ,eAAe;AACrC,MAAI,QAAQ,gBAAgB,UAAU,OAAO;AAC3C,WAAO;AAAA,MACL,QAAQ,0BAAkC;AAAA,MAC1C,MAAM,oBAAoB,OAAkC;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AACA,QAAM,IAAI,MAAM,mBAAmB;AACrC;AAEO,SAAS,mBACd,KACA,OACQ;AAER,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,OAAO;AACnB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,IAAI,SAAS,IAAI,QAAQ,GAAG,2BAA2B;AAC9D,WAAO,GAAG;AAAA,EACZ;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,MAAM,KAAK;AAAA,EACpB;AAEA,MAAI,OAAO,GAAG,OAAO,EAAE,GAAG;AACxB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,GAAG,OAAO,QAAQ,GAAG;AAC9B,WAAO;AAAA,EACT;AACA,MAAI,OAAO,GAAG,OAAO,SAAS,GAAG;AAC/B,WAAO;AAAA,EACT;AACA,SAAO,OAAO,KAAK;AACrB;AAEO,SAAS,cACd,KACA,CAAC,MAAM,OAAO,EAAE,GACR;AACR,WAAS,qBACP,WACA,CAAC,MAAM,QAAQ,IAAI,GACnB;AACA,QAAI,MAAM,KAAK,SAAS;AACxB,UAAM,kBAAgC,CAAC;AACvC,aAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,YAAM,cAAc,IAAI;AACxB,UAAI,QAAQ,CAAC;AACb,YAAM,WAAW,cAAc,KAAK,OAAO,CAAC,CAAC;AAC7C,UAAI,QAAQ;AACZ,YAAM,MAAM,KAAK,CAAC;AAClB,YAAM,QAAQ,OAAO,GAAG;AAGxB,YAAM,mBAAmB,IAAI;AAC7B,UAAI,cAAc;AAClB,UACE,SAAS,KACL,OAAO,MAAM,KAAK,KAAK,0BAA0B,KAAK,GAAG,GAC7D;AACA,YAAI,CAAC,OAAO,MAAM,KAAK,GAAG;AACxB,qCAA2B,KAAK,WAAW,KAAK,QAAQ;AAAA,QAC1D,OAAO;AACL,uCAA6B,KAAK,WAAW,KAAK,QAAQ;AAAA,QAC5D;AAAA,MACF,OAAO;AACL,mCAA2B,KAAK,WAAW,MAAM,GAAG,GAAG,QAAQ;AAAA,MACjE;AACA,UAAI,cAAc;AAAA,IACpB;AACA,QAAI,MAAM,IAAI;AACd,WAAO,mBAAmB,eAAe;AAAA,EAC3C;AACA,WAAS,gBACP,UACA,CAAC,MAAM,QAAQ,IAAI,GACnB;AACA,QAAI,SAAS;AACb,QAAI,MAAM,KAAK,QAAQ;AACvB,aAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,YAAM,MAAM,KAAK,CAAC;AAClB,YAAM,MAAM,OAAO,CAAC;AACpB,YAAM,QAAQ,OAAO,GAAG;AAGxB,UACE,SAAS,KACL,OAAO,MAAM,KAAK,KAAK,0BAA0B,KAAK,GAAG,GAC7D;AACA,YAAI,mBAAmB,KAAK,GAAG,GAAG;AAChC,gBAAM,WAAW,YAAY,KAAK,IAAI,CAAC,CAAC;AACxC,cAAI,CAAC,OAAO,MAAM,KAAK,GAAG;AACxB,uCAA2B,KAAK,UAAU,KAAK,QAAQ;AAAA,UACzD,OAAO;AACL,yCAA6B,KAAK,UAAU,KAAK,QAAQ;AAAA,UAC3D;AAAA,QACF,OAAO;AACL,oBAAU,GAAG,OAAO,cAAc,KAAK,GAAG;AAAA,QAC5C;AAAA,MACF,WAAW,mBAAmB,KAAK,GAAG,GAAG;AACvC,cAAM,WAAW,YAAY,KAAK,IAAI,CAAC,CAAC;AACxC,mCAA2B,KAAK,UAAU,MAAM,GAAG,GAAG,QAAQ;AAAA,MAChE,OAAO;AACL,kBAAU,GAAG,MAAM,GAAG,KAAK,cAAc,KAAK,GAAG;AAAA,MACnD;AAAA,IACF;AACA,QAAI,MAAM,IAAI;AACd,WAAO,IAAI,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC;AAAA,EAClD;AACA,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,mBAAmB,KAAK,KAAK;AAAA,IACtC,KAAK;AACH,aAAO,YAAY,KAAK,KAAK;AAAA,IAC/B,KAAK,iBAAyB;AAC5B,UAAI;AAEJ,UAAI,mBAAmB,KAAK,KAAK,GAAG;AAKlC,qBAAa,8BAA8B,YAAY,KAAK,MAAM,CAAC,CAAC;AAAA,MACtE,OAAO;AACL,YAAI,MAAM,KAAK,EAAE;AACjB,cAAM,SAAS,cAAc,KAAK,KAAK;AACvC,YAAI,MAAM,IAAI;AAEd,qBAAa,mBAAmB;AAAA,MAClC;AACA,aAAO,UAAU,KAAK,IAAI,UAAU;AAAA,IACtC;AAAA,IACA,KAAK;AACH,aAAO,UAAU,KAAK,IAAI,aAAa,MAAM,YAAY,KAAK;AAAA,IAChE,KAAK;AACH,aAAO,UAAU,KAAK,IAAI,OAAO,KAAK,CAAC;AAAA,IACzC,KAAK,qBAA4B;AAE/B,UAAI,SAAS;AACb,eAAS,IAAI,GAAG,MAAM,MAAM,CAAC,EAAE,QAAQ,IAAI,KAAK,KAAK;AACnD,kBAAU,GAAG,mBAAmB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;AAAA,MAClD;AACA,UAAI,OAAO,SAAS,IAAI,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC,OAAO;AACpE,UAAI,MAAM,CAAC,EAAE,eAAe,GAAG;AAC7B,gBAAQ,IAAI,MAAM,CAAC,EAAE;AAAA,MACvB;AACA,aAAO,UAAU,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,OAAO;AAAA,IACtD;AAAA,IACA,KAAK,aAAqB;AACxB,UAAI,aAAa;AACjB,YAAM,OAAO,MAAM;AACnB,UAAI,MAAM;AACR,YAAI,SAAS;AACb,YAAI,MAAM,KAAK,EAAE;AACjB,iBAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,gBAAM,OAAO,MAAM,CAAC;AACpB,cAAI,mBAAmB,KAAK,IAAI,GAAG;AACjC,yBAAa,KAAK,IAAI,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,UACjD,OAAO;AAEL,sBAAU,GAAG,cAAc,KAAK,IAAI;AAAA,UACtC;AAAA,QACF;AACA,YAAI,MAAM,IAAI;AACd,YAAI,QAAQ;AACV,wBAAc,KAAK,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC;AAAA,QAC1D;AAAA,MACF;AACA,aAAO,UAAU,KAAK,IAAI,UAAU;AAAA,IACtC;AAAA,IACA,KAAK,aAAqB;AACxB,UAAI,aAAa;AACjB,YAAM,OAAO,MAAM,CAAC;AACpB,UAAI,MAAM;AACR,YAAI,SAAS;AACb,YAAI,MAAM,KAAK,EAAE;AACjB,iBAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAE7B,gBAAM,MAAM,MAAM,CAAC,EAAE,CAAC;AACtB,gBAAM,MAAM,MAAM,CAAC,EAAE,CAAC;AACtB,cAAI,mBAAmB,KAAK,GAAG,GAAG;AAEhC,kBAAM,SAAS,YAAY,KAAK,IAAI,CAAC,CAAC;AAEtC,gBAAI,mBAAmB,KAAK,GAAG,GAAG;AAChC,oBAAM,WAAW,YAAY,KAAK,IAAI,CAAC,CAAC;AAIxC,2BAAa,KAAK,IAAI,QAAQ,QAAQ;AAAA,YACxC,OAAO;AAML,oBAAM,SAAS,IAAI;AACnB,kBAAI,QAAQ,CAAC;AACb,2BAAa,KAAK,IAAI,QAAQ,cAAc,KAAK,GAAG,CAAC;AACrD,kBAAI,QAAQ;AAAA,YACd;AAAA,UACF,WAAW,mBAAmB,KAAK,GAAG,GAAG;AAEvC,kBAAM,WAAW,YAAY,KAAK,IAAI,CAAC,CAAC;AAExC,kBAAM,SAAS,IAAI;AACnB,gBAAI,QAAQ,CAAC;AACb,yBAAa,KAAK,IAAI,cAAc,KAAK,GAAG,GAAG,QAAQ;AACvD,gBAAI,QAAQ;AAAA,UACd,OAAO;AACL,sBAAU,IAAI,cAAc,KAAK,GAAG,KAAK,cAAc,KAAK,GAAG;AAAA,UACjE;AAAA,QACF;AACA,YAAI,MAAM,IAAI;AAId,YAAI,QAAQ;AACV,wBAAc,KAAK,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC;AAAA,QAC1D;AAAA,MACF;AACA,aAAO,UAAU,KAAK,IAAI,UAAU;AAAA,IACtC;AAAA,IACA,KAAK,eAAuB;AAI1B,YAAM,OAAO,MAAM;AACnB,UAAI,SAAS;AACb,UAAI,MAAM,KAAK,EAAE;AACjB,eAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,cAAM,OAAO,MAAM,CAAC;AAEpB,YAAI,KAAK,OAAO;AAEd,cAAI,mBAAmB,KAAK,IAAI,GAAG;AACjC,8BAAkB,KAAK,IAAI,GAAG,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC;AACvD,sBAAU;AAAA,UACZ,OAAO;AACL,sBAAU,cAAc,KAAK,IAAI;AACjC,gBAAI,IAAI,OAAO,GAAG;AAChB,wBAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF,OAAO;AAEL,oBAAU;AAAA,QACZ;AAAA,MACF;AACA,UAAI,MAAM,IAAI;AACd,aAAO,UAAU,KAAK,IAAI,IAAI,SAAS;AAAA,IACzC;AAAA,IACA,KAAK,yBAAgC;AAEnC,UAAI,MAAM,KAAK,EAAE;AACjB,UAAI,aAAa,sBAAsB,cAAc,KAAK,MAAM,CAAC,CAAC,KAAK,MAAM,MAAM,CAAC,CAAC;AACrF,UAAI,MAAM,IAAI;AAId,UAAI,MAAM,CAAC,GAAG;AACZ,YAAI,IAAI,SAAS,IAAI,eAAe,GAAG;AACrC,gBAAM,UAAU,gBAAgB,IAAI,MAAM,CAAC,CAAC;AAC5C,uBAAa,iBAAiB,cAAc;AAAA,QAC9C,OAAO;AACL,kBAAQ,KAAK,EAAE;AACf,gBAAM,cAAc,qBAAqB,IAAI,MAAM,CAAC,CAAC;AACrD,cAAI,aAAa;AACf,kBAAM,MAAM,YAAY,KAAK,EAAE;AAC/B,mBAAO,IAAI,UAAU,KAAK,IAAI,UAAU,KAAK,cAAc;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AACA,aAAO,UAAU,KAAK,IAAI,UAAU;AAAA,IACtC;AAAA,IACA,KAAK,gBAAuB;AAC1B,UAAI,aAAa,OAAO,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,CAAC;AAClD,UAAI,MAAM,CAAC,GAAG;AACZ,YAAI,IAAI,SAAS,IAAI,eAAe,GAAG;AACrC,gBAAM,UAAU,gBAAgB,IAAI,MAAM,CAAC,CAAC;AAC5C,uBAAa,iBAAiB,cAAc;AAAA,QAC9C,OAAO;AACL,kBAAQ,KAAK,EAAE;AACf,gBAAM,cAAc,qBAAqB,IAAI,MAAM,CAAC,CAAC;AACrD,cAAI,aAAa;AACf,kBAAM,MAAM,YAAY,KAAK,EAAE;AAC/B,mBAAO,IAAI,UAAU,KAAK,IAAI,UAAU,KAAK,cAAc;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AACA,aAAO,UAAU,KAAK,IAAI,UAAU;AAAA,IACtC;AAAA,IACA,KAAK,mBAA0B;AAC7B,YAAM,SAAS,IAAI;AACnB,UAAI,QAAQ,CAAC;AACb,YAAM,SAAS,cAAc,KAAK,MAAM,CAAC,CAAC;AAC1C,UAAI,QAAQ;AACZ,UAAI;AACJ,UAAI,IAAI,SAAS,IAAI,cAAc,GAAG;AACpC,qBAAa,GAAG;AAAA,MAClB,OAAO;AACL,qBAAa,GAAG;AAAA,MAClB;AACA,UAAI,IAAI,SAAS,IAAI,gBAAgB,GAAG;AACtC,qBAAa,0BAA0B;AAAA,MACzC,WAAW,IAAI,SAAS,IAAI,kBAAkB,GAAG;AAC/C,qBAAa,+BAA+B;AAAA,MAC9C,OAAO;AACL,qBAAa,wCAAwC;AAAA,MACvD;AACA,UAAI,MAAM,CAAC,GAAG;AACZ,YAAI,IAAI,SAAS,IAAI,eAAe,GAAG;AACrC,gBAAM,UAAU,gBAAgB,IAAI,MAAM,CAAC,CAAC;AAC5C,uBAAa,iBAAiB,cAAc;AAAA,QAC9C,OAAO;AACL,kBAAQ,KAAK,EAAE;AACf,gBAAM,cAAc,qBAAqB,IAAI,MAAM,CAAC,CAAC;AACrD,cAAI,aAAa;AACf,kBAAM,MAAM,YAAY,KAAK,EAAE;AAC/B,mBAAO,IAAI,UAAU,KAAK,IAAI,UAAU,KAAK,cAAc;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AACA,aAAO,UAAU,KAAK,IAAI,UAAU;AAAA,IACtC;AAAA,IACA,KAAK,yBAAiC;AACpC,UAAI,aAAa;AACjB,UAAI,IAAI,SAAS,IAAI,eAAe,GAAG;AACrC,cAAM,SAAS,gBAAgB,IAAI,KAAK;AACxC,YAAI,WAAW,MAAM;AACnB,uBAAa,iBAAiB,cAAc;AAAA,QAC9C;AAAA,MACF,OAAO;AACL,gBAAQ,KAAK,EAAE;AACf,cAAM,cAAc,qBAAqB,IAAI,KAAK;AAClD,YAAI,aAAa;AACf,gBAAM,MAAM,YAAY,KAAK,EAAE;AAC/B,iBAAO,IAAI,UAAU,KAAK,IAAI,UAAU,KAAK,cAAc;AAAA,QAC7D;AAAA,MACF;AACA,aAAO,UAAU,KAAK,IAAI,UAAU;AAAA,IACtC;AAAA,IACA,KAAK;AACH,aAAO,UAAU,KAAK,IAAI,gBAAgB,IAAI,KAAK,CAAC;AAAA,IACtD;AACE,YAAM,IAAI,MAAM,kBAAkB;AAAA,EACtC;AACF;;;ANxnCA,SAAS,SACP,KACA,QACA,QACA;AAEA,MAAI,IAAI,KAAK,QAAQ;AACnB,UAAM,UAAU,eAAe,GAAG;AAClC,QAAI,OAAO;AACX,QAAI,SAAS;AAEX,YAAM,QAAQ,YAAY,KAAK,UAAU,KAAK,MAAM,CAAC;AACrD,UAAI,OAAO,WAAW,GAAG,QAAQ,GAAG;AAClC,eAAO,GAAG,UAAU,UAAU;AAAA,MAChC,OAAO;AACL,eAAO,GAAG,SAAS,UAAU,UAAU;AAAA,MACzC;AAAA,IACF;AACA,QAAI,SAAS,IAAI,KAAK,SAAS,IAC3B,IAAI,KAAK,KAAK,GAAG,IACjB,IAAI,KAAK,CAAC;AAEd,QAAI,IAAI,SAAS,IAAI,gBAAgB,GAAG;AACtC,eAAS,IAAI,KAAK,SAAS,KAAK,IAAI,KAAK,WAAW,IAChD,IAAI,YACJ;AACJ,aAAO,IAAI,YAAY;AAAA,IACzB;AACA,WAAO,aAAa,kBAAkB;AAAA,EACxC;AACA,MAAI,OAAO,gBAAgB,QAAQ;AACjC,WAAO,IAAI;AAAA,EACb;AACA,SAAO;AACT;AAEO,SAAS,UACd,QACA,SACA;AACA,QAAM,MAAM,2BAA2B,OAAO;AAC9C,MAAI,YAAY,MAAM,GAAG;AACvB,WAAO,mBAAmB,KAAK,MAAM;AAAA,EACvC;AACA,QAAM,OAAO,iBAAiB,KAAK,MAAM;AACzC,QAAM,SAAS,cAAc,KAAK,IAAI;AACtC,SAAO,SAAS,KAAK,QAAQ,MAAM;AACrC;AAEA,eAAsB,eACpB,QACA,SACA;AACA,QAAM,MAAM,2BAA2B,OAAO;AAC9C,MAAI,YAAY,MAAM,GAAG;AACvB,WAAO,mBAAmB,KAAK,MAAM;AAAA,EACvC;AACA,QAAM,OAAO,MAAM,kBAAkB,KAAK,MAAM;AAChD,QAAM,SAAS,cAAc,KAAK,IAAI;AACtC,SAAO,SAAS,KAAK,QAAQ,MAAM;AACrC;AAEO,SAAS,YAAwC,QAAmB;AAEzE,UAAQ,GAAG,MAAM,MAAM;AACzB;AAEA,IAAO,cAAQ;",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`:g="\\n";break;case"\r":g="\\r";break;case"\u2028":g="\\u2028";break;case"\u2029":g="\\u2029";break;default:continue}t+=e.slice(s,i)+g,s=i+1}return s===0?t=e:t+=e.slice(s),`"${t}"`}function b(e){return e===!0?"!0":e===!1?"!1":e===void 0?"void 0":e===null?"null":Object.is(e,-0)?"-0":typeof e=="bigint"?`BigInt("${e}")`:typeof e=="string"?y(e):e.constructor===Date?`new Date("${e.toISOString()}")`:String(e)}async function P(e,t){if(!h(t)){if(N(t))v(e,t)&&await t.then(s=>P(e,s));else if(Array.isArray(t)){if(v(e,t))for(let s of t)await P(e,s)}else if($(t,Set)){if(v(e,t))for(let s of t.keys())await P(e,s)}else if($(t,Map)){if(v(e,t))for(let[s,i]of t.entries())await P(e,s),await P(e,i)}else if((t.constructor===Object||t.constructor==null)&&v(e,t))for(let s of Object.values(t))await P(e,s)}}async function d(e,t){if(h(t))return b(t);let s=e.refs.get(t);if(s!=null){if(e.assignedRefs.has(s))return l(e,s);e.assignedRefs.add(s)}function i(){return s==null&&(s=u(e,t)),s}function o(n){return s!=null?T(e,s,n):n}if(N(t))return t.then(async n=>{e.stack.add(t);let r;return e.stack.has(n)?r=`Promise.resolve().then(()=>${l(e,u(e,n))})`:r=`Promise.resolve(${await d(e,n)})`,e.stack.delete(t),o(r)});if($(t,Set)){if(t.size){let n=[];e.stack.add(t);for(let r of t.keys())e.stack.has(r)?j(e,i(),l(e,u(e,r))):n.push(await d(e,r));return e.stack.delete(t),o(n.length?`new Set([${S(n,",")}])`:w)}return w}if($(t,Map)){if(t.size){let n=[];e.stack.add(t);for(let[r,a]of t.entries())if(e.stack.has(r)){let f=i(),m=l(e,u(e,r));if(e.stack.has(a)){let p=l(e,u(e,a));R(e,f,m,p)}else{let p=await d(e,a);R(e,f,m,p)}}else if(e.stack.has(a)){let f=l(e,u(e,a)),m=await d(e,r);R(e,i(),m,f)}else{let f=await d(e,r),m=await d(e,a);n.push(`[${f},${m}]`)}return e.stack.delete(t),o(n.length?`new Map([${S(n,",")}])`:c)}return c}if(Array.isArray(t)){if(t.length){let n="";e.stack.add(t);for(let r=0,a=t.length;r<a;r+=1)if(r in t){let f=t[r];if(e.stack.has(f)){let m=l(e,u(e,f));E(e,i(),r,m),n+=","}else n+=await d(e,f),r<t.length-1&&(n+=",")}else n+=",";return e.stack.delete(t),o(`[${n}]`)}return M}let g=t.constructor==null;if(t.constructor===Object||g){let n=[];e.stack.add(t);for(let[a,f]of Object.entries(t)){let m=Number(a);if(m>=0||Number.isNaN(m)&&/^([$A-Z_][0-9A-Z_$]*)$/i.test(a))if(e.stack.has(f)){let p=i(),V=l(e,u(e,f));Number.isNaN(m)?O(e,p,a,V):z(e,p,a,V)}else{let p=await d(e,f);n.push(`${a}:${p}`)}else if(e.stack.has(f)){let p=l(e,u(e,f));z(e,i(),y(a),p)}else{let p=await d(e,f);n.push(`${y(a)}:${p}`)}}e.stack.delete(t);let r=`{${S(n,",")}}`;return o(g?`Object.assign(Object.create(null),${r})`:r)}throw new Error("Unserializable value")}function C(e,t){if(!h(t))if(Array.isArray(t))v(e,t)&&A(t,s=>{C(e,s)});else if($(t,Set)){if(v(e,t))for(let s of t.keys())C(e,s)}else if($(t,Map)){if(v(e,t))for(let[s,i]of t.entries())C(e,s),C(e,i)}else(t.constructor===Object||t.constructor==null)&&v(e,t)&&A(Object.values(t),s=>{C(e,s)})}function k(e,t){if(h(t))return b(t);let s=e.refs.get(t);if(s!=null){if(e.assignedRefs.has(s))return l(e,s);e.assignedRefs.add(s)}function i(){return s==null&&(s=u(e,t)),s}function o(n){return s!=null?T(e,s,n):n}if($(t,Set)){if(t.size){let n=[];e.stack.add(t);for(let r of t.keys())e.stack.has(r)?j(e,i(),l(e,u(e,r))):n.push(k(e,r));return e.stack.delete(t),o(n.length?`new Set([${S(n,",")}])`:w)}return w}if($(t,Map)){if(t.size){let n=[];e.stack.add(t);for(let[r,a]of t.entries())if(e.stack.has(r)){let f=i(),m=l(e,u(e,r));if(e.stack.has(a)){let p=l(e,u(e,a));R(e,f,m,p)}else R(e,f,m,k(e,a))}else if(e.stack.has(a)){let f=l(e,u(e,a));R(e,i(),k(e,r),f)}else n.push(`[${k(e,r)},${k(e,a)}]`);return e.stack.delete(t),o(n.length?`new Map([${S(n,",")}])`:c)}return c}if(Array.isArray(t)){if(t.length){let n="";return e.stack.add(t),A(t,(r,a)=>{if(a in t)if(e.stack.has(r)){let f=l(e,u(e,r));E(e,i(),a,f),n+=","}else n+=k(e,r),a<t.length-1&&(n+=",");else n+=","}),e.stack.delete(t),o(`[${n}]`)}return M}let g=t.constructor==null;if(t.constructor===Object||g){let n=[];e.stack.add(t),A(Object.entries(t),([a,f])=>{let m=Number(a);if(m>=0||Number.isNaN(m)&&/^([$A-Z_][0-9A-Z_$]*)$/i.test(a))if(e.stack.has(f)){let p=i(),V=l(e,u(e,f));Number.isNaN(m)?O(e,p,a,V):z(e,p,a,V)}else n.push(`${a}:${k(e,f)}`);else if(e.stack.has(f)){let p=l(e,u(e,f));z(e,i(),y(a),p)}else n.push(`${y(a)}:${k(e,f)}`)}),e.stack.delete(t);let r=`{${S(n,",")}}`;return o(g?`Object.assign(Object.create(null),${r})`:r)}throw new Error("Unserializable value")}function L(e,t,s){if(e.vars.length){let i=l(e,u(e,t)),o=D(e),g=e.vars.length>1?`(${S(e.vars,",")})`:e.vars[0];return s.startsWith(`${i}=`)?`(${g}=>(${s},${o}${i}))()`:`(${g}=>(${i}=${s},${o}${i}))()`}return t.constructor===Object?`(${s})`:s}function B(e){if(h(e))return b(e);let t=I();C(t,e);for(let[i,o]of t.refCount.entries())o>1&&u(t,i);let s=k(t,e);if(typeof s!="string")throw new Error("Unreachable error");return L(t,e,s)}async function se(e){if(h(e))return b(e);let t=I();await P(t,e);for(let[i,o]of t.refCount.entries())o>1&&u(t,i);let s=await d(t,e);if(typeof s!="string")throw new Error("Unreachable error");return L(t,e,s)}function ie(e){return(0,eval)(e)}var ne=B;
|
|
1
|
+
"use strict";var C=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var oe=Object.getOwnPropertyNames;var te=Object.prototype.hasOwnProperty;var se=(e,r)=>{for(var n in r)C(e,n,{get:r[n],enumerable:!0})},ae=(e,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let l of oe(r))!te.call(e,l)&&l!==n&&C(e,l,{get:()=>r[l],enumerable:!(o=ne(r,l))||o.enumerable});return e};var ie=e=>ae(C({},"__esModule",{value:!0}),e);var he={};se(he,{default:()=>Ne,deserialize:()=>Ae,serialize:()=>ee,serializeAsync:()=>ce});module.exports=ie(he);function P(e){if(!e||e===!0)return!0;let r=typeof e;return r==="number"||r==="string"||r==="bigint"}function M(e){return!!e&&(typeof e=="object"||typeof e=="function")&&"then"in e&&typeof e.then=="function"}function S(e,r){return e.constructor===r}function le(e){return Array.isArray(e)||S(e,Set)||S(e,Map)}function h(e){return!!e&&typeof e=="object"&&!le(e)&&Symbol.iterator in e&&typeof e[Symbol.iterator]=="function"}function V(e){let r="",n=0;for(let o=0,l=e.length;o<l;o++){let y;switch(e[o]){case'"':y='\\"';break;case"\\":y="\\\\";break;case"<":y="\\x3C";break;case`
|
|
2
|
+
`:y="\\n";break;case"\r":y="\\r";break;case"\u2028":y="\\u2028";break;case"\u2029":y="\\u2029";break;default:continue}r+=e.slice(n,o)+y,n=o+1}return n===0?r=e:r+=e.slice(n),`"${r}"`}var B="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",D=B.length,L="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",_=L.length;function I(e){let r=e%D,n=B[r];for(e=(e-r)/D;e>0;)r=e%_,n+=L[r],e=(e-r)/_;return n}function m(e,r){if(!e)throw new Error(r)}function fe(e,r){let n=e[0]-r[0];return n===0&&(n=e[1]-r[1]),n===0&&(n=e[2]-r[2]),n}var K={"aggregate-error":{es:[2021,0,0],chrome:[85,0,0],edge:[85,0,0],firefox:[79,0,0],opera:[71,0,0],safari:[14,0,0],ios:[14,0,0],samsung:[14,0,0],deno:[1,2,0],node:[15,0,0]},"array-values":{es:[6,0,0],chrome:[66,0,0],edge:[14,0,0],firefox:[60,0,0],opera:[53,0,0],safari:[9,0,0],ios:[9,0,0],samsung:[9,0,0],deno:[1,0,0],node:[10,9,0]},"arrow-function":{es:[6,0,0],chrome:[45,0,0],edge:[12,0,0],firefox:[24,0,0],opera:[32,0,0],safari:[10,0,0],ios:[10,0,0],samsung:[5,0,0],deno:[1,0,0],node:[4,0,0]},bigint:{es:[2020,0,0],chrome:[67,0,0],edge:[79,0,0],firefox:[68,0,0],opera:[54,0,0],safari:[14,0,0],ios:[14,0,0],samsung:[9,0,0],deno:[1,0,0],node:[10,4,0]},map:{es:[6,0,0],chrome:[38,0,0],edge:[12,0,0],firefox:[13,0,0],opera:[25,0,0],safari:[8,0,0],ios:[8,0,0],samsung:[3,0,0],deno:[1,0,0],node:[0,12,0]},"method-shorthand":{es:[6,0,0],chrome:[39,0,0],edge:[12,0,0],firefox:[34,0,0],opera:[26,0,0],safari:[9,0,0],ios:[9,0,0],samsung:[4,0,0],deno:[1,0,0],node:[4,0,0]},"object-assign":{es:[6,0,0],chrome:[45,0,0],edge:[12,0,0],firefox:[34,0,0],opera:[32,0,0],safari:[9,0,0],ios:[9,0,0],samsung:[5,0,0],deno:[1,0,0],node:[4,0,0]},promise:{es:[6,0,0],chrome:[32,0,0],edge:[12,0,0],firefox:[29,0,0],opera:[19,0,0],safari:[8,0,0],ios:[8,0,0],samsung:[2,0,0],deno:[1,0,0],node:[0,12,0]},set:{es:[6,0,0],chrome:[38,0,0],edge:[12,0,0],firefox:[13,0,0],opera:[25,0,0],safari:[8,0,0],ios:[8,0,0],samsung:[3,0,0],deno:[1,0,0],node:[0,12,0]},"symbol-iterator":{es:[6,0,0],chrome:[43,0,0],edge:[12,0,0],firefox:[36,0,0],opera:[30,0,0],safari:[10,0,0],ios:[10,0,0],samsung:[4,0,0],deno:[1,0,0],node:[0,12,0]},"typed-arrays":{es:[6,0,0],chrome:[7,0,0],edge:[12,0,0],firefox:[4,0,0],opera:[11,6,0],safari:[5,1,0],ios:[4,2,0],samsung:[1,0,0],deno:[1,0,0],node:[0,10,0]}},ue=/^(es|chrome|edge|safari|firefox|opera|ios|samsung|deno|node)([0-9]+(\.[0-9]+(\.[0-9]+)?)?)$/i;function H(e){let r=ue.exec(e);m(r,`Invalid target "${e}"`);let[,n,o]=r,[l,y="0",t="0"]=o.split(".");return[n,[Number(l),Number(y),Number(t)]]}function pe(e){if(Array.isArray(e)){let r=[];for(let n of e)r.push(H(n));return r}return[H(e)]}function ye(e,r){let n=K[e],o=!0;for(let[l,y]of r){let t=n[l];o=o&&!!t&&fe(t,y)<=0}return o}function Z(e){let r=pe(e),n=new Set;for(let o in K)ye(o,r)&&n.add(o);return n}var de={target:"es2023"};function O(e={}){let r=Object.assign({},de,e||{});return{markedRefs:[],stack:[],refs:new Map,vars:[],assignments:[],validRefs:new Map,features:Z(r.target)}}function z(e){switch(e.type){case"index":return`${e.source}=${e.value}`;case"map":return`${e.source}.set(${e.key},${e.value})`;case"set":return`${e.source}.add(${e.value})`;default:return""}}function me(e){let r=[],n=e[0],o=n;for(let l=1,y=e.length;l<y;l++){let t=e[l];t.type===o.type?t.type==="index"&&t.value===o.value?n={type:"index",source:t.source,value:z(n)}:t.type==="map"&&t.source===o.source?n={type:"map",source:z(n),key:t.key,value:t.value}:t.type==="set"&&t.source===o.source?n={type:"set",source:z(n),value:t.value}:(r.push(n),n=t):(r.push(n),n=t),o=t}return r.push(n),r}function G(e){if(e.length){let r="",n=me(e);for(let o=0,l=n.length;o<l;o++)r+=`${z(n[o])},`;return r}}function W(e){return G(e.assignments)}function b(e,r){e.markedRefs[r]=!0}function X(e,r){let n=e.refs.get(r);if(n!=null)return n;let o=e.refs.size;return e.refs.set(r,o),o}function ge(e,r){let n=e.validRefs.get(r);if(n!=null)return n;let o=e.validRefs.size;return e.validRefs.set(r,o),o}function g(e,r){let n=ge(e,r);if(e.vars[n])return e.vars[n];let o=I(n);return e.vars[n]=o,o}function v(e,r,n){return e.markedRefs[r]?`${g(e,r)}=${n}`:n}function j(e,r,n){e.assignments.push({type:"index",source:r,value:n})}function Se(e,r,n){b(e,r),e.assignments.push({type:"set",source:g(e,r),value:n})}function U(e,r,n,o){b(e,r),e.assignments.push({type:"map",source:g(e,r),key:n,value:o})}function ve(e,r,n,o){b(e,r),j(e,`${g(e,r)}[${n}]`,o)}function q(e,r,n,o){b(e,r),j(e,`${g(e,r)}.${n}`,o)}function E(e,r,n,o){b(e,r),j(e,`${g(e,r)}[${n}]`,o)}function F(e){return e instanceof EvalError?"EvalError":e instanceof RangeError?"RangeError":e instanceof ReferenceError?"ReferenceError":e instanceof SyntaxError?"SyntaxError":e instanceof TypeError?"TypeError":e instanceof URIError?"URIError":"Error"}function R(e){let r,n=F(e);e.name!==n?r={name:e.name}:e.constructor.name!==n&&(r={name:e.constructor.name});let o=Object.getOwnPropertyNames(e);for(let l of o)l!=="name"&&l!=="message"&&(r=r||{},r[l]=e[l]);return r}function J(e){let r=Object.getOwnPropertyNames(e);if(r.length){let n={};for(let o of r)n[o]=e[o];return n}}function $(e,r){return r[0]===1&&e.stack.includes(r[1])}function Q(e,r){if(e.refs.has(r)){let l=e.refs.get(r)||0;return b(e,l),[1,l]}let o=e.refs.size;return e.refs.set(r,o),o}function Y(e,r,n){if(S(r,Date))return[2,r,n];if(S(r,RegExp))return[3,r,n];if(S(r,Int8Array))return m(e.features.has("typed-arrays"),'Unsupported value type "Int8Array"'),[13,["Int8Array",r],n];if(S(r,Int16Array))return m(e.features.has("typed-arrays"),'Unsupported value type "Int16Array"'),[13,["Int16Array",r],n];if(S(r,Int32Array))return m(e.features.has("typed-arrays"),'Unsupported value type "Int32Array"'),[13,["Int32Array",r],n];if(S(r,Uint8Array))return m(e.features.has("typed-arrays"),'Unsupported value type "Uint8Array"'),[13,["Uint8Array",r],n];if(S(r,Uint16Array))return m(e.features.has("typed-arrays"),'Unsupported value type "Uint16Array"'),[13,["Uint16Array",r],n];if(S(r,Uint32Array))return m(e.features.has("typed-arrays"),'Unsupported value type "Uint32Array"'),[13,["Uint32Array",r],n];if(S(r,Uint8ClampedArray))return m(e.features.has("typed-arrays"),'Unsupported value type "Uint8ClampedArray"'),[13,["Uint8ClampedArray",r],n];if(S(r,Float32Array))return m(e.features.has("typed-arrays"),'Unsupported value type "Float32Array"'),[13,["Float32Array",r],n];if(S(r,Float64Array))return m(e.features.has("typed-arrays"),'Unsupported value type "Float64Array"'),[13,["Float64Array",r],n];if(S(r,BigInt64Array))return m(e.features.has("typed-arrays")&&e.features.has("bigint"),'Unsupported value type "BigInt64Array"'),[13,["BigInt64Array",r],n];if(S(r,BigUint64Array))return m(e.features.has("typed-arrays")&&e.features.has("bigint"),'Unsupported value type "BigUint64Array"'),[13,["BigUint64Array",r],n]}function N(e,r){function n(t){let a=[],s=[],i=[],p=[],f=Object.keys(t),d=0;for(let u of f)h(t[u])?(i.push(u),p.push(t[u]),d++):(a.push(u),s.push(N(e,t[u])));for(let u=0;u<d;u++)a.push(i[u]),s.push(N(e,p[u]));return[a,s,f.length]}if(P(r))return[0,r];let o=Q(e,r);if(Array.isArray(o))return o;let l=Y(e,r,o);if(l)return l;if(S(r,Set)){m(e.features.has("set"),'Unsupported type "Set"');let t=[],a=[];for(let s of r.keys())h(s)?a.push(s):t.push(N(e,s));for(let s=0,i=a.length;s<i;s++)t.push(N(e,a[s]));return[4,t,o]}if(S(r,Map)){m(e.features.has("map"),'Unsupported type "Map"');let t=[],a=[],s=[],i=[],p=0;for(let[f,d]of r.entries())h(f)||h(d)?(s.push(f),i.push(d),p++):(t.push(N(e,f)),a.push(N(e,d)));for(let f=0;f<p;f++)t.push(N(e,s[f])),a.push(N(e,i[f]));return[5,[t,a,r.size],o]}if(Array.isArray(r)){let t=r.length,a=new Array(t),s=new Array(t);for(let i=0;i<t;i++)i in r&&(h(r[i])?s[i]=r[i]:a[i]=N(e,r[i]));for(let i=0;i<t;i++)i in s&&(a[i]=N(e,s[i]));return[6,a,o]}if(r instanceof AggregateError&&e.features.has("aggregate-error")){let t=R(r),a=t?n(t):void 0,s=N(e,r.errors);return[11,[r.message,a,s],o]}if(r instanceof Error){let t=R(r),a=t?n(t):void 0;return[10,[F(r),r.message,a],o]}if(h(r)){m(e.features.has("symbol-iterator"),'Unsupported type "Iterable"');let t=J(r);return[12,[t?n(t):void 0,N(e,Array.from(r))],o]}let y=r.constructor==null;if(r.constructor===Object||y)return[y?8:7,n(r),o];throw new Error("Unsupported value")}async function c(e,r){async function n(t){let a=[],s=[],i=[],p=[],f=Object.keys(t),d=0;for(let u of f)h(t[u])?(i.push(u),p.push(t[u]),d++):(a.push(u),s.push(await c(e,t[u])));for(let u=0;u<d;u++)a.push(i[u]),s.push(await c(e,p[u]));return[a,s,f.length]}if(P(r))return[0,r];let o=Q(e,r);if(Array.isArray(o))return o;let l=Y(e,r,o);if(l)return l;if(M(r))return m(e.features.has("promise"),'Unsupported type "Promise"'),r.then(async t=>[9,await c(e,t),o]);if(S(r,Set)){m(e.features.has("set"),'Unsupported type "Set"');let t=[],a=[];for(let s of r.keys())h(s)?a.push(s):t.push(await c(e,s));for(let s=0,i=a.length;s<i;s++)t.push(await c(e,a[s]));return[4,t,o]}if(S(r,Map)){m(e.features.has("map"),'Unsupported type "Map"');let t=[],a=[],s=[],i=[],p=0;for(let[f,d]of r.entries())h(f)||h(d)?(s.push(f),i.push(d),p++):(t.push(await c(e,f)),a.push(await c(e,d)));for(let f=0;f<p;f++)t.push(await c(e,s[f])),a.push(await c(e,i[f]));return[5,[t,a,r.size],o]}if(Array.isArray(r)){let t=r.length,a=new Array(t),s=new Array(t);for(let i=0;i<t;i++){let p=r[i];i in r&&(h(p)?s[i]=p:a[i]=await c(e,p))}for(let i=0;i<t;i++)i in s&&(a[i]=await c(e,s[i]));return[6,a,o]}if(r instanceof AggregateError){let t=R(r),a=t?await n(t):void 0,s=await c(e,r.errors);return[11,[r.message,a,s],o]}if(r instanceof Error){let t=R(r),a=t?await n(t):void 0;return[10,[F(r),r.message,a],o]}if(h(r)){m(e.features.has("symbol-iterator"),'Unsupported type "Iterable"');let t=J(r);return[12,[t?await n(t):void 0,await c(e,Array.from(r))],o]}let y=r.constructor==null;if(r.constructor===Object||y)return[y?8:7,await n(r),o];throw new Error("Unsupported value")}function w(e,r){return r===!0?"!0":r===!1?"!1":r===void 0?"void 0":r===null?"null":typeof r=="bigint"?(m(e.features.has("bigint"),'Unsupported type "BigInt"'),`${r}n`):typeof r=="string"?V(r):Object.is(r,-0)?"-0":Object.is(r,1/0)?"1/0":Object.is(r,-1/0)?"-1/0":String(r)}function A(e,[r,n,o]){function l(t,[a,s,i]){e.stack.push(t);let p=[];for(let f=0;f<i;f++){let d=e.stack;e.stack=[];let u=A(e,s[f]);e.stack=d;let k=a[f],T=Number(k),re=e.assignments;e.assignments=p,T>=0||Number.isNaN(T)&&/^([$A-Z_][0-9A-Z_$]*)$/i.test(k)?Number.isNaN(T)?q(e,t,k,u):E(e,t,k,u):E(e,t,V(k),u),e.assignments=re}return e.stack.pop(),G(p)}function y(t,[a,s,i]){let p="";e.stack.push(t);for(let f=0;f<i;f++){let d=a[f],u=s[f],k=Number(d);if(k>=0||Number.isNaN(k)&&/^([$A-Z_][0-9A-Z_$]*)$/i.test(d))if($(e,u)){let T=g(e,u[1]);Number.isNaN(k)?q(e,t,d,T):E(e,t,d,T)}else p+=`${d}:${A(e,u)},`;else if($(e,u)){let T=g(e,u[1]);E(e,t,V(d),T)}else p+=`${V(d)}:${A(e,u)},`}return e.stack.pop(),`{${p.substring(0,p.length-1)}}`}switch(r){case 0:return w(e,n);case 1:return g(e,n);case 9:{let t;if($(e,n))t=`Promise.resolve().then(()=>${g(e,n[1])})`;else{e.stack.push(o);let a=A(e,n);e.stack.pop(),t=`Promise.resolve(${a})`}return v(e,o,t)}case 2:return v(e,o,`new Date("${n.toISOString()}")`);case 3:return v(e,o,String(n));case 13:{let t="";for(let s=0,i=n[1].length;s<i;s++)t+=`${w(e,n[1][s])},`;let a=t?`[${t.substring(0,t.length-1)}]`:"[]";return n[1].byteOffset!==0&&(a+=`,${n[1].byteOffset}`),v(e,o,`new ${n[0]}(${a})`)}case 4:{let t="new Set",a=n.length;if(a){let s="";e.stack.push(o);for(let i=0;i<a;i++){let p=n[i];$(e,p)?Se(e,o,g(e,p[1])):s+=`${A(e,p)},`}e.stack.pop(),s&&(t+=`([${s.substring(0,s.length-1)}])`)}return v(e,o,t)}case 5:{let t="new Map",a=n[2];if(a){let s="";e.stack.push(o);for(let i=0;i<a;i++){let p=n[0][i],f=n[1][i];if($(e,p)){let d=g(e,p[1]);if($(e,f)){let u=g(e,f[1]);U(e,o,d,u)}else{let u=e.stack;e.stack=[],U(e,o,d,A(e,f)),e.stack=u}}else if($(e,f)){let d=g(e,f[1]),u=e.stack;e.stack=[],U(e,o,A(e,p),d),e.stack=u}else s+=`[${A(e,p)},${A(e,f)}],`}e.stack.pop(),s&&(t+=`([${s.substring(0,s.length-1)}])`)}return v(e,o,t)}case 6:{let t=n.length,a="";e.stack.push(o);for(let s=0;s<t;s++){let i=n[s];s in n?$(e,i)?(ve(e,o,s,g(e,i[1])),a+=","):(a+=A(e,i),s<t-1&&(a+=",")):a+=","}return e.stack.pop(),v(e,o,`[${a}]`)}case 11:{e.stack.push(o);let t=`new AggregateError(${A(e,n[2])},${V(n[0])})`;if(e.stack.pop(),n[1])if(e.features.has("object-assign")){let a=y(o,n[1]);t=`Object.assign(${t},${a})`}else{b(e,o);let a=l(o,n[1]);if(a){let s=g(e,o);return`(${v(e,o,t)},${a}${s})`}}return v(e,o,t)}case 10:{let t=`new ${n[0]}(${V(n[1])})`;if(n[2])if(e.features.has("object-assign")){let a=y(o,n[2]);t=`Object.assign(${t},${a})`}else{b(e,o);let a=l(o,n[2]);if(a){let s=g(e,o);return`(${v(e,o,t)},${a}${s})`}}return v(e,o,t)}case 12:{let t=e.stack;e.stack=[];let a=A(e,n[1]);e.stack=t;let s;if(e.features.has("array-values")?s=`${a}.values()`:s=`${a}[Symbol.iterator]()`,e.features.has("arrow-function")?s=`{[Symbol.iterator]:()=>${s}}`:e.features.has("method-shorthand")?s=`{[Symbol.iterator](){return ${s}}}`:s=`{[Symbol.iterator]:function(){return ${s}}}`,n[0])if(e.features.has("object-assign")){let i=y(o,n[0]);s=`Object.assign(${s},${i})`}else{b(e,o);let i=l(o,n[0]);if(i){let p=g(e,o);return`(${v(e,o,s)},${i}${p})`}}return v(e,o,s)}case 8:{let t="Object.create(null)";if(e.features.has("object-assign")){let a=y(o,n);a!=="{}"&&(t=`Object.assign(${t},${a})`)}else{b(e,o);let a=l(o,n);if(a){let s=g(e,o);return`(${v(e,o,t)},${a}${s})`}}return v(e,o,t)}case 7:return v(e,o,y(o,n));default:throw new Error("Unsupported type")}}function x(e,r,n){if(e.vars.length){let o=W(e),l=n;if(o){let t=g(e,X(e,r));n.startsWith(`${t}=`)?l=`${n},${o}${t}`:l=`${t}=${n},${o}${t}`}let y=e.vars.length>1?e.vars.join(","):e.vars[0];return e.features.has("arrow-function")?(y=e.vars.length>1||e.vars.length===0?`(${y})`:y,`(${y}=>(${l}))()`):`(function(${y}){return ${l}})()`}return r.constructor===Object?`(${n})`:n}function ee(e,r){let n=O(r);if(P(e))return w(n,e);let o=N(n,e),l=A(n,o);return x(n,e,l)}async function ce(e,r){let n=O(r);if(P(e))return w(n,e);let o=await c(n,e),l=A(n,o);return x(n,e,l)}function Ae(e){return(0,eval)(e)}var Ne=ee;
|