@schema-pack/message-pack 0.0.0-commit.8d5dca5ce6fa2841d57d39bd48f82979461a0a69 → 0.0.0-commit.a13995b1ec0a9d8be0fcfbdf0d45a0c8a2c75b3c
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/LICENSE +21 -0
- package/README.md +9 -123
- package/dist/cjs/bufferWithExtensions-Cg4LGSIy.d.cts +51 -0
- package/dist/cjs/bufferWithExtensions-Cg4LGSIy.d.cts.map +1 -0
- package/dist/cjs/bufferWithExtensions.cjs +79 -16
- package/dist/cjs/bufferWithExtensions.d.cts +1 -1
- package/dist/cjs/decode-BraWmoPw.d.cts +5 -0
- package/dist/cjs/decode-BraWmoPw.d.cts.map +1 -0
- package/dist/cjs/decoder/decode.cjs +8 -0
- package/dist/cjs/decoder/decode.d.cts +2 -0
- package/dist/cjs/decoder/decoder.cjs +268 -19
- package/dist/cjs/decoder/decoder.d.cts +1 -1
- package/dist/cjs/decoder/index.cjs +6 -2
- package/dist/cjs/decoder/index.d.cts +7 -5
- package/dist/cjs/decoder/interfaces/index.d.cts +4 -4
- package/dist/cjs/decoder/interfaces/messagePackDecoder.d.cts +2 -0
- package/dist/cjs/decoder/interfaces/messagePackTextDecoder.d.cts +1 -1
- package/dist/cjs/decoder/textDecoders/defaultTextDecoder.d.cts +1 -1
- package/dist/cjs/decoder/textDecoders/index.cjs +5 -0
- package/dist/cjs/decoder/textDecoders/index.d.cts +4 -0
- package/dist/cjs/decoder/textDecoders/nodeTextDecoder.cjs +8 -0
- package/dist/cjs/decoder/textDecoders/nodeTextDecoder.d.cts +2 -0
- package/dist/cjs/decoder/types.d.cts +2 -2
- package/dist/cjs/decoder-T6p4ZZJi.d.cts +30 -0
- package/dist/cjs/decoder-T6p4ZZJi.d.cts.map +1 -0
- package/dist/cjs/defaultNewBufferFn.cjs +1 -3
- package/dist/cjs/defaultNewBufferFn.d.cts +2 -1
- package/dist/cjs/defaultNewBufferFn.d.cts.map +1 -1
- package/dist/cjs/defaultTextDecoder-CyZtJbK1.d.cts +10 -0
- package/dist/cjs/defaultTextDecoder-CyZtJbK1.d.cts.map +1 -0
- package/dist/{esm/defaultTextEncoder-BkIjtDkg.d.mts → cjs/defaultTextEncoder-BpUrJKD9.d.cts} +2 -2
- package/dist/cjs/{defaultTextEncoder-DzdGBX6s.d.cts.map → defaultTextEncoder-BpUrJKD9.d.cts.map} +1 -1
- package/dist/cjs/encode-4SxHVw0M.d.cts +5 -0
- package/dist/cjs/encode-4SxHVw0M.d.cts.map +1 -0
- package/dist/cjs/encoder/encode.cjs +8 -0
- package/dist/cjs/encoder/encode.d.cts +2 -0
- package/dist/cjs/encoder/encoder.cjs +690 -26
- package/dist/cjs/encoder/encoder.d.cts +1 -1
- package/dist/cjs/encoder/index.cjs +2 -2
- package/dist/cjs/encoder/index.d.cts +7 -7
- package/dist/cjs/encoder/interfaces/index.d.cts +4 -4
- package/dist/cjs/encoder/interfaces/messagePackEncoder.d.cts +2 -0
- package/dist/cjs/encoder/interfaces/messagePackTextEncoder.d.cts +1 -1
- package/dist/cjs/encoder/textEncoders/defaultTextEncoder.d.cts +1 -1
- package/dist/cjs/encoder/textEncoders/index.d.cts +3 -3
- package/dist/cjs/encoder/textEncoders/nodeTextEncoder.d.cts +1 -1
- package/dist/cjs/encoder/types.d.cts +2 -2
- package/dist/cjs/{encoderBuffer-DWGIXXjj.d.cts → encoder-yQYOtvXU.d.cts} +38 -16
- package/dist/cjs/encoder-yQYOtvXU.d.cts.map +1 -0
- package/dist/cjs/{messagePackExtension-C_TQXlEn.d.cts → error-B129l__v.d.cts} +306 -52
- package/dist/cjs/error-B129l__v.d.cts.map +1 -0
- package/dist/cjs/extensions/error/defaultFactories.cjs +15 -0
- package/dist/cjs/extensions/error/defaultFactories.d.cts +6 -0
- package/dist/cjs/extensions/error/defaultFactories.d.cts.map +1 -0
- package/dist/cjs/extensions/error/error.cjs +139 -0
- package/dist/cjs/extensions/error/error.d.cts +2 -0
- package/dist/cjs/extensions/error/index.cjs +3 -0
- package/dist/cjs/extensions/error/index.d.cts +4 -0
- package/dist/cjs/extensions/error/symbols.cjs +19 -0
- package/dist/cjs/extensions/error/symbols.d.cts +19 -0
- package/dist/cjs/extensions/error/symbols.d.cts.map +1 -0
- package/dist/cjs/extensions/error/types.d.cts +2 -0
- package/dist/cjs/extensions/index.cjs +4 -0
- package/dist/cjs/extensions/index.d.cts +6 -3
- package/dist/cjs/extensions/interfaces/messagePackBuiltInExtension.d.cts +2 -0
- package/dist/cjs/extensions/interfaces/messagePackExtension.d.cts +1 -1
- package/dist/cjs/extensions/interfaces/messagePackExtensionBase.cjs +0 -0
- package/dist/cjs/extensions/interfaces/messagePackExtensionBase.d.cts +2 -0
- package/dist/cjs/extensions/interfaces/types.cjs +0 -0
- package/dist/cjs/extensions/interfaces/types.d.cts +2 -0
- package/dist/cjs/extensions/serializer/index.cjs +3 -0
- package/dist/cjs/extensions/serializer/index.d.cts +4 -0
- package/dist/cjs/extensions/serializer/serializer.cjs +27 -0
- package/dist/cjs/extensions/serializer/serializer.d.cts +2 -0
- package/dist/cjs/extensions/serializer/types.cjs +0 -0
- package/dist/cjs/extensions/serializer/types.d.cts +2 -0
- package/dist/cjs/extensions/timestampDate/index.d.cts +2 -2
- package/dist/cjs/extensions/timestampDate/timestampDate.cjs +41 -24
- package/dist/cjs/extensions/timestampDate/timestampDate.d.cts +1 -1
- package/dist/cjs/index-B5vbV8Ak.d.cts +1 -0
- package/dist/cjs/index.cjs +15 -32
- package/dist/cjs/index.d.cts +16 -23
- package/dist/cjs/interfaces/messagePackBufferWithExtensions.d.cts +1 -1
- package/dist/cjs/messagePackDecoder-BZOBJ2h5.d.cts +12 -0
- package/dist/cjs/messagePackDecoder-BZOBJ2h5.d.cts.map +1 -0
- package/dist/cjs/messagePackExtensionBase-DVMgQv12.d.cts +30 -0
- package/dist/cjs/messagePackExtensionBase-DVMgQv12.d.cts.map +1 -0
- package/dist/cjs/messagePackTextDecoder-CfBSOsxU.d.cts +8 -0
- package/dist/cjs/messagePackTextDecoder-CfBSOsxU.d.cts.map +1 -0
- package/dist/cjs/{messagePackTextEncoder-D7iCft_t.d.cts → messagePackTextEncoder-MeyNUt3L.d.cts} +2 -2
- package/dist/cjs/messagePackTextEncoder-MeyNUt3L.d.cts.map +1 -0
- package/dist/cjs/nodeTextDecoder-B48jwo-L.d.cts +9 -0
- package/dist/cjs/nodeTextDecoder-B48jwo-L.d.cts.map +1 -0
- package/dist/{esm/nodeTextEncoder-CegSnA6z.d.mts → cjs/nodeTextEncoder-BpJi8Jx-.d.cts} +3 -3
- package/dist/cjs/nodeTextEncoder-BpJi8Jx-.d.cts.map +1 -0
- package/dist/cjs/serializer-nJmZCyQ0.d.cts +19 -0
- package/dist/cjs/serializer-nJmZCyQ0.d.cts.map +1 -0
- package/dist/cjs/types-BLh5F2iA.d.cts +22 -0
- package/dist/cjs/types-BLh5F2iA.d.cts.map +1 -0
- package/dist/cjs/types-BcIA43h9.d.cts +5 -0
- package/dist/cjs/types-BcIA43h9.d.cts.map +1 -0
- package/dist/cjs/types-CbicLx9m.d.cts +21 -0
- package/dist/cjs/types-CbicLx9m.d.cts.map +1 -0
- package/dist/cjs/types-aODRmLZq.d.cts +7 -0
- package/dist/cjs/types-aODRmLZq.d.cts.map +1 -0
- package/dist/cjs/types.d.cts +2 -2
- package/dist/cjs/utils/assertValidExtensionType.cjs +7 -0
- package/dist/cjs/utils/assertValidExtensionType.d.cts +4 -0
- package/dist/cjs/utils/assertValidExtensionType.d.cts.map +1 -0
- package/dist/cjs/utils/fitIn16Bits.d.cts +4 -2
- package/dist/cjs/utils/fitIn16Bits.d.cts.map +1 -0
- package/dist/cjs/utils/fitIn32Bits.d.cts +4 -2
- package/dist/cjs/utils/fitIn32Bits.d.cts.map +1 -0
- package/dist/cjs/utils/fitIn7Bits.d.cts +4 -2
- package/dist/cjs/utils/fitIn7Bits.d.cts.map +1 -0
- package/dist/cjs/utils/fitIn8Bits.d.cts +4 -2
- package/dist/cjs/utils/fitIn8Bits.d.cts.map +1 -0
- package/dist/esm/bufferWithExtensions-DSU4ekuD.d.mts +51 -0
- package/dist/esm/bufferWithExtensions-DSU4ekuD.d.mts.map +1 -0
- package/dist/esm/bufferWithExtensions.d.mts +1 -1
- package/dist/esm/bufferWithExtensions.mjs +79 -16
- package/dist/esm/bufferWithExtensions.mjs.map +1 -1
- package/dist/esm/decode-BraWmoPw.d.mts +5 -0
- package/dist/esm/decode-BraWmoPw.d.mts.map +1 -0
- package/dist/esm/decoder/decode.d.mts +2 -0
- package/dist/esm/decoder/decode.mjs +11 -0
- package/dist/esm/decoder/decode.mjs.map +1 -0
- package/dist/esm/decoder/decoder.d.mts +1 -1
- package/dist/esm/decoder/decoder.mjs +268 -19
- package/dist/esm/decoder/decoder.mjs.map +1 -1
- package/dist/esm/decoder/index.d.mts +7 -5
- package/dist/esm/decoder/index.mjs +4 -2
- package/dist/esm/decoder/interfaces/index.d.mts +4 -4
- package/dist/esm/decoder/interfaces/messagePackDecoder.d.mts +2 -0
- package/dist/esm/decoder/interfaces/messagePackTextDecoder.d.mts +1 -1
- package/dist/esm/decoder/textDecoders/defaultTextDecoder.d.mts +1 -1
- package/dist/esm/decoder/textDecoders/defaultTextDecoder.mjs.map +1 -1
- package/dist/esm/decoder/textDecoders/index.d.mts +4 -0
- package/dist/esm/decoder/textDecoders/index.mjs +3 -0
- package/dist/esm/decoder/textDecoders/nodeTextDecoder.d.mts +2 -0
- package/dist/esm/decoder/textDecoders/nodeTextDecoder.mjs +10 -0
- package/dist/esm/decoder/textDecoders/nodeTextDecoder.mjs.map +1 -0
- package/dist/esm/decoder/types.d.mts +2 -2
- package/dist/esm/decoder-Bdqx1C7P.d.mts +30 -0
- package/dist/esm/decoder-Bdqx1C7P.d.mts.map +1 -0
- package/dist/esm/defaultNewBufferFn.d.mts +2 -1
- package/dist/esm/defaultNewBufferFn.d.mts.map +1 -1
- package/dist/esm/defaultNewBufferFn.mjs +1 -3
- package/dist/esm/defaultNewBufferFn.mjs.map +1 -1
- package/dist/esm/defaultTextDecoder-BkW5T2EO.d.mts +10 -0
- package/dist/esm/defaultTextDecoder-BkW5T2EO.d.mts.map +1 -0
- package/dist/{cjs/defaultTextEncoder-DzdGBX6s.d.cts → esm/defaultTextEncoder-9dqnRXnL.d.mts} +2 -2
- package/dist/esm/{defaultTextEncoder-BkIjtDkg.d.mts.map → defaultTextEncoder-9dqnRXnL.d.mts.map} +1 -1
- package/dist/esm/encode-4SxHVw0M.d.mts +5 -0
- package/dist/esm/encode-4SxHVw0M.d.mts.map +1 -0
- package/dist/esm/encoder/encode.d.mts +2 -0
- package/dist/esm/encoder/encode.mjs +11 -0
- package/dist/esm/encoder/encode.mjs.map +1 -0
- package/dist/esm/encoder/encoder.d.mts +1 -1
- package/dist/esm/encoder/encoder.mjs +690 -26
- package/dist/esm/encoder/encoder.mjs.map +1 -1
- package/dist/esm/encoder/index.d.mts +7 -7
- package/dist/esm/encoder/index.mjs +2 -2
- package/dist/esm/encoder/interfaces/index.d.mts +4 -4
- package/dist/esm/encoder/interfaces/messagePackEncoder.d.mts +2 -0
- package/dist/esm/encoder/interfaces/messagePackTextEncoder.d.mts +1 -1
- package/dist/esm/encoder/textEncoders/defaultTextEncoder.d.mts +1 -1
- package/dist/esm/encoder/textEncoders/index.d.mts +3 -3
- package/dist/esm/encoder/textEncoders/nodeTextEncoder.d.mts +1 -1
- package/dist/esm/encoder/textEncoders/nodeTextEncoder.mjs.map +1 -1
- package/dist/esm/encoder/types.d.mts +2 -2
- package/dist/esm/{encoderBuffer-DEy8CuWQ.d.mts → encoder-C5Oo57-h.d.mts} +38 -16
- package/dist/esm/encoder-C5Oo57-h.d.mts.map +1 -0
- package/dist/esm/{messagePackExtension-5TI02KG6.d.mts → error-BtKEZf6W.d.mts} +306 -52
- package/dist/esm/error-BtKEZf6W.d.mts.map +1 -0
- package/dist/esm/extensions/error/defaultFactories.d.mts +7 -0
- package/dist/esm/extensions/error/defaultFactories.d.mts.map +1 -0
- package/dist/esm/extensions/error/defaultFactories.mjs +17 -0
- package/dist/esm/extensions/error/defaultFactories.mjs.map +1 -0
- package/dist/esm/extensions/error/error.d.mts +2 -0
- package/dist/esm/extensions/error/error.mjs +141 -0
- package/dist/esm/extensions/error/error.mjs.map +1 -0
- package/dist/esm/extensions/error/index.d.mts +4 -0
- package/dist/esm/extensions/error/index.mjs +2 -0
- package/dist/esm/extensions/error/symbols.d.mts +20 -0
- package/dist/esm/extensions/error/symbols.d.mts.map +1 -0
- package/dist/esm/extensions/error/symbols.mjs +21 -0
- package/dist/esm/extensions/error/symbols.mjs.map +1 -0
- package/dist/esm/extensions/error/types.d.mts +2 -0
- package/dist/esm/extensions/index.d.mts +6 -3
- package/dist/esm/extensions/index.mjs +3 -1
- package/dist/esm/extensions/interfaces/messagePackBuiltInExtension.d.mts +2 -0
- package/dist/esm/extensions/interfaces/messagePackExtension.d.mts +1 -1
- package/dist/esm/extensions/interfaces/messagePackExtensionBase.d.mts +2 -0
- package/dist/esm/extensions/interfaces/messagePackExtensionBase.mjs +1 -0
- package/dist/esm/extensions/interfaces/types.d.mts +2 -0
- package/dist/esm/extensions/interfaces/types.mjs +1 -0
- package/dist/esm/extensions/serializer/index.d.mts +4 -0
- package/dist/esm/extensions/serializer/index.mjs +2 -0
- package/dist/esm/extensions/serializer/serializer.d.mts +2 -0
- package/dist/esm/extensions/serializer/serializer.mjs +29 -0
- package/dist/esm/extensions/serializer/serializer.mjs.map +1 -0
- package/dist/esm/extensions/serializer/types.d.mts +2 -0
- package/dist/esm/extensions/serializer/types.mjs +1 -0
- package/dist/esm/extensions/timestampDate/index.d.mts +2 -2
- package/dist/esm/extensions/timestampDate/timestampDate.d.mts +1 -1
- package/dist/esm/extensions/timestampDate/timestampDate.mjs +41 -24
- package/dist/esm/extensions/timestampDate/timestampDate.mjs.map +1 -1
- package/dist/esm/index-B5vbV8Ak.d.mts +1 -0
- package/dist/esm/index.d.mts +16 -23
- package/dist/esm/index.mjs +10 -17
- package/dist/esm/interfaces/messagePackBufferWithExtensions.d.mts +1 -1
- package/dist/esm/messagePackDecoder-96W4gsyQ.d.mts +12 -0
- package/dist/esm/messagePackDecoder-96W4gsyQ.d.mts.map +1 -0
- package/dist/esm/messagePackExtensionBase-w6KYZsVn.d.mts +30 -0
- package/dist/esm/messagePackExtensionBase-w6KYZsVn.d.mts.map +1 -0
- package/dist/esm/messagePackTextDecoder-CfBSOsxU.d.mts +8 -0
- package/dist/esm/messagePackTextDecoder-CfBSOsxU.d.mts.map +1 -0
- package/dist/esm/{messagePackTextEncoder-D7iCft_t.d.mts → messagePackTextEncoder-MeyNUt3L.d.mts} +2 -2
- package/dist/esm/messagePackTextEncoder-MeyNUt3L.d.mts.map +1 -0
- package/dist/esm/nodeTextDecoder-D95BppeH.d.mts +9 -0
- package/dist/esm/nodeTextDecoder-D95BppeH.d.mts.map +1 -0
- package/dist/{cjs/nodeTextEncoder-DJzFDBXd.d.cts → esm/nodeTextEncoder-Bv6YQGyH.d.mts} +3 -3
- package/dist/esm/nodeTextEncoder-Bv6YQGyH.d.mts.map +1 -0
- package/dist/esm/serializer-Bu3RyF09.d.mts +19 -0
- package/dist/esm/serializer-Bu3RyF09.d.mts.map +1 -0
- package/dist/esm/types-BcIA43h9.d.mts +5 -0
- package/dist/esm/types-BcIA43h9.d.mts.map +1 -0
- package/dist/esm/types-DcVlVqj4.d.mts +21 -0
- package/dist/esm/types-DcVlVqj4.d.mts.map +1 -0
- package/dist/esm/types-LHP7oHpt.d.mts +22 -0
- package/dist/esm/types-LHP7oHpt.d.mts.map +1 -0
- package/dist/esm/types-xD3JER2f.d.mts +7 -0
- package/dist/esm/types-xD3JER2f.d.mts.map +1 -0
- package/dist/esm/types.d.mts +2 -2
- package/dist/esm/utils/assertValidExtensionType.d.mts +5 -0
- package/dist/esm/utils/assertValidExtensionType.d.mts.map +1 -0
- package/dist/esm/utils/assertValidExtensionType.mjs +9 -0
- package/dist/esm/utils/assertValidExtensionType.mjs.map +1 -0
- package/dist/esm/utils/fitIn16Bits.d.mts +5 -2
- package/dist/esm/utils/fitIn16Bits.d.mts.map +1 -0
- package/dist/esm/utils/fitIn32Bits.d.mts +5 -2
- package/dist/esm/utils/fitIn32Bits.d.mts.map +1 -0
- package/dist/esm/utils/fitIn7Bits.d.mts +5 -2
- package/dist/esm/utils/fitIn7Bits.d.mts.map +1 -0
- package/dist/esm/utils/fitIn8Bits.d.mts +5 -2
- package/dist/esm/utils/fitIn8Bits.d.mts.map +1 -0
- package/package.json +68 -43
- package/dist/cjs/benchmark/decoderDataTypesFactory.cjs +0 -37
- package/dist/cjs/benchmark/decoderDataTypesFactory.d.cts +0 -5
- package/dist/cjs/benchmark/decoderDataTypesFactory.d.cts.map +0 -1
- package/dist/cjs/bigInt-CBB8PGpe.d.cts +0 -35
- package/dist/cjs/bigInt-CBB8PGpe.d.cts.map +0 -1
- package/dist/cjs/bufferWithExtensions-BAinwJsn.d.cts +0 -12
- package/dist/cjs/bufferWithExtensions-BAinwJsn.d.cts.map +0 -1
- package/dist/cjs/decoder/decoderBuffer.cjs +0 -239
- package/dist/cjs/decoder/decoderBuffer.d.cts +0 -2
- package/dist/cjs/decoder/interfaces/messagePackDecoderBuffer.d.cts +0 -2
- package/dist/cjs/decoder-C1cd4I8S.d.cts +0 -15
- package/dist/cjs/decoder-C1cd4I8S.d.cts.map +0 -1
- package/dist/cjs/decoderBuffer-C9_0y-3q.d.cts +0 -22
- package/dist/cjs/decoderBuffer-C9_0y-3q.d.cts.map +0 -1
- package/dist/cjs/defaultTextDecoder-Ji2hTZkf.d.cts +0 -10
- package/dist/cjs/defaultTextDecoder-Ji2hTZkf.d.cts.map +0 -1
- package/dist/cjs/encoder/encoderBuffer.cjs +0 -602
- package/dist/cjs/encoder/encoderBuffer.d.cts +0 -2
- package/dist/cjs/encoder/interfaces/messagePackEncoderBuffer.d.cts +0 -2
- package/dist/cjs/encoder-DXuhGwd7.d.cts +0 -23
- package/dist/cjs/encoder-DXuhGwd7.d.cts.map +0 -1
- package/dist/cjs/encoderBuffer-DWGIXXjj.d.cts.map +0 -1
- package/dist/cjs/extensions/bigint/bigInt.cjs +0 -54
- package/dist/cjs/extensions/bigint/bigInt.d.cts +0 -2
- package/dist/cjs/extensions/bigint/index.cjs +0 -2
- package/dist/cjs/extensions/bigint/index.d.cts +0 -3
- package/dist/cjs/extensions/interfaces/index.d.cts +0 -3
- package/dist/cjs/fitIn16Bits-D9lga-sP.d.cts +0 -5
- package/dist/cjs/fitIn16Bits-D9lga-sP.d.cts.map +0 -1
- package/dist/cjs/fitIn32Bits-BrGIMOff.d.cts +0 -5
- package/dist/cjs/fitIn32Bits-BrGIMOff.d.cts.map +0 -1
- package/dist/cjs/fitIn7Bits-BVHyKXCg.d.cts +0 -5
- package/dist/cjs/fitIn7Bits-BVHyKXCg.d.cts.map +0 -1
- package/dist/cjs/fitIn8Bits-DQnQIhdh.d.cts +0 -5
- package/dist/cjs/fitIn8Bits-DQnQIhdh.d.cts.map +0 -1
- package/dist/cjs/fitInt64Bits-CY7lVKne.d.cts +0 -5
- package/dist/cjs/fitInt64Bits-CY7lVKne.d.cts.map +0 -1
- package/dist/cjs/interfaces/index.d.cts +0 -2
- package/dist/cjs/messagePackDecoderBuffer-CMG0LPbJ.d.cts +0 -12
- package/dist/cjs/messagePackDecoderBuffer-CMG0LPbJ.d.cts.map +0 -1
- package/dist/cjs/messagePackExtension-C_TQXlEn.d.cts.map +0 -1
- package/dist/cjs/messagePackTextDecoder-CtyB0N6j.d.cts +0 -7
- package/dist/cjs/messagePackTextDecoder-CtyB0N6j.d.cts.map +0 -1
- package/dist/cjs/messagePackTextEncoder-D7iCft_t.d.cts.map +0 -1
- package/dist/cjs/nodeTextEncoder-DJzFDBXd.d.cts.map +0 -1
- package/dist/cjs/timestampDate-BtBd4bAx.d.cts +0 -33
- package/dist/cjs/timestampDate-BtBd4bAx.d.cts.map +0 -1
- package/dist/cjs/types-BJie2edF.d.cts +0 -20
- package/dist/cjs/types-BJie2edF.d.cts.map +0 -1
- package/dist/cjs/types-DHnp4kMw.d.cts +0 -6
- package/dist/cjs/types-DHnp4kMw.d.cts.map +0 -1
- package/dist/cjs/untypedExtension-WQvArYoO.d.cts +0 -16
- package/dist/cjs/untypedExtension-WQvArYoO.d.cts.map +0 -1
- package/dist/cjs/untypedExtension.cjs +0 -13
- package/dist/cjs/untypedExtension.d.cts +0 -2
- package/dist/cjs/utils/fitInt64Bits.cjs +0 -6
- package/dist/cjs/utils/fitInt64Bits.d.cts +0 -2
- package/dist/cjs/utils/index.cjs +0 -11
- package/dist/cjs/utils/index.d.cts +0 -6
- package/dist/esm/benchmark/decoderDataTypesFactory.d.mts +0 -6
- package/dist/esm/benchmark/decoderDataTypesFactory.d.mts.map +0 -1
- package/dist/esm/benchmark/decoderDataTypesFactory.mjs +0 -39
- package/dist/esm/benchmark/decoderDataTypesFactory.mjs.map +0 -1
- package/dist/esm/bigInt-BvNVHUwj.d.mts +0 -35
- package/dist/esm/bigInt-BvNVHUwj.d.mts.map +0 -1
- package/dist/esm/bufferWithExtensions-Bikyeyt1.d.mts +0 -12
- package/dist/esm/bufferWithExtensions-Bikyeyt1.d.mts.map +0 -1
- package/dist/esm/decoder/decoderBuffer.d.mts +0 -2
- package/dist/esm/decoder/decoderBuffer.mjs +0 -241
- package/dist/esm/decoder/decoderBuffer.mjs.map +0 -1
- package/dist/esm/decoder/interfaces/messagePackDecoderBuffer.d.mts +0 -2
- package/dist/esm/decoder-DEzsJjYj.d.mts +0 -15
- package/dist/esm/decoder-DEzsJjYj.d.mts.map +0 -1
- package/dist/esm/decoderBuffer-BxJJdy5k.d.mts +0 -22
- package/dist/esm/decoderBuffer-BxJJdy5k.d.mts.map +0 -1
- package/dist/esm/defaultTextDecoder-B6a1HH2u.d.mts +0 -10
- package/dist/esm/defaultTextDecoder-B6a1HH2u.d.mts.map +0 -1
- package/dist/esm/encoder/encoderBuffer.d.mts +0 -2
- package/dist/esm/encoder/encoderBuffer.mjs +0 -604
- package/dist/esm/encoder/encoderBuffer.mjs.map +0 -1
- package/dist/esm/encoder/interfaces/messagePackEncoderBuffer.d.mts +0 -2
- package/dist/esm/encoder-CQfcjnAe.d.mts +0 -23
- package/dist/esm/encoder-CQfcjnAe.d.mts.map +0 -1
- package/dist/esm/encoderBuffer-DEy8CuWQ.d.mts.map +0 -1
- package/dist/esm/extensions/bigint/bigInt.d.mts +0 -2
- package/dist/esm/extensions/bigint/bigInt.mjs +0 -56
- package/dist/esm/extensions/bigint/bigInt.mjs.map +0 -1
- package/dist/esm/extensions/bigint/index.d.mts +0 -3
- package/dist/esm/extensions/bigint/index.mjs +0 -2
- package/dist/esm/extensions/interfaces/index.d.mts +0 -3
- package/dist/esm/fitIn16Bits-D9lga-sP.d.mts +0 -5
- package/dist/esm/fitIn16Bits-D9lga-sP.d.mts.map +0 -1
- package/dist/esm/fitIn32Bits-BrGIMOff.d.mts +0 -5
- package/dist/esm/fitIn32Bits-BrGIMOff.d.mts.map +0 -1
- package/dist/esm/fitIn7Bits-BVHyKXCg.d.mts +0 -5
- package/dist/esm/fitIn7Bits-BVHyKXCg.d.mts.map +0 -1
- package/dist/esm/fitIn8Bits-DQnQIhdh.d.mts +0 -5
- package/dist/esm/fitIn8Bits-DQnQIhdh.d.mts.map +0 -1
- package/dist/esm/fitInt64Bits-CY7lVKne.d.mts +0 -5
- package/dist/esm/fitInt64Bits-CY7lVKne.d.mts.map +0 -1
- package/dist/esm/interfaces/index.d.mts +0 -2
- package/dist/esm/messagePackDecoderBuffer-CGyYSweZ.d.mts +0 -12
- package/dist/esm/messagePackDecoderBuffer-CGyYSweZ.d.mts.map +0 -1
- package/dist/esm/messagePackExtension-5TI02KG6.d.mts.map +0 -1
- package/dist/esm/messagePackTextDecoder-CtyB0N6j.d.mts +0 -7
- package/dist/esm/messagePackTextDecoder-CtyB0N6j.d.mts.map +0 -1
- package/dist/esm/messagePackTextEncoder-D7iCft_t.d.mts.map +0 -1
- package/dist/esm/nodeTextEncoder-CegSnA6z.d.mts.map +0 -1
- package/dist/esm/timestampDate-C1UzHhZL.d.mts +0 -33
- package/dist/esm/timestampDate-C1UzHhZL.d.mts.map +0 -1
- package/dist/esm/types-BJie2edF.d.mts +0 -20
- package/dist/esm/types-BJie2edF.d.mts.map +0 -1
- package/dist/esm/types-DoBZbRkk.d.mts +0 -6
- package/dist/esm/types-DoBZbRkk.d.mts.map +0 -1
- package/dist/esm/untypedExtension-6bNMj-lY.d.mts +0 -16
- package/dist/esm/untypedExtension-6bNMj-lY.d.mts.map +0 -1
- package/dist/esm/untypedExtension.d.mts +0 -2
- package/dist/esm/untypedExtension.mjs +0 -15
- package/dist/esm/untypedExtension.mjs.map +0 -1
- package/dist/esm/utils/fitInt64Bits.d.mts +0 -2
- package/dist/esm/utils/fitInt64Bits.mjs +0 -8
- package/dist/esm/utils/fitInt64Bits.mjs.map +0 -1
- package/dist/esm/utils/index.d.mts +0 -6
- package/dist/esm/utils/index.mjs +0 -6
- /package/dist/cjs/decoder/interfaces/{messagePackDecoderBuffer.cjs → messagePackDecoder.cjs} +0 -0
- /package/dist/cjs/encoder/interfaces/{messagePackEncoderBuffer.cjs → messagePackEncoder.cjs} +0 -0
- /package/dist/cjs/extensions/{interfaces/index.cjs → error/types.cjs} +0 -0
- /package/dist/cjs/{interfaces/index.cjs → extensions/interfaces/messagePackBuiltInExtension.cjs} +0 -0
- /package/dist/esm/decoder/interfaces/{messagePackDecoderBuffer.mjs → messagePackDecoder.mjs} +0 -0
- /package/dist/esm/encoder/interfaces/{messagePackEncoderBuffer.mjs → messagePackEncoder.mjs} +0 -0
- /package/dist/esm/extensions/{interfaces/index.mjs → error/types.mjs} +0 -0
- /package/dist/esm/{interfaces/index.mjs → extensions/interfaces/messagePackBuiltInExtension.mjs} +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026-present Pawnary, Inc. and Elvis Muñoz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
# @schema-pack/message-pack
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Incremental
|
|
10
|
+
[MessagePack](https://github.com/msgpack/msgpack/blob/master/spec.md)
|
|
10
11
|
encoder/decoder for TypeScript and JavaScript. It targets full compliance with
|
|
11
12
|
the MessagePack spec and exposes a pluggable extension system for encoding
|
|
12
13
|
custom types.
|
|
@@ -14,137 +15,22 @@ custom types.
|
|
|
14
15
|
## Installation
|
|
15
16
|
|
|
16
17
|
```bash
|
|
17
|
-
pnpm add @schema-pack/message-pack
|
|
18
|
+
pnpm add @schema-pack/message-pack@next
|
|
18
19
|
```
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
### Quick start
|
|
21
22
|
|
|
22
23
|
```ts
|
|
23
|
-
import {
|
|
24
|
+
import { encode, decode } from '@schema-pack/message-pack';
|
|
24
25
|
|
|
25
|
-
const
|
|
26
|
-
const bytes = encoder.encode({ hello: 'world', values: [1, 2, 3] });
|
|
26
|
+
const buffer = encode({ hello: 'world', values: [1, 2, 3] });
|
|
27
27
|
|
|
28
|
-
const
|
|
29
|
-
const value = decoder.decode(bytes);
|
|
28
|
+
const value = decode(buffer);
|
|
30
29
|
// { hello: 'world', values: [1, 2, 3] }
|
|
31
30
|
```
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
JavaScript numbers are IEEE 754 double-precision floats, so they can only
|
|
36
|
-
represent integers safely between `Number.MIN_SAFE_INTEGER` and
|
|
37
|
-
`Number.MAX_SAFE_INTEGER` (±(2^53 - 1)) — exported here as `INT64_MIN` and
|
|
38
|
-
`UINT64_MAX`. MessagePack's native `uint 64` / `int 64` formats, however, cover
|
|
39
|
-
the _full_ 64-bit range.
|
|
40
|
-
|
|
41
|
-
By default, the encoder and decoder read and write these formats as regular JS
|
|
42
|
-
`number`s, which is safe as long as your values stay within that safe integer
|
|
43
|
-
range. If you need the full 64-bit range — or want to work with `bigint`
|
|
44
|
-
directly — register the built-in `BigIntExtension`:
|
|
45
|
-
|
|
46
|
-
```ts
|
|
47
|
-
import { BigIntExtension, Decoder, Encoder } from '@schema-pack/message-pack';
|
|
48
|
-
|
|
49
|
-
const extension = new BigIntExtension(); // extension type 0-127, defaults to 0
|
|
50
|
-
|
|
51
|
-
const encoder = new Encoder().addExtension(extension);
|
|
52
|
-
const decoder = new Decoder().addExtension(extension);
|
|
53
|
-
|
|
54
|
-
const bytes = encoder.encode(123_456_789_012_345_678_901_234_567_890n);
|
|
55
|
-
decoder.decode(bytes); // 123456789012345678901234567890n
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Values within the safe integer range are still encoded as native MessagePack
|
|
59
|
-
`uint`/`int` formats even with the extension registered — `BigIntExtension` only
|
|
60
|
-
takes over once a `bigint` value falls outside that range.
|
|
61
|
-
|
|
62
|
-
## Built-in extensions
|
|
63
|
-
|
|
64
|
-
- **`BigIntExtension`** — encodes/decodes `bigint` values outside the safe
|
|
65
|
-
integer range, using a variable-length representation of the value's magnitude
|
|
66
|
-
plus sign.
|
|
67
|
-
- **`TimestampDateExtension`** — encodes/decodes JS `Date` objects using the
|
|
68
|
-
standard MessagePack
|
|
69
|
-
[timestamp extension type](https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type)
|
|
70
|
-
(`-1`), automatically choosing the 32-bit, 64-bit, or 96-bit format based on
|
|
71
|
-
the date's range and precision. Because it uses the reserved timestamp type,
|
|
72
|
-
register it as an _internal_ extension:
|
|
73
|
-
|
|
74
|
-
```ts
|
|
75
|
-
import {
|
|
76
|
-
Decoder,
|
|
77
|
-
Encoder,
|
|
78
|
-
TimestampDateExtension,
|
|
79
|
-
} from '@schema-pack/message-pack';
|
|
80
|
-
|
|
81
|
-
const extension = new TimestampDateExtension();
|
|
82
|
-
|
|
83
|
-
const encoder = new Encoder().addInternalExtension(extension);
|
|
84
|
-
const decoder = new Decoder().addInternalExtension(extension);
|
|
85
|
-
|
|
86
|
-
const bytes = encoder.encode(new Date());
|
|
87
|
-
decoder.decode(bytes); // Date instance
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Writing your own extensions
|
|
91
|
-
|
|
92
|
-
Implement the `MessagePackExtension<TValue, TBuffer>` interface (or extend the
|
|
93
|
-
abstract `UntypedExtension` helper, which takes care of storing `type`):
|
|
94
|
-
|
|
95
|
-
```ts
|
|
96
|
-
interface MessagePackExtension<
|
|
97
|
-
TValue = unknown,
|
|
98
|
-
TBuffer extends Uint8Array = Uint8Array,
|
|
99
|
-
> {
|
|
100
|
-
readonly type: number;
|
|
101
|
-
encode(
|
|
102
|
-
value: object | bigint,
|
|
103
|
-
buffer: MessagePackEncoderBuffer<TBuffer>,
|
|
104
|
-
): void;
|
|
105
|
-
decode(decoderBuffer: MessagePackDecoderBuffer, size: number): TValue;
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
Then register it on both the encoder and the decoder:
|
|
110
|
-
|
|
111
|
-
- `addExtension(extension)` — custom extension types, in the range `0` to `127`.
|
|
112
|
-
- `addExtensionType(type, extension)` — same as above, with the type passed as a
|
|
113
|
-
separate argument.
|
|
114
|
-
- `addInternalExtension(extension)` — reserved types, in the range `-128` to
|
|
115
|
-
`-1`, used for spec-defined extensions such as timestamps.
|
|
116
|
-
- `fetchExtension(type)` — look up a registered extension by its type.
|
|
117
|
-
|
|
118
|
-
Inside `encode()`, the buffer argument exposes low-level writers (`writeUint8`,
|
|
119
|
-
`writeUint32`, `writeBin`, `ensureCapacity`, `view`, `offset`, etc.) for
|
|
120
|
-
building a custom binary payload — see the `MessagePackEncoderBuffer` interface
|
|
121
|
-
for the full API.
|
|
122
|
-
|
|
123
|
-
## Encoder options
|
|
124
|
-
|
|
125
|
-
| Option | Default | Description |
|
|
126
|
-
| ------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
127
|
-
| `initialBufferSize` | `1024` | Initial size of the encoding buffer; grows automatically as needed. |
|
|
128
|
-
| `newBufferFn` | `(size) => new Uint8Array(size)` | Factory used to allocate new buffers. |
|
|
129
|
-
| `initialSharedBufferSize` | `1024` | Initial size of the shared buffer used when encoding strings, to reduce allocations. |
|
|
130
|
-
| `textEncoder` | `DefaultTextEncoder` | Encoder used to turn strings into bytes. A `NodeTextEncoder` is also provided for faster string encoding on Node. |
|
|
131
|
-
| `sortKeys` | `false` | Sort object keys before encoding, for deterministic output. |
|
|
132
|
-
| `forceFloat32` | `false` | Always encode floating point numbers as `float32` instead of `float64`. This may lose precision for values that don't fit exactly in 32 bits (e.g. `1.2`) — only enable it if you know your floats can round-trip safely. |
|
|
133
|
-
|
|
134
|
-
## Decoder options
|
|
135
|
-
|
|
136
|
-
| Option | Default | Description |
|
|
137
|
-
| ------------------- | -------------------------------- | ------------------------------------------------------------------- |
|
|
138
|
-
| `initialBufferSize` | `1024` | Initial size of the decoding buffer; grows automatically as needed. |
|
|
139
|
-
| `newBufferFn` | `(size) => new Uint8Array(size)` | Factory used to allocate new buffers. |
|
|
140
|
-
|
|
141
|
-
## Error handling
|
|
142
|
-
|
|
143
|
-
The encoder and decoder currently throw plain `Error`s for invalid usage — e.g.
|
|
144
|
-
registering a duplicate or out-of-range extension type, looking up an extension
|
|
145
|
-
that isn't registered, or decoding a malformed timestamp payload. There's no
|
|
146
|
-
dedicated error class hierarchy yet, so catch `Error` and inspect `message` if
|
|
147
|
-
you need to branch on failure.
|
|
32
|
+
For more information, visit the
|
|
33
|
+
[documentation](https://pawnary.github.io/schema-pack/docs/message-pack).
|
|
148
34
|
|
|
149
35
|
## License
|
|
150
36
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { d as TimestampDateExtension, f as MessagePackBuiltInExtension, i as MessagePackExtension, r as MessagePackBufferWithExtensions, s as BigIntExtensionOptions, t as ErrorExtension, u as BufferWithExtensionsOptions } from "./error-B129l__v.cjs";
|
|
2
|
+
//#region src/bufferWithExtensions.d.ts
|
|
3
|
+
type MessagePackExtensionLike<TBuffer extends Uint8Array> = MessagePackExtension<object, TBuffer> | MessagePackBuiltInExtension<object, TBuffer>;
|
|
4
|
+
declare abstract class BufferWithExtensions<TBuffer extends Uint8Array = Uint8Array> implements MessagePackBufferWithExtensions<TBuffer> {
|
|
5
|
+
/**
|
|
6
|
+
* Default extension type for `BigInt` values. This is used when the user does
|
|
7
|
+
* not provide a custom extension type for `BigInt` values.
|
|
8
|
+
*/
|
|
9
|
+
static readonly DEFAULT_BIG_INT_EXTENSION_TYPE = 0;
|
|
10
|
+
/**
|
|
11
|
+
* The extensions map is used to store the registered extensions. The key is
|
|
12
|
+
* the extension type, and the value is the extension instance.
|
|
13
|
+
*/
|
|
14
|
+
protected extensions: Map<number, MessagePackExtension<object, TBuffer>>;
|
|
15
|
+
/**
|
|
16
|
+
* The built-in extensions map is used to store the built-in extensions. The
|
|
17
|
+
* key is the extension type, and the value is the extension instance.
|
|
18
|
+
*/
|
|
19
|
+
protected builtInExtensions: Map<number, MessagePackBuiltInExtension<object, TBuffer>>;
|
|
20
|
+
/**
|
|
21
|
+
* The timestamp date extension is used to encode and decode `Date` values. It
|
|
22
|
+
* is optional and can be disabled by setting the `extensions.timestampDate`
|
|
23
|
+
* option to `false`.
|
|
24
|
+
*/
|
|
25
|
+
readonly timestampDateExtension?: TimestampDateExtension<TBuffer>;
|
|
26
|
+
/**
|
|
27
|
+
* The big integer extension is used to encode and decode `BigInt` values. It
|
|
28
|
+
* is optional and can be disabled by setting the `extensions.bigInt` option
|
|
29
|
+
* to `false`.
|
|
30
|
+
*
|
|
31
|
+
* If enabled, the user can provide a custom extension type for `BigInt`
|
|
32
|
+
* values by setting the `extensions.bigInt.type` option.
|
|
33
|
+
*/
|
|
34
|
+
readonly bigIntExtension?: BigIntExtensionOptions;
|
|
35
|
+
/**
|
|
36
|
+
* The error extension is used to encode and decode `Error` values. It is
|
|
37
|
+
* optional and can be disabled by setting the `extensions.error` option to
|
|
38
|
+
* `false`.
|
|
39
|
+
*
|
|
40
|
+
* If enabled, the user can provide a custom extension for `Error` values by
|
|
41
|
+
* setting the `extensions.error` option to an instance of `ErrorExtension`.
|
|
42
|
+
*/
|
|
43
|
+
readonly errorExtension?: ErrorExtension<TBuffer>;
|
|
44
|
+
constructor(options?: BufferWithExtensionsOptions<TBuffer>);
|
|
45
|
+
getExtensions(): ReadonlyMap<number, MessagePackExtension<object, TBuffer>>;
|
|
46
|
+
addExtension<TValue extends object>(extension: MessagePackExtension<TValue, TBuffer>): this;
|
|
47
|
+
fetchExtension(type: number): MessagePackExtensionLike<TBuffer>;
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { BufferWithExtensions as t };
|
|
51
|
+
//# sourceMappingURL=bufferWithExtensions-Cg4LGSIy.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bufferWithExtensions-Cg4LGSIy.d.cts","names":[],"sources":["../../src/bufferWithExtensions.ts"],"mappings":";;KAYK,yBAAyB,gBAAgB,cAC1C,6BAA6B,WAC7B,oCAAoC;uBAEzB,qBACb,gBAAgB,aAAa,uBAClB,gCAAgC;;;;;kBAK3B;;;;;YAMN,YAAU,YAAA,6BAAA;;;;;YASV,mBAAiB,YAAA,oCAAA;;;;;;WAUlB,yBAAyB,uBAAuB;;;;;;;;;WAUhD,kBAAkB;;;;;;;;;WAUlB,iBAAiB,eAAe;EAEzC,YAAY,UAAU,4BAA4B;EA0ClD,iBAAiB,oBAAoB,6BAA6B;EAIlE,aAAa,uBACX,WAAW,qBAAqB,QAAQ;EAiC1C,eAAe,eAAe,yBAAyB"}
|
|
@@ -1,26 +1,89 @@
|
|
|
1
|
+
const require_extensions_error_error = require("./extensions/error/error.cjs");
|
|
2
|
+
const require_extensions_timestampDate_timestampDate = require("./extensions/timestampDate/timestampDate.cjs");
|
|
3
|
+
const require_utils_assertValidExtensionType = require("./utils/assertValidExtensionType.cjs");
|
|
1
4
|
//#region src/bufferWithExtensions.ts
|
|
2
|
-
var BufferWithExtensions = class {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
var BufferWithExtensions = class BufferWithExtensions {
|
|
6
|
+
/**
|
|
7
|
+
* Default extension type for `BigInt` values. This is used when the user does
|
|
8
|
+
* not provide a custom extension type for `BigInt` values.
|
|
9
|
+
*/
|
|
10
|
+
static DEFAULT_BIG_INT_EXTENSION_TYPE = 0;
|
|
11
|
+
/**
|
|
12
|
+
* The extensions map is used to store the registered extensions. The key is
|
|
13
|
+
* the extension type, and the value is the extension instance.
|
|
14
|
+
*/
|
|
15
|
+
extensions = /* @__PURE__ */ new Map();
|
|
16
|
+
/**
|
|
17
|
+
* The built-in extensions map is used to store the built-in extensions. The
|
|
18
|
+
* key is the extension type, and the value is the extension instance.
|
|
19
|
+
*/
|
|
20
|
+
builtInExtensions = /* @__PURE__ */ new Map();
|
|
21
|
+
/**
|
|
22
|
+
* The timestamp date extension is used to encode and decode `Date` values. It
|
|
23
|
+
* is optional and can be disabled by setting the `extensions.timestampDate`
|
|
24
|
+
* option to `false`.
|
|
25
|
+
*/
|
|
26
|
+
timestampDateExtension = void 0;
|
|
27
|
+
/**
|
|
28
|
+
* The big integer extension is used to encode and decode `BigInt` values. It
|
|
29
|
+
* is optional and can be disabled by setting the `extensions.bigInt` option
|
|
30
|
+
* to `false`.
|
|
31
|
+
*
|
|
32
|
+
* If enabled, the user can provide a custom extension type for `BigInt`
|
|
33
|
+
* values by setting the `extensions.bigInt.type` option.
|
|
34
|
+
*/
|
|
35
|
+
bigIntExtension = void 0;
|
|
36
|
+
/**
|
|
37
|
+
* The error extension is used to encode and decode `Error` values. It is
|
|
38
|
+
* optional and can be disabled by setting the `extensions.error` option to
|
|
39
|
+
* `false`.
|
|
40
|
+
*
|
|
41
|
+
* If enabled, the user can provide a custom extension for `Error` values by
|
|
42
|
+
* setting the `extensions.error` option to an instance of `ErrorExtension`.
|
|
43
|
+
*/
|
|
44
|
+
errorExtension = void 0;
|
|
45
|
+
constructor(options) {
|
|
46
|
+
if (options?.extensions !== false) {
|
|
47
|
+
if (options?.extensions?.bigInt !== false) {
|
|
48
|
+
this.bigIntExtension = options?.extensions?.bigInt ?? { type: BufferWithExtensions.DEFAULT_BIG_INT_EXTENSION_TYPE };
|
|
49
|
+
require_utils_assertValidExtensionType(this.bigIntExtension.type);
|
|
50
|
+
}
|
|
51
|
+
if (options?.extensions?.error !== false) {
|
|
52
|
+
if (options?.extensions?.error instanceof require_extensions_error_error) this.errorExtension = options.extensions.error;
|
|
53
|
+
else this.errorExtension = new require_extensions_error_error(options?.extensions?.error);
|
|
54
|
+
require_utils_assertValidExtensionType(this.errorExtension.type);
|
|
55
|
+
this.builtInExtensions.set(this.errorExtension.type, this.errorExtension);
|
|
56
|
+
}
|
|
57
|
+
if (options?.extensions?.timestampDate !== false) {
|
|
58
|
+
if (options?.extensions?.timestampDate instanceof require_extensions_timestampDate_timestampDate) this.timestampDateExtension = options.extensions.timestampDate;
|
|
59
|
+
else this.timestampDateExtension = new require_extensions_timestampDate_timestampDate();
|
|
60
|
+
this.builtInExtensions.set(require_extensions_timestampDate_timestampDate.DEFAULT_TYPE, this.timestampDateExtension);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
6
63
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (extension.type < 0) throw new Error(`Extension type must be a non-negative integer, got ${extension.type}. Extensions between -128 and -1 are reserved for internal use. Use addInternalExtension() to register an internal extension.`);
|
|
10
|
-
if (extension.type > 127) throw new Error(`Extension type must be in the range 0 to 127, got ${extension.type}`);
|
|
11
|
-
this.extensions.set(extension.type, extension);
|
|
12
|
-
return this;
|
|
64
|
+
getExtensions() {
|
|
65
|
+
return this.extensions;
|
|
13
66
|
}
|
|
14
|
-
|
|
15
|
-
if (this.extensions.has(extension.type))
|
|
16
|
-
|
|
17
|
-
|
|
67
|
+
addExtension(extension) {
|
|
68
|
+
if (this.extensions.has(extension.type)) {
|
|
69
|
+
const existent = this.extensions.get(extension.type);
|
|
70
|
+
throw new Error(`Extension with type ${extension.type} already registered for ${existent.constructor.name}`);
|
|
71
|
+
}
|
|
72
|
+
require_utils_assertValidExtensionType(extension.type);
|
|
73
|
+
if (this.builtInExtensions.has(extension.type)) {
|
|
74
|
+
const existent = this.builtInExtensions.get(extension.type);
|
|
75
|
+
throw new Error(`Extension with type ${extension.type} conflicts with built-in extension ${existent.constructor.name}`);
|
|
76
|
+
}
|
|
77
|
+
if (extension.type === this.bigIntExtension?.type) throw new Error(`Extension with type ${extension.type} conflicts with built-in BigInt extension`);
|
|
18
78
|
this.extensions.set(extension.type, extension);
|
|
19
79
|
return this;
|
|
20
80
|
}
|
|
21
81
|
fetchExtension(type) {
|
|
22
|
-
|
|
23
|
-
if (!extension)
|
|
82
|
+
let extension = this.builtInExtensions.get(type);
|
|
83
|
+
if (!extension) {
|
|
84
|
+
extension = this.extensions.get(type);
|
|
85
|
+
if (!extension) throw new Error(`Extension with type ${type} not found`);
|
|
86
|
+
}
|
|
24
87
|
return extension;
|
|
25
88
|
}
|
|
26
89
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as BufferWithExtensions } from "./bufferWithExtensions-
|
|
1
|
+
import { t as BufferWithExtensions } from "./bufferWithExtensions-Cg4LGSIy.cjs";
|
|
2
2
|
export = BufferWithExtensions;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode-BraWmoPw.d.cts","names":[],"sources":["../../src/decoder/decode.ts"],"mappings":";iBAIwB,OAAO,kBAAkB,QAAQ,aAAa"}
|
|
@@ -1,29 +1,278 @@
|
|
|
1
|
-
const
|
|
1
|
+
const require_symbols = require("../symbols.cjs");
|
|
2
|
+
const require_bufferWithExtensions = require("../bufferWithExtensions.cjs");
|
|
3
|
+
const require_defaultNewBufferFn = require("../defaultNewBufferFn.cjs");
|
|
4
|
+
const require_decoder_textDecoders_defaultTextDecoder = require("./textDecoders/defaultTextDecoder.cjs");
|
|
2
5
|
//#region src/decoder/decoder.ts
|
|
3
|
-
var Decoder = class {
|
|
4
|
-
|
|
6
|
+
var Decoder = class Decoder extends require_bufferWithExtensions {
|
|
7
|
+
buffer;
|
|
8
|
+
offset;
|
|
9
|
+
view;
|
|
10
|
+
textDecoder;
|
|
11
|
+
copyBuffers;
|
|
5
12
|
constructor(options) {
|
|
6
|
-
|
|
13
|
+
super(options);
|
|
14
|
+
const bufferFactory = options?.bufferFactory ?? require_defaultNewBufferFn;
|
|
15
|
+
this.buffer = bufferFactory(0);
|
|
16
|
+
this.view = new DataView(this.buffer.buffer);
|
|
17
|
+
this.offset = 0;
|
|
18
|
+
this.textDecoder = options?.textDecoder ?? new require_decoder_textDecoders_defaultTextDecoder();
|
|
19
|
+
this.copyBuffers = options?.copyBuffers ?? false;
|
|
7
20
|
}
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
21
|
+
static fromEncoder(encoder, options) {
|
|
22
|
+
const decoder = new Decoder({
|
|
23
|
+
bufferFactory: encoder.bufferFactory,
|
|
24
|
+
extensions: {
|
|
25
|
+
bigInt: encoder.bigIntExtension ?? false,
|
|
26
|
+
error: encoder.errorExtension ?? false,
|
|
27
|
+
timestampDate: encoder.timestampDateExtension ?? false
|
|
28
|
+
},
|
|
29
|
+
...options
|
|
30
|
+
});
|
|
31
|
+
const extensions = encoder.getExtensions();
|
|
32
|
+
for (const extension of extensions.values()) decoder.addExtension(extension);
|
|
33
|
+
return decoder;
|
|
12
34
|
}
|
|
13
|
-
|
|
14
|
-
this.
|
|
35
|
+
setBuffer(buffer) {
|
|
36
|
+
this.buffer = buffer;
|
|
37
|
+
this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
38
|
+
this.offset = 0;
|
|
15
39
|
return this;
|
|
16
40
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
41
|
+
readArray(elementCount) {
|
|
42
|
+
const decodedArray = new Array(elementCount);
|
|
43
|
+
for (let index = 0; index < elementCount; index++) decodedArray[index] = this.nextValue();
|
|
44
|
+
return decodedArray;
|
|
20
45
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
46
|
+
readStr(byteLength) {
|
|
47
|
+
if (byteLength === 0) return "";
|
|
48
|
+
const { buffer } = this;
|
|
49
|
+
const stringStartOffset = this.offset;
|
|
50
|
+
const stringEndOffset = stringStartOffset + byteLength;
|
|
51
|
+
this.offset = stringEndOffset;
|
|
52
|
+
if (byteLength <= 64) {
|
|
53
|
+
let isAsciiOnly = true;
|
|
54
|
+
for (let byteIndex = stringStartOffset; byteIndex < stringEndOffset; byteIndex++) if (buffer[byteIndex] > 127) {
|
|
55
|
+
isAsciiOnly = false;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
if (isAsciiOnly) {
|
|
59
|
+
let decodedString = "";
|
|
60
|
+
for (let byteIndex = stringStartOffset; byteIndex < stringEndOffset; byteIndex++) decodedString += String.fromCharCode(buffer[byteIndex]);
|
|
61
|
+
return decodedString;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return this.textDecoder.decode(buffer, stringStartOffset, stringEndOffset);
|
|
65
|
+
}
|
|
66
|
+
readMapKey() {
|
|
67
|
+
return this.nextValue();
|
|
68
|
+
}
|
|
69
|
+
readMap(length) {
|
|
70
|
+
const decodedMap = {};
|
|
71
|
+
for (let index = 0; index < length; ++index) {
|
|
72
|
+
const mapKey = this.readMapKey();
|
|
73
|
+
if (mapKey === "__proto__") throw new Error("Invalid map key: \"__proto__\" are not allowed as keys to prevent prototype pollution.");
|
|
74
|
+
decodedMap[mapKey] = this.nextValue();
|
|
75
|
+
}
|
|
76
|
+
return decodedMap;
|
|
77
|
+
}
|
|
78
|
+
decodeBigInt(length) {
|
|
79
|
+
if (!this.bigIntExtension) throw new Error(`BigInt extension is disabled, cannot decode BigInt.`);
|
|
80
|
+
let encoded = 0n;
|
|
81
|
+
let shift = 0n;
|
|
82
|
+
const endOffset = this.offset + length;
|
|
83
|
+
while (this.offset < endOffset) {
|
|
84
|
+
encoded |= this.view.getBigUint64(this.offset, false) << shift;
|
|
85
|
+
this.offset += 8;
|
|
86
|
+
shift += 64n;
|
|
87
|
+
}
|
|
88
|
+
if ((encoded & 1n) === 1n) return -(encoded + 1n >> 1n);
|
|
89
|
+
return encoded >> 1n;
|
|
90
|
+
}
|
|
91
|
+
decodeBin(length) {
|
|
92
|
+
const startOffset = this.offset;
|
|
93
|
+
this.offset = startOffset + length;
|
|
94
|
+
if (this.copyBuffers) return Uint8Array.prototype.slice.call(this.buffer, startOffset, this.offset);
|
|
95
|
+
return this.buffer.subarray(startOffset, this.offset);
|
|
96
|
+
}
|
|
97
|
+
decodeExtension(extensionId, length) {
|
|
98
|
+
if (extensionId === this.bigIntExtension?.type) return this.decodeBigInt(length);
|
|
99
|
+
const extension = this.fetchExtension(extensionId);
|
|
100
|
+
const expectedNewOffset = this.offset + length;
|
|
101
|
+
const decoded = extension.decode(this, length);
|
|
102
|
+
if (this.offset !== expectedNewOffset) throw new Error(`Extension decoder did not consume the expected number of bytes for extensionId ${extensionId} and length ${length}.`);
|
|
103
|
+
return decoded;
|
|
104
|
+
}
|
|
105
|
+
decodeControlSlow(headerByte) {
|
|
106
|
+
const { buffer } = this;
|
|
107
|
+
switch (headerByte) {
|
|
108
|
+
case 193: return;
|
|
109
|
+
case require_symbols.BIN8: {
|
|
110
|
+
const byteLength = buffer[this.offset++];
|
|
111
|
+
return this.decodeBin(byteLength);
|
|
112
|
+
}
|
|
113
|
+
case require_symbols.BIN16: {
|
|
114
|
+
const byteLength = this.view.getUint16(this.offset);
|
|
115
|
+
this.offset += 2;
|
|
116
|
+
return this.decodeBin(byteLength);
|
|
117
|
+
}
|
|
118
|
+
case require_symbols.BIN32: {
|
|
119
|
+
const byteLength = this.view.getUint32(this.offset);
|
|
120
|
+
this.offset += 4;
|
|
121
|
+
return this.decodeBin(byteLength);
|
|
122
|
+
}
|
|
123
|
+
case require_symbols.EXT8: {
|
|
124
|
+
const length = this.buffer[this.offset++];
|
|
125
|
+
const extensionId = this.view.getInt8(this.offset++);
|
|
126
|
+
return this.decodeExtension(extensionId, length);
|
|
127
|
+
}
|
|
128
|
+
case require_symbols.EXT16: {
|
|
129
|
+
const length = this.view.getUint16(this.offset);
|
|
130
|
+
this.offset += 2;
|
|
131
|
+
const extensionId = this.view.getInt8(this.offset++);
|
|
132
|
+
return this.decodeExtension(extensionId, length);
|
|
133
|
+
}
|
|
134
|
+
case require_symbols.EXT32: {
|
|
135
|
+
const length = this.view.getUint32(this.offset);
|
|
136
|
+
this.offset += 4;
|
|
137
|
+
const extensionId = this.view.getInt8(this.offset++);
|
|
138
|
+
return this.decodeExtension(extensionId, length);
|
|
139
|
+
}
|
|
140
|
+
case require_symbols.FLOAT32: {
|
|
141
|
+
const decodedFloat32 = this.view.getFloat32(this.offset);
|
|
142
|
+
this.offset += 4;
|
|
143
|
+
return decodedFloat32;
|
|
144
|
+
}
|
|
145
|
+
case require_symbols.FLOAT64: {
|
|
146
|
+
const decodedFloat64 = this.view.getFloat64(this.offset);
|
|
147
|
+
this.offset += 8;
|
|
148
|
+
return decodedFloat64;
|
|
149
|
+
}
|
|
150
|
+
case require_symbols.UINT64: {
|
|
151
|
+
const high = this.view.getUint32(this.offset);
|
|
152
|
+
this.offset += 4;
|
|
153
|
+
const low = this.view.getUint32(this.offset);
|
|
154
|
+
this.offset += 4;
|
|
155
|
+
return high * 4294967296 + low;
|
|
156
|
+
}
|
|
157
|
+
case require_symbols.INT8: {
|
|
158
|
+
const decodedInt8 = this.view.getInt8(this.offset);
|
|
159
|
+
this.offset += 1;
|
|
160
|
+
return decodedInt8;
|
|
161
|
+
}
|
|
162
|
+
case require_symbols.INT16: {
|
|
163
|
+
const valueStartOffset = this.offset;
|
|
164
|
+
const decodedInt16 = this.view.getInt16(valueStartOffset);
|
|
165
|
+
this.offset = valueStartOffset + 2;
|
|
166
|
+
return decodedInt16;
|
|
167
|
+
}
|
|
168
|
+
case require_symbols.INT32: {
|
|
169
|
+
const valueStartOffset = this.offset;
|
|
170
|
+
const decodedInt32 = this.view.getInt32(valueStartOffset);
|
|
171
|
+
this.offset = valueStartOffset + 4;
|
|
172
|
+
return decodedInt32;
|
|
173
|
+
}
|
|
174
|
+
case require_symbols.INT64: {
|
|
175
|
+
const high = this.view.getInt32(this.offset);
|
|
176
|
+
this.offset += 4;
|
|
177
|
+
const low = this.view.getUint32(this.offset);
|
|
178
|
+
this.offset += 4;
|
|
179
|
+
return high * 4294967296 + low;
|
|
180
|
+
}
|
|
181
|
+
case require_symbols.FIXEXT1: {
|
|
182
|
+
const extensionId = this.view.getInt8(this.offset++);
|
|
183
|
+
return this.decodeExtension(extensionId, 1);
|
|
184
|
+
}
|
|
185
|
+
case require_symbols.FIXEXT2: {
|
|
186
|
+
const extensionId = this.view.getInt8(this.offset++);
|
|
187
|
+
return this.decodeExtension(extensionId, 2);
|
|
188
|
+
}
|
|
189
|
+
case require_symbols.FIXEXT4: {
|
|
190
|
+
const extensionId = this.view.getInt8(this.offset++);
|
|
191
|
+
return this.decodeExtension(extensionId, 4);
|
|
192
|
+
}
|
|
193
|
+
case require_symbols.FIXEXT8: {
|
|
194
|
+
const extensionId = this.view.getInt8(this.offset++);
|
|
195
|
+
return this.decodeExtension(extensionId, 8);
|
|
196
|
+
}
|
|
197
|
+
case require_symbols.FIXEXT16: {
|
|
198
|
+
const extensionId = this.view.getInt8(this.offset++);
|
|
199
|
+
return this.decodeExtension(extensionId, 16);
|
|
200
|
+
}
|
|
201
|
+
case require_symbols.STR8: {
|
|
202
|
+
const byteLength = buffer[this.offset++];
|
|
203
|
+
return this.readStr(byteLength);
|
|
204
|
+
}
|
|
205
|
+
case require_symbols.STR16: {
|
|
206
|
+
const valueStartOffset = this.offset;
|
|
207
|
+
const byteLength = this.view.getUint16(valueStartOffset);
|
|
208
|
+
this.offset = valueStartOffset + 2;
|
|
209
|
+
return this.readStr(byteLength);
|
|
210
|
+
}
|
|
211
|
+
case require_symbols.STR32: {
|
|
212
|
+
const byteLength = this.view.getUint32(this.offset);
|
|
213
|
+
this.offset += 4;
|
|
214
|
+
return this.readStr(byteLength);
|
|
215
|
+
}
|
|
216
|
+
case require_symbols.ARRAY16: {
|
|
217
|
+
const valueStartOffset = this.offset;
|
|
218
|
+
const elementCount = this.view.getUint16(valueStartOffset);
|
|
219
|
+
this.offset = valueStartOffset + 2;
|
|
220
|
+
return this.readArray(elementCount);
|
|
221
|
+
}
|
|
222
|
+
case require_symbols.ARRAY32: {
|
|
223
|
+
const valueStartOffset = this.offset;
|
|
224
|
+
const elementCount = this.view.getUint32(valueStartOffset);
|
|
225
|
+
this.offset = valueStartOffset + 4;
|
|
226
|
+
return this.readArray(elementCount);
|
|
227
|
+
}
|
|
228
|
+
case require_symbols.MAP16: {
|
|
229
|
+
const valueStartOffset = this.offset;
|
|
230
|
+
const length = this.view.getUint16(valueStartOffset);
|
|
231
|
+
this.offset = valueStartOffset + 2;
|
|
232
|
+
return this.readMap(length);
|
|
233
|
+
}
|
|
234
|
+
case require_symbols.MAP32: {
|
|
235
|
+
const length = this.view.getUint32(this.offset);
|
|
236
|
+
this.offset += 4;
|
|
237
|
+
return this.readMap(length);
|
|
238
|
+
}
|
|
239
|
+
default: return;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
nextValue() {
|
|
243
|
+
const { buffer } = this;
|
|
244
|
+
const headerByte = buffer[this.offset++];
|
|
245
|
+
if ((headerByte & 224) === require_symbols.NIL) switch (headerByte) {
|
|
246
|
+
case require_symbols.NIL: return null;
|
|
247
|
+
case require_symbols.FALSE: return false;
|
|
248
|
+
case require_symbols.TRUE: return true;
|
|
249
|
+
case require_symbols.UINT8: return buffer[this.offset++];
|
|
250
|
+
case require_symbols.UINT16: {
|
|
251
|
+
const decodedUint16 = this.view.getUint16(this.offset);
|
|
252
|
+
this.offset += 2;
|
|
253
|
+
return decodedUint16;
|
|
254
|
+
}
|
|
255
|
+
case require_symbols.UINT32: {
|
|
256
|
+
const decodedUint32 = this.view.getUint32(this.offset);
|
|
257
|
+
this.offset += 4;
|
|
258
|
+
return decodedUint32;
|
|
259
|
+
}
|
|
260
|
+
default: return this.decodeControlSlow(headerByte);
|
|
261
|
+
}
|
|
262
|
+
if (headerByte >= require_symbols.NEGATIVE_FIXINT_START) return headerByte - 256;
|
|
263
|
+
if (headerByte < require_symbols.FIXARRAY_START) {
|
|
264
|
+
if (headerByte < require_symbols.FIXMAP_START) return headerByte;
|
|
265
|
+
return this.readMap(headerByte & 15);
|
|
266
|
+
}
|
|
267
|
+
if (headerByte < require_symbols.FIXSTR_START) {
|
|
268
|
+
const elementCount = headerByte & 15;
|
|
269
|
+
return this.readArray(elementCount);
|
|
270
|
+
}
|
|
271
|
+
return this.readStr(headerByte & 31);
|
|
272
|
+
}
|
|
273
|
+
decode(encodedBuffer) {
|
|
274
|
+
this.setBuffer(encodedBuffer);
|
|
275
|
+
return this.nextValue();
|
|
27
276
|
}
|
|
28
277
|
};
|
|
29
278
|
//#endregion
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Decoder } from "../decoder-
|
|
1
|
+
import { t as Decoder } from "../decoder-T6p4ZZJi.cjs";
|
|
2
2
|
export = Decoder;
|