@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.
Files changed (380) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -123
  3. package/dist/cjs/bufferWithExtensions-Cg4LGSIy.d.cts +51 -0
  4. package/dist/cjs/bufferWithExtensions-Cg4LGSIy.d.cts.map +1 -0
  5. package/dist/cjs/bufferWithExtensions.cjs +79 -16
  6. package/dist/cjs/bufferWithExtensions.d.cts +1 -1
  7. package/dist/cjs/decode-BraWmoPw.d.cts +5 -0
  8. package/dist/cjs/decode-BraWmoPw.d.cts.map +1 -0
  9. package/dist/cjs/decoder/decode.cjs +8 -0
  10. package/dist/cjs/decoder/decode.d.cts +2 -0
  11. package/dist/cjs/decoder/decoder.cjs +268 -19
  12. package/dist/cjs/decoder/decoder.d.cts +1 -1
  13. package/dist/cjs/decoder/index.cjs +6 -2
  14. package/dist/cjs/decoder/index.d.cts +7 -5
  15. package/dist/cjs/decoder/interfaces/index.d.cts +4 -4
  16. package/dist/cjs/decoder/interfaces/messagePackDecoder.d.cts +2 -0
  17. package/dist/cjs/decoder/interfaces/messagePackTextDecoder.d.cts +1 -1
  18. package/dist/cjs/decoder/textDecoders/defaultTextDecoder.d.cts +1 -1
  19. package/dist/cjs/decoder/textDecoders/index.cjs +5 -0
  20. package/dist/cjs/decoder/textDecoders/index.d.cts +4 -0
  21. package/dist/cjs/decoder/textDecoders/nodeTextDecoder.cjs +8 -0
  22. package/dist/cjs/decoder/textDecoders/nodeTextDecoder.d.cts +2 -0
  23. package/dist/cjs/decoder/types.d.cts +2 -2
  24. package/dist/cjs/decoder-T6p4ZZJi.d.cts +30 -0
  25. package/dist/cjs/decoder-T6p4ZZJi.d.cts.map +1 -0
  26. package/dist/cjs/defaultNewBufferFn.cjs +1 -3
  27. package/dist/cjs/defaultNewBufferFn.d.cts +2 -1
  28. package/dist/cjs/defaultNewBufferFn.d.cts.map +1 -1
  29. package/dist/cjs/defaultTextDecoder-CyZtJbK1.d.cts +10 -0
  30. package/dist/cjs/defaultTextDecoder-CyZtJbK1.d.cts.map +1 -0
  31. package/dist/{esm/defaultTextEncoder-BkIjtDkg.d.mts → cjs/defaultTextEncoder-BpUrJKD9.d.cts} +2 -2
  32. package/dist/cjs/{defaultTextEncoder-DzdGBX6s.d.cts.map → defaultTextEncoder-BpUrJKD9.d.cts.map} +1 -1
  33. package/dist/cjs/encode-4SxHVw0M.d.cts +5 -0
  34. package/dist/cjs/encode-4SxHVw0M.d.cts.map +1 -0
  35. package/dist/cjs/encoder/encode.cjs +8 -0
  36. package/dist/cjs/encoder/encode.d.cts +2 -0
  37. package/dist/cjs/encoder/encoder.cjs +690 -26
  38. package/dist/cjs/encoder/encoder.d.cts +1 -1
  39. package/dist/cjs/encoder/index.cjs +2 -2
  40. package/dist/cjs/encoder/index.d.cts +7 -7
  41. package/dist/cjs/encoder/interfaces/index.d.cts +4 -4
  42. package/dist/cjs/encoder/interfaces/messagePackEncoder.d.cts +2 -0
  43. package/dist/cjs/encoder/interfaces/messagePackTextEncoder.d.cts +1 -1
  44. package/dist/cjs/encoder/textEncoders/defaultTextEncoder.d.cts +1 -1
  45. package/dist/cjs/encoder/textEncoders/index.d.cts +3 -3
  46. package/dist/cjs/encoder/textEncoders/nodeTextEncoder.d.cts +1 -1
  47. package/dist/cjs/encoder/types.d.cts +2 -2
  48. package/dist/cjs/{encoderBuffer-DWGIXXjj.d.cts → encoder-yQYOtvXU.d.cts} +38 -16
  49. package/dist/cjs/encoder-yQYOtvXU.d.cts.map +1 -0
  50. package/dist/cjs/{messagePackExtension-C_TQXlEn.d.cts → error-B129l__v.d.cts} +306 -52
  51. package/dist/cjs/error-B129l__v.d.cts.map +1 -0
  52. package/dist/cjs/extensions/error/defaultFactories.cjs +15 -0
  53. package/dist/cjs/extensions/error/defaultFactories.d.cts +6 -0
  54. package/dist/cjs/extensions/error/defaultFactories.d.cts.map +1 -0
  55. package/dist/cjs/extensions/error/error.cjs +139 -0
  56. package/dist/cjs/extensions/error/error.d.cts +2 -0
  57. package/dist/cjs/extensions/error/index.cjs +3 -0
  58. package/dist/cjs/extensions/error/index.d.cts +4 -0
  59. package/dist/cjs/extensions/error/symbols.cjs +19 -0
  60. package/dist/cjs/extensions/error/symbols.d.cts +19 -0
  61. package/dist/cjs/extensions/error/symbols.d.cts.map +1 -0
  62. package/dist/cjs/extensions/error/types.d.cts +2 -0
  63. package/dist/cjs/extensions/index.cjs +4 -0
  64. package/dist/cjs/extensions/index.d.cts +6 -3
  65. package/dist/cjs/extensions/interfaces/messagePackBuiltInExtension.d.cts +2 -0
  66. package/dist/cjs/extensions/interfaces/messagePackExtension.d.cts +1 -1
  67. package/dist/cjs/extensions/interfaces/messagePackExtensionBase.cjs +0 -0
  68. package/dist/cjs/extensions/interfaces/messagePackExtensionBase.d.cts +2 -0
  69. package/dist/cjs/extensions/interfaces/types.cjs +0 -0
  70. package/dist/cjs/extensions/interfaces/types.d.cts +2 -0
  71. package/dist/cjs/extensions/serializer/index.cjs +3 -0
  72. package/dist/cjs/extensions/serializer/index.d.cts +4 -0
  73. package/dist/cjs/extensions/serializer/serializer.cjs +27 -0
  74. package/dist/cjs/extensions/serializer/serializer.d.cts +2 -0
  75. package/dist/cjs/extensions/serializer/types.cjs +0 -0
  76. package/dist/cjs/extensions/serializer/types.d.cts +2 -0
  77. package/dist/cjs/extensions/timestampDate/index.d.cts +2 -2
  78. package/dist/cjs/extensions/timestampDate/timestampDate.cjs +41 -24
  79. package/dist/cjs/extensions/timestampDate/timestampDate.d.cts +1 -1
  80. package/dist/cjs/index-B5vbV8Ak.d.cts +1 -0
  81. package/dist/cjs/index.cjs +15 -32
  82. package/dist/cjs/index.d.cts +16 -23
  83. package/dist/cjs/interfaces/messagePackBufferWithExtensions.d.cts +1 -1
  84. package/dist/cjs/messagePackDecoder-BZOBJ2h5.d.cts +12 -0
  85. package/dist/cjs/messagePackDecoder-BZOBJ2h5.d.cts.map +1 -0
  86. package/dist/cjs/messagePackExtensionBase-DVMgQv12.d.cts +30 -0
  87. package/dist/cjs/messagePackExtensionBase-DVMgQv12.d.cts.map +1 -0
  88. package/dist/cjs/messagePackTextDecoder-CfBSOsxU.d.cts +8 -0
  89. package/dist/cjs/messagePackTextDecoder-CfBSOsxU.d.cts.map +1 -0
  90. package/dist/cjs/{messagePackTextEncoder-D7iCft_t.d.cts → messagePackTextEncoder-MeyNUt3L.d.cts} +2 -2
  91. package/dist/cjs/messagePackTextEncoder-MeyNUt3L.d.cts.map +1 -0
  92. package/dist/cjs/nodeTextDecoder-B48jwo-L.d.cts +9 -0
  93. package/dist/cjs/nodeTextDecoder-B48jwo-L.d.cts.map +1 -0
  94. package/dist/{esm/nodeTextEncoder-CegSnA6z.d.mts → cjs/nodeTextEncoder-BpJi8Jx-.d.cts} +3 -3
  95. package/dist/cjs/nodeTextEncoder-BpJi8Jx-.d.cts.map +1 -0
  96. package/dist/cjs/serializer-nJmZCyQ0.d.cts +19 -0
  97. package/dist/cjs/serializer-nJmZCyQ0.d.cts.map +1 -0
  98. package/dist/cjs/types-BLh5F2iA.d.cts +22 -0
  99. package/dist/cjs/types-BLh5F2iA.d.cts.map +1 -0
  100. package/dist/cjs/types-BcIA43h9.d.cts +5 -0
  101. package/dist/cjs/types-BcIA43h9.d.cts.map +1 -0
  102. package/dist/cjs/types-CbicLx9m.d.cts +21 -0
  103. package/dist/cjs/types-CbicLx9m.d.cts.map +1 -0
  104. package/dist/cjs/types-aODRmLZq.d.cts +7 -0
  105. package/dist/cjs/types-aODRmLZq.d.cts.map +1 -0
  106. package/dist/cjs/types.d.cts +2 -2
  107. package/dist/cjs/utils/assertValidExtensionType.cjs +7 -0
  108. package/dist/cjs/utils/assertValidExtensionType.d.cts +4 -0
  109. package/dist/cjs/utils/assertValidExtensionType.d.cts.map +1 -0
  110. package/dist/cjs/utils/fitIn16Bits.d.cts +4 -2
  111. package/dist/cjs/utils/fitIn16Bits.d.cts.map +1 -0
  112. package/dist/cjs/utils/fitIn32Bits.d.cts +4 -2
  113. package/dist/cjs/utils/fitIn32Bits.d.cts.map +1 -0
  114. package/dist/cjs/utils/fitIn7Bits.d.cts +4 -2
  115. package/dist/cjs/utils/fitIn7Bits.d.cts.map +1 -0
  116. package/dist/cjs/utils/fitIn8Bits.d.cts +4 -2
  117. package/dist/cjs/utils/fitIn8Bits.d.cts.map +1 -0
  118. package/dist/esm/bufferWithExtensions-DSU4ekuD.d.mts +51 -0
  119. package/dist/esm/bufferWithExtensions-DSU4ekuD.d.mts.map +1 -0
  120. package/dist/esm/bufferWithExtensions.d.mts +1 -1
  121. package/dist/esm/bufferWithExtensions.mjs +79 -16
  122. package/dist/esm/bufferWithExtensions.mjs.map +1 -1
  123. package/dist/esm/decode-BraWmoPw.d.mts +5 -0
  124. package/dist/esm/decode-BraWmoPw.d.mts.map +1 -0
  125. package/dist/esm/decoder/decode.d.mts +2 -0
  126. package/dist/esm/decoder/decode.mjs +11 -0
  127. package/dist/esm/decoder/decode.mjs.map +1 -0
  128. package/dist/esm/decoder/decoder.d.mts +1 -1
  129. package/dist/esm/decoder/decoder.mjs +268 -19
  130. package/dist/esm/decoder/decoder.mjs.map +1 -1
  131. package/dist/esm/decoder/index.d.mts +7 -5
  132. package/dist/esm/decoder/index.mjs +4 -2
  133. package/dist/esm/decoder/interfaces/index.d.mts +4 -4
  134. package/dist/esm/decoder/interfaces/messagePackDecoder.d.mts +2 -0
  135. package/dist/esm/decoder/interfaces/messagePackTextDecoder.d.mts +1 -1
  136. package/dist/esm/decoder/textDecoders/defaultTextDecoder.d.mts +1 -1
  137. package/dist/esm/decoder/textDecoders/defaultTextDecoder.mjs.map +1 -1
  138. package/dist/esm/decoder/textDecoders/index.d.mts +4 -0
  139. package/dist/esm/decoder/textDecoders/index.mjs +3 -0
  140. package/dist/esm/decoder/textDecoders/nodeTextDecoder.d.mts +2 -0
  141. package/dist/esm/decoder/textDecoders/nodeTextDecoder.mjs +10 -0
  142. package/dist/esm/decoder/textDecoders/nodeTextDecoder.mjs.map +1 -0
  143. package/dist/esm/decoder/types.d.mts +2 -2
  144. package/dist/esm/decoder-Bdqx1C7P.d.mts +30 -0
  145. package/dist/esm/decoder-Bdqx1C7P.d.mts.map +1 -0
  146. package/dist/esm/defaultNewBufferFn.d.mts +2 -1
  147. package/dist/esm/defaultNewBufferFn.d.mts.map +1 -1
  148. package/dist/esm/defaultNewBufferFn.mjs +1 -3
  149. package/dist/esm/defaultNewBufferFn.mjs.map +1 -1
  150. package/dist/esm/defaultTextDecoder-BkW5T2EO.d.mts +10 -0
  151. package/dist/esm/defaultTextDecoder-BkW5T2EO.d.mts.map +1 -0
  152. package/dist/{cjs/defaultTextEncoder-DzdGBX6s.d.cts → esm/defaultTextEncoder-9dqnRXnL.d.mts} +2 -2
  153. package/dist/esm/{defaultTextEncoder-BkIjtDkg.d.mts.map → defaultTextEncoder-9dqnRXnL.d.mts.map} +1 -1
  154. package/dist/esm/encode-4SxHVw0M.d.mts +5 -0
  155. package/dist/esm/encode-4SxHVw0M.d.mts.map +1 -0
  156. package/dist/esm/encoder/encode.d.mts +2 -0
  157. package/dist/esm/encoder/encode.mjs +11 -0
  158. package/dist/esm/encoder/encode.mjs.map +1 -0
  159. package/dist/esm/encoder/encoder.d.mts +1 -1
  160. package/dist/esm/encoder/encoder.mjs +690 -26
  161. package/dist/esm/encoder/encoder.mjs.map +1 -1
  162. package/dist/esm/encoder/index.d.mts +7 -7
  163. package/dist/esm/encoder/index.mjs +2 -2
  164. package/dist/esm/encoder/interfaces/index.d.mts +4 -4
  165. package/dist/esm/encoder/interfaces/messagePackEncoder.d.mts +2 -0
  166. package/dist/esm/encoder/interfaces/messagePackTextEncoder.d.mts +1 -1
  167. package/dist/esm/encoder/textEncoders/defaultTextEncoder.d.mts +1 -1
  168. package/dist/esm/encoder/textEncoders/index.d.mts +3 -3
  169. package/dist/esm/encoder/textEncoders/nodeTextEncoder.d.mts +1 -1
  170. package/dist/esm/encoder/textEncoders/nodeTextEncoder.mjs.map +1 -1
  171. package/dist/esm/encoder/types.d.mts +2 -2
  172. package/dist/esm/{encoderBuffer-DEy8CuWQ.d.mts → encoder-C5Oo57-h.d.mts} +38 -16
  173. package/dist/esm/encoder-C5Oo57-h.d.mts.map +1 -0
  174. package/dist/esm/{messagePackExtension-5TI02KG6.d.mts → error-BtKEZf6W.d.mts} +306 -52
  175. package/dist/esm/error-BtKEZf6W.d.mts.map +1 -0
  176. package/dist/esm/extensions/error/defaultFactories.d.mts +7 -0
  177. package/dist/esm/extensions/error/defaultFactories.d.mts.map +1 -0
  178. package/dist/esm/extensions/error/defaultFactories.mjs +17 -0
  179. package/dist/esm/extensions/error/defaultFactories.mjs.map +1 -0
  180. package/dist/esm/extensions/error/error.d.mts +2 -0
  181. package/dist/esm/extensions/error/error.mjs +141 -0
  182. package/dist/esm/extensions/error/error.mjs.map +1 -0
  183. package/dist/esm/extensions/error/index.d.mts +4 -0
  184. package/dist/esm/extensions/error/index.mjs +2 -0
  185. package/dist/esm/extensions/error/symbols.d.mts +20 -0
  186. package/dist/esm/extensions/error/symbols.d.mts.map +1 -0
  187. package/dist/esm/extensions/error/symbols.mjs +21 -0
  188. package/dist/esm/extensions/error/symbols.mjs.map +1 -0
  189. package/dist/esm/extensions/error/types.d.mts +2 -0
  190. package/dist/esm/extensions/index.d.mts +6 -3
  191. package/dist/esm/extensions/index.mjs +3 -1
  192. package/dist/esm/extensions/interfaces/messagePackBuiltInExtension.d.mts +2 -0
  193. package/dist/esm/extensions/interfaces/messagePackExtension.d.mts +1 -1
  194. package/dist/esm/extensions/interfaces/messagePackExtensionBase.d.mts +2 -0
  195. package/dist/esm/extensions/interfaces/messagePackExtensionBase.mjs +1 -0
  196. package/dist/esm/extensions/interfaces/types.d.mts +2 -0
  197. package/dist/esm/extensions/interfaces/types.mjs +1 -0
  198. package/dist/esm/extensions/serializer/index.d.mts +4 -0
  199. package/dist/esm/extensions/serializer/index.mjs +2 -0
  200. package/dist/esm/extensions/serializer/serializer.d.mts +2 -0
  201. package/dist/esm/extensions/serializer/serializer.mjs +29 -0
  202. package/dist/esm/extensions/serializer/serializer.mjs.map +1 -0
  203. package/dist/esm/extensions/serializer/types.d.mts +2 -0
  204. package/dist/esm/extensions/serializer/types.mjs +1 -0
  205. package/dist/esm/extensions/timestampDate/index.d.mts +2 -2
  206. package/dist/esm/extensions/timestampDate/timestampDate.d.mts +1 -1
  207. package/dist/esm/extensions/timestampDate/timestampDate.mjs +41 -24
  208. package/dist/esm/extensions/timestampDate/timestampDate.mjs.map +1 -1
  209. package/dist/esm/index-B5vbV8Ak.d.mts +1 -0
  210. package/dist/esm/index.d.mts +16 -23
  211. package/dist/esm/index.mjs +10 -17
  212. package/dist/esm/interfaces/messagePackBufferWithExtensions.d.mts +1 -1
  213. package/dist/esm/messagePackDecoder-96W4gsyQ.d.mts +12 -0
  214. package/dist/esm/messagePackDecoder-96W4gsyQ.d.mts.map +1 -0
  215. package/dist/esm/messagePackExtensionBase-w6KYZsVn.d.mts +30 -0
  216. package/dist/esm/messagePackExtensionBase-w6KYZsVn.d.mts.map +1 -0
  217. package/dist/esm/messagePackTextDecoder-CfBSOsxU.d.mts +8 -0
  218. package/dist/esm/messagePackTextDecoder-CfBSOsxU.d.mts.map +1 -0
  219. package/dist/esm/{messagePackTextEncoder-D7iCft_t.d.mts → messagePackTextEncoder-MeyNUt3L.d.mts} +2 -2
  220. package/dist/esm/messagePackTextEncoder-MeyNUt3L.d.mts.map +1 -0
  221. package/dist/esm/nodeTextDecoder-D95BppeH.d.mts +9 -0
  222. package/dist/esm/nodeTextDecoder-D95BppeH.d.mts.map +1 -0
  223. package/dist/{cjs/nodeTextEncoder-DJzFDBXd.d.cts → esm/nodeTextEncoder-Bv6YQGyH.d.mts} +3 -3
  224. package/dist/esm/nodeTextEncoder-Bv6YQGyH.d.mts.map +1 -0
  225. package/dist/esm/serializer-Bu3RyF09.d.mts +19 -0
  226. package/dist/esm/serializer-Bu3RyF09.d.mts.map +1 -0
  227. package/dist/esm/types-BcIA43h9.d.mts +5 -0
  228. package/dist/esm/types-BcIA43h9.d.mts.map +1 -0
  229. package/dist/esm/types-DcVlVqj4.d.mts +21 -0
  230. package/dist/esm/types-DcVlVqj4.d.mts.map +1 -0
  231. package/dist/esm/types-LHP7oHpt.d.mts +22 -0
  232. package/dist/esm/types-LHP7oHpt.d.mts.map +1 -0
  233. package/dist/esm/types-xD3JER2f.d.mts +7 -0
  234. package/dist/esm/types-xD3JER2f.d.mts.map +1 -0
  235. package/dist/esm/types.d.mts +2 -2
  236. package/dist/esm/utils/assertValidExtensionType.d.mts +5 -0
  237. package/dist/esm/utils/assertValidExtensionType.d.mts.map +1 -0
  238. package/dist/esm/utils/assertValidExtensionType.mjs +9 -0
  239. package/dist/esm/utils/assertValidExtensionType.mjs.map +1 -0
  240. package/dist/esm/utils/fitIn16Bits.d.mts +5 -2
  241. package/dist/esm/utils/fitIn16Bits.d.mts.map +1 -0
  242. package/dist/esm/utils/fitIn32Bits.d.mts +5 -2
  243. package/dist/esm/utils/fitIn32Bits.d.mts.map +1 -0
  244. package/dist/esm/utils/fitIn7Bits.d.mts +5 -2
  245. package/dist/esm/utils/fitIn7Bits.d.mts.map +1 -0
  246. package/dist/esm/utils/fitIn8Bits.d.mts +5 -2
  247. package/dist/esm/utils/fitIn8Bits.d.mts.map +1 -0
  248. package/package.json +68 -43
  249. package/dist/cjs/benchmark/decoderDataTypesFactory.cjs +0 -37
  250. package/dist/cjs/benchmark/decoderDataTypesFactory.d.cts +0 -5
  251. package/dist/cjs/benchmark/decoderDataTypesFactory.d.cts.map +0 -1
  252. package/dist/cjs/bigInt-CBB8PGpe.d.cts +0 -35
  253. package/dist/cjs/bigInt-CBB8PGpe.d.cts.map +0 -1
  254. package/dist/cjs/bufferWithExtensions-BAinwJsn.d.cts +0 -12
  255. package/dist/cjs/bufferWithExtensions-BAinwJsn.d.cts.map +0 -1
  256. package/dist/cjs/decoder/decoderBuffer.cjs +0 -239
  257. package/dist/cjs/decoder/decoderBuffer.d.cts +0 -2
  258. package/dist/cjs/decoder/interfaces/messagePackDecoderBuffer.d.cts +0 -2
  259. package/dist/cjs/decoder-C1cd4I8S.d.cts +0 -15
  260. package/dist/cjs/decoder-C1cd4I8S.d.cts.map +0 -1
  261. package/dist/cjs/decoderBuffer-C9_0y-3q.d.cts +0 -22
  262. package/dist/cjs/decoderBuffer-C9_0y-3q.d.cts.map +0 -1
  263. package/dist/cjs/defaultTextDecoder-Ji2hTZkf.d.cts +0 -10
  264. package/dist/cjs/defaultTextDecoder-Ji2hTZkf.d.cts.map +0 -1
  265. package/dist/cjs/encoder/encoderBuffer.cjs +0 -602
  266. package/dist/cjs/encoder/encoderBuffer.d.cts +0 -2
  267. package/dist/cjs/encoder/interfaces/messagePackEncoderBuffer.d.cts +0 -2
  268. package/dist/cjs/encoder-DXuhGwd7.d.cts +0 -23
  269. package/dist/cjs/encoder-DXuhGwd7.d.cts.map +0 -1
  270. package/dist/cjs/encoderBuffer-DWGIXXjj.d.cts.map +0 -1
  271. package/dist/cjs/extensions/bigint/bigInt.cjs +0 -54
  272. package/dist/cjs/extensions/bigint/bigInt.d.cts +0 -2
  273. package/dist/cjs/extensions/bigint/index.cjs +0 -2
  274. package/dist/cjs/extensions/bigint/index.d.cts +0 -3
  275. package/dist/cjs/extensions/interfaces/index.d.cts +0 -3
  276. package/dist/cjs/fitIn16Bits-D9lga-sP.d.cts +0 -5
  277. package/dist/cjs/fitIn16Bits-D9lga-sP.d.cts.map +0 -1
  278. package/dist/cjs/fitIn32Bits-BrGIMOff.d.cts +0 -5
  279. package/dist/cjs/fitIn32Bits-BrGIMOff.d.cts.map +0 -1
  280. package/dist/cjs/fitIn7Bits-BVHyKXCg.d.cts +0 -5
  281. package/dist/cjs/fitIn7Bits-BVHyKXCg.d.cts.map +0 -1
  282. package/dist/cjs/fitIn8Bits-DQnQIhdh.d.cts +0 -5
  283. package/dist/cjs/fitIn8Bits-DQnQIhdh.d.cts.map +0 -1
  284. package/dist/cjs/fitInt64Bits-CY7lVKne.d.cts +0 -5
  285. package/dist/cjs/fitInt64Bits-CY7lVKne.d.cts.map +0 -1
  286. package/dist/cjs/interfaces/index.d.cts +0 -2
  287. package/dist/cjs/messagePackDecoderBuffer-CMG0LPbJ.d.cts +0 -12
  288. package/dist/cjs/messagePackDecoderBuffer-CMG0LPbJ.d.cts.map +0 -1
  289. package/dist/cjs/messagePackExtension-C_TQXlEn.d.cts.map +0 -1
  290. package/dist/cjs/messagePackTextDecoder-CtyB0N6j.d.cts +0 -7
  291. package/dist/cjs/messagePackTextDecoder-CtyB0N6j.d.cts.map +0 -1
  292. package/dist/cjs/messagePackTextEncoder-D7iCft_t.d.cts.map +0 -1
  293. package/dist/cjs/nodeTextEncoder-DJzFDBXd.d.cts.map +0 -1
  294. package/dist/cjs/timestampDate-BtBd4bAx.d.cts +0 -33
  295. package/dist/cjs/timestampDate-BtBd4bAx.d.cts.map +0 -1
  296. package/dist/cjs/types-BJie2edF.d.cts +0 -20
  297. package/dist/cjs/types-BJie2edF.d.cts.map +0 -1
  298. package/dist/cjs/types-DHnp4kMw.d.cts +0 -6
  299. package/dist/cjs/types-DHnp4kMw.d.cts.map +0 -1
  300. package/dist/cjs/untypedExtension-WQvArYoO.d.cts +0 -16
  301. package/dist/cjs/untypedExtension-WQvArYoO.d.cts.map +0 -1
  302. package/dist/cjs/untypedExtension.cjs +0 -13
  303. package/dist/cjs/untypedExtension.d.cts +0 -2
  304. package/dist/cjs/utils/fitInt64Bits.cjs +0 -6
  305. package/dist/cjs/utils/fitInt64Bits.d.cts +0 -2
  306. package/dist/cjs/utils/index.cjs +0 -11
  307. package/dist/cjs/utils/index.d.cts +0 -6
  308. package/dist/esm/benchmark/decoderDataTypesFactory.d.mts +0 -6
  309. package/dist/esm/benchmark/decoderDataTypesFactory.d.mts.map +0 -1
  310. package/dist/esm/benchmark/decoderDataTypesFactory.mjs +0 -39
  311. package/dist/esm/benchmark/decoderDataTypesFactory.mjs.map +0 -1
  312. package/dist/esm/bigInt-BvNVHUwj.d.mts +0 -35
  313. package/dist/esm/bigInt-BvNVHUwj.d.mts.map +0 -1
  314. package/dist/esm/bufferWithExtensions-Bikyeyt1.d.mts +0 -12
  315. package/dist/esm/bufferWithExtensions-Bikyeyt1.d.mts.map +0 -1
  316. package/dist/esm/decoder/decoderBuffer.d.mts +0 -2
  317. package/dist/esm/decoder/decoderBuffer.mjs +0 -241
  318. package/dist/esm/decoder/decoderBuffer.mjs.map +0 -1
  319. package/dist/esm/decoder/interfaces/messagePackDecoderBuffer.d.mts +0 -2
  320. package/dist/esm/decoder-DEzsJjYj.d.mts +0 -15
  321. package/dist/esm/decoder-DEzsJjYj.d.mts.map +0 -1
  322. package/dist/esm/decoderBuffer-BxJJdy5k.d.mts +0 -22
  323. package/dist/esm/decoderBuffer-BxJJdy5k.d.mts.map +0 -1
  324. package/dist/esm/defaultTextDecoder-B6a1HH2u.d.mts +0 -10
  325. package/dist/esm/defaultTextDecoder-B6a1HH2u.d.mts.map +0 -1
  326. package/dist/esm/encoder/encoderBuffer.d.mts +0 -2
  327. package/dist/esm/encoder/encoderBuffer.mjs +0 -604
  328. package/dist/esm/encoder/encoderBuffer.mjs.map +0 -1
  329. package/dist/esm/encoder/interfaces/messagePackEncoderBuffer.d.mts +0 -2
  330. package/dist/esm/encoder-CQfcjnAe.d.mts +0 -23
  331. package/dist/esm/encoder-CQfcjnAe.d.mts.map +0 -1
  332. package/dist/esm/encoderBuffer-DEy8CuWQ.d.mts.map +0 -1
  333. package/dist/esm/extensions/bigint/bigInt.d.mts +0 -2
  334. package/dist/esm/extensions/bigint/bigInt.mjs +0 -56
  335. package/dist/esm/extensions/bigint/bigInt.mjs.map +0 -1
  336. package/dist/esm/extensions/bigint/index.d.mts +0 -3
  337. package/dist/esm/extensions/bigint/index.mjs +0 -2
  338. package/dist/esm/extensions/interfaces/index.d.mts +0 -3
  339. package/dist/esm/fitIn16Bits-D9lga-sP.d.mts +0 -5
  340. package/dist/esm/fitIn16Bits-D9lga-sP.d.mts.map +0 -1
  341. package/dist/esm/fitIn32Bits-BrGIMOff.d.mts +0 -5
  342. package/dist/esm/fitIn32Bits-BrGIMOff.d.mts.map +0 -1
  343. package/dist/esm/fitIn7Bits-BVHyKXCg.d.mts +0 -5
  344. package/dist/esm/fitIn7Bits-BVHyKXCg.d.mts.map +0 -1
  345. package/dist/esm/fitIn8Bits-DQnQIhdh.d.mts +0 -5
  346. package/dist/esm/fitIn8Bits-DQnQIhdh.d.mts.map +0 -1
  347. package/dist/esm/fitInt64Bits-CY7lVKne.d.mts +0 -5
  348. package/dist/esm/fitInt64Bits-CY7lVKne.d.mts.map +0 -1
  349. package/dist/esm/interfaces/index.d.mts +0 -2
  350. package/dist/esm/messagePackDecoderBuffer-CGyYSweZ.d.mts +0 -12
  351. package/dist/esm/messagePackDecoderBuffer-CGyYSweZ.d.mts.map +0 -1
  352. package/dist/esm/messagePackExtension-5TI02KG6.d.mts.map +0 -1
  353. package/dist/esm/messagePackTextDecoder-CtyB0N6j.d.mts +0 -7
  354. package/dist/esm/messagePackTextDecoder-CtyB0N6j.d.mts.map +0 -1
  355. package/dist/esm/messagePackTextEncoder-D7iCft_t.d.mts.map +0 -1
  356. package/dist/esm/nodeTextEncoder-CegSnA6z.d.mts.map +0 -1
  357. package/dist/esm/timestampDate-C1UzHhZL.d.mts +0 -33
  358. package/dist/esm/timestampDate-C1UzHhZL.d.mts.map +0 -1
  359. package/dist/esm/types-BJie2edF.d.mts +0 -20
  360. package/dist/esm/types-BJie2edF.d.mts.map +0 -1
  361. package/dist/esm/types-DoBZbRkk.d.mts +0 -6
  362. package/dist/esm/types-DoBZbRkk.d.mts.map +0 -1
  363. package/dist/esm/untypedExtension-6bNMj-lY.d.mts +0 -16
  364. package/dist/esm/untypedExtension-6bNMj-lY.d.mts.map +0 -1
  365. package/dist/esm/untypedExtension.d.mts +0 -2
  366. package/dist/esm/untypedExtension.mjs +0 -15
  367. package/dist/esm/untypedExtension.mjs.map +0 -1
  368. package/dist/esm/utils/fitInt64Bits.d.mts +0 -2
  369. package/dist/esm/utils/fitInt64Bits.mjs +0 -8
  370. package/dist/esm/utils/fitInt64Bits.mjs.map +0 -1
  371. package/dist/esm/utils/index.d.mts +0 -6
  372. package/dist/esm/utils/index.mjs +0 -6
  373. /package/dist/cjs/decoder/interfaces/{messagePackDecoderBuffer.cjs → messagePackDecoder.cjs} +0 -0
  374. /package/dist/cjs/encoder/interfaces/{messagePackEncoderBuffer.cjs → messagePackEncoder.cjs} +0 -0
  375. /package/dist/cjs/extensions/{interfaces/index.cjs → error/types.cjs} +0 -0
  376. /package/dist/cjs/{interfaces/index.cjs → extensions/interfaces/messagePackBuiltInExtension.cjs} +0 -0
  377. /package/dist/esm/decoder/interfaces/{messagePackDecoderBuffer.mjs → messagePackDecoder.mjs} +0 -0
  378. /package/dist/esm/encoder/interfaces/{messagePackEncoderBuffer.mjs → messagePackEncoder.mjs} +0 -0
  379. /package/dist/esm/extensions/{interfaces/index.mjs → error/types.mjs} +0 -0
  380. /package/dist/esm/{interfaces/index.mjs → extensions/interfaces/messagePackBuiltInExtension.mjs} +0 -0
@@ -1,40 +1,704 @@
1
- import EncoderBuffer from "./encoderBuffer.mjs";
1
+ import Symbols from "../symbols.mjs";
2
+ import BufferWithExtensions from "../bufferWithExtensions.mjs";
3
+ import { INT64_MIN, UINT32_MAX, UINT64_MAX } from "../constants.mjs";
4
+ import defaultNewBufferFn from "../defaultNewBufferFn.mjs";
5
+ import fitIn7Bits from "../utils/fitIn7Bits.mjs";
6
+ import fitIn8Bits from "../utils/fitIn8Bits.mjs";
7
+ import fitIn16Bits from "../utils/fitIn16Bits.mjs";
8
+ import fitIn32Bits from "../utils/fitIn32Bits.mjs";
9
+ import DefaultTextEncoder from "./textEncoders/defaultTextEncoder.mjs";
2
10
  //#region src/encoder/encoder.ts
3
- /**
4
- * The `Encoder` class is responsible for encoding JavaScript values into the
5
- * MessagePack format.
6
- *
7
- * This class is just a wrapper around the buffer, which does the actual
8
- * encoding. The buffer is responsible for managing the encoding process and
9
- * handling extensions.
10
- */
11
- var Encoder = class {
11
+ const BIGINT_MASK = 18446744073709551615n;
12
+ var Encoder = class Encoder extends BufferWithExtensions {
13
+ /**
14
+ * Shared buffer is used to encode strings, to avoid allocating a new buffer
15
+ * for each string. The shared buffer is resized if the string is larger than
16
+ * the current size of the shared buffer. This helps to improve performance by
17
+ * reducing memory allocations and garbage collection overhead.
18
+ */
19
+ sharedBuffer;
20
+ extensionsByConstructors = /* @__PURE__ */ new Map();
21
+ builtInExtensionsByConstructors = /* @__PURE__ */ new Map();
22
+ /** The current offset in the buffer where the next write operation will occur. */
23
+ offset;
24
+ /**
25
+ * Determines whether the keys of a map should be sorted before encoding.
26
+ * Sorting keys can be useful for ensuring consistent serialization of
27
+ * objects, which is important for tasks like hashing or comparing serialized
28
+ * data.
29
+ */
30
+ sortKeys;
31
+ /**
32
+ * If true, forces the encoder to use 32-bit floating point representation for
33
+ * numbers, even if they could be represented as 64-bit floats. This can be
34
+ * useful for reducing the size of the encoded data when high precision is not
35
+ * required. However, it may lead to loss of precision for very large or very
36
+ * small numbers.
37
+ */
38
+ forceFloat32;
39
+ /**
40
+ * The initial size of the main buffer. This determines how much memory is
41
+ * allocated for the buffer when the encoder is first created. If the buffer
42
+ * needs to grow beyond this size, it will be reallocated with a larger size.
43
+ */
44
+ initialBufferSize;
45
+ /**
46
+ * The initial size of the shared buffer used for encoding strings. This
47
+ * determines how much memory is allocated for the shared buffer when the
48
+ * encoder is first created. If the shared buffer needs to grow beyond this
49
+ * size, it will be reallocated with a larger size.
50
+ */
51
+ initialSharedBufferSize;
52
+ /**
53
+ * A function that creates a new buffer of the specified size. This function
54
+ * is used to allocate new buffers when the current buffer is not large enough
55
+ * to accommodate the data being written. The function should return a new
56
+ * instance of TBuffer with the specified size.
57
+ */
58
+ bufferFactory;
59
+ textEncoder;
12
60
  buffer;
61
+ view;
62
+ /**
63
+ * The extension encoder is used to encode extension types. It is a separate
64
+ * buffer from the main buffer, and is used to encode the extension data
65
+ * before writing it to the main buffer. This allows for efficient encoding of
66
+ * extension types, as the extension data can be encoded in a separate buffer
67
+ * and then written to the main buffer in a single operation.
68
+ *
69
+ * The extension buffer must be resized using ensureCapacity before writing to
70
+ * it, to ensure that there is enough space for the extension data.
71
+ */
72
+ #extensionEncoder;
13
73
  constructor(options) {
14
- this.buffer = new EncoderBuffer(options);
15
- }
16
- encode(value) {
17
- const { buffer } = this;
18
- buffer.write(value);
19
- return this.buffer.flush();
74
+ super(options);
75
+ this.offset = 0;
76
+ this.textEncoder = options?.textEncoder ?? new DefaultTextEncoder();
77
+ this.initialBufferSize = options?.initialBufferSize ?? 1024;
78
+ this.initialSharedBufferSize = options?.initialSharedBufferSize ?? 1024;
79
+ this.bufferFactory = options?.bufferFactory ?? defaultNewBufferFn;
80
+ this.buffer = this.bufferFactory(this.initialBufferSize);
81
+ this.sharedBuffer = this.bufferFactory(this.initialSharedBufferSize);
82
+ this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);
83
+ this.sortKeys = options?.sortKeys ?? false;
84
+ this.forceFloat32 = options?.forceFloat32 ?? false;
85
+ if (this.errorExtension) for (const constructor of this.errorExtension.constructors) this.builtInExtensionsByConstructors.set(constructor, this.errorExtension);
86
+ if (this.timestampDateExtension) for (const constructor of this.timestampDateExtension.constructors) this.builtInExtensionsByConstructors.set(constructor, this.timestampDateExtension);
20
87
  }
21
88
  addExtension(extension) {
22
- this.buffer.addExtension(extension);
89
+ super.addExtension(extension);
90
+ if (Array.isArray(extension.constructors)) for (const constructor of extension.constructors) this.extensionsByConstructors.set(constructor, extension);
91
+ else this.extensionsByConstructors.set(extension.constructors, extension);
92
+ if (this.#extensionEncoder) this.#extensionEncoder.addExtension(extension);
93
+ return this;
94
+ }
95
+ getExtensionEncoder() {
96
+ if (!this.#extensionEncoder) {
97
+ const extensionEncoder = new Encoder({
98
+ bufferFactory: this.bufferFactory,
99
+ extensions: {
100
+ bigInt: this.bigIntExtension ?? false,
101
+ error: this.errorExtension ?? false,
102
+ timestampDate: this.timestampDateExtension ?? false
103
+ },
104
+ forceFloat32: this.forceFloat32,
105
+ initialBufferSize: this.initialBufferSize,
106
+ initialSharedBufferSize: this.initialSharedBufferSize,
107
+ sortKeys: this.sortKeys,
108
+ textEncoder: this.textEncoder
109
+ });
110
+ for (const extension of this.extensions.values()) extensionEncoder.addExtension(extension);
111
+ this.#extensionEncoder = extensionEncoder;
112
+ }
113
+ return this.#extensionEncoder;
114
+ }
115
+ resizeBuffer(newSize) {
116
+ const newBuffer = this.bufferFactory(newSize);
117
+ newBuffer.set(this.buffer);
118
+ this.buffer = newBuffer;
119
+ this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);
120
+ return this;
121
+ }
122
+ ensureCapacity(sizeToWrite) {
123
+ const required = this.offset + sizeToWrite;
124
+ if (this.buffer.byteLength < required) this.resizeBuffer(required * 2);
125
+ return this;
126
+ }
127
+ resetBuffer() {
128
+ this.offset = 0;
129
+ return this;
130
+ }
131
+ flush() {
132
+ const buffer = this.buffer.subarray(0, this.offset);
133
+ this.resetBuffer();
134
+ return buffer;
135
+ }
136
+ writePositiveFixInt(value) {
137
+ this.writeUint8(value);
138
+ return this;
139
+ }
140
+ writeNegativeFixInt(value) {
141
+ this.buffer[this.offset++] = value + 256;
142
+ return this;
143
+ }
144
+ writeBin(bytes) {
145
+ this.buffer.set(bytes, this.offset);
146
+ this.offset += bytes.length;
147
+ return this;
148
+ }
149
+ writeFloat32(value) {
150
+ this.view.setFloat32(this.offset, value);
151
+ this.offset += 4;
152
+ return this;
153
+ }
154
+ writeFloat64(value) {
155
+ this.view.setFloat64(this.offset, value);
156
+ this.offset += 8;
157
+ return this;
158
+ }
159
+ writeUint8(value) {
160
+ this.buffer[this.offset++] = value;
161
+ return this;
162
+ }
163
+ writeUint16(value) {
164
+ this.view.setUint16(this.offset, value);
165
+ this.offset += 2;
166
+ return this;
167
+ }
168
+ writeUint32(value) {
169
+ this.view.setUint32(this.offset, value);
170
+ this.offset += 4;
171
+ return this;
172
+ }
173
+ writeUint64(value) {
174
+ const high = value / 4294967296;
175
+ const low = value;
176
+ this.view.setUint32(this.offset, high);
177
+ this.offset += 4;
178
+ this.view.setUint32(this.offset, low);
179
+ this.offset += 4;
180
+ return this;
181
+ }
182
+ writeInt8(value) {
183
+ this.view.setInt8(this.offset++, value & 255);
184
+ return this;
185
+ }
186
+ writeInt16(value) {
187
+ this.view.setInt16(this.offset, value);
188
+ this.offset += 2;
189
+ return this;
190
+ }
191
+ writeInt32(value) {
192
+ this.view.setInt32(this.offset, value);
193
+ this.offset += 4;
194
+ return this;
195
+ }
196
+ writeInt64(value) {
197
+ const high = Math.floor(value / 4294967296);
198
+ const low = value;
199
+ this.view.setInt32(this.offset, high);
200
+ this.offset += 4;
201
+ this.view.setInt32(this.offset, low);
202
+ this.offset += 4;
203
+ return this;
204
+ }
205
+ writeStr(value) {
206
+ this.offset += this.textEncoder.writeBytes(value, this.buffer);
207
+ return this;
208
+ }
209
+ writeNilSymbol() {
210
+ this.buffer[this.offset++] = Symbols.NIL;
211
+ return this;
212
+ }
213
+ writeFalseSymbol() {
214
+ this.buffer[this.offset++] = Symbols.FALSE;
215
+ return this;
216
+ }
217
+ writeTrueSymbol() {
218
+ this.buffer[this.offset++] = Symbols.TRUE;
219
+ return this;
220
+ }
221
+ writeFixMapSymbol(keysSize) {
222
+ this.buffer[this.offset++] = Symbols.FIXMAP_START | keysSize;
223
+ return this;
224
+ }
225
+ writeFixArraySymbol(arraySize) {
226
+ this.buffer[this.offset++] = Symbols.FIXARRAY_START | arraySize;
227
+ return this;
228
+ }
229
+ writeFixStrSymbol(byteLength) {
230
+ this.buffer[this.offset++] = Symbols.FIXSTR_START | byteLength;
231
+ return this;
232
+ }
233
+ writeBin8Symbol(size) {
234
+ this.buffer[this.offset++] = Symbols.BIN8;
235
+ this.buffer[this.offset++] = size;
236
+ return this;
237
+ }
238
+ writeBin16Symbol(size) {
239
+ this.buffer[this.offset++] = Symbols.BIN16;
240
+ this.view.setUint16(this.offset, size);
241
+ this.offset += 2;
242
+ return this;
243
+ }
244
+ writeBin32Symbol(size) {
245
+ this.buffer[this.offset++] = Symbols.BIN32;
246
+ this.view.setUint32(this.offset, size);
247
+ this.offset += 4;
248
+ return this;
249
+ }
250
+ writeFloat32Symbol() {
251
+ this.buffer[this.offset++] = Symbols.FLOAT32;
252
+ return this;
253
+ }
254
+ writeFloat64Symbol() {
255
+ this.buffer[this.offset++] = Symbols.FLOAT64;
256
+ return this;
257
+ }
258
+ writeUint8Symbol() {
259
+ this.buffer[this.offset++] = Symbols.UINT8;
260
+ return this;
261
+ }
262
+ writeUint16Symbol() {
263
+ this.buffer[this.offset++] = Symbols.UINT16;
23
264
  return this;
24
265
  }
25
- addInternalExtension(extension) {
26
- this.buffer.addInternalExtension(extension);
266
+ writeUint32Symbol() {
267
+ this.buffer[this.offset++] = Symbols.UINT32;
27
268
  return this;
28
269
  }
29
- addExtensionType(type, extension) {
30
- this.buffer.addExtension({
31
- type,
32
- ...extension
33
- });
270
+ writeUint64Symbol() {
271
+ this.buffer[this.offset++] = Symbols.UINT64;
34
272
  return this;
35
273
  }
36
- fetchExtension(type) {
37
- return this.buffer.fetchExtension(type);
274
+ writeInt8Symbol() {
275
+ this.buffer[this.offset++] = Symbols.INT8;
276
+ return this;
277
+ }
278
+ writeInt16Symbol() {
279
+ this.buffer[this.offset++] = Symbols.INT16;
280
+ return this;
281
+ }
282
+ writeInt32Symbol() {
283
+ this.buffer[this.offset++] = Symbols.INT32;
284
+ return this;
285
+ }
286
+ writeInt64Symbol() {
287
+ this.buffer[this.offset++] = Symbols.INT64;
288
+ return this;
289
+ }
290
+ writeStr8Symbol(size) {
291
+ this.buffer[this.offset++] = Symbols.STR8;
292
+ this.buffer[this.offset++] = size;
293
+ return this;
294
+ }
295
+ writeStr16Symbol(size) {
296
+ this.buffer[this.offset++] = Symbols.STR16;
297
+ this.view.setUint16(this.offset, size);
298
+ this.offset += 2;
299
+ return this;
300
+ }
301
+ writeStr32Symbol(size) {
302
+ this.buffer[this.offset++] = Symbols.STR32;
303
+ this.view.setUint32(this.offset, size);
304
+ this.offset += 4;
305
+ return this;
306
+ }
307
+ writeArray16Symbol(size) {
308
+ this.buffer[this.offset++] = Symbols.ARRAY16;
309
+ this.view.setUint16(this.offset, size);
310
+ this.offset += 2;
311
+ return this;
312
+ }
313
+ writeArray32Symbol(size) {
314
+ this.buffer[this.offset++] = Symbols.ARRAY32;
315
+ this.view.setUint32(this.offset, size);
316
+ this.offset += 4;
317
+ return this;
318
+ }
319
+ writeMap16Symbol(size) {
320
+ this.buffer[this.offset++] = Symbols.MAP16;
321
+ this.view.setUint16(this.offset, size);
322
+ this.offset += 2;
323
+ return this;
324
+ }
325
+ writeMap32Symbol(size) {
326
+ this.buffer[this.offset++] = Symbols.MAP32;
327
+ this.view.setUint32(this.offset, size);
328
+ this.offset += 4;
329
+ return this;
330
+ }
331
+ writeFixExt1Symbol(type) {
332
+ this.buffer[this.offset++] = Symbols.FIXEXT1;
333
+ this.buffer[this.offset++] = type;
334
+ return this;
335
+ }
336
+ writeFixExt2Symbol(type) {
337
+ this.buffer[this.offset++] = Symbols.FIXEXT2;
338
+ this.buffer[this.offset++] = type;
339
+ return this;
340
+ }
341
+ writeFixExt4Symbol(type) {
342
+ this.buffer[this.offset++] = Symbols.FIXEXT4;
343
+ this.buffer[this.offset++] = type;
344
+ return this;
345
+ }
346
+ writeFixExt8Symbol(type) {
347
+ this.buffer[this.offset++] = Symbols.FIXEXT8;
348
+ this.buffer[this.offset++] = type;
349
+ return this;
350
+ }
351
+ writeFixExt16Symbol(type) {
352
+ this.buffer[this.offset++] = Symbols.FIXEXT16;
353
+ this.buffer[this.offset++] = type;
354
+ return this;
355
+ }
356
+ writeExt8Symbol(type, size) {
357
+ this.buffer[this.offset++] = Symbols.EXT8;
358
+ this.buffer[this.offset++] = size;
359
+ this.buffer[this.offset++] = type;
360
+ return this;
361
+ }
362
+ writeExt16Symbol(type, size) {
363
+ this.buffer[this.offset++] = Symbols.EXT16;
364
+ this.view.setUint16(this.offset, size);
365
+ this.offset += 2;
366
+ this.buffer[this.offset++] = type;
367
+ return this;
368
+ }
369
+ writeExt32Symbol(type, size) {
370
+ this.buffer[this.offset++] = Symbols.EXT32;
371
+ this.view.setUint32(this.offset, size);
372
+ this.offset += 4;
373
+ this.buffer[this.offset++] = type;
374
+ return this;
375
+ }
376
+ writeString(value) {
377
+ const valueLength = value.length;
378
+ const requiredSize = value.length * 4;
379
+ if (valueLength < 64) {
380
+ this.ensureCapacity(1 + requiredSize);
381
+ const initialoffset = this.offset;
382
+ const byteLengthoffset = this.offset++;
383
+ let totalBytes = 0;
384
+ let fitInFixStr = true;
385
+ let fitInStr8 = true;
386
+ let { offset } = this;
387
+ for (let index = 0; index < valueLength; index++) {
388
+ const code = value.charCodeAt(index);
389
+ if (code < 128) {
390
+ this.buffer[offset++] = code;
391
+ totalBytes++;
392
+ } else if (code < 2048) {
393
+ this.buffer[offset++] = 192 | code >> 6;
394
+ this.buffer[offset++] = 128 | code & 63;
395
+ totalBytes += 2;
396
+ } else if (code < 55296 || code >= 57344) {
397
+ this.buffer[offset++] = 224 | code >> 12;
398
+ this.buffer[offset++] = 128 | code >> 6 & 63;
399
+ this.buffer[offset++] = 128 | code & 63;
400
+ totalBytes += 3;
401
+ } else {
402
+ index++;
403
+ const nextCode = value.charCodeAt(index);
404
+ const surrogatePair = ((code & 1023) << 10 | nextCode & 1023) + 65536;
405
+ this.buffer[offset++] = 240 | surrogatePair >> 18;
406
+ this.buffer[offset++] = 128 | surrogatePair >> 12 & 63;
407
+ this.buffer[offset++] = 128 | surrogatePair >> 6 & 63;
408
+ this.buffer[offset++] = 128 | surrogatePair & 63;
409
+ totalBytes += 4;
410
+ }
411
+ if (totalBytes > 31) fitInFixStr = false;
412
+ else if (totalBytes > 255) {
413
+ fitInStr8 = false;
414
+ break;
415
+ }
416
+ }
417
+ if (fitInFixStr) {
418
+ this.buffer[byteLengthoffset] = Symbols.FIXSTR_START | totalBytes;
419
+ this.offset += totalBytes;
420
+ return this;
421
+ } else if (fitInStr8) {
422
+ this.buffer[byteLengthoffset] = Symbols.STR8;
423
+ const totalBytesPosition = byteLengthoffset + 1;
424
+ this.buffer.copyWithin(totalBytesPosition + 1, totalBytesPosition, offset);
425
+ this.buffer[totalBytesPosition] = totalBytes;
426
+ this.offset++;
427
+ this.offset += totalBytes;
428
+ return this;
429
+ }
430
+ this.offset = initialoffset;
431
+ }
432
+ if (this.sharedBuffer.byteLength < requiredSize) this.sharedBuffer = this.bufferFactory(requiredSize);
433
+ const sharedBuffer = this.sharedBuffer;
434
+ const byteLength = this.textEncoder.writeBytes(value, sharedBuffer);
435
+ if (fitIn8Bits(byteLength)) {
436
+ this.ensureCapacity(2 + byteLength);
437
+ this.writeStr8Symbol(byteLength);
438
+ } else if (fitIn16Bits(byteLength)) {
439
+ this.ensureCapacity(3 + byteLength);
440
+ this.writeStr16Symbol(byteLength);
441
+ } else {
442
+ this.ensureCapacity(5 + byteLength);
443
+ this.writeStr32Symbol(byteLength);
444
+ }
445
+ this.writeBin(sharedBuffer.subarray(0, byteLength));
446
+ return this;
447
+ }
448
+ writeSignedInteger(value) {
449
+ if (value > -33) {
450
+ this.ensureCapacity(1);
451
+ return this.writeNegativeFixInt(value);
452
+ } else if (value > -129) {
453
+ this.ensureCapacity(2);
454
+ this.writeInt8Symbol();
455
+ return this.writeInt8(value);
456
+ } else if (value > -32769) {
457
+ this.ensureCapacity(3);
458
+ this.writeInt16Symbol();
459
+ return this.writeInt16(value);
460
+ } else if (value > -2147483649) {
461
+ this.ensureCapacity(5);
462
+ this.writeInt32Symbol();
463
+ return this.writeInt32(value);
464
+ } else if (value >= INT64_MIN) {
465
+ this.ensureCapacity(9);
466
+ this.writeInt64Symbol();
467
+ return this.writeInt64(value);
468
+ }
469
+ throw new Error(`Integer too small to encode: ${value}. Consider using BigIntExtension.`);
470
+ }
471
+ writeUnsignedInteger(value) {
472
+ if (fitIn7Bits(value)) {
473
+ this.ensureCapacity(1);
474
+ return this.writePositiveFixInt(value);
475
+ }
476
+ if (fitIn8Bits(value)) {
477
+ this.ensureCapacity(2);
478
+ this.writeUint8Symbol();
479
+ return this.writeUint8(value);
480
+ }
481
+ if (fitIn16Bits(value)) {
482
+ this.ensureCapacity(3);
483
+ this.writeUint16Symbol();
484
+ return this.writeUint16(value);
485
+ }
486
+ if (fitIn32Bits(value)) {
487
+ this.ensureCapacity(5);
488
+ this.writeUint32Symbol();
489
+ return this.writeUint32(value);
490
+ }
491
+ if (value <= UINT64_MAX) {
492
+ this.ensureCapacity(9);
493
+ this.writeUint64Symbol();
494
+ return this.writeUint64(value);
495
+ }
496
+ throw new Error(`Integer too large to encode: ${value}. Consider using BigIntExtension.`);
497
+ }
498
+ writeFloat(value) {
499
+ if (this.forceFloat32) {
500
+ this.ensureCapacity(5);
501
+ this.writeFloat32Symbol();
502
+ return this.writeFloat32(value);
503
+ }
504
+ this.ensureCapacity(9);
505
+ this.writeFloat64Symbol();
506
+ return this.writeFloat64(value);
507
+ }
508
+ writeNumber(value) {
509
+ if (Number.isInteger(value)) {
510
+ if (value < 0) return this.writeSignedInteger(value);
511
+ return this.writeUnsignedInteger(value);
512
+ }
513
+ return this.writeFloat(value);
514
+ }
515
+ openMap(keysLength) {
516
+ const requiredSize = keysLength * 4;
517
+ if (keysLength < 16) {
518
+ this.ensureCapacity(requiredSize + 1);
519
+ this.writeFixMapSymbol(keysLength);
520
+ } else if (fitIn16Bits(keysLength)) {
521
+ this.ensureCapacity(requiredSize + 3);
522
+ this.writeMap16Symbol(keysLength);
523
+ } else if (fitIn32Bits(keysLength)) {
524
+ this.ensureCapacity(requiredSize + 5);
525
+ this.writeMap32Symbol(keysLength);
526
+ } else throw new Error(`Map size ${keysLength} exceeds maximum allowed size of ${UINT32_MAX}`);
527
+ return this;
528
+ }
529
+ writeMap(value) {
530
+ const keys = Object.keys(value);
531
+ if (this.sortKeys) keys.sort();
532
+ const keysLength = keys.length;
533
+ this.openMap(keysLength);
534
+ for (const key of keys) {
535
+ this.writeString(key);
536
+ this.write(value[key]);
537
+ }
538
+ return this;
539
+ }
540
+ openArray(length) {
541
+ const requiredSize = length * 4;
542
+ if (length < 16) {
543
+ this.ensureCapacity(requiredSize + 1);
544
+ this.writeFixArraySymbol(length);
545
+ } else if (fitIn16Bits(length)) {
546
+ this.ensureCapacity(requiredSize + 3);
547
+ this.writeArray16Symbol(length);
548
+ } else if (fitIn32Bits(length)) {
549
+ this.ensureCapacity(requiredSize + 5);
550
+ this.writeArray32Symbol(length);
551
+ } else throw new Error(`Array size ${length} exceeds maximum allowed size of ${UINT32_MAX}`);
552
+ return this;
553
+ }
554
+ writeArray(value) {
555
+ const length = value.length;
556
+ this.openArray(length);
557
+ for (let index = 0; index < length; ++index) this.write(value[index]);
558
+ return this;
559
+ }
560
+ writeUint8Array(value) {
561
+ if (fitIn8Bits(value.length)) {
562
+ this.ensureCapacity(2 + value.length);
563
+ this.writeBin8Symbol(value.length);
564
+ } else if (fitIn16Bits(value.length)) {
565
+ this.ensureCapacity(3 + value.length);
566
+ this.writeBin16Symbol(value.length);
567
+ } else if (fitIn32Bits(value.length)) {
568
+ this.ensureCapacity(5 + value.length);
569
+ this.writeBin32Symbol(value.length);
570
+ } else throw new Error(`Uint8Array too large to encode: ${value.length}`);
571
+ return this.writeBin(value);
572
+ }
573
+ writeExtensionSymbol(type, size) {
574
+ if (size === 1) {
575
+ this.ensureCapacity(3);
576
+ this.writeFixExt1Symbol(type);
577
+ } else if (size === 2) {
578
+ this.ensureCapacity(4);
579
+ this.writeFixExt2Symbol(type);
580
+ } else if (size === 4) {
581
+ this.ensureCapacity(6);
582
+ this.writeFixExt4Symbol(type);
583
+ } else if (size === 8) {
584
+ this.ensureCapacity(10);
585
+ this.writeFixExt8Symbol(type);
586
+ } else if (size === 16) {
587
+ this.ensureCapacity(18);
588
+ this.writeFixExt16Symbol(type);
589
+ } else if (fitIn8Bits(size)) {
590
+ this.ensureCapacity(3 + size);
591
+ this.writeExt8Symbol(type, size);
592
+ } else if (fitIn16Bits(size)) {
593
+ this.ensureCapacity(4 + size);
594
+ this.writeExt16Symbol(type, size);
595
+ } else if (fitIn32Bits(size)) {
596
+ this.ensureCapacity(6 + size);
597
+ this.writeExt32Symbol(type, size);
598
+ } else throw new Error(`Extension data too large to encode: ${size} bytes`);
599
+ return this;
600
+ }
601
+ writeExtension(extension, extensionEncoder) {
602
+ const writtenBytes = extensionEncoder.offset;
603
+ this.writeExtensionSymbol(extension.type, writtenBytes);
604
+ this.buffer.set(extensionEncoder.buffer.subarray(0, writtenBytes), this.offset);
605
+ this.offset += writtenBytes;
606
+ return this;
607
+ }
608
+ writeBigInt(value) {
609
+ if (!this.bigIntExtension) throw new Error(`BigInt extension is disabled, cannot encode BigInt.`);
610
+ let magnitude;
611
+ if (value < 0n) magnitude = (-value << 1n) - 1n;
612
+ else magnitude = value << 1n;
613
+ let sizeOffset;
614
+ let size = 0;
615
+ if (magnitude >> 64n === 0n) {
616
+ this.ensureCapacity(2);
617
+ this.writeFixExt8Symbol(this.bigIntExtension.type);
618
+ } else if (magnitude >> 128n === 0n) {
619
+ this.ensureCapacity(2);
620
+ this.writeFixExt16Symbol(this.bigIntExtension.type);
621
+ } else if (magnitude >> 1984n === 0n) {
622
+ this.ensureCapacity(3);
623
+ this.buffer[this.offset++] = Symbols.EXT8;
624
+ sizeOffset = this.offset++;
625
+ this.buffer[this.offset++] = this.bigIntExtension.type;
626
+ } else if (magnitude >> 524224n === 0n) {
627
+ this.ensureCapacity(4);
628
+ this.buffer[this.offset++] = Symbols.EXT16;
629
+ sizeOffset = this.offset;
630
+ this.offset += 2;
631
+ this.buffer[this.offset++] = this.bigIntExtension.type;
632
+ } else {
633
+ this.ensureCapacity(6);
634
+ this.buffer[this.offset++] = Symbols.EXT32;
635
+ sizeOffset = this.offset;
636
+ this.offset += 4;
637
+ this.buffer[this.offset++] = this.bigIntExtension.type;
638
+ }
639
+ if (magnitude === 0n) {
640
+ this.ensureCapacity(8);
641
+ this.view.setBigUint64(this.offset, 0n, false);
642
+ this.offset += 8;
643
+ return this;
644
+ }
645
+ while (magnitude > 0n) {
646
+ this.ensureCapacity(8);
647
+ this.view.setBigUint64(this.offset, magnitude & BIGINT_MASK, false);
648
+ this.offset += 8;
649
+ magnitude >>= 64n;
650
+ size += 8;
651
+ }
652
+ if (sizeOffset !== void 0) {
653
+ if (fitIn8Bits(size)) this.buffer[sizeOffset] = size;
654
+ else if (fitIn16Bits(size)) this.view.setUint16(sizeOffset, size, false);
655
+ else this.view.setUint32(sizeOffset, size, false);
656
+ }
657
+ return this;
658
+ }
659
+ writeError(error) {
660
+ if (!this.errorExtension) throw new Error(`Error extension is disabled, cannot encode Error.`);
661
+ this.errorExtension.encodeInto(error, this);
662
+ return this;
663
+ }
664
+ writeObject(value) {
665
+ if (Array.isArray(value)) return this.writeArray(value);
666
+ if (value instanceof Uint8Array) return this.writeUint8Array(value);
667
+ const valueConstructor = value.constructor;
668
+ const builtInExtension = this.builtInExtensionsByConstructors.get(valueConstructor);
669
+ if (builtInExtension) {
670
+ builtInExtension.encodeInto(value, this);
671
+ return this;
672
+ }
673
+ const extension = this.extensionsByConstructors.get(valueConstructor);
674
+ if (extension) {
675
+ const extensionEncoder = this.getExtensionEncoder();
676
+ extensionEncoder.resetBuffer();
677
+ extension.encode(value, extensionEncoder);
678
+ if (extensionEncoder.offset > 0) return this.writeExtension(extension, extensionEncoder);
679
+ }
680
+ return this.writeMap(value);
681
+ }
682
+ write(value) {
683
+ switch (typeof value) {
684
+ case "number": return this.writeNumber(value);
685
+ case "string": return this.writeString(value);
686
+ case "boolean":
687
+ this.ensureCapacity(1);
688
+ if (value) return this.writeTrueSymbol();
689
+ return this.writeFalseSymbol();
690
+ case "undefined":
691
+ this.ensureCapacity(1);
692
+ return this.writeNilSymbol();
693
+ case "bigint": return this.writeBigInt(value);
694
+ case "object":
695
+ if (value === null) {
696
+ this.ensureCapacity(1);
697
+ return this.writeNilSymbol();
698
+ }
699
+ return this.writeObject(value);
700
+ default: throw new TypeError(`Unsupported type for encoding: ${typeof value}. Consider using an extension.`);
701
+ }
38
702
  }
39
703
  };
40
704
  //#endregion