{"version":3,"sources":["../../src/serializer/serializer.ts"],"names":["functionDeserializationStorage","AsyncLocalStorage","isFunctionDeserializationAllowed","getStore","Serializer","factories","Map","registerSerializable","ref","processors","aliases","register","toPlain","value","createSnapshot","fromPlain","fromSnapshot","createEmpty","Object","create","prototype","updateInstance","instance","update","loadSnapshot","R","pickBy","isDefined","deregister","className","extractClassName","delete","oldFactory","get","newFactory","SerializerError","key","entries","set","forEach","alias","aliasTarget","getFactory","clsName","factory","findFactory","targetClass","hasFactory","isFunction","Function","name","isSelfRef","excluded","Set","proto","traversePrototypeChain","has","serialize","rawData","output","_createOutputBuilder","getRefId","id","seen","SafeWeakMap","assertValidSnapshot","allowedTypes","snapshot","Array","from","values","join","toSerializable","rawValue","Serializable","Class","isSerializationRequired","SerializerSelfRefIdentifier","result","__serializer","__class","__ref","toString","__value","node","traverseWithUpdate","newValue","root","__version","Version","__root","traverseObject","path","content","toJSON","deserializeWithMeta","raw","extraClasses","keepPlain","options","run","allowFunctionDeserialization","_deserializeWithMetaInner","instances","toDeserialize","contentRaw","isSerializerNode","String","SerializerRefIdentifier","data","RefPlaceholder","traverseNested","placeholder","final","JSON","parse","isRootNode","_obj","deserialize","response","_container","setProp","SafeWeakSet","stringify","updated","add","Task","task","resolvedValue","state","TaskState","RESOLVED","resolve","REJECTED","reject","SlidingTaskMap","config","windowSize","ttl","filter","_","newInstance","assign","slice","push","Number","Boolean","BigInt","Symbol","description","Date","toISOString","CacheFn","fn","isNative","getProp","global","isConstructor","obj","binds","getFunctionBinds","map","bound","toParsableForm","match","a","b","c","indexOf","p","p2","halveString","replace","trim","includes","arrowStart","bracketStart","fnPrefix","fnContent","nonReservedSymbols","split","x","every","parameters","startsWith","defineProperty","getOwnPropertyDescriptor","getPrototypeOf","hasMinLength","toBoundedFunction","Error","serializeError","deserializeError","RegExp","source","flags","WeakSet","WeakMap","WeakRef","primitiveToSerializableClass","undefined","ZodType","toJsonSchema","Buffer","AbortSignal","aborted","reason","controller","createAbortController","abort","signal","AbortController"],"mappings":"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","file":"serializer.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport * as R from \"remeda\";\nimport { Serializable, SerializableClass } from \"@/internals/serializable.js\";\nimport { AnyConstructable, ClassConstructor, NamedFunction } from \"@/internals/types.js\";\nimport { SafeWeakMap, SafeWeakSet } from \"@/internals/helpers/weakRef.js\";\nimport { deserializeError, serializeError } from \"serialize-error-cjs\";\nimport { Version } from \"@/version.js\";\nimport {\n  extractClassName,\n  getFunctionBinds,\n  isRootNode,\n  isSerializationRequired,\n  isSerializerNode,\n  primitiveToSerializableClass,\n  RefPlaceholder,\n  RootNode,\n  SerializerNode,\n  SerializerRefIdentifier,\n  SerializerSelfRefIdentifier,\n  toBoundedFunction,\n  traverseObject,\n  traverseWithUpdate,\n} from \"@/serializer/utils.js\";\nimport { SlidingTaskMap, Task, TaskState } from \"promise-based-task\";\nimport { getProp, setProp } from \"@/internals/helpers/object.js\";\nimport { halveString } from \"@/internals/helpers/string.js\";\nimport { traversePrototypeChain } from \"@/internals/helpers/prototype.js\";\nimport { CacheFn } from \"@/cache/decoratorCache.js\";\nimport { SerializerError } from \"@/serializer/error.js\";\nimport { ZodType } from \"zod\";\nimport { toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport { createAbortController } from \"@/internals/helpers/cancellation.js\";\nimport { hasMinLength } from \"@/internals/helpers/array.js\";\n\n/**\n * Function deserialization executes the saved source string via the\n * `Function()` constructor, which means it can run arbitrary code if the\n * data being deserialized comes from an untrusted source. It is therefore\n * disabled by default and must be explicitly opted into per-call via\n * `{ allowFunctionDeserialization: true }`, scoped using AsyncLocalStorage\n * so it doesn't leak across concurrent/unrelated deserialize() calls.\n */\nconst functionDeserializationStorage = new AsyncLocalStorage<boolean>();\n\nexport function isFunctionDeserializationAllowed(): boolean {\n  return functionDeserializationStorage.getStore() ?? false;\n}\n\nexport interface SerializeFactory<A = unknown, B = unknown> {\n  ref: ClassConstructor<A> | NamedFunction<A>;\n  createEmpty?: () => A;\n  updateInstance?: (instance: A, update: A) => void | Promise<void>;\n  toPlain: (value: A) => B | Promise<B>;\n  fromPlain: (value: B, ref: ClassConstructor<A> | NamedFunction<A>) => A | Promise<A>;\n}\n\nexport class Serializer {\n  private static factories = new Map<string, SerializeFactory<any, any>>();\n\n  static registerSerializable<A>(\n    ref: SerializableClass<A>,\n    processors?: Partial<Omit<SerializeFactory<Serializable<A>, A>, \"ref\">>,\n    aliases?: string[],\n  ) {\n    return Serializer.register(\n      ref,\n      {\n        toPlain: (value) => value.createSnapshot(),\n        fromPlain: (value) => ref.fromSnapshot(value),\n        createEmpty: () => Object.create(ref.prototype),\n        updateInstance: (instance, update) => instance.loadSnapshot(update),\n        ...R.pickBy(processors ?? {}, R.isDefined),\n      },\n      aliases,\n    );\n  }\n\n  static deregister(ref: ClassConstructor | NamedFunction) {\n    const className = extractClassName(ref);\n    Serializer.factories.delete(className);\n  }\n\n  static register<A, B = unknown>(\n    ref: ClassConstructor<A> | NamedFunction<A>,\n    processors: Omit<SerializeFactory<A, B>, \"ref\">,\n    aliases?: string[],\n  ): void {\n    const className = extractClassName(ref);\n    const oldFactory = Serializer.factories.get(className);\n    const newFactory: SerializeFactory<A, B> = {\n      ref,\n      ...processors,\n    };\n\n    if (oldFactory) {\n      if (oldFactory.ref !== ref) {\n        throw new SerializerError(`Factory for class \"${className}\" already exists!`);\n      }\n\n      for (const [key, value] of Serializer.factories.entries()) {\n        if (value === oldFactory) {\n          Serializer.factories.set(key, newFactory);\n        }\n      }\n    }\n    Serializer.factories.set(className, newFactory);\n\n    aliases?.forEach((alias) => {\n      const aliasTarget = Serializer.factories.get(alias);\n      if (!aliasTarget) {\n        this.factories.set(alias, newFactory);\n      } else if (aliasTarget !== newFactory) {\n        throw new SerializerError(\n          `Factory for class \"${className}\" already exists! Cannot add alias.`,\n        );\n      }\n    });\n  }\n\n  static getFactory(clsName: string): SerializeFactory {\n    const factory = Serializer.factories.get(clsName);\n    if (!factory) {\n      throw new SerializerError(`Class \"${clsName}\" was not found!`);\n    }\n    return factory;\n  }\n\n  static findFactory(value: unknown) {\n    let targetClass = extractClassName(value);\n    if (!Serializer.hasFactory(targetClass) && R.isFunction(value)) {\n      targetClass = Function.name;\n    }\n\n    if (Serializer.hasFactory(targetClass)) {\n      const factory = Serializer.getFactory(targetClass);\n      return { targetClass, factory, isSelfRef: factory.ref === value };\n    }\n\n    const excluded = new Set([null, Object.prototype]);\n    for (const proto of traversePrototypeChain(value, excluded)) {\n      const targetClass = extractClassName(proto);\n\n      const factory = this.factories.get(targetClass);\n      if (factory) {\n        return { targetClass, factory, isSelfRef: false };\n      }\n    }\n\n    throw new SerializerError(`Class \"${targetClass}\" was not found!`);\n  }\n\n  static hasFactory(clsName: string) {\n    return Serializer.factories.has(clsName);\n  }\n\n  static async serialize<T>(rawData: T): Promise<string> {\n    const output = Serializer._createOutputBuilder();\n    const getRefId = (() => {\n      let id = 0;\n      return () => {\n        id += 1;\n        return id;\n      };\n    })();\n\n    const seen = new SafeWeakMap<SerializerNode>();\n\n    const assertValidSnapshot = (() => {\n      const allowedTypes = new Set([\n        \"Number\",\n        \"String\",\n        \"Object\",\n        \"Array\",\n        \"Undefined\",\n        \"Null\",\n        \"Boolean\",\n      ]);\n      return (snapshot: unknown, factory: SerializeFactory) => {\n        const className = extractClassName(snapshot);\n\n        if (!allowedTypes.has(className)) {\n          throw new SerializerError(\n            `Cannot serialize '${className}' as a top level property. \"toPlain\" function in \"${extractClassName(factory.ref)}\" should return an ${Array.from(allowedTypes.values()).join(\",\")}.`,\n          );\n        }\n      };\n    })();\n\n    const toSerializable = async (rawValue: unknown): Promise<SerializerNode | unknown> => {\n      if (seen.has(rawValue)) {\n        return seen.get(rawValue);\n      }\n\n      if (rawValue instanceof Serializable && !this.hasFactory(extractClassName(rawValue))) {\n        const Class = rawValue.constructor as SerializableClass<T>;\n        Serializer.registerSerializable(Class);\n      }\n\n      const { targetClass, factory, isSelfRef } = Serializer.findFactory(rawValue);\n      if (!isSerializationRequired(factory.ref)) {\n        return rawValue;\n      }\n\n      const snapshot = isSelfRef ? SerializerSelfRefIdentifier : await factory.toPlain(rawValue);\n      assertValidSnapshot(snapshot, factory);\n\n      const result: SerializerNode = {\n        __serializer: true,\n        __class: targetClass,\n        __ref: getRefId().toString(),\n        __value: snapshot,\n      };\n      seen.set(rawValue, result);\n\n      for (const node of traverseWithUpdate(snapshot)) {\n        const newValue = await toSerializable(node.value);\n        if (newValue !== node.value) {\n          node.update(newValue);\n        }\n      }\n      return result;\n    };\n\n    const root: RootNode<T> = { __version: Version, __root: rawData };\n    await traverseObject(root, async ({ value, path }) => {\n      const content = await toSerializable(value);\n      output.update(path, content);\n    });\n    return output.toJSON();\n  }\n\n  /** @internal */\n  static async deserializeWithMeta<T = any>(\n    raw: string,\n    extraClasses?: SerializableClass<unknown>[],\n    keepPlain?: boolean,\n    options?: { allowFunctionDeserialization?: boolean },\n  ): Promise<RootNode<T>> {\n    return functionDeserializationStorage.run(\n      options?.allowFunctionDeserialization ?? false,\n      async () => Serializer._deserializeWithMetaInner<T>(raw, extraClasses, keepPlain),\n    );\n  }\n\n  private static async _deserializeWithMetaInner<T = any>(\n    raw: string,\n    extraClasses?: SerializableClass<unknown>[],\n    keepPlain?: boolean,\n  ): Promise<RootNode<T>> {\n    keepPlain = keepPlain ?? false;\n    extraClasses?.forEach((ref) => Serializer.registerSerializable(ref));\n    const output = Serializer._createOutputBuilder<RootNode<T>>();\n    const instances = new Map<string, unknown>();\n\n    const toDeserialize = async (contentRaw: unknown) => {\n      if (isSerializerNode(contentRaw)) {\n        const clsName = String(contentRaw.__class);\n        const factory = Serializer.getFactory(clsName);\n        const rawData = contentRaw.__value;\n\n        if (rawData === SerializerSelfRefIdentifier) {\n          return factory.ref;\n        }\n\n        if (rawData === SerializerRefIdentifier) {\n          if (!instances.has(contentRaw.__ref!)) {\n            throw new SerializerError(`Missing reference \"${contentRaw.__ref}\"!`);\n          }\n\n          const data = instances.get(contentRaw.__ref!)!;\n          if (data instanceof RefPlaceholder) {\n            return data.value;\n          }\n          return data;\n        }\n\n        const traverseNested = async () => {\n          for (const node of traverseWithUpdate(rawData)) {\n            const newValue = await toDeserialize(node.value);\n            if (newValue !== node.value) {\n              node.update(newValue);\n            }\n          }\n        };\n\n        // Handle circular dependencies\n        const placeholder = new RefPlaceholder<any>(contentRaw, factory);\n        instances.set(contentRaw.__ref!, placeholder);\n        await traverseNested();\n        const final = keepPlain ? placeholder.rawValue : await placeholder.final();\n        instances.set(contentRaw.__ref!, final);\n        return final;\n      }\n      return contentRaw;\n    };\n\n    const root = JSON.parse(raw);\n    if (!isRootNode(root)) {\n      throw new SerializerError(\"Provided data cannot be deserialized due to malformed format!\");\n    }\n\n    await traverseObject(\n      root,\n      async ({ value: contentRaw, path }) => {\n        output.update(path, await toDeserialize(contentRaw));\n      },\n      (_obj) => isSerializerNode(_obj),\n    );\n    return output.get();\n  }\n\n  static async deserialize<T = any>(\n    raw: string,\n    extraClasses?: SerializableClass<unknown>[],\n    keepPlain?: boolean,\n    options?: { allowFunctionDeserialization?: boolean },\n  ): Promise<T> {\n    const response = await Serializer.deserializeWithMeta(raw, extraClasses, keepPlain, options);\n    return response.__root;\n  }\n\n  protected static _createOutputBuilder<T>() {\n    return {\n      _container: {} as T,\n      get() {\n        return this._container;\n      },\n      update(path: readonly string[], value: any) {\n        setProp(this._container, path, value);\n      },\n      toJSON() {\n        const seen = new SafeWeakSet();\n\n        return JSON.stringify(this._container, (key, value) => {\n          if (seen.has(value) && isSerializerNode(value)) {\n            const updated: SerializerNode = {\n              ...value,\n              __value: SerializerRefIdentifier,\n            };\n            return updated;\n          }\n\n          seen.add(value);\n          return value;\n        });\n      },\n    };\n  }\n}\n\nSerializer.register(Task<any>, {\n  toPlain: (task) => ({ value: task.resolvedValue(), state: task.state }),\n  fromPlain: ({ state, value }) => {\n    const task = new Task();\n    if (state === TaskState.RESOLVED) {\n      task.resolve(value);\n    } else if (state === TaskState.REJECTED) {\n      task.reject(value);\n    } else {\n      task.reject(new SerializerError(\"Task cannot be solved due to serialization.\"));\n    }\n    task.resolve(value);\n    return task;\n  },\n  createEmpty: () => new Task(),\n  updateInstance: async (instance, value) => {\n    instance.resolve(value);\n  },\n});\nSerializer.register(SlidingTaskMap, {\n  toPlain: (value) => ({\n    config: {\n      windowSize: value.windowSize,\n      ttl: value.ttl,\n    },\n    entries: Array.from(value.entries()).filter(([_, task]) => {\n      if (task instanceof Task) {\n        return task.state === TaskState.RESOLVED;\n      }\n      return true;\n    }),\n  }),\n  fromPlain: ({ entries, config }) => {\n    const instance = new SlidingTaskMap(config.windowSize, config.ttl);\n    for (const [key, value] of entries) {\n      instance.set(key, value);\n    }\n    return instance;\n  },\n  createEmpty: () => new SlidingTaskMap(1, 1000),\n  updateInstance: (instance, newInstance) => {\n    Object.assign(instance, { windowSize: newInstance.windowSize, ttl: newInstance.ttl });\n    newInstance.forEach((value, key) => instance.set(key, value));\n  },\n});\nSerializer.register(Map, {\n  toPlain: (value) => Array.from(value.entries()),\n  fromPlain: (value) => new Map(value),\n  createEmpty: () => new Map(),\n  updateInstance: (instance, update) => {\n    update.forEach(([key, value]) => instance.set(key, value));\n  },\n});\nSerializer.register(Set, {\n  toPlain: (value) => Array.from(value.values()),\n  fromPlain: (value) => new Set(value),\n  createEmpty: () => new Set(),\n  updateInstance: (instance, update) => {\n    update.forEach((value) => instance.add(value));\n  },\n});\nSerializer.register(Array, {\n  toPlain: (value) => value.slice(),\n  fromPlain: (value) => value.slice(),\n  createEmpty: () => [],\n  updateInstance: (value, update) => {\n    value.push(...update);\n  },\n});\nSerializer.register(Object, {\n  toPlain: (value) => Object.assign({}, value),\n  fromPlain: (value) => Object.assign({}, value),\n  createEmpty: () => ({}),\n  updateInstance: (value, update) => Object.assign(value, update),\n});\nSerializer.register(Number, {\n  toPlain: (value) => Number(value).toString(),\n  fromPlain: (value) => Number(value),\n});\nSerializer.register(String, {\n  toPlain: (value) => String(value),\n  fromPlain: (value) => String(value),\n});\nSerializer.register(Boolean, {\n  toPlain: (value) => Boolean(value),\n  fromPlain: (value) => Boolean(value),\n});\nSerializer.register(BigInt, {\n  toPlain: (value) => String(value),\n  fromPlain: (value) => BigInt(value),\n});\nSerializer.register(Symbol, {\n  toPlain: (value) => value.description,\n  fromPlain: (value) => Symbol(value),\n});\nSerializer.register(Date, {\n  toPlain: (value) => value.toISOString(),\n  fromPlain: (value) => new Date(value),\n});\nSerializer.register(CacheFn, {\n  toPlain: (value) => value.createSnapshot(),\n  fromPlain: (value) => CacheFn.create(value.fn, value.options),\n});\nSerializer.register(Function, {\n  toPlain: (value) => {\n    const isNative = getProp(global, [value.name]) === value;\n\n    function isConstructor(obj: any): obj is AnyConstructable {\n      return obj && !!obj.prototype && !!obj.prototype.constructor.name;\n    }\n\n    return {\n      name: value.name,\n      binds: getFunctionBinds(value).map((bound) => ({\n        name: isConstructor(bound) ? Serializer.findFactory(bound).targetClass : bound.name,\n        value: \"value\" in bound ? bound.value : null,\n      })),\n      fn: isNative ? \"\" : String(value),\n      isNative,\n    };\n  },\n  fromPlain: (value) => {\n    if (!isFunctionDeserializationAllowed()) {\n      throw new SerializerError(\n        \"Deserializing functions is disabled by default because it can execute arbitrary \" +\n          \"code from the serialized payload (see GHSA-phhm-7927-g88p). If you fully trust \" +\n          \"the source of this data, pass `{ allowFunctionDeserialization: true }` to \" +\n          \"deserialize() / deserializeWithMeta(), or `{ allowFunctionDeserialization: true }` \" +\n          \"in DeserializeOptions when calling fromSerialized().\",\n      );\n    }\n    if (value.isNative) {\n      return getProp(global, [value.name])!;\n    }\n\n    const toParsableForm = (): string => {\n      let fn = value.fn;\n\n      if (fn.match(/^\\s*function.*?\\(/)) {\n        return fn;\n      }\n\n      const [a, b, c] = [fn.indexOf(\"=>\"), fn.indexOf(\"(\"), fn.indexOf(\"{\")];\n      if (a > -1) {\n        if (b === -1 || b > a || (c === -1 && c > a)) {\n          const [p, p2] = halveString(fn, \"=>\", false);\n          fn = `(${p.replace(\"async\", \"\").replace(\"*\", \"\").trim()})=>${p2}`;\n          fn = [p.includes(\"async\") && \"async \", p.includes(\"*\") && \"*\", fn]\n            .filter(Boolean)\n            .join(\" \");\n        }\n      }\n\n      const arrowStart = fn.indexOf(\"=>\");\n      const bracketStart = fn.indexOf(\"(\");\n\n      const [fnPrefix, fnContent = \"\"] =\n        bracketStart === -1 || bracketStart > arrowStart\n          ? halveString(fn, \"{\", true)\n          : halveString(fn, \"(\", true);\n\n      const nonReservedSymbols = fnPrefix\n        .trim()\n        .split(\" \")\n        .map((x) => x.trim())\n        .filter(Boolean)\n        .every((content) => [\"async\", \"*\"].includes(content));\n\n      if (nonReservedSymbols) {\n        return fn;\n      }\n\n      const name = value.name && fnPrefix.includes(value.name) ? value.name : \"\";\n      let parameters = \"\";\n      if (!fnContent.startsWith(\"(\")) {\n        if (fnPrefix.includes(\"(\")) {\n          parameters = (fnPrefix.match(/\\((.+)\\)/) ?? [null, \"\"])[1];\n        } else {\n          parameters = fnPrefix.replace(\"=>\", \"\").replace(\"async\", \"\").replace(\"*\", \"\");\n        }\n      }\n\n      return [\n        fnPrefix.includes(\"async\") && \"async \",\n        \"function\",\n        fnPrefix.includes(\"*\") && \"*\",\n        name && ` ${name}`,\n        parameters && `(${parameters})`,\n        fnContent,\n      ]\n        .filter(Boolean)\n        .join(\"\");\n    };\n\n    const binds = value?.binds ?? [];\n    const fn = Function(\n      ...binds.map((b) => b.name),\n      `return ${toParsableForm()}`,\n    )(...binds.map((b) => (b.value ? b.value : Serializer.getFactory(b.name)!.ref)));\n\n    if (value.name) {\n      Object.defineProperty(\n        fn,\n        \"name\",\n        Object.assign({}, Object.getOwnPropertyDescriptor(Object.getPrototypeOf(fn), \"name\"), {\n          value: value.name,\n        }),\n      );\n    }\n    Object.defineProperty(\n      fn,\n      \"toString\",\n      Object.assign({}, Object.getOwnPropertyDescriptor(Object.getPrototypeOf(fn), \"name\"), {\n        value: () => value.fn,\n      }),\n    );\n    return hasMinLength(binds, 1) ? toBoundedFunction(fn, binds) : fn;\n  },\n});\n\nSerializer.register(Error, {\n  toPlain: (value) => serializeError(value),\n  fromPlain: (value) => deserializeError(value),\n});\nSerializer.register(RegExp, {\n  toPlain: (value) => ({ source: value.source, flags: value.flags }),\n  fromPlain: (value) => new RegExp(value.source, value.flags),\n});\nSerializer.register(WeakSet, {\n  toPlain: () => {},\n  fromPlain: () => new WeakSet(),\n  createEmpty: () => new WeakSet(),\n  updateInstance: () => {},\n});\nSerializer.register(WeakMap, {\n  toPlain: () => {},\n  fromPlain: () => new WeakMap(),\n  createEmpty: () => new WeakMap(),\n  updateInstance: () => {},\n});\nSerializer.register(WeakRef, {\n  toPlain: () => {},\n  fromPlain: () => new WeakRef({}),\n});\nSerializer.register(primitiveToSerializableClass(undefined), {\n  toPlain: () => undefined,\n  fromPlain: () => undefined,\n});\nSerializer.register(primitiveToSerializableClass(null), {\n  toPlain: () => null,\n  fromPlain: () => null,\n});\n// @ts-expect-error\nSerializer.register(ZodType, {\n  toPlain: (value) => toJsonSchema(value),\n  fromPlain: () => {\n    throw new Error(\"JSONSchema cannot be converted to zod!\");\n  },\n});\nSerializer.register(Buffer, {\n  toPlain: (value: Buffer) => value.toString(\"base64\"),\n  fromPlain: (data) => Buffer.from(data, \"base64\"),\n});\nSerializer.register(AbortSignal, {\n  toPlain: (value: AbortSignal) => ({\n    aborted: value.aborted,\n    reason: value.reason,\n  }),\n  fromPlain: (data) => {\n    const controller = createAbortController();\n    if (data.aborted) {\n      controller.abort(data.reason);\n    }\n    return controller.signal;\n  },\n});\nSerializer.register(AbortController, {\n  toPlain: (value: AbortController) => ({\n    signal: value.signal,\n  }),\n  fromPlain: (data) => createAbortController(data.signal),\n});\n"]}