From 3291e23fc5e3806b626c205406a22e8e6c8cdc0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=AF=E7=84=B6?= Date: Thu, 31 Aug 2023 16:46:15 +0800 Subject: [PATCH] fix: rm esm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ts编译到commonjs的项目似乎不能很好的支持,使用cjs以达到最好的兼容性 --- lib/axios.js | 12 ----- lib/jsonb.js | 67 --------------------------- lib/{jsonb.test.js => jsonb.test.mjs} | 2 +- package.json | 5 +- 4 files changed, 3 insertions(+), 83 deletions(-) delete mode 100644 lib/axios.js delete mode 100644 lib/jsonb.js rename lib/{jsonb.test.js => jsonb.test.mjs} (98%) diff --git a/lib/axios.js b/lib/axios.js deleted file mode 100644 index c0e6727..0000000 --- a/lib/axios.js +++ /dev/null @@ -1,12 +0,0 @@ -import { parse, stringify } from './jsonb.js' -export function transformRequest(data, headers) { - if (data.constructor === Object) { - headers['Content-Type'] = 'application/json;charset=utf-8' - return stringify(data) - } - return data -} - -export function transformResponse(data) { - return typeof data === 'string' ? parse(data) : data -} diff --git a/lib/jsonb.js b/lib/jsonb.js deleted file mode 100644 index b1b35dc..0000000 --- a/lib/jsonb.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @fileoverview JSONB parser and stringifier - * @author 唯然 - */ -import { parseJson } from '@ton.js/json-parser' -const isBNSupported = typeof BigInt !== 'undefined' -const BN = isBNSupported ? BigInt : (x) => x - -export function parse(s) { - function reviver(k, v, ctx) { - let isSafe = true - - const isInt = typeof v === 'number' && /^(-)?\d+$/.test(ctx.source) - // 如果是整数的话,也要检查是否超过了安全整数范围 - if (isInt) { - isSafe = Number.isSafeInteger(v) - } - - return isSafe ? v : BN(ctx.source) - } - - return parseJson(s, reviver) -} - -export function stringify(data) { - if (data === undefined) return undefined - if (data === null) return 'null' - if (Number.isNaN(data)) return 'null' - if (data === Infinity || data === -Infinity) return 'null' - if (data.constructor === String) return '"' + data.replace(/"/g, '\\"') + '"' - if (data.constructor === Number) return String(data) - if (isBNSupported && data.constructor === BigInt) return String(data) // 避免bigint精度丢失 - if (data.constructor === Boolean) return data ? 'true' : 'false' - if (data.constructor === Array) - return ( - '[' + - data - .reduce((acc, v) => { - if ( - v === undefined || - Number.isNaN(v) || - v === Infinity || - v === -Infinity - ) - return [...acc, 'null'] - else return [...acc, stringify(v)] - }, []) - .join(',') + - ']' - ) - - if (data.constructor === Object) - return ( - '{' + - Object.keys(data) - .reduce((acc, k) => { - if (data[k] === undefined) return acc - else return [...acc, stringify(k) + ':' + stringify(data[k])] - }, []) - .join(',') + - '}' - ) - - throw new Error(`Unsupported type: ${data.constructor.name}`) -} - -export default { parse, stringify } diff --git a/lib/jsonb.test.js b/lib/jsonb.test.mjs similarity index 98% rename from lib/jsonb.test.js rename to lib/jsonb.test.mjs index 922ff58..fb535fb 100644 --- a/lib/jsonb.test.js +++ b/lib/jsonb.test.mjs @@ -1,6 +1,6 @@ import test from 'node:test' import { strict as assert } from 'node:assert' -import JSONB from './jsonb.js' +import JSONB from './jsonb.cjs' test('parse jsonb: obj', () => { const content = '{ "foo": { "bar": { "value": 12345678901234567890 } } }' diff --git a/package.json b/package.json index 509fe87..dd6f971 100644 --- a/package.json +++ b/package.json @@ -14,15 +14,13 @@ }, "license": "MIT", "author": "唯然