zeed 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/AGENTS.md +50 -211
  2. package/README.md +16 -0
  3. package/dist/_experiments/bitcask.cjs +243 -1
  4. package/dist/_experiments/bitcask.cjs.map +1 -1
  5. package/dist/_experiments/bitcask.mjs +230 -1
  6. package/dist/_experiments/bitcask.mjs.map +1 -1
  7. package/dist/bin-BAoS4qtm.mjs +593 -0
  8. package/dist/{bin-SPdenYkw.mjs.map → bin-BAoS4qtm.mjs.map} +1 -1
  9. package/dist/bin-Ddaz2lxM.cjs +862 -0
  10. package/dist/{bin-Ce3i6ABn.cjs.map → bin-Ddaz2lxM.cjs.map} +1 -1
  11. package/dist/browser/base64.cjs +14 -1
  12. package/dist/browser/base64.cjs.map +1 -1
  13. package/dist/browser/base64.mjs +12 -1
  14. package/dist/browser/base64.mjs.map +1 -1
  15. package/dist/browser/gravatar.cjs +186 -1
  16. package/dist/browser/gravatar.cjs.map +1 -1
  17. package/dist/browser/gravatar.mjs +184 -1
  18. package/dist/browser/gravatar.mjs.map +1 -1
  19. package/dist/browser/index.cjs +14 -1
  20. package/dist/browser/index.mjs +8 -1
  21. package/dist/browser/localstorage.cjs +46 -1
  22. package/dist/browser/localstorage.cjs.map +1 -1
  23. package/dist/browser/localstorage.mjs +45 -1
  24. package/dist/browser/localstorage.mjs.map +1 -1
  25. package/dist/browser/log/index.cjs +8 -1
  26. package/dist/browser/log/index.mjs +5 -1
  27. package/dist/browser/log/log-browser-factory.cjs +65 -1
  28. package/dist/browser/log/log-browser-factory.cjs.map +1 -1
  29. package/dist/browser/log/log-browser-factory.mjs +64 -1
  30. package/dist/browser/log/log-browser-factory.mjs.map +1 -1
  31. package/dist/browser/log/log-browser.cjs +72 -1
  32. package/dist/browser/log/log-browser.cjs.map +1 -1
  33. package/dist/browser/log/log-browser.mjs +71 -1
  34. package/dist/browser/log/log-browser.mjs.map +1 -1
  35. package/dist/browser/log/log-colors.cjs +11 -1
  36. package/dist/browser/log/log-colors.cjs.map +1 -1
  37. package/dist/browser/log/log-colors.mjs +9 -1
  38. package/dist/browser/log/log-colors.mjs.map +1 -1
  39. package/dist/browser/log/log-context-browser.cjs +25 -1
  40. package/dist/browser/log/log-context-browser.cjs.map +1 -1
  41. package/dist/browser/log/log-context-browser.mjs +23 -1
  42. package/dist/browser/log/log-context-browser.mjs.map +1 -1
  43. package/dist/chunk-DQk6qfdC.mjs +18 -0
  44. package/dist/chunk-uaV2rQ02.cjs +53 -0
  45. package/dist/common/assert.cjs +22 -1
  46. package/dist/common/assert.cjs.map +1 -1
  47. package/dist/common/assert.mjs +19 -1
  48. package/dist/common/assert.mjs.map +1 -1
  49. package/dist/common/bin/index.cjs +106 -1
  50. package/dist/common/bin/index.cjs.map +1 -1
  51. package/dist/common/bin/index.mjs +98 -1
  52. package/dist/common/bin/index.mjs.map +1 -1
  53. package/dist/common/bin/lib0/binary.cjs +146 -1
  54. package/dist/common/bin/lib0/binary.cjs.map +1 -1
  55. package/dist/common/bin/lib0/binary.mjs +80 -1
  56. package/dist/common/bin/lib0/binary.mjs.map +1 -1
  57. package/dist/common/bin/lib0/buffer.cjs +42 -1
  58. package/dist/common/bin/lib0/buffer.cjs.map +1 -1
  59. package/dist/common/bin/lib0/buffer.mjs +38 -1
  60. package/dist/common/bin/lib0/buffer.mjs.map +1 -1
  61. package/dist/common/bin/lib0/create.cjs +24 -1
  62. package/dist/common/bin/lib0/create.cjs.map +1 -1
  63. package/dist/common/bin/lib0/create.mjs +21 -1
  64. package/dist/common/bin/lib0/create.mjs.map +1 -1
  65. package/dist/common/bin/lib0/decoding.cjs +325 -1
  66. package/dist/common/bin/lib0/decoding.cjs.map +1 -1
  67. package/dist/common/bin/lib0/decoding.mjs +298 -1
  68. package/dist/common/bin/lib0/decoding.mjs.map +1 -1
  69. package/dist/common/bin/lib0/encoding.cjs +404 -1
  70. package/dist/common/bin/lib0/encoding.cjs.map +1 -1
  71. package/dist/common/bin/lib0/encoding.mjs +377 -1
  72. package/dist/common/bin/lib0/encoding.mjs.map +1 -1
  73. package/dist/common/bin/lib0/string.cjs +81 -1
  74. package/dist/common/bin/lib0/string.cjs.map +1 -1
  75. package/dist/common/bin/lib0/string.mjs +71 -1
  76. package/dist/common/bin/lib0/string.mjs.map +1 -1
  77. package/dist/common/crypto/aes-sealed.cjs +34 -1
  78. package/dist/common/crypto/aes-sealed.cjs.map +1 -1
  79. package/dist/common/crypto/aes-sealed.mjs +32 -1
  80. package/dist/common/crypto/aes-sealed.mjs.map +1 -1
  81. package/dist/common/crypto/crypto.cjs +91 -1
  82. package/dist/common/crypto/crypto.cjs.map +1 -1
  83. package/dist/common/crypto/crypto.mjs +80 -1
  84. package/dist/common/crypto/crypto.mjs.map +1 -1
  85. package/dist/common/crypto/index.cjs +23 -1
  86. package/dist/common/crypto/index.mjs +5 -1
  87. package/dist/common/crypto/xaes.cjs +128 -1
  88. package/dist/common/crypto/xaes.cjs.map +1 -1
  89. package/dist/common/crypto/xaes.mjs +123 -1
  90. package/dist/common/crypto/xaes.mjs.map +1 -1
  91. package/dist/common/csv.cjs +49 -4
  92. package/dist/common/csv.cjs.map +1 -1
  93. package/dist/common/csv.mjs +46 -4
  94. package/dist/common/csv.mjs.map +1 -1
  95. package/dist/common/data/array.cjs +299 -1
  96. package/dist/common/data/array.cjs.map +1 -1
  97. package/dist/common/data/array.mjs +274 -1
  98. package/dist/common/data/array.mjs.map +1 -1
  99. package/dist/common/data/basex-secure.cjs +30 -1
  100. package/dist/common/data/basex-secure.mjs +3 -1
  101. package/dist/common/data/basex.cjs +163 -1
  102. package/dist/common/data/basex.cjs.map +1 -1
  103. package/dist/common/data/basex.mjs +152 -1
  104. package/dist/common/data/basex.mjs.map +1 -1
  105. package/dist/common/data/bin-types.mjs +1 -1
  106. package/dist/common/data/bin.cjs +21 -1
  107. package/dist/common/data/bin.mjs +3 -1
  108. package/dist/common/data/camelcase.cjs +27 -1
  109. package/dist/common/data/camelcase.cjs.map +1 -1
  110. package/dist/common/data/camelcase.mjs +22 -1
  111. package/dist/common/data/camelcase.mjs.map +1 -1
  112. package/dist/common/data/convert.cjs +104 -1
  113. package/dist/common/data/convert.cjs.map +1 -1
  114. package/dist/common/data/convert.mjs +88 -1
  115. package/dist/common/data/convert.mjs.map +1 -1
  116. package/dist/common/data/datauri.cjs +32 -1
  117. package/dist/common/data/datauri.cjs.map +1 -1
  118. package/dist/common/data/datauri.mjs +27 -1
  119. package/dist/common/data/datauri.mjs.map +1 -1
  120. package/dist/common/data/day-legacy.cjs +148 -1
  121. package/dist/common/data/day-legacy.cjs.map +1 -1
  122. package/dist/common/data/day-legacy.mjs +143 -1
  123. package/dist/common/data/day-legacy.mjs.map +1 -1
  124. package/dist/common/data/day.cjs +335 -1
  125. package/dist/common/data/day.cjs.map +1 -1
  126. package/dist/common/data/day.mjs +305 -1
  127. package/dist/common/data/day.mjs.map +1 -1
  128. package/dist/common/data/decimal.cjs +28 -1
  129. package/dist/common/data/decimal.cjs.map +1 -1
  130. package/dist/common/data/decimal.mjs +23 -1
  131. package/dist/common/data/decimal.mjs.map +1 -1
  132. package/dist/common/data/deep.cjs +57 -1
  133. package/dist/common/data/deep.cjs.map +1 -1
  134. package/dist/common/data/deep.mjs +54 -1
  135. package/dist/common/data/deep.mjs.map +1 -1
  136. package/dist/common/data/diff.cjs +62 -1
  137. package/dist/common/data/diff.cjs.map +1 -1
  138. package/dist/common/data/diff.mjs +60 -1
  139. package/dist/common/data/diff.mjs.map +1 -1
  140. package/dist/common/data/distributed.cjs +24 -1
  141. package/dist/common/data/distributed.cjs.map +1 -1
  142. package/dist/common/data/distributed.mjs +22 -1
  143. package/dist/common/data/distributed.mjs.map +1 -1
  144. package/dist/common/data/format.cjs +63 -1
  145. package/dist/common/data/format.cjs.map +1 -1
  146. package/dist/common/data/format.mjs +59 -1
  147. package/dist/common/data/format.mjs.map +1 -1
  148. package/dist/common/data/html.cjs +13 -1
  149. package/dist/common/data/html.cjs.map +1 -1
  150. package/dist/common/data/html.mjs +10 -1
  151. package/dist/common/data/html.mjs.map +1 -1
  152. package/dist/common/data/index.cjs +296 -1
  153. package/dist/common/data/index.mjs +37 -1
  154. package/dist/common/data/is.cjs +106 -1
  155. package/dist/common/data/is.cjs.map +1 -1
  156. package/dist/common/data/is.mjs +85 -1
  157. package/dist/common/data/is.mjs.map +1 -1
  158. package/dist/common/data/json.cjs +70 -1
  159. package/dist/common/data/json.cjs.map +1 -1
  160. package/dist/common/data/json.mjs +65 -1
  161. package/dist/common/data/json.mjs.map +1 -1
  162. package/dist/common/data/list.cjs +32 -1
  163. package/dist/common/data/list.cjs.map +1 -1
  164. package/dist/common/data/list.mjs +27 -1
  165. package/dist/common/data/list.mjs.map +1 -1
  166. package/dist/common/data/lru.mjs +1 -1
  167. package/dist/common/data/math.cjs +79 -1
  168. package/dist/common/data/math.cjs.map +1 -1
  169. package/dist/common/data/math.mjs +65 -1
  170. package/dist/common/data/math.mjs.map +1 -1
  171. package/dist/common/data/message.cjs +30 -1
  172. package/dist/common/data/message.cjs.map +1 -1
  173. package/dist/common/data/message.mjs +28 -1
  174. package/dist/common/data/message.mjs.map +1 -1
  175. package/dist/common/data/object-changes.cjs +66 -1
  176. package/dist/common/data/object-changes.cjs.map +1 -1
  177. package/dist/common/data/object-changes.mjs +63 -1
  178. package/dist/common/data/object-changes.mjs.map +1 -1
  179. package/dist/common/data/object.cjs +112 -1
  180. package/dist/common/data/object.cjs.map +1 -1
  181. package/dist/common/data/object.mjs +104 -1
  182. package/dist/common/data/object.mjs.map +1 -1
  183. package/dist/common/data/orderby.cjs +42 -1
  184. package/dist/common/data/orderby.cjs.map +1 -1
  185. package/dist/common/data/orderby.mjs +37 -1
  186. package/dist/common/data/orderby.mjs.map +1 -1
  187. package/dist/common/data/path.cjs +26 -1
  188. package/dist/common/data/path.cjs.map +1 -1
  189. package/dist/common/data/path.mjs +25 -1
  190. package/dist/common/data/path.mjs.map +1 -1
  191. package/dist/common/data/regexp.cjs +12 -1
  192. package/dist/common/data/regexp.cjs.map +1 -1
  193. package/dist/common/data/regexp.mjs +10 -1
  194. package/dist/common/data/regexp.mjs.map +1 -1
  195. package/dist/common/data/rounding.cjs +107 -1
  196. package/dist/common/data/rounding.cjs.map +1 -1
  197. package/dist/common/data/rounding.mjs +95 -1
  198. package/dist/common/data/rounding.mjs.map +1 -1
  199. package/dist/common/data/signal.cjs +39 -1
  200. package/dist/common/data/signal.cjs.map +1 -1
  201. package/dist/common/data/signal.mjs +38 -1
  202. package/dist/common/data/signal.mjs.map +1 -1
  203. package/dist/common/data/sortable.cjs +35 -1
  204. package/dist/common/data/sortable.cjs.map +1 -1
  205. package/dist/common/data/sortable.mjs +31 -1
  206. package/dist/common/data/sortable.mjs.map +1 -1
  207. package/dist/common/data/sorted.cjs +54 -1
  208. package/dist/common/data/sorted.cjs.map +1 -1
  209. package/dist/common/data/sorted.mjs +53 -1
  210. package/dist/common/data/sorted.mjs.map +1 -1
  211. package/dist/common/data/string-deburr.cjs +240 -1
  212. package/dist/common/data/string-deburr.cjs.map +1 -1
  213. package/dist/common/data/string-deburr.mjs +238 -1
  214. package/dist/common/data/string-deburr.mjs.map +1 -1
  215. package/dist/common/data/string-hash-fnv.cjs +69 -1
  216. package/dist/common/data/string-hash-fnv.cjs.map +1 -1
  217. package/dist/common/data/string-hash-fnv.mjs +67 -1
  218. package/dist/common/data/string-hash-fnv.mjs.map +1 -1
  219. package/dist/common/data/string-hash-pool.cjs +28 -1
  220. package/dist/common/data/string-hash-pool.cjs.map +1 -1
  221. package/dist/common/data/string-hash-pool.mjs +27 -1
  222. package/dist/common/data/string-hash-pool.mjs.map +1 -1
  223. package/dist/common/data/url.cjs +98 -2
  224. package/dist/common/data/url.cjs.map +1 -1
  225. package/dist/common/data/url.mjs +91 -2
  226. package/dist/common/data/url.mjs.map +1 -1
  227. package/dist/common/data/utils.cjs +118 -1
  228. package/dist/common/data/utils.cjs.map +1 -1
  229. package/dist/common/data/utils.mjs +107 -1
  230. package/dist/common/data/utils.mjs.map +1 -1
  231. package/dist/common/data/wordlist.cjs +531 -1
  232. package/dist/common/data/wordlist.cjs.map +1 -1
  233. package/dist/common/data/wordlist.mjs +529 -1
  234. package/dist/common/data/wordlist.mjs.map +1 -1
  235. package/dist/common/data/xrx.cjs +96 -1
  236. package/dist/common/data/xrx.cjs.map +1 -1
  237. package/dist/common/data/xrx.mjs +92 -1
  238. package/dist/common/data/xrx.mjs.map +1 -1
  239. package/dist/common/dispose-defer.cjs +133 -1
  240. package/dist/common/dispose-defer.cjs.map +1 -1
  241. package/dist/common/dispose-defer.mjs +130 -1
  242. package/dist/common/dispose-defer.mjs.map +1 -1
  243. package/dist/common/dispose-types.mjs +1 -1
  244. package/dist/common/dispose-utils.cjs +113 -1
  245. package/dist/common/dispose-utils.cjs.map +1 -1
  246. package/dist/common/dispose-utils.mjs +106 -1
  247. package/dist/common/dispose-utils.mjs.map +1 -1
  248. package/dist/common/exec/index.cjs +24 -1
  249. package/dist/common/exec/index.d.cts +1 -1
  250. package/dist/common/exec/index.d.mts +1 -1
  251. package/dist/common/exec/index.mjs +8 -1
  252. package/dist/common/exec/mutex.cjs +44 -1
  253. package/dist/common/exec/mutex.cjs.map +1 -1
  254. package/dist/common/exec/mutex.mjs +42 -1
  255. package/dist/common/exec/mutex.mjs.map +1 -1
  256. package/dist/common/exec/pool.cjs +181 -1
  257. package/dist/common/exec/pool.cjs.map +1 -1
  258. package/dist/common/exec/pool.d.cts +1 -1
  259. package/dist/common/exec/pool.d.mts +1 -1
  260. package/dist/common/exec/pool.mjs +180 -1
  261. package/dist/common/exec/pool.mjs.map +1 -1
  262. package/dist/common/exec/progress.cjs +149 -1
  263. package/dist/common/exec/progress.cjs.map +1 -1
  264. package/dist/common/exec/progress.d.cts +1 -1
  265. package/dist/common/exec/progress.d.mts +1 -1
  266. package/dist/common/exec/progress.mjs +148 -1
  267. package/dist/common/exec/progress.mjs.map +1 -1
  268. package/dist/common/exec/promise.cjs +113 -1
  269. package/dist/common/exec/promise.cjs.map +1 -1
  270. package/dist/common/exec/promise.mjs +103 -1
  271. package/dist/common/exec/promise.mjs.map +1 -1
  272. package/dist/common/exec/queue.cjs +125 -1
  273. package/dist/common/exec/queue.cjs.map +1 -1
  274. package/dist/common/exec/queue.d.cts +1 -1
  275. package/dist/common/exec/queue.d.mts +1 -1
  276. package/dist/common/exec/queue.mjs +124 -1
  277. package/dist/common/exec/queue.mjs.map +1 -1
  278. package/dist/common/exec/throttle-debounce.cjs +114 -1
  279. package/dist/common/exec/throttle-debounce.cjs.map +1 -1
  280. package/dist/common/exec/throttle-debounce.mjs +112 -1
  281. package/dist/common/exec/throttle-debounce.mjs.map +1 -1
  282. package/dist/common/global.cjs +22 -1
  283. package/dist/common/global.cjs.map +1 -1
  284. package/dist/common/global.mjs +19 -1
  285. package/dist/common/global.mjs.map +1 -1
  286. package/dist/common/index.cjs +559 -1
  287. package/dist/common/index.d.cts +1 -1
  288. package/dist/common/index.d.mts +1 -1
  289. package/dist/common/index.mjs +89 -1
  290. package/dist/common/localhost.cjs +16 -1
  291. package/dist/common/localhost.cjs.map +1 -1
  292. package/dist/common/localhost.mjs +14 -1
  293. package/dist/common/localhost.mjs.map +1 -1
  294. package/dist/common/log/index.cjs +34 -1
  295. package/dist/common/log/index.mjs +11 -1
  296. package/dist/common/log/log-base.cjs +40 -1
  297. package/dist/common/log/log-base.cjs.map +1 -1
  298. package/dist/common/log/log-base.mjs +31 -1
  299. package/dist/common/log/log-base.mjs.map +1 -1
  300. package/dist/common/log/log-colors.cjs +92 -1
  301. package/dist/common/log/log-colors.cjs.map +1 -1
  302. package/dist/common/log/log-colors.mjs +90 -1
  303. package/dist/common/log/log-colors.mjs.map +1 -1
  304. package/dist/common/log/log-config.cjs +15 -1
  305. package/dist/common/log/log-config.cjs.map +1 -1
  306. package/dist/common/log/log-config.mjs +14 -1
  307. package/dist/common/log/log-config.mjs.map +1 -1
  308. package/dist/common/log/log-console-capture.cjs +33 -1
  309. package/dist/common/log/log-console-capture.cjs.map +1 -1
  310. package/dist/common/log/log-console-capture.mjs +32 -1
  311. package/dist/common/log/log-console-capture.mjs.map +1 -1
  312. package/dist/common/log/log-console-original.cjs +27 -1
  313. package/dist/common/log/log-console-original.cjs.map +1 -1
  314. package/dist/common/log/log-console-original.mjs +26 -1
  315. package/dist/common/log/log-console-original.mjs.map +1 -1
  316. package/dist/common/log/log-console.cjs +39 -1
  317. package/dist/common/log/log-console.cjs.map +1 -1
  318. package/dist/common/log/log-console.mjs +38 -1
  319. package/dist/common/log/log-console.mjs.map +1 -1
  320. package/dist/common/log/log-context.cjs +109 -1
  321. package/dist/common/log/log-context.cjs.map +1 -1
  322. package/dist/common/log/log-context.mjs +108 -1
  323. package/dist/common/log/log-context.mjs.map +1 -1
  324. package/dist/common/log/log-filter.cjs +80 -1
  325. package/dist/common/log/log-filter.cjs.map +1 -1
  326. package/dist/common/log/log-filter.mjs +75 -1
  327. package/dist/common/log/log-filter.mjs.map +1 -1
  328. package/dist/common/log/log-memory.cjs +45 -1
  329. package/dist/common/log/log-memory.cjs.map +1 -1
  330. package/dist/common/log/log-memory.mjs +43 -1
  331. package/dist/common/log/log-memory.mjs.map +1 -1
  332. package/dist/common/log/log-noop.cjs +17 -1
  333. package/dist/common/log/log-noop.cjs.map +1 -1
  334. package/dist/common/log/log-noop.mjs +15 -1
  335. package/dist/common/log/log-noop.mjs.map +1 -1
  336. package/dist/common/log/log.cjs +46 -1
  337. package/dist/common/log/log.cjs.map +1 -1
  338. package/dist/common/log/log.mjs +43 -1
  339. package/dist/common/log/log.mjs.map +1 -1
  340. package/dist/common/msg/channel-debug.cjs +17 -1
  341. package/dist/common/msg/channel-debug.cjs.map +1 -1
  342. package/dist/common/msg/channel-debug.d.cts +1 -1
  343. package/dist/common/msg/channel-debug.d.mts +1 -1
  344. package/dist/common/msg/channel-debug.mjs +16 -1
  345. package/dist/common/msg/channel-debug.mjs.map +1 -1
  346. package/dist/common/msg/channel-local.cjs +28 -1
  347. package/dist/common/msg/channel-local.cjs.map +1 -1
  348. package/dist/common/msg/channel-local.d.cts +1 -1
  349. package/dist/common/msg/channel-local.d.mts +1 -1
  350. package/dist/common/msg/channel-local.mjs +26 -1
  351. package/dist/common/msg/channel-local.mjs.map +1 -1
  352. package/dist/common/msg/channel-resilient.cjs +63 -1
  353. package/dist/common/msg/channel-resilient.cjs.map +1 -1
  354. package/dist/common/msg/channel-resilient.d.cts +1 -1
  355. package/dist/common/msg/channel-resilient.d.mts +1 -1
  356. package/dist/common/msg/channel-resilient.mjs +62 -1
  357. package/dist/common/msg/channel-resilient.mjs.map +1 -1
  358. package/dist/common/msg/channel-wkwebview.cjs +35 -1
  359. package/dist/common/msg/channel-wkwebview.cjs.map +1 -1
  360. package/dist/common/msg/channel-wkwebview.d.cts +2 -1
  361. package/dist/common/msg/channel-wkwebview.d.mts +2 -1
  362. package/dist/common/msg/channel-wkwebview.mjs +34 -1
  363. package/dist/common/msg/channel-wkwebview.mjs.map +1 -1
  364. package/dist/common/msg/channel.cjs +23 -1
  365. package/dist/common/msg/channel.cjs.map +1 -1
  366. package/dist/common/msg/channel.d.cts +1 -1
  367. package/dist/common/msg/channel.d.mts +1 -1
  368. package/dist/common/msg/channel.mjs +22 -1
  369. package/dist/common/msg/channel.mjs.map +1 -1
  370. package/dist/common/msg/emitter.cjs +141 -1
  371. package/dist/common/msg/emitter.cjs.map +1 -1
  372. package/dist/common/msg/emitter.d.cts +1 -1
  373. package/dist/common/msg/emitter.d.mts +1 -1
  374. package/dist/common/msg/emitter.mjs +139 -1
  375. package/dist/common/msg/emitter.mjs.map +1 -1
  376. package/dist/common/msg/encoder.cjs +38 -1
  377. package/dist/common/msg/encoder.cjs.map +1 -1
  378. package/dist/common/msg/encoder.mjs +35 -1
  379. package/dist/common/msg/encoder.mjs.map +1 -1
  380. package/dist/common/msg/index.cjs +28 -1
  381. package/dist/common/msg/index.d.cts +1 -1
  382. package/dist/common/msg/index.d.mts +1 -1
  383. package/dist/common/msg/index.mjs +11 -1
  384. package/dist/common/msg/messages.cjs +135 -1
  385. package/dist/common/msg/messages.cjs.map +1 -1
  386. package/dist/common/msg/messages.d.cts +1 -1
  387. package/dist/common/msg/messages.d.mts +1 -1
  388. package/dist/common/msg/messages.mjs +133 -1
  389. package/dist/common/msg/messages.mjs.map +1 -1
  390. package/dist/common/msg/pipe.mjs +1 -1
  391. package/dist/common/msg/pubsub.cjs +78 -1
  392. package/dist/common/msg/pubsub.cjs.map +1 -1
  393. package/dist/common/msg/pubsub.d.cts +1 -1
  394. package/dist/common/msg/pubsub.d.mts +1 -1
  395. package/dist/common/msg/pubsub.mjs +76 -1
  396. package/dist/common/msg/pubsub.mjs.map +1 -1
  397. package/dist/common/msg/rpc.cjs +142 -1
  398. package/dist/common/msg/rpc.cjs.map +1 -1
  399. package/dist/common/msg/rpc.mjs +139 -1
  400. package/dist/common/msg/rpc.mjs.map +1 -1
  401. package/dist/common/network.cjs +129 -1
  402. package/dist/common/network.cjs.map +1 -1
  403. package/dist/common/network.mjs +122 -1
  404. package/dist/common/network.mjs.map +1 -1
  405. package/dist/common/platform.cjs +92 -1
  406. package/dist/common/platform.cjs.map +1 -1
  407. package/dist/common/platform.mjs +84 -1
  408. package/dist/common/platform.mjs.map +1 -1
  409. package/dist/common/schema/_sandbox/sandbox-inherit.mjs +1 -1
  410. package/dist/common/schema/_sandbox/sandbox.mjs +1 -1
  411. package/dist/common/schema/_sandbox/sandbox.xspec.mjs +1 -1
  412. package/dist/common/schema/export-json-schema.cjs +54 -1
  413. package/dist/common/schema/export-json-schema.cjs.map +1 -1
  414. package/dist/common/schema/export-json-schema.mjs +52 -1
  415. package/dist/common/schema/export-json-schema.mjs.map +1 -1
  416. package/dist/common/schema/export-swift.cjs +30 -2
  417. package/dist/common/schema/export-swift.cjs.map +1 -1
  418. package/dist/common/schema/export-swift.mjs +29 -2
  419. package/dist/common/schema/export-swift.mjs.map +1 -1
  420. package/dist/common/schema/export-typescript.cjs +20 -2
  421. package/dist/common/schema/export-typescript.cjs.map +1 -1
  422. package/dist/common/schema/export-typescript.mjs +19 -2
  423. package/dist/common/schema/export-typescript.mjs.map +1 -1
  424. package/dist/common/schema/index.cjs +55 -1
  425. package/dist/common/schema/index.mjs +12 -1
  426. package/dist/common/schema/parse-args.cjs +62 -2
  427. package/dist/common/schema/parse-args.cjs.map +1 -1
  428. package/dist/common/schema/parse-args.mjs +60 -2
  429. package/dist/common/schema/parse-args.mjs.map +1 -1
  430. package/dist/common/schema/parse-env.cjs +48 -3
  431. package/dist/common/schema/parse-env.cjs.map +1 -1
  432. package/dist/common/schema/parse-env.mjs +46 -3
  433. package/dist/common/schema/parse-env.mjs.map +1 -1
  434. package/dist/common/schema/parse-object.cjs +122 -1
  435. package/dist/common/schema/parse-object.cjs.map +1 -1
  436. package/dist/common/schema/parse-object.mjs +119 -1
  437. package/dist/common/schema/parse-object.mjs.map +1 -1
  438. package/dist/common/schema/schema-standard.mjs +1 -1
  439. package/dist/common/schema/schema.cjs +423 -1
  440. package/dist/common/schema/schema.cjs.map +1 -1
  441. package/dist/common/schema/schema.mjs +404 -1
  442. package/dist/common/schema/schema.mjs.map +1 -1
  443. package/dist/common/schema/serialize.cjs +109 -1
  444. package/dist/common/schema/serialize.cjs.map +1 -1
  445. package/dist/common/schema/serialize.mjs +107 -1
  446. package/dist/common/schema/serialize.mjs.map +1 -1
  447. package/dist/common/schema/type-test.mjs +1 -1
  448. package/dist/common/schema/utils.cjs +25 -1
  449. package/dist/common/schema/utils.cjs.map +1 -1
  450. package/dist/common/schema/utils.mjs +19 -1
  451. package/dist/common/schema/utils.mjs.map +1 -1
  452. package/dist/common/schema/z-collection.cjs +51 -1
  453. package/dist/common/schema/z-collection.mjs +27 -1
  454. package/dist/common/schema/z.cjs +9 -1
  455. package/dist/common/schema/z.mjs +3 -1
  456. package/dist/common/storage/index.cjs +4 -1
  457. package/dist/common/storage/index.mjs +3 -1
  458. package/dist/common/storage/memstorage.cjs +26 -1
  459. package/dist/common/storage/memstorage.cjs.map +1 -1
  460. package/dist/common/storage/memstorage.mjs +25 -1
  461. package/dist/common/storage/memstorage.mjs.map +1 -1
  462. package/dist/common/test.cjs +14 -1
  463. package/dist/common/test.cjs.map +1 -1
  464. package/dist/common/test.mjs +13 -1
  465. package/dist/common/test.mjs.map +1 -1
  466. package/dist/common/time.cjs +220 -1
  467. package/dist/common/time.cjs.map +1 -1
  468. package/dist/common/time.mjs +194 -1
  469. package/dist/common/time.mjs.map +1 -1
  470. package/dist/common/timeout.cjs +27 -1
  471. package/dist/common/timeout.cjs.map +1 -1
  472. package/dist/common/timeout.mjs +25 -1
  473. package/dist/common/timeout.mjs.map +1 -1
  474. package/dist/common/types.mjs +1 -1
  475. package/dist/common/utils.cjs +7 -1
  476. package/dist/common/utils.cjs.map +1 -1
  477. package/dist/common/utils.mjs +5 -1
  478. package/dist/common/utils.mjs.map +1 -1
  479. package/dist/common/uuid.cjs +307 -1
  480. package/dist/common/uuid.cjs.map +1 -1
  481. package/dist/common/uuid.mjs +284 -1
  482. package/dist/common/uuid.mjs.map +1 -1
  483. package/dist/{index-DHXVOH8h.d.cts → index-CFkMqHvX.d.cts} +1 -2
  484. package/dist/{index-DMaPyx9O.d.mts → index-C_3Y_s6f.d.mts} +1 -2
  485. package/dist/index.all.cjs +641 -1
  486. package/dist/index.all.d.cts +1 -1
  487. package/dist/index.all.d.mts +1 -1
  488. package/dist/index.all.mjs +113 -1
  489. package/dist/index.browser.cjs +576 -1
  490. package/dist/index.browser.d.cts +1 -1
  491. package/dist/index.browser.d.mts +1 -1
  492. package/dist/index.browser.mjs +98 -1
  493. package/dist/index.jsr.cjs +57 -1
  494. package/dist/index.jsr.mjs +6 -1
  495. package/dist/index.node.cjs +628 -1
  496. package/dist/index.node.d.cts +1 -1
  497. package/dist/index.node.d.mts +1 -1
  498. package/dist/index.node.mjs +106 -1
  499. package/dist/node/args.cjs +56 -1
  500. package/dist/node/args.cjs.map +1 -1
  501. package/dist/node/args.mjs +53 -1
  502. package/dist/node/args.mjs.map +1 -1
  503. package/dist/node/clipboard.cjs +18 -1
  504. package/dist/node/clipboard.cjs.map +1 -1
  505. package/dist/node/clipboard.mjs +16 -1
  506. package/dist/node/clipboard.mjs.map +1 -1
  507. package/dist/node/crypto.cjs +28 -1
  508. package/dist/node/crypto.cjs.map +1 -1
  509. package/dist/node/crypto.mjs +24 -1
  510. package/dist/node/crypto.mjs.map +1 -1
  511. package/dist/node/env.cjs +100 -4
  512. package/dist/node/env.cjs.map +1 -1
  513. package/dist/node/env.mjs +90 -4
  514. package/dist/node/env.mjs.map +1 -1
  515. package/dist/node/files-async.cjs +66 -1
  516. package/dist/node/files-async.cjs.map +1 -1
  517. package/dist/node/files-async.mjs +60 -1
  518. package/dist/node/files-async.mjs.map +1 -1
  519. package/dist/node/files.cjs +52 -1
  520. package/dist/node/files.cjs.map +1 -1
  521. package/dist/node/files.mjs +46 -1
  522. package/dist/node/files.mjs.map +1 -1
  523. package/dist/node/filestorage.cjs +100 -1
  524. package/dist/node/filestorage.cjs.map +1 -1
  525. package/dist/node/filestorage.mjs +97 -1
  526. package/dist/node/filestorage.mjs.map +1 -1
  527. package/dist/node/fs.cjs +119 -1
  528. package/dist/node/fs.cjs.map +1 -1
  529. package/dist/node/fs.mjs +101 -1
  530. package/dist/node/fs.mjs.map +1 -1
  531. package/dist/node/glob.cjs +75 -1
  532. package/dist/node/glob.cjs.map +1 -1
  533. package/dist/node/glob.mjs +73 -1
  534. package/dist/node/glob.mjs.map +1 -1
  535. package/dist/node/index.cjs +66 -1
  536. package/dist/node/index.mjs +16 -1
  537. package/dist/node/log/index.cjs +20 -1
  538. package/dist/node/log/index.mjs +7 -1
  539. package/dist/node/log/log-context-node.cjs +39 -1
  540. package/dist/node/log/log-context-node.cjs.map +1 -1
  541. package/dist/node/log/log-context-node.mjs +35 -1
  542. package/dist/node/log/log-context-node.mjs.map +1 -1
  543. package/dist/node/log/log-file-rotation.cjs +71 -1
  544. package/dist/node/log/log-file-rotation.cjs.map +1 -1
  545. package/dist/node/log/log-file-rotation.mjs +68 -1
  546. package/dist/node/log/log-file-rotation.mjs.map +1 -1
  547. package/dist/node/log/log-file.cjs +57 -1
  548. package/dist/node/log/log-file.cjs.map +1 -1
  549. package/dist/node/log/log-file.mjs +54 -1
  550. package/dist/node/log/log-file.mjs.map +1 -1
  551. package/dist/node/log/log-node.cjs +162 -1
  552. package/dist/node/log/log-node.cjs.map +1 -1
  553. package/dist/node/log/log-node.mjs +155 -1
  554. package/dist/node/log/log-node.mjs.map +1 -1
  555. package/dist/node/log/log-rotation.cjs +543 -3
  556. package/dist/node/log/log-rotation.cjs.map +1 -1
  557. package/dist/node/log/log-rotation.mjs +538 -3
  558. package/dist/node/log/log-rotation.mjs.map +1 -1
  559. package/dist/node/log/log-util.cjs +69 -3
  560. package/dist/node/log/log-util.cjs.map +1 -1
  561. package/dist/node/log/log-util.mjs +63 -3
  562. package/dist/node/log/log-util.mjs.map +1 -1
  563. package/dist/node/open-browser.cjs +20 -1
  564. package/dist/node/open-browser.cjs.map +1 -1
  565. package/dist/node/open-browser.mjs +18 -1
  566. package/dist/node/open-browser.mjs.map +1 -1
  567. package/package.json +15 -15
  568. package/src/common/schema/README.md +247 -66
  569. package/src/eslint-defaults.js +4 -0
  570. package/src/index.spec.ts +6 -6
  571. package/dist/bin-Ce3i6ABn.cjs +0 -3
  572. package/dist/bin-SPdenYkw.mjs +0 -3
  573. package/dist/chunk-0Lt9GpW0.mjs +0 -1
  574. package/dist/chunk-D-qHiVGv.cjs +0 -1
  575. package/src/common/schema/README-SCHEMA.md +0 -0
