seroval 0.1.0 → 0.2.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/LICENSE +1 -1
- package/README.md +35 -4
- package/dist/cjs/development/index.cjs +423 -255
- package/dist/cjs/development/index.cjs.map +4 -4
- package/dist/cjs/production/index.cjs +2 -2
- package/dist/esm/development/index.mjs +423 -255
- package/dist/esm/development/index.mjs.map +4 -4
- package/dist/esm/production/index.mjs +2 -2
- package/dist/types/async.d.ts +4 -0
- package/dist/types/context.d.ts +33 -0
- package/dist/types/index.d.ts +6 -5
- package/dist/types/is-primitive.d.ts +2 -0
- package/dist/types/is-promise.d.ts +1 -0
- package/dist/types/serialize-primitive.d.ts +2 -0
- package/dist/types/sync.d.ts +4 -0
- package/dist/types/types.d.ts +9 -0
- package/package.json +2 -2
- package/src/async.ts +229 -0
- package/src/context.ts +200 -0
- package/src/get-identifier.ts +1 -0
- package/src/index.ts +69 -453
- package/src/is-primitive.ts +14 -0
- package/src/is-promise.ts +6 -0
- package/src/serialize-primitive.ts +32 -0
- package/src/sync.ts +199 -0
- package/src/types.ts +32 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/index.ts", "../../../src/array.ts", "../../../src/get-identifier.ts", "../../../src/quote.ts"],
|
|
4
|
-
"sourcesContent": ["import { forEach, join } from './array';\nimport getIdentifier from './get-identifier';\nimport quote from './quote';\n\nconst EMPTY_SET = 'new Set';\nconst EMPTY_MAP = 'new Map';\nconst EMPTY_ARRAY = '[]';\n\n// Values that are non-recursive\nexport type PrimitiveValue =\n | boolean\n | string\n | number\n | undefined\n | null\n | bigint\n | Date\n | RegExp;\n\nexport type ServerValue =\n | PrimitiveValue\n | Array<ServerValue>\n | { [key: string | number]: ServerValue }\n | Set<ServerValue>\n | Map<ServerValue, ServerValue>;\n\n// Reference counter\nconst REF_COUNT = new Map<ServerValue, number>();\n\nconst STACK = new Set();\n\n// Value-to-ref map\nconst REFS = new Map<ServerValue, number>();\n\n// Set to check if ref id already has an assigned value\nconst ASSIGNED_REFS = new Set<number>();\n\n// Variables\nlet VARS: string[] = [];\n\n// Array of assignments to be done (used for recursion)\ntype Assignment = [source: string, value: string];\nlet ASSIGNMENTS: Assignment[] = [];\n\n// Array of Map.prototype.set calls\ntype MapSet = [source: string, key: string, value: string];\nlet MAP_SETS: MapSet[] = [];\n\n// Array of Set.prototype.add calls\ntype SetAdd = [source: string, value: string];\nlet SET_ADDS: SetAdd[] = [];\n\nfunction reset() {\n ASSIGNMENTS = [];\n MAP_SETS = [];\n SET_ADDS = [];\n VARS = [];\n REF_COUNT.clear();\n REFS.clear();\n ASSIGNED_REFS.clear();\n}\n\nfunction resolveAssignments() {\n if (ASSIGNMENTS.length) {\n const result: Record<string, string> = {};\n\n // Merge all assignments with similar source\n forEach(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\nfunction resolveMapSets() {\n if (MAP_SETS.length) {\n const result: Record<string, string> = {};\n\n // Merge all assignments with similar source\n forEach(MAP_SETS, ([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\nfunction resolveSetAdds() {\n if (SET_ADDS.length) {\n const result: Record<string, string> = {};\n\n // Merge all assignments with similar source\n forEach(SET_ADDS, ([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\nfunction resolvePatches() {\n return `${resolveAssignments()}${resolveMapSets()}${resolveSetAdds()}`;\n}\n\nfunction insertRef(current: ServerValue) {\n const count = REF_COUNT.get(current) || 0;\n REF_COUNT.set(current, count + 1);\n return count === 0;\n}\n\nfunction constructorCheck<T extends NonNullable<ServerValue>>(\n value: NonNullable<ServerValue>,\n constructor: unknown,\n): value is T {\n return value.constructor === constructor;\n}\n\nfunction isPrimitive(current: ServerValue): 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\nfunction lookupRefs(current: ServerValue) {\n if (isPrimitive(current)) {\n return;\n }\n if (Array.isArray(current)) {\n if (insertRef(current)) {\n forEach(current, lookupRefs);\n }\n } else if (constructorCheck<Set<ServerValue>>(current, Set)) {\n if (insertRef(current)) {\n for (const item of current.keys()) {\n lookupRefs(item);\n }\n }\n } else if (constructorCheck<Map<ServerValue, ServerValue>>(current, Map)) {\n if (insertRef(current)) {\n for (const [key, value] of current.entries()) {\n lookupRefs(key);\n lookupRefs(value);\n }\n }\n } else if (current.constructor === Object && insertRef(current)) {\n forEach(Object.values(current), lookupRefs);\n }\n}\n\nfunction createRef(value: ServerValue) {\n const current = REFS.get(value);\n if (current != null) {\n return current;\n }\n const id = REFS.size;\n REFS.set(value, id);\n return id;\n}\n\nfunction getRefParam(index: number) {\n if (VARS[index]) {\n return VARS[index];\n }\n const result = getIdentifier(index);\n VARS[index] = result;\n return result;\n}\n\nfunction assignRef(index: number, value: string) {\n return `${getRefParam(index)}=${value}`;\n}\n\nfunction createAssignment(source: string, value: string) {\n ASSIGNMENTS.push([source, value]);\n}\n\nfunction createSetAdd(ref: number, value: string) {\n SET_ADDS.push([getRefParam(ref), value]);\n}\n\nfunction createMapSet(ref: number, key: string, value: string) {\n MAP_SETS.push([getRefParam(ref), key, value]);\n}\n\nfunction createArrayAssign(ref: number, index: number, value: string) {\n createAssignment(`${getRefParam(ref)}[${index}]`, value);\n}\n\nfunction createObjectIdentifierAssign(ref: number, key: string, value: string) {\n createAssignment(`${getRefParam(ref)}.${key}`, value);\n}\n\nfunction createObjectStringAssign(ref: number, key: string, value: string) {\n createAssignment(`${getRefParam(ref)}[${quote(key)}]`, value);\n}\n\nfunction 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\nfunction traverse(current: ServerValue): string | { referred: string } {\n // Skip primitives\n if (isPrimitive(current)) {\n return serializePrimitive(current);\n }\n // Get reference of the current object\n let refResult = REFS.get(current);\n if (refResult != null) {\n // Return the reference if already assigned a value\n if (ASSIGNED_REFS.has(refResult)) {\n return { referred: getRefParam(refResult) };\n }\n // Early sign (to prevent recursion)\n ASSIGNED_REFS.add(refResult);\n }\n // Transform Set\n if (constructorCheck<Set<ServerValue>>(current, Set)) {\n if (current.size) {\n const values: string[] = [];\n\n STACK.add(current);\n for (const value of current.keys()) {\n if (STACK.has(value)) {\n // This object received a ref, we must generate a setter ref\n if (refResult == null) {\n refResult = createRef(current);\n }\n // Received a ref, this might be a recursive ref, defer an assignment\n createSetAdd(refResult, getRefParam(createRef(value)));\n } else {\n const result = traverse(value);\n if (typeof result === 'string') {\n values.push(result);\n } else {\n values.push(result.referred);\n }\n }\n }\n STACK.delete(current);\n\n const value = values.length ? `new Set([${join(values, ',')}])` : EMPTY_SET;\n if (refResult != null) {\n return assignRef(refResult, value);\n }\n return value;\n }\n return EMPTY_SET;\n }\n if (constructorCheck<Map<ServerValue, ServerValue>>(current, Map)) {\n if (current.size) {\n const values: string[] = [];\n\n STACK.add(current);\n for (const [key, value] of current.entries()) {\n if (STACK.has(key)) {\n if (refResult == null) {\n refResult = createRef(current);\n }\n const keyRef = getRefParam(createRef(key));\n if (STACK.has(value)) {\n createMapSet(refResult, keyRef, getRefParam(createRef(value)));\n } else {\n const valueResult = traverse(value);\n if (typeof valueResult === 'string') {\n createMapSet(refResult, keyRef, valueResult);\n } else {\n createMapSet(refResult, keyRef, valueResult.referred);\n }\n }\n } else if (STACK.has(value)) {\n if (refResult == null) {\n refResult = createRef(current);\n }\n const valueRef = getRefParam(createRef(value));\n const keyResult = traverse(key);\n if (typeof keyResult === 'string') {\n createMapSet(refResult, keyResult, valueRef);\n } else {\n createMapSet(refResult, keyResult.referred, valueRef);\n }\n } else {\n const keyResult = traverse(key);\n const valueResult = traverse(value);\n if (typeof keyResult === 'string') {\n if (typeof valueResult === 'string') {\n values.push(`[${keyResult},${valueResult}]`);\n } else {\n values.push(`[${keyResult},${valueResult.referred}]`);\n }\n } else {\n if (typeof valueResult === 'string') {\n values.push(`[${keyResult.referred},${valueResult}]`);\n } else {\n values.push(`[${keyResult.referred},${valueResult.referred}]`);\n }\n }\n }\n }\n STACK.delete(current);\n const value = values.length ? `new Map([${join(values, ',')}])` : EMPTY_MAP;\n if (refResult != null) {\n return assignRef(refResult, value);\n }\n return value;\n }\n return EMPTY_MAP;\n }\n if (Array.isArray(current)) {\n if (current.length) {\n let values = '';\n\n STACK.add(current);\n forEach(current, (item, i) => {\n if (i in current) {\n if (STACK.has(item)) {\n if (refResult == null) {\n refResult = createRef(current);\n }\n createArrayAssign(refResult, i, getRefParam(createRef(item)));\n values += ',';\n } else {\n const result = traverse(item);\n if (typeof result === 'string') {\n values += result;\n } else {\n values += result.referred;\n }\n if (i < current.length - 1) {\n values += ',';\n }\n }\n } else {\n values += ',';\n }\n });\n STACK.delete(current);\n\n const value = `[${values}]`;\n if (refResult != null) {\n return assignRef(refResult, value);\n }\n return value;\n }\n return EMPTY_ARRAY;\n }\n if (current.constructor === Object) {\n const values: string[] = [];\n\n 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 (Number.isNaN(check) || /^([$A-Z_][0-9A-Z_$]*)$/i.test(key)) {\n if (STACK.has(value)) {\n if (refResult == null) {\n refResult = createRef(current);\n }\n createObjectIdentifierAssign(refResult, key, getRefParam(createRef(value)));\n } else {\n const result = traverse(value);\n if (typeof result === 'string') {\n values.push(`${key}:${result}`);\n } else {\n values.push(`${key}:${result.referred}`);\n }\n }\n } else if (STACK.has(value)) {\n if (refResult == null) {\n refResult = createRef(current);\n }\n createObjectStringAssign(refResult, key, getRefParam(createRef(value)));\n } else {\n const result = traverse(value);\n if (typeof result === 'string') {\n values.push(`${quote(key)}:${result}`);\n } else {\n values.push(`${quote(key)}:${result.referred}`);\n }\n }\n });\n STACK.delete(current);\n\n const value = `{${join(values, ',')}}`;\n if (refResult != null) {\n return assignRef(refResult, value);\n }\n return value;\n }\n throw new Error('Unserializable value');\n}\n\nexport default function serialize(source: ServerValue) {\n if (isPrimitive(source)) {\n return serializePrimitive(source);\n }\n reset();\n // Lookup possible shared references\n lookupRefs(source);\n // Add shared references to refs\n for (const [key, value] of REF_COUNT.entries()) {\n if (value > 1) {\n createRef(key);\n }\n }\n // Get top-level serialization\n const result = traverse(source);\n if (typeof result !== 'string') {\n throw new Error('Unreachable error');\n }\n\n // Shared references detected\n if (VARS.length) {\n // Get (or create) a ref from the source\n const index = getRefParam(createRef(source));\n const patches = resolvePatches();\n const params = VARS.length > 1\n ? `(${join(VARS, ',')})`\n : 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", "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", "const 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", "// 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"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["value"]
|
|
3
|
+
"sources": ["../../../src/index.ts", "../../../src/array.ts", "../../../src/get-identifier.ts", "../../../src/context.ts", "../../../src/is-primitive.ts", "../../../src/is-promise.ts", "../../../src/quote.ts", "../../../src/serialize-primitive.ts", "../../../src/async.ts", "../../../src/sync.ts"],
|
|
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": ["value", "value"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`:
|
|
1
|
+
"use strict";var _=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var K=(e,t)=>{for(var s in t)_(e,s,{get:t[s],enumerable:!0})},Q=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of G(t))!J.call(e,o)&&o!==s&&_(e,o,{get:()=>t[o],enumerable:!(i=W(t,o))||i.enumerable});return e};var X=e=>Q(_({},"__esModule",{value:!0}),e);var re={};K(re,{default:()=>ne,deserialize:()=>ie,serialize:()=>B,serializeAsync:()=>se});module.exports=X(re);function A(e,t){for(let s=0,i=e.length;s<i&&!t(e[s],s);s++);}function S(e,t){let s="";return A(e,(i,o)=>{s+=i,o<e.length-1&&(s+=t)}),s}var U="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",F=U.length,Z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",H=Z.length;function Y(e){let t=e%F,s=U[t];for(e=(e-t)/F;e>0;)t=e%H,s+=Z[t],e=(e-t)/H;return s}var w="new Set",c="new Map",M="[]";function I(){return{refCount:new Map,stack:new Set,refs:new Map,assignedRefs:new Set,vars:[],assignments:[],mapSets:[],setAdds:[]}}function x(e){if(e.assignments.length){let t={};return A(e.assignments,([s,i])=>{i in t?t[i]=`${s}=${t[i]}`:t[i]=`${s}=${i}`}),`${S(Object.values(t),",")},`}return""}function ee(e){if(e.mapSets.length){let t={};return A(e.mapSets,([s,i,o])=>{s in t?t[s]=`${t[s]}.set(${i},${o})`:t[s]=`${s}.set(${i},${o})`}),`${S(Object.values(t),",")},`}return""}function te(e){if(e.setAdds.length){let t={};return A(e.setAdds,([s,i])=>{s in t?t[s]=`${t[s]}.add(${i})`:t[s]=`${s}.add(${i})`}),`${S(Object.values(t),",")},`}return""}function D(e){return`${x(e)}${ee(e)}${te(e)}`}function v(e,t){let s=e.refCount.get(t)||0;return e.refCount.set(t,s+1),s===0}function $(e,t){return e.constructor===t}function u(e,t){let s=e.refs.get(t);if(s!=null)return s;let i=e.refs.size;return e.refs.set(t,i),i}function l(e,t){if(e.vars[t])return e.vars[t];let s=Y(t);return e.vars[t]=s,s}function T(e,t,s){return`${l(e,t)}=${s}`}function q(e,t,s){e.assignments.push([t,s])}function j(e,t,s){e.setAdds.push([l(e,t),s])}function R(e,t,s,i){e.mapSets.push([l(e,t),s,i])}function E(e,t,s,i){q(e,`${l(e,t)}[${s}]`,i)}function O(e,t,s,i){q(e,`${l(e,t)}.${s}`,i)}function z(e,t,s,i){q(e,`${l(e,t)}[${s}]`,i)}function h(e){if(!e||e===!0)return!0;let t=typeof e,s=e.constructor;return t==="number"||t==="string"||t==="bigint"||s===Date||s===RegExp}function N(e){return!!e&&(typeof e=="object"||typeof e=="function")&&"then"in e&&typeof e.then=="function"}function y(e){let t="",s=0;for(let i=0,o=e.length;i<o;i++){let g;switch(e[i]){case'"':g='\\"';break;case"\\":g="\\\\";break;case"<":g="\\x3C";break;case`
|
|
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;
|