seroval 0.4.0-alpha.5 → 0.4.0-alpha.7

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.
@@ -779,10 +779,9 @@ function createArrayAssign(ctx, ref, index, value) {
779
779
  markRef(ctx, ref);
780
780
  createAssignment(ctx, `${getRefParam(ctx, ref)}[${index}]`, value);
781
781
  }
782
- function createObjectAssign(ctx, ref, key, value, computed) {
782
+ function createObjectAssign(ctx, ref, key, value) {
783
783
  markRef(ctx, ref);
784
- const member = computed ? `[${key}]` : `.${key}`;
785
- createAssignment(ctx, `${getRefParam(ctx, ref)}${member}`, value);
784
+ createAssignment(ctx, `${getRefParam(ctx, ref)}.${key}`, value);
786
785
  }
787
786
  var IDENTIFIER_CHECK = /^([$A-Z_][0-9A-Z_$]*)$/i;
788
787
  function serializeAssignments(ctx, targetRef, [keys, values, size]) {
@@ -798,13 +797,11 @@ function serializeAssignments(ctx, targetRef, [keys, values, size]) {
798
797
  const parentAssignment = ctx.assignments;
799
798
  ctx.assignments = mainAssignments;
800
799
  const isIdentifier = check >= 0 || IDENTIFIER_CHECK.test(key);
801
- createObjectAssign(
802
- ctx,
803
- targetRef,
804
- isIdentifier ? key : quote(key),
805
- refParam,
806
- !(isIdentifier && Number.isNaN(check))
807
- );
800
+ if (isIdentifier && Number.isNaN(check)) {
801
+ createObjectAssign(ctx, targetRef, key, refParam);
802
+ } else {
803
+ createArrayAssign(ctx, targetRef, isIdentifier ? key : quote(key), refParam);
804
+ }
808
805
  ctx.assignments = parentAssignment;
809
806
  }
810
807
  ctx.stack.pop();
@@ -821,18 +818,15 @@ function serializeObject(ctx, sourceID, [keys, values, size]) {
821
818
  const val = values[i];
822
819
  const check = Number(key);
823
820
  const isIdentifier = check >= 0 || IDENTIFIER_CHECK.test(key);
824
- const validKey = isIdentifier ? key : quote(key);
825
821
  if (isReferenceInStack(ctx, val)) {
826
822
  const refParam = getRefParam(ctx, val[1]);
827
- createObjectAssign(
828
- ctx,
829
- sourceID,
830
- validKey,
831
- refParam,
832
- !(isIdentifier && Number.isNaN(check))
833
- );
823
+ if (isIdentifier && Number.isNaN(check)) {
824
+ createObjectAssign(ctx, sourceID, key, refParam);
825
+ } else {
826
+ createArrayAssign(ctx, sourceID, isIdentifier ? key : quote(key), refParam);
827
+ }
834
828
  } else {
835
- result += `${validKey}:${serializeTree(ctx, val)},`;
829
+ result += `${isIdentifier ? key : quote(key)}:${serializeTree(ctx, val)},`;
836
830
  }
837
831
  }
838
832
  ctx.stack.pop();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.ts", "../../../src/checks.ts", "../../../src/assert.ts", "../../../src/compat.ts", "../../../src/get-identifier.ts", "../../../src/context.ts", "../../../src/quote.ts", "../../../src/tree/shared.ts", "../../../src/tree/async.ts", "../../../src/tree/serialize.ts", "../../../src/tree/sync.ts"],
4
- "sourcesContent": ["/* eslint-disable no-await-in-loop */\nimport { isPrimitive } from './checks';\nimport { Feature } from './compat';\nimport {\n SerializationContext,\n getRefParam,\n Options,\n createParserContext,\n createSerializationContext,\n} from './context';\nimport parseAsync from './tree/async';\nimport serializeTree, { resolvePatches } from './tree/serialize';\nimport { serializePrimitive } from './tree/shared';\nimport parseSync from './tree/sync';\nimport { SerovalNode } from './tree/types';\nimport {\n AsyncServerValue,\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(\n ctx: SerializationContext,\n rootID: number,\n isObject: boolean,\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, rootID);\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 & Feature.ArrowFunction) {\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 (isObject) {\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 = createParserContext(options);\n if (isPrimitive(source)) {\n return String(serializePrimitive(source));\n }\n const [tree, rootID, isObject] = parseSync(ctx, source);\n const serial = createSerializationContext(ctx);\n const result = serializeTree(serial, tree);\n return finalize(serial, rootID, isObject, result);\n}\n\nexport async function serializeAsync<T extends AsyncServerValue>(\n source: T,\n options?: Partial<Options>,\n) {\n const ctx = createParserContext(options);\n if (isPrimitive(source)) {\n return String(serializePrimitive(source));\n }\n const [tree, rootID, isObject] = await parseAsync(ctx, source);\n const serial = createSerializationContext(ctx);\n const result = serializeTree(serial, tree);\n return finalize(serial, rootID, isObject, 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\ntype SerovalJSON = [\n tree: SerovalNode,\n root: number,\n isObject: boolean,\n feature: number,\n markedRefs: number[],\n];\n\nexport function toJSON<T extends ServerValue>(\n source: T,\n options?: Partial<Options>,\n) {\n const ctx = createParserContext(options);\n const [tree, root, isObject] = parseSync(ctx, source);\n return JSON.stringify([\n tree,\n root,\n isObject,\n ctx.features,\n [...ctx.markedRefs],\n ]);\n}\n\nexport async function toJSONAsync<T extends AsyncServerValue>(\n source: T,\n options?: Partial<Options>,\n) {\n const ctx = createParserContext(options);\n const [tree, root, isObject] = await parseAsync(ctx, source);\n return JSON.stringify([\n tree,\n root,\n isObject,\n ctx.features,\n [...ctx.markedRefs],\n ]);\n}\n\nexport function compileJSON(source: string): string {\n const parsed = JSON.parse(source) as SerovalJSON;\n const serial = createSerializationContext({\n features: parsed[3],\n markedRefs: parsed[4],\n });\n const result = serializeTree(serial, parsed[0]);\n return finalize(serial, parsed[1], parsed[2], result);\n}\n\nexport function fromJSON<T extends AsyncServerValue>(source: string): T {\n return deserialize<T>(compileJSON(source));\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}\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", "export default function assert(cond: unknown, error: string): asserts cond {\n if (!cond) {\n throw new Error(error);\n }\n}\n", "/* eslint-disable guard-for-in */\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\nexport const enum Feature {\n AggregateError = 0x01,\n ArrayPrototypeValues = 0x02,\n ArrowFunction = 0x04,\n BigInt = 0x08,\n Map = 0x10,\n MethodShorthand = 0x20,\n ObjectAssign = 0x40,\n Promise = 0x80,\n Set = 0x100,\n SymbolIterator = 0x200,\n TypedArray = 0x400,\n BigIntTypedArray = 0x800,\n}\n\ntype VersionTable = {\n [key in Feature]: PlatformVersion;\n}\n\nconst VERSION_TABLE: VersionTable = {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError#browser_compatibility\n [Feature.AggregateError]: {\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 [Feature.ArrayPrototypeValues]: {\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 [Feature.ArrowFunction]: {\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 [Feature.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 [Feature.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 [Feature.MethodShorthand]: {\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 [Feature.ObjectAssign]: {\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 [Feature.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 [Feature.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 [Feature.SymbolIterator]: {\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 [Feature.TypedArray]: {\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 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt64Array#browser_compatibility\n [Feature.BigIntTypedArray]: {\n es: [2020, 0, 0],\n chrome: [67, 0, 0],\n edge: [79, 0, 0],\n firefox: [68, 0, 0],\n opera: [54, 6, 0],\n safari: [15, 1, 0],\n ios: [15, 2, 0],\n samsung: [9, 0, 0],\n deno: [1, 0, 0],\n node: [10, 4, 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\nexport function parseTargets(targets: string | string[]): number {\n const parsed = getTargetVersions(targets);\n let flags = 0;\n\n for (const key in VERSION_TABLE) {\n const base = VERSION_TABLE[key as unknown as Feature];\n let flag = true;\n for (const [platform, version] of parsed) {\n const baseVersion = base[platform];\n flag = flag && !!baseVersion && (compareVersion(baseVersion, version) <= 0);\n }\n if (flag) {\n flags |= Number(key);\n }\n }\n\n return flags;\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 { parseTargets } from './compat';\nimport getIdentifier from './get-identifier';\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 ParserContext {\n refs: Map<unknown, number>;\n markedRefs: Set<number>;\n features: number;\n}\n\nexport interface SerializationContext {\n stack: number[];\n // Map tree refs to actual refs\n validRefs: Map<number, number>;\n // Refs that are...referenced\n markedRefs: Set<number>;\n // Variables\n vars: string[];\n // Array of assignments to be done (used for recursion)\n assignments: Assignment[];\n // Supported features\n features: number;\n}\n\nexport interface Options {\n target: string | string[];\n}\n\nconst DEFAULT_OPTIONS: Options = {\n target: 'es2023',\n};\n\nexport function createParserContext(options: Partial<Options> = {}): ParserContext {\n // eslint-disable-next-line prefer-object-spread\n const result = Object.assign({}, DEFAULT_OPTIONS, options || {});\n return {\n markedRefs: new Set(),\n refs: new Map(),\n features: parseTargets(result.target),\n };\n}\n\nexport interface SerializationOptions {\n markedRefs: number[] | Set<number>;\n features: number;\n}\n\nexport function createSerializationContext(options: SerializationOptions): SerializationContext {\n return {\n stack: [],\n vars: [],\n assignments: [],\n validRefs: new Map(),\n features: options.features,\n markedRefs: new Set(options.markedRefs),\n };\n}\n\n/**\n * Increments the number of references the referenced value has\n */\nexport function markRef(ctx: ParserContext | SerializationContext, current: number) {\n ctx.markedRefs.add(current);\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 * Creates a reference ID from the given values\n */\nexport function createRef(\n ctx: ParserContext,\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", "// 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 assert from '../assert';\nimport { constructorCheck } from '../checks';\nimport { Feature } from '../compat';\nimport { SerializationContext, ParserContext, markRef } from '../context';\nimport quote from '../quote';\nimport { ErrorValue, PrimitiveValue } from '../types';\nimport { SerovalNode, SerovalReferenceNode, SerovalNodeType } from './types';\n\nexport function 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\nexport function 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\nexport function 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\nexport function isReferenceInStack(\n ctx: SerializationContext,\n node: SerovalNode,\n): node is SerovalReferenceNode {\n return node[0] === SerovalNodeType.Reference && ctx.stack.includes(node[1]);\n}\n\nexport function generateRef(\n ctx: ParserContext,\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\nexport function generateSemiPrimitiveValue(\n ctx: ParserContext,\n current: unknown,\n id: number,\n): SerovalNode | undefined {\n if (typeof current === 'bigint') {\n assert(ctx.features & Feature.BigInt, 'Unsupported type \"BigInt\"');\n return [SerovalNodeType.BigInt, `${current}n`];\n }\n if (constructorCheck<Date>(current, Date)) {\n return [SerovalNodeType.Date, current.toISOString(), id];\n }\n if (constructorCheck<RegExp>(current, RegExp)) {\n return [SerovalNodeType.RegExp, String(current), id];\n }\n if (\n constructorCheck<Int8Array>(current, Int8Array)\n || constructorCheck<Int16Array>(current, Int16Array)\n || constructorCheck<Int32Array>(current, Int32Array)\n || constructorCheck<Uint8Array>(current, Uint8Array)\n || constructorCheck<Uint16Array>(current, Uint16Array)\n || constructorCheck<Uint32Array>(current, Uint32Array)\n || constructorCheck<Uint8ClampedArray>(current, Uint8ClampedArray)\n || constructorCheck<Float32Array>(current, Float32Array)\n || constructorCheck<Float64Array>(current, Float64Array)\n ) {\n const constructor = current.constructor.name;\n assert(ctx.features & Feature.TypedArray, `Unsupported value type \"${constructor}\"`);\n return [SerovalNodeType.TypedArray, [constructor, current.toString(), current.byteOffset], id];\n }\n if (\n constructorCheck<BigInt64Array>(current, BigInt64Array)\n || constructorCheck<BigUint64Array>(current, BigUint64Array)\n ) {\n const constructor = current.constructor.name;\n assert(\n ctx.features & (Feature.BigIntTypedArray),\n `Unsupported value type \"${constructor}\"`,\n );\n let result = '';\n const cap = current.length - 1;\n for (let i = 0; i < cap; i++) {\n result += `${current[i]}n,`;\n }\n result += `\"${current[cap]}\"`;\n return [\n SerovalNodeType.BigIntTypedArray,\n [constructor, result, current.byteOffset],\n id,\n ];\n }\n return undefined;\n}\n\nexport function serializePrimitive(\n value: PrimitiveValue,\n): string | number | null {\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 === '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 value;\n}\n", "/* eslint-disable no-await-in-loop */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport assert from '../assert';\nimport {\n isIterable,\n isPrimitive,\n constructorCheck,\n isPromise,\n} from '../checks';\nimport { Feature } from '../compat';\nimport { createRef, ParserContext } from '../context';\nimport { AsyncServerValue } from '../types';\nimport {\n generateRef,\n generateSemiPrimitiveValue,\n getErrorConstructor,\n getErrorOptions,\n getIterableOptions,\n serializePrimitive,\n} from './shared';\nimport {\n SerovalAggregateErrorNode,\n SerovalArrayNode,\n SerovalDictionaryNode,\n SerovalErrorNode,\n SerovalIterableNode,\n SerovalMapNode,\n SerovalNode,\n SerovalNodeType,\n SerovalSetNode,\n} from './types';\n\nasync function serializePropertiesAsync(\n ctx: ParserContext,\n properties: Record<string, unknown>,\n): Promise<SerovalDictionaryNode> {\n const keys = Object.keys(properties);\n const size = keys.length;\n const keyNodes = new Array<string>(size);\n const valueNodes = new Array<SerovalNode>(size);\n const deferredKeys = new Array<string>(size);\n const deferredValues = new Array<AsyncServerValue>(size);\n let deferredSize = 0;\n let nodesSize = 0;\n for (const key of keys) {\n if (isIterable(properties[key])) {\n deferredKeys[deferredSize] = key;\n deferredValues[deferredSize] = properties[key] as AsyncServerValue;\n deferredSize++;\n } else {\n keyNodes[nodesSize] = key;\n valueNodes[nodesSize] = await generateTreeAsync(ctx, properties[key] as AsyncServerValue);\n nodesSize++;\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes[nodesSize + i] = deferredKeys[i];\n valueNodes[nodesSize + i] = await generateTreeAsync(ctx, deferredValues[i]);\n }\n return [keyNodes, valueNodes, size];\n}\n\nasync function generateSetNode(\n ctx: ParserContext,\n current: Set<AsyncServerValue>,\n id: number,\n): Promise<SerovalSetNode> {\n assert(ctx.features & Feature.Set, 'Unsupported type \"Set\"');\n const len = current.size;\n const nodes = new Array<SerovalNode>(len);\n const deferred = new Array<AsyncServerValue>(len);\n let deferredSize = 0;\n let nodeSize = 0;\n for (const item of current.keys()) {\n // Iterables are lazy, so the evaluation must be deferred\n if (isIterable(item)) {\n deferred[deferredSize++] = item;\n } else {\n nodes[nodeSize++] = await generateTreeAsync(ctx, item);\n }\n }\n // Parse deferred items\n for (let i = 0; i < deferredSize; i++) {\n nodes[nodeSize + i] = await generateTreeAsync(ctx, deferred[i]);\n }\n return [SerovalNodeType.Set, nodes, id];\n}\n\nasync function generateMapNode(\n ctx: ParserContext,\n current: Map<AsyncServerValue, AsyncServerValue>,\n id: number,\n): Promise<SerovalMapNode> {\n assert(ctx.features & Feature.Map, 'Unsupported type \"Map\"');\n const len = current.size;\n const keyNodes = new Array<SerovalNode>(len);\n const valueNodes = new Array<SerovalNode>(len);\n const deferredKey = new Array<AsyncServerValue>(len);\n const deferredValue = new Array<AsyncServerValue>(len);\n let deferredSize = 0;\n let nodeSize = 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[deferredSize] = key;\n deferredValue[deferredSize] = value;\n deferredSize++;\n } else {\n keyNodes[nodeSize] = await generateTreeAsync(ctx, key);\n valueNodes[nodeSize] = await generateTreeAsync(ctx, value);\n nodeSize++;\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes[nodeSize + i] = await generateTreeAsync(ctx, deferredKey[i]);\n valueNodes[nodeSize + i] = await generateTreeAsync(ctx, deferredValue[i]);\n }\n return [SerovalNodeType.Map, [keyNodes, valueNodes, len], id];\n}\n\nasync function generateNodeList(\n ctx: ParserContext,\n current: AsyncServerValue[],\n) {\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 if (i in current) {\n if (isIterable(current[i])) {\n deferred[i] = current[i];\n } else {\n nodes[i] = await generateTreeAsync(ctx, current[i]);\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 nodes;\n}\n\nasync function generateArrayNode(\n ctx: ParserContext,\n current: AsyncServerValue[],\n id: number,\n): Promise<SerovalArrayNode> {\n return [SerovalNodeType.Array, await generateNodeList(ctx, current), id];\n}\n\nasync function generateAggregateErrorNode(\n ctx: ParserContext,\n current: AggregateError,\n id: number,\n): Promise<SerovalAggregateErrorNode> {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? await serializePropertiesAsync(ctx, options)\n : undefined;\n const errorsNode = await generateTreeAsync(ctx, current.errors as AsyncServerValue);\n return [\n SerovalNodeType.AggregateError,\n [current.message, optionsNode, errorsNode],\n id,\n ];\n}\n\nasync function generateErrorNode(\n ctx: ParserContext,\n current: Error,\n id: number,\n): Promise<SerovalErrorNode> {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? await serializePropertiesAsync(ctx, options)\n : undefined;\n return [\n SerovalNodeType.Error,\n [getErrorConstructor(current), current.message, optionsNode],\n id,\n ];\n}\n\nasync function generateIterableNode(\n ctx: ParserContext,\n current: Iterable<AsyncServerValue>,\n id: number,\n): Promise<SerovalIterableNode> {\n assert(ctx.features & Feature.SymbolIterator, 'Unsupported type \"Iterable\"');\n const options = getIterableOptions(current);\n return [SerovalNodeType.Iterable, [\n // Parse options first before the items\n options ? await serializePropertiesAsync(ctx, options) : undefined,\n await generateNodeList(ctx, Array.from(current)),\n ], id];\n}\n\nasync function generateTreeAsync(\n ctx: ParserContext,\n current: AsyncServerValue,\n): Promise<SerovalNode> {\n if (isPrimitive(current)) {\n return [SerovalNodeType.Primitive, serializePrimitive(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 (isPromise(current)) {\n assert(ctx.features & Feature.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 return generateSetNode(ctx, current, id);\n }\n if (constructorCheck<Map<AsyncServerValue, AsyncServerValue>>(current, Map)) {\n return generateMapNode(ctx, current, id);\n }\n if (Array.isArray(current)) {\n return generateArrayNode(ctx, current, id);\n }\n if (current instanceof AggregateError && ctx.features & Feature.AggregateError) {\n return generateAggregateErrorNode(ctx, current, id);\n }\n if (current instanceof Error) {\n return generateErrorNode(ctx, current, id);\n }\n if (isIterable(current)) {\n return generateIterableNode(ctx, current, id);\n }\n const empty = current.constructor == null;\n if (current.constructor === Object || empty) {\n return [\n empty ? SerovalNodeType.NullConstructor : SerovalNodeType.Object,\n await serializePropertiesAsync(ctx, current as Record<string, unknown>),\n id,\n ];\n }\n throw new Error('Unsupported value');\n}\n\nexport default async function parseAsync(\n ctx: ParserContext,\n current: AsyncServerValue,\n) {\n const result = await generateTreeAsync(ctx, current);\n return [result, createRef(ctx, current), result[0] === SerovalNodeType.Object] as const;\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { Feature } from '../compat';\nimport {\n SerializationContext,\n Assignment,\n getRefParam,\n markRef,\n} from '../context';\nimport quote from '../quote';\nimport { isReferenceInStack } from './shared';\nimport { SerovalDictionaryNode, SerovalNode, SerovalNodeType } from './types';\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 * 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.has(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 createObjectAssign(\n ctx: SerializationContext,\n ref: number,\n key: string,\n value: string,\n computed: boolean,\n) {\n markRef(ctx, ref);\n const member = computed ? `[${key}]` : `.${key}`;\n createAssignment(ctx, `${getRefParam(ctx, ref)}${member}`, value);\n}\n\nconst IDENTIFIER_CHECK = /^([$A-Z_][0-9A-Z_$]*)$/i;\n\nfunction serializeAssignments(\n ctx: SerializationContext,\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 const parentAssignment = ctx.assignments;\n ctx.assignments = mainAssignments;\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 isIdentifier = check >= 0 || IDENTIFIER_CHECK.test(key);\n createObjectAssign(\n ctx,\n targetRef,\n isIdentifier ? key : quote(key),\n refParam,\n !(isIdentifier && Number.isNaN(check)),\n );\n ctx.assignments = parentAssignment;\n }\n ctx.stack.pop();\n return resolveAssignments(mainAssignments);\n}\n\nfunction serializeObject(\n ctx: SerializationContext,\n sourceID: number,\n [keys, values, size]: SerovalDictionaryNode,\n) {\n if (size === 0) {\n return '{}';\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 const isIdentifier = check >= 0 || IDENTIFIER_CHECK.test(key);\n const validKey = isIdentifier ? key : quote(key);\n if (isReferenceInStack(ctx, val)) {\n const refParam = getRefParam(ctx, val[1]);\n createObjectAssign(\n ctx,\n sourceID,\n validKey,\n refParam,\n !(isIdentifier && Number.isNaN(check)),\n );\n } else {\n result += `${validKey}:${serializeTree(ctx, val)},`;\n }\n }\n ctx.stack.pop();\n return `{${result.substring(0, result.length - 1)}}`;\n}\n\nfunction serializePromise(\n ctx: SerializationContext,\n value: SerovalNode,\n id: number,\n) {\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\nfunction serializeTypedArray(\n ctx: SerializationContext,\n constructor: string,\n init: string,\n byteOffset: number,\n id: number,\n) {\n let args = `[${init}]`;\n if (byteOffset !== 0) {\n args += `,${byteOffset}`;\n }\n return assignRef(ctx, id, `new ${constructor}(${args})`);\n}\n\nfunction serializeSet(\n ctx: SerializationContext,\n value: SerovalNode[],\n id: number,\n) {\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\nfunction serializeMap(\n ctx: SerializationContext,\n keys: SerovalNode[],\n values: SerovalNode[],\n size: number,\n id: number,\n) {\n let serialized = 'new Map';\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 = keys[i];\n const val = values[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\nfunction serializeNodeList(\n ctx: SerializationContext,\n value: SerovalNode[],\n id: number,\n) {\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 for (let i = 0; i < size; i++) {\n const item = value[i];\n // Check if index is a hole\n if (item) {\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 return `[${values}]`;\n}\n\nfunction serializeArray(\n ctx: SerializationContext,\n value: SerovalNode[],\n id: number,\n) {\n ctx.stack.push(id);\n const result = serializeNodeList(ctx, value, id);\n ctx.stack.pop();\n return assignRef(ctx, id, result);\n}\n\nfunction serializeWithObjectAssign(\n ctx: SerializationContext,\n value: SerovalDictionaryNode,\n id: number,\n serialized: string,\n) {\n const fields = serializeObject(ctx, id, value);\n if (fields !== '{}') {\n return `Object.assign(${serialized},${fields})`;\n }\n return serialized;\n}\n\nfunction serializeAggregateError(\n ctx: SerializationContext,\n message: string,\n options: SerovalDictionaryNode | undefined,\n errors: SerovalNode,\n id: number,\n) {\n // Serialize the required arguments\n ctx.stack.push(id);\n let serialized = `new AggregateError(${serializeTree(ctx, errors)},${quote(message)})`;\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 (options) {\n if (ctx.features & Feature.ObjectAssign) {\n serialized = serializeWithObjectAssign(ctx, options, id, serialized);\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(ctx, id, options);\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\nfunction serializeError(\n ctx: SerializationContext,\n constructor: string,\n message: string,\n options: SerovalDictionaryNode | undefined,\n id: number,\n) {\n let serialized = `new ${constructor}(${quote(message)})`;\n if (options) {\n if (ctx.features & Feature.ObjectAssign) {\n serialized = serializeWithObjectAssign(ctx, options, id, serialized);\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(ctx, id, options);\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\nfunction serializeIterable(\n ctx: SerializationContext,\n options: SerovalDictionaryNode | undefined,\n items: SerovalNode[],\n id: number,\n) {\n const parent = ctx.stack;\n ctx.stack = [];\n const values = serializeNodeList(ctx, items, id);\n ctx.stack = parent;\n let serialized: string;\n if (ctx.features & Feature.ArrayPrototypeValues) {\n serialized = `${values}.values()`;\n } else {\n serialized = `${values}[Symbol.iterator]()`;\n }\n if (ctx.features & Feature.ArrowFunction) {\n serialized = `{[Symbol.iterator]:()=>${serialized}}`;\n } else if (ctx.features & Feature.MethodShorthand) {\n serialized = `{[Symbol.iterator](){return ${serialized}}}`;\n } else {\n serialized = `{[Symbol.iterator]:function(){return ${serialized}}}`;\n }\n if (options) {\n if (ctx.features & Feature.ObjectAssign) {\n serialized = serializeWithObjectAssign(ctx, options, id, serialized);\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(ctx, id, options);\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\nfunction serializeNullConstructor(\n ctx: SerializationContext,\n value: SerovalDictionaryNode,\n id: number,\n) {\n let serialized = 'Object.create(null)';\n if (ctx.features & Feature.ObjectAssign) {\n serialized = serializeWithObjectAssign(ctx, value, id, serialized);\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(ctx, 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\nexport default function serializeTree(\n ctx: SerializationContext,\n [type, value, id]: SerovalNode,\n): string {\n switch (type) {\n case SerovalNodeType.Primitive:\n return String(value);\n case SerovalNodeType.Reference:\n return getRefParam(ctx, value);\n case SerovalNodeType.Promise:\n return serializePromise(ctx, value, id);\n case SerovalNodeType.BigInt:\n return value;\n case SerovalNodeType.Date:\n return assignRef(ctx, id, `new Date(\"${value}\")`);\n case SerovalNodeType.RegExp:\n return assignRef(ctx, id, value);\n case SerovalNodeType.BigIntTypedArray:\n case SerovalNodeType.TypedArray:\n return serializeTypedArray(ctx, value[0], value[1], value[2], id);\n case SerovalNodeType.Set:\n return serializeSet(ctx, value, id);\n case SerovalNodeType.Map:\n return serializeMap(ctx, value[0], value[1], value[2], id);\n case SerovalNodeType.Array:\n return serializeArray(ctx, value, id);\n case SerovalNodeType.AggregateError:\n return serializeAggregateError(ctx, value[0], value[1], value[2], id);\n case SerovalNodeType.Error:\n return serializeError(ctx, value[0], value[1], value[2], id);\n case SerovalNodeType.Iterable:\n return serializeIterable(ctx, value[0], value[1], id);\n case SerovalNodeType.NullConstructor:\n return serializeNullConstructor(ctx, value, id);\n case SerovalNodeType.Object:\n return assignRef(ctx, id, serializeObject(ctx, id, value));\n default:\n throw new Error('Unsupported type');\n }\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport assert from '../assert';\nimport { isIterable, isPrimitive, constructorCheck } from '../checks';\nimport { Feature } from '../compat';\nimport { createRef, ParserContext } from '../context';\nimport { ServerValue } from '../types';\nimport {\n generateRef,\n generateSemiPrimitiveValue,\n getErrorConstructor,\n getErrorOptions,\n getIterableOptions,\n serializePrimitive,\n} from './shared';\nimport {\n SerovalAggregateErrorNode,\n SerovalArrayNode,\n SerovalDictionaryNode,\n SerovalErrorNode,\n SerovalIterableNode,\n SerovalMapNode,\n SerovalNode,\n SerovalNodeType,\n SerovalSetNode,\n} from './types';\n\nfunction serializePropertiesSync(\n ctx: ParserContext,\n properties: Record<string, unknown>,\n): SerovalDictionaryNode {\n const keys = Object.keys(properties);\n const size = keys.length;\n const keyNodes = new Array<string>(size);\n const valueNodes = new Array<SerovalNode>(size);\n const deferredKeys = new Array<string>(size);\n const deferredValues = new Array<ServerValue>(size);\n let deferredSize = 0;\n let nodesSize = 0;\n for (const key of keys) {\n if (isIterable(properties[key])) {\n deferredKeys[deferredSize] = key;\n deferredValues[deferredSize] = properties[key] as ServerValue;\n deferredSize++;\n } else {\n keyNodes[nodesSize] = key;\n valueNodes[nodesSize] = generateTreeSync(ctx, properties[key] as ServerValue);\n nodesSize++;\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes[nodesSize + i] = deferredKeys[i];\n valueNodes[nodesSize + i] = generateTreeSync(ctx, deferredValues[i]);\n }\n return [keyNodes, valueNodes, size];\n}\n\nfunction generateSetNode(\n ctx: ParserContext,\n current: Set<ServerValue>,\n id: number,\n): SerovalSetNode {\n assert(ctx.features & Feature.Set, 'Unsupported type \"Set\"');\n const len = current.size;\n const nodes = new Array<SerovalNode>(len);\n const deferred = new Array<ServerValue>(len);\n let deferredSize = 0;\n let nodeSize = 0;\n for (const item of current.keys()) {\n // Iterables are lazy, so the evaluation must be deferred\n if (isIterable(item)) {\n deferred[deferredSize++] = item;\n } else {\n nodes[nodeSize++] = generateTreeSync(ctx, item);\n }\n }\n // Parse deferred items\n for (let i = 0; i < deferredSize; i++) {\n nodes[nodeSize + i] = generateTreeSync(ctx, deferred[i]);\n }\n return [SerovalNodeType.Set, nodes, id];\n}\n\nfunction generateMapNode(\n ctx: ParserContext,\n current: Map<ServerValue, ServerValue>,\n id: number,\n): SerovalMapNode {\n assert(ctx.features & Feature.Map, 'Unsupported type \"Map\"');\n const len = current.size;\n const keyNodes = new Array<SerovalNode>(len);\n const valueNodes = new Array<SerovalNode>(len);\n const deferredKey = new Array<ServerValue>(len);\n const deferredValue = new Array<ServerValue>(len);\n let deferredSize = 0;\n let nodeSize = 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[deferredSize] = key;\n deferredValue[deferredSize] = value;\n deferredSize++;\n } else {\n keyNodes[nodeSize] = generateTreeSync(ctx, key);\n valueNodes[nodeSize] = generateTreeSync(ctx, value);\n nodeSize++;\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes[nodeSize + i] = generateTreeSync(ctx, deferredKey[i]);\n valueNodes[nodeSize + i] = generateTreeSync(ctx, deferredValue[i]);\n }\n return [SerovalNodeType.Map, [keyNodes, valueNodes, len], id];\n}\n\nfunction generateNodeList(\n ctx: ParserContext,\n current: ServerValue[],\n) {\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 nodes;\n}\n\nfunction generateArrayNode(\n ctx: ParserContext,\n current: ServerValue[],\n id: number,\n): SerovalArrayNode {\n return [SerovalNodeType.Array, generateNodeList(ctx, current), id];\n}\n\nfunction generateAggregateErrorNode(\n ctx: ParserContext,\n current: AggregateError,\n id: number,\n): SerovalAggregateErrorNode {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? serializePropertiesSync(ctx, options)\n : undefined;\n const errorsNode = generateTreeSync(ctx, current.errors as ServerValue);\n return [SerovalNodeType.AggregateError, [current.message, optionsNode, errorsNode], id];\n}\n\nfunction generateErrorNode(\n ctx: ParserContext,\n current: Error,\n id: number,\n): SerovalErrorNode {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? serializePropertiesSync(ctx, options)\n : undefined;\n return [\n SerovalNodeType.Error,\n [getErrorConstructor(current), current.message, optionsNode],\n id,\n ];\n}\n\nfunction generateIterableNode(\n ctx: ParserContext,\n current: Iterable<ServerValue>,\n id: number,\n): SerovalIterableNode {\n assert(ctx.features & Feature.SymbolIterator, 'Unsupported type \"Iterable\"');\n const options = getIterableOptions(current);\n return [SerovalNodeType.Iterable, [\n // Parse options first before the items\n options ? serializePropertiesSync(ctx, options) : undefined,\n generateNodeList(ctx, Array.from(current)),\n ], id];\n}\n\nfunction generateTreeSync(\n ctx: ParserContext,\n current: ServerValue,\n): SerovalNode {\n if (isPrimitive(current)) {\n return [SerovalNodeType.Primitive, serializePrimitive(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 return generateSetNode(ctx, current, id);\n }\n if (constructorCheck<Map<ServerValue, ServerValue>>(current, Map)) {\n return generateMapNode(ctx, current, id);\n }\n if (Array.isArray(current)) {\n return generateArrayNode(ctx, current, id);\n }\n if (current instanceof AggregateError && ctx.features & Feature.AggregateError) {\n return generateAggregateErrorNode(ctx, current, id);\n }\n if (current instanceof Error) {\n return generateErrorNode(ctx, current, id);\n }\n if (isIterable(current)) {\n return generateIterableNode(ctx, current, id);\n }\n const empty = current.constructor == null;\n if (current.constructor === Object || empty) {\n return [\n empty ? SerovalNodeType.NullConstructor : SerovalNodeType.Object,\n serializePropertiesSync(ctx, current as Record<string, unknown>),\n id,\n ];\n }\n throw new Error('Unsupported value');\n}\n\nexport default function parseSync(\n ctx: ParserContext,\n current: ServerValue,\n) {\n const result = generateTreeSync(ctx, current);\n return [result, createRef(ctx, current), result[0] === SerovalNodeType.Object] as const;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable no-await-in-loop */\nimport { isPrimitive } from './checks';\nimport { Feature } from './compat';\nimport {\n SerializationContext,\n getRefParam,\n Options,\n createParserContext,\n createSerializationContext,\n} from './context';\nimport parseAsync from './tree/async';\nimport serializeTree, { resolvePatches } from './tree/serialize';\nimport { serializePrimitive } from './tree/shared';\nimport parseSync from './tree/sync';\nimport { SerovalNode } from './tree/types';\nimport {\n AsyncServerValue,\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(\n ctx: SerializationContext,\n rootID: number,\n isObject: boolean,\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, rootID);\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 & Feature.ArrowFunction) {\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 (isObject) {\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 = createParserContext(options);\n if (isPrimitive(source)) {\n return String(serializePrimitive(source));\n }\n const [tree, rootID, isObject] = parseSync(ctx, source);\n const serial = createSerializationContext(ctx);\n const result = serializeTree(serial, tree);\n return finalize(serial, rootID, isObject, result);\n}\n\nexport async function serializeAsync<T extends AsyncServerValue>(\n source: T,\n options?: Partial<Options>,\n) {\n const ctx = createParserContext(options);\n if (isPrimitive(source)) {\n return String(serializePrimitive(source));\n }\n const [tree, rootID, isObject] = await parseAsync(ctx, source);\n const serial = createSerializationContext(ctx);\n const result = serializeTree(serial, tree);\n return finalize(serial, rootID, isObject, 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\ntype SerovalJSON = [\n tree: SerovalNode,\n root: number,\n isObject: boolean,\n feature: number,\n markedRefs: number[],\n];\n\nexport function toJSON<T extends ServerValue>(\n source: T,\n options?: Partial<Options>,\n) {\n const ctx = createParserContext(options);\n const [tree, root, isObject] = parseSync(ctx, source);\n return JSON.stringify([\n tree,\n root,\n isObject,\n ctx.features,\n [...ctx.markedRefs],\n ]);\n}\n\nexport async function toJSONAsync<T extends AsyncServerValue>(\n source: T,\n options?: Partial<Options>,\n) {\n const ctx = createParserContext(options);\n const [tree, root, isObject] = await parseAsync(ctx, source);\n return JSON.stringify([\n tree,\n root,\n isObject,\n ctx.features,\n [...ctx.markedRefs],\n ]);\n}\n\nexport function compileJSON(source: string): string {\n const parsed = JSON.parse(source) as SerovalJSON;\n const serial = createSerializationContext({\n features: parsed[3],\n markedRefs: parsed[4],\n });\n const result = serializeTree(serial, parsed[0]);\n return finalize(serial, parsed[1], parsed[2], result);\n}\n\nexport function fromJSON<T extends AsyncServerValue>(source: string): T {\n return deserialize<T>(compileJSON(source));\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}\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", "export default function assert(cond: unknown, error: string): asserts cond {\n if (!cond) {\n throw new Error(error);\n }\n}\n", "/* eslint-disable guard-for-in */\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\nexport const enum Feature {\n AggregateError = 0x01,\n ArrayPrototypeValues = 0x02,\n ArrowFunction = 0x04,\n BigInt = 0x08,\n Map = 0x10,\n MethodShorthand = 0x20,\n ObjectAssign = 0x40,\n Promise = 0x80,\n Set = 0x100,\n SymbolIterator = 0x200,\n TypedArray = 0x400,\n BigIntTypedArray = 0x800,\n}\n\ntype VersionTable = {\n [key in Feature]: PlatformVersion;\n}\n\nconst VERSION_TABLE: VersionTable = {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError#browser_compatibility\n [Feature.AggregateError]: {\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 [Feature.ArrayPrototypeValues]: {\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 [Feature.ArrowFunction]: {\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 [Feature.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 [Feature.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 [Feature.MethodShorthand]: {\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 [Feature.ObjectAssign]: {\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 [Feature.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 [Feature.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 [Feature.SymbolIterator]: {\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 [Feature.TypedArray]: {\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 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt64Array#browser_compatibility\n [Feature.BigIntTypedArray]: {\n es: [2020, 0, 0],\n chrome: [67, 0, 0],\n edge: [79, 0, 0],\n firefox: [68, 0, 0],\n opera: [54, 6, 0],\n safari: [15, 1, 0],\n ios: [15, 2, 0],\n samsung: [9, 0, 0],\n deno: [1, 0, 0],\n node: [10, 4, 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\nexport function parseTargets(targets: string | string[]): number {\n const parsed = getTargetVersions(targets);\n let flags = 0;\n\n for (const key in VERSION_TABLE) {\n const base = VERSION_TABLE[key as unknown as Feature];\n let flag = true;\n for (const [platform, version] of parsed) {\n const baseVersion = base[platform];\n flag = flag && !!baseVersion && (compareVersion(baseVersion, version) <= 0);\n }\n if (flag) {\n flags |= Number(key);\n }\n }\n\n return flags;\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 { parseTargets } from './compat';\nimport getIdentifier from './get-identifier';\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 ParserContext {\n refs: Map<unknown, number>;\n markedRefs: Set<number>;\n features: number;\n}\n\nexport interface SerializationContext {\n stack: number[];\n // Map tree refs to actual refs\n validRefs: Map<number, number>;\n // Refs that are...referenced\n markedRefs: Set<number>;\n // Variables\n vars: string[];\n // Array of assignments to be done (used for recursion)\n assignments: Assignment[];\n // Supported features\n features: number;\n}\n\nexport interface Options {\n target: string | string[];\n}\n\nconst DEFAULT_OPTIONS: Options = {\n target: 'es2023',\n};\n\nexport function createParserContext(options: Partial<Options> = {}): ParserContext {\n // eslint-disable-next-line prefer-object-spread\n const result = Object.assign({}, DEFAULT_OPTIONS, options || {});\n return {\n markedRefs: new Set(),\n refs: new Map(),\n features: parseTargets(result.target),\n };\n}\n\nexport interface SerializationOptions {\n markedRefs: number[] | Set<number>;\n features: number;\n}\n\nexport function createSerializationContext(options: SerializationOptions): SerializationContext {\n return {\n stack: [],\n vars: [],\n assignments: [],\n validRefs: new Map(),\n features: options.features,\n markedRefs: new Set(options.markedRefs),\n };\n}\n\n/**\n * Increments the number of references the referenced value has\n */\nexport function markRef(ctx: ParserContext | SerializationContext, current: number) {\n ctx.markedRefs.add(current);\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 * Creates a reference ID from the given values\n */\nexport function createRef(\n ctx: ParserContext,\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", "// 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 assert from '../assert';\nimport { constructorCheck } from '../checks';\nimport { Feature } from '../compat';\nimport { SerializationContext, ParserContext, markRef } from '../context';\nimport quote from '../quote';\nimport { ErrorValue, PrimitiveValue } from '../types';\nimport { SerovalNode, SerovalReferenceNode, SerovalNodeType } from './types';\n\nexport function 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\nexport function 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\nexport function 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\nexport function isReferenceInStack(\n ctx: SerializationContext,\n node: SerovalNode,\n): node is SerovalReferenceNode {\n return node[0] === SerovalNodeType.Reference && ctx.stack.includes(node[1]);\n}\n\nexport function generateRef(\n ctx: ParserContext,\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\nexport function generateSemiPrimitiveValue(\n ctx: ParserContext,\n current: unknown,\n id: number,\n): SerovalNode | undefined {\n if (typeof current === 'bigint') {\n assert(ctx.features & Feature.BigInt, 'Unsupported type \"BigInt\"');\n return [SerovalNodeType.BigInt, `${current}n`];\n }\n if (constructorCheck<Date>(current, Date)) {\n return [SerovalNodeType.Date, current.toISOString(), id];\n }\n if (constructorCheck<RegExp>(current, RegExp)) {\n return [SerovalNodeType.RegExp, String(current), id];\n }\n if (\n constructorCheck<Int8Array>(current, Int8Array)\n || constructorCheck<Int16Array>(current, Int16Array)\n || constructorCheck<Int32Array>(current, Int32Array)\n || constructorCheck<Uint8Array>(current, Uint8Array)\n || constructorCheck<Uint16Array>(current, Uint16Array)\n || constructorCheck<Uint32Array>(current, Uint32Array)\n || constructorCheck<Uint8ClampedArray>(current, Uint8ClampedArray)\n || constructorCheck<Float32Array>(current, Float32Array)\n || constructorCheck<Float64Array>(current, Float64Array)\n ) {\n const constructor = current.constructor.name;\n assert(ctx.features & Feature.TypedArray, `Unsupported value type \"${constructor}\"`);\n return [SerovalNodeType.TypedArray, [constructor, current.toString(), current.byteOffset], id];\n }\n if (\n constructorCheck<BigInt64Array>(current, BigInt64Array)\n || constructorCheck<BigUint64Array>(current, BigUint64Array)\n ) {\n const constructor = current.constructor.name;\n assert(\n ctx.features & (Feature.BigIntTypedArray),\n `Unsupported value type \"${constructor}\"`,\n );\n let result = '';\n const cap = current.length - 1;\n for (let i = 0; i < cap; i++) {\n result += `${current[i]}n,`;\n }\n result += `\"${current[cap]}\"`;\n return [\n SerovalNodeType.BigIntTypedArray,\n [constructor, result, current.byteOffset],\n id,\n ];\n }\n return undefined;\n}\n\nexport function serializePrimitive(\n value: PrimitiveValue,\n): string | number | null {\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 === '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 value;\n}\n", "/* eslint-disable no-await-in-loop */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport assert from '../assert';\nimport {\n isIterable,\n isPrimitive,\n constructorCheck,\n isPromise,\n} from '../checks';\nimport { Feature } from '../compat';\nimport { createRef, ParserContext } from '../context';\nimport { AsyncServerValue } from '../types';\nimport {\n generateRef,\n generateSemiPrimitiveValue,\n getErrorConstructor,\n getErrorOptions,\n getIterableOptions,\n serializePrimitive,\n} from './shared';\nimport {\n SerovalAggregateErrorNode,\n SerovalArrayNode,\n SerovalDictionaryNode,\n SerovalErrorNode,\n SerovalIterableNode,\n SerovalMapNode,\n SerovalNode,\n SerovalNodeType,\n SerovalSetNode,\n} from './types';\n\nasync function serializePropertiesAsync(\n ctx: ParserContext,\n properties: Record<string, unknown>,\n): Promise<SerovalDictionaryNode> {\n const keys = Object.keys(properties);\n const size = keys.length;\n const keyNodes = new Array<string>(size);\n const valueNodes = new Array<SerovalNode>(size);\n const deferredKeys = new Array<string>(size);\n const deferredValues = new Array<AsyncServerValue>(size);\n let deferredSize = 0;\n let nodesSize = 0;\n for (const key of keys) {\n if (isIterable(properties[key])) {\n deferredKeys[deferredSize] = key;\n deferredValues[deferredSize] = properties[key] as AsyncServerValue;\n deferredSize++;\n } else {\n keyNodes[nodesSize] = key;\n valueNodes[nodesSize] = await generateTreeAsync(ctx, properties[key] as AsyncServerValue);\n nodesSize++;\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes[nodesSize + i] = deferredKeys[i];\n valueNodes[nodesSize + i] = await generateTreeAsync(ctx, deferredValues[i]);\n }\n return [keyNodes, valueNodes, size];\n}\n\nasync function generateSetNode(\n ctx: ParserContext,\n current: Set<AsyncServerValue>,\n id: number,\n): Promise<SerovalSetNode> {\n assert(ctx.features & Feature.Set, 'Unsupported type \"Set\"');\n const len = current.size;\n const nodes = new Array<SerovalNode>(len);\n const deferred = new Array<AsyncServerValue>(len);\n let deferredSize = 0;\n let nodeSize = 0;\n for (const item of current.keys()) {\n // Iterables are lazy, so the evaluation must be deferred\n if (isIterable(item)) {\n deferred[deferredSize++] = item;\n } else {\n nodes[nodeSize++] = await generateTreeAsync(ctx, item);\n }\n }\n // Parse deferred items\n for (let i = 0; i < deferredSize; i++) {\n nodes[nodeSize + i] = await generateTreeAsync(ctx, deferred[i]);\n }\n return [SerovalNodeType.Set, nodes, id];\n}\n\nasync function generateMapNode(\n ctx: ParserContext,\n current: Map<AsyncServerValue, AsyncServerValue>,\n id: number,\n): Promise<SerovalMapNode> {\n assert(ctx.features & Feature.Map, 'Unsupported type \"Map\"');\n const len = current.size;\n const keyNodes = new Array<SerovalNode>(len);\n const valueNodes = new Array<SerovalNode>(len);\n const deferredKey = new Array<AsyncServerValue>(len);\n const deferredValue = new Array<AsyncServerValue>(len);\n let deferredSize = 0;\n let nodeSize = 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[deferredSize] = key;\n deferredValue[deferredSize] = value;\n deferredSize++;\n } else {\n keyNodes[nodeSize] = await generateTreeAsync(ctx, key);\n valueNodes[nodeSize] = await generateTreeAsync(ctx, value);\n nodeSize++;\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes[nodeSize + i] = await generateTreeAsync(ctx, deferredKey[i]);\n valueNodes[nodeSize + i] = await generateTreeAsync(ctx, deferredValue[i]);\n }\n return [SerovalNodeType.Map, [keyNodes, valueNodes, len], id];\n}\n\nasync function generateNodeList(\n ctx: ParserContext,\n current: AsyncServerValue[],\n) {\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 if (i in current) {\n if (isIterable(current[i])) {\n deferred[i] = current[i];\n } else {\n nodes[i] = await generateTreeAsync(ctx, current[i]);\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 nodes;\n}\n\nasync function generateArrayNode(\n ctx: ParserContext,\n current: AsyncServerValue[],\n id: number,\n): Promise<SerovalArrayNode> {\n return [SerovalNodeType.Array, await generateNodeList(ctx, current), id];\n}\n\nasync function generateAggregateErrorNode(\n ctx: ParserContext,\n current: AggregateError,\n id: number,\n): Promise<SerovalAggregateErrorNode> {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? await serializePropertiesAsync(ctx, options)\n : undefined;\n const errorsNode = await generateTreeAsync(ctx, current.errors as AsyncServerValue);\n return [\n SerovalNodeType.AggregateError,\n [current.message, optionsNode, errorsNode],\n id,\n ];\n}\n\nasync function generateErrorNode(\n ctx: ParserContext,\n current: Error,\n id: number,\n): Promise<SerovalErrorNode> {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? await serializePropertiesAsync(ctx, options)\n : undefined;\n return [\n SerovalNodeType.Error,\n [getErrorConstructor(current), current.message, optionsNode],\n id,\n ];\n}\n\nasync function generateIterableNode(\n ctx: ParserContext,\n current: Iterable<AsyncServerValue>,\n id: number,\n): Promise<SerovalIterableNode> {\n assert(ctx.features & Feature.SymbolIterator, 'Unsupported type \"Iterable\"');\n const options = getIterableOptions(current);\n return [SerovalNodeType.Iterable, [\n // Parse options first before the items\n options ? await serializePropertiesAsync(ctx, options) : undefined,\n await generateNodeList(ctx, Array.from(current)),\n ], id];\n}\n\nasync function generateTreeAsync(\n ctx: ParserContext,\n current: AsyncServerValue,\n): Promise<SerovalNode> {\n if (isPrimitive(current)) {\n return [SerovalNodeType.Primitive, serializePrimitive(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 (isPromise(current)) {\n assert(ctx.features & Feature.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 return generateSetNode(ctx, current, id);\n }\n if (constructorCheck<Map<AsyncServerValue, AsyncServerValue>>(current, Map)) {\n return generateMapNode(ctx, current, id);\n }\n if (Array.isArray(current)) {\n return generateArrayNode(ctx, current, id);\n }\n if (current instanceof AggregateError && ctx.features & Feature.AggregateError) {\n return generateAggregateErrorNode(ctx, current, id);\n }\n if (current instanceof Error) {\n return generateErrorNode(ctx, current, id);\n }\n if (isIterable(current)) {\n return generateIterableNode(ctx, current, id);\n }\n const empty = current.constructor == null;\n if (current.constructor === Object || empty) {\n return [\n empty ? SerovalNodeType.NullConstructor : SerovalNodeType.Object,\n await serializePropertiesAsync(ctx, current as Record<string, unknown>),\n id,\n ];\n }\n throw new Error('Unsupported value');\n}\n\nexport default async function parseAsync(\n ctx: ParserContext,\n current: AsyncServerValue,\n) {\n const result = await generateTreeAsync(ctx, current);\n return [result, createRef(ctx, current), result[0] === SerovalNodeType.Object] as const;\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { Feature } from '../compat';\nimport {\n SerializationContext,\n Assignment,\n getRefParam,\n markRef,\n} from '../context';\nimport quote from '../quote';\nimport { isReferenceInStack } from './shared';\nimport { SerovalDictionaryNode, SerovalNode, SerovalNodeType } from './types';\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 * 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.has(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 | string,\n value: string,\n) {\n markRef(ctx, ref);\n createAssignment(ctx, `${getRefParam(ctx, ref)}[${index}]`, value);\n}\n\nfunction createObjectAssign(\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\nconst IDENTIFIER_CHECK = /^([$A-Z_][0-9A-Z_$]*)$/i;\n\nfunction serializeAssignments(\n ctx: SerializationContext,\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 const parentAssignment = ctx.assignments;\n ctx.assignments = mainAssignments;\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 isIdentifier = check >= 0 || IDENTIFIER_CHECK.test(key);\n if (isIdentifier && Number.isNaN(check)) {\n createObjectAssign(ctx, targetRef, key, refParam);\n } else {\n createArrayAssign(ctx, targetRef, isIdentifier ? key : quote(key), refParam);\n }\n ctx.assignments = parentAssignment;\n }\n ctx.stack.pop();\n return resolveAssignments(mainAssignments);\n}\n\nfunction serializeObject(\n ctx: SerializationContext,\n sourceID: number,\n [keys, values, size]: SerovalDictionaryNode,\n) {\n if (size === 0) {\n return '{}';\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 const isIdentifier = check >= 0 || IDENTIFIER_CHECK.test(key);\n if (isReferenceInStack(ctx, val)) {\n const refParam = getRefParam(ctx, val[1]);\n if (isIdentifier && Number.isNaN(check)) {\n createObjectAssign(ctx, sourceID, key, refParam);\n } else {\n createArrayAssign(ctx, sourceID, isIdentifier ? key : quote(key), refParam);\n }\n } else {\n result += `${isIdentifier ? key : quote(key)}:${serializeTree(ctx, val)},`;\n }\n }\n ctx.stack.pop();\n return `{${result.substring(0, result.length - 1)}}`;\n}\n\nfunction serializePromise(\n ctx: SerializationContext,\n value: SerovalNode,\n id: number,\n) {\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\nfunction serializeTypedArray(\n ctx: SerializationContext,\n constructor: string,\n init: string,\n byteOffset: number,\n id: number,\n) {\n let args = `[${init}]`;\n if (byteOffset !== 0) {\n args += `,${byteOffset}`;\n }\n return assignRef(ctx, id, `new ${constructor}(${args})`);\n}\n\nfunction serializeSet(\n ctx: SerializationContext,\n value: SerovalNode[],\n id: number,\n) {\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\nfunction serializeMap(\n ctx: SerializationContext,\n keys: SerovalNode[],\n values: SerovalNode[],\n size: number,\n id: number,\n) {\n let serialized = 'new Map';\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 = keys[i];\n const val = values[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\nfunction serializeNodeList(\n ctx: SerializationContext,\n value: SerovalNode[],\n id: number,\n) {\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 for (let i = 0; i < size; i++) {\n const item = value[i];\n // Check if index is a hole\n if (item) {\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 return `[${values}]`;\n}\n\nfunction serializeArray(\n ctx: SerializationContext,\n value: SerovalNode[],\n id: number,\n) {\n ctx.stack.push(id);\n const result = serializeNodeList(ctx, value, id);\n ctx.stack.pop();\n return assignRef(ctx, id, result);\n}\n\nfunction serializeWithObjectAssign(\n ctx: SerializationContext,\n value: SerovalDictionaryNode,\n id: number,\n serialized: string,\n) {\n const fields = serializeObject(ctx, id, value);\n if (fields !== '{}') {\n return `Object.assign(${serialized},${fields})`;\n }\n return serialized;\n}\n\nfunction serializeAggregateError(\n ctx: SerializationContext,\n message: string,\n options: SerovalDictionaryNode | undefined,\n errors: SerovalNode,\n id: number,\n) {\n // Serialize the required arguments\n ctx.stack.push(id);\n let serialized = `new AggregateError(${serializeTree(ctx, errors)},${quote(message)})`;\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 (options) {\n if (ctx.features & Feature.ObjectAssign) {\n serialized = serializeWithObjectAssign(ctx, options, id, serialized);\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(ctx, id, options);\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\nfunction serializeError(\n ctx: SerializationContext,\n constructor: string,\n message: string,\n options: SerovalDictionaryNode | undefined,\n id: number,\n) {\n let serialized = `new ${constructor}(${quote(message)})`;\n if (options) {\n if (ctx.features & Feature.ObjectAssign) {\n serialized = serializeWithObjectAssign(ctx, options, id, serialized);\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(ctx, id, options);\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\nfunction serializeIterable(\n ctx: SerializationContext,\n options: SerovalDictionaryNode | undefined,\n items: SerovalNode[],\n id: number,\n) {\n const parent = ctx.stack;\n ctx.stack = [];\n const values = serializeNodeList(ctx, items, id);\n ctx.stack = parent;\n let serialized: string;\n if (ctx.features & Feature.ArrayPrototypeValues) {\n serialized = `${values}.values()`;\n } else {\n serialized = `${values}[Symbol.iterator]()`;\n }\n if (ctx.features & Feature.ArrowFunction) {\n serialized = `{[Symbol.iterator]:()=>${serialized}}`;\n } else if (ctx.features & Feature.MethodShorthand) {\n serialized = `{[Symbol.iterator](){return ${serialized}}}`;\n } else {\n serialized = `{[Symbol.iterator]:function(){return ${serialized}}}`;\n }\n if (options) {\n if (ctx.features & Feature.ObjectAssign) {\n serialized = serializeWithObjectAssign(ctx, options, id, serialized);\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(ctx, id, options);\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\nfunction serializeNullConstructor(\n ctx: SerializationContext,\n value: SerovalDictionaryNode,\n id: number,\n) {\n let serialized = 'Object.create(null)';\n if (ctx.features & Feature.ObjectAssign) {\n serialized = serializeWithObjectAssign(ctx, value, id, serialized);\n } else {\n markRef(ctx, id);\n const assignments = serializeAssignments(ctx, 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\nexport default function serializeTree(\n ctx: SerializationContext,\n [type, value, id]: SerovalNode,\n): string {\n switch (type) {\n case SerovalNodeType.Primitive:\n return String(value);\n case SerovalNodeType.Reference:\n return getRefParam(ctx, value);\n case SerovalNodeType.Promise:\n return serializePromise(ctx, value, id);\n case SerovalNodeType.BigInt:\n return value;\n case SerovalNodeType.Date:\n return assignRef(ctx, id, `new Date(\"${value}\")`);\n case SerovalNodeType.RegExp:\n return assignRef(ctx, id, value);\n case SerovalNodeType.BigIntTypedArray:\n case SerovalNodeType.TypedArray:\n return serializeTypedArray(ctx, value[0], value[1], value[2], id);\n case SerovalNodeType.Set:\n return serializeSet(ctx, value, id);\n case SerovalNodeType.Map:\n return serializeMap(ctx, value[0], value[1], value[2], id);\n case SerovalNodeType.Array:\n return serializeArray(ctx, value, id);\n case SerovalNodeType.AggregateError:\n return serializeAggregateError(ctx, value[0], value[1], value[2], id);\n case SerovalNodeType.Error:\n return serializeError(ctx, value[0], value[1], value[2], id);\n case SerovalNodeType.Iterable:\n return serializeIterable(ctx, value[0], value[1], id);\n case SerovalNodeType.NullConstructor:\n return serializeNullConstructor(ctx, value, id);\n case SerovalNodeType.Object:\n return assignRef(ctx, id, serializeObject(ctx, id, value));\n default:\n throw new Error('Unsupported type');\n }\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport assert from '../assert';\nimport { isIterable, isPrimitive, constructorCheck } from '../checks';\nimport { Feature } from '../compat';\nimport { createRef, ParserContext } from '../context';\nimport { ServerValue } from '../types';\nimport {\n generateRef,\n generateSemiPrimitiveValue,\n getErrorConstructor,\n getErrorOptions,\n getIterableOptions,\n serializePrimitive,\n} from './shared';\nimport {\n SerovalAggregateErrorNode,\n SerovalArrayNode,\n SerovalDictionaryNode,\n SerovalErrorNode,\n SerovalIterableNode,\n SerovalMapNode,\n SerovalNode,\n SerovalNodeType,\n SerovalSetNode,\n} from './types';\n\nfunction serializePropertiesSync(\n ctx: ParserContext,\n properties: Record<string, unknown>,\n): SerovalDictionaryNode {\n const keys = Object.keys(properties);\n const size = keys.length;\n const keyNodes = new Array<string>(size);\n const valueNodes = new Array<SerovalNode>(size);\n const deferredKeys = new Array<string>(size);\n const deferredValues = new Array<ServerValue>(size);\n let deferredSize = 0;\n let nodesSize = 0;\n for (const key of keys) {\n if (isIterable(properties[key])) {\n deferredKeys[deferredSize] = key;\n deferredValues[deferredSize] = properties[key] as ServerValue;\n deferredSize++;\n } else {\n keyNodes[nodesSize] = key;\n valueNodes[nodesSize] = generateTreeSync(ctx, properties[key] as ServerValue);\n nodesSize++;\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes[nodesSize + i] = deferredKeys[i];\n valueNodes[nodesSize + i] = generateTreeSync(ctx, deferredValues[i]);\n }\n return [keyNodes, valueNodes, size];\n}\n\nfunction generateSetNode(\n ctx: ParserContext,\n current: Set<ServerValue>,\n id: number,\n): SerovalSetNode {\n assert(ctx.features & Feature.Set, 'Unsupported type \"Set\"');\n const len = current.size;\n const nodes = new Array<SerovalNode>(len);\n const deferred = new Array<ServerValue>(len);\n let deferredSize = 0;\n let nodeSize = 0;\n for (const item of current.keys()) {\n // Iterables are lazy, so the evaluation must be deferred\n if (isIterable(item)) {\n deferred[deferredSize++] = item;\n } else {\n nodes[nodeSize++] = generateTreeSync(ctx, item);\n }\n }\n // Parse deferred items\n for (let i = 0; i < deferredSize; i++) {\n nodes[nodeSize + i] = generateTreeSync(ctx, deferred[i]);\n }\n return [SerovalNodeType.Set, nodes, id];\n}\n\nfunction generateMapNode(\n ctx: ParserContext,\n current: Map<ServerValue, ServerValue>,\n id: number,\n): SerovalMapNode {\n assert(ctx.features & Feature.Map, 'Unsupported type \"Map\"');\n const len = current.size;\n const keyNodes = new Array<SerovalNode>(len);\n const valueNodes = new Array<SerovalNode>(len);\n const deferredKey = new Array<ServerValue>(len);\n const deferredValue = new Array<ServerValue>(len);\n let deferredSize = 0;\n let nodeSize = 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[deferredSize] = key;\n deferredValue[deferredSize] = value;\n deferredSize++;\n } else {\n keyNodes[nodeSize] = generateTreeSync(ctx, key);\n valueNodes[nodeSize] = generateTreeSync(ctx, value);\n nodeSize++;\n }\n }\n for (let i = 0; i < deferredSize; i++) {\n keyNodes[nodeSize + i] = generateTreeSync(ctx, deferredKey[i]);\n valueNodes[nodeSize + i] = generateTreeSync(ctx, deferredValue[i]);\n }\n return [SerovalNodeType.Map, [keyNodes, valueNodes, len], id];\n}\n\nfunction generateNodeList(\n ctx: ParserContext,\n current: ServerValue[],\n) {\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 nodes;\n}\n\nfunction generateArrayNode(\n ctx: ParserContext,\n current: ServerValue[],\n id: number,\n): SerovalArrayNode {\n return [SerovalNodeType.Array, generateNodeList(ctx, current), id];\n}\n\nfunction generateAggregateErrorNode(\n ctx: ParserContext,\n current: AggregateError,\n id: number,\n): SerovalAggregateErrorNode {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? serializePropertiesSync(ctx, options)\n : undefined;\n const errorsNode = generateTreeSync(ctx, current.errors as ServerValue);\n return [SerovalNodeType.AggregateError, [current.message, optionsNode, errorsNode], id];\n}\n\nfunction generateErrorNode(\n ctx: ParserContext,\n current: Error,\n id: number,\n): SerovalErrorNode {\n const options = getErrorOptions(current);\n const optionsNode = options\n ? serializePropertiesSync(ctx, options)\n : undefined;\n return [\n SerovalNodeType.Error,\n [getErrorConstructor(current), current.message, optionsNode],\n id,\n ];\n}\n\nfunction generateIterableNode(\n ctx: ParserContext,\n current: Iterable<ServerValue>,\n id: number,\n): SerovalIterableNode {\n assert(ctx.features & Feature.SymbolIterator, 'Unsupported type \"Iterable\"');\n const options = getIterableOptions(current);\n return [SerovalNodeType.Iterable, [\n // Parse options first before the items\n options ? serializePropertiesSync(ctx, options) : undefined,\n generateNodeList(ctx, Array.from(current)),\n ], id];\n}\n\nfunction generateTreeSync(\n ctx: ParserContext,\n current: ServerValue,\n): SerovalNode {\n if (isPrimitive(current)) {\n return [SerovalNodeType.Primitive, serializePrimitive(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 return generateSetNode(ctx, current, id);\n }\n if (constructorCheck<Map<ServerValue, ServerValue>>(current, Map)) {\n return generateMapNode(ctx, current, id);\n }\n if (Array.isArray(current)) {\n return generateArrayNode(ctx, current, id);\n }\n if (current instanceof AggregateError && ctx.features & Feature.AggregateError) {\n return generateAggregateErrorNode(ctx, current, id);\n }\n if (current instanceof Error) {\n return generateErrorNode(ctx, current, id);\n }\n if (isIterable(current)) {\n return generateIterableNode(ctx, current, id);\n }\n const empty = current.constructor == null;\n if (current.constructor === Object || empty) {\n return [\n empty ? SerovalNodeType.NullConstructor : SerovalNodeType.Object,\n serializePropertiesSync(ctx, current as Record<string, unknown>),\n id,\n ];\n }\n throw new Error('Unsupported value');\n}\n\nexport default function parseSync(\n ctx: ParserContext,\n current: ServerValue,\n) {\n const result = generateTreeSync(ctx, current);\n return [result, createRef(ctx, current), result[0] === SerovalNodeType.Object] as const;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["generateSetNode", "generateMapNode", "generateNodeList", "generateArrayNode", "generateAggregateErrorNode", "generateErrorNode", "generateIterableNode"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var J=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var ce=Object.prototype.hasOwnProperty;var ye=(e,r)=>{for(var t in r)J(e,t,{get:r[t],enumerable:!0})},Se=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of ge(r))!ce.call(e,o)&&o!==t&&J(e,o,{get:()=>r[o],enumerable:!(n=de(r,o))||n.enumerable});return e};var ve=e=>Se(J({},"__esModule",{value:!0}),e);var er={};ye(er,{compileJSON:()=>pe,default:()=>xe,deserialize:()=>me,fromJSON:()=>Ye,serialize:()=>le,serializeAsync:()=>Ze,toJSON:()=>Xe,toJSONAsync:()=>Qe});module.exports=ve(er);function k(e){if(!e||e===!0)return!0;let r=typeof e;return r==="number"||r==="string"}function G(e){return!!e&&(typeof e=="object"||typeof e=="function")&&"then"in e&&typeof e.then=="function"}function m(e,r){return e.constructor===r}function Ae(e){return Array.isArray(e)||m(e,Set)||m(e,Map)}function S(e){return!!e&&typeof e=="object"&&!Ae(e)&&Symbol.iterator in e&&typeof e[Symbol.iterator]=="function"}function g(e,r){if(!e)throw new Error(r)}function be(e,r){let t=e[0]-r[0];return t===0&&(t=e[1]-r[1]),t===0&&(t=e[2]-r[2]),t}var W={[1]:{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]},[2]:{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]},[4]:{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]},[8]:{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]},[16]:{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]},[32]:{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]},[64]:{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]},[128]:{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]},[256]:{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]},[512]:{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]},[1024]:{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]},[2048]:{es:[2020,0,0],chrome:[67,0,0],edge:[79,0,0],firefox:[68,0,0],opera:[54,6,0],safari:[15,1,0],ios:[15,2,0],samsung:[9,0,0],deno:[1,0,0],node:[10,4,0]}},Ne=/^(es|chrome|edge|safari|firefox|opera|ios|samsung|deno|node)([0-9]+(\.[0-9]+(\.[0-9]+)?)?)$/i;function Z(e){let r=Ne.exec(e);g(r,`Invalid target "${e}"`);let[,t,n]=r,[o,s="0",a="0"]=n.split(".");return[t,[Number(o),Number(s),Number(a)]]}function Pe(e){if(Array.isArray(e)){let r=[];for(let t of e)r.push(Z(t));return r}return[Z(e)]}function X(e){let r=Pe(e),t=0;for(let n in W){let o=W[n],s=!0;for(let[a,f]of r){let u=o[a];s=s&&!!u&&be(u,f)<=0}s&&(t|=Number(n))}return t}var x="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",Q=x.length,ee="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",Y=ee.length;function L(e){let r=e%Q,t=x[r];for(e=(e-r)/Q;e>0;)r=e%Y,t+=ee[r],e=(e-r)/Y;return t}var ke={target:"es2023"};function w(e={}){let r=Object.assign({},ke,e||{});return{markedRefs:new Set,refs:new Map,features:X(r.target)}}function h(e){return{stack:[],vars:[],assignments:[],validRefs:new Map,features:e.features,markedRefs:new Set(e.markedRefs)}}function b(e,r){e.markedRefs.add(r)}function Ve(e,r){let t=e.validRefs.get(r);if(t!=null)return t;let n=e.validRefs.size;return e.validRefs.set(r,n),n}function p(e,r){let t=Ve(e,r);if(e.vars[t])return e.vars[t];let n=L(t);return e.vars[t]=n,n}function $(e,r){let t=e.refs.get(r);if(t!=null)return t;let n=e.refs.size;return e.refs.set(r,n),n}function N(e){let r="",t=0;for(let n=0,o=e.length;n<o;n++){let s;switch(e[n]){case'"':s='\\"';break;case"\\":s="\\\\";break;case"<":s="\\x3C";break;case`
2
- `:s="\\n";break;case"\r":s="\\r";break;case"\u2028":s="\\u2028";break;case"\u2029":s="\\u2029";break;default:continue}r+=e.slice(t,n)+s,t=n+1}return t===0?r=e:r+=e.slice(t),`"${r}"`}function z(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 E(e){let r,t=z(e);e.name!==t?r={name:e.name}:e.constructor.name!==t&&(r={name:e.constructor.name});let n=Object.getOwnPropertyNames(e);for(let o of n)o!=="name"&&o!=="message"&&(r=r||{},r[o]=e[o]);return r}function I(e){let r=Object.getOwnPropertyNames(e);if(r.length){let t={};for(let n of r)t[n]=e[n];return t}}function P(e,r){return r[0]===2&&e.stack.includes(r[1])}function O(e,r){if(e.refs.has(r)){let o=e.refs.get(r)||0;return b(e,o),[2,o]}let n=e.refs.size;return e.refs.set(r,n),n}function T(e,r,t){if(typeof r=="bigint")return g(e.features&8,'Unsupported type "BigInt"'),[1,`${r}n`];if(m(r,Date))return[3,r.toISOString(),t];if(m(r,RegExp))return[4,String(r),t];if(m(r,Int8Array)||m(r,Int16Array)||m(r,Int32Array)||m(r,Uint8Array)||m(r,Uint16Array)||m(r,Uint32Array)||m(r,Uint8ClampedArray)||m(r,Float32Array)||m(r,Float64Array)){let n=r.constructor.name;return g(e.features&1024,`Unsupported value type "${n}"`),[14,[n,r.toString(),r.byteOffset],t]}if(m(r,BigInt64Array)||m(r,BigUint64Array)){let n=r.constructor.name;g(e.features&2048,`Unsupported value type "${n}"`);let o="",s=r.length-1;for(let a=0;a<s;a++)o+=`${r[a]}n,`;return o+=`"${r[s]}"`,[15,[n,o,r.byteOffset],t]}}function V(e){return e===!0?"!0":e===!1?"!1":e===void 0?"void 0":e===null?null:typeof e=="string"?N(e):Object.is(e,-0)?"-0":Object.is(e,1/0)?"1/0":Object.is(e,-1/0)?"-1/0":e}async function M(e,r){let t=Object.keys(r),n=t.length,o=new Array(n),s=new Array(n),a=new Array(n),f=new Array(n),u=0,l=0;for(let i of t)S(r[i])?(a[u]=i,f[u]=r[i],u++):(o[l]=i,s[l]=await v(e,r[i]),l++);for(let i=0;i<u;i++)o[l+i]=a[i],s[l+i]=await v(e,f[i]);return[o,s,n]}async function Ee(e,r,t){g(e.features&256,'Unsupported type "Set"');let n=r.size,o=new Array(n),s=new Array(n),a=0,f=0;for(let u of r.keys())S(u)?s[a++]=u:o[f++]=await v(e,u);for(let u=0;u<a;u++)o[f+u]=await v(e,s[u]);return[5,o,t]}async function we(e,r,t){g(e.features&16,'Unsupported type "Map"');let n=r.size,o=new Array(n),s=new Array(n),a=new Array(n),f=new Array(n),u=0,l=0;for(let[i,d]of r.entries())S(i)||S(d)?(a[u]=i,f[u]=d,u++):(o[l]=await v(e,i),s[l]=await v(e,d),l++);for(let i=0;i<u;i++)o[l+i]=await v(e,a[i]),s[l+i]=await v(e,f[i]);return[6,[o,s,n],t]}async function re(e,r){let t=r.length,n=new Array(t),o=new Array(t);for(let s=0;s<t;s++)s in r&&(S(r[s])?o[s]=r[s]:n[s]=await v(e,r[s]));for(let s=0;s<t;s++)s in o&&(n[s]=await v(e,o[s]));return n}async function ze(e,r,t){return[7,await re(e,r),t]}async function Ce(e,r,t){let n=E(r),o=n?await M(e,n):void 0,s=await v(e,r.errors);return[12,[r.message,o,s],t]}async function he(e,r,t){let n=E(r),o=n?await M(e,n):void 0;return[11,[z(r),r.message,o],t]}async function $e(e,r,t){g(e.features&512,'Unsupported type "Iterable"');let n=I(r);return[13,[n?await M(e,n):void 0,await re(e,Array.from(r))],t]}async function v(e,r){if(k(r))return[0,V(r)];let t=O(e,r);if(Array.isArray(t))return t;let n=T(e,r,t);if(n)return n;if(G(r))return g(e.features&128,'Unsupported type "Promise"'),r.then(async s=>[10,await v(e,s),t]);if(m(r,Set))return Ee(e,r,t);if(m(r,Map))return we(e,r,t);if(Array.isArray(r))return ze(e,r,t);if(r instanceof AggregateError&&e.features&1)return Ce(e,r,t);if(r instanceof Error)return he(e,r,t);if(S(r))return $e(e,r,t);let o=r.constructor==null;if(r.constructor===Object||o)return[o?9:8,await M(e,r),t];throw new Error("Unsupported value")}async function j(e,r){let t=await v(e,r);return[t,$(e,r),t[0]===8]}function D(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 Re(e){let r=[],t=e[0],n=t;for(let o=1,s=e.length;o<s;o++){let a=e[o];a.type===n.type?a.type==="index"&&a.value===n.value?t={type:"index",source:a.source,value:D(t)}:a.type==="map"&&a.source===n.source?t={type:"map",source:D(t),key:a.key,value:a.value}:a.type==="set"&&a.source===n.source?t={type:"set",source:D(t),value:a.value}:(r.push(t),t=a):(r.push(t),t=a),n=a}return r.push(t),r}function te(e){if(e.length){let r="",t=Re(e);for(let n=0,o=t.length;n<o;n++)r+=`${D(t[n])},`;return r}}function ne(e){return te(e.assignments)}function c(e,r,t){return e.markedRefs.has(r)?`${p(e,r)}=${t}`:t}function oe(e,r,t){e.assignments.push({type:"index",source:r,value:t})}function Ie(e,r,t){b(e,r),e.assignments.push({type:"set",source:p(e,r),value:t})}function H(e,r,t,n){b(e,r),e.assignments.push({type:"map",source:p(e,r),key:t,value:n})}function Oe(e,r,t,n){b(e,r),oe(e,`${p(e,r)}[${t}]`,n)}function se(e,r,t,n,o){b(e,r);let s=o?`[${t}]`:`.${t}`;oe(e,`${p(e,r)}${s}`,n)}var ae=/^([$A-Z_][0-9A-Z_$]*)$/i;function U(e,r,[t,n,o]){e.stack.push(r);let s=[];for(let a=0;a<o;a++){let f=e.stack;e.stack=[];let u=y(e,n[a]);e.stack=f;let l=t[a],i=Number(l),d=e.assignments;e.assignments=s;let C=i>=0||ae.test(l);se(e,r,C?l:N(l),u,!(C&&Number.isNaN(i))),e.assignments=d}return e.stack.pop(),te(s)}function ie(e,r,[t,n,o]){if(o===0)return"{}";let s="";e.stack.push(r);for(let a=0;a<o;a++){let f=t[a],u=n[a],l=Number(f),i=l>=0||ae.test(f),d=i?f:N(f);if(P(e,u)){let C=p(e,u[1]);se(e,r,d,C,!(i&&Number.isNaN(l)))}else s+=`${d}:${y(e,u)},`}return e.stack.pop(),`{${s.substring(0,s.length-1)}}`}function Te(e,r,t){let n;if(P(e,r))n=`Promise.resolve().then(()=>${p(e,r[1])})`;else{e.stack.push(t);let o=y(e,r);e.stack.pop(),n=`Promise.resolve(${o})`}return c(e,t,n)}function Me(e,r,t,n,o){let s=`[${t}]`;return n!==0&&(s+=`,${n}`),c(e,o,`new ${r}(${s})`)}function je(e,r,t){let n="new Set",o=r.length;if(o){let s="";e.stack.push(t);for(let a=0;a<o;a++){let f=r[a];P(e,f)?Ie(e,t,p(e,f[1])):s+=`${y(e,f)},`}e.stack.pop(),s&&(n+=`([${s.substring(0,s.length-1)}])`)}return c(e,t,n)}function De(e,r,t,n,o){let s="new Map";if(n){let a="";e.stack.push(o);for(let f=0;f<n;f++){let u=r[f],l=t[f];if(P(e,u)){let i=p(e,u[1]);if(P(e,l)){let d=p(e,l[1]);H(e,o,i,d)}else{let d=e.stack;e.stack=[],H(e,o,i,y(e,l)),e.stack=d}}else if(P(e,l)){let i=p(e,l[1]),d=e.stack;e.stack=[],H(e,o,y(e,u),i),e.stack=d}else a+=`[${y(e,u)},${y(e,l)}],`}e.stack.pop(),a&&(s+=`([${a.substring(0,a.length-1)}])`)}return c(e,o,s)}function ue(e,r,t){let n=r.length,o="";for(let s=0;s<n;s++){let a=r[s];a?P(e,a)?(Oe(e,t,s,p(e,a[1])),o+=","):(o+=y(e,a),s<n-1&&(o+=",")):o+=","}return`[${o}]`}function Ue(e,r,t){e.stack.push(t);let n=ue(e,r,t);return e.stack.pop(),c(e,t,n)}function B(e,r,t,n){let o=ie(e,t,r);return o!=="{}"?`Object.assign(${n},${o})`:n}function Be(e,r,t,n,o){e.stack.push(o);let s=`new AggregateError(${y(e,n)},${N(r)})`;if(e.stack.pop(),t)if(e.features&64)s=B(e,t,o,s);else{b(e,o);let a=U(e,o,t);if(a){let f=p(e,o);return`(${c(e,o,s)},${a}${f})`}}return c(e,o,s)}function _e(e,r,t,n,o){let s=`new ${r}(${N(t)})`;if(n)if(e.features&64)s=B(e,n,o,s);else{b(e,o);let a=U(e,o,n);if(a){let f=p(e,o);return`(${c(e,o,s)},${a}${f})`}}return c(e,o,s)}function Fe(e,r,t,n){let o=e.stack;e.stack=[];let s=ue(e,t,n);e.stack=o;let a;if(e.features&2?a=`${s}.values()`:a=`${s}[Symbol.iterator]()`,e.features&4?a=`{[Symbol.iterator]:()=>${a}}`:e.features&32?a=`{[Symbol.iterator](){return ${a}}}`:a=`{[Symbol.iterator]:function(){return ${a}}}`,r)if(e.features&64)a=B(e,r,n,a);else{b(e,n);let f=U(e,n,r);if(f){let u=p(e,n);return`(${c(e,n,a)},${f}${u})`}}return c(e,n,a)}function Je(e,r,t){let n="Object.create(null)";if(e.features&64)n=B(e,r,t,n);else{b(e,t);let o=U(e,t,r);if(o){let s=p(e,t);return`(${c(e,t,n)},${o}${s})`}}return c(e,t,n)}function y(e,[r,t,n]){switch(r){case 0:return String(t);case 2:return p(e,t);case 10:return Te(e,t,n);case 1:return t;case 3:return c(e,n,`new Date("${t}")`);case 4:return c(e,n,t);case 15:case 14:return Me(e,t[0],t[1],t[2],n);case 5:return je(e,t,n);case 6:return De(e,t[0],t[1],t[2],n);case 7:return Ue(e,t,n);case 12:return Be(e,t[0],t[1],t[2],n);case 11:return _e(e,t[0],t[1],t[2],n);case 13:return Fe(e,t[0],t[1],n);case 9:return Je(e,t,n);case 8:return c(e,n,ie(e,n,t));default:throw new Error("Unsupported type")}}function _(e,r){let t=Object.keys(r),n=t.length,o=new Array(n),s=new Array(n),a=new Array(n),f=new Array(n),u=0,l=0;for(let i of t)S(r[i])?(a[u]=i,f[u]=r[i],u++):(o[l]=i,s[l]=A(e,r[i]),l++);for(let i=0;i<u;i++)o[l+i]=a[i],s[l+i]=A(e,f[i]);return[o,s,n]}function Le(e,r,t){g(e.features&256,'Unsupported type "Set"');let n=r.size,o=new Array(n),s=new Array(n),a=0,f=0;for(let u of r.keys())S(u)?s[a++]=u:o[f++]=A(e,u);for(let u=0;u<a;u++)o[f+u]=A(e,s[u]);return[5,o,t]}function Ke(e,r,t){g(e.features&16,'Unsupported type "Map"');let n=r.size,o=new Array(n),s=new Array(n),a=new Array(n),f=new Array(n),u=0,l=0;for(let[i,d]of r.entries())S(i)||S(d)?(a[u]=i,f[u]=d,u++):(o[l]=A(e,i),s[l]=A(e,d),l++);for(let i=0;i<u;i++)o[l+i]=A(e,a[i]),s[l+i]=A(e,f[i]);return[6,[o,s,n],t]}function fe(e,r){let t=r.length,n=new Array(t),o=new Array(t);for(let s=0;s<t;s++)s in r&&(S(r[s])?o[s]=r[s]:n[s]=A(e,r[s]));for(let s=0;s<t;s++)s in o&&(n[s]=A(e,o[s]));return n}function He(e,r,t){return[7,fe(e,r),t]}function qe(e,r,t){let n=E(r),o=n?_(e,n):void 0,s=A(e,r.errors);return[12,[r.message,o,s],t]}function Ge(e,r,t){let n=E(r),o=n?_(e,n):void 0;return[11,[z(r),r.message,o],t]}function We(e,r,t){g(e.features&512,'Unsupported type "Iterable"');let n=I(r);return[13,[n?_(e,n):void 0,fe(e,Array.from(r))],t]}function A(e,r){if(k(r))return[0,V(r)];let t=O(e,r);if(Array.isArray(t))return t;let n=T(e,r,t);if(n)return n;if(m(r,Set))return Le(e,r,t);if(m(r,Map))return Ke(e,r,t);if(Array.isArray(r))return He(e,r,t);if(r instanceof AggregateError&&e.features&1)return qe(e,r,t);if(r instanceof Error)return Ge(e,r,t);if(S(r))return We(e,r,t);let o=r.constructor==null;if(r.constructor===Object||o)return[o?9:8,_(e,r),t];throw new Error("Unsupported value")}function F(e,r){let t=A(e,r);return[t,$(e,r),t[0]===8]}function q(e,r,t,n){if(e.vars.length){let o=ne(e),s=n;if(o){let f=p(e,r);n.startsWith(`${f}=`)?s=`${n},${o}${f}`:s=`${f}=${n},${o}${f}`}let a=e.vars.length>1?e.vars.join(","):e.vars[0];return e.features&4?(a=e.vars.length>1||e.vars.length===0?`(${a})`:a,`(${a}=>(${s}))()`):`(function(${a}){return ${s}})()`}return t?`(${n})`:n}function le(e,r){let t=w(r);if(k(e))return String(V(e));let[n,o,s]=F(t,e),a=h(t),f=y(a,n);return q(a,o,s,f)}async function Ze(e,r){let t=w(r);if(k(e))return String(V(e));let[n,o,s]=await j(t,e),a=h(t),f=y(a,n);return q(a,o,s,f)}function me(e){return(0,eval)(e)}function Xe(e,r){let t=w(r),[n,o,s]=F(t,e);return JSON.stringify([n,o,s,t.features,[...t.markedRefs]])}async function Qe(e,r){let t=w(r),[n,o,s]=await j(t,e);return JSON.stringify([n,o,s,t.features,[...t.markedRefs]])}function pe(e){let r=JSON.parse(e),t=h({features:r[3],markedRefs:r[4]}),n=y(t,r[0]);return q(t,r[1],r[2],n)}function Ye(e){return me(pe(e))}var xe=le;
1
+ "use strict";var F=Object.defineProperty;var ge=Object.getOwnPropertyDescriptor;var ye=Object.getOwnPropertyNames;var ce=Object.prototype.hasOwnProperty;var Se=(e,r)=>{for(var t in r)F(e,t,{get:r[t],enumerable:!0})},ve=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of ye(r))!ce.call(e,o)&&o!==t&&F(e,o,{get:()=>r[o],enumerable:!(n=ge(r,o))||n.enumerable});return e};var Ae=e=>ve(F({},"__esModule",{value:!0}),e);var er={};Se(er,{compileJSON:()=>de,default:()=>xe,deserialize:()=>pe,fromJSON:()=>Ye,serialize:()=>me,serializeAsync:()=>Ze,toJSON:()=>Xe,toJSONAsync:()=>Qe});module.exports=Ae(er);function k(e){if(!e||e===!0)return!0;let r=typeof e;return r==="number"||r==="string"}function W(e){return!!e&&(typeof e=="object"||typeof e=="function")&&"then"in e&&typeof e.then=="function"}function m(e,r){return e.constructor===r}function be(e){return Array.isArray(e)||m(e,Set)||m(e,Map)}function S(e){return!!e&&typeof e=="object"&&!be(e)&&Symbol.iterator in e&&typeof e[Symbol.iterator]=="function"}function g(e,r){if(!e)throw new Error(r)}function Ne(e,r){let t=e[0]-r[0];return t===0&&(t=e[1]-r[1]),t===0&&(t=e[2]-r[2]),t}var Z={[1]:{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]},[2]:{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]},[4]:{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]},[8]:{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]},[16]:{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]},[32]:{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]},[64]:{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]},[128]:{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]},[256]:{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]},[512]:{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]},[1024]:{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]},[2048]:{es:[2020,0,0],chrome:[67,0,0],edge:[79,0,0],firefox:[68,0,0],opera:[54,6,0],safari:[15,1,0],ios:[15,2,0],samsung:[9,0,0],deno:[1,0,0],node:[10,4,0]}},Pe=/^(es|chrome|edge|safari|firefox|opera|ios|samsung|deno|node)([0-9]+(\.[0-9]+(\.[0-9]+)?)?)$/i;function X(e){let r=Pe.exec(e);g(r,`Invalid target "${e}"`);let[,t,n]=r,[o,s="0",a="0"]=n.split(".");return[t,[Number(o),Number(s),Number(a)]]}function ke(e){if(Array.isArray(e)){let r=[];for(let t of e)r.push(X(t));return r}return[X(e)]}function Q(e){let r=ke(e),t=0;for(let n in Z){let o=Z[n],s=!0;for(let[a,u]of r){let f=o[a];s=s&&!!f&&Ne(f,u)<=0}s&&(t|=Number(n))}return t}var ee="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",Y=ee.length,re="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",x=re.length;function J(e){let r=e%Y,t=ee[r];for(e=(e-r)/Y;e>0;)r=e%x,t+=re[r],e=(e-r)/x;return t}var Ve={target:"es2023"};function w(e={}){let r=Object.assign({},Ve,e||{});return{markedRefs:new Set,refs:new Map,features:Q(r.target)}}function C(e){return{stack:[],vars:[],assignments:[],validRefs:new Map,features:e.features,markedRefs:new Set(e.markedRefs)}}function b(e,r){e.markedRefs.add(r)}function Ee(e,r){let t=e.validRefs.get(r);if(t!=null)return t;let n=e.validRefs.size;return e.validRefs.set(r,n),n}function p(e,r){let t=Ee(e,r);if(e.vars[t])return e.vars[t];let n=J(t);return e.vars[t]=n,n}function h(e,r){let t=e.refs.get(r);if(t!=null)return t;let n=e.refs.size;return e.refs.set(r,n),n}function N(e){let r="",t=0;for(let n=0,o=e.length;n<o;n++){let s;switch(e[n]){case'"':s='\\"';break;case"\\":s="\\\\";break;case"<":s="\\x3C";break;case`
2
+ `:s="\\n";break;case"\r":s="\\r";break;case"\u2028":s="\\u2028";break;case"\u2029":s="\\u2029";break;default:continue}r+=e.slice(t,n)+s,t=n+1}return t===0?r=e:r+=e.slice(t),`"${r}"`}function z(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 E(e){let r,t=z(e);e.name!==t?r={name:e.name}:e.constructor.name!==t&&(r={name:e.constructor.name});let n=Object.getOwnPropertyNames(e);for(let o of n)o!=="name"&&o!=="message"&&(r=r||{},r[o]=e[o]);return r}function R(e){let r=Object.getOwnPropertyNames(e);if(r.length){let t={};for(let n of r)t[n]=e[n];return t}}function P(e,r){return r[0]===2&&e.stack.includes(r[1])}function I(e,r){if(e.refs.has(r)){let o=e.refs.get(r)||0;return b(e,o),[2,o]}let n=e.refs.size;return e.refs.set(r,n),n}function O(e,r,t){if(typeof r=="bigint")return g(e.features&8,'Unsupported type "BigInt"'),[1,`${r}n`];if(m(r,Date))return[3,r.toISOString(),t];if(m(r,RegExp))return[4,String(r),t];if(m(r,Int8Array)||m(r,Int16Array)||m(r,Int32Array)||m(r,Uint8Array)||m(r,Uint16Array)||m(r,Uint32Array)||m(r,Uint8ClampedArray)||m(r,Float32Array)||m(r,Float64Array)){let n=r.constructor.name;return g(e.features&1024,`Unsupported value type "${n}"`),[14,[n,r.toString(),r.byteOffset],t]}if(m(r,BigInt64Array)||m(r,BigUint64Array)){let n=r.constructor.name;g(e.features&2048,`Unsupported value type "${n}"`);let o="",s=r.length-1;for(let a=0;a<s;a++)o+=`${r[a]}n,`;return o+=`"${r[s]}"`,[15,[n,o,r.byteOffset],t]}}function V(e){return e===!0?"!0":e===!1?"!1":e===void 0?"void 0":e===null?null:typeof e=="string"?N(e):Object.is(e,-0)?"-0":Object.is(e,1/0)?"1/0":Object.is(e,-1/0)?"-1/0":e}async function T(e,r){let t=Object.keys(r),n=t.length,o=new Array(n),s=new Array(n),a=new Array(n),u=new Array(n),f=0,l=0;for(let i of t)S(r[i])?(a[f]=i,u[f]=r[i],f++):(o[l]=i,s[l]=await v(e,r[i]),l++);for(let i=0;i<f;i++)o[l+i]=a[i],s[l+i]=await v(e,u[i]);return[o,s,n]}async function we(e,r,t){g(e.features&256,'Unsupported type "Set"');let n=r.size,o=new Array(n),s=new Array(n),a=0,u=0;for(let f of r.keys())S(f)?s[a++]=f:o[u++]=await v(e,f);for(let f=0;f<a;f++)o[u+f]=await v(e,s[f]);return[5,o,t]}async function ze(e,r,t){g(e.features&16,'Unsupported type "Map"');let n=r.size,o=new Array(n),s=new Array(n),a=new Array(n),u=new Array(n),f=0,l=0;for(let[i,d]of r.entries())S(i)||S(d)?(a[f]=i,u[f]=d,f++):(o[l]=await v(e,i),s[l]=await v(e,d),l++);for(let i=0;i<f;i++)o[l+i]=await v(e,a[i]),s[l+i]=await v(e,u[i]);return[6,[o,s,n],t]}async function te(e,r){let t=r.length,n=new Array(t),o=new Array(t);for(let s=0;s<t;s++)s in r&&(S(r[s])?o[s]=r[s]:n[s]=await v(e,r[s]));for(let s=0;s<t;s++)s in o&&(n[s]=await v(e,o[s]));return n}async function Ce(e,r,t){return[7,await te(e,r),t]}async function he(e,r,t){let n=E(r),o=n?await T(e,n):void 0,s=await v(e,r.errors);return[12,[r.message,o,s],t]}async function $e(e,r,t){let n=E(r),o=n?await T(e,n):void 0;return[11,[z(r),r.message,o],t]}async function Re(e,r,t){g(e.features&512,'Unsupported type "Iterable"');let n=R(r);return[13,[n?await T(e,n):void 0,await te(e,Array.from(r))],t]}async function v(e,r){if(k(r))return[0,V(r)];let t=I(e,r);if(Array.isArray(t))return t;let n=O(e,r,t);if(n)return n;if(W(r))return g(e.features&128,'Unsupported type "Promise"'),r.then(async s=>[10,await v(e,s),t]);if(m(r,Set))return we(e,r,t);if(m(r,Map))return ze(e,r,t);if(Array.isArray(r))return Ce(e,r,t);if(r instanceof AggregateError&&e.features&1)return he(e,r,t);if(r instanceof Error)return $e(e,r,t);if(S(r))return Re(e,r,t);let o=r.constructor==null;if(r.constructor===Object||o)return[o?9:8,await T(e,r),t];throw new Error("Unsupported value")}async function M(e,r){let t=await v(e,r);return[t,h(e,r),t[0]===8]}function j(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 Ie(e){let r=[],t=e[0],n=t;for(let o=1,s=e.length;o<s;o++){let a=e[o];a.type===n.type?a.type==="index"&&a.value===n.value?t={type:"index",source:a.source,value:j(t)}:a.type==="map"&&a.source===n.source?t={type:"map",source:j(t),key:a.key,value:a.value}:a.type==="set"&&a.source===n.source?t={type:"set",source:j(t),value:a.value}:(r.push(t),t=a):(r.push(t),t=a),n=a}return r.push(t),r}function ne(e){if(e.length){let r="",t=Ie(e);for(let n=0,o=t.length;n<o;n++)r+=`${j(t[n])},`;return r}}function oe(e){return ne(e.assignments)}function y(e,r,t){return e.markedRefs.has(r)?`${p(e,r)}=${t}`:t}function se(e,r,t){e.assignments.push({type:"index",source:r,value:t})}function Oe(e,r,t){b(e,r),e.assignments.push({type:"set",source:p(e,r),value:t})}function H(e,r,t,n){b(e,r),e.assignments.push({type:"map",source:p(e,r),key:t,value:n})}function K(e,r,t,n){b(e,r),se(e,`${p(e,r)}[${t}]`,n)}function ae(e,r,t,n){b(e,r),se(e,`${p(e,r)}.${t}`,n)}var ie=/^([$A-Z_][0-9A-Z_$]*)$/i;function D(e,r,[t,n,o]){e.stack.push(r);let s=[];for(let a=0;a<o;a++){let u=e.stack;e.stack=[];let f=c(e,n[a]);e.stack=u;let l=t[a],i=Number(l),d=e.assignments;e.assignments=s;let G=i>=0||ie.test(l);G&&Number.isNaN(i)?ae(e,r,l,f):K(e,r,G?l:N(l),f),e.assignments=d}return e.stack.pop(),ne(s)}function ue(e,r,[t,n,o]){if(o===0)return"{}";let s="";e.stack.push(r);for(let a=0;a<o;a++){let u=t[a],f=n[a],l=Number(u),i=l>=0||ie.test(u);if(P(e,f)){let d=p(e,f[1]);i&&Number.isNaN(l)?ae(e,r,u,d):K(e,r,i?u:N(u),d)}else s+=`${i?u:N(u)}:${c(e,f)},`}return e.stack.pop(),`{${s.substring(0,s.length-1)}}`}function Te(e,r,t){let n;if(P(e,r))n=`Promise.resolve().then(()=>${p(e,r[1])})`;else{e.stack.push(t);let o=c(e,r);e.stack.pop(),n=`Promise.resolve(${o})`}return y(e,t,n)}function Me(e,r,t,n,o){let s=`[${t}]`;return n!==0&&(s+=`,${n}`),y(e,o,`new ${r}(${s})`)}function je(e,r,t){let n="new Set",o=r.length;if(o){let s="";e.stack.push(t);for(let a=0;a<o;a++){let u=r[a];P(e,u)?Oe(e,t,p(e,u[1])):s+=`${c(e,u)},`}e.stack.pop(),s&&(n+=`([${s.substring(0,s.length-1)}])`)}return y(e,t,n)}function De(e,r,t,n,o){let s="new Map";if(n){let a="";e.stack.push(o);for(let u=0;u<n;u++){let f=r[u],l=t[u];if(P(e,f)){let i=p(e,f[1]);if(P(e,l)){let d=p(e,l[1]);H(e,o,i,d)}else{let d=e.stack;e.stack=[],H(e,o,i,c(e,l)),e.stack=d}}else if(P(e,l)){let i=p(e,l[1]),d=e.stack;e.stack=[],H(e,o,c(e,f),i),e.stack=d}else a+=`[${c(e,f)},${c(e,l)}],`}e.stack.pop(),a&&(s+=`([${a.substring(0,a.length-1)}])`)}return y(e,o,s)}function fe(e,r,t){let n=r.length,o="";for(let s=0;s<n;s++){let a=r[s];a?P(e,a)?(K(e,t,s,p(e,a[1])),o+=","):(o+=c(e,a),s<n-1&&(o+=",")):o+=","}return`[${o}]`}function Ue(e,r,t){e.stack.push(t);let n=fe(e,r,t);return e.stack.pop(),y(e,t,n)}function U(e,r,t,n){let o=ue(e,t,r);return o!=="{}"?`Object.assign(${n},${o})`:n}function Be(e,r,t,n,o){e.stack.push(o);let s=`new AggregateError(${c(e,n)},${N(r)})`;if(e.stack.pop(),t)if(e.features&64)s=U(e,t,o,s);else{b(e,o);let a=D(e,o,t);if(a){let u=p(e,o);return`(${y(e,o,s)},${a}${u})`}}return y(e,o,s)}function _e(e,r,t,n,o){let s=`new ${r}(${N(t)})`;if(n)if(e.features&64)s=U(e,n,o,s);else{b(e,o);let a=D(e,o,n);if(a){let u=p(e,o);return`(${y(e,o,s)},${a}${u})`}}return y(e,o,s)}function Fe(e,r,t,n){let o=e.stack;e.stack=[];let s=fe(e,t,n);e.stack=o;let a;if(e.features&2?a=`${s}.values()`:a=`${s}[Symbol.iterator]()`,e.features&4?a=`{[Symbol.iterator]:()=>${a}}`:e.features&32?a=`{[Symbol.iterator](){return ${a}}}`:a=`{[Symbol.iterator]:function(){return ${a}}}`,r)if(e.features&64)a=U(e,r,n,a);else{b(e,n);let u=D(e,n,r);if(u){let f=p(e,n);return`(${y(e,n,a)},${u}${f})`}}return y(e,n,a)}function Je(e,r,t){let n="Object.create(null)";if(e.features&64)n=U(e,r,t,n);else{b(e,t);let o=D(e,t,r);if(o){let s=p(e,t);return`(${y(e,t,n)},${o}${s})`}}return y(e,t,n)}function c(e,[r,t,n]){switch(r){case 0:return String(t);case 2:return p(e,t);case 10:return Te(e,t,n);case 1:return t;case 3:return y(e,n,`new Date("${t}")`);case 4:return y(e,n,t);case 15:case 14:return Me(e,t[0],t[1],t[2],n);case 5:return je(e,t,n);case 6:return De(e,t[0],t[1],t[2],n);case 7:return Ue(e,t,n);case 12:return Be(e,t[0],t[1],t[2],n);case 11:return _e(e,t[0],t[1],t[2],n);case 13:return Fe(e,t[0],t[1],n);case 9:return Je(e,t,n);case 8:return y(e,n,ue(e,n,t));default:throw new Error("Unsupported type")}}function B(e,r){let t=Object.keys(r),n=t.length,o=new Array(n),s=new Array(n),a=new Array(n),u=new Array(n),f=0,l=0;for(let i of t)S(r[i])?(a[f]=i,u[f]=r[i],f++):(o[l]=i,s[l]=A(e,r[i]),l++);for(let i=0;i<f;i++)o[l+i]=a[i],s[l+i]=A(e,u[i]);return[o,s,n]}function Le(e,r,t){g(e.features&256,'Unsupported type "Set"');let n=r.size,o=new Array(n),s=new Array(n),a=0,u=0;for(let f of r.keys())S(f)?s[a++]=f:o[u++]=A(e,f);for(let f=0;f<a;f++)o[u+f]=A(e,s[f]);return[5,o,t]}function He(e,r,t){g(e.features&16,'Unsupported type "Map"');let n=r.size,o=new Array(n),s=new Array(n),a=new Array(n),u=new Array(n),f=0,l=0;for(let[i,d]of r.entries())S(i)||S(d)?(a[f]=i,u[f]=d,f++):(o[l]=A(e,i),s[l]=A(e,d),l++);for(let i=0;i<f;i++)o[l+i]=A(e,a[i]),s[l+i]=A(e,u[i]);return[6,[o,s,n],t]}function le(e,r){let t=r.length,n=new Array(t),o=new Array(t);for(let s=0;s<t;s++)s in r&&(S(r[s])?o[s]=r[s]:n[s]=A(e,r[s]));for(let s=0;s<t;s++)s in o&&(n[s]=A(e,o[s]));return n}function Ke(e,r,t){return[7,le(e,r),t]}function qe(e,r,t){let n=E(r),o=n?B(e,n):void 0,s=A(e,r.errors);return[12,[r.message,o,s],t]}function Ge(e,r,t){let n=E(r),o=n?B(e,n):void 0;return[11,[z(r),r.message,o],t]}function We(e,r,t){g(e.features&512,'Unsupported type "Iterable"');let n=R(r);return[13,[n?B(e,n):void 0,le(e,Array.from(r))],t]}function A(e,r){if(k(r))return[0,V(r)];let t=I(e,r);if(Array.isArray(t))return t;let n=O(e,r,t);if(n)return n;if(m(r,Set))return Le(e,r,t);if(m(r,Map))return He(e,r,t);if(Array.isArray(r))return Ke(e,r,t);if(r instanceof AggregateError&&e.features&1)return qe(e,r,t);if(r instanceof Error)return Ge(e,r,t);if(S(r))return We(e,r,t);let o=r.constructor==null;if(r.constructor===Object||o)return[o?9:8,B(e,r),t];throw new Error("Unsupported value")}function _(e,r){let t=A(e,r);return[t,h(e,r),t[0]===8]}function q(e,r,t,n){if(e.vars.length){let o=oe(e),s=n;if(o){let u=p(e,r);n.startsWith(`${u}=`)?s=`${n},${o}${u}`:s=`${u}=${n},${o}${u}`}let a=e.vars.length>1?e.vars.join(","):e.vars[0];return e.features&4?(a=e.vars.length>1||e.vars.length===0?`(${a})`:a,`(${a}=>(${s}))()`):`(function(${a}){return ${s}})()`}return t?`(${n})`:n}function me(e,r){let t=w(r);if(k(e))return String(V(e));let[n,o,s]=_(t,e),a=C(t),u=c(a,n);return q(a,o,s,u)}async function Ze(e,r){let t=w(r);if(k(e))return String(V(e));let[n,o,s]=await M(t,e),a=C(t),u=c(a,n);return q(a,o,s,u)}function pe(e){return(0,eval)(e)}function Xe(e,r){let t=w(r),[n,o,s]=_(t,e);return JSON.stringify([n,o,s,t.features,[...t.markedRefs]])}async function Qe(e,r){let t=w(r),[n,o,s]=await M(t,e);return JSON.stringify([n,o,s,t.features,[...t.markedRefs]])}function de(e){let r=JSON.parse(e),t=C({features:r[3],markedRefs:r[4]}),n=c(t,r[0]);return q(t,r[1],r[2],n)}function Ye(e){return pe(de(e))}var xe=me;