json-web3 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -61,8 +61,8 @@ const restoredUnsafe = jsonWeb3.parse_UNSAFE(textUnsafe)
61
61
  ## API (Fully compatible with native globalThis.JSON)
62
62
 
63
63
  - `stringify(value, replacer?, space?)`
64
- - `stringify_UNSAFE(value, replacer?, space?)` (serializes `Function` payloads)
65
64
  - `parse(text, reviver?)`
65
+ - `stringify_UNSAFE(value, replacer?, space?)` (serializes `Function` payloads)
66
66
  - `parse_UNSAFE(text, reviver?)` (revives `Function` payloads via `new Function(...)`)
67
67
 
68
68
  ## Note
package/dist/index.cjs CHANGED
@@ -38,8 +38,8 @@ var REGEXP_TAG = "__@json.regexp__";
38
38
  var URL_TAG = "__@json.url__";
39
39
  var FUNCTION_TAG = "__@json.function__";
40
40
  var NUMBER_TAG = "__@json.number__";
41
- var undefined = void 0;
42
- var isUndefined = (value) => typeof value === "undefined";
41
+ var UDF = "undefined";
42
+ var undefined = void UDF;
43
43
  var isString = (value) => typeof value === "string";
44
44
  var hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
45
45
  var isArray = (value) => Array.isArray(value);
@@ -50,21 +50,21 @@ var isDate = (value) => value instanceof Date;
50
50
  var isMap = (value) => value instanceof Map;
51
51
  var isSet = (value) => value instanceof Set;
52
52
  var isRegExp = (value) => value instanceof RegExp;
53
- var isURL = (value) => !isUndefined(URL) && value instanceof URL;
53
+ var isURL = (value) => typeof URL !== UDF && value instanceof URL;
54
54
  var isNonFiniteNumber = (value) => typeof value === "number" && !Number.isFinite(value);
55
55
  var isInteger = (value) => Number.isInteger(value);
56
- var hasBuffer = () => typeof Buffer !== "undefined";
57
- var isArrayBuffer = (value) => !isUndefined(ArrayBuffer) && value instanceof ArrayBuffer;
56
+ var hasBuffer = () => typeof Buffer !== UDF && isFunction(Buffer.isBuffer);
57
+ var isArrayBuffer = (value) => typeof ArrayBuffer !== UDF && value instanceof ArrayBuffer;
58
58
  var isTypedArray = (value) => {
59
- if (isUndefined(value)) return false;
60
- if (!isUndefined(ArrayBuffer) && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {
59
+ if (value == null) return false;
60
+ if (typeof ArrayBuffer !== UDF && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {
61
61
  return Object.prototype.toString.call(value) !== "[object DataView]";
62
62
  }
63
63
  const tag = Object.prototype.toString.call(value);
64
64
  return tag.endsWith("Array]") && tag !== "[object Array]";
65
65
  };
66
66
  var getTypedArrayName = (value) => {
67
- if (isUndefined(value)) return null;
67
+ if (value == null) return null;
68
68
  const ctor = value.constructor;
69
69
  if (ctor && isString(ctor.name)) return ctor.name;
70
70
  const tag = Object.prototype.toString.call(value);
@@ -72,17 +72,18 @@ var getTypedArrayName = (value) => {
72
72
  return match ? match[1] : null;
73
73
  };
74
74
  var TYPEDARRAY_CTORS = {
75
- Uint8Array: !isUndefined(Uint8Array) ? Uint8Array : undefined,
76
- Uint8ClampedArray: !isUndefined(Uint8ClampedArray) ? Uint8ClampedArray : undefined,
77
- Uint16Array: !isUndefined(Uint16Array) ? Uint16Array : undefined,
78
- Uint32Array: !isUndefined(Uint32Array) ? Uint32Array : undefined,
79
- Int8Array: !isUndefined(Int8Array) ? Int8Array : undefined,
80
- Int16Array: !isUndefined(Int16Array) ? Int16Array : undefined,
81
- Int32Array: !isUndefined(Int32Array) ? Int32Array : undefined,
82
- Float32Array: !isUndefined(Float32Array) ? Float32Array : undefined,
83
- Float64Array: !isUndefined(Float64Array) ? Float64Array : undefined,
84
- BigInt64Array: !isUndefined(BigInt64Array) ? BigInt64Array : undefined,
85
- BigUint64Array: !isUndefined(BigUint64Array) ? BigUint64Array : undefined
75
+ Int8Array: typeof Int8Array !== UDF ? Int8Array : undefined,
76
+ Uint8Array: typeof Uint8Array !== UDF ? Uint8Array : undefined,
77
+ Uint8ClampedArray: typeof Uint8ClampedArray !== UDF ? Uint8ClampedArray : undefined,
78
+ Int16Array: typeof Int16Array !== UDF ? Int16Array : undefined,
79
+ Uint16Array: typeof Uint16Array !== UDF ? Uint16Array : undefined,
80
+ Float16Array: typeof Float16Array !== UDF ? Float16Array : undefined,
81
+ Int32Array: typeof Int32Array !== UDF ? Int32Array : undefined,
82
+ Uint32Array: typeof Uint32Array !== UDF ? Uint32Array : undefined,
83
+ Float32Array: typeof Float32Array !== UDF ? Float32Array : undefined,
84
+ Float64Array: typeof Float64Array !== UDF ? Float64Array : undefined,
85
+ BigInt64Array: typeof BigInt64Array !== UDF ? BigInt64Array : undefined,
86
+ BigUint64Array: typeof BigUint64Array !== UDF ? BigUint64Array : undefined
86
87
  };
87
88
  var toHex = (value) => {
88
89
  let out = "0x";
@@ -276,8 +277,8 @@ var parse_UNSAFE = (text, reviver = null) => RAW_JSON.parse(text, (key, v) => {
276
277
  });
277
278
  var index_default = {
278
279
  stringify,
279
- stringify_UNSAFE,
280
280
  parse,
281
+ stringify_UNSAFE,
281
282
  parse_UNSAFE
282
283
  };
283
284
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/utils.ts"],"sourcesContent":["import {\n BIGINT_TAG,\n DATE_TAG,\n fromSerializable,\n FUNCTION_TAG,\n isArray,\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 undefined,\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 (isTypedArrayPayload(holder)) return value\n if (isRegExpPayload(holder)) return value\n if (isArray(holder)) return value\n return replacer.includes(key) ? value : undefined\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 stringify_UNSAFE,\n parse,\n parse_UNSAFE,\n}\n","export const BIGINT_TAG = '__@json.bigint__'\nexport const TYPEDARRAY_TAG = '__@json.typedarray__'\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\nexport const undefined = void 0\nexport const isUndefined = (value: any): value is undefined => typeof value === 'undefined'\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 => !isUndefined(URL) && value instanceof URL\nexport const isNonFiniteNumber = (value: any): value is number =>\n typeof value === 'number' && !Number.isFinite(value)\nexport const isInteger = (value: any): value is number => Number.isInteger(value)\nconst hasBuffer = (): boolean => typeof Buffer !== 'undefined'\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 !isUndefined(ArrayBuffer) && value instanceof ArrayBuffer\n\nexport const isTypedArray = (value: any): value is ArrayBufferView => {\n if (isUndefined(value)) return false\n if (!isUndefined(ArrayBuffer) && 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 (isUndefined(value)) 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 Uint8Array: !isUndefined(Uint8Array) ? Uint8Array : undefined,\n Uint8ClampedArray: !isUndefined(Uint8ClampedArray) ? Uint8ClampedArray : undefined,\n Uint16Array: !isUndefined(Uint16Array) ? Uint16Array : undefined,\n Uint32Array: !isUndefined(Uint32Array) ? Uint32Array : undefined,\n Int8Array: !isUndefined(Int8Array) ? Int8Array : undefined,\n Int16Array: !isUndefined(Int16Array) ? Int16Array : undefined,\n Int32Array: !isUndefined(Int32Array) ? Int32Array : undefined,\n Float32Array: !isUndefined(Float32Array) ? Float32Array : undefined,\n Float64Array: !isUndefined(Float64Array) ? Float64Array : undefined,\n BigInt64Array: !isUndefined(BigInt64Array) ? BigInt64Array : undefined,\n BigUint64Array: !isUndefined(BigUint64Array) ? BigUint64Array : undefined,\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\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 { [TYPEDARRAY_TAG]: { type: 'Uint8Array', 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 (\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 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":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/utils.ts"],"sourcesContent":["import {\n BIGINT_TAG,\n DATE_TAG,\n fromSerializable,\n FUNCTION_TAG,\n isArray,\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 undefined,\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 (isTypedArrayPayload(holder)) return value\n if (isRegExpPayload(holder)) return value\n if (isArray(holder)) return value\n return replacer.includes(key) ? value : undefined\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 stringify_UNSAFE,\n parse_UNSAFE,\n}\n","export const BIGINT_TAG = '__@json.bigint__'\nexport const TYPEDARRAY_TAG = '__@json.typedarray__'\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 undefined = 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\nexport const isNonFiniteNumber = (value: any): value is number =>\n typeof value === 'number' && !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 : undefined,\n Uint8Array: typeof Uint8Array !== UDF ? Uint8Array : undefined,\n Uint8ClampedArray: typeof Uint8ClampedArray !== UDF ? Uint8ClampedArray : undefined,\n\n Int16Array: typeof Int16Array !== UDF ? Int16Array : undefined,\n Uint16Array: typeof Uint16Array !== UDF ? Uint16Array : undefined,\n Float16Array: typeof Float16Array !== UDF ? Float16Array : undefined,\n\n Int32Array: typeof Int32Array !== UDF ? Int32Array : undefined,\n Uint32Array: typeof Uint32Array !== UDF ? Uint32Array : undefined,\n Float32Array: typeof Float32Array !== UDF ? Float32Array : undefined,\n\n Float64Array: typeof Float64Array !== UDF ? Float64Array : undefined,\n\n BigInt64Array: typeof BigInt64Array !== UDF ? BigInt64Array : undefined,\n BigUint64Array: typeof BigUint64Array !== UDF ? BigUint64Array : undefined,\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\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 { [TYPEDARRAY_TAG]: { type: 'Uint8Array', 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 (\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 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":[]}
package/dist/index.d.cts CHANGED
@@ -6,8 +6,8 @@ declare const parse: <T = any>(text: string, reviver?: Reviver) => T;
6
6
  declare const parse_UNSAFE: <T = any>(text: string, reviver?: Reviver) => T;
7
7
  declare const _default: {
8
8
  stringify: (value: any, replacer?: Replacer, space?: string | number) => string;
9
- stringify_UNSAFE: (value: any, replacer?: Replacer, space?: string | number) => string;
10
9
  parse: <T = any>(text: string, reviver?: Reviver) => T;
10
+ stringify_UNSAFE: (value: any, replacer?: Replacer, space?: string | number) => string;
11
11
  parse_UNSAFE: <T = any>(text: string, reviver?: Reviver) => T;
12
12
  };
13
13
 
package/dist/index.d.ts CHANGED
@@ -6,8 +6,8 @@ declare const parse: <T = any>(text: string, reviver?: Reviver) => T;
6
6
  declare const parse_UNSAFE: <T = any>(text: string, reviver?: Reviver) => T;
7
7
  declare const _default: {
8
8
  stringify: (value: any, replacer?: Replacer, space?: string | number) => string;
9
- stringify_UNSAFE: (value: any, replacer?: Replacer, space?: string | number) => string;
10
9
  parse: <T = any>(text: string, reviver?: Reviver) => T;
10
+ stringify_UNSAFE: (value: any, replacer?: Replacer, space?: string | number) => string;
11
11
  parse_UNSAFE: <T = any>(text: string, reviver?: Reviver) => T;
12
12
  };
13
13
 
package/dist/index.js CHANGED
@@ -8,8 +8,8 @@ var REGEXP_TAG = "__@json.regexp__";
8
8
  var URL_TAG = "__@json.url__";
9
9
  var FUNCTION_TAG = "__@json.function__";
10
10
  var NUMBER_TAG = "__@json.number__";
11
- var undefined = void 0;
12
- var isUndefined = (value) => typeof value === "undefined";
11
+ var UDF = "undefined";
12
+ var undefined = void UDF;
13
13
  var isString = (value) => typeof value === "string";
14
14
  var hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
15
15
  var isArray = (value) => Array.isArray(value);
@@ -20,21 +20,21 @@ var isDate = (value) => value instanceof Date;
20
20
  var isMap = (value) => value instanceof Map;
21
21
  var isSet = (value) => value instanceof Set;
22
22
  var isRegExp = (value) => value instanceof RegExp;
23
- var isURL = (value) => !isUndefined(URL) && value instanceof URL;
23
+ var isURL = (value) => typeof URL !== UDF && value instanceof URL;
24
24
  var isNonFiniteNumber = (value) => typeof value === "number" && !Number.isFinite(value);
25
25
  var isInteger = (value) => Number.isInteger(value);
26
- var hasBuffer = () => typeof Buffer !== "undefined";
27
- var isArrayBuffer = (value) => !isUndefined(ArrayBuffer) && value instanceof ArrayBuffer;
26
+ var hasBuffer = () => typeof Buffer !== UDF && isFunction(Buffer.isBuffer);
27
+ var isArrayBuffer = (value) => typeof ArrayBuffer !== UDF && value instanceof ArrayBuffer;
28
28
  var isTypedArray = (value) => {
29
- if (isUndefined(value)) return false;
30
- if (!isUndefined(ArrayBuffer) && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {
29
+ if (value == null) return false;
30
+ if (typeof ArrayBuffer !== UDF && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {
31
31
  return Object.prototype.toString.call(value) !== "[object DataView]";
32
32
  }
33
33
  const tag = Object.prototype.toString.call(value);
34
34
  return tag.endsWith("Array]") && tag !== "[object Array]";
35
35
  };
36
36
  var getTypedArrayName = (value) => {
37
- if (isUndefined(value)) return null;
37
+ if (value == null) return null;
38
38
  const ctor = value.constructor;
39
39
  if (ctor && isString(ctor.name)) return ctor.name;
40
40
  const tag = Object.prototype.toString.call(value);
@@ -42,17 +42,18 @@ var getTypedArrayName = (value) => {
42
42
  return match ? match[1] : null;
43
43
  };
44
44
  var TYPEDARRAY_CTORS = {
45
- Uint8Array: !isUndefined(Uint8Array) ? Uint8Array : undefined,
46
- Uint8ClampedArray: !isUndefined(Uint8ClampedArray) ? Uint8ClampedArray : undefined,
47
- Uint16Array: !isUndefined(Uint16Array) ? Uint16Array : undefined,
48
- Uint32Array: !isUndefined(Uint32Array) ? Uint32Array : undefined,
49
- Int8Array: !isUndefined(Int8Array) ? Int8Array : undefined,
50
- Int16Array: !isUndefined(Int16Array) ? Int16Array : undefined,
51
- Int32Array: !isUndefined(Int32Array) ? Int32Array : undefined,
52
- Float32Array: !isUndefined(Float32Array) ? Float32Array : undefined,
53
- Float64Array: !isUndefined(Float64Array) ? Float64Array : undefined,
54
- BigInt64Array: !isUndefined(BigInt64Array) ? BigInt64Array : undefined,
55
- BigUint64Array: !isUndefined(BigUint64Array) ? BigUint64Array : undefined
45
+ Int8Array: typeof Int8Array !== UDF ? Int8Array : undefined,
46
+ Uint8Array: typeof Uint8Array !== UDF ? Uint8Array : undefined,
47
+ Uint8ClampedArray: typeof Uint8ClampedArray !== UDF ? Uint8ClampedArray : undefined,
48
+ Int16Array: typeof Int16Array !== UDF ? Int16Array : undefined,
49
+ Uint16Array: typeof Uint16Array !== UDF ? Uint16Array : undefined,
50
+ Float16Array: typeof Float16Array !== UDF ? Float16Array : undefined,
51
+ Int32Array: typeof Int32Array !== UDF ? Int32Array : undefined,
52
+ Uint32Array: typeof Uint32Array !== UDF ? Uint32Array : undefined,
53
+ Float32Array: typeof Float32Array !== UDF ? Float32Array : undefined,
54
+ Float64Array: typeof Float64Array !== UDF ? Float64Array : undefined,
55
+ BigInt64Array: typeof BigInt64Array !== UDF ? BigInt64Array : undefined,
56
+ BigUint64Array: typeof BigUint64Array !== UDF ? BigUint64Array : undefined
56
57
  };
57
58
  var toHex = (value) => {
58
59
  let out = "0x";
@@ -246,8 +247,8 @@ var parse_UNSAFE = (text, reviver = null) => RAW_JSON.parse(text, (key, v) => {
246
247
  });
247
248
  var index_default = {
248
249
  stringify,
249
- stringify_UNSAFE,
250
250
  parse,
251
+ stringify_UNSAFE,
251
252
  parse_UNSAFE
252
253
  };
253
254
  export {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["export const BIGINT_TAG = '__@json.bigint__'\nexport const TYPEDARRAY_TAG = '__@json.typedarray__'\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\nexport const undefined = void 0\nexport const isUndefined = (value: any): value is undefined => typeof value === 'undefined'\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 => !isUndefined(URL) && value instanceof URL\nexport const isNonFiniteNumber = (value: any): value is number =>\n typeof value === 'number' && !Number.isFinite(value)\nexport const isInteger = (value: any): value is number => Number.isInteger(value)\nconst hasBuffer = (): boolean => typeof Buffer !== 'undefined'\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 !isUndefined(ArrayBuffer) && value instanceof ArrayBuffer\n\nexport const isTypedArray = (value: any): value is ArrayBufferView => {\n if (isUndefined(value)) return false\n if (!isUndefined(ArrayBuffer) && 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 (isUndefined(value)) 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 Uint8Array: !isUndefined(Uint8Array) ? Uint8Array : undefined,\n Uint8ClampedArray: !isUndefined(Uint8ClampedArray) ? Uint8ClampedArray : undefined,\n Uint16Array: !isUndefined(Uint16Array) ? Uint16Array : undefined,\n Uint32Array: !isUndefined(Uint32Array) ? Uint32Array : undefined,\n Int8Array: !isUndefined(Int8Array) ? Int8Array : undefined,\n Int16Array: !isUndefined(Int16Array) ? Int16Array : undefined,\n Int32Array: !isUndefined(Int32Array) ? Int32Array : undefined,\n Float32Array: !isUndefined(Float32Array) ? Float32Array : undefined,\n Float64Array: !isUndefined(Float64Array) ? Float64Array : undefined,\n BigInt64Array: !isUndefined(BigInt64Array) ? BigInt64Array : undefined,\n BigUint64Array: !isUndefined(BigUint64Array) ? BigUint64Array : undefined,\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\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 { [TYPEDARRAY_TAG]: { type: 'Uint8Array', 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 (\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 isRegExpPayload = (value: any): boolean =>\n isObject(value) &&\n isString(value.source) &&\n isString(value.flags) &&\n Object.keys(value).length === 2\n","import {\n BIGINT_TAG,\n DATE_TAG,\n fromSerializable,\n FUNCTION_TAG,\n isArray,\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 undefined,\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 (isTypedArrayPayload(holder)) return value\n if (isRegExpPayload(holder)) return value\n if (isArray(holder)) return value\n return replacer.includes(key) ? value : undefined\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 stringify_UNSAFE,\n parse,\n parse_UNSAFE,\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["export const BIGINT_TAG = '__@json.bigint__'\nexport const TYPEDARRAY_TAG = '__@json.typedarray__'\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 undefined = 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\nexport const isNonFiniteNumber = (value: any): value is number =>\n typeof value === 'number' && !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 : undefined,\n Uint8Array: typeof Uint8Array !== UDF ? Uint8Array : undefined,\n Uint8ClampedArray: typeof Uint8ClampedArray !== UDF ? Uint8ClampedArray : undefined,\n\n Int16Array: typeof Int16Array !== UDF ? Int16Array : undefined,\n Uint16Array: typeof Uint16Array !== UDF ? Uint16Array : undefined,\n Float16Array: typeof Float16Array !== UDF ? Float16Array : undefined,\n\n Int32Array: typeof Int32Array !== UDF ? Int32Array : undefined,\n Uint32Array: typeof Uint32Array !== UDF ? Uint32Array : undefined,\n Float32Array: typeof Float32Array !== UDF ? Float32Array : undefined,\n\n Float64Array: typeof Float64Array !== UDF ? Float64Array : undefined,\n\n BigInt64Array: typeof BigInt64Array !== UDF ? BigInt64Array : undefined,\n BigUint64Array: typeof BigUint64Array !== UDF ? BigUint64Array : undefined,\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\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 { [TYPEDARRAY_TAG]: { type: 'Uint8Array', 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 (\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 isRegExpPayload = (value: any): boolean =>\n isObject(value) &&\n isString(value.source) &&\n isString(value.flags) &&\n Object.keys(value).length === 2\n","import {\n BIGINT_TAG,\n DATE_TAG,\n fromSerializable,\n FUNCTION_TAG,\n isArray,\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 undefined,\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 (isTypedArrayPayload(holder)) return value\n if (isRegExpPayload(holder)) return value\n if (isArray(holder)) return value\n return replacer.includes(key) ? value : undefined\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 stringify_UNSAFE,\n parse_UNSAFE,\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-web3",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "BigInt-safe JSON serialization and deserialization for Web3 use cases.",
5
5
  "keywords": [
6
6
  "json",