json-web3 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -65,6 +65,41 @@ const restoredUnsafe = jsonWeb3.parse_UNSAFE(textUnsafe)
65
65
  - `stringify_UNSAFE(value, replacer?, space?)` (serializes `Function` payloads)
66
66
  - `parse_UNSAFE(text, reviver?)` (revives `Function` payloads via `new Function(...)`)
67
67
 
68
+ ## Type support
69
+
70
+ | type | supported by standard JSON? | supported by json-web3? |
71
+ | ------------------- | --------------------------- | ------------------------------------- |
72
+ | `string` | ✅ | ✅ |
73
+ | `number` | ✅ | ✅ |
74
+ | `boolean` | ✅ | ✅ |
75
+ | `null` | ✅ | ✅ |
76
+ | `Array` | ✅ | ✅ |
77
+ | `Object` | ✅ | ✅ |
78
+ | `undefined` | ❌ | ❌ |
79
+ | `Infinity` | ❌ | ✅ |
80
+ | `-Infinity` | ❌ | ✅ |
81
+ | `NaN` | ❌ | ✅ |
82
+ | `BigInt` | ❌ | ✅ |
83
+ | `Date` | ❌ | ✅ |
84
+ | `RegExp` | ❌ | ✅ |
85
+ | `Set` | ❌ | ✅ |
86
+ | `Map` | ❌ | ✅ |
87
+ | `URL` | ❌ | ✅ |
88
+ | `ArrayBuffer` | ❌ | ✅ |
89
+ | `Uint8Array` | ❌ | ✅ |
90
+ | `Uint8ClampedArray` | ❌ | ✅ |
91
+ | `Uint16Array` | ❌ | ✅ |
92
+ | `Uint32Array` | ❌ | ✅ |
93
+ | `Int8Array` | ❌ | ✅ |
94
+ | `Int16Array` | ❌ | ✅ |
95
+ | `Int32Array` | ❌ | ✅ |
96
+ | `Float16Array` | ❌ | ✅ |
97
+ | `Float32Array` | ❌ | ✅ |
98
+ | `Float64Array` | ❌ | ✅ |
99
+ | `BigInt64Array` | ❌ | ✅ |
100
+ | `BigUint64Array` | ❌ | ✅ |
101
+ | `Function` | ❌ | ✅ ⚠️(use UNSAFE api, it's dangerous) |
102
+
68
103
  ## Note
69
104
 
70
105
  - `bigint` values are encoded as objects: `{"__@json.bigint__":"<value>"}`.
@@ -73,7 +108,8 @@ const restoredUnsafe = jsonWeb3.parse_UNSAFE(textUnsafe)
73
108
  - `Map` values are encoded as `{"__@json.map__":[[k,v],...]}` and `Set` values as `{"__@json.set__":[...]}`.
74
109
  - `RegExp` values are encoded as `{"__@json.regexp__":{"source":"...","flags":"..."}}`.
75
110
  - `URL` values are encoded as `{"__@json.url__":"..."}`.
76
- - `Function` values are encoded as `{"__@json.function__":"<source>"}` by `stringify_UNSAFE` and are only revived by `parse_UNSAFE` using `new Function(...)` (only do this with trusted input).
77
- - `ArrayBuffer`, Node `Buffer` JSON shapes, and typed arrays are encoded as `{"__@json.typedarray__":{"type":"<Name>","bytes":"0x..."}}` and decoded back to the original typed array (`Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Float32Array`, `Float64Array`, `BigInt64Array`, `BigUint64Array`).
111
+ - `Function` values are encoded as `{"__@json.function__":"<source>"}` by `stringify_UNSAFE` and are only revived by `parse_UNSAFE` using `new Function(...)` (using the UNSAFE function pair is dangerous; make sure your data is trusted).
112
+ - `ArrayBuffer` values are encoded as `{"__@json.arraybuffer__":{"bytes":"0x..."}}` and decoded back to `ArrayBuffer`.
113
+ - Node `Buffer` JSON shapes and typed arrays are encoded as `{"__@json.typedarray__":{"type":"<Name>","bytes":"0x..."}}` and decoded back to the original typed array (`Uint8Array`, `Uint8ClampedArray`, `Uint16Array`, `Uint32Array`, `Int8Array`, `Int16Array`, `Int32Array`, `Float32Array`, `Float64Array`, `BigInt64Array`, `BigUint64Array`).
78
114
 
79
115
  Compared to libraries that require eval-based parsing (for example, `serialize-javascript`), this approach is generally safer and more efficient.
package/dist/index.cjs CHANGED
@@ -31,6 +31,7 @@ module.exports = __toCommonJS(index_exports);
31
31
  // src/utils.ts
32
32
  var BIGINT_TAG = "__@json.bigint__";
33
33
  var TYPEDARRAY_TAG = "__@json.typedarray__";
34
+ var ARRAYBUFFER_TAG = "__@json.arraybuffer__";
34
35
  var DATE_TAG = "__@json.date__";
35
36
  var MAP_TAG = "__@json.map__";
36
37
  var SET_TAG = "__@json.set__";
@@ -38,8 +39,8 @@ var REGEXP_TAG = "__@json.regexp__";
38
39
  var URL_TAG = "__@json.url__";
39
40
  var FUNCTION_TAG = "__@json.function__";
40
41
  var NUMBER_TAG = "__@json.number__";
41
- var undefined = void 0;
42
- var isUndefined = (value) => typeof value === "undefined";
42
+ var UDF = "undefined";
43
+ var undefined = void UDF;
43
44
  var isString = (value) => typeof value === "string";
44
45
  var hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
45
46
  var isArray = (value) => Array.isArray(value);
@@ -50,21 +51,21 @@ var isDate = (value) => value instanceof Date;
50
51
  var isMap = (value) => value instanceof Map;
51
52
  var isSet = (value) => value instanceof Set;
52
53
  var isRegExp = (value) => value instanceof RegExp;
53
- var isURL = (value) => !isUndefined(URL) && value instanceof URL;
54
+ var isURL = (value) => typeof URL !== UDF && value instanceof URL;
54
55
  var isNonFiniteNumber = (value) => typeof value === "number" && !Number.isFinite(value);
55
56
  var isInteger = (value) => Number.isInteger(value);
56
- var hasBuffer = () => typeof Buffer !== "undefined";
57
- var isArrayBuffer = (value) => !isUndefined(ArrayBuffer) && value instanceof ArrayBuffer;
57
+ var hasBuffer = () => typeof Buffer !== UDF && isFunction(Buffer.isBuffer);
58
+ var isArrayBuffer = (value) => typeof ArrayBuffer !== UDF && value instanceof ArrayBuffer;
58
59
  var isTypedArray = (value) => {
59
- if (isUndefined(value)) return false;
60
- if (!isUndefined(ArrayBuffer) && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {
60
+ if (value == null) return false;
61
+ if (typeof ArrayBuffer !== UDF && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {
61
62
  return Object.prototype.toString.call(value) !== "[object DataView]";
62
63
  }
63
64
  const tag = Object.prototype.toString.call(value);
64
65
  return tag.endsWith("Array]") && tag !== "[object Array]";
65
66
  };
66
67
  var getTypedArrayName = (value) => {
67
- if (isUndefined(value)) return null;
68
+ if (value == null) return null;
68
69
  const ctor = value.constructor;
69
70
  if (ctor && isString(ctor.name)) return ctor.name;
70
71
  const tag = Object.prototype.toString.call(value);
@@ -72,18 +73,18 @@ var getTypedArrayName = (value) => {
72
73
  return match ? match[1] : null;
73
74
  };
74
75
  var TYPEDARRAY_CTORS = {
75
- Int8Array: !isUndefined(Int8Array) ? Int8Array : undefined,
76
- Uint8Array: !isUndefined(Uint8Array) ? Uint8Array : undefined,
77
- Uint8ClampedArray: !isUndefined(Uint8ClampedArray) ? Uint8ClampedArray : undefined,
78
- Int16Array: !isUndefined(Int16Array) ? Int16Array : undefined,
79
- Uint16Array: !isUndefined(Uint16Array) ? Uint16Array : undefined,
80
- Float16Array: !isUndefined(Float16Array) ? Float16Array : undefined,
81
- Int32Array: !isUndefined(Int32Array) ? Int32Array : undefined,
82
- Uint32Array: !isUndefined(Uint32Array) ? Uint32Array : undefined,
83
- Float32Array: !isUndefined(Float32Array) ? Float32Array : undefined,
84
- Float64Array: !isUndefined(Float64Array) ? Float64Array : undefined,
85
- BigInt64Array: !isUndefined(BigInt64Array) ? BigInt64Array : undefined,
86
- BigUint64Array: !isUndefined(BigUint64Array) ? BigUint64Array : undefined
76
+ Int8Array: typeof Int8Array !== UDF ? Int8Array : undefined,
77
+ Uint8Array: typeof Uint8Array !== UDF ? Uint8Array : undefined,
78
+ Uint8ClampedArray: typeof Uint8ClampedArray !== UDF ? Uint8ClampedArray : undefined,
79
+ Int16Array: typeof Int16Array !== UDF ? Int16Array : undefined,
80
+ Uint16Array: typeof Uint16Array !== UDF ? Uint16Array : undefined,
81
+ Float16Array: typeof Float16Array !== UDF ? Float16Array : undefined,
82
+ Int32Array: typeof Int32Array !== UDF ? Int32Array : undefined,
83
+ Uint32Array: typeof Uint32Array !== UDF ? Uint32Array : undefined,
84
+ Float32Array: typeof Float32Array !== UDF ? Float32Array : undefined,
85
+ Float64Array: typeof Float64Array !== UDF ? Float64Array : undefined,
86
+ BigInt64Array: typeof BigInt64Array !== UDF ? BigInt64Array : undefined,
87
+ BigUint64Array: typeof BigUint64Array !== UDF ? BigUint64Array : undefined
87
88
  };
88
89
  var toHex = (value) => {
89
90
  let out = "0x";
@@ -142,7 +143,7 @@ var toSerializable = (value, options = {}) => {
142
143
  }
143
144
  }
144
145
  if (isArrayBuffer(value)) {
145
- return { [TYPEDARRAY_TAG]: { type: "Uint8Array", bytes: toHex(new Uint8Array(value)) } };
146
+ return { [ARRAYBUFFER_TAG]: { bytes: toHex(new Uint8Array(value)) } };
146
147
  }
147
148
  if (value && isObject(value) && value.type === "Buffer" && isArray(value.data) && Object.keys(value).length === 2 && value.data.every((entry) => isInteger(entry) && entry >= 0 && entry <= 255)) {
148
149
  return { [TYPEDARRAY_TAG]: { type: "Uint8Array", bytes: toHex(Uint8Array.from(value.data)) } };
@@ -214,6 +215,16 @@ var fromSerializable = (value, options = {}) => {
214
215
  new Uint8Array(buffer).set(bytes);
215
216
  return new ctor(buffer);
216
217
  }
218
+ if (hasOwnProperty(value, ARRAYBUFFER_TAG)) {
219
+ const payload = value[ARRAYBUFFER_TAG];
220
+ if (!payload || !isObject(payload) || !isString(payload.bytes)) {
221
+ throw new Error("Invalid arraybuffer payload");
222
+ }
223
+ const bytes = fromHex(payload.bytes);
224
+ const buffer = new ArrayBuffer(bytes.byteLength);
225
+ new Uint8Array(buffer).set(bytes);
226
+ return buffer;
227
+ }
217
228
  if (value.type === "Buffer" && isArray(value.data) && Object.keys(value).length === 2 && value.data.every((entry) => isInteger(entry) && entry >= 0 && entry <= 255)) {
218
229
  return Uint8Array.from(value.data);
219
230
  }
@@ -221,6 +232,7 @@ var fromSerializable = (value, options = {}) => {
221
232
  return value;
222
233
  };
223
234
  var isTypedArrayPayload = (value) => isObject(value) && isString(value.type) && isString(value.bytes) && Object.keys(value).length === 2;
235
+ var isArrayBufferPayload = (value) => isObject(value) && isString(value.bytes) && Object.keys(value).length === 1;
224
236
  var isRegExpPayload = (value) => isObject(value) && isString(value.source) && isString(value.flags) && Object.keys(value).length === 2;
225
237
 
226
238
  // src/index.ts
@@ -240,7 +252,9 @@ var applyReplacer = (holder, key, value, replacer) => {
240
252
  if (key === URL_TAG) return value;
241
253
  if (key === FUNCTION_TAG) return value;
242
254
  if (key === TYPEDARRAY_TAG) return value;
255
+ if (key === ARRAYBUFFER_TAG) return value;
243
256
  if (isTypedArrayPayload(holder)) return value;
257
+ if (isArrayBufferPayload(holder)) return value;
244
258
  if (isRegExpPayload(holder)) return value;
245
259
  if (isArray(holder)) return value;
246
260
  return replacer.includes(key) ? value : undefined;
@@ -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 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\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 Int8Array: !isUndefined(Int8Array) ? Int8Array : undefined,\n Uint8Array: !isUndefined(Uint8Array) ? Uint8Array : undefined,\n Uint8ClampedArray: !isUndefined(Uint8ClampedArray) ? Uint8ClampedArray : undefined,\n\n Int16Array: !isUndefined(Int16Array) ? Int16Array : undefined,\n Uint16Array: !isUndefined(Uint16Array) ? Uint16Array : undefined,\n Float16Array: !isUndefined(Float16Array) ? Float16Array : undefined,\n\n Int32Array: !isUndefined(Int32Array) ? Int32Array : undefined,\n Uint32Array: !isUndefined(Uint32Array) ? Uint32Array : undefined,\n Float32Array: !isUndefined(Float32Array) ? Float32Array : undefined,\n\n Float64Array: !isUndefined(Float64Array) ? Float64Array : undefined,\n\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 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 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 (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 : 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 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 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 { [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":[]}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // src/utils.ts
2
2
  var BIGINT_TAG = "__@json.bigint__";
3
3
  var TYPEDARRAY_TAG = "__@json.typedarray__";
4
+ var ARRAYBUFFER_TAG = "__@json.arraybuffer__";
4
5
  var DATE_TAG = "__@json.date__";
5
6
  var MAP_TAG = "__@json.map__";
6
7
  var SET_TAG = "__@json.set__";
@@ -8,8 +9,8 @@ var REGEXP_TAG = "__@json.regexp__";
8
9
  var URL_TAG = "__@json.url__";
9
10
  var FUNCTION_TAG = "__@json.function__";
10
11
  var NUMBER_TAG = "__@json.number__";
11
- var undefined = void 0;
12
- var isUndefined = (value) => typeof value === "undefined";
12
+ var UDF = "undefined";
13
+ var undefined = void UDF;
13
14
  var isString = (value) => typeof value === "string";
14
15
  var hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
15
16
  var isArray = (value) => Array.isArray(value);
@@ -20,21 +21,21 @@ var isDate = (value) => value instanceof Date;
20
21
  var isMap = (value) => value instanceof Map;
21
22
  var isSet = (value) => value instanceof Set;
22
23
  var isRegExp = (value) => value instanceof RegExp;
23
- var isURL = (value) => !isUndefined(URL) && value instanceof URL;
24
+ var isURL = (value) => typeof URL !== UDF && value instanceof URL;
24
25
  var isNonFiniteNumber = (value) => typeof value === "number" && !Number.isFinite(value);
25
26
  var isInteger = (value) => Number.isInteger(value);
26
- var hasBuffer = () => typeof Buffer !== "undefined";
27
- var isArrayBuffer = (value) => !isUndefined(ArrayBuffer) && value instanceof ArrayBuffer;
27
+ var hasBuffer = () => typeof Buffer !== UDF && isFunction(Buffer.isBuffer);
28
+ var isArrayBuffer = (value) => typeof ArrayBuffer !== UDF && value instanceof ArrayBuffer;
28
29
  var isTypedArray = (value) => {
29
- if (isUndefined(value)) return false;
30
- if (!isUndefined(ArrayBuffer) && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {
30
+ if (value == null) return false;
31
+ if (typeof ArrayBuffer !== UDF && isFunction(ArrayBuffer.isView) && ArrayBuffer.isView(value)) {
31
32
  return Object.prototype.toString.call(value) !== "[object DataView]";
32
33
  }
33
34
  const tag = Object.prototype.toString.call(value);
34
35
  return tag.endsWith("Array]") && tag !== "[object Array]";
35
36
  };
36
37
  var getTypedArrayName = (value) => {
37
- if (isUndefined(value)) return null;
38
+ if (value == null) return null;
38
39
  const ctor = value.constructor;
39
40
  if (ctor && isString(ctor.name)) return ctor.name;
40
41
  const tag = Object.prototype.toString.call(value);
@@ -42,18 +43,18 @@ var getTypedArrayName = (value) => {
42
43
  return match ? match[1] : null;
43
44
  };
44
45
  var TYPEDARRAY_CTORS = {
45
- Int8Array: !isUndefined(Int8Array) ? Int8Array : undefined,
46
- Uint8Array: !isUndefined(Uint8Array) ? Uint8Array : undefined,
47
- Uint8ClampedArray: !isUndefined(Uint8ClampedArray) ? Uint8ClampedArray : undefined,
48
- Int16Array: !isUndefined(Int16Array) ? Int16Array : undefined,
49
- Uint16Array: !isUndefined(Uint16Array) ? Uint16Array : undefined,
50
- Float16Array: !isUndefined(Float16Array) ? Float16Array : undefined,
51
- Int32Array: !isUndefined(Int32Array) ? Int32Array : undefined,
52
- Uint32Array: !isUndefined(Uint32Array) ? Uint32Array : undefined,
53
- Float32Array: !isUndefined(Float32Array) ? Float32Array : undefined,
54
- Float64Array: !isUndefined(Float64Array) ? Float64Array : undefined,
55
- BigInt64Array: !isUndefined(BigInt64Array) ? BigInt64Array : undefined,
56
- BigUint64Array: !isUndefined(BigUint64Array) ? BigUint64Array : undefined
46
+ Int8Array: typeof Int8Array !== UDF ? Int8Array : undefined,
47
+ Uint8Array: typeof Uint8Array !== UDF ? Uint8Array : undefined,
48
+ Uint8ClampedArray: typeof Uint8ClampedArray !== UDF ? Uint8ClampedArray : undefined,
49
+ Int16Array: typeof Int16Array !== UDF ? Int16Array : undefined,
50
+ Uint16Array: typeof Uint16Array !== UDF ? Uint16Array : undefined,
51
+ Float16Array: typeof Float16Array !== UDF ? Float16Array : undefined,
52
+ Int32Array: typeof Int32Array !== UDF ? Int32Array : undefined,
53
+ Uint32Array: typeof Uint32Array !== UDF ? Uint32Array : undefined,
54
+ Float32Array: typeof Float32Array !== UDF ? Float32Array : undefined,
55
+ Float64Array: typeof Float64Array !== UDF ? Float64Array : undefined,
56
+ BigInt64Array: typeof BigInt64Array !== UDF ? BigInt64Array : undefined,
57
+ BigUint64Array: typeof BigUint64Array !== UDF ? BigUint64Array : undefined
57
58
  };
58
59
  var toHex = (value) => {
59
60
  let out = "0x";
@@ -112,7 +113,7 @@ var toSerializable = (value, options = {}) => {
112
113
  }
113
114
  }
114
115
  if (isArrayBuffer(value)) {
115
- return { [TYPEDARRAY_TAG]: { type: "Uint8Array", bytes: toHex(new Uint8Array(value)) } };
116
+ return { [ARRAYBUFFER_TAG]: { bytes: toHex(new Uint8Array(value)) } };
116
117
  }
117
118
  if (value && isObject(value) && value.type === "Buffer" && isArray(value.data) && Object.keys(value).length === 2 && value.data.every((entry) => isInteger(entry) && entry >= 0 && entry <= 255)) {
118
119
  return { [TYPEDARRAY_TAG]: { type: "Uint8Array", bytes: toHex(Uint8Array.from(value.data)) } };
@@ -184,6 +185,16 @@ var fromSerializable = (value, options = {}) => {
184
185
  new Uint8Array(buffer).set(bytes);
185
186
  return new ctor(buffer);
186
187
  }
188
+ if (hasOwnProperty(value, ARRAYBUFFER_TAG)) {
189
+ const payload = value[ARRAYBUFFER_TAG];
190
+ if (!payload || !isObject(payload) || !isString(payload.bytes)) {
191
+ throw new Error("Invalid arraybuffer payload");
192
+ }
193
+ const bytes = fromHex(payload.bytes);
194
+ const buffer = new ArrayBuffer(bytes.byteLength);
195
+ new Uint8Array(buffer).set(bytes);
196
+ return buffer;
197
+ }
187
198
  if (value.type === "Buffer" && isArray(value.data) && Object.keys(value).length === 2 && value.data.every((entry) => isInteger(entry) && entry >= 0 && entry <= 255)) {
188
199
  return Uint8Array.from(value.data);
189
200
  }
@@ -191,6 +202,7 @@ var fromSerializable = (value, options = {}) => {
191
202
  return value;
192
203
  };
193
204
  var isTypedArrayPayload = (value) => isObject(value) && isString(value.type) && isString(value.bytes) && Object.keys(value).length === 2;
205
+ var isArrayBufferPayload = (value) => isObject(value) && isString(value.bytes) && Object.keys(value).length === 1;
194
206
  var isRegExpPayload = (value) => isObject(value) && isString(value.source) && isString(value.flags) && Object.keys(value).length === 2;
195
207
 
196
208
  // src/index.ts
@@ -210,7 +222,9 @@ var applyReplacer = (holder, key, value, replacer) => {
210
222
  if (key === URL_TAG) return value;
211
223
  if (key === FUNCTION_TAG) return value;
212
224
  if (key === TYPEDARRAY_TAG) return value;
225
+ if (key === ARRAYBUFFER_TAG) return value;
213
226
  if (isTypedArrayPayload(holder)) return value;
227
+ if (isArrayBufferPayload(holder)) return value;
214
228
  if (isRegExpPayload(holder)) return value;
215
229
  if (isArray(holder)) return value;
216
230
  return replacer.includes(key) ? value : undefined;
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 Int8Array: !isUndefined(Int8Array) ? Int8Array : undefined,\n Uint8Array: !isUndefined(Uint8Array) ? Uint8Array : undefined,\n Uint8ClampedArray: !isUndefined(Uint8ClampedArray) ? Uint8ClampedArray : undefined,\n\n Int16Array: !isUndefined(Int16Array) ? Int16Array : undefined,\n Uint16Array: !isUndefined(Uint16Array) ? Uint16Array : undefined,\n Float16Array: !isUndefined(Float16Array) ? Float16Array : undefined,\n\n Int32Array: !isUndefined(Int32Array) ? Int32Array : undefined,\n Uint32Array: !isUndefined(Uint32Array) ? Uint32Array : undefined,\n Float32Array: !isUndefined(Float32Array) ? Float32Array : undefined,\n\n Float64Array: !isUndefined(Float64Array) ? Float64Array : undefined,\n\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 parse,\n stringify_UNSAFE,\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 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 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 { [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","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 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 (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 : 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.1",
3
+ "version": "1.3.0",
4
4
  "description": "BigInt-safe JSON serialization and deserialization for Web3 use cases.",
5
5
  "keywords": [
6
6
  "json",