{"version":3,"sources":["../src/index.ts","../src/utils.ts"],"sourcesContent":["import {\n  ARRAYBUFFER_TAG,\n  BIGINT_TAG,\n  DATE_TAG,\n  fromSerializable,\n  FUNCTION_TAG,\n  isArray,\n  isArrayBufferPayload,\n  isDate,\n  isFunction,\n  isRegExpPayload,\n  isTypedArrayPayload,\n  isURL,\n  MAP_TAG,\n  NUMBER_TAG,\n  REGEXP_TAG,\n  SET_TAG,\n  toSerializable,\n  TYPEDARRAY_TAG,\n  udf,\n  URL_TAG,\n} from './utils'\n\nconst RAW_JSON = JSON\ntype Replacer = ((this: any, key: string, value: any) => any) | Array<string | number> | null\ntype Reviver = ((this: any, key: string, value: any) => any) | null\n\nconst applyReplacer = (holder: any, key: string, value: any, replacer: Replacer): any => {\n  if (isFunction(replacer)) {\n    return replacer(key, value)\n  }\n  if (isArray(replacer)) {\n    if (key === '') return value\n    if (key === BIGINT_TAG) return value\n    if (key === DATE_TAG) return value\n    if (key === NUMBER_TAG) return value\n    if (key === MAP_TAG) return value\n    if (key === SET_TAG) return value\n    if (key === REGEXP_TAG) return value\n    if (key === URL_TAG) return value\n    if (key === FUNCTION_TAG) return value\n    if (key === TYPEDARRAY_TAG) return value\n    if (key === ARRAYBUFFER_TAG) return value\n    if (isTypedArrayPayload(holder)) return value\n    if (isArrayBufferPayload(holder)) return value\n    if (isRegExpPayload(holder)) return value\n    if (isArray(holder)) return value\n    return replacer.includes(key) ? value : udf\n  }\n  return value\n}\n\nexport const stringify = (value: any, replacer: Replacer = null, space?: string | number): string =>\n  RAW_JSON.stringify(\n    value,\n    function replacerFn(key, v) {\n      const holderValue = this && key in Object(this) ? (this as any)[key] : v\n      const candidate = isDate(holderValue) || isURL(holderValue) ? holderValue : v\n      const replaced = applyReplacer(this, key, candidate, replacer)\n      return toSerializable(replaced)\n    },\n    space,\n  )\n\nexport const stringify_UNSAFE = (\n  value: any,\n  replacer: Replacer = null,\n  space?: string | number,\n): string =>\n  RAW_JSON.stringify(\n    value,\n    function replacerFn(key, v) {\n      const holderValue = this && key in Object(this) ? (this as any)[key] : v\n      const candidate = isDate(holderValue) || isURL(holderValue) ? holderValue : v\n      const replaced = applyReplacer(this, key, candidate, replacer)\n      return toSerializable(replaced, { allowFunction: true })\n    },\n    space,\n  )\n\nexport const parse = <T = any>(text: string, reviver: Reviver = null): T =>\n  RAW_JSON.parse(text, (key, v) => {\n    const decoded = fromSerializable(v)\n    return isFunction(reviver) ? reviver(key, decoded) : decoded\n  })\n\nexport const parse_UNSAFE = <T = any>(text: string, reviver: Reviver = null): T =>\n  RAW_JSON.parse(text, (key, v) => {\n    const decoded = fromSerializable(v, { allowFunction: true })\n    return isFunction(reviver) ? reviver(key, decoded) : decoded\n  })\n\nexport default {\n  stringify,\n  parse,\n}\n","export const BIGINT_TAG = '__@json.bigint__'\nexport const TYPEDARRAY_TAG = '__@json.typedarray__'\nexport const ARRAYBUFFER_TAG = '__@json.arraybuffer__'\nexport const DATE_TAG = '__@json.date__'\nexport const MAP_TAG = '__@json.map__'\nexport const SET_TAG = '__@json.set__'\nexport const REGEXP_TAG = '__@json.regexp__'\nexport const URL_TAG = '__@json.url__'\nexport const FUNCTION_TAG = '__@json.function__'\nexport const NUMBER_TAG = '__@json.number__'\n\nconst UDF = 'undefined'\nexport const udf = void UDF\n\nexport const isString = (value: any): value is string => typeof value === 'string'\nexport const hasOwnProperty = (obj: any, prop: string): boolean =>\n  Object.prototype.hasOwnProperty.call(obj, prop)\nexport const isArray = (value: any): value is Array<any> => Array.isArray(value)\nexport const isObject = (value: any): value is Record<string, any> =>\n  value !== null && typeof value === 'object' && !isArray(value)\nexport const isFunction = (value: any): value is Function => typeof value === 'function'\nexport const isBigInt = (value: any): value is bigint => typeof value === 'bigint'\nexport const isDate = (value: any): value is Date => value instanceof Date\nexport const isMap = (value: any): value is Map<any, any> => value instanceof Map\nexport const isSet = (value: any): value is Set<any> => value instanceof Set\nexport const isRegExp = (value: any): value is RegExp => value instanceof RegExp\nexport const isURL = (value: any): value is URL => typeof URL !== UDF && value instanceof URL\nconst isNumber = (value: any): value is number => typeof value === 'number'\nexport const isNonFiniteNumber = (value: any): value is number =>\n  isNumber(value) && !Number.isFinite(value)\nexport const isInteger = (value: any): value is number => Number.isInteger(value)\nconst hasBuffer = (): boolean => typeof Buffer !== UDF && isFunction(Buffer.isBuffer)\n\nexport const isBuffer = (value: any): value is Buffer =>\n  hasBuffer() && isFunction(Buffer.isBuffer) && Buffer.isBuffer(value)\nexport const isArrayBuffer = (value: any): value is ArrayBuffer =>\n  typeof ArrayBuffer !== UDF && value instanceof ArrayBuffer\n\nexport const isTypedArray = (value: any): value is ArrayBufferView => {\n  if (value == null) return false\n  if (typeof ArrayBuffer !== UDF && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {\n    return Object.prototype.toString.call(value) !== '[object DataView]'\n  }\n  const tag = Object.prototype.toString.call(value)\n  return tag.endsWith('Array]') && tag !== '[object Array]'\n}\n\nexport const getTypedArrayName = (value: any): string | null => {\n  if (value == null) return null\n  const ctor = (value as any).constructor\n  if (ctor && isString(ctor.name)) return ctor.name\n  const tag = Object.prototype.toString.call(value)\n  const match = /^\\[object (.+)\\]$/.exec(tag)\n  return match ? match[1] : null\n}\n\nconst TYPEDARRAY_CTORS: Record<string, any> = {\n  Int8Array: typeof Int8Array !== UDF ? Int8Array : udf,\n  Uint8Array: typeof Uint8Array !== UDF ? Uint8Array : udf,\n  Uint8ClampedArray: typeof Uint8ClampedArray !== UDF ? Uint8ClampedArray : udf,\n\n  Int16Array: typeof Int16Array !== UDF ? Int16Array : udf,\n  Uint16Array: typeof Uint16Array !== UDF ? Uint16Array : udf,\n  Float16Array: typeof Float16Array !== UDF ? Float16Array : udf,\n\n  Int32Array: typeof Int32Array !== UDF ? Int32Array : udf,\n  Uint32Array: typeof Uint32Array !== UDF ? Uint32Array : udf,\n  Float32Array: typeof Float32Array !== UDF ? Float32Array : udf,\n\n  Float64Array: typeof Float64Array !== UDF ? Float64Array : udf,\n\n  BigInt64Array: typeof BigInt64Array !== UDF ? BigInt64Array : udf,\n  BigUint64Array: typeof BigUint64Array !== UDF ? BigUint64Array : udf,\n}\n\nexport const toHex = (value: Uint8Array): string => {\n  let out = '0x'\n  for (const byte of value) {\n    out += byte.toString(16).padStart(2, '0')\n  }\n  return out\n}\n\nexport const fromHex = (hex: string): Uint8Array => {\n  const normalized = hex.startsWith('0x') ? hex.slice(2) : hex\n  if (normalized.length % 2 !== 0) {\n    throw new Error('Invalid hex string for bytes')\n  }\n\n  if (hasBuffer()) {\n    return Uint8Array.from(Buffer.from(normalized, 'hex'))\n  }\n\n  const out = new Uint8Array(normalized.length / 2)\n  for (let i = 0; i < normalized.length; i += 2) {\n    out[i / 2] = Number.parseInt(normalized.slice(i, i + 2), 16)\n  }\n  return out\n}\n\nexport const toSerializable = (value: any, options: { allowFunction?: boolean } = {}): any => {\n  if (isBigInt(value)) {\n    return { [BIGINT_TAG]: value.toString() }\n  }\n\n  if (isNonFiniteNumber(value)) {\n    return { [NUMBER_TAG]: String(value) }\n  }\n  if (isNumber(value) && !Number.isSafeInteger(value)) {\n    throw new Error('Number exceeds safe integer range')\n  }\n\n  if (isDate(value)) {\n    return { [DATE_TAG]: value.getTime() }\n  }\n\n  if (isMap(value)) {\n    return { [MAP_TAG]: Array.from(value.entries()) }\n  }\n\n  if (isSet(value)) {\n    return { [SET_TAG]: Array.from(value.values()) }\n  }\n\n  if (isRegExp(value)) {\n    return { [REGEXP_TAG]: { source: value.source, flags: value.flags } }\n  }\n\n  if (isURL(value)) {\n    return { [URL_TAG]: value.toString() }\n  }\n\n  if (isFunction(value)) {\n    if (!options.allowFunction) {\n      return value\n    }\n    return { [FUNCTION_TAG]: value.toString() }\n  }\n\n  if (isTypedArray(value)) {\n    const type = getTypedArrayName(value)\n    if (type && TYPEDARRAY_CTORS[type]) {\n      const bytes = new Uint8Array(value.buffer, value.byteOffset, value.byteLength)\n      return { [TYPEDARRAY_TAG]: { type, bytes: toHex(bytes) } }\n    }\n  }\n\n  if (isArrayBuffer(value)) {\n    return { [ARRAYBUFFER_TAG]: { bytes: toHex(new Uint8Array(value)) } }\n  }\n\n  if (\n    value &&\n    isObject(value) &&\n    value.type === 'Buffer' &&\n    isArray(value.data) &&\n    Object.keys(value).length === 2 &&\n    value.data.every((entry: any) => isInteger(entry) && entry >= 0 && entry <= 255)\n  ) {\n    return { [TYPEDARRAY_TAG]: { type: 'Uint8Array', bytes: toHex(Uint8Array.from(value.data)) } }\n  }\n\n  return value\n}\n\nexport const fromSerializable = (value: any, options: { allowFunction?: boolean } = {}): any => {\n  if (value && isObject(value)) {\n    if (hasOwnProperty(value, BIGINT_TAG)) {\n      return BigInt(value[BIGINT_TAG])\n    }\n    if (hasOwnProperty(value, NUMBER_TAG)) {\n      const payload = value[NUMBER_TAG]\n      if (payload === 'NaN') return NaN\n      if (payload === 'Infinity') return Infinity\n      if (payload === '-Infinity') return -Infinity\n      throw new Error('Invalid number payload')\n    }\n    if (hasOwnProperty(value, DATE_TAG)) {\n      return new Date(value[DATE_TAG])\n    }\n    if (hasOwnProperty(value, MAP_TAG)) {\n      const payload = value[MAP_TAG]\n      if (!isArray(payload)) {\n        throw new Error('Invalid map payload')\n      }\n      return new Map(payload)\n    }\n    if (hasOwnProperty(value, SET_TAG)) {\n      const payload = value[SET_TAG]\n      if (!isArray(payload)) {\n        throw new Error('Invalid set payload')\n      }\n      return new Set(payload)\n    }\n    if (hasOwnProperty(value, REGEXP_TAG)) {\n      const payload = value[REGEXP_TAG]\n      if (!payload || !isObject(payload) || !isString(payload.source) || !isString(payload.flags)) {\n        throw new Error('Invalid regexp payload')\n      }\n      return new RegExp(payload.source, payload.flags)\n    }\n    if (hasOwnProperty(value, URL_TAG)) {\n      const payload = value[URL_TAG]\n      if (!isString(payload)) {\n        throw new Error('Invalid URL payload')\n      }\n      return new URL(payload)\n    }\n    if (hasOwnProperty(value, FUNCTION_TAG)) {\n      if (!options.allowFunction) {\n        return value\n      }\n      const payload = value[FUNCTION_TAG]\n      if (!isString(payload)) {\n        throw new Error('Invalid function payload')\n      }\n      return new Function(`return (${payload})`)()\n    }\n    if (hasOwnProperty(value, TYPEDARRAY_TAG)) {\n      const payload = value[TYPEDARRAY_TAG]\n      if (!payload || !isObject(payload) || !isString(payload.type) || !isString(payload.bytes)) {\n        throw new Error('Invalid typed array payload')\n      }\n      const bytes = fromHex(payload.bytes)\n      const ctor = TYPEDARRAY_CTORS[payload.type]\n      if (!ctor) return bytes\n      const buffer = new ArrayBuffer(bytes.byteLength)\n      new Uint8Array(buffer).set(bytes)\n      return new ctor(buffer)\n    }\n    if (hasOwnProperty(value, ARRAYBUFFER_TAG)) {\n      const payload = value[ARRAYBUFFER_TAG]\n      if (!payload || !isObject(payload) || !isString(payload.bytes)) {\n        throw new Error('Invalid arraybuffer payload')\n      }\n      const bytes = fromHex(payload.bytes)\n      const buffer = new ArrayBuffer(bytes.byteLength)\n      new Uint8Array(buffer).set(bytes)\n      return buffer\n    }\n    if (\n      value.type === 'Buffer' &&\n      isArray(value.data) &&\n      Object.keys(value).length === 2 &&\n      value.data.every((entry: any) => isInteger(entry) && entry >= 0 && entry <= 255)\n    ) {\n      return Uint8Array.from(value.data)\n    }\n  }\n  return value\n}\n\nexport const isTypedArrayPayload = (value: any): boolean =>\n  isObject(value) &&\n  isString(value.type) &&\n  isString(value.bytes) &&\n  Object.keys(value).length === 2\n\nexport const isArrayBufferPayload = (value: any): boolean =>\n  isObject(value) && isString(value.bytes) && Object.keys(value).length === 1\n\nexport const isRegExpPayload = (value: any): boolean =>\n  isObject(value) &&\n  isString(value.source) &&\n  isString(value.flags) &&\n  Object.keys(value).length === 2\n"],"mappings":"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","names":[]}