@@ -1,2 +1,405 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./binary.cjs`);const e=require(`./create.cjs`),t=require(`./string.cjs`);var n=class{cpos;cbuf;bufs;constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}};function r(){return new n}function i(e){let t=e.cpos;for(let n=0;n<e.bufs.length;n++)t+=e.bufs[n].length;return t}function a(t){let n=new Uint8Array(i(t)),r=0;for(let e=0;e<t.bufs.length;e++){let i=t.bufs[e];n.set(i,r),r+=i.length}return n.set(e.createUint8ArrayViewFromArrayBuffer(t.cbuf.buffer,0,t.cpos),r),n}function o(t,n){let r=t.cbuf.length;r-t.cpos<n&&(t.bufs.push(e.createUint8ArrayViewFromArrayBuffer(t.cbuf.buffer,0,t.cpos)),t.cbuf=new Uint8Array(Math.max(r,n)*2),t.cpos=0)}function s(e,t){let n=e.cbuf.length;e.cpos===n&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(n*2),e.cpos=0),e.cbuf[e.cpos++]=t}function c(e,t,n){let r=null;for(let n=0;n<e.bufs.length&&r===null;n++){let i=e.bufs[n];t<i.length?r=i:t-=i.length}r===null&&(r=e.cbuf),r[t]=n}const l=s,u=c;function d(e,t){s(e,t&255),s(e,t>>>8&255)}function f(e,t,n){c(e,t,n&255),c(e,t+1,n>>>8&255)}function p(e,t){for(let n=0;n<4;n++)s(e,t&255),t>>>=8}function m(e,t){for(let n=3;n>=0;n--)s(e,t>>>8*n&255)}function h(e,t,n){for(let r=0;r<4;r++)c(e,t+r,n&255),n>>>=8}function g(e,t){for(;t>127;)s(e,128|127&t),t=Math.floor(t/128);s(e,127&t)}function _(e){return e===0?1/e<0:e<0}function v(e,t){let n=_(t);for(n&&(t=-t),s(e,(t>63?128:0)|(n?64:0)|63&t),t=Math.floor(t/64);t>0;)s(e,(t>127?128:0)|127&t),t=Math.floor(t/128)}function y(e,t){let n=e.cbuf.length,r=e.cpos,i=Math.min(n-r,t.length),a=t.length-i;e.cbuf.set(t.subarray(0,i),r),e.cpos+=i,a>0&&(e.bufs.push(e.cbuf),e.cbuf=new Uint8Array(Math.max(n*2,a)),e.cbuf.set(t.subarray(i)),e.cpos=a)}function b(e,t){g(e,t.byteLength),y(e,t)}let x,S;function C(e,n){if(x??(x=new Uint8Array(3e4),S=x.length/3),n.length<S){let r=t.getUtf8TextEncoder().encodeInto(n,x).written||0;g(e,r);for(let t=0;t<r;t++)s(e,x[t])}else b(e,t.encodeUtf8(n))}function w(e,t){let n=unescape(encodeURIComponent(t)),r=n.length;g(e,r);for(let t=0;t<r;t++)s(e,n.codePointAt(t))}function T(e,n){return t.getUtf8TextEncoder()?.encodeInto?C(e,n):w(e,n)}function E(e,t){return y(e,a(t))}function D(e,t){o(e,t);let n=new DataView(e.cbuf.buffer,e.cpos,t);return e.cpos+=t,n}function O(e,t){return D(e,4).setFloat32(0,t,!1)}function k(e,t){return D(e,8).setFloat64(0,t,!1)}function A(e,t){return D(e,8).setBigInt64(0,t,!1)}function j(e,t){return D(e,8).setBigUint64(0,t,!1)}let M;function N(e){return M??=new DataView(new ArrayBuffer(4)),M.setFloat32(0,e),M.getFloat32(0)===e}function P(e,t){switch(typeof t){case`string`:s(e,119),T(e,t);break;case`number`:Number.isInteger(t)&&Math.abs(t)<=2147483647?(s(e,125),v(e,t)):N(t)?(s(e,124),O(e,t)):(s(e,123),k(e,t));break;case`bigint`:s(e,122),A(e,t);break;case`object`:if(t===null)s(e,126);else if(Array.isArray(t)){s(e,117),g(e,t.length);for(let n=0;n<t.length;n++)P(e,t[n])}else if(t instanceof Uint8Array)s(e,116),b(e,t);else{s(e,118);let n=Object.keys(t);n.sort(),g(e,n.length);for(let r=0;r<n.length;r++){let i=n[r];T(e,i),P(e,t[i])}}break;case`boolean`:s(e,t?120:121);break;default:s(e,127)}}exports.BinEncoder=n,exports.createBinEncoder=r,exports.encodeToUint8Array=a,exports.isNegativeZero=_,exports.length=i,exports.set=c,exports.setUint16=f,exports.setUint32=h,exports.setUint8=u,exports.verifyLen=o,exports.write=s,exports.writeAny=P,exports.writeBigInt64=A,exports.writeBigUint64=j,exports.writeBinaryEncoder=E,exports.writeFloat32=O,exports.writeFloat64=k,exports.writeOnDataView=D,exports.writeUint16=d,exports.writeUint32=p,exports.writeUint32BigEndian=m,exports.writeUint8=l,exports.writeUint8Array=y,exports.writeVarInt=v,exports.writeVarString=T,exports.writeVarUint=g,exports.writeVarUint8Array=b;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_common_bin_lib0_binary = require('./binary.cjs');
3
+ const require_common_bin_lib0_create = require('./create.cjs');
4
+ const require_common_bin_lib0_string = require('./string.cjs');
5
+
6
+ //#region src/common/bin/lib0/encoding.ts
7
+ /**
8
+ * Original at https://github.com/dmonad/lib0
9
+ *
10
+ * Efficient schema-less binary encoding with support for variable length encoding.
11
+ *
12
+ * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.
13
+ *
14
+ * Encodes numbers in little-endian order (least to most significant byte order)
15
+ * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)
16
+ * which is also used in Protocol Buffers.
17
+ *
18
+ * ```js
19
+ * // encoding step
20
+ * const encoder = new encoding.createEncoder()
21
+ * encoding.writeVarUint(encoder, 256)
22
+ * encoding.writeVarString(encoder, 'Hello world!')
23
+ * const buf = encoding.toUint8Array(encoder)
24
+ * ```
25
+ *
26
+ * ```js
27
+ * // decoding step
28
+ * const decoder = new decoding.createDecoder(buf)
29
+ * decoding.readVarUint(decoder) // => 256
30
+ * decoding.readVarString(decoder) // => 'Hello world!'
31
+ * decoding.hasContent(decoder) // => false - all data is read
32
+ * ```
33
+ */
34
+ /**
35
+ * A BinaryEncoder handles the encoding to an Uint8Array.
36
+ */
37
+ var BinEncoder = class {
38
+ cpos;
39
+ cbuf;
40
+ bufs;
41
+ constructor() {
42
+ this.cpos = 0;
43
+ this.cbuf = new Uint8Array(100);
44
+ this.bufs = [];
45
+ }
46
+ };
47
+ function createBinEncoder() {
48
+ return new BinEncoder();
49
+ }
50
+ /**
51
+ * The current length of the encoded data.
52
+ */
53
+ function length(encoder) {
54
+ let len = encoder.cpos;
55
+ for (let i = 0; i < encoder.bufs.length; i++) len += encoder.bufs[i].length;
56
+ return len;
57
+ }
58
+ /**
59
+ * Transform to Uint8Array.
60
+ */
61
+ function encodeToUint8Array(encoder) {
62
+ const uint8arr = new Uint8Array(length(encoder));
63
+ let curPos = 0;
64
+ for (let i = 0; i < encoder.bufs.length; i++) {
65
+ const d = encoder.bufs[i];
66
+ uint8arr.set(d, curPos);
67
+ curPos += d.length;
68
+ }
69
+ uint8arr.set(require_common_bin_lib0_create.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos), curPos);
70
+ return uint8arr;
71
+ }
72
+ /**
73
+ * Verify that it is possible to write `len` bytes wtihout checking. If
74
+ * necessary, a new Buffer with the required length is attached.
75
+ */
76
+ function verifyLen(encoder, len) {
77
+ const bufferLen = encoder.cbuf.length;
78
+ if (bufferLen - encoder.cpos < len) {
79
+ encoder.bufs.push(require_common_bin_lib0_create.createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos));
80
+ encoder.cbuf = new Uint8Array(Math.max(bufferLen, len) * 2);
81
+ encoder.cpos = 0;
82
+ }
83
+ }
84
+ /**
85
+ * Write one byte to the encoder.
86
+ */
87
+ function write(encoder, num) {
88
+ const bufferLen = encoder.cbuf.length;
89
+ if (encoder.cpos === bufferLen) {
90
+ encoder.bufs.push(encoder.cbuf);
91
+ encoder.cbuf = new Uint8Array(bufferLen * 2);
92
+ encoder.cpos = 0;
93
+ }
94
+ encoder.cbuf[encoder.cpos++] = num;
95
+ }
96
+ /**
97
+ * Write one byte at a specific position.
98
+ * Position must already be written (i.e. encoder.length > pos)
99
+ */
100
+ function set(encoder, pos, num) {
101
+ let buffer = null;
102
+ for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {
103
+ const b = encoder.bufs[i];
104
+ if (pos < b.length) buffer = b;
105
+ else pos -= b.length;
106
+ }
107
+ if (buffer === null) buffer = encoder.cbuf;
108
+ buffer[pos] = num;
109
+ }
110
+ /**
111
+ * Write one byte as an unsigned integer.
112
+ */
113
+ const writeUint8 = write;
114
+ /**
115
+ * Write one byte as an unsigned Integer at a specific location.
116
+ */
117
+ const setUint8 = set;
118
+ /**
119
+ * Write two bytes as an unsigned integer.
120
+ */
121
+ function writeUint16(encoder, num) {
122
+ write(encoder, num & 255);
123
+ write(encoder, num >>> 8 & 255);
124
+ }
125
+ /**
126
+ * Write two bytes as an unsigned integer at a specific location.
127
+ */
128
+ function setUint16(encoder, pos, num) {
129
+ set(encoder, pos, num & 255);
130
+ set(encoder, pos + 1, num >>> 8 & 255);
131
+ }
132
+ /**
133
+ * Write two bytes as an unsigned integer
134
+ */
135
+ function writeUint32(encoder, num) {
136
+ for (let i = 0; i < 4; i++) {
137
+ write(encoder, num & 255);
138
+ num >>>= 8;
139
+ }
140
+ }
141
+ /**
142
+ * Write two bytes as an unsigned integer in big endian order.
143
+ * (most significant byte first)
144
+ */
145
+ function writeUint32BigEndian(encoder, num) {
146
+ for (let i = 3; i >= 0; i--) write(encoder, num >>> 8 * i & 255);
147
+ }
148
+ /**
149
+ * Write two bytes as an unsigned integer at a specific location.
150
+ */
151
+ function setUint32(encoder, pos, num) {
152
+ for (let i = 0; i < 4; i++) {
153
+ set(encoder, pos + i, num & 255);
154
+ num >>>= 8;
155
+ }
156
+ }
157
+ /**
158
+ * Write a variable length unsigned integer. Max encodable integer is 2^53.
159
+ */
160
+ function writeVarUint(encoder, num) {
161
+ while (num > 127) {
162
+ write(encoder, 128 | 127 & num);
163
+ num = Math.floor(num / 128);
164
+ }
165
+ write(encoder, 127 & num);
166
+ }
167
+ function isNegativeZero(n) {
168
+ return n !== 0 ? n < 0 : 1 / n < 0;
169
+ }
170
+ /**
171
+ * Write a variable length integer.
172
+ *
173
+ * We use the 7th bit instead for signaling that this is a negative number.
174
+ */
175
+ function writeVarInt(encoder, num) {
176
+ const isNegative = isNegativeZero(num);
177
+ if (isNegative) num = -num;
178
+ write(encoder, (num > 63 ? 128 : 0) | (isNegative ? 64 : 0) | 63 & num);
179
+ num = Math.floor(num / 64);
180
+ while (num > 0) {
181
+ write(encoder, (num > 127 ? 128 : 0) | 127 & num);
182
+ num = Math.floor(num / 128);
183
+ }
184
+ }
185
+ /**
186
+ * Append fixed-length Uint8Array to the encoder.
187
+ */
188
+ function writeUint8Array(encoder, uint8Array) {
189
+ const bufferLen = encoder.cbuf.length;
190
+ const cpos = encoder.cpos;
191
+ const leftCopyLen = Math.min(bufferLen - cpos, uint8Array.length);
192
+ const rightCopyLen = uint8Array.length - leftCopyLen;
193
+ encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos);
194
+ encoder.cpos += leftCopyLen;
195
+ if (rightCopyLen > 0) {
196
+ encoder.bufs.push(encoder.cbuf);
197
+ encoder.cbuf = new Uint8Array(Math.max(bufferLen * 2, rightCopyLen));
198
+ encoder.cbuf.set(uint8Array.subarray(leftCopyLen));
199
+ encoder.cpos = rightCopyLen;
200
+ }
201
+ }
202
+ /**
203
+ * Append an Uint8Array to BinEncoder.
204
+ */
205
+ function writeVarUint8Array(encoder, uint8Array) {
206
+ writeVarUint(encoder, uint8Array.byteLength);
207
+ writeUint8Array(encoder, uint8Array);
208
+ }
209
+ /**
210
+ * A cache to store strings temporarily
211
+ */
212
+ let _strBuffer;
213
+ let _maxStrBSize;
214
+ /**
215
+ * Write a variable length string.
216
+ */
217
+ function _writeVarStringNative(encoder, str) {
218
+ if (_strBuffer == null) {
219
+ _strBuffer = new Uint8Array(3e4);
220
+ _maxStrBSize = _strBuffer.length / 3;
221
+ }
222
+ if (str.length < _maxStrBSize) {
223
+ const written = require_common_bin_lib0_string.getUtf8TextEncoder().encodeInto(str, _strBuffer).written || 0;
224
+ writeVarUint(encoder, written);
225
+ for (let i = 0; i < written; i++) write(encoder, _strBuffer[i]);
226
+ } else writeVarUint8Array(encoder, require_common_bin_lib0_string.encodeUtf8(str));
227
+ }
228
+ /**
229
+ * Write a variable length string.
230
+ */
231
+ function _writeVarStringPolyfill(encoder, str) {
232
+ const encodedString = unescape(encodeURIComponent(str));
233
+ const len = encodedString.length;
234
+ writeVarUint(encoder, len);
235
+ for (let i = 0; i < len; i++) write(encoder, encodedString.codePointAt(i));
236
+ }
237
+ /**
238
+ * Write a variable length string.
239
+ */
240
+ function writeVarString(encoder, str) {
241
+ return require_common_bin_lib0_string.getUtf8TextEncoder()?.encodeInto ? _writeVarStringNative(encoder, str) : _writeVarStringPolyfill(encoder, str);
242
+ }
243
+ /**
244
+ * Write the content of another Encoder.
245
+ *
246
+ * @TODO: can be improved!
247
+ * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.
248
+ * Encoders start with a rather big initial buffer.
249
+ */
250
+ function writeBinaryEncoder(encoder, append) {
251
+ return writeUint8Array(encoder, encodeToUint8Array(append));
252
+ }
253
+ /**
254
+ * Create an DataView of the next `len` bytes. Use it to write data after
255
+ * calling this function.
256
+ *
257
+ * ```js
258
+ * // write float32 using DataView
259
+ * const dv = writeOnDataView(encoder, 4)
260
+ * dv.setFloat32(0, 1.1)
261
+ * // read float32 using DataView
262
+ * const dv = readFromDataView(encoder, 4)
263
+ * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)
264
+ * ```
265
+ */
266
+ function writeOnDataView(encoder, len) {
267
+ verifyLen(encoder, len);
268
+ const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len);
269
+ encoder.cpos += len;
270
+ return dview;
271
+ }
272
+ function writeFloat32(encoder, num) {
273
+ return writeOnDataView(encoder, 4).setFloat32(0, num, false);
274
+ }
275
+ function writeFloat64(encoder, num) {
276
+ return writeOnDataView(encoder, 8).setFloat64(0, num, false);
277
+ }
278
+ function writeBigInt64(encoder, num) {
279
+ return writeOnDataView(encoder, 8).setBigInt64(0, num, false);
280
+ }
281
+ function writeBigUint64(encoder, num) {
282
+ return writeOnDataView(encoder, 8).setBigUint64(0, num, false);
283
+ }
284
+ let floatTestBed;
285
+ /**
286
+ * Check if a number can be encoded as a 32 bit float.
287
+ */
288
+ function isFloat32(num) {
289
+ floatTestBed ??= /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(4));
290
+ floatTestBed.setFloat32(0, num);
291
+ return floatTestBed.getFloat32(0) === num;
292
+ }
293
+ /**
294
+ * Encode data with efficient binary format.
295
+ *
296
+ * Differences to JSON:
297
+ * • Transforms data to a binary format (not to a string)
298
+ * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)
299
+ * • Numbers are efficiently encoded either as a variable length integer, as a
300
+ * 32 bit float, as a 64 bit float, or as a 64 bit bigint.
301
+ *
302
+ * Encoding table:
303
+ *
304
+ * | Data Type | Prefix | Encoding Method | Comment |
305
+ * | ------------------- | -------- | ------------------ | ------- |
306
+ * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |
307
+ * | null | 126 | | |
308
+ * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |
309
+ * | float32 | 124 | writeFloat32 | |
310
+ * | float64 | 123 | writeFloat64 | |
311
+ * | bigint | 122 | writeBigInt64 | |
312
+ * | boolean (false) | 121 | | True and false are different data types so we save the following byte |
313
+ * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |
314
+ * | string | 119 | writeVarString | |
315
+ * | object<string,any> | 118 | custom | Writes {length} then {length} key-value pairs |
316
+ * | array<any> | 117 | custom | Writes {length} then {length} json values |
317
+ * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |
318
+ *
319
+ * Reasons for the decreasing prefix:
320
+ * We need the first bit for extendability (later we may want to encode the
321
+ * prefix with writeVarUint). The remaining 7 bits are divided as follows:
322
+ * [0-30] the beginning of the data range is used for custom purposes
323
+ * (defined by the function that uses this library)
324
+ * [31-127] the end of the data range is used for data encoding by
325
+ * lib0/encoding.js
326
+ */
327
+ function writeAny(encoder, data) {
328
+ switch (typeof data) {
329
+ case "string":
330
+ write(encoder, 119);
331
+ writeVarString(encoder, data);
332
+ break;
333
+ case "number":
334
+ if (Number.isInteger(data) && Math.abs(data) <= 2147483647) {
335
+ write(encoder, 125);
336
+ writeVarInt(encoder, data);
337
+ } else if (isFloat32(data)) {
338
+ write(encoder, 124);
339
+ writeFloat32(encoder, data);
340
+ } else {
341
+ write(encoder, 123);
342
+ writeFloat64(encoder, data);
343
+ }
344
+ break;
345
+ case "bigint":
346
+ write(encoder, 122);
347
+ writeBigInt64(encoder, data);
348
+ break;
349
+ case "object":
350
+ if (data === null) write(encoder, 126);
351
+ else if (Array.isArray(data)) {
352
+ write(encoder, 117);
353
+ writeVarUint(encoder, data.length);
354
+ for (let i = 0; i < data.length; i++) writeAny(encoder, data[i]);
355
+ } else if (data instanceof Uint8Array) {
356
+ write(encoder, 116);
357
+ writeVarUint8Array(encoder, data);
358
+ } else {
359
+ write(encoder, 118);
360
+ const keys = Object.keys(data);
361
+ keys.sort();
362
+ writeVarUint(encoder, keys.length);
363
+ for (let i = 0; i < keys.length; i++) {
364
+ const key = keys[i];
365
+ writeVarString(encoder, key);
366
+ writeAny(encoder, data[key]);
367
+ }
368
+ }
369
+ break;
370
+ case "boolean":
371
+ write(encoder, data ? 120 : 121);
372
+ break;
373
+ default: write(encoder, 127);
374
+ }
375
+ }
376
+
377
+ //#endregion
378
+ exports.BinEncoder = BinEncoder;
379
+ exports.createBinEncoder = createBinEncoder;
380
+ exports.encodeToUint8Array = encodeToUint8Array;
381
+ exports.isNegativeZero = isNegativeZero;
382
+ exports.length = length;
383
+ exports.set = set;
384
+ exports.setUint16 = setUint16;
385
+ exports.setUint32 = setUint32;
386
+ exports.setUint8 = setUint8;
387
+ exports.verifyLen = verifyLen;
388
+ exports.write = write;
389
+ exports.writeAny = writeAny;
390
+ exports.writeBigInt64 = writeBigInt64;
391
+ exports.writeBigUint64 = writeBigUint64;
392
+ exports.writeBinaryEncoder = writeBinaryEncoder;
393
+ exports.writeFloat32 = writeFloat32;
394
+ exports.writeFloat64 = writeFloat64;
395
+ exports.writeOnDataView = writeOnDataView;
396
+ exports.writeUint16 = writeUint16;
397
+ exports.writeUint32 = writeUint32;
398
+ exports.writeUint32BigEndian = writeUint32BigEndian;
399
+ exports.writeUint8 = writeUint8;
400
+ exports.writeUint8Array = writeUint8Array;
401
+ exports.writeVarInt = writeVarInt;
402
+ exports.writeVarString = writeVarString;
403
+ exports.writeVarUint = writeVarUint;
404
+ exports.writeVarUint8Array = writeVarUint8Array;
2
405
  //# sourceMappingURL=encoding.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.cjs","names":["createUint8ArrayViewFromArrayBuffer","getUtf8TextEncoder","encodeUtf8"],"sources":["../../../../src/common/bin/lib0/encoding.ts"],"sourcesContent":["/**\n * Original at https://github.com/dmonad/lib0\n *\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n */\n\nimport { BIT7, BIT8, BITS6, BITS7, BITS8, BITS31 } from './binary'\nimport { createUint8ArrayViewFromArrayBuffer } from './create'\nimport { encodeUtf8, getUtf8TextEncoder } from './string'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class BinEncoder {\n cpos: number\n cbuf: Uint8Array\n bufs: Uint8Array[]\n\n constructor() {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n this.bufs = []\n }\n}\n\nexport function createBinEncoder(): BinEncoder {\n return new BinEncoder()\n}\n\n/**\n * The current length of the encoded data.\n */\nexport function length(encoder: BinEncoder): number {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++)\n len += encoder.bufs[i].length\n\n return len\n}\n\n/**\n * Transform to Uint8Array.\n */\nexport function encodeToUint8Array(encoder: BinEncoder): Uint8Array {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n */\nexport function verifyLen(encoder: BinEncoder, len: number) {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(Math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n */\nexport function write(encoder: BinEncoder, num: number) {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n */\nexport function set(encoder: BinEncoder, pos: number, num: number) {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length)\n buffer = b // found buffer\n\n else\n pos -= b.length\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n */\nexport function writeUint16(encoder: BinEncoder, num: number) {\n write(encoder, num & BITS8)\n write(encoder, (num >>> 8) & BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n */\nexport function setUint16(encoder: BinEncoder, pos: number, num: number) {\n set(encoder, pos, num & BITS8)\n set(encoder, pos + 1, (num >>> 8) & BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n */\nexport function writeUint32(encoder: BinEncoder, num: number) {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n */\nexport function writeUint32BigEndian(encoder: BinEncoder, num: number) {\n for (let i = 3; i >= 0; i--)\n write(encoder, (num >>> (8 * i)) & BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n */\nexport function setUint32(encoder: BinEncoder, pos: number, num: number) {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n */\nexport function writeVarUint(encoder: BinEncoder, num: number) {\n while (num > BITS7) {\n write(encoder, BIT8 | (BITS7 & num))\n num = Math.floor(num / 128) // shift >>> 7\n }\n write(encoder, BITS7 & num)\n}\n\nexport function isNegativeZero(n: number) {\n return n !== 0 ? n < 0 : 1 / n < 0\n}\n\n/**\n * Write a variable length integer.\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n */\nexport function writeVarInt(encoder: BinEncoder, num: number) {\n const isNegative = isNegativeZero(num)\n if (isNegative)\n num = -num\n\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > BITS6 ? BIT8 : 0) | (isNegative ? BIT7 : 0) | (BITS6 & num))\n num = Math.floor(num / 64) // shift >>> 6\n\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > BITS7 ? BIT8 : 0) | (BITS7 & num))\n num = Math.floor(num / 128) // shift >>> 7\n }\n}\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n */\nexport function writeUint8Array(encoder: BinEncoder, uint8Array: Uint8Array) {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = Math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(Math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to BinEncoder.\n */\nexport function writeVarUint8Array(encoder: BinEncoder, uint8Array: Uint8Array): void {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * A cache to store strings temporarily\n */\nlet _strBuffer: Uint8Array\nlet _maxStrBSize: number\n\n/**\n * Write a variable length string.\n */\nfunction _writeVarStringNative(encoder: BinEncoder, str: string) {\n if (_strBuffer == null) {\n _strBuffer = new Uint8Array(30000)\n _maxStrBSize = _strBuffer.length / 3\n }\n\n if (str.length < _maxStrBSize) {\n // We can encode the string into the existing buffer\n const written = getUtf8TextEncoder()!.encodeInto(str, _strBuffer).written || 0\n writeVarUint(encoder, written)\n for (let i = 0; i < written; i++)\n write(encoder, _strBuffer[i])\n }\n else {\n writeVarUint8Array(encoder, encodeUtf8(str))\n }\n}\n\n/**\n * Write a variable length string.\n */\nfunction _writeVarStringPolyfill(encoder: BinEncoder, str: string) {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++)\n write(encoder, (encodedString.codePointAt(i) as number))\n}\n\n/**\n * Write a variable length string.\n */\nexport function writeVarString(encoder: BinEncoder, str: string) {\n return getUtf8TextEncoder()?.encodeInto\n ? _writeVarStringNative(encoder, str)\n : _writeVarStringPolyfill(encoder, str)\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n * Encoders start with a rather big initial buffer.\n */\nexport function writeBinaryEncoder(encoder: BinEncoder, append: BinEncoder) {\n return writeUint8Array(encoder, encodeToUint8Array(append))\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n */\nexport function writeOnDataView(encoder: BinEncoder, len: number): DataView {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\nexport function writeFloat32(encoder: BinEncoder, num: number) {\n return writeOnDataView(encoder, 4).setFloat32(0, num, false)\n}\n\nexport function writeFloat64(encoder: BinEncoder, num: number) {\n return writeOnDataView(encoder, 8).setFloat64(0, num, false)\n}\n\nexport function writeBigInt64(encoder: BinEncoder, num: bigint) {\n return (writeOnDataView(encoder, 8)).setBigInt64(0, num, false)\n}\n\nexport function writeBigUint64(encoder: BinEncoder, num: bigint) {\n return (writeOnDataView(encoder, 8)).setBigUint64(0, num, false)\n}\n\nlet floatTestBed: DataView\n\n/**\n * Check if a number can be encoded as a 32 bit float.\n */\nfunction isFloat32(num: number): boolean {\n floatTestBed ??= new DataView(new ArrayBuffer(4))\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object<string,any> | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array<any> | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n */\nexport function writeAny(encoder: BinEncoder, data: undefined | null | number | bigint | boolean | string | { [s: string]: any } | Array<any> | Uint8Array) {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (Number.isInteger(data) && Math.abs(data) <= BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n }\n else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n }\n else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n }\n else if (Array.isArray(data)) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++)\n writeAny(encoder, data[i])\n }\n else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n }\n else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n keys.sort() // guarantee comparability and consistency\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"encoding.cjs","names":["createUint8ArrayViewFromArrayBuffer","getUtf8TextEncoder","encodeUtf8"],"sources":["../../../../src/common/bin/lib0/encoding.ts"],"sourcesContent":["/**\n * Original at https://github.com/dmonad/lib0\n *\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = new encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = new decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n */\n\nimport { BIT7, BIT8, BITS6, BITS7, BITS8, BITS31 } from './binary'\nimport { createUint8ArrayViewFromArrayBuffer } from './create'\nimport { encodeUtf8, getUtf8TextEncoder } from './string'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class BinEncoder {\n cpos: number\n cbuf: Uint8Array\n bufs: Uint8Array[]\n\n constructor() {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n this.bufs = []\n }\n}\n\nexport function createBinEncoder(): BinEncoder {\n return new BinEncoder()\n}\n\n/**\n * The current length of the encoded data.\n */\nexport function length(encoder: BinEncoder): number {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++)\n len += encoder.bufs[i].length\n\n return len\n}\n\n/**\n * Transform to Uint8Array.\n */\nexport function encodeToUint8Array(encoder: BinEncoder): Uint8Array {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n */\nexport function verifyLen(encoder: BinEncoder, len: number) {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(createUint8ArrayViewFromArrayBuffer(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(Math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n */\nexport function write(encoder: BinEncoder, num: number) {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n */\nexport function set(encoder: BinEncoder, pos: number, num: number) {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length)\n buffer = b // found buffer\n\n else\n pos -= b.length\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n */\nexport function writeUint16(encoder: BinEncoder, num: number) {\n write(encoder, num & BITS8)\n write(encoder, (num >>> 8) & BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n */\nexport function setUint16(encoder: BinEncoder, pos: number, num: number) {\n set(encoder, pos, num & BITS8)\n set(encoder, pos + 1, (num >>> 8) & BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n */\nexport function writeUint32(encoder: BinEncoder, num: number) {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n */\nexport function writeUint32BigEndian(encoder: BinEncoder, num: number) {\n for (let i = 3; i >= 0; i--)\n write(encoder, (num >>> (8 * i)) & BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n */\nexport function setUint32(encoder: BinEncoder, pos: number, num: number) {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n */\nexport function writeVarUint(encoder: BinEncoder, num: number) {\n while (num > BITS7) {\n write(encoder, BIT8 | (BITS7 & num))\n num = Math.floor(num / 128) // shift >>> 7\n }\n write(encoder, BITS7 & num)\n}\n\nexport function isNegativeZero(n: number) {\n return n !== 0 ? n < 0 : 1 / n < 0\n}\n\n/**\n * Write a variable length integer.\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n */\nexport function writeVarInt(encoder: BinEncoder, num: number) {\n const isNegative = isNegativeZero(num)\n if (isNegative)\n num = -num\n\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > BITS6 ? BIT8 : 0) | (isNegative ? BIT7 : 0) | (BITS6 & num))\n num = Math.floor(num / 64) // shift >>> 6\n\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > BITS7 ? BIT8 : 0) | (BITS7 & num))\n num = Math.floor(num / 128) // shift >>> 7\n }\n}\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n */\nexport function writeUint8Array(encoder: BinEncoder, uint8Array: Uint8Array) {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = Math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(Math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to BinEncoder.\n */\nexport function writeVarUint8Array(encoder: BinEncoder, uint8Array: Uint8Array): void {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * A cache to store strings temporarily\n */\nlet _strBuffer: Uint8Array\nlet _maxStrBSize: number\n\n/**\n * Write a variable length string.\n */\nfunction _writeVarStringNative(encoder: BinEncoder, str: string) {\n if (_strBuffer == null) {\n _strBuffer = new Uint8Array(30000)\n _maxStrBSize = _strBuffer.length / 3\n }\n\n if (str.length < _maxStrBSize) {\n // We can encode the string into the existing buffer\n const written = getUtf8TextEncoder()!.encodeInto(str, _strBuffer).written || 0\n writeVarUint(encoder, written)\n for (let i = 0; i < written; i++)\n write(encoder, _strBuffer[i])\n }\n else {\n writeVarUint8Array(encoder, encodeUtf8(str))\n }\n}\n\n/**\n * Write a variable length string.\n */\nfunction _writeVarStringPolyfill(encoder: BinEncoder, str: string) {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++)\n write(encoder, (encodedString.codePointAt(i) as number))\n}\n\n/**\n * Write a variable length string.\n */\nexport function writeVarString(encoder: BinEncoder, str: string) {\n return getUtf8TextEncoder()?.encodeInto\n ? _writeVarStringNative(encoder, str)\n : _writeVarStringPolyfill(encoder, str)\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n * Encoders start with a rather big initial buffer.\n */\nexport function writeBinaryEncoder(encoder: BinEncoder, append: BinEncoder) {\n return writeUint8Array(encoder, encodeToUint8Array(append))\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n */\nexport function writeOnDataView(encoder: BinEncoder, len: number): DataView {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\nexport function writeFloat32(encoder: BinEncoder, num: number) {\n return writeOnDataView(encoder, 4).setFloat32(0, num, false)\n}\n\nexport function writeFloat64(encoder: BinEncoder, num: number) {\n return writeOnDataView(encoder, 8).setFloat64(0, num, false)\n}\n\nexport function writeBigInt64(encoder: BinEncoder, num: bigint) {\n return (writeOnDataView(encoder, 8)).setBigInt64(0, num, false)\n}\n\nexport function writeBigUint64(encoder: BinEncoder, num: bigint) {\n return (writeOnDataView(encoder, 8)).setBigUint64(0, num, false)\n}\n\nlet floatTestBed: DataView\n\n/**\n * Check if a number can be encoded as a 32 bit float.\n */\nfunction isFloat32(num: number): boolean {\n floatTestBed ??= new DataView(new ArrayBuffer(4))\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object<string,any> | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array<any> | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n */\nexport function writeAny(encoder: BinEncoder, data: undefined | null | number | bigint | boolean | string | { [s: string]: any } | Array<any> | Uint8Array) {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (Number.isInteger(data) && Math.abs(data) <= BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n }\n else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n }\n else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n }\n else if (Array.isArray(data)) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++)\n writeAny(encoder, data[i])\n }\n else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n }\n else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n keys.sort() // guarantee comparability and consistency\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n"],"mappings":"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"}