zeed 1.1.1 → 1.2.4

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 (411) hide show
  1. package/AGENTS.md +225 -18
  2. package/README.md +1 -1
  3. package/dist/_experiments/bitcask.cjs.map +1 -1
  4. package/dist/browser/base64.cjs.map +1 -1
  5. package/dist/browser/gravatar.cjs.map +1 -1
  6. package/dist/browser/index.cjs.map +1 -1
  7. package/dist/browser/localstorage.cjs.map +1 -1
  8. package/dist/browser/log/index.cjs.map +1 -1
  9. package/dist/browser/log/log-browser-factory.cjs.map +1 -1
  10. package/dist/browser/log/log-browser.cjs.map +1 -1
  11. package/dist/browser/log/log-colors.cjs.map +1 -1
  12. package/dist/browser/log/log-context-browser.cjs.map +1 -1
  13. package/dist/chunk-2TNLYCZH.cjs.map +1 -1
  14. package/dist/chunk-2UQU3IBA.cjs.map +1 -1
  15. package/dist/chunk-32B4KRI6.cjs.map +1 -1
  16. package/dist/{chunk-DAD3M2IM.cjs → chunk-344WNUEK.cjs} +2 -2
  17. package/dist/chunk-344WNUEK.cjs.map +1 -0
  18. package/dist/chunk-36N7ZI6A.cjs.map +1 -1
  19. package/dist/chunk-3P4XRJ23.cjs.map +1 -1
  20. package/dist/chunk-3TNVJY4F.cjs.map +1 -1
  21. package/dist/chunk-3ZBLU4D6.cjs.map +1 -1
  22. package/dist/chunk-47GAJHNO.cjs.map +1 -1
  23. package/dist/chunk-4ATJXWZH.cjs.map +1 -1
  24. package/dist/chunk-4B2XCWGL.cjs.map +1 -1
  25. package/dist/chunk-4M4EUXUS.cjs.map +1 -1
  26. package/dist/chunk-4TLMJAZB.cjs.map +1 -1
  27. package/dist/chunk-5RHVNJKM.cjs.map +1 -1
  28. package/dist/chunk-5RJ6XORD.cjs.map +1 -1
  29. package/dist/chunk-5VHLMAKU.cjs.map +1 -1
  30. package/dist/chunk-75LG3YTX.cjs.map +1 -1
  31. package/dist/chunk-7HXAZLZN.cjs.map +1 -1
  32. package/dist/chunk-7UA33BQW.cjs.map +1 -1
  33. package/dist/chunk-7XE6IQ4X.cjs.map +1 -1
  34. package/dist/chunk-A6DSKTWF.cjs.map +1 -1
  35. package/dist/chunk-ABCQXAMV.cjs.map +1 -1
  36. package/dist/chunk-AERHWWDH.cjs.map +1 -1
  37. package/dist/chunk-AH7ZMSSE.cjs.map +1 -1
  38. package/dist/chunk-B2XPF5R4.cjs.map +1 -1
  39. package/dist/chunk-B75IPNYG.cjs.map +1 -1
  40. package/dist/{chunk-RZPIAOGG.js → chunk-BPPN3ZNV.js} +2 -2
  41. package/dist/chunk-BPWOWVF7.cjs.map +1 -1
  42. package/dist/chunk-BQ66KUDG.cjs.map +1 -1
  43. package/dist/chunk-BTEZYY77.cjs.map +1 -1
  44. package/dist/chunk-BTOZJX47.cjs.map +1 -1
  45. package/dist/chunk-C3WUDLBK.cjs.map +1 -1
  46. package/dist/{chunk-AUYYYDRM.cjs → chunk-C72ST4ZR.cjs} +1 -1
  47. package/dist/chunk-C72ST4ZR.cjs.map +1 -0
  48. package/dist/chunk-C7CD7VGT.cjs.map +1 -1
  49. package/dist/chunk-CEANCAI7.cjs.map +1 -1
  50. package/dist/chunk-CGNAZMNO.cjs.map +1 -1
  51. package/dist/chunk-CGQIHGXL.cjs.map +1 -1
  52. package/dist/chunk-CHR4BOAA.cjs.map +1 -1
  53. package/dist/{chunk-LXFL3VYA.cjs → chunk-CLMIDN5Q.cjs} +2 -2
  54. package/dist/chunk-CLMIDN5Q.cjs.map +1 -0
  55. package/dist/chunk-CM2VW6MR.cjs.map +1 -1
  56. package/dist/chunk-CWGNDC2T.cjs.map +1 -1
  57. package/dist/chunk-CYPMLO24.cjs.map +1 -1
  58. package/dist/{chunk-AH3LPY2A.js → chunk-DBXJFUZ7.js} +2 -2
  59. package/dist/chunk-DHZPCNPE.cjs.map +1 -1
  60. package/dist/chunk-DLVWYIS2.cjs.map +1 -1
  61. package/dist/chunk-DMKWVXY7.cjs.map +1 -1
  62. package/dist/chunk-DRKHTT76.cjs.map +1 -1
  63. package/dist/chunk-DXQHNAIL.cjs.map +1 -1
  64. package/dist/chunk-ETHALF2S.cjs.map +1 -1
  65. package/dist/chunk-FMMEBQFR.cjs.map +1 -1
  66. package/dist/{chunk-5BA3O5XZ.cjs → chunk-GARQAHQE.cjs} +2 -2
  67. package/dist/chunk-GARQAHQE.cjs.map +1 -0
  68. package/dist/chunk-GFMSFYKE.cjs.map +1 -1
  69. package/dist/chunk-GILR5DT5.cjs.map +1 -1
  70. package/dist/chunk-HEYAOG5D.cjs.map +1 -1
  71. package/dist/chunk-HTEAHUXG.cjs.map +1 -1
  72. package/dist/chunk-HZC2RTNS.cjs.map +1 -1
  73. package/dist/chunk-I5HBI6EC.cjs.map +1 -1
  74. package/dist/chunk-IA2OMOCB.cjs.map +1 -1
  75. package/dist/chunk-IJE3VBKC.cjs.map +1 -1
  76. package/dist/chunk-IOEXXFCL.cjs.map +1 -1
  77. package/dist/chunk-IVUEQANC.cjs.map +1 -1
  78. package/dist/chunk-IXH5D35S.cjs.map +1 -1
  79. package/dist/chunk-JJKWFF7B.cjs.map +1 -1
  80. package/dist/chunk-JLB5ALZ5.cjs.map +1 -1
  81. package/dist/chunk-JWON4PLZ.cjs.map +1 -1
  82. package/dist/chunk-K4IRAHZV.cjs.map +1 -1
  83. package/dist/chunk-KFNJHRCB.cjs.map +1 -1
  84. package/dist/chunk-KJ3RKZH5.cjs.map +1 -1
  85. package/dist/chunk-KNKYRU4X.cjs.map +1 -1
  86. package/dist/chunk-KPU7ZOUH.cjs.map +1 -1
  87. package/dist/{chunk-LI2YWV3G.js → chunk-KWFFSQMW.js} +2 -2
  88. package/dist/chunk-KYDHX5HW.cjs.map +1 -1
  89. package/dist/chunk-KYNPDWX4.cjs.map +1 -1
  90. package/dist/chunk-L5C7BHMX.cjs.map +1 -1
  91. package/dist/chunk-L5IXZXHR.cjs.map +1 -1
  92. package/dist/chunk-L5XYQBG4.cjs.map +1 -1
  93. package/dist/chunk-LCZEBSTH.cjs.map +1 -1
  94. package/dist/{chunk-ETMFCGHO.cjs → chunk-LG7UXZKN.cjs} +2 -2
  95. package/dist/chunk-LG7UXZKN.cjs.map +1 -0
  96. package/dist/chunk-LLRM7AW7.cjs.map +1 -1
  97. package/dist/chunk-LONV4KUS.cjs +2 -0
  98. package/dist/chunk-LONV4KUS.cjs.map +1 -0
  99. package/dist/chunk-LUPESR7S.cjs.map +1 -1
  100. package/dist/chunk-M3W3RDZF.cjs.map +1 -1
  101. package/dist/chunk-MIEXPALS.cjs.map +1 -1
  102. package/dist/chunk-MQFII6MR.cjs.map +1 -1
  103. package/dist/{chunk-UFYY2K4G.js → chunk-MV2F4DQ6.js} +2 -2
  104. package/dist/chunk-MVSJTIGR.cjs.map +1 -1
  105. package/dist/chunk-N7XCSNC7.cjs.map +1 -1
  106. package/dist/chunk-NNQYMABK.cjs.map +1 -1
  107. package/dist/chunk-NPQ77LO4.cjs.map +1 -1
  108. package/dist/chunk-NU2LARFE.cjs.map +1 -1
  109. package/dist/chunk-NVLJOTGF.cjs.map +1 -1
  110. package/dist/chunk-NVLQ55J2.cjs.map +1 -1
  111. package/dist/chunk-O5QH7LLM.cjs.map +1 -1
  112. package/dist/chunk-OGP3AZFM.cjs.map +1 -1
  113. package/dist/chunk-ONPGFM6G.cjs.map +1 -1
  114. package/dist/chunk-P7XCQ7WV.cjs.map +1 -1
  115. package/dist/{chunk-X7RJP4DR.cjs → chunk-PU67BXVP.cjs} +1 -1
  116. package/dist/chunk-PU67BXVP.cjs.map +1 -0
  117. package/dist/chunk-PYRSJ4KI.cjs.map +1 -1
  118. package/dist/chunk-Q2SNIYQS.cjs.map +1 -1
  119. package/dist/chunk-QOZ5S3UC.cjs.map +1 -1
  120. package/dist/chunk-R3NVN3FY.cjs.map +1 -1
  121. package/dist/chunk-R74LEJVE.cjs.map +1 -1
  122. package/dist/chunk-RAXM7FU3.cjs.map +1 -1
  123. package/dist/chunk-RLII6GIK.cjs.map +1 -1
  124. package/dist/chunk-RMTW3TW2.cjs.map +1 -1
  125. package/dist/chunk-SEQAFKIV.cjs.map +1 -1
  126. package/dist/chunk-SHOLGUSO.cjs.map +1 -1
  127. package/dist/chunk-SQK2VOFN.cjs.map +1 -1
  128. package/dist/{chunk-BRQSQXKK.js → chunk-SSKDGT5N.js} +1 -1
  129. package/dist/chunk-SSKDGT5N.js.map +1 -0
  130. package/dist/chunk-TAUWRIFY.cjs.map +1 -1
  131. package/dist/chunk-TJQMBWXU.cjs.map +1 -1
  132. package/dist/chunk-TNMEWZPW.cjs.map +1 -1
  133. package/dist/chunk-UCS53L2H.cjs.map +1 -1
  134. package/dist/chunk-ULLUQLTA.cjs.map +1 -1
  135. package/dist/chunk-UO65Z4DR.cjs.map +1 -1
  136. package/dist/chunk-UXW3L3L6.cjs.map +1 -1
  137. package/dist/{chunk-IMM23TO5.cjs → chunk-V3A7ZIGT.cjs} +2 -2
  138. package/dist/chunk-V3A7ZIGT.cjs.map +1 -0
  139. package/dist/chunk-VMGJFJIM.cjs.map +1 -1
  140. package/dist/chunk-VR7T3I5N.cjs.map +1 -1
  141. package/dist/chunk-VWJZWXTJ.cjs.map +1 -1
  142. package/dist/chunk-VX3R7DUJ.cjs.map +1 -1
  143. package/dist/{chunk-LTEGKVQQ.js → chunk-W4M6PGBQ.js} +2 -2
  144. package/dist/chunk-WAK73JNG.cjs.map +1 -1
  145. package/dist/chunk-WCOWHFZD.cjs.map +1 -1
  146. package/dist/chunk-WEF4N7J4.cjs.map +1 -1
  147. package/dist/{chunk-4X7UJTXJ.js → chunk-WH4WW45N.js} +2 -2
  148. package/dist/chunk-WHJI4PQ2.cjs.map +1 -1
  149. package/dist/chunk-WK6DXBUD.cjs.map +1 -1
  150. package/dist/chunk-WPWV7ZEM.cjs.map +1 -1
  151. package/dist/chunk-WSRQ3X55.cjs.map +1 -1
  152. package/dist/chunk-X6SZNPFL.cjs.map +1 -1
  153. package/dist/chunk-X764QBCC.cjs.map +1 -1
  154. package/dist/{chunk-L5OF6DSH.cjs → chunk-XAU2ICXA.cjs} +2 -2
  155. package/dist/chunk-XAU2ICXA.cjs.map +1 -0
  156. package/dist/chunk-XH7UHZOF.cjs.map +1 -1
  157. package/dist/chunk-XICDURQQ.cjs.map +1 -1
  158. package/dist/chunk-XMUXVBF2.cjs.map +1 -1
  159. package/dist/chunk-XX5NP5VA.cjs.map +1 -1
  160. package/dist/chunk-Y6NKJM35.cjs.map +1 -1
  161. package/dist/chunk-YEP2NVSS.js +2 -0
  162. package/dist/chunk-YEP2NVSS.js.map +1 -0
  163. package/dist/{chunk-PRTEIKN2.js → chunk-YO6FIHXC.js} +1 -1
  164. package/dist/chunk-YO6FIHXC.js.map +1 -0
  165. package/dist/chunk-ZBG4FI7E.cjs.map +1 -1
  166. package/dist/chunk-ZEDMMWJI.cjs.map +1 -1
  167. package/dist/chunk-ZEQQVU3K.cjs.map +1 -1
  168. package/dist/chunk-ZJQITDTA.cjs.map +1 -1
  169. package/dist/common/assert.cjs.map +1 -1
  170. package/dist/common/bin/index.cjs.map +1 -1
  171. package/dist/common/bin/lib0/binary.cjs.map +1 -1
  172. package/dist/common/bin/lib0/buffer.cjs.map +1 -1
  173. package/dist/common/bin/lib0/create.cjs.map +1 -1
  174. package/dist/common/bin/lib0/decoding.cjs.map +1 -1
  175. package/dist/common/bin/lib0/encoding.cjs.map +1 -1
  176. package/dist/common/bin/lib0/string.cjs.map +1 -1
  177. package/dist/common/crypto/aes-sealed.cjs.map +1 -1
  178. package/dist/common/crypto/crypto.cjs.map +1 -1
  179. package/dist/common/crypto/index.cjs.map +1 -1
  180. package/dist/common/crypto/xaes.cjs.map +1 -1
  181. package/dist/common/csv.cjs.map +1 -1
  182. package/dist/common/data/array.cjs.map +1 -1
  183. package/dist/common/data/basex-secure.cjs.map +1 -1
  184. package/dist/common/data/basex.cjs.map +1 -1
  185. package/dist/common/data/bin-types.cjs.map +1 -1
  186. package/dist/common/data/bin.cjs.map +1 -1
  187. package/dist/common/data/camelcase.cjs.map +1 -1
  188. package/dist/common/data/convert.cjs.map +1 -1
  189. package/dist/common/data/datauri.cjs.map +1 -1
  190. package/dist/common/data/day-legacy.cjs +1 -1
  191. package/dist/common/data/day-legacy.cjs.map +1 -1
  192. package/dist/common/data/day-legacy.js +1 -1
  193. package/dist/common/data/day.cjs +1 -1
  194. package/dist/common/data/day.cjs.map +1 -1
  195. package/dist/common/data/day.d.cts +19 -1
  196. package/dist/common/data/day.d.ts +19 -1
  197. package/dist/common/data/day.js +1 -1
  198. package/dist/common/data/decimal.cjs.map +1 -1
  199. package/dist/common/data/deep.cjs.map +1 -1
  200. package/dist/common/data/diff.cjs.map +1 -1
  201. package/dist/common/data/distributed.cjs.map +1 -1
  202. package/dist/common/data/format.cjs.map +1 -1
  203. package/dist/common/data/html.cjs.map +1 -1
  204. package/dist/common/data/index.cjs +1 -1
  205. package/dist/common/data/index.cjs.map +1 -1
  206. package/dist/common/data/index.d.cts +1 -1
  207. package/dist/common/data/index.d.ts +1 -1
  208. package/dist/common/data/index.js +1 -1
  209. package/dist/common/data/is.cjs.map +1 -1
  210. package/dist/common/data/json.cjs.map +1 -1
  211. package/dist/common/data/list.cjs.map +1 -1
  212. package/dist/common/data/lru.cjs.map +1 -1
  213. package/dist/common/data/math.cjs.map +1 -1
  214. package/dist/common/data/message.cjs.map +1 -1
  215. package/dist/common/data/object-changes.cjs.map +1 -1
  216. package/dist/common/data/object.cjs.map +1 -1
  217. package/dist/common/data/orderby.cjs.map +1 -1
  218. package/dist/common/data/path.cjs.map +1 -1
  219. package/dist/common/data/regexp.cjs.map +1 -1
  220. package/dist/common/data/rounding.cjs.map +1 -1
  221. package/dist/common/data/signal.cjs.map +1 -1
  222. package/dist/common/data/sortable.cjs.map +1 -1
  223. package/dist/common/data/sorted.cjs.map +1 -1
  224. package/dist/common/data/string-deburr.cjs.map +1 -1
  225. package/dist/common/data/string-hash-fnv.cjs.map +1 -1
  226. package/dist/common/data/string-hash-pool.cjs.map +1 -1
  227. package/dist/common/data/url.cjs.map +1 -1
  228. package/dist/common/data/utils.cjs.map +1 -1
  229. package/dist/common/data/wordlist.cjs.map +1 -1
  230. package/dist/common/data/xrx.cjs.map +1 -1
  231. package/dist/common/dispose-defer.cjs.map +1 -1
  232. package/dist/common/dispose-types.cjs.map +1 -1
  233. package/dist/common/dispose-utils.cjs.map +1 -1
  234. package/dist/common/exec/index.cjs +1 -1
  235. package/dist/common/exec/index.cjs.map +1 -1
  236. package/dist/common/exec/index.js +1 -1
  237. package/dist/common/exec/mutex.cjs.map +1 -1
  238. package/dist/common/exec/pool.cjs +1 -1
  239. package/dist/common/exec/pool.cjs.map +1 -1
  240. package/dist/common/exec/pool.js +1 -1
  241. package/dist/common/exec/progress.cjs.map +1 -1
  242. package/dist/common/exec/promise.cjs.map +1 -1
  243. package/dist/common/exec/queue.cjs.map +1 -1
  244. package/dist/common/exec/throttle-debounce.cjs.map +1 -1
  245. package/dist/common/global.cjs.map +1 -1
  246. package/dist/common/index.cjs +1 -1
  247. package/dist/common/index.cjs.map +1 -1
  248. package/dist/common/index.d.cts +1 -1
  249. package/dist/common/index.d.ts +1 -1
  250. package/dist/common/index.js +1 -1
  251. package/dist/common/localhost.cjs.map +1 -1
  252. package/dist/common/log/index.cjs.map +1 -1
  253. package/dist/common/log/log-base.cjs.map +1 -1
  254. package/dist/common/log/log-colors.cjs.map +1 -1
  255. package/dist/common/log/log-config.cjs.map +1 -1
  256. package/dist/common/log/log-console-capture.cjs.map +1 -1
  257. package/dist/common/log/log-console-original.cjs.map +1 -1
  258. package/dist/common/log/log-console.cjs.map +1 -1
  259. package/dist/common/log/log-context.cjs.map +1 -1
  260. package/dist/common/log/log-filter.cjs.map +1 -1
  261. package/dist/common/log/log-memory.cjs.map +1 -1
  262. package/dist/common/log/log-noop.cjs.map +1 -1
  263. package/dist/common/log/log.cjs.map +1 -1
  264. package/dist/common/msg/channel-debug.cjs.map +1 -1
  265. package/dist/common/msg/channel-local.cjs.map +1 -1
  266. package/dist/common/msg/channel-resilient.cjs.map +1 -1
  267. package/dist/common/msg/channel-wkwebview.cjs +2 -0
  268. package/dist/common/msg/channel-wkwebview.cjs.map +1 -0
  269. package/dist/common/msg/channel-wkwebview.d.cts +22 -0
  270. package/dist/common/msg/channel-wkwebview.d.ts +22 -0
  271. package/dist/common/msg/channel-wkwebview.js +2 -0
  272. package/dist/common/msg/channel-wkwebview.js.map +1 -0
  273. package/dist/common/msg/channel.cjs.map +1 -1
  274. package/dist/common/msg/emitter.cjs.map +1 -1
  275. package/dist/common/msg/encoder.cjs.map +1 -1
  276. package/dist/common/msg/index.cjs.map +1 -1
  277. package/dist/common/msg/messages.cjs.map +1 -1
  278. package/dist/common/msg/pipe.cjs.map +1 -1
  279. package/dist/common/msg/pubsub.cjs.map +1 -1
  280. package/dist/common/msg/rpc.cjs.map +1 -1
  281. package/dist/common/network.cjs.map +1 -1
  282. package/dist/common/platform.cjs.map +1 -1
  283. package/dist/common/schema/_sandbox/sandbox-inherit.cjs +1 -0
  284. package/dist/common/schema/_sandbox/sandbox-inherit.cjs.map +1 -0
  285. package/dist/common/schema/_sandbox/sandbox-inherit.d.cts +2 -0
  286. package/dist/common/schema/_sandbox/sandbox-inherit.d.ts +2 -0
  287. package/dist/common/schema/_sandbox/sandbox-inherit.js +1 -0
  288. package/dist/common/schema/_sandbox/sandbox-inherit.js.map +1 -0
  289. package/dist/common/schema/_sandbox/sandbox.cjs +1 -0
  290. package/dist/common/schema/_sandbox/sandbox.cjs.map +1 -0
  291. package/dist/common/schema/_sandbox/sandbox.d.cts +2 -0
  292. package/dist/common/schema/_sandbox/sandbox.d.ts +2 -0
  293. package/dist/common/schema/_sandbox/sandbox.js +1 -0
  294. package/dist/common/schema/_sandbox/sandbox.js.map +1 -0
  295. package/dist/common/schema/_sandbox/sandbox.xspec.cjs +1 -0
  296. package/dist/common/schema/_sandbox/sandbox.xspec.cjs.map +1 -0
  297. package/dist/common/schema/_sandbox/sandbox.xspec.d.cts +2 -0
  298. package/dist/common/schema/_sandbox/sandbox.xspec.d.ts +2 -0
  299. package/dist/common/schema/_sandbox/sandbox.xspec.js +1 -0
  300. package/dist/common/schema/_sandbox/sandbox.xspec.js.map +1 -0
  301. package/dist/common/schema/export-json-schema.cjs +1 -1
  302. package/dist/common/schema/export-json-schema.cjs.map +1 -1
  303. package/dist/common/schema/export-json-schema.js +1 -1
  304. package/dist/common/schema/export-swift.cjs +1 -1
  305. package/dist/common/schema/export-swift.cjs.map +1 -1
  306. package/dist/common/schema/export-swift.js +1 -1
  307. package/dist/common/schema/export-typescript.cjs.map +1 -1
  308. package/dist/common/schema/index.cjs +1 -1
  309. package/dist/common/schema/index.cjs.map +1 -1
  310. package/dist/common/schema/index.js +1 -1
  311. package/dist/common/schema/parse-args.cjs +1 -1
  312. package/dist/common/schema/parse-args.cjs.map +1 -1
  313. package/dist/common/schema/parse-args.js +1 -1
  314. package/dist/common/schema/parse-env.cjs +1 -1
  315. package/dist/common/schema/parse-env.cjs.map +1 -1
  316. package/dist/common/schema/parse-env.js +1 -1
  317. package/dist/common/schema/parse-object.cjs +1 -1
  318. package/dist/common/schema/parse-object.cjs.map +1 -1
  319. package/dist/common/schema/parse-object.js +1 -1
  320. package/dist/common/schema/schema-standard.cjs.map +1 -1
  321. package/dist/common/schema/schema.cjs.map +1 -1
  322. package/dist/common/schema/serialize.cjs.map +1 -1
  323. package/dist/common/schema/type-test.cjs.map +1 -1
  324. package/dist/common/schema/utils.cjs.map +1 -1
  325. package/dist/common/schema/z-collection.cjs.map +1 -1
  326. package/dist/common/schema/z.cjs.map +1 -1
  327. package/dist/common/storage/index.cjs.map +1 -1
  328. package/dist/common/storage/memstorage.cjs.map +1 -1
  329. package/dist/common/test.cjs +1 -1
  330. package/dist/common/test.cjs.map +1 -1
  331. package/dist/common/test.js +1 -1
  332. package/dist/common/time.cjs.map +1 -1
  333. package/dist/common/timeout.cjs.map +1 -1
  334. package/dist/common/types.cjs.map +1 -1
  335. package/dist/common/utils.cjs.map +1 -1
  336. package/dist/common/uuid.cjs.map +1 -1
  337. package/dist/index.all.cjs +1 -1
  338. package/dist/index.all.cjs.map +1 -1
  339. package/dist/index.all.d.cts +1 -1
  340. package/dist/index.all.d.ts +1 -1
  341. package/dist/index.all.js +1 -1
  342. package/dist/index.browser.cjs +1 -1
  343. package/dist/index.browser.cjs.map +1 -1
  344. package/dist/index.browser.d.cts +1 -1
  345. package/dist/index.browser.d.ts +1 -1
  346. package/dist/index.browser.js +1 -1
  347. package/dist/index.jsr.cjs.map +1 -1
  348. package/dist/index.node.cjs +1 -1
  349. package/dist/index.node.cjs.map +1 -1
  350. package/dist/index.node.d.cts +1 -1
  351. package/dist/index.node.d.ts +1 -1
  352. package/dist/index.node.js +1 -1
  353. package/dist/node/args.cjs.map +1 -1
  354. package/dist/node/clipboard.cjs.map +1 -1
  355. package/dist/node/crypto.cjs.map +1 -1
  356. package/dist/node/env.cjs.map +1 -1
  357. package/dist/node/files-async.cjs.map +1 -1
  358. package/dist/node/files.cjs.map +1 -1
  359. package/dist/node/filestorage.cjs.map +1 -1
  360. package/dist/node/fs.cjs.map +1 -1
  361. package/dist/node/glob.cjs.map +1 -1
  362. package/dist/node/index.cjs +1 -1
  363. package/dist/node/index.cjs.map +1 -1
  364. package/dist/node/index.js +1 -1
  365. package/dist/node/log/index.cjs +1 -1
  366. package/dist/node/log/index.cjs.map +1 -1
  367. package/dist/node/log/index.js +1 -1
  368. package/dist/node/log/log-context-node.cjs +1 -1
  369. package/dist/node/log/log-context-node.cjs.map +1 -1
  370. package/dist/node/log/log-context-node.js +1 -1
  371. package/dist/node/log/log-file-rotation.cjs +1 -1
  372. package/dist/node/log/log-file-rotation.cjs.map +1 -1
  373. package/dist/node/log/log-file-rotation.js +1 -1
  374. package/dist/node/log/log-file.cjs +1 -1
  375. package/dist/node/log/log-file.cjs.map +1 -1
  376. package/dist/node/log/log-file.js +1 -1
  377. package/dist/node/log/log-node.cjs.map +1 -1
  378. package/dist/node/log/log-rotation.cjs.map +1 -1
  379. package/dist/node/log/log-util.cjs.map +1 -1
  380. package/dist/node/open-browser.cjs.map +1 -1
  381. package/dist/shim-window.d.cjs.map +1 -1
  382. package/package.json +16 -15
  383. package/src/common/data/day.spec.ts +20 -1
  384. package/src/common/data/day.ts +44 -0
  385. package/src/common/exec/pool.ts +1 -1
  386. package/src/common/msg/channel-wkwebview.ts +47 -0
  387. package/src/common/schema/_sandbox/sandbox-inherit.ts +13 -0
  388. package/src/common/schema/_sandbox/sandbox.ts +42 -0
  389. package/src/common/schema/_sandbox/sandbox.xspec.ts +45 -0
  390. package/src/common/schema/parse-object.ts +1 -3
  391. package/src/common/time.spec.ts +3 -4
  392. package/dist/chunk-5BA3O5XZ.cjs.map +0 -1
  393. package/dist/chunk-AUYYYDRM.cjs.map +0 -1
  394. package/dist/chunk-BRQSQXKK.js.map +0 -1
  395. package/dist/chunk-DAD3M2IM.cjs.map +0 -1
  396. package/dist/chunk-ETMFCGHO.cjs.map +0 -1
  397. package/dist/chunk-IMM23TO5.cjs.map +0 -1
  398. package/dist/chunk-KHK37DTS.cjs +0 -2
  399. package/dist/chunk-KHK37DTS.cjs.map +0 -1
  400. package/dist/chunk-L5OF6DSH.cjs.map +0 -1
  401. package/dist/chunk-LXFL3VYA.cjs.map +0 -1
  402. package/dist/chunk-PRTEIKN2.js.map +0 -1
  403. package/dist/chunk-TSNDVQHW.js +0 -2
  404. package/dist/chunk-TSNDVQHW.js.map +0 -1
  405. package/dist/chunk-X7RJP4DR.cjs.map +0 -1
  406. /package/dist/{chunk-RZPIAOGG.js.map → chunk-BPPN3ZNV.js.map} +0 -0
  407. /package/dist/{chunk-AH3LPY2A.js.map → chunk-DBXJFUZ7.js.map} +0 -0
  408. /package/dist/{chunk-LI2YWV3G.js.map → chunk-KWFFSQMW.js.map} +0 -0
  409. /package/dist/{chunk-UFYY2K4G.js.map → chunk-MV2F4DQ6.js.map} +0 -0
  410. /package/dist/{chunk-LTEGKVQQ.js.map → chunk-W4M6PGBQ.js.map} +0 -0
  411. /package/dist/{chunk-4X7UJTXJ.js.map → chunk-WH4WW45N.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-Q2SNIYQS.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-Q2SNIYQS.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-Q2SNIYQS.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-Q2SNIYQS.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-QOZ5S3UC.cjs","../src/common/msg/channel-local.ts"],"names":["LocalChannel","Channel","__name","data","uuid","createLocalChannelPair","w1","w2"],"mappings":"AAAA,ipBAAmC,wDAAyC,wDAAyC,ICIxGA,CAAAA,WAAN,MAAA,QAA2BC,mBAAQ,6EAJ1C,MAI0C,CAAAC,iCAAAA,IAAA,CAAA,cAAA,CAAA,gBACxC,WAAA,CAAc,CAAA,EAAA,WAId,CAAYC,CAAAA,CAAW,iBAChB,IAAA,mBAAK,KAAA,6BAAO,IAAA,mBAAK,SAAA,CAAW,CAC/B,IAAA,CAAAA,CAAAA,CACA,MAAA,CAAQ,OAAA,CACR,WAAA,CAAaC,iCAAAA,CACf,CAAC,GACH,CACF,UAAA,CAEO,SAASC,CAAAA,CAAAA,CAAuD,CACrE,IAAMC,CAAAA,CAAK,IAAIN,CAAAA,CACTO,CAAAA,CAAK,IAAIP,CAAAA,CAEf,OAAAM,CAAAA,CAAG,KAAA,CAAQC,CAAAA,CACXA,CAAAA,CAAG,KAAA,CAAQD,CAAAA,CAEJ,CAACA,CAAAA,CAAIC,CAAE,CAChB,CARgBL,iCAAAA,CAAAG,CAAA,wBAAA,CAAA,CAAA,6BAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-QOZ5S3UC.cjs","sourcesContent":[null,"import { uuid } from '../uuid'\nimport { Channel } from './channel'\n\n/** Very basic channel demonstrating local communication */\nexport class LocalChannel extends Channel {\n isConnected = true\n\n other?: LocalChannel\n\n postMessage(data: any) {\n void this.other?.emit('message', {\n data, // : cloneObject(data),\n origin: 'local',\n lastEventId: uuid(),\n })\n }\n}\n\nexport function createLocalChannelPair(): [LocalChannel, LocalChannel] {\n const w1 = new LocalChannel()\n const w2 = new LocalChannel()\n\n w1.other = w2\n w2.other = w1\n\n return [w1, w2]\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-QOZ5S3UC.cjs","../src/common/msg/channel-local.ts"],"names":["LocalChannel","Channel","__name","data","uuid","createLocalChannelPair","w1","w2"],"mappings":"AAAA,ipBAAmC,wDAAyC,wDAAyC,ICIxGA,CAAAA,WAAN,MAAA,QAA2BC,mBAAQ,6EAJ1C,MAI0C,CAAAC,iCAAAA,IAAA,CAAA,cAAA,CAAA,gBACxC,WAAA,CAAc,CAAA,EAAA,WAId,CAAYC,CAAAA,CAAW,iBAChB,IAAA,mBAAK,KAAA,6BAAO,IAAA,mBAAK,SAAA,CAAW,CAC/B,IAAA,CAAAA,CAAAA,CACA,MAAA,CAAQ,OAAA,CACR,WAAA,CAAaC,iCAAAA,CACf,CAAC,GACH,CACF,UAAA,CAEO,SAASC,CAAAA,CAAAA,CAAuD,CACrE,IAAMC,CAAAA,CAAK,IAAIN,CAAAA,CACTO,CAAAA,CAAK,IAAIP,CAAAA,CAEf,OAAAM,CAAAA,CAAG,KAAA,CAAQC,CAAAA,CACXA,CAAAA,CAAG,KAAA,CAAQD,CAAAA,CAEJ,CAACA,CAAAA,CAAIC,CAAE,CAChB,CARgBL,iCAAAA,CAAAG,CAAA,wBAAA,CAAA,CAAA,6BAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-QOZ5S3UC.cjs","sourcesContent":[null,"import { uuid } from '../uuid'\nimport { Channel } from './channel'\n\n/** Very basic channel demonstrating local communication */\nexport class LocalChannel extends Channel {\n isConnected = true\n\n other?: LocalChannel\n\n postMessage(data: any) {\n void this.other?.emit('message', {\n data, // : cloneObject(data),\n origin: 'local',\n lastEventId: uuid(),\n })\n }\n}\n\nexport function createLocalChannelPair(): [LocalChannel, LocalChannel] {\n const w1 = new LocalChannel()\n const w2 = new LocalChannel()\n\n w1.other = w2\n w2.other = w1\n\n return [w1, w2]\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-R3NVN3FY.cjs","../src/common/schema/export-swift.ts"],"names":["mapSwiftType","schemaExportSwiftStruct","schema","name","assert","isSchemaObjectFlat","protocol"],"mappings":"AAAA,yuBAAwC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,ICetMA,CAAAA,CAAe,CACnB,MAAA,CAAQ,QAAA,CACR,MAAA,CAAQ,QAAA,CACR,GAAA,CAAK,KAAA,CACL,OAAA,CAAS,MACX,CAAA,CAEO,SAASC,CAAAA,CAA2BC,CAAAA,CAAiBC,CAAAA,CAAe,SAAA,CAAmB,CAC5FC,iCAAAA,iCAAOC,CAAyB,CAAA,CAAG,gCAAgC,CAAA,CAEnE,IAAIC,CAAAA,CAAW,EAAA,iBACXJ,CAAAA,qBAAO,KAAA,6BAAO,eAAA,EAAA,CAChBI,CAAAA,CAAW,CAAA,EAAA,EAAKJ,CAAAA,CAAO,KAAA,CAAM,aAAa,CAAA,CAAA;AAL9B","file":"/home/runner/work/zeed/zeed/dist/chunk-R3NVN3FY.cjs","sourcesContent":[null,"import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { isPrimitive } from '../data'\nimport { objectMap } from '../data/object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n interface TypeMeta {\n swiftName?: string\n swiftProtocol?: string\n swiftDesc?: string\n swiftDefault?: string\n }\n}\n\nconst mapSwiftType = {\n string: 'String',\n number: 'Double',\n int: 'Int',\n boolean: 'Bool',\n} as any\n\nexport function schemaExportSwiftStruct<T>(schema: Type<T>, name: string = 'Example'): string {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n let protocol = ''\n if (schema._meta?.swiftProtocol) {\n protocol = `: ${schema._meta.swiftProtocol}`\n }\n\n const lines: string[] = [\n `struct ${schema._meta?.swiftName ?? name}${protocol} {`,\n ]\n\n objectMap(schema._object!, (key, schema: Type<any>) => {\n let s = ` var ${key}: ${mapSwiftType[schema.type] ?? schema.type}`\n if (schema._optional === true)\n s += '?'\n if (schema._meta?.swiftDefault || (schema._default != null && isPrimitive(schema._default)))\n s += ` = ${schema._meta?.swiftDefault ?? JSON.stringify(schema._default)}`\n lines.push(s)\n })\n\n lines.push('}')\n\n return lines.join('\\n')\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-R3NVN3FY.cjs","../src/common/schema/export-swift.ts"],"names":["mapSwiftType","schemaExportSwiftStruct","schema","name","assert","isSchemaObjectFlat","protocol"],"mappings":"AAAA,yuBAAwC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,ICetMA,CAAAA,CAAe,CACnB,MAAA,CAAQ,QAAA,CACR,MAAA,CAAQ,QAAA,CACR,GAAA,CAAK,KAAA,CACL,OAAA,CAAS,MACX,CAAA,CAEO,SAASC,CAAAA,CAA2BC,CAAAA,CAAiBC,CAAAA,CAAe,SAAA,CAAmB,CAC5FC,iCAAAA,iCAAOC,CAAyB,CAAA,CAAG,gCAAgC,CAAA,CAEnE,IAAIC,CAAAA,CAAW,EAAA,iBACXJ,CAAAA,qBAAO,KAAA,6BAAO,eAAA,EAAA,CAChBI,CAAAA,CAAW,CAAA,EAAA,EAAKJ,CAAAA,CAAO,KAAA,CAAM,aAAa,CAAA,CAAA;AAL9B","file":"/Users/dirk/work/github-zeed/dist/chunk-R3NVN3FY.cjs","sourcesContent":[null,"import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { isPrimitive } from '../data'\nimport { objectMap } from '../data/object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n interface TypeMeta {\n swiftName?: string\n swiftProtocol?: string\n swiftDesc?: string\n swiftDefault?: string\n }\n}\n\nconst mapSwiftType = {\n string: 'String',\n number: 'Double',\n int: 'Int',\n boolean: 'Bool',\n} as any\n\nexport function schemaExportSwiftStruct<T>(schema: Type<T>, name: string = 'Example'): string {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n let protocol = ''\n if (schema._meta?.swiftProtocol) {\n protocol = `: ${schema._meta.swiftProtocol}`\n }\n\n const lines: string[] = [\n `struct ${schema._meta?.swiftName ?? name}${protocol} {`,\n ]\n\n objectMap(schema._object!, (key, schema: Type<any>) => {\n let s = ` var ${key}: ${mapSwiftType[schema.type] ?? schema.type}`\n if (schema._optional === true)\n s += '?'\n if (schema._meta?.swiftDefault || (schema._default != null && isPrimitive(schema._default)))\n s += ` = ${schema._meta?.swiftDefault ?? JSON.stringify(schema._default)}`\n lines.push(s)\n })\n\n lines.push('}')\n\n return lines.join('\\n')\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-R74LEJVE.cjs","../src/browser/base64.ts"],"names":["urlBase64ToUint8Array","base64String","padding","base64","rawData","outputArray","i","__name"],"mappings":"AAAA,iIAAmC,SCCnBA,CAAAA,CAAsBC,CAAAA,CAA8C,CAClF,IAAMC,CAAAA,CAAU,GAAA,CAAI,MAAA,CAAA,CAAQ,CAAA,CAAKD,CAAAA,CAAa,MAAA,CAAS,CAAA,CAAA,CAAM,CAAC,CAAA,CACxDE,CAAAA,CAAAA,CAAUF,CAAAA,CAAeC,CAAAA,CAAAA,CAAS,OAAA,CAAQ,IAAA,CAAM,GAAG,CAAA,CAAE,OAAA,CAAQ,IAAA,CAAM,GAAG,CAAA,CACtEE,CAAAA,CAAU,IAAA,CAAKD,CAAM,CAAA,CACrBE,CAAAA,CAAc,IAAI,UAAA,CAAWD,CAAAA,CAAQ,MAAM,CAAA,CACjD,GAAA,CAAA,IAASE,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAQ,MAAA,CAAQ,EAAEE,CAAAA,CACpCD,CAAAA,CAAYC,CAAC,CAAA,CAAIF,CAAAA,CAAQ,UAAA,CAAWE,CAAC,CAAA,CACvC,OAAOD,CACT,CARgBE,iCAAAA,CAAAP,CAAA,uBAAA,CAAA,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-R74LEJVE.cjs","sourcesContent":[null,"/** @deprecated use fromBase64 instead */\nexport function urlBase64ToUint8Array(base64String: string): Uint8Array | undefined {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4)\n const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/')\n const rawData = atob(base64)\n const outputArray = new Uint8Array(rawData.length)\n for (let i = 0; i < rawData.length; ++i)\n outputArray[i] = rawData.charCodeAt(i)\n return outputArray\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-R74LEJVE.cjs","../src/browser/base64.ts"],"names":["urlBase64ToUint8Array","base64String","padding","base64","rawData","outputArray","i","__name"],"mappings":"AAAA,iIAAmC,SCCnBA,CAAAA,CAAsBC,CAAAA,CAA8C,CAClF,IAAMC,CAAAA,CAAU,GAAA,CAAI,MAAA,CAAA,CAAQ,CAAA,CAAKD,CAAAA,CAAa,MAAA,CAAS,CAAA,CAAA,CAAM,CAAC,CAAA,CACxDE,CAAAA,CAAAA,CAAUF,CAAAA,CAAeC,CAAAA,CAAAA,CAAS,OAAA,CAAQ,IAAA,CAAM,GAAG,CAAA,CAAE,OAAA,CAAQ,IAAA,CAAM,GAAG,CAAA,CACtEE,CAAAA,CAAU,IAAA,CAAKD,CAAM,CAAA,CACrBE,CAAAA,CAAc,IAAI,UAAA,CAAWD,CAAAA,CAAQ,MAAM,CAAA,CACjD,GAAA,CAAA,IAASE,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAQ,MAAA,CAAQ,EAAEE,CAAAA,CACpCD,CAAAA,CAAYC,CAAC,CAAA,CAAIF,CAAAA,CAAQ,UAAA,CAAWE,CAAC,CAAA,CACvC,OAAOD,CACT,CARgBE,iCAAAA,CAAAP,CAAA,uBAAA,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-R74LEJVE.cjs","sourcesContent":[null,"/** @deprecated use fromBase64 instead */\nexport function urlBase64ToUint8Array(base64String: string): Uint8Array | undefined {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4)\n const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/')\n const rawData = atob(base64)\n const outputArray = new Uint8Array(rawData.length)\n for (let i = 0; i < rawData.length; ++i)\n outputArray[i] = rawData.charCodeAt(i)\n return outputArray\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-RAXM7FU3.cjs","../src/common/msg/rpc.ts"],"names":["rpcCounter","RPCMode","defaultSerialize","__name","i","defaultDeserialize","setupRPCBasic","options","functions","eventNames","log","post","on","serialize","deserialize","timeout","onError","onTimeoutError","onlyEvents","exceptions","stringHashPool","checkEventNames","registerFunctions","additionalFunctions","registerEventNames","additionalEventNames","rpcPromiseMap","data","msg","mode","id","method","args","methodName","result","error","fn","e","promise","err","_","sendEvent","sendCall","resolve","reject","createPromise","timeoutId","useRPC","proxyHandler","useRPCHub","createRPCProxy"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-RAXM7FU3.cjs","sourcesContent":[null,"// From https://github.com/antfu/birpc/blob/main/src/index.ts MIT\n\nimport type { UseStringHashPool } from '../data/string-hash-pool'\nimport type { LoggerInterface } from '../log/log-base'\nimport type { Pipe } from './pipe'\nimport { createPromise } from '../exec/promise'\n\nexport type ArgumentsType<T> = T extends (...args: infer A) => any ? A : never\nexport type ReturnType<T> = T extends (...args: any) => infer R ? R : never\n\nexport interface RPCOptionsBasic extends Pipe {\n /** No return values expected */\n onlyEvents?: boolean\n /** Maximum timeout for waiting for response, in milliseconds */\n timeout?: number\n /** Custom logger */\n log?: LoggerInterface\n /** Custom error handler */\n onError?: (error: Error, functionName: string, args: any[]) => boolean | void\n /** Custom error handler for timeouts */\n onTimeoutError?: (functionName: string, args: any[]) => boolean | void\n /** Throw execptions. Default: true */\n exceptions?: boolean\n /** */\n stringHashPool?: UseStringHashPool\n}\n\nexport interface RPCOptions<Remote> extends RPCOptionsBasic {\n // /** No return values expected */\n // onlyEvents?: boolean\n /** Names of remote functions that do not need response. */\n eventNames?: (keyof Remote)[]\n}\n\nexport interface RPCFn<T> {\n /** Call the remote function and wait for the result. */\n (...args: ArgumentsType<T>): Promise<Awaited<ReturnType<T>>>\n /** Send event without asking for response */\n asEvent: (...args: ArgumentsType<T>) => void\n}\n\nexport type RPCReturn<RemoteFunctions> = {\n [K in keyof RemoteFunctions]: RPCFn<RemoteFunctions[K]>\n}\n\nlet rpcCounter = 1\n\nexport enum RPCMode {\n request = 1,\n event = 2,\n resolve = 3,\n reject = 4,\n}\n\nexport type RPCMessage = [\n mode: RPCMode,\n id: number,\n method: string | number | any,\n ...any,\n]\n\nconst defaultSerialize = (i: any) => i\nconst defaultDeserialize = defaultSerialize\n\nfunction setupRPCBasic(options: RPCOptionsBasic, functions: Record<string, (...args: any) => Promise<any>>, eventNames: string[] = []) {\n const {\n log,\n post,\n on,\n serialize = defaultSerialize,\n deserialize = defaultDeserialize,\n timeout = 60e3,\n onError,\n onTimeoutError,\n onlyEvents = false,\n exceptions = true,\n stringHashPool,\n } = options\n\n if (stringHashPool) {\n Object.keys(functions).forEach(stringHashPool.hash)\n }\n\n function checkEventNames(eventNames: string[]) {\n // eventNames.forEach((n) => {\n // if (functions[n] == null)\n // throw new Error(`event name ${n} has no registered function`)\n // })\n }\n\n checkEventNames(eventNames)\n\n function registerFunctions(additionalFunctions: any) {\n Object.assign(functions, additionalFunctions ?? {})\n if (stringHashPool)\n Object.keys(additionalFunctions).forEach(stringHashPool.hash)\n }\n\n function registerEventNames(additionalEventNames: string[]) {\n checkEventNames(additionalEventNames)\n eventNames.push(...additionalEventNames)\n }\n\n const rpcPromiseMap = new Map<number, {\n resolve: (...args: any) => any\n reject: (...args: any) => any\n timeoutId: Parameters<typeof clearTimeout>[0]\n }>()\n\n on(async (data) => {\n try {\n const msg = await deserialize(data) as RPCMessage\n const mode = msg?.[0]\n const id = mode === RPCMode.event ? 0 : msg?.[1]\n const [method, ...args] = msg.slice(mode === RPCMode.event ? 1 : 2)\n const methodName = stringHashPool?.stringForHash(method) ?? method\n if (mode === RPCMode.request || mode === RPCMode.event) {\n let result, error: any\n if (method != null) {\n try {\n const fn = functions[methodName]\n result = await fn(...args)\n }\n catch (e) {\n error = String(e)\n }\n }\n else {\n error = 'Method implementation missing'\n }\n if (error) {\n log?.warn('error', msg, error)\n onError?.(error, method ?? '', args)\n }\n if (id > 0) {\n const data = await serialize(error\n ? [RPCMode.reject, id, error]\n : [RPCMode.resolve, id, result])\n await post(data)\n }\n }\n else if (id) {\n const promise = rpcPromiseMap.get(id)\n if (promise != null) {\n clearTimeout(promise.timeoutId)\n if (mode === RPCMode.reject && exceptions === true)\n promise.reject(method)\n else\n promise.resolve(method)\n }\n rpcPromiseMap.delete(id)\n }\n }\n catch (err) {\n log?.warn('Error on handling RPC data. Invalid?', err, data)\n }\n })\n\n const proxyHandler = {\n get(_: any, methodName: string) {\n const method = stringHashPool?.hash(methodName) ?? methodName\n const sendEvent = async (...args: any[]) => await post(await serialize([RPCMode.event, method, ...args]))\n\n if (onlyEvents || eventNames.includes(methodName)) {\n sendEvent.asEvent = sendEvent\n return sendEvent\n }\n\n const sendCall = async (...args: any[]) => {\n const [promise, resolve, reject] = createPromise()\n const id = rpcCounter++\n\n let timeoutId: any\n if (timeout >= 0) {\n timeoutId = setTimeout(() => {\n try {\n // Custom onTimeoutError handler can throw its own error too\n onTimeoutError?.(methodName, args)\n throw new Error(`rpc timeout on calling \"${methodName}\"`)\n }\n catch (e) {\n if (exceptions === true)\n reject(e)\n else\n resolve(undefined)\n }\n rpcPromiseMap.delete(id)\n\n // Garbage Collection https://jakearchibald.com/2024/garbage-collection-and-closures/\n clearTimeout(timeoutId)\n timeoutId = undefined\n }, timeout).unref?.()\n }\n\n rpcPromiseMap.set(id, { resolve, reject, timeoutId })\n const data = await serialize([RPCMode.request, id, method, ...args])\n await post(data)\n return promise\n }\n sendCall.asEvent = sendEvent\n return sendCall\n },\n }\n\n return {\n post,\n serialize,\n rpcPromiseMap,\n proxyHandler,\n registerFunctions,\n registerEventNames,\n }\n}\n\nexport function useRPC<LocalFunctions, RemoteFunctions = LocalFunctions>(\n functions: LocalFunctions,\n options: RPCOptions<RemoteFunctions>,\n): RPCReturn<RemoteFunctions> {\n const { eventNames = [] } = options\n\n const { proxyHandler } = setupRPCBasic(options, functions as any, eventNames as any)\n\n return new Proxy({}, proxyHandler)\n}\n\nexport function useRPCHub(options: RPCOptionsBasic) {\n const eventNames: string[] = []\n const functions: Record<string, any> = {}\n\n const {\n proxyHandler,\n registerFunctions,\n registerEventNames,\n } = setupRPCBasic(options, functions, eventNames)\n\n function createRPCProxy() {\n return new Proxy({}, proxyHandler)\n }\n\n return function<LocalFunctions, RemoteFunctions = LocalFunctions>(\n additionalFunctions?: LocalFunctions,\n additionalEventNames: string[] = [],\n ): RPCReturn<RemoteFunctions> {\n registerFunctions(additionalFunctions ?? {})\n registerEventNames(additionalEventNames)\n return createRPCProxy()\n }\n}\n\nexport type UseRPCHubType = ReturnType<typeof useRPCHub>\n\n// Syntax test case\n// async function _demo() {\n// const hub: UseRPCHubType = {} as any\n// const x = hub({\n// test(name: string): string {\n// return name\n// },\n// })\n// await x.test('dsd')\n// }\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-RAXM7FU3.cjs","../src/common/msg/rpc.ts"],"names":["rpcCounter","RPCMode","defaultSerialize","__name","i","defaultDeserialize","setupRPCBasic","options","functions","eventNames","log","post","on","serialize","deserialize","timeout","onError","onTimeoutError","onlyEvents","exceptions","stringHashPool","checkEventNames","registerFunctions","additionalFunctions","registerEventNames","additionalEventNames","rpcPromiseMap","data","msg","mode","id","method","args","methodName","result","error","fn","e","promise","err","_","sendEvent","sendCall","resolve","reject","createPromise","timeoutId","useRPC","proxyHandler","useRPCHub","createRPCProxy"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-RAXM7FU3.cjs","sourcesContent":[null,"// From https://github.com/antfu/birpc/blob/main/src/index.ts MIT\n\nimport type { UseStringHashPool } from '../data/string-hash-pool'\nimport type { LoggerInterface } from '../log/log-base'\nimport type { Pipe } from './pipe'\nimport { createPromise } from '../exec/promise'\n\nexport type ArgumentsType<T> = T extends (...args: infer A) => any ? A : never\nexport type ReturnType<T> = T extends (...args: any) => infer R ? R : never\n\nexport interface RPCOptionsBasic extends Pipe {\n /** No return values expected */\n onlyEvents?: boolean\n /** Maximum timeout for waiting for response, in milliseconds */\n timeout?: number\n /** Custom logger */\n log?: LoggerInterface\n /** Custom error handler */\n onError?: (error: Error, functionName: string, args: any[]) => boolean | void\n /** Custom error handler for timeouts */\n onTimeoutError?: (functionName: string, args: any[]) => boolean | void\n /** Throw execptions. Default: true */\n exceptions?: boolean\n /** */\n stringHashPool?: UseStringHashPool\n}\n\nexport interface RPCOptions<Remote> extends RPCOptionsBasic {\n // /** No return values expected */\n // onlyEvents?: boolean\n /** Names of remote functions that do not need response. */\n eventNames?: (keyof Remote)[]\n}\n\nexport interface RPCFn<T> {\n /** Call the remote function and wait for the result. */\n (...args: ArgumentsType<T>): Promise<Awaited<ReturnType<T>>>\n /** Send event without asking for response */\n asEvent: (...args: ArgumentsType<T>) => void\n}\n\nexport type RPCReturn<RemoteFunctions> = {\n [K in keyof RemoteFunctions]: RPCFn<RemoteFunctions[K]>\n}\n\nlet rpcCounter = 1\n\nexport enum RPCMode {\n request = 1,\n event = 2,\n resolve = 3,\n reject = 4,\n}\n\nexport type RPCMessage = [\n mode: RPCMode,\n id: number,\n method: string | number | any,\n ...any,\n]\n\nconst defaultSerialize = (i: any) => i\nconst defaultDeserialize = defaultSerialize\n\nfunction setupRPCBasic(options: RPCOptionsBasic, functions: Record<string, (...args: any) => Promise<any>>, eventNames: string[] = []) {\n const {\n log,\n post,\n on,\n serialize = defaultSerialize,\n deserialize = defaultDeserialize,\n timeout = 60e3,\n onError,\n onTimeoutError,\n onlyEvents = false,\n exceptions = true,\n stringHashPool,\n } = options\n\n if (stringHashPool) {\n Object.keys(functions).forEach(stringHashPool.hash)\n }\n\n function checkEventNames(eventNames: string[]) {\n // eventNames.forEach((n) => {\n // if (functions[n] == null)\n // throw new Error(`event name ${n} has no registered function`)\n // })\n }\n\n checkEventNames(eventNames)\n\n function registerFunctions(additionalFunctions: any) {\n Object.assign(functions, additionalFunctions ?? {})\n if (stringHashPool)\n Object.keys(additionalFunctions).forEach(stringHashPool.hash)\n }\n\n function registerEventNames(additionalEventNames: string[]) {\n checkEventNames(additionalEventNames)\n eventNames.push(...additionalEventNames)\n }\n\n const rpcPromiseMap = new Map<number, {\n resolve: (...args: any) => any\n reject: (...args: any) => any\n timeoutId: Parameters<typeof clearTimeout>[0]\n }>()\n\n on(async (data) => {\n try {\n const msg = await deserialize(data) as RPCMessage\n const mode = msg?.[0]\n const id = mode === RPCMode.event ? 0 : msg?.[1]\n const [method, ...args] = msg.slice(mode === RPCMode.event ? 1 : 2)\n const methodName = stringHashPool?.stringForHash(method) ?? method\n if (mode === RPCMode.request || mode === RPCMode.event) {\n let result, error: any\n if (method != null) {\n try {\n const fn = functions[methodName]\n result = await fn(...args)\n }\n catch (e) {\n error = String(e)\n }\n }\n else {\n error = 'Method implementation missing'\n }\n if (error) {\n log?.warn('error', msg, error)\n onError?.(error, method ?? '', args)\n }\n if (id > 0) {\n const data = await serialize(error\n ? [RPCMode.reject, id, error]\n : [RPCMode.resolve, id, result])\n await post(data)\n }\n }\n else if (id) {\n const promise = rpcPromiseMap.get(id)\n if (promise != null) {\n clearTimeout(promise.timeoutId)\n if (mode === RPCMode.reject && exceptions === true)\n promise.reject(method)\n else\n promise.resolve(method)\n }\n rpcPromiseMap.delete(id)\n }\n }\n catch (err) {\n log?.warn('Error on handling RPC data. Invalid?', err, data)\n }\n })\n\n const proxyHandler = {\n get(_: any, methodName: string) {\n const method = stringHashPool?.hash(methodName) ?? methodName\n const sendEvent = async (...args: any[]) => await post(await serialize([RPCMode.event, method, ...args]))\n\n if (onlyEvents || eventNames.includes(methodName)) {\n sendEvent.asEvent = sendEvent\n return sendEvent\n }\n\n const sendCall = async (...args: any[]) => {\n const [promise, resolve, reject] = createPromise()\n const id = rpcCounter++\n\n let timeoutId: any\n if (timeout >= 0) {\n timeoutId = setTimeout(() => {\n try {\n // Custom onTimeoutError handler can throw its own error too\n onTimeoutError?.(methodName, args)\n throw new Error(`rpc timeout on calling \"${methodName}\"`)\n }\n catch (e) {\n if (exceptions === true)\n reject(e)\n else\n resolve(undefined)\n }\n rpcPromiseMap.delete(id)\n\n // Garbage Collection https://jakearchibald.com/2024/garbage-collection-and-closures/\n clearTimeout(timeoutId)\n timeoutId = undefined\n }, timeout).unref?.()\n }\n\n rpcPromiseMap.set(id, { resolve, reject, timeoutId })\n const data = await serialize([RPCMode.request, id, method, ...args])\n await post(data)\n return promise\n }\n sendCall.asEvent = sendEvent\n return sendCall\n },\n }\n\n return {\n post,\n serialize,\n rpcPromiseMap,\n proxyHandler,\n registerFunctions,\n registerEventNames,\n }\n}\n\nexport function useRPC<LocalFunctions, RemoteFunctions = LocalFunctions>(\n functions: LocalFunctions,\n options: RPCOptions<RemoteFunctions>,\n): RPCReturn<RemoteFunctions> {\n const { eventNames = [] } = options\n\n const { proxyHandler } = setupRPCBasic(options, functions as any, eventNames as any)\n\n return new Proxy({}, proxyHandler)\n}\n\nexport function useRPCHub(options: RPCOptionsBasic) {\n const eventNames: string[] = []\n const functions: Record<string, any> = {}\n\n const {\n proxyHandler,\n registerFunctions,\n registerEventNames,\n } = setupRPCBasic(options, functions, eventNames)\n\n function createRPCProxy() {\n return new Proxy({}, proxyHandler)\n }\n\n return function<LocalFunctions, RemoteFunctions = LocalFunctions>(\n additionalFunctions?: LocalFunctions,\n additionalEventNames: string[] = [],\n ): RPCReturn<RemoteFunctions> {\n registerFunctions(additionalFunctions ?? {})\n registerEventNames(additionalEventNames)\n return createRPCProxy()\n }\n}\n\nexport type UseRPCHubType = ReturnType<typeof useRPCHub>\n\n// Syntax test case\n// async function _demo() {\n// const hub: UseRPCHubType = {} as any\n// const x = hub({\n// test(name: string): string {\n// return name\n// },\n// })\n// await x.test('dsd')\n// }\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-RLII6GIK.cjs","../src/common/msg/encoder.ts"],"names":["NoopEncoder","__name","data","JsonEncoder","jsonToUint8Array","Uint8ArrayToJson","ensureUint8Array","CryptoEncoder","key","plain","encrypt","decrypt"],"mappings":"AAAA,iIAA+C,wDAAuD,wDAAyC,ICQlIA,CAAAA,CAAN,KAA2C,CARlD,MAQkD,CAAAC,iCAAAA,IAAA,CAAA,aAAA,CAAA,CAChD,MAAM,MAAA,CAAOC,CAAAA,CAAgC,CAC3C,OAAOA,CACT,CAEA,MAAM,MAAA,CAAOA,CAAAA,CAAgC,CAC3C,OAAOA,CACT,CACF,CAAA,CAEaC,CAAAA,aAAN,KAA2C,CAlBlD,MAkBkD,CAAAF,iCAAAA,IAAA,CAAA,aAAA,CAAA,CAChD,MAAM,MAAA,CAAOC,CAAAA,CAAgC,CAC3C,OAAOE,iCAAAA,CAAqB,CAC9B,CAEA,MAAM,MAAA,CAAOF,CAAAA,CAAgC,CAC3C,OAAOG,iCAAAA,iCAAiBC,CAAqB,CAAC,CAChD,CACF,CAAA,CAEaC,CAAAA,aAAN,KAA6C,CA5BpD,MA4BoD,CAAAN,iCAAAA,IAAA,CAAA,eAAA,CAAA,CAClD,WAEA,CAAYO,CAAAA,CAAgB,CAC1B,IAAA,CAAK,GAAA,CAAMA,CACb,CAEA,MAAM,MAAA,CAAON,CAAAA,CAAgC,CAC3C,IAAMO,CAAAA,CAAQL,iCAAAA,CAAqB,CAAA,CACnC,OAAO,MAAMM,iCAAAA,CAAQD,CAAO,IAAA,CAAK,GAAG,CACtC,CAEA,MAAM,MAAA,CAAOP,CAAAA,CAAgC,CAC3C,IAAMO,CAAAA,CAAQ,MAAME,iCAAAA,iCAAQL,CAAqB,CAAA,CAAG,IAAA,CAAK,GAAG,CAAA,CAC5D,OAAOD,iCAAAA,iCAAiBC,CAAsB,CAAC,CACjD,CACF,CAAA,CAAA,4CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-RLII6GIK.cjs","sourcesContent":[null,"import { decrypt, encrypt } from '../crypto'\nimport { ensureUint8Array, jsonToUint8Array, Uint8ArrayToJson } from '../data/bin'\n\nexport interface Encoder<T = any> {\n encode: (data: T) => Promise<Uint8Array>\n decode: (data: Uint8Array) => Promise<T>\n}\n\nexport class NoopEncoder<T> implements Encoder<T> {\n async encode(data: any): Promise<Uint8Array> {\n return data\n }\n\n async decode(data: Uint8Array): Promise<any> {\n return data\n }\n}\n\nexport class JsonEncoder<T> implements Encoder<T> {\n async encode(data: any): Promise<Uint8Array> {\n return jsonToUint8Array(data)\n }\n\n async decode(data: Uint8Array): Promise<any> {\n return Uint8ArrayToJson(ensureUint8Array(data))\n }\n}\n\nexport class CryptoEncoder<T> implements Encoder<T> {\n key: CryptoKey\n\n constructor(key: CryptoKey) {\n this.key = key\n }\n\n async encode(data: any): Promise<Uint8Array> {\n const plain = jsonToUint8Array(data)\n return await encrypt(plain, this.key)\n }\n\n async decode(data: Uint8Array): Promise<any> {\n const plain = await decrypt(ensureUint8Array(data), this.key)\n return Uint8ArrayToJson(ensureUint8Array(plain))\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-RLII6GIK.cjs","../src/common/msg/encoder.ts"],"names":["NoopEncoder","__name","data","JsonEncoder","jsonToUint8Array","Uint8ArrayToJson","ensureUint8Array","CryptoEncoder","key","plain","encrypt","decrypt"],"mappings":"AAAA,iIAA+C,wDAAuD,wDAAyC,ICQlIA,CAAAA,CAAN,KAA2C,CARlD,MAQkD,CAAAC,iCAAAA,IAAA,CAAA,aAAA,CAAA,CAChD,MAAM,MAAA,CAAOC,CAAAA,CAAgC,CAC3C,OAAOA,CACT,CAEA,MAAM,MAAA,CAAOA,CAAAA,CAAgC,CAC3C,OAAOA,CACT,CACF,CAAA,CAEaC,CAAAA,aAAN,KAA2C,CAlBlD,MAkBkD,CAAAF,iCAAAA,IAAA,CAAA,aAAA,CAAA,CAChD,MAAM,MAAA,CAAOC,CAAAA,CAAgC,CAC3C,OAAOE,iCAAAA,CAAqB,CAC9B,CAEA,MAAM,MAAA,CAAOF,CAAAA,CAAgC,CAC3C,OAAOG,iCAAAA,iCAAiBC,CAAqB,CAAC,CAChD,CACF,CAAA,CAEaC,CAAAA,aAAN,KAA6C,CA5BpD,MA4BoD,CAAAN,iCAAAA,IAAA,CAAA,eAAA,CAAA,CAClD,WAEA,CAAYO,CAAAA,CAAgB,CAC1B,IAAA,CAAK,GAAA,CAAMA,CACb,CAEA,MAAM,MAAA,CAAON,CAAAA,CAAgC,CAC3C,IAAMO,CAAAA,CAAQL,iCAAAA,CAAqB,CAAA,CACnC,OAAO,MAAMM,iCAAAA,CAAQD,CAAO,IAAA,CAAK,GAAG,CACtC,CAEA,MAAM,MAAA,CAAOP,CAAAA,CAAgC,CAC3C,IAAMO,CAAAA,CAAQ,MAAME,iCAAAA,iCAAQL,CAAqB,CAAA,CAAG,IAAA,CAAK,GAAG,CAAA,CAC5D,OAAOD,iCAAAA,iCAAiBC,CAAsB,CAAC,CACjD,CACF,CAAA,CAAA,4CAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-RLII6GIK.cjs","sourcesContent":[null,"import { decrypt, encrypt } from '../crypto'\nimport { ensureUint8Array, jsonToUint8Array, Uint8ArrayToJson } from '../data/bin'\n\nexport interface Encoder<T = any> {\n encode: (data: T) => Promise<Uint8Array>\n decode: (data: Uint8Array) => Promise<T>\n}\n\nexport class NoopEncoder<T> implements Encoder<T> {\n async encode(data: any): Promise<Uint8Array> {\n return data\n }\n\n async decode(data: Uint8Array): Promise<any> {\n return data\n }\n}\n\nexport class JsonEncoder<T> implements Encoder<T> {\n async encode(data: any): Promise<Uint8Array> {\n return jsonToUint8Array(data)\n }\n\n async decode(data: Uint8Array): Promise<any> {\n return Uint8ArrayToJson(ensureUint8Array(data))\n }\n}\n\nexport class CryptoEncoder<T> implements Encoder<T> {\n key: CryptoKey\n\n constructor(key: CryptoKey) {\n this.key = key\n }\n\n async encode(data: any): Promise<Uint8Array> {\n const plain = jsonToUint8Array(data)\n return await encrypt(plain, this.key)\n }\n\n async decode(data: Uint8Array): Promise<any> {\n const plain = await decrypt(ensureUint8Array(data), this.key)\n return Uint8ArrayToJson(ensureUint8Array(plain))\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-RMTW3TW2.cjs","../src/common/bin/index.ts"],"names":["BinaryEncoder","__name","data","dataEncoder","createBinEncoder","writeAny","encodeToUint8Array","readAny","createDecoder","toUint8Array","encodeJson","decodeJson","createBinaryStreamEncoder","initialData","writeUint8Array","expectedLength","bin","assertCondition"],"mappings":"AAAA,iIAA8G,wDAA6H,wDAAyC,wDAAyC,wDAAyC,ICSzVA,CAAAA,CAAN,KAAuC,CAT9C,MAS8C,CAAAC,iCAAAA,IAAA,CAAA,eAAA,CAAA,CAC5C,MAAM,MAAA,CAAOC,CAAAA,CAAgC,CAC3C,IAAMC,CAAAA,CAAcC,iCAAAA,CAAiB,CACrC,OAAAC,iCAAAA,CAASF,CAAaD,CAAI,CAAA,CACnBI,iCAAAA,CAA8B,CACvC,CAEA,MAAM,MAAA,CAAOJ,CAAAA,CAA8C,CACzD,OAAOK,iCAAAA,iCAAQC,iCAAcC,CAAiB,CAAC,CAAC,CAClD,CACF,CAAA,CAKO,SAASC,CAAAA,CAAWR,CAAAA,CAAuB,CAChD,IAAMC,CAAAA,CAAcC,iCAAAA,CAAiB,CACrC,OAAAC,iCAAAA,CAASF,CAAaD,CAAI,CAAA,CACnBI,iCAAAA,CAA8B,CACvC,CAJgBL,iCAAAA,CAAAS,CAAA,YAAA,CAAA,CAOT,SAASC,CAAAA,CAAWT,CAAAA,CAAqC,CAC9D,OAAOK,iCAAAA,iCAAQC,iCAAcC,CAAiB,CAAC,CAAC,CAClD,CAFgBR,iCAAAA,CAAAU,CAAA,YAAA,CAAA,CAOT,SAASC,CAAAA,CAA0BC,CAAAA,CAAwB,CAChE,IAAMV,CAAAA,CAAcC,iCAAAA,CAAiB,CAErC,OAAIS,CAAAA,EAAe,IAAA,EACjBC,iCAAAA,CAAgBX,CAAaM,iCAAAA,CAAwB,CAAC,CAAA,CAEjD,CAEL,UAAA,CAAYR,iCAAAA,CAACC,CAAAA,CAAgBa,CAAAA,CAAAA,EAA2B,CACtD,IAAMC,CAAAA,CAAMP,iCAAAA,CAAiB,CAAA,CAC7BQ,iCAAAA,CAAgB,CAAEF,CAAAA,EAAkB,IAAA,EAAQC,CAAAA,CAAI,MAAA,GAAWD,CAAAA,CAAAA,CAAiB,CAAA,SAAA,EAAYA,CAAc,CAAA,YAAA,EAAeC,CAAAA,CAAI,MAAM,CAAA,CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-RMTW3TW2.cjs","sourcesContent":[null,"import type { BinInput } from '../data/bin-types'\nimport type { Encoder } from '../msg/encoder'\nimport { assertCondition } from '../assert'\nimport { toUint8Array } from '../data/bin'\nimport { createDecoder, readAny, readFloat32, readUint8, readUint8Array, readUint16, readUint32, readVarInt, readVarString, readVarUint, readVarUint8Array } from './lib0/decoding'\nimport { createBinEncoder, encodeToUint8Array, length, writeAny, writeFloat32, writeUint8, writeUint8Array, writeUint16, writeUint32, writeVarInt, writeVarString, writeVarUint, writeVarUint8Array } from './lib0/encoding'\n\n// Use in Zeed channels\n\nexport class BinaryEncoder implements Encoder {\n async encode(data: any): Promise<Uint8Array> {\n const dataEncoder = createBinEncoder()\n writeAny(dataEncoder, data)\n return encodeToUint8Array(dataEncoder)\n }\n\n async decode(data: Uint8Array | ArrayBuffer): Promise<any> {\n return readAny(createDecoder(toUint8Array(data)))\n }\n}\n\n// Json like\n\n/** Encode any object, including Uint8Array data */\nexport function encodeJson(data: any): Uint8Array {\n const dataEncoder = createBinEncoder()\n writeAny(dataEncoder, data)\n return encodeToUint8Array(dataEncoder)\n}\n\n/** Decode any object, including Uint8Array data */\nexport function decodeJson(data: Uint8Array | ArrayBuffer): any {\n return readAny(createDecoder(toUint8Array(data)))\n}\n\n// Stream like\n\n/** Incrementally encode binary data */\nexport function createBinaryStreamEncoder(initialData?: BinInput) {\n const dataEncoder = createBinEncoder()\n\n if (initialData != null)\n writeUint8Array(dataEncoder, toUint8Array(initialData))\n\n return {\n /** Just writes the bytes. Length is not stored! */\n writeBytes: (data: BinInput, expectedLength: number) => {\n const bin = toUint8Array(data)\n assertCondition(!(expectedLength != null && bin.length !== expectedLength), `Expected ${expectedLength} bytes, got ${bin.length}`)\n writeUint8Array(dataEncoder, bin)\n },\n writeBytesVar: (data: BinInput) => writeVarUint8Array(dataEncoder, toUint8Array(data)),\n writeUintVar: (data: number) => writeVarUint(dataEncoder, data),\n writeUint8: (data: number) => writeUint8(dataEncoder, data),\n writeUint16: (data: number) => writeUint16(dataEncoder, data),\n writeUint32: (data: number) => writeUint32(dataEncoder, data),\n writeIntVar: (data: number) => writeVarInt(dataEncoder, data),\n writeFloat: (data: number) => writeFloat32(dataEncoder, data),\n writeStringVar: (data: string) => writeVarString(dataEncoder, data),\n write: (data: any) => writeAny(dataEncoder, data),\n getUint8Array: (): Uint8Array => encodeToUint8Array(dataEncoder),\n getLength: () => length(dataEncoder),\n }\n}\n\n/** Incrementally decode binary data */\nexport function createBinaryStreamDecoder(data: BinInput) {\n const dataDecoder = createDecoder(toUint8Array(data))\n return {\n readBytes: (len: number): Uint8Array => readUint8Array(dataDecoder, len),\n readBytesVar: (): Uint8Array => readVarUint8Array(dataDecoder),\n readUintVar: (): number => readVarUint(dataDecoder),\n readUint8: (): number => readUint8(dataDecoder),\n readUint16: (): number => readUint16(dataDecoder),\n readUint32: (): number => readUint32(dataDecoder),\n readIntVar: (): number => readVarInt(dataDecoder),\n readFloat: (): number => readFloat32(dataDecoder),\n readStringVar: (): string => readVarString(dataDecoder),\n read: (): any => readAny(dataDecoder),\n getOffset: (): number => dataDecoder.pos || 0,\n }\n}\n\n// https://stackoverflow.com/a/1436448/140927\nexport function bitfield(bitfield = 0) {\n return {\n setBit: (bit: number, value = true): number => value ? (bitfield |= 1 << bit) : (bitfield &= ~(1 << bit)),\n unsetBit: (bit: number): number => (bitfield &= 1 << bit),\n toggleBit: (bit: number): number => (bitfield ^= 1 << bit),\n getBit: (bit: number): boolean => (bitfield & (1 << bit)) !== 0,\n getValue: () => bitfield,\n }\n}\n\n// Cast\n\nexport async function blobToArrayBuffer(blob: Blob | File): Promise<ArrayBuffer | undefined> {\n if (blob.arrayBuffer)\n return await blob.arrayBuffer()\n\n // Fallback for older browsers\n try {\n return new Promise((resolve, reject) => {\n try {\n const reader = new FileReader()\n reader.onloadend = () => resolve(reader.result as ArrayBuffer)\n reader.onerror = err => reject(err)\n reader.onabort = err => reject(err)\n reader.readAsArrayBuffer(blob)\n }\n catch (err) {\n reject(err)\n }\n })\n }\n catch (err) {}\n}\n\nexport async function blobToUint8Array(blob: Blob | File): Promise<Uint8Array | undefined> {\n const buffer = await blobToArrayBuffer(blob)\n if (buffer != null)\n return toUint8Array(buffer)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-RMTW3TW2.cjs","../src/common/bin/index.ts"],"names":["BinaryEncoder","__name","data","dataEncoder","createBinEncoder","writeAny","encodeToUint8Array","readAny","createDecoder","toUint8Array","encodeJson","decodeJson","createBinaryStreamEncoder","initialData","writeUint8Array","expectedLength","bin","assertCondition"],"mappings":"AAAA,iIAA8G,wDAA6H,wDAAyC,wDAAyC,wDAAyC,ICSzVA,CAAAA,CAAN,KAAuC,CAT9C,MAS8C,CAAAC,iCAAAA,IAAA,CAAA,eAAA,CAAA,CAC5C,MAAM,MAAA,CAAOC,CAAAA,CAAgC,CAC3C,IAAMC,CAAAA,CAAcC,iCAAAA,CAAiB,CACrC,OAAAC,iCAAAA,CAASF,CAAaD,CAAI,CAAA,CACnBI,iCAAAA,CAA8B,CACvC,CAEA,MAAM,MAAA,CAAOJ,CAAAA,CAA8C,CACzD,OAAOK,iCAAAA,iCAAQC,iCAAcC,CAAiB,CAAC,CAAC,CAClD,CACF,CAAA,CAKO,SAASC,CAAAA,CAAWR,CAAAA,CAAuB,CAChD,IAAMC,CAAAA,CAAcC,iCAAAA,CAAiB,CACrC,OAAAC,iCAAAA,CAASF,CAAaD,CAAI,CAAA,CACnBI,iCAAAA,CAA8B,CACvC,CAJgBL,iCAAAA,CAAAS,CAAA,YAAA,CAAA,CAOT,SAASC,CAAAA,CAAWT,CAAAA,CAAqC,CAC9D,OAAOK,iCAAAA,iCAAQC,iCAAcC,CAAiB,CAAC,CAAC,CAClD,CAFgBR,iCAAAA,CAAAU,CAAA,YAAA,CAAA,CAOT,SAASC,CAAAA,CAA0BC,CAAAA,CAAwB,CAChE,IAAMV,CAAAA,CAAcC,iCAAAA,CAAiB,CAErC,OAAIS,CAAAA,EAAe,IAAA,EACjBC,iCAAAA,CAAgBX,CAAaM,iCAAAA,CAAwB,CAAC,CAAA,CAEjD,CAEL,UAAA,CAAYR,iCAAAA,CAACC,CAAAA,CAAgBa,CAAAA,CAAAA,EAA2B,CACtD,IAAMC,CAAAA,CAAMP,iCAAAA,CAAiB,CAAA,CAC7BQ,iCAAAA,CAAgB,CAAEF,CAAAA,EAAkB,IAAA,EAAQC,CAAAA,CAAI,MAAA,GAAWD,CAAAA,CAAAA,CAAiB,CAAA,SAAA,EAAYA,CAAc,CAAA,YAAA,EAAeC,CAAAA,CAAI,MAAM,CAAA,CAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-RMTW3TW2.cjs","sourcesContent":[null,"import type { BinInput } from '../data/bin-types'\nimport type { Encoder } from '../msg/encoder'\nimport { assertCondition } from '../assert'\nimport { toUint8Array } from '../data/bin'\nimport { createDecoder, readAny, readFloat32, readUint8, readUint8Array, readUint16, readUint32, readVarInt, readVarString, readVarUint, readVarUint8Array } from './lib0/decoding'\nimport { createBinEncoder, encodeToUint8Array, length, writeAny, writeFloat32, writeUint8, writeUint8Array, writeUint16, writeUint32, writeVarInt, writeVarString, writeVarUint, writeVarUint8Array } from './lib0/encoding'\n\n// Use in Zeed channels\n\nexport class BinaryEncoder implements Encoder {\n async encode(data: any): Promise<Uint8Array> {\n const dataEncoder = createBinEncoder()\n writeAny(dataEncoder, data)\n return encodeToUint8Array(dataEncoder)\n }\n\n async decode(data: Uint8Array | ArrayBuffer): Promise<any> {\n return readAny(createDecoder(toUint8Array(data)))\n }\n}\n\n// Json like\n\n/** Encode any object, including Uint8Array data */\nexport function encodeJson(data: any): Uint8Array {\n const dataEncoder = createBinEncoder()\n writeAny(dataEncoder, data)\n return encodeToUint8Array(dataEncoder)\n}\n\n/** Decode any object, including Uint8Array data */\nexport function decodeJson(data: Uint8Array | ArrayBuffer): any {\n return readAny(createDecoder(toUint8Array(data)))\n}\n\n// Stream like\n\n/** Incrementally encode binary data */\nexport function createBinaryStreamEncoder(initialData?: BinInput) {\n const dataEncoder = createBinEncoder()\n\n if (initialData != null)\n writeUint8Array(dataEncoder, toUint8Array(initialData))\n\n return {\n /** Just writes the bytes. Length is not stored! */\n writeBytes: (data: BinInput, expectedLength: number) => {\n const bin = toUint8Array(data)\n assertCondition(!(expectedLength != null && bin.length !== expectedLength), `Expected ${expectedLength} bytes, got ${bin.length}`)\n writeUint8Array(dataEncoder, bin)\n },\n writeBytesVar: (data: BinInput) => writeVarUint8Array(dataEncoder, toUint8Array(data)),\n writeUintVar: (data: number) => writeVarUint(dataEncoder, data),\n writeUint8: (data: number) => writeUint8(dataEncoder, data),\n writeUint16: (data: number) => writeUint16(dataEncoder, data),\n writeUint32: (data: number) => writeUint32(dataEncoder, data),\n writeIntVar: (data: number) => writeVarInt(dataEncoder, data),\n writeFloat: (data: number) => writeFloat32(dataEncoder, data),\n writeStringVar: (data: string) => writeVarString(dataEncoder, data),\n write: (data: any) => writeAny(dataEncoder, data),\n getUint8Array: (): Uint8Array => encodeToUint8Array(dataEncoder),\n getLength: () => length(dataEncoder),\n }\n}\n\n/** Incrementally decode binary data */\nexport function createBinaryStreamDecoder(data: BinInput) {\n const dataDecoder = createDecoder(toUint8Array(data))\n return {\n readBytes: (len: number): Uint8Array => readUint8Array(dataDecoder, len),\n readBytesVar: (): Uint8Array => readVarUint8Array(dataDecoder),\n readUintVar: (): number => readVarUint(dataDecoder),\n readUint8: (): number => readUint8(dataDecoder),\n readUint16: (): number => readUint16(dataDecoder),\n readUint32: (): number => readUint32(dataDecoder),\n readIntVar: (): number => readVarInt(dataDecoder),\n readFloat: (): number => readFloat32(dataDecoder),\n readStringVar: (): string => readVarString(dataDecoder),\n read: (): any => readAny(dataDecoder),\n getOffset: (): number => dataDecoder.pos || 0,\n }\n}\n\n// https://stackoverflow.com/a/1436448/140927\nexport function bitfield(bitfield = 0) {\n return {\n setBit: (bit: number, value = true): number => value ? (bitfield |= 1 << bit) : (bitfield &= ~(1 << bit)),\n unsetBit: (bit: number): number => (bitfield &= 1 << bit),\n toggleBit: (bit: number): number => (bitfield ^= 1 << bit),\n getBit: (bit: number): boolean => (bitfield & (1 << bit)) !== 0,\n getValue: () => bitfield,\n }\n}\n\n// Cast\n\nexport async function blobToArrayBuffer(blob: Blob | File): Promise<ArrayBuffer | undefined> {\n if (blob.arrayBuffer)\n return await blob.arrayBuffer()\n\n // Fallback for older browsers\n try {\n return new Promise((resolve, reject) => {\n try {\n const reader = new FileReader()\n reader.onloadend = () => resolve(reader.result as ArrayBuffer)\n reader.onerror = err => reject(err)\n reader.onabort = err => reject(err)\n reader.readAsArrayBuffer(blob)\n }\n catch (err) {\n reject(err)\n }\n })\n }\n catch (err) {}\n}\n\nexport async function blobToUint8Array(blob: Blob | File): Promise<Uint8Array | undefined> {\n const buffer = await blobToArrayBuffer(blob)\n if (buffer != null)\n return toUint8Array(buffer)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/log/log-base.ts"],"names":["LogLevelAll","LogLevelDebug","LogLevelInfo","LogLevelWarn","LogLevelError","LogLevelFatal","LogLevelOff","LogLevelAlias"],"mappings":"AAEO,6EAAMA,CAAAA,CAAc,CAAA,CAAA,CACdC,CAAAA,aAAgB,CAAA,CAChBC,CAAAA,aAAe,CAAA,CACfC,CAAAA,aAAe,CAAA,CACfC,CAAAA,aAAgB,CAAA,CAChBC,CAAAA,aAAgB,CAAA,CAChBC,CAAAA,aAAc,gBAAA,CAEdC,CAAAA,aAA0C,CACrD,GAAA,CAAK,CAAA,CAAA,CACL,CAAA,CAAK,CAAA,CAAA,CACL,GAAA,CAAO,CAAA,CAAA,CACP,CAAA,CAAK,CAAA,CACL,GAAA,CAAO,CAAA,CACP,KAAA,CAAS,CAAA,CACT,CAAA,CAAK,CAAA,CACL,GAAA,CAAO,CAAA,CACP,IAAA,CAAQ,CAAA,CACR,CAAA,CAAK,CAAA,CACL,IAAA,CAAQ,CAAA,CACR,OAAA,CAAW,CAAA,CACX,CAAA,CAAK,CAAA,CACL,GAAA,CAAO,CAAA,CACP,KAAA,CAAS,CAAA,CACT,KAAA,CAAS,CAAA,CACT,GAAA,CAAO,gBAAA,CACP,GAAA,CAAK,gBACP,CAAA,CAAA,uHAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-SEQAFKIV.cjs","sourcesContent":["export type LogLevel = number\n\nexport const LogLevelAll = -1\nexport const LogLevelDebug = 0\nexport const LogLevelInfo = 1\nexport const LogLevelWarn = 2\nexport const LogLevelError = 3\nexport const LogLevelFatal = 4\nexport const LogLevelOff = 9007199254740991 // `Infinity` === `1 / 0`, but bad for sideEffects, therefore `Math.pow(2, 53) - 1`\n\nexport const LogLevelAlias: Record<string, LogLevel> = {\n '*': LogLevelAll,\n 'a': LogLevelAll,\n 'all': LogLevelAll,\n 'd': LogLevelDebug,\n 'dbg': LogLevelDebug,\n 'debug': LogLevelDebug,\n 'i': LogLevelInfo,\n 'inf': LogLevelInfo,\n 'info': LogLevelInfo,\n 'w': LogLevelWarn,\n 'warn': LogLevelWarn,\n 'warning': LogLevelWarn,\n 'e': LogLevelError,\n 'err': LogLevelError,\n 'error': LogLevelError,\n 'fatal': LogLevelFatal,\n 'off': LogLevelOff,\n '-': LogLevelOff,\n}\n\nexport type LogLevelAliasKey = keyof typeof LogLevelAlias\nexport type LogLevelAliasType = number | boolean | LogLevelAliasKey\n\nexport interface LogMessage {\n level: LogLevel\n name: string\n messages: any[]\n line?: number\n file?: string\n timestamp?: number\n}\n\nexport type LogMessageCompact = [\n timestamp: number,\n level: LogLevel,\n name: string,\n ...messages: any[],\n]\n\nexport type LogHandler = (msg: LogMessage) => void\n\nexport interface LoggerInterface {\n (...messages: any[]): void\n\n /** @deprecated use .level = LogLevel.off or LogLevel.all */\n active: boolean\n\n level: LogLevel\n\n generic: (level: LogLevel, ...messages: any[]) => void\n\n debug: (...messages: any[]) => void\n\n info: (...messages: any[]) => void\n\n warn: (...messages: any[]) => void\n\n error: (...messages: any[]) => void\n\n /**\n * Throws if condition is not truthy.\n *\n * **Attention!** Due to a bug in typescript you will need to explicitly set the `LoggerInterface` type in\n * order to have the assertions having an effect on unreachable code. Example:\n *\n * ```\n * const log: LoggerInterface = Logger('xxx')\n * ```\n *\n * Bug https://github.com/microsoft/TypeScript/issues/50363#issuecomment-1219811447\n */\n assert: (condition: unknown, ...messages: any[]) => asserts condition\n\n /**\n * Always throws.\n *\n * **Attention!** Due to a bug in typescript you will need to explicitly set the `LoggerInterface` type in\n * order to have the assertions having an effect on unreachable code. Example:\n *\n * ```\n * const log: LoggerInterface = Logger('xxx')\n * ```\n *\n * Bug https://github.com/microsoft/TypeScript/issues/50363#issuecomment-1219811447\n */\n fatal: (...messages: any[]) => never\n\n extend: (prefix: string) => LoggerInterface\n\n factory?: LoggerContextInterface\n\n label: string\n}\n\nexport interface LoggerContextInterface {\n (name?: string, level?: LogLevelAliasType): LoggerInterface\n\n registerHandler: (handler: LogHandler) => void\n\n setFilter: (namespaces: string) => void\n\n setHandlers: (handlers?: (LogHandler | undefined | null)[]) => void\n\n setLock: (lock: boolean) => void\n\n /** When true emits a short log message for each Logger when being set up first time. */\n setDebug: (debug: boolean) => void\n\n setLogLevel: (level?: LogLevel) => void\n\n setFactory: (factory: (name?: string) => LoggerInterface) => void\n}\n\nexport interface LogHandlerOptions {\n level?: LogLevel\n filter?: string\n colors?: boolean\n levelHelper?: boolean\n nameBrackets?: boolean\n padding?: number\n fill?: number\n stack?: boolean | number\n time?: boolean\n pretty?: boolean\n}\n"]}
1
+ {"version":3,"sources":["../src/common/log/log-base.ts"],"names":["LogLevelAll","LogLevelDebug","LogLevelInfo","LogLevelWarn","LogLevelError","LogLevelFatal","LogLevelOff","LogLevelAlias"],"mappings":"AAEO,6EAAMA,CAAAA,CAAc,CAAA,CAAA,CACdC,CAAAA,aAAgB,CAAA,CAChBC,CAAAA,aAAe,CAAA,CACfC,CAAAA,aAAe,CAAA,CACfC,CAAAA,aAAgB,CAAA,CAChBC,CAAAA,aAAgB,CAAA,CAChBC,CAAAA,aAAc,gBAAA,CAEdC,CAAAA,aAA0C,CACrD,GAAA,CAAK,CAAA,CAAA,CACL,CAAA,CAAK,CAAA,CAAA,CACL,GAAA,CAAO,CAAA,CAAA,CACP,CAAA,CAAK,CAAA,CACL,GAAA,CAAO,CAAA,CACP,KAAA,CAAS,CAAA,CACT,CAAA,CAAK,CAAA,CACL,GAAA,CAAO,CAAA,CACP,IAAA,CAAQ,CAAA,CACR,CAAA,CAAK,CAAA,CACL,IAAA,CAAQ,CAAA,CACR,OAAA,CAAW,CAAA,CACX,CAAA,CAAK,CAAA,CACL,GAAA,CAAO,CAAA,CACP,KAAA,CAAS,CAAA,CACT,KAAA,CAAS,CAAA,CACT,GAAA,CAAO,gBAAA,CACP,GAAA,CAAK,gBACP,CAAA,CAAA,uHAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-SEQAFKIV.cjs","sourcesContent":["export type LogLevel = number\n\nexport const LogLevelAll = -1\nexport const LogLevelDebug = 0\nexport const LogLevelInfo = 1\nexport const LogLevelWarn = 2\nexport const LogLevelError = 3\nexport const LogLevelFatal = 4\nexport const LogLevelOff = 9007199254740991 // `Infinity` === `1 / 0`, but bad for sideEffects, therefore `Math.pow(2, 53) - 1`\n\nexport const LogLevelAlias: Record<string, LogLevel> = {\n '*': LogLevelAll,\n 'a': LogLevelAll,\n 'all': LogLevelAll,\n 'd': LogLevelDebug,\n 'dbg': LogLevelDebug,\n 'debug': LogLevelDebug,\n 'i': LogLevelInfo,\n 'inf': LogLevelInfo,\n 'info': LogLevelInfo,\n 'w': LogLevelWarn,\n 'warn': LogLevelWarn,\n 'warning': LogLevelWarn,\n 'e': LogLevelError,\n 'err': LogLevelError,\n 'error': LogLevelError,\n 'fatal': LogLevelFatal,\n 'off': LogLevelOff,\n '-': LogLevelOff,\n}\n\nexport type LogLevelAliasKey = keyof typeof LogLevelAlias\nexport type LogLevelAliasType = number | boolean | LogLevelAliasKey\n\nexport interface LogMessage {\n level: LogLevel\n name: string\n messages: any[]\n line?: number\n file?: string\n timestamp?: number\n}\n\nexport type LogMessageCompact = [\n timestamp: number,\n level: LogLevel,\n name: string,\n ...messages: any[],\n]\n\nexport type LogHandler = (msg: LogMessage) => void\n\nexport interface LoggerInterface {\n (...messages: any[]): void\n\n /** @deprecated use .level = LogLevel.off or LogLevel.all */\n active: boolean\n\n level: LogLevel\n\n generic: (level: LogLevel, ...messages: any[]) => void\n\n debug: (...messages: any[]) => void\n\n info: (...messages: any[]) => void\n\n warn: (...messages: any[]) => void\n\n error: (...messages: any[]) => void\n\n /**\n * Throws if condition is not truthy.\n *\n * **Attention!** Due to a bug in typescript you will need to explicitly set the `LoggerInterface` type in\n * order to have the assertions having an effect on unreachable code. Example:\n *\n * ```\n * const log: LoggerInterface = Logger('xxx')\n * ```\n *\n * Bug https://github.com/microsoft/TypeScript/issues/50363#issuecomment-1219811447\n */\n assert: (condition: unknown, ...messages: any[]) => asserts condition\n\n /**\n * Always throws.\n *\n * **Attention!** Due to a bug in typescript you will need to explicitly set the `LoggerInterface` type in\n * order to have the assertions having an effect on unreachable code. Example:\n *\n * ```\n * const log: LoggerInterface = Logger('xxx')\n * ```\n *\n * Bug https://github.com/microsoft/TypeScript/issues/50363#issuecomment-1219811447\n */\n fatal: (...messages: any[]) => never\n\n extend: (prefix: string) => LoggerInterface\n\n factory?: LoggerContextInterface\n\n label: string\n}\n\nexport interface LoggerContextInterface {\n (name?: string, level?: LogLevelAliasType): LoggerInterface\n\n registerHandler: (handler: LogHandler) => void\n\n setFilter: (namespaces: string) => void\n\n setHandlers: (handlers?: (LogHandler | undefined | null)[]) => void\n\n setLock: (lock: boolean) => void\n\n /** When true emits a short log message for each Logger when being set up first time. */\n setDebug: (debug: boolean) => void\n\n setLogLevel: (level?: LogLevel) => void\n\n setFactory: (factory: (name?: string) => LoggerInterface) => void\n}\n\nexport interface LogHandlerOptions {\n level?: LogLevel\n filter?: string\n colors?: boolean\n levelHelper?: boolean\n nameBrackets?: boolean\n padding?: number\n fill?: number\n stack?: boolean | number\n time?: boolean\n pretty?: boolean\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-SHOLGUSO.cjs","../src/node/log/log-file-rotation.ts"],"names":["parseLogRotationConfigEnv","v","valueToBoolean","__name","getLogRotationConfig","rotation","getLogFileRotationConfigSchemaOptions","simple","options","z_collection_exports"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-SHOLGUSO.cjs","sourcesContent":[null,"import type { Type } from '../../common/schema'\nimport type { RotationOptions } from './log-rotation'\nimport { valueToBoolean } from '../../common/data/convert'\nimport { z } from '../../common/schema'\n\nexport type LogRotationOptions = boolean | RotationOptions | 'daily' | 'weekly' | 'monthly' | 'size'\n\nexport function parseLogRotationConfigEnv(v?: string | null): LogRotationOptions {\n if (['daily', 'weekly', 'monthly', 'size'].includes(String(v).trim().toLowerCase())) {\n return v as 'daily' | 'weekly' | 'monthly' | 'size'\n }\n\n return valueToBoolean(v, false)\n}\n\nexport function getLogRotationConfig(rotation: LogRotationOptions | undefined): RotationOptions | undefined {\n if (!rotation)\n return undefined\n\n // default for true and explicit 'size' is size-based rotation\n if (rotation === true || rotation === 'size') {\n return { size: '10M', maxFiles: 5, compress: 'gzip' }\n }\n\n // time-based shortcuts -> map to interval + maxFiles\n if (rotation === 'daily')\n return { interval: '1d', maxFiles: 30, compress: 'gzip' }\n if (rotation === 'weekly')\n return { interval: '7d', maxFiles: 30, compress: 'gzip' }\n if (rotation === 'monthly')\n return { interval: '1M', maxFiles: 90, compress: 'gzip' }\n\n // assume it's a full RotationOptions object\n return rotation as RotationOptions\n}\n\nexport function getLogFileRotationConfigSchemaOptions(simple = false): Type[] {\n const options: Type[] = [\n z.boolean(),\n z.literal('daily'),\n z.literal('weekly'),\n z.literal('monthly'),\n z.literal('size'),\n ]\n\n if (!simple) {\n options.push(z.object({\n compress: z.union([z.boolean(), z.literal('gzip')]).optional(),\n encoding: z.string().optional(),\n history: z.string().optional(),\n immutable: z.boolean().optional(),\n initialRotation: z.boolean().optional(),\n interval: z.string().optional(),\n intervalBoundary: z.boolean().optional(),\n intervalUTC: z.boolean().optional(),\n maxFiles: z.number().optional(),\n maxSize: z.string().optional(),\n mode: z.number().optional(),\n omitExtension: z.boolean().optional(),\n path: z.string().optional(),\n rotate: z.number().optional(),\n size: z.string().optional(),\n teeToStdout: z.boolean().optional(),\n }))\n }\n\n return options\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-SHOLGUSO.cjs","../src/node/log/log-file-rotation.ts"],"names":["parseLogRotationConfigEnv","v","valueToBoolean","__name","getLogRotationConfig","rotation","getLogFileRotationConfigSchemaOptions","simple","options","z_collection_exports"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-SHOLGUSO.cjs","sourcesContent":[null,"import type { Type } from '../../common/schema'\nimport type { RotationOptions } from './log-rotation'\nimport { valueToBoolean } from '../../common/data/convert'\nimport { z } from '../../common/schema'\n\nexport type LogRotationOptions = boolean | RotationOptions | 'daily' | 'weekly' | 'monthly' | 'size'\n\nexport function parseLogRotationConfigEnv(v?: string | null): LogRotationOptions {\n if (['daily', 'weekly', 'monthly', 'size'].includes(String(v).trim().toLowerCase())) {\n return v as 'daily' | 'weekly' | 'monthly' | 'size'\n }\n\n return valueToBoolean(v, false)\n}\n\nexport function getLogRotationConfig(rotation: LogRotationOptions | undefined): RotationOptions | undefined {\n if (!rotation)\n return undefined\n\n // default for true and explicit 'size' is size-based rotation\n if (rotation === true || rotation === 'size') {\n return { size: '10M', maxFiles: 5, compress: 'gzip' }\n }\n\n // time-based shortcuts -> map to interval + maxFiles\n if (rotation === 'daily')\n return { interval: '1d', maxFiles: 30, compress: 'gzip' }\n if (rotation === 'weekly')\n return { interval: '7d', maxFiles: 30, compress: 'gzip' }\n if (rotation === 'monthly')\n return { interval: '1M', maxFiles: 90, compress: 'gzip' }\n\n // assume it's a full RotationOptions object\n return rotation as RotationOptions\n}\n\nexport function getLogFileRotationConfigSchemaOptions(simple = false): Type[] {\n const options: Type[] = [\n z.boolean(),\n z.literal('daily'),\n z.literal('weekly'),\n z.literal('monthly'),\n z.literal('size'),\n ]\n\n if (!simple) {\n options.push(z.object({\n compress: z.union([z.boolean(), z.literal('gzip')]).optional(),\n encoding: z.string().optional(),\n history: z.string().optional(),\n immutable: z.boolean().optional(),\n initialRotation: z.boolean().optional(),\n interval: z.string().optional(),\n intervalBoundary: z.boolean().optional(),\n intervalUTC: z.boolean().optional(),\n maxFiles: z.number().optional(),\n maxSize: z.string().optional(),\n mode: z.number().optional(),\n omitExtension: z.boolean().optional(),\n path: z.string().optional(),\n rotate: z.number().optional(),\n size: z.string().optional(),\n teeToStdout: z.boolean().optional(),\n }))\n }\n\n return options\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-SQK2VOFN.cjs","../src/common/data/decimal.ts"],"names":["decimal","value","decimalPlaces","__name","decimalFromCents","decimalToCents","decimalCentsPart"],"mappings":"AAAA,iIAAwC,SCOxBA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAAgB,CAAA,CACF,CACd,MAAO,CAAA,CAAE,CAACD,CAAAA,CAAAA,CAAO,OAAA,CAAQC,CAAa,CACxC,CALgBC,iCAAAA,CAAAH,CAAA,SAAA,CAAA,CAQT,SAASI,CAAAA,CACdH,CAAAA,CACAC,CAAAA,CAAgB,CAAA,CACF,CACd,MAAO,CAAA,CAAE,CAACD,CAAAA,CAAQ,EAAA,EAAMC,CAAAA,CAAAA,CAAe,OAAA,CAAQA,CAAa,CAC9D,CALgBC,iCAAAA,CAAAC,CAAA,kBAAA,CAAA,CAQT,SAASC,CAAAA,CACdJ,CAAAA,CACAC,CAAAA,CAAgB,CAAA,CACR,CACR,OAAO,IAAA,CAAK,KAAA,CAAM,CAACD,CAAAA,CAAQ,EAAA,EAAMC,CAAa,CAChD,CALgBC,iCAAAA,CAAAE,CAAA,gBAAA,CAAA,CAQT,SAASC,CAAAA,CACdL,CAAAA,CACAC,CAAAA,CAAgB,CAAA,CACF,CACd,OAAO,EAAA,EAAMA,CAAAA,CAAAA,CAAiBF,CAAAA,CAAQC,CAAAA,CAAOC,CAAa,CAAA,CAAI,CAAA,CAChE,CALgBC,iCAAAA,CAAAG,CAAA,kBAAA,CAAA,CAAA,2DAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-SQK2VOFN.cjs","sourcesContent":[null,"export type DecimalValue = number\nexport type DecimalInput = number | string | DecimalValue\n\n/** \n * The float returned is guaraneteed to have only the `decimalPlaces` length,\n * no rounding errors or float arithmetic artefacts. \n */\nexport function decimal(\n value: DecimalInput,\n decimalPlaces = 2,\n): DecimalValue {\n return +(+value).toFixed(decimalPlaces)\n}\n\n/** `123` becomes `1.23` */\nexport function decimalFromCents(\n value: DecimalInput,\n decimalPlaces = 2,\n): DecimalValue {\n return +(+value / 10 ** decimalPlaces).toFixed(decimalPlaces)\n}\n\n/** `1.23` becomes `123` */\nexport function decimalToCents(\n value: DecimalInput,\n decimalPlaces = 2,\n): number {\n return Math.round(+value * 10 ** decimalPlaces)\n}\n\n/** `1.23` becomes `23` */\nexport function decimalCentsPart(\n value: DecimalInput,\n decimalPlaces = 2,\n): DecimalValue {\n return 10 ** decimalPlaces * (decimal(value, decimalPlaces) % 1)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-SQK2VOFN.cjs","../src/common/data/decimal.ts"],"names":["decimal","value","decimalPlaces","__name","decimalFromCents","decimalToCents","decimalCentsPart"],"mappings":"AAAA,iIAAwC,SCOxBA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAAgB,CAAA,CACF,CACd,MAAO,CAAA,CAAE,CAACD,CAAAA,CAAAA,CAAO,OAAA,CAAQC,CAAa,CACxC,CALgBC,iCAAAA,CAAAH,CAAA,SAAA,CAAA,CAQT,SAASI,CAAAA,CACdH,CAAAA,CACAC,CAAAA,CAAgB,CAAA,CACF,CACd,MAAO,CAAA,CAAE,CAACD,CAAAA,CAAQ,EAAA,EAAMC,CAAAA,CAAAA,CAAe,OAAA,CAAQA,CAAa,CAC9D,CALgBC,iCAAAA,CAAAC,CAAA,kBAAA,CAAA,CAQT,SAASC,CAAAA,CACdJ,CAAAA,CACAC,CAAAA,CAAgB,CAAA,CACR,CACR,OAAO,IAAA,CAAK,KAAA,CAAM,CAACD,CAAAA,CAAQ,EAAA,EAAMC,CAAa,CAChD,CALgBC,iCAAAA,CAAAE,CAAA,gBAAA,CAAA,CAQT,SAASC,CAAAA,CACdL,CAAAA,CACAC,CAAAA,CAAgB,CAAA,CACF,CACd,OAAO,EAAA,EAAMA,CAAAA,CAAAA,CAAiBF,CAAAA,CAAQC,CAAAA,CAAOC,CAAa,CAAA,CAAI,CAAA,CAChE,CALgBC,iCAAAA,CAAAG,CAAA,kBAAA,CAAA,CAAA,2DAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-SQK2VOFN.cjs","sourcesContent":[null,"export type DecimalValue = number\nexport type DecimalInput = number | string | DecimalValue\n\n/** \n * The float returned is guaraneteed to have only the `decimalPlaces` length,\n * no rounding errors or float arithmetic artefacts. \n */\nexport function decimal(\n value: DecimalInput,\n decimalPlaces = 2,\n): DecimalValue {\n return +(+value).toFixed(decimalPlaces)\n}\n\n/** `123` becomes `1.23` */\nexport function decimalFromCents(\n value: DecimalInput,\n decimalPlaces = 2,\n): DecimalValue {\n return +(+value / 10 ** decimalPlaces).toFixed(decimalPlaces)\n}\n\n/** `1.23` becomes `123` */\nexport function decimalToCents(\n value: DecimalInput,\n decimalPlaces = 2,\n): number {\n return Math.round(+value * 10 ** decimalPlaces)\n}\n\n/** `1.23` becomes `23` */\nexport function decimalCentsPart(\n value: DecimalInput,\n decimalPlaces = 2,\n): DecimalValue {\n return 10 ** decimalPlaces * (decimal(value, decimalPlaces) % 1)\n}\n"]}
@@ -1,2 +1,2 @@
1
1
  import{f as c,h as y,i as _,j as g}from"./chunk-WFBD5UN5.js";import{b as p}from"./chunk-ZGFQN2L7.js";import{b as o}from"./chunk-6VFFIKPT.js";import{a as s}from"./chunk-5NKC2EQJ.js";function k(e){if(e._default!==void 0)return o(e._default)?e._default(e):e._default;if(!e._optional&&e._object){let t={};for(let a in e._object){let l=e._object[a],i=k(l);i!==void 0&&(t[a]=i)}return t}}s(k,"schemaCreateObject");function T(e,t,a){let l=a?.messages||[];function i(n,u=!1){return l.push({path:`.${a?.path??""}`,message:n,valid:u,type:e.type}),u}if(s(i,"addMessage"),t==null&&e._optional)return i("Optional",!0);if(e._object){if(a?.allowExtra!==!0){let n=Object.keys(e._object),u=Object.keys(t||{}),r=p(u,n);if(r.length>0)return i(`Extra properties: ${r.join(", ")}`,!1)}for(let n in e._object){let u=e._object[n];if(!T(u,t[n],{...a,path:a?.path?`${a.path}.${n}`:n,messages:l}))return i(`Invalid property '${n}'`,!1)}return i("Object valid",!0)}if(o(e._check)){let n=e._check(t);return i("Check",n)}return i("Primitive valid",!1)}s(T,"schemaValidateObject");function v(e,t,a){let l=a?.messages||[];function i(n,u=!1){return l.push({path:`.${a?.path??""}`,message:n,valid:u,type:e.type}),u}if(s(i,"addMessage"),t==null){if(e._optional){i("Optional",!0);return}if(e._default!==void 0&&a?.skipDefault!==!0)return i("Default",!0),o(e._default)?e._default(e):e._default;e._object&&(t={})}if(e._object){let n={},u=e._object;for(let r in u){let f=u[r],d=v(f,t[r],{...a,path:a?.path?`${a.path}.${r}`:r,messages:l});d!==void 0?n[r]=d:f._default!==void 0&&a?.skipDefault!==!0?n[r]=o(f._default)?f._default(f):f._default:f._optional&&t&&typeof t=="object"&&r in t&&(n[r]=void 0)}if(a?.allowExtra&&t&&typeof t=="object")for(let[r,f]of Object.entries(t))r in u||(n[r]=f);return n}if(t!=null){if(e.type==="string")t=g(t);else if(e.type==="boolean")t=c(t);else if(e.type==="number"){if(t=_(t),Number.isNaN(t)){i(`Invalid number: ${t}`,!1);return}}else if(e.type==="int"&&(t=y(t),Number.isNaN(t))){i(`Invalid number: ${t}`,!1);return}}if(o(e._check)){let n=e._check(t);return i("Check",n),n?t:void 0}return t}s(v,"schemaParseObject");export{k as a,T as b,v as c};
2
- //# sourceMappingURL=chunk-BRQSQXKK.js.map
2
+ //# sourceMappingURL=chunk-SSKDGT5N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/schema/parse-object.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { arrayMinus, isFunction, valueToBoolean, valueToFloat, valueToInteger, valueToString } from '../data'\n\nexport function schemaCreateObject<T>(schema: Type<T>): Partial<T> | undefined {\n if (schema._default !== undefined) {\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n\n if (schema._optional) {\n return undefined as any\n }\n\n if (schema._object) {\n const obj: any = {}\n for (const key in schema._object) {\n const propSchema = schema._object[key] as Type<any>\n const value = schemaCreateObject(propSchema)\n if (value !== undefined) {\n obj[key] = value\n }\n }\n return obj\n }\n\n // For non-optional, non-object types without defaults, don't return anything\n // This prevents setting undefined values in the parent object\n return undefined\n}\n\n/**\n * Message for schema validation results.\n * @category Schema\n */\nexport interface SchemaValidateMessage {\n path: string\n message: string\n type: string\n valid: boolean\n}\n\nexport function schemaValidateObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n allowExtra?: boolean\n}): boolean {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n return valid\n }\n\n if (obj == null && schema._optional) {\n return addMessage('Optional', true)\n }\n\n if (schema._object) {\n if (opt?.allowExtra !== true) {\n const schemaKeys = Object.keys(schema._object)\n const objKeys = Object.keys(obj || {})\n const missingKeys = arrayMinus(objKeys, schemaKeys)\n if (missingKeys.length > 0) {\n return addMessage(`Extra properties: ${missingKeys.join(', ')}`, false)\n }\n }\n\n for (const key in schema._object) {\n const propSchema = schema._object[key] as any\n if (!schemaValidateObject(\n propSchema,\n obj[key] as any,\n {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n },\n )) { return addMessage(`Invalid property '${key}'`, false) }\n }\n return addMessage('Object valid', true)\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n return addMessage('Check', checkResult)\n }\n\n return addMessage('Primitive valid', false)\n}\n\nexport function schemaParseObject<T>(schema: Type<T>, obj?: any, opt?: {\n path?: string\n messages?: SchemaValidateMessage[]\n\n /// Whether to allow extra properties not defined in the schema\n allowExtra?: boolean\n skipDefault?: boolean\n}): T | undefined {\n const messages = opt?.messages || []\n\n function addMessage(message: string, valid: boolean = false) {\n messages.push({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type })\n // console.debug({ path: `.${opt?.path ?? ''}`, message, valid, type: schema.type }, obj)\n return valid\n }\n\n if (obj == null) {\n if (schema._optional) {\n addMessage('Optional', true)\n return undefined\n }\n if (schema._default !== undefined && opt?.skipDefault !== true) {\n addMessage('Default', true)\n return isFunction(schema._default) ? schema._default(schema) : schema._default\n }\n // For non-optional objects without explicit defaults, use empty object\n if (schema._object) {\n obj = {}\n }\n }\n\n if (schema._object) {\n const newObj: any = {}\n const shape = schema._object\n for (const key in shape) {\n const propSchema = shape[key] as any\n const result = schemaParseObject(propSchema, obj[key] as any, {\n ...opt,\n path: opt?.path ? `${opt.path}.${key}` : key,\n messages,\n })\n if (result !== undefined) {\n newObj[key] = result\n }\n else if (propSchema._default !== undefined && opt?.skipDefault !== true) {\n newObj[key] = isFunction(propSchema._default) ? propSchema._default(propSchema) : propSchema._default\n }\n else if (propSchema._optional) {\n // Only set undefined for optional properties if they were explicitly provided as undefined\n if (obj && typeof obj === 'object' && key in obj) {\n newObj[key] = undefined\n }\n // Otherwise, don't set the property at all\n }\n // For required properties without defaults, don't set undefined - leave them missing\n }\n\n // Add extra properties if allowExtra is enabled\n if (opt?.allowExtra && obj && typeof obj === 'object') {\n for (const [key, value] of Object.entries(obj)) {\n if (!(key in shape)) {\n newObj[key] = value\n }\n }\n }\n\n return newObj\n }\n\n if (obj != null) {\n if (schema.type === 'string') {\n obj = valueToString(obj)\n }\n else if (schema.type === 'boolean') {\n obj = valueToBoolean(obj)\n }\n else if (schema.type === 'number') {\n obj = valueToFloat(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n else if (schema.type === 'int') {\n obj = valueToInteger(obj)\n if (Number.isNaN(obj)) {\n addMessage(`Invalid number: ${obj}`, false)\n return undefined\n }\n }\n }\n\n if (isFunction(schema._check)) {\n const checkResult = schema._check(obj)\n addMessage('Check', checkResult)\n return checkResult ? obj : undefined\n }\n\n return obj\n}\n"],"mappings":"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","names":["schemaCreateObject","schema","isFunction","obj","key","propSchema","value","__name","schemaValidateObject","opt","messages","addMessage","message","valid","schemaKeys","objKeys","missingKeys","arrayMinus","checkResult","schemaParseObject","newObj","shape","result","valueToString","valueToBoolean","valueToFloat","valueToInteger"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-TAUWRIFY.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-TAUWRIFY.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-TAUWRIFY.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-TAUWRIFY.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-TJQMBWXU.cjs","../src/common/log/log-console-capture.ts"],"names":["onlyOnce","logCaptureConsole","log","getGlobalConsole","args","event","__name"],"mappings":"AAAA,qoBAAwC,wDAAyC,ICG7EA,CAAAA,CAQG,SAASC,CAAAA,CAAkBC,CAAAA,CAAsB,CACtD,EAAA,CAAIF,CAAAA,CAAU,CACZE,CAAAA,CAAI,KAAA,CAAM,kCAAkC,CAAA,CAC5C,MACF,CAEAF,CAAAA,CAAW,CAAA,CAAA,CAGaG,iCAAAA,CAAiB,EAAA,CAGvC,UAAA,CAAW,OAAA,CAAU,CAAC,CAAA,CAAA,CAGxB,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAM,CAAA,GAAIC,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,KAAA,CAAM,GAAGE,CAAI,CAAA,CAC9D,UAAA,CAAW,OAAA,CAAQ,KAAA,CAAQ,CAAA,GAAIA,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,KAAA,CAAM,GAAGE,CAAI,CAAA,CAChE,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAO,CAAA,GAAIA,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,IAAA,CAAK,GAAGE,CAAI,CAAA,CAC9D,UAAA,CAAW,OAAA,CAAQ,KAAA,CAAQ,CAAA,GAAIA,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,KAAA,CAAM,GAAGE,CAAI,CAAA,CAChE,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAO,CAAA,GAAIA,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,IAAA,CAAK,GAAGE,CAAI,CAAA,iBAE9D,UAAA,mBAAW,gBAAA,0BAAA,CAAmB,oBAAA,CAAuBC,CAAAA,EAAe,CAClEH,CAAAA,CAAI,KAAA,CAAM,sBAAA,CAAwBG,CAAK,CACzC,CAAC,GAAA,iBAED,UAAA,qBAAW,gBAAA,0BAAA,CAAmB,OAAA,CAAUA,CAAAA,EAAe,CACrDH,CAAAA,CAAI,KAAA,CAAM,SAAA,CAAWG,CAAK,CAC5B,CAAC,GACH,CA5BgBC,iCAAAA,CAAAL,CAAA,mBAAA,CAAA,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-TJQMBWXU.cjs","sourcesContent":[null,"import type { LoggerInterface } from './log-base'\nimport { getGlobalConsole } from './log-console-original'\n\nlet onlyOnce: boolean | undefined\n\n/**\n * Overrides the global console methods to capture log messages and forward them to the provided logger.\n * Also captures window errors and unhandled rejections and logs them using the provided logger.\n *\n * @param log - The logger to which the captured log messages will be forwarded.\n */\nexport function logCaptureConsole(log: LoggerInterface) {\n if (onlyOnce) {\n log.error('use logCaptureConsole only once!')\n return\n }\n\n onlyOnce = true\n\n // Save the original console methods\n const originalConsole = getGlobalConsole()\n\n if (!originalConsole) {\n globalThis.console = {} as any\n }\n\n globalThis.console.log = (...args: any[]) => log.debug(...args)\n globalThis.console.debug = (...args: any[]) => log.debug(...args)\n globalThis.console.warn = (...args: any[]) => log.warn(...args)\n globalThis.console.error = (...args: any[]) => log.error(...args)\n globalThis.console.info = (...args: any[]) => log.info(...args)\n\n globalThis.addEventListener?.('unhandledrejection', (event: any) => {\n log.error('onUnhandledrejection', event)\n })\n\n globalThis.addEventListener?.('error', (event: any) => {\n log.error('onError', event)\n })\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-TJQMBWXU.cjs","../src/common/log/log-console-capture.ts"],"names":["onlyOnce","logCaptureConsole","log","getGlobalConsole","args","event","__name"],"mappings":"AAAA,qoBAAwC,wDAAyC,ICG7EA,CAAAA,CAQG,SAASC,CAAAA,CAAkBC,CAAAA,CAAsB,CACtD,EAAA,CAAIF,CAAAA,CAAU,CACZE,CAAAA,CAAI,KAAA,CAAM,kCAAkC,CAAA,CAC5C,MACF,CAEAF,CAAAA,CAAW,CAAA,CAAA,CAGaG,iCAAAA,CAAiB,EAAA,CAGvC,UAAA,CAAW,OAAA,CAAU,CAAC,CAAA,CAAA,CAGxB,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAM,CAAA,GAAIC,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,KAAA,CAAM,GAAGE,CAAI,CAAA,CAC9D,UAAA,CAAW,OAAA,CAAQ,KAAA,CAAQ,CAAA,GAAIA,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,KAAA,CAAM,GAAGE,CAAI,CAAA,CAChE,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAO,CAAA,GAAIA,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,IAAA,CAAK,GAAGE,CAAI,CAAA,CAC9D,UAAA,CAAW,OAAA,CAAQ,KAAA,CAAQ,CAAA,GAAIA,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,KAAA,CAAM,GAAGE,CAAI,CAAA,CAChE,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAO,CAAA,GAAIA,CAAAA,CAAAA,EAAgBF,CAAAA,CAAI,IAAA,CAAK,GAAGE,CAAI,CAAA,iBAE9D,UAAA,mBAAW,gBAAA,0BAAA,CAAmB,oBAAA,CAAuBC,CAAAA,EAAe,CAClEH,CAAAA,CAAI,KAAA,CAAM,sBAAA,CAAwBG,CAAK,CACzC,CAAC,GAAA,iBAED,UAAA,qBAAW,gBAAA,0BAAA,CAAmB,OAAA,CAAUA,CAAAA,EAAe,CACrDH,CAAAA,CAAI,KAAA,CAAM,SAAA,CAAWG,CAAK,CAC5B,CAAC,GACH,CA5BgBC,iCAAAA,CAAAL,CAAA,mBAAA,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-TJQMBWXU.cjs","sourcesContent":[null,"import type { LoggerInterface } from './log-base'\nimport { getGlobalConsole } from './log-console-original'\n\nlet onlyOnce: boolean | undefined\n\n/**\n * Overrides the global console methods to capture log messages and forward them to the provided logger.\n * Also captures window errors and unhandled rejections and logs them using the provided logger.\n *\n * @param log - The logger to which the captured log messages will be forwarded.\n */\nexport function logCaptureConsole(log: LoggerInterface) {\n if (onlyOnce) {\n log.error('use logCaptureConsole only once!')\n return\n }\n\n onlyOnce = true\n\n // Save the original console methods\n const originalConsole = getGlobalConsole()\n\n if (!originalConsole) {\n globalThis.console = {} as any\n }\n\n globalThis.console.log = (...args: any[]) => log.debug(...args)\n globalThis.console.debug = (...args: any[]) => log.debug(...args)\n globalThis.console.warn = (...args: any[]) => log.warn(...args)\n globalThis.console.error = (...args: any[]) => log.error(...args)\n globalThis.console.info = (...args: any[]) => log.info(...args)\n\n globalThis.addEventListener?.('unhandledrejection', (event: any) => {\n log.error('onUnhandledrejection', event)\n })\n\n globalThis.addEventListener?.('error', (event: any) => {\n log.error('onError', event)\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-TNMEWZPW.cjs","../src/common/data/bin.ts","../src/common/data/basex-secure.ts"],"names":["_encodeUtf8Polyfill","str","encodedString","len","buf","i","__name","_decodeUtf8Polyfill","remainingLen","bufPos","nextLen","bytes","_textEncoder","stringToUInt8Array","text","encoder","data","_textDecoder","Uint8ArrayToString","bin","decoder","toArrayBuffer","b","toUint8Array","ensureUint8Array","joinToUint8Array","args","length","bins","d","cursor","toHex","h","s","v","fromHex","hexString","byte","toBase64","stripPadding","sb","base64nopad","base64","toBase64Url","base64urlnopad","fromBase64","a","fromBase64String","equalBinary","aa","bb","jsonToUint8Array","json","jsonStringifySafe","Uint8ArrayToJson","Uint8ArrayToHexDump","buffer","blockSize","lines","hex","block","addr"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-TNMEWZPW.cjs","sourcesContent":[null,"/* eslint-disable node/prefer-global/buffer */\n/* eslint-disable no-control-regex */\n/* eslint-disable prefer-spread */\n\nimport { base64, base64nopad, base64urlnopad } from './basex-secure'\nimport type { BinInput } from './bin-types'\nimport { jsonStringifySafe } from './json'\n\n\n// From https://github.com/dmonad/lib0/blob/main/string.js#L44\n\nexport function _encodeUtf8Polyfill(str: string): Uint8Array {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++)\n buf[i] = encodedString.codePointAt(i) || 0\n return buf\n}\n\nexport function _decodeUtf8Polyfill(buf: Uint8Array<ArrayBufferLike>) {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n // @ts-expect-error xxx\n encodedString += String.fromCodePoint.apply(null, bytes)\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\nlet _textEncoder: (data: string) => Uint8Array\n\nexport function stringToUInt8Array(text: string): Uint8Array {\n if (_textEncoder == null) {\n _textEncoder = _encodeUtf8Polyfill\n if (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder()\n _textEncoder = data => encoder.encode(data)\n }\n }\n return _textEncoder(text.normalize('NFC'))\n}\n\nlet _textDecoder: (data: Uint8Array<ArrayBufferLike>) => string\n\nexport function Uint8ArrayToString(bin: Uint8Array): string {\n if (_textDecoder == null) {\n _textDecoder = _decodeUtf8Polyfill\n if (typeof TextDecoder !== 'undefined') {\n const decoder = new TextDecoder('utf-8', { ignoreBOM: true })\n _textDecoder = data => decoder.decode(data)\n }\n }\n return _textDecoder(bin).normalize('NFC')\n}\n\nexport function toArrayBuffer(bin: BinInput): ArrayBuffer {\n const b = toUint8Array(bin)\n if (b.buffer.byteLength === b.byteLength)\n return b.buffer as ArrayBuffer\n return b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength) as ArrayBuffer\n}\n\nexport function toUint8Array(data: BinInput): Uint8Array {\n if (data instanceof ArrayBuffer)\n return new Uint8Array(data)\n if (typeof data === 'string')\n return stringToUInt8Array(data)\n if (data.length)\n return new Uint8Array(data)\n return data as Uint8Array\n}\n\n/**\n * Ensures a Uint8Array is backed by a real ArrayBuffer (not SharedArrayBuffer).\n * This is needed for Web Crypto API compatibility which requires BufferSource with ArrayBuffer.\n */\nexport function ensureUint8Array(data: Uint8Array): Uint8Array<ArrayBuffer> {\n // If it's already a regular Uint8Array backed by ArrayBuffer, return as-is\n // otherwise trick: const buffer = u.slice().buffer\n if (data.buffer instanceof ArrayBuffer) {\n return data as Uint8Array<ArrayBuffer>\n }\n // Otherwise, create a new copy backed by ArrayBuffer\n return new Uint8Array(data) as Uint8Array<ArrayBuffer>\n}\n\nexport function joinToUint8Array(...args: BinInput[] | BinInput[][]) {\n let length = 0\n const bins = args.flat(1).map((d) => {\n const b = toUint8Array(d as BinInput)\n length += b.length\n return b\n })\n const bin = new Uint8Array(length)\n let cursor = 0\n for (const b of bins) {\n bin.set(b, cursor)\n cursor += b.length\n }\n return bin\n}\n\nexport function toHex(bin: BinInput): string {\n if (typeof Buffer !== 'undefined')\n return Buffer.from(toUint8Array(bin)).toString('hex')\n const h = '0123456789abcdef'\n let s = ''\n for (const v of [...toUint8Array(bin)])\n s += h[v >> 4] + h[v & 15]\n return s\n}\n\nexport function fromHex(hexString: string): Uint8Array {\n return Uint8Array.from(\n hexString.match(/.{1,2}/g)!.map(byte => Number.parseInt(byte, 16)),\n )\n}\n\n// Learn about Base64 in browsers: https://web.dev/articles/base64-encoding\n\n/** Regular base64 */\nexport function toBase64(bin: BinInput, stripPadding = false): string {\n const bytes = toUint8Array(bin)\n let sb = ''\n if (typeof Buffer !== 'undefined') {\n sb = Buffer.from(bytes).toString('base64')\n if (stripPadding)\n return sb.replace(/\\=/g, '')\n return sb\n }\n if (stripPadding) {\n return base64nopad.encode(bytes)\n }\n return base64.encode(bytes)\n}\n\n/** Converts `+` -> `-` and `/` -> `_`. Always strips `=` */\nexport function toBase64Url(bin: BinInput): string {\n const bytes = toUint8Array(bin)\n if (typeof Buffer !== 'undefined')\n return Buffer.from(bytes).toString('base64url').replace(/\\=/g, '')\n return base64urlnopad.encode(bytes)\n}\n\n/** Also parses toBase64Url encoded strings. */\nexport function fromBase64(s: string): Uint8Array {\n s = s.replace(/\\-/g, '+').replace(/\\_/g, '/')\n if (typeof Buffer !== 'undefined') {\n const buf = Buffer.from(s, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n }\n if (typeof atob !== 'undefined') {\n const a = atob(s)\n const bytes = new Uint8Array(a.length)\n for (let i = 0; i < a.length; i++)\n bytes[i] = a.charCodeAt(i)\n return bytes\n }\n return base64.decode(s)\n}\n\n/** Also parses toBase64Url encoded strings. */\nexport function fromBase64String(s: string): string {\n return Uint8ArrayToString(fromBase64(s))\n}\n\n/** Compare contents of binary arrays */\nexport function equalBinary(\n a: ArrayBuffer | Uint8Array,\n b: ArrayBuffer | Uint8Array,\n): boolean {\n if (a.byteLength !== b.byteLength)\n return false\n const aa = toUint8Array(a)\n const bb = toUint8Array(b)\n for (let i = 0; i < aa.length; i++) {\n if (aa[i] !== bb[i])\n return false\n }\n return true\n}\n\nexport function jsonToUint8Array(json: any): Uint8Array | never {\n return stringToUInt8Array(jsonStringifySafe(json))\n}\n\nexport function Uint8ArrayToJson<T = any>(data: Uint8Array): T | never {\n return JSON.parse(Uint8ArrayToString(data))\n}\n\n// https://gist.github.com/igorgatis/d294fe714a4f523ac3a3\nexport function Uint8ArrayToHexDump(\n buffer: Uint8Array | ArrayBuffer | string | Array<number>,\n blockSize?: number,\n) {\n if (typeof buffer === 'string') {\n // log(\"buffer is string\")\n // do nothing\n }\n else if (buffer instanceof ArrayBuffer && buffer.byteLength !== undefined) {\n // log(\"buffer is ArrayBuffer\")\n buffer = String.fromCharCode.apply(String, [].slice.call(new Uint8Array(buffer)))\n }\n else if (Array.isArray(buffer)) {\n // log(\"buffer is Array\")\n buffer = String.fromCharCode.apply(String, buffer)\n }\n else if (buffer.constructor === Uint8Array) {\n // log(\"buffer is Uint8Array\")\n buffer = String.fromCharCode.apply(String, [].slice.call(buffer))\n }\n else {\n // log(\"Error: buffer is unknown...\")\n return false\n }\n\n blockSize = blockSize || 16\n const lines = []\n const hex = '0123456789abcdef' // '0123456789ABCDEF'\n for (let b = 0; b < buffer.length; b += blockSize) {\n const block = buffer.slice(b, Math.min(b + blockSize, buffer.length))\n const addr = (`0000${b.toString(16)}`).slice(-4)\n let codes = block\n .split('')\n .map((ch: any) => {\n const code = ch.charCodeAt(0)\n return ` ${hex[(0xF0 & code) >> 4]}${hex[0x0F & code]}`\n })\n .join('')\n codes += ' '.repeat(blockSize - block.length)\n let chars = block.replace(/[\\x00-\\x1F\\x20\\x7F-\\xA0\\xAD]/g, '.')\n chars += ' '.repeat(blockSize - block.length)\n lines.push(`${addr} ${codes} ${chars}`)\n }\n return lines.join('\\n')\n}\n","/* scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\nimport { stringToUInt8Array, Uint8ArrayToString } from './bin'\n\n// Utilities\n/**\n * @__NO_SIDE_EFFECTS__\n */\nexport function assertNumber(n: number) {\n if (!Number.isSafeInteger(n)) throw new Error(`Wrong integer: ${n}`)\n}\nexport interface Coder<F, T> {\n encode(from: F): T\n decode(to: T): F\n}\n\nexport interface BytesCoder extends Coder<Uint8Array, string> {\n encode: (data: Uint8Array) => string\n decode: (str: string) => Uint8Array\n}\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n )\n}\n\n// TODO: some recusive type inference so it would check correct order of input/output inside rest?\n// like <string, number>, <number, bytes>, <bytes, float>\nexport type BaseXChain = [Coder<any, any>, ...Coder<any, any>[]]\n// Extract info from Coder type\nexport type BaseXInput<F> = F extends Coder<infer T, any> ? T : never\nexport type BaseXOutput<F> = F extends Coder<any, infer T> ? T : never\n// Generic function for arrays\nexport type BaseXFirst<T> = T extends [infer U, ...any[]] ? U : never\nexport type BaseXLast<T> = T extends [...any[], infer U] ? U : never\nexport type BaseXTail<T> = T extends [any, ...infer U] ? U : never\n\nexport type BaseXAsChain<C extends BaseXChain, Rest = BaseXTail<C>> = {\n // C[K] = Coder<Input<C[K]>, Input<Rest[k]>>\n [K in keyof C]: Coder<BaseXInput<C[K]>, BaseXInput<K extends keyof Rest ? Rest[K] : any>>\n}\n\n// Publicly visible aliases prefixed with BaseX for clearer documentation\n// Remove old alias leftovers (we renamed core types to BaseX-prefixed names).\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain<T extends BaseXChain & BaseXAsChain<T>>(...args: T): Coder<BaseXInput<BaseXFirst<T>>, BaseXOutput<BaseXLast<T>>> {\n const id = (a: any) => a\n // Wrap call in closure so JIT can inline calls\n const wrap = (a: any, b: any) => (c: any) => a(b(c))\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id)\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id)\n return { encode, decode }\n}\n\nexport type BaseXAlphabet = string[] | string\n/**\n * Encodes integer radix representation to array of strings using alphabet and back\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(alphabet: BaseXAlphabet): Coder<number[], string[]> {\n return {\n encode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers')\n return digits.map((i) => {\n assertNumber(i)\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`)\n return alphabet[i]!\n })\n },\n decode: (input: string[]) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings')\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`)\n const index = alphabet.indexOf(letter)\n if (index === -1) throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`)\n return index\n })\n },\n }\n}\n// Alias exported after Alphabet is declared (kept only for backwards compat if needed)\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = ''): Coder<string[], string> {\n if (typeof separator !== 'string') throw new Error('join separator should be string')\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings')\n for (let i of from)\n if (typeof i !== 'string') throw new Error(`join.encode: non-string input=${i}`)\n return from.join(separator)\n },\n decode: (to) => {\n if (typeof to !== 'string') throw new Error('join.decode input should be string')\n return to.split(separator)\n },\n }\n}\n\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits: number, chr = '='): Coder<string[], string[]> {\n assertNumber(bits)\n if (typeof chr !== 'string') throw new Error('padding chr should be string')\n return {\n encode(data: string[]): string[] {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings')\n for (let i of data)\n if (typeof i !== 'string') throw new Error(`padding.encode: non-string input=${i}`)\n while ((data.length * bits) % 8) data.push(chr)\n return data\n },\n decode(input: string[]): string[] {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings')\n for (let i of input)\n if (typeof i !== 'string') throw new Error(`padding.decode: non-string input=${i}`)\n let end = input.length\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes')\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding')\n }\n return input.slice(0, end)\n },\n }\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize<T>(fn: (val: T) => T): Coder<T, T> {\n if (typeof fn !== 'function') throw new Error('normalize fn should be function')\n return { encode: (from: T) => from, decode: (to: T) => fn(to) }\n}\n\n/**\n * Slow: O(n^2) time complexity\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix(data: number[], from: number, to: number): number[] {\n // base 1 is impossible\n if (from < 2) throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`)\n if (to < 2) throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`)\n if (!Array.isArray(data)) throw new Error('convertRadix: data should be array')\n if (!data.length) return []\n let pos = 0\n const res = []\n const digits = Array.from(data)\n digits.forEach((d) => {\n assertNumber(d)\n if (d < 0 || d >= from) throw new Error(`Wrong integer: ${d}`)\n })\n while (true) {\n let carry = 0\n let done = true\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i]!\n const digitBase = from * carry + digit\n if (\n !Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry\n ) {\n throw new Error('convertRadix: carry overflow')\n }\n carry = digitBase % to\n const rounded = Math.floor(digitBase / to)\n digits[i] = rounded\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow')\n if (!done) continue\n else if (!rounded) pos = i\n else done = false\n }\n res.push(carry)\n if (done) break\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++) res.push(0)\n return res.reverse()\n}\n\nconst gcd = /* @__NO_SIDE_EFFECTS__ */ (a: number, b: number): number => (!b ? a : gcd(b, a % b))\nconst radix2carry = /*@__NO_SIDE_EFFECTS__ */ (from: number, to: number) =>\n from + (to - gcd(from, to))\n/**\n * Implemented with numbers, because BigInt is 5x slower\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix2(data: number[], from: number, to: number, padding: boolean): number[] {\n if (!Array.isArray(data)) throw new Error('convertRadix2: data should be array')\n if (from <= 0 || from > 32) throw new Error(`convertRadix2: wrong from=${from}`)\n if (to <= 0 || to > 32) throw new Error(`convertRadix2: wrong to=${to}`)\n if (radix2carry(from, to) > 32) {\n throw new Error(\n `convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`\n )\n }\n let carry = 0\n let pos = 0 // bitwise position in current element\n const mask = 2 ** to - 1\n const res: number[] = []\n for (const n of data) {\n assertNumber(n)\n if (n >= 2 ** from) throw new Error(`convertRadix2: invalid data word=${n} from=${from}`)\n carry = (carry << from) | n\n if (pos + from > 32) throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`)\n pos += from\n for (; pos >= to; pos -= to) res.push(((carry >> (pos - to)) & mask) >>> 0)\n carry &= 2 ** pos - 1 // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask\n if (!padding && pos >= from) throw new Error('Excess padding')\n if (!padding && carry) throw new Error(`Non-zero padding: ${carry}`)\n if (padding && pos > 0) res.push(carry >>> 0)\n return res\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num: number): Coder<Uint8Array, number[]> {\n assertNumber(num)\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix.encode input should be Uint8Array')\n return convertRadix(Array.from(bytes), 2 ** 8, num)\n },\n decode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of numbers')\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8))\n },\n }\n}\n\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits: number, revPadding = false): Coder<Uint8Array, number[]> {\n assertNumber(bits)\n if (bits <= 0 || bits > 32) throw new Error('radix2: bits should be in (0..32]')\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow')\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix2.encode input should be Uint8Array')\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding)\n },\n decode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of numbers')\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding))\n },\n }\n}\n\ntype ArgumentTypes<F extends Function> = F extends (...args: infer A) => any ? A : never\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction unsafeWrapper<T extends (...args: any) => any>(fn: T) {\n if (typeof fn !== 'function') throw new Error('unsafeWrapper fn should be function')\n return function (...args: ArgumentTypes<T>): ReturnType<T> | void {\n try {\n return fn.apply(null, args)\n } catch (e) { }\n }\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction checksum(\n len: number,\n fn: (data: Uint8Array) => Uint8Array\n): Coder<Uint8Array, Uint8Array> {\n assertNumber(len)\n if (typeof fn !== 'function') throw new Error('checksum fn should be function')\n return {\n encode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.encode: input should be Uint8Array')\n const checksum = fn(data).slice(0, len)\n const res = new Uint8Array(data.length + len)\n res.set(data)\n res.set(checksum, data.length)\n return res\n },\n decode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.decode: input should be Uint8Array')\n const payload = data.slice(0, -len)\n const newChecksum = fn(payload).slice(0, len)\n const oldChecksum = data.slice(-len)\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i]) throw new Error('Invalid checksum')\n return payload\n },\n }\n}\n\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n}\n\n// RFC 4648 aka RFC 3548\n// ---------------------\nexport const base16: BytesCoder = /* @__PURE__ */ chain(\n radix2(4),\n alphabet('0123456789ABCDEF'),\n join('')\n)\nexport const base32: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n padding(5),\n join('')\n)\nexport const base32nopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n join('')\n)\nexport const base32hex: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n padding(5),\n join('')\n)\nexport const base32hexnopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n join('')\n)\nexport const base32agnoster: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789abcdefghjkmnpqrtuvwxyz'),\n join('')\n)\nexport const base32crockford: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'),\n join(''),\n normalize((s: string) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1'))\n)\nexport const base64: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n padding(6),\n join('')\n)\nexport const base64nopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n join('')\n)\nexport const base64url: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n padding(6),\n join('')\n)\nexport const base64urlnopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n join('')\n)\n\n// base58 code\n// -----------\nconst genBase58 = (abc: string) => chain(radix(58), alphabet(abc), join(''))\n\nexport const base58: BytesCoder = /* @__PURE__ */ genBase58(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n)\nexport const base58flickr: BytesCoder = /* @__PURE__ */ genBase58(\n '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n)\nexport const base58xrp: BytesCoder = /* @__PURE__ */ genBase58(\n 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'\n)\n\n// xmr ver is done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n// Block encoding significantly reduces quadratic complexity of base58.\n\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11]\nexport const base58xmr: BytesCoder = {\n encode(data: Uint8Array) {\n let res = ''\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8)\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length]!, '1')\n }\n return res\n },\n decode(str: string) {\n let res: number[] = []\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11)\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length)\n const block = base58.decode(slice)\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0) throw new Error('base58xmr: wrong padding')\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)))\n }\n return Uint8Array.from(res)\n },\n}\n\nexport const createBase58check = (sha256: (data: Uint8Array) => Uint8Array): BytesCoder =>\n chain(\n checksum(4, (data) => sha256(sha256(data))),\n base58\n )\n// legacy export, bad name\nexport const base58check = createBase58check\n\n// Bech32 code\n// -----------\nexport interface Bech32Decoded<Prefix extends string = string> {\n prefix: Prefix\n words: number[]\n}\nexport interface Bech32DecodedWithArray<Prefix extends string = string> {\n prefix: Prefix\n words: number[]\n bytes: Uint8Array\n}\n\nconst BECH_ALPHABET: Coder<number[], string> = /* @__PURE__ */ chain(\n alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'),\n join('')\n)\n\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3]\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bech32Polymod(pre: number): number {\n const b = pre >> 25\n let chk = (pre & 0x1ffffff) << 5\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1) chk ^= POLYMOD_GENERATORS[i]!\n }\n return chk\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bechChecksum(prefix: string, words: number[], encodingConst = 1): string {\n const len = prefix.length\n let chk = 1\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) throw new Error(`Invalid prefix (${prefix})`)\n chk = bech32Polymod(chk) ^ (c >> 5)\n }\n chk = bech32Polymod(chk)\n for (let i = 0; i < len; i++) chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f)\n for (let v of words) chk = bech32Polymod(chk) ^ v\n for (let i = 0; i < 6; i++) chk = bech32Polymod(chk)\n chk ^= encodingConst\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false))\n}\n\nexport interface Bech32 {\n encode<Prefix extends string>(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit?: number | false\n ): `${Lowercase<Prefix>}1${string}`\n decode<Prefix extends string>(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded<Prefix>\n encodeFromBytes(prefix: string, bytes: Uint8Array): string\n decodeToBytes(str: string): Bech32DecodedWithArray\n decodeUnsafe(str: string, limit?: number | false): void | Bech32Decoded<string>\n fromWords(to: number[]): Uint8Array\n fromWordsUnsafe(to: number[]): void | Uint8Array\n toWords(from: Uint8Array): number[]\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding: 'bech32' | 'bech32m'): Bech32 {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3\n const _words = radix2(5)\n const fromWords = _words.decode\n const toWords = _words.encode\n const fromWordsUnsafe = unsafeWrapper(fromWords)\n\n function encode<Prefix extends string>(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit: number | false = 90\n ): `${Lowercase<Prefix>}1${string}` {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`)\n if (words instanceof Uint8Array) words = Array.from(words)\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`)\n if (prefix.length === 0) throw new TypeError(`Invalid prefix length ${prefix.length}`)\n const actualLength = prefix.length + 7 + words.length\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`)\n const lowered = prefix.toLowerCase()\n const sum = bechChecksum(lowered, words, ENCODING_CONST)\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}` as `${Lowercase<Prefix>}1${string}`\n }\n\n function decode<Prefix extends string>(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded<Prefix>\n function decode(str: string, limit?: number | false): Bech32Decoded\n function decode(str: string, limit: number | false = 90): Bech32Decoded {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`)\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`)\n // don't allow mixed case\n const lowered = str.toLowerCase()\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`)\n const sepIndex = lowered.lastIndexOf('1')\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`)\n const prefix = lowered.slice(0, sepIndex)\n const data = lowered.slice(sepIndex + 1)\n if (data.length < 6) throw new Error('Data must be at least 6 characters long')\n const words = BECH_ALPHABET.decode(data).slice(0, -6)\n const sum = bechChecksum(prefix, words, ENCODING_CONST)\n if (!data.endsWith(sum)) throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`)\n return { prefix, words }\n }\n\n const decodeUnsafe = unsafeWrapper(decode)\n\n function decodeToBytes(str: string): Bech32DecodedWithArray {\n const { prefix, words } = decode(str, false)\n return { prefix, words, bytes: fromWords(words) }\n }\n\n function encodeFromBytes(prefix: string, bytes: Uint8Array) {\n return encode(prefix, toWords(bytes))\n }\n\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n }\n}\n\nexport const bech32: Bech32 = /* @__PURE__ */ genBech32('bech32')\nexport const bech32m: Bech32 = /* @__PURE__ */ genBech32('bech32m')\n\nexport const utf8: BytesCoder = {\n encode: (data) => Uint8ArrayToString(data),\n decode: (str) => stringToUInt8Array(str),\n}\n\nexport const hex: BytesCoder = /* @__PURE__ */ chain(\n radix2(4),\n alphabet('0123456789abcdef'),\n join(''),\n normalize((s: string) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`)\n return s.toLowerCase()\n })\n)\n\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n}\ntype CoderType = keyof typeof CODERS\nconst coderTypeError =\n 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr'\n\nexport const bytesToString = (type: CoderType, bytes: Uint8Array): string => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError)\n if (!isBytes(bytes)) throw new TypeError('bytesToString() expects Uint8Array')\n return CODERS[type].encode(bytes)\n}\nexport const str = bytesToString // as in python, but for bytes only\n\nexport const stringToBytes = (type: CoderType, str: string): Uint8Array => {\n if (!CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError)\n if (typeof str !== 'string') throw new TypeError('stringToBytes() expects string')\n return CODERS[type].decode(str)\n}\nexport const bytes = stringToBytes;\n\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-TNMEWZPW.cjs","../src/common/data/bin.ts","../src/common/data/basex-secure.ts"],"names":["_encodeUtf8Polyfill","str","encodedString","len","buf","i","__name","_decodeUtf8Polyfill","remainingLen","bufPos","nextLen","bytes","_textEncoder","stringToUInt8Array","text","encoder","data","_textDecoder","Uint8ArrayToString","bin","decoder","toArrayBuffer","b","toUint8Array","ensureUint8Array","joinToUint8Array","args","length","bins","d","cursor","toHex","h","s","v","fromHex","hexString","byte","toBase64","stripPadding","sb","base64nopad","base64","toBase64Url","base64urlnopad","fromBase64","a","fromBase64String","equalBinary","aa","bb","jsonToUint8Array","json","jsonStringifySafe","Uint8ArrayToJson","Uint8ArrayToHexDump","buffer","blockSize","lines","hex","block","addr"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-TNMEWZPW.cjs","sourcesContent":[null,"/* eslint-disable node/prefer-global/buffer */\n/* eslint-disable no-control-regex */\n/* eslint-disable prefer-spread */\n\nimport { base64, base64nopad, base64urlnopad } from './basex-secure'\nimport type { BinInput } from './bin-types'\nimport { jsonStringifySafe } from './json'\n\n\n// From https://github.com/dmonad/lib0/blob/main/string.js#L44\n\nexport function _encodeUtf8Polyfill(str: string): Uint8Array {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++)\n buf[i] = encodedString.codePointAt(i) || 0\n return buf\n}\n\nexport function _decodeUtf8Polyfill(buf: Uint8Array<ArrayBufferLike>) {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n // @ts-expect-error xxx\n encodedString += String.fromCodePoint.apply(null, bytes)\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\nlet _textEncoder: (data: string) => Uint8Array\n\nexport function stringToUInt8Array(text: string): Uint8Array {\n if (_textEncoder == null) {\n _textEncoder = _encodeUtf8Polyfill\n if (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder()\n _textEncoder = data => encoder.encode(data)\n }\n }\n return _textEncoder(text.normalize('NFC'))\n}\n\nlet _textDecoder: (data: Uint8Array<ArrayBufferLike>) => string\n\nexport function Uint8ArrayToString(bin: Uint8Array): string {\n if (_textDecoder == null) {\n _textDecoder = _decodeUtf8Polyfill\n if (typeof TextDecoder !== 'undefined') {\n const decoder = new TextDecoder('utf-8', { ignoreBOM: true })\n _textDecoder = data => decoder.decode(data)\n }\n }\n return _textDecoder(bin).normalize('NFC')\n}\n\nexport function toArrayBuffer(bin: BinInput): ArrayBuffer {\n const b = toUint8Array(bin)\n if (b.buffer.byteLength === b.byteLength)\n return b.buffer as ArrayBuffer\n return b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength) as ArrayBuffer\n}\n\nexport function toUint8Array(data: BinInput): Uint8Array {\n if (data instanceof ArrayBuffer)\n return new Uint8Array(data)\n if (typeof data === 'string')\n return stringToUInt8Array(data)\n if (data.length)\n return new Uint8Array(data)\n return data as Uint8Array\n}\n\n/**\n * Ensures a Uint8Array is backed by a real ArrayBuffer (not SharedArrayBuffer).\n * This is needed for Web Crypto API compatibility which requires BufferSource with ArrayBuffer.\n */\nexport function ensureUint8Array(data: Uint8Array): Uint8Array<ArrayBuffer> {\n // If it's already a regular Uint8Array backed by ArrayBuffer, return as-is\n // otherwise trick: const buffer = u.slice().buffer\n if (data.buffer instanceof ArrayBuffer) {\n return data as Uint8Array<ArrayBuffer>\n }\n // Otherwise, create a new copy backed by ArrayBuffer\n return new Uint8Array(data) as Uint8Array<ArrayBuffer>\n}\n\nexport function joinToUint8Array(...args: BinInput[] | BinInput[][]) {\n let length = 0\n const bins = args.flat(1).map((d) => {\n const b = toUint8Array(d as BinInput)\n length += b.length\n return b\n })\n const bin = new Uint8Array(length)\n let cursor = 0\n for (const b of bins) {\n bin.set(b, cursor)\n cursor += b.length\n }\n return bin\n}\n\nexport function toHex(bin: BinInput): string {\n if (typeof Buffer !== 'undefined')\n return Buffer.from(toUint8Array(bin)).toString('hex')\n const h = '0123456789abcdef'\n let s = ''\n for (const v of [...toUint8Array(bin)])\n s += h[v >> 4] + h[v & 15]\n return s\n}\n\nexport function fromHex(hexString: string): Uint8Array {\n return Uint8Array.from(\n hexString.match(/.{1,2}/g)!.map(byte => Number.parseInt(byte, 16)),\n )\n}\n\n// Learn about Base64 in browsers: https://web.dev/articles/base64-encoding\n\n/** Regular base64 */\nexport function toBase64(bin: BinInput, stripPadding = false): string {\n const bytes = toUint8Array(bin)\n let sb = ''\n if (typeof Buffer !== 'undefined') {\n sb = Buffer.from(bytes).toString('base64')\n if (stripPadding)\n return sb.replace(/\\=/g, '')\n return sb\n }\n if (stripPadding) {\n return base64nopad.encode(bytes)\n }\n return base64.encode(bytes)\n}\n\n/** Converts `+` -> `-` and `/` -> `_`. Always strips `=` */\nexport function toBase64Url(bin: BinInput): string {\n const bytes = toUint8Array(bin)\n if (typeof Buffer !== 'undefined')\n return Buffer.from(bytes).toString('base64url').replace(/\\=/g, '')\n return base64urlnopad.encode(bytes)\n}\n\n/** Also parses toBase64Url encoded strings. */\nexport function fromBase64(s: string): Uint8Array {\n s = s.replace(/\\-/g, '+').replace(/\\_/g, '/')\n if (typeof Buffer !== 'undefined') {\n const buf = Buffer.from(s, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n }\n if (typeof atob !== 'undefined') {\n const a = atob(s)\n const bytes = new Uint8Array(a.length)\n for (let i = 0; i < a.length; i++)\n bytes[i] = a.charCodeAt(i)\n return bytes\n }\n return base64.decode(s)\n}\n\n/** Also parses toBase64Url encoded strings. */\nexport function fromBase64String(s: string): string {\n return Uint8ArrayToString(fromBase64(s))\n}\n\n/** Compare contents of binary arrays */\nexport function equalBinary(\n a: ArrayBuffer | Uint8Array,\n b: ArrayBuffer | Uint8Array,\n): boolean {\n if (a.byteLength !== b.byteLength)\n return false\n const aa = toUint8Array(a)\n const bb = toUint8Array(b)\n for (let i = 0; i < aa.length; i++) {\n if (aa[i] !== bb[i])\n return false\n }\n return true\n}\n\nexport function jsonToUint8Array(json: any): Uint8Array | never {\n return stringToUInt8Array(jsonStringifySafe(json))\n}\n\nexport function Uint8ArrayToJson<T = any>(data: Uint8Array): T | never {\n return JSON.parse(Uint8ArrayToString(data))\n}\n\n// https://gist.github.com/igorgatis/d294fe714a4f523ac3a3\nexport function Uint8ArrayToHexDump(\n buffer: Uint8Array | ArrayBuffer | string | Array<number>,\n blockSize?: number,\n) {\n if (typeof buffer === 'string') {\n // log(\"buffer is string\")\n // do nothing\n }\n else if (buffer instanceof ArrayBuffer && buffer.byteLength !== undefined) {\n // log(\"buffer is ArrayBuffer\")\n buffer = String.fromCharCode.apply(String, [].slice.call(new Uint8Array(buffer)))\n }\n else if (Array.isArray(buffer)) {\n // log(\"buffer is Array\")\n buffer = String.fromCharCode.apply(String, buffer)\n }\n else if (buffer.constructor === Uint8Array) {\n // log(\"buffer is Uint8Array\")\n buffer = String.fromCharCode.apply(String, [].slice.call(buffer))\n }\n else {\n // log(\"Error: buffer is unknown...\")\n return false\n }\n\n blockSize = blockSize || 16\n const lines = []\n const hex = '0123456789abcdef' // '0123456789ABCDEF'\n for (let b = 0; b < buffer.length; b += blockSize) {\n const block = buffer.slice(b, Math.min(b + blockSize, buffer.length))\n const addr = (`0000${b.toString(16)}`).slice(-4)\n let codes = block\n .split('')\n .map((ch: any) => {\n const code = ch.charCodeAt(0)\n return ` ${hex[(0xF0 & code) >> 4]}${hex[0x0F & code]}`\n })\n .join('')\n codes += ' '.repeat(blockSize - block.length)\n let chars = block.replace(/[\\x00-\\x1F\\x20\\x7F-\\xA0\\xAD]/g, '.')\n chars += ' '.repeat(blockSize - block.length)\n lines.push(`${addr} ${codes} ${chars}`)\n }\n return lines.join('\\n')\n}\n","/* scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\nimport { stringToUInt8Array, Uint8ArrayToString } from './bin'\n\n// Utilities\n/**\n * @__NO_SIDE_EFFECTS__\n */\nexport function assertNumber(n: number) {\n if (!Number.isSafeInteger(n)) throw new Error(`Wrong integer: ${n}`)\n}\nexport interface Coder<F, T> {\n encode(from: F): T\n decode(to: T): F\n}\n\nexport interface BytesCoder extends Coder<Uint8Array, string> {\n encode: (data: Uint8Array) => string\n decode: (str: string) => Uint8Array\n}\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return (\n a instanceof Uint8Array ||\n (a != null && typeof a === 'object' && a.constructor.name === 'Uint8Array')\n )\n}\n\n// TODO: some recusive type inference so it would check correct order of input/output inside rest?\n// like <string, number>, <number, bytes>, <bytes, float>\nexport type BaseXChain = [Coder<any, any>, ...Coder<any, any>[]]\n// Extract info from Coder type\nexport type BaseXInput<F> = F extends Coder<infer T, any> ? T : never\nexport type BaseXOutput<F> = F extends Coder<any, infer T> ? T : never\n// Generic function for arrays\nexport type BaseXFirst<T> = T extends [infer U, ...any[]] ? U : never\nexport type BaseXLast<T> = T extends [...any[], infer U] ? U : never\nexport type BaseXTail<T> = T extends [any, ...infer U] ? U : never\n\nexport type BaseXAsChain<C extends BaseXChain, Rest = BaseXTail<C>> = {\n // C[K] = Coder<Input<C[K]>, Input<Rest[k]>>\n [K in keyof C]: Coder<BaseXInput<C[K]>, BaseXInput<K extends keyof Rest ? Rest[K] : any>>\n}\n\n// Publicly visible aliases prefixed with BaseX for clearer documentation\n// Remove old alias leftovers (we renamed core types to BaseX-prefixed names).\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain<T extends BaseXChain & BaseXAsChain<T>>(...args: T): Coder<BaseXInput<BaseXFirst<T>>, BaseXOutput<BaseXLast<T>>> {\n const id = (a: any) => a\n // Wrap call in closure so JIT can inline calls\n const wrap = (a: any, b: any) => (c: any) => a(b(c))\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id)\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id)\n return { encode, decode }\n}\n\nexport type BaseXAlphabet = string[] | string\n/**\n * Encodes integer radix representation to array of strings using alphabet and back\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(alphabet: BaseXAlphabet): Coder<number[], string[]> {\n return {\n encode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('alphabet.encode input should be an array of numbers')\n return digits.map((i) => {\n assertNumber(i)\n if (i < 0 || i >= alphabet.length)\n throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet.length})`)\n return alphabet[i]!\n })\n },\n decode: (input: string[]) => {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('alphabet.decode input should be array of strings')\n return input.map((letter) => {\n if (typeof letter !== 'string')\n throw new Error(`alphabet.decode: not string element=${letter}`)\n const index = alphabet.indexOf(letter)\n if (index === -1) throw new Error(`Unknown letter: \"${letter}\". Allowed: ${alphabet}`)\n return index\n })\n },\n }\n}\n// Alias exported after Alphabet is declared (kept only for backwards compat if needed)\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = ''): Coder<string[], string> {\n if (typeof separator !== 'string') throw new Error('join separator should be string')\n return {\n encode: (from) => {\n if (!Array.isArray(from) || (from.length && typeof from[0] !== 'string'))\n throw new Error('join.encode input should be array of strings')\n for (let i of from)\n if (typeof i !== 'string') throw new Error(`join.encode: non-string input=${i}`)\n return from.join(separator)\n },\n decode: (to) => {\n if (typeof to !== 'string') throw new Error('join.decode input should be string')\n return to.split(separator)\n },\n }\n}\n\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits: number, chr = '='): Coder<string[], string[]> {\n assertNumber(bits)\n if (typeof chr !== 'string') throw new Error('padding chr should be string')\n return {\n encode(data: string[]): string[] {\n if (!Array.isArray(data) || (data.length && typeof data[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings')\n for (let i of data)\n if (typeof i !== 'string') throw new Error(`padding.encode: non-string input=${i}`)\n while ((data.length * bits) % 8) data.push(chr)\n return data\n },\n decode(input: string[]): string[] {\n if (!Array.isArray(input) || (input.length && typeof input[0] !== 'string'))\n throw new Error('padding.encode input should be array of strings')\n for (let i of input)\n if (typeof i !== 'string') throw new Error(`padding.decode: non-string input=${i}`)\n let end = input.length\n if ((end * bits) % 8)\n throw new Error('Invalid padding: string should have whole number of bytes')\n for (; end > 0 && input[end - 1] === chr; end--) {\n if (!(((end - 1) * bits) % 8))\n throw new Error('Invalid padding: string has too much padding')\n }\n return input.slice(0, end)\n },\n }\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize<T>(fn: (val: T) => T): Coder<T, T> {\n if (typeof fn !== 'function') throw new Error('normalize fn should be function')\n return { encode: (from: T) => from, decode: (to: T) => fn(to) }\n}\n\n/**\n * Slow: O(n^2) time complexity\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix(data: number[], from: number, to: number): number[] {\n // base 1 is impossible\n if (from < 2) throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`)\n if (to < 2) throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`)\n if (!Array.isArray(data)) throw new Error('convertRadix: data should be array')\n if (!data.length) return []\n let pos = 0\n const res = []\n const digits = Array.from(data)\n digits.forEach((d) => {\n assertNumber(d)\n if (d < 0 || d >= from) throw new Error(`Wrong integer: ${d}`)\n })\n while (true) {\n let carry = 0\n let done = true\n for (let i = pos; i < digits.length; i++) {\n const digit = digits[i]!\n const digitBase = from * carry + digit\n if (\n !Number.isSafeInteger(digitBase) ||\n (from * carry) / from !== carry ||\n digitBase - digit !== from * carry\n ) {\n throw new Error('convertRadix: carry overflow')\n }\n carry = digitBase % to\n const rounded = Math.floor(digitBase / to)\n digits[i] = rounded\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow')\n if (!done) continue\n else if (!rounded) pos = i\n else done = false\n }\n res.push(carry)\n if (done) break\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++) res.push(0)\n return res.reverse()\n}\n\nconst gcd = /* @__NO_SIDE_EFFECTS__ */ (a: number, b: number): number => (!b ? a : gcd(b, a % b))\nconst radix2carry = /*@__NO_SIDE_EFFECTS__ */ (from: number, to: number) =>\n from + (to - gcd(from, to))\n/**\n * Implemented with numbers, because BigInt is 5x slower\n * @__NO_SIDE_EFFECTS__\n */\nfunction convertRadix2(data: number[], from: number, to: number, padding: boolean): number[] {\n if (!Array.isArray(data)) throw new Error('convertRadix2: data should be array')\n if (from <= 0 || from > 32) throw new Error(`convertRadix2: wrong from=${from}`)\n if (to <= 0 || to > 32) throw new Error(`convertRadix2: wrong to=${to}`)\n if (radix2carry(from, to) > 32) {\n throw new Error(\n `convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`\n )\n }\n let carry = 0\n let pos = 0 // bitwise position in current element\n const mask = 2 ** to - 1\n const res: number[] = []\n for (const n of data) {\n assertNumber(n)\n if (n >= 2 ** from) throw new Error(`convertRadix2: invalid data word=${n} from=${from}`)\n carry = (carry << from) | n\n if (pos + from > 32) throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`)\n pos += from\n for (; pos >= to; pos -= to) res.push(((carry >> (pos - to)) & mask) >>> 0)\n carry &= 2 ** pos - 1 // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask\n if (!padding && pos >= from) throw new Error('Excess padding')\n if (!padding && carry) throw new Error(`Non-zero padding: ${carry}`)\n if (padding && pos > 0) res.push(carry >>> 0)\n return res\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num: number): Coder<Uint8Array, number[]> {\n assertNumber(num)\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix.encode input should be Uint8Array')\n return convertRadix(Array.from(bytes), 2 ** 8, num)\n },\n decode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix.decode input should be array of numbers')\n return Uint8Array.from(convertRadix(digits, num, 2 ** 8))\n },\n }\n}\n\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits: number, revPadding = false): Coder<Uint8Array, number[]> {\n assertNumber(bits)\n if (bits <= 0 || bits > 32) throw new Error('radix2: bits should be in (0..32]')\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow')\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix2.encode input should be Uint8Array')\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding)\n },\n decode: (digits: number[]) => {\n if (!Array.isArray(digits) || (digits.length && typeof digits[0] !== 'number'))\n throw new Error('radix2.decode input should be array of numbers')\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding))\n },\n }\n}\n\ntype ArgumentTypes<F extends Function> = F extends (...args: infer A) => any ? A : never\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction unsafeWrapper<T extends (...args: any) => any>(fn: T) {\n if (typeof fn !== 'function') throw new Error('unsafeWrapper fn should be function')\n return function (...args: ArgumentTypes<T>): ReturnType<T> | void {\n try {\n return fn.apply(null, args)\n } catch (e) { }\n }\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction checksum(\n len: number,\n fn: (data: Uint8Array) => Uint8Array\n): Coder<Uint8Array, Uint8Array> {\n assertNumber(len)\n if (typeof fn !== 'function') throw new Error('checksum fn should be function')\n return {\n encode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.encode: input should be Uint8Array')\n const checksum = fn(data).slice(0, len)\n const res = new Uint8Array(data.length + len)\n res.set(data)\n res.set(checksum, data.length)\n return res\n },\n decode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.decode: input should be Uint8Array')\n const payload = data.slice(0, -len)\n const newChecksum = fn(payload).slice(0, len)\n const oldChecksum = data.slice(-len)\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i]) throw new Error('Invalid checksum')\n return payload\n },\n }\n}\n\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n}\n\n// RFC 4648 aka RFC 3548\n// ---------------------\nexport const base16: BytesCoder = /* @__PURE__ */ chain(\n radix2(4),\n alphabet('0123456789ABCDEF'),\n join('')\n)\nexport const base32: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n padding(5),\n join('')\n)\nexport const base32nopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n join('')\n)\nexport const base32hex: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n padding(5),\n join('')\n)\nexport const base32hexnopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n join('')\n)\nexport const base32agnoster: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789abcdefghjkmnpqrtuvwxyz'),\n join('')\n)\nexport const base32crockford: BytesCoder = /* @__PURE__ */ chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'),\n join(''),\n normalize((s: string) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1'))\n)\nexport const base64: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n padding(6),\n join('')\n)\nexport const base64nopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n join('')\n)\nexport const base64url: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n padding(6),\n join('')\n)\nexport const base64urlnopad: BytesCoder = /* @__PURE__ */ chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n join('')\n)\n\n// base58 code\n// -----------\nconst genBase58 = (abc: string) => chain(radix(58), alphabet(abc), join(''))\n\nexport const base58: BytesCoder = /* @__PURE__ */ genBase58(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n)\nexport const base58flickr: BytesCoder = /* @__PURE__ */ genBase58(\n '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n)\nexport const base58xrp: BytesCoder = /* @__PURE__ */ genBase58(\n 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'\n)\n\n// xmr ver is done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n// Block encoding significantly reduces quadratic complexity of base58.\n\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11]\nexport const base58xmr: BytesCoder = {\n encode(data: Uint8Array) {\n let res = ''\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8)\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length]!, '1')\n }\n return res\n },\n decode(str: string) {\n let res: number[] = []\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11)\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length)\n const block = base58.decode(slice)\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0) throw new Error('base58xmr: wrong padding')\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)))\n }\n return Uint8Array.from(res)\n },\n}\n\nexport const createBase58check = (sha256: (data: Uint8Array) => Uint8Array): BytesCoder =>\n chain(\n checksum(4, (data) => sha256(sha256(data))),\n base58\n )\n// legacy export, bad name\nexport const base58check = createBase58check\n\n// Bech32 code\n// -----------\nexport interface Bech32Decoded<Prefix extends string = string> {\n prefix: Prefix\n words: number[]\n}\nexport interface Bech32DecodedWithArray<Prefix extends string = string> {\n prefix: Prefix\n words: number[]\n bytes: Uint8Array\n}\n\nconst BECH_ALPHABET: Coder<number[], string> = /* @__PURE__ */ chain(\n alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'),\n join('')\n)\n\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3]\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bech32Polymod(pre: number): number {\n const b = pre >> 25\n let chk = (pre & 0x1ffffff) << 5\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1) chk ^= POLYMOD_GENERATORS[i]!\n }\n return chk\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction bechChecksum(prefix: string, words: number[], encodingConst = 1): string {\n const len = prefix.length\n let chk = 1\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) throw new Error(`Invalid prefix (${prefix})`)\n chk = bech32Polymod(chk) ^ (c >> 5)\n }\n chk = bech32Polymod(chk)\n for (let i = 0; i < len; i++) chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f)\n for (let v of words) chk = bech32Polymod(chk) ^ v\n for (let i = 0; i < 6; i++) chk = bech32Polymod(chk)\n chk ^= encodingConst\n return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false))\n}\n\nexport interface Bech32 {\n encode<Prefix extends string>(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit?: number | false\n ): `${Lowercase<Prefix>}1${string}`\n decode<Prefix extends string>(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded<Prefix>\n encodeFromBytes(prefix: string, bytes: Uint8Array): string\n decodeToBytes(str: string): Bech32DecodedWithArray\n decodeUnsafe(str: string, limit?: number | false): void | Bech32Decoded<string>\n fromWords(to: number[]): Uint8Array\n fromWordsUnsafe(to: number[]): void | Uint8Array\n toWords(from: Uint8Array): number[]\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding: 'bech32' | 'bech32m'): Bech32 {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3\n const _words = radix2(5)\n const fromWords = _words.decode\n const toWords = _words.encode\n const fromWordsUnsafe = unsafeWrapper(fromWords)\n\n function encode<Prefix extends string>(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit: number | false = 90\n ): `${Lowercase<Prefix>}1${string}` {\n if (typeof prefix !== 'string')\n throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`)\n if (words instanceof Uint8Array) words = Array.from(words)\n if (!Array.isArray(words) || (words.length && typeof words[0] !== 'number'))\n throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`)\n if (prefix.length === 0) throw new TypeError(`Invalid prefix length ${prefix.length}`)\n const actualLength = prefix.length + 7 + words.length\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`)\n const lowered = prefix.toLowerCase()\n const sum = bechChecksum(lowered, words, ENCODING_CONST)\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}` as `${Lowercase<Prefix>}1${string}`\n }\n\n function decode<Prefix extends string>(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded<Prefix>\n function decode(str: string, limit?: number | false): Bech32Decoded\n function decode(str: string, limit: number | false = 90): Bech32Decoded {\n if (typeof str !== 'string')\n throw new Error(`bech32.decode input should be string, not ${typeof str}`)\n if (str.length < 8 || (limit !== false && str.length > limit))\n throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`)\n // don't allow mixed case\n const lowered = str.toLowerCase()\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`)\n const sepIndex = lowered.lastIndexOf('1')\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`)\n const prefix = lowered.slice(0, sepIndex)\n const data = lowered.slice(sepIndex + 1)\n if (data.length < 6) throw new Error('Data must be at least 6 characters long')\n const words = BECH_ALPHABET.decode(data).slice(0, -6)\n const sum = bechChecksum(prefix, words, ENCODING_CONST)\n if (!data.endsWith(sum)) throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`)\n return { prefix, words }\n }\n\n const decodeUnsafe = unsafeWrapper(decode)\n\n function decodeToBytes(str: string): Bech32DecodedWithArray {\n const { prefix, words } = decode(str, false)\n return { prefix, words, bytes: fromWords(words) }\n }\n\n function encodeFromBytes(prefix: string, bytes: Uint8Array) {\n return encode(prefix, toWords(bytes))\n }\n\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n }\n}\n\nexport const bech32: Bech32 = /* @__PURE__ */ genBech32('bech32')\nexport const bech32m: Bech32 = /* @__PURE__ */ genBech32('bech32m')\n\nexport const utf8: BytesCoder = {\n encode: (data) => Uint8ArrayToString(data),\n decode: (str) => stringToUInt8Array(str),\n}\n\nexport const hex: BytesCoder = /* @__PURE__ */ chain(\n radix2(4),\n alphabet('0123456789abcdef'),\n join(''),\n normalize((s: string) => {\n if (typeof s !== 'string' || s.length % 2)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`)\n return s.toLowerCase()\n })\n)\n\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n}\ntype CoderType = keyof typeof CODERS\nconst coderTypeError =\n 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr'\n\nexport const bytesToString = (type: CoderType, bytes: Uint8Array): string => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError)\n if (!isBytes(bytes)) throw new TypeError('bytesToString() expects Uint8Array')\n return CODERS[type].encode(bytes)\n}\nexport const str = bytesToString // as in python, but for bytes only\n\nexport const stringToBytes = (type: CoderType, str: string): Uint8Array => {\n if (!CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError)\n if (typeof str !== 'string') throw new TypeError('stringToBytes() expects string')\n return CODERS[type].decode(str)\n}\nexport const bytes = stringToBytes;\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-UCS53L2H.cjs","../src/node/clipboard.ts"],"names":["pbcopy","data","resolve","reject","spawn","proc","err","__name"],"mappings":"AAAA,mZAAwC,SCCxBA,CAAAA,CAAOC,CAAAA,CAAc,CACnC,OAAO,IAAI,OAAA,CACT,CAACC,CAAAA,CAASC,CAAAA,CAAAA,EAAW,CACnB,4DAAA,CAAO,eAAoB,GAAA,CAAE,IAAA,CAAK,CAAC,CAAE,KAAA,CAAAC,CAAM,CAAA,CAAA,EAAM,CAC/C,IAAMC,CAAAA,CAAOD,CAAAA,CAAM,QAAQ,CAAA,CAC3BC,CAAAA,CAAK,EAAA,CAAG,OAAA,CAAUC,CAAAA,EAAaH,CAAAA,CAAOG,CAAG,CAAC,CAAA,CAC1CD,CAAAA,CAAK,EAAA,CAAG,OAAA,CAAS,CAAA,CAAA,EAAMH,CAAAA,CAAQD,CAAI,CAAC,CAAA,CACpCI,CAAAA,CAAK,KAAA,CAAM,KAAA,CAAMJ,CAAI,CAAA,CACrBI,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CACjB,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,EAAM,CAAC,CAAC,CACnB,CACF,CACF,CAZgBE,iCAAAA,CAAAP,CAAA,QAAA,CAAA,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-UCS53L2H.cjs","sourcesContent":[null,"/** Copy string to clipboard */\nexport function pbcopy(data: string) {\n return new Promise(\n (resolve, reject) => {\n import('node:child_process').then(({ spawn }) => {\n const proc = spawn('pbcopy')\n proc.on('error', (err: any) => reject(err))\n proc.on('close', () => resolve(data))\n proc.stdin.write(data)\n proc.stdin.end()\n }).catch(() => {})\n },\n )\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-UCS53L2H.cjs","../src/node/clipboard.ts"],"names":["pbcopy","data","resolve","reject","spawn","proc","err","__name"],"mappings":"AAAA,mZAAwC,SCCxBA,CAAAA,CAAOC,CAAAA,CAAc,CACnC,OAAO,IAAI,OAAA,CACT,CAACC,CAAAA,CAASC,CAAAA,CAAAA,EAAW,CACnB,4DAAA,CAAO,eAAoB,GAAA,CAAE,IAAA,CAAK,CAAC,CAAE,KAAA,CAAAC,CAAM,CAAA,CAAA,EAAM,CAC/C,IAAMC,CAAAA,CAAOD,CAAAA,CAAM,QAAQ,CAAA,CAC3BC,CAAAA,CAAK,EAAA,CAAG,OAAA,CAAUC,CAAAA,EAAaH,CAAAA,CAAOG,CAAG,CAAC,CAAA,CAC1CD,CAAAA,CAAK,EAAA,CAAG,OAAA,CAAS,CAAA,CAAA,EAAMH,CAAAA,CAAQD,CAAI,CAAC,CAAA,CACpCI,CAAAA,CAAK,KAAA,CAAM,KAAA,CAAMJ,CAAI,CAAA,CACrBI,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CACjB,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,EAAM,CAAC,CAAC,CACnB,CACF,CACF,CAZgBE,iCAAAA,CAAAP,CAAA,QAAA,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-UCS53L2H.cjs","sourcesContent":[null,"/** Copy string to clipboard */\nexport function pbcopy(data: string) {\n return new Promise(\n (resolve, reject) => {\n import('node:child_process').then(({ spawn }) => {\n const proc = spawn('pbcopy')\n proc.on('error', (err: any) => reject(err))\n proc.on('close', () => resolve(data))\n proc.stdin.write(data)\n proc.stdin.end()\n }).catch(() => {})\n },\n )\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-ULLUQLTA.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-ULLUQLTA.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-ULLUQLTA.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-ULLUQLTA.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-UO65Z4DR.cjs","../src/common/schema/export-json-schema.ts"],"names":["_mapJsonSchemaType","schemaExportJsonSchema","schema","transformSchema","type","properties","required","objectMap","key","enumValues","s","isEmpty","__name","schemaExportJsonSchemaString","jsonSchema"],"mappings":"AAAA,yuBAAwC,wDAAyC,wDAAyC,ICIpHA,CAAAA,CAA6C,CACjD,MAAA,CAAQ,QAAA,CACR,MAAA,CAAQ,QAAA,CACR,OAAA,CAAS,SAAA,CACT,GAAA,CAAK,SACP,CAAA,CAEO,SAASC,CAAAA,CAA0BC,CAAAA,CAAsC,CAG9E,SAASC,CAAAA,CAAgBD,CAAAA,CAAwB,CAC/C,IAAME,CAAAA,mCAAOJ,CAAAA,CAAmBE,CAAAA,CAAO,IAAI,CAAA,SAAKA,CAAAA,CAAO,MAAA,SAAQ,UAAA,CACzDG,CAAAA,CAAkC,CAAC,CAAA,CACnCC,CAAAA,CAAqB,CAAC,CAAA,CAmC5B,OAjCAC,iCAAAA,CAAUL,CAAO,OAAA,CAAU,CAACM,CAAAA,CAAKN,CAAAA,CAAAA,EAAgB,CAC/C,IAAME,CAAAA,kBAAOJ,CAAAA,CAAmBE,CAAAA,CAAO,IAAI,CAAA,SAAKA,CAAAA,CAAO,MAAA,CACvDG,CAAAA,CAAWG,CAAG,CAAA,CAAI,CAAE,IAAA,CAAAJ,CAAK,CAAA,CACzB,IAAMK,CAAAA,CAAcP,CAAAA,CAAe,WAAA,CAC/BO,CAAAA,EAAAA,CACFJ,CAAAA,CAAWG,CAAG,CAAA,CAAE,IAAA,CAAOC,CAAAA,CAAAA,CAErBP,CAAAA,CAAO,QAAA,GAAa,KAAA,CAAA,EAAA,CACtBG,CAAAA,CAAWG,CAAG,CAAA,CAAE,OAAA,CAAUN,CAAAA,CAAO,QAAA,CAAA,iBAE/BA,CAAAA,qBAAO,KAAA,6BAAO,MAAA,EAAA,CAChBG,CAAAA,CAAWG,CAAG,CAAA,CAAE,WAAA,CAAcN,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAA,CAEzCA,CAAAA,CAAO,SAAA,GAAc,CAAA,CAAA,EACvBI,CAAAA,CAAS,IAAA,CAAKE,CAAG,CAAA,CAEfN,CAAAA,CAAO,IAAA,GAAS,OAAA,EAAWA,CAAAA,CAAO,KAAA,CACpCG,CAAAA,CAAWG,CAAG,CAAA,CAAE,KAAA,CAAQL,CAAAA,CAAgBD,CAAAA,CAAO,KAAK,CAAA,CAE7CA,CAAAA,CAAO,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAO,OAAA,CAAA,CAC1C,MAAA,CAAO,MAAA,CAAOG,CAAAA,CAAWG,CAAG,CAAA,CAAGL,CAAAA,CAAgBD,CAAM,CAAC,CAAA,CACtDG,CAAAA,CAAWG,CAAG,CAAA,CAAE,oBAAA,CAAuB,CAAA,CAAA,CAAA,CAEhCN,CAAAA,CAAO,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAO,KAAA,CAAA,CAC1CG,CAAAA,CAAWG,CAAG,CAAA,CAAE,IAAA,CAAO,QAAA,CACvBH,CAAAA,CAAWG,CAAG,CAAA,CAAE,oBAAA,CAAuBL,CAAAA,CAAgBD,CAAAA,CAAO,KAAK,CAAA,CAAA,CAG5DA,CAAAA,CAAO,IAAA,GAAS,OAAA,EAAW,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAO,MAAM,CAAA,EAAA,CAC7DG,CAAAA,CAAWG,CAAG,CAAA,CAAE,IAAA,CAAON,CAAAA,CAAO,MAAA,CAAO,GAAA,CAAKQ,CAAAA,mBAAWV,CAAAA,CAAmBU,CAAAA,CAAE,IAAI,CAAA,SAAKA,CAAAA,CAAE,MAAI,CAAA,CAE7F,CAAC,CAAA,CAEIC,iCAAAA,CAAkB,CAAA,CAShB,CACL,IAAA,CAAAP,CACF,CAAA,CAVS,CACL,IAAA,CAAAA,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,oBAAA,CAAsB,CAAA,CAAA,CACtB,GAAIC,CAAAA,CAAS,MAAA,CAAS,CAAA,CAAI,CAAE,QAAA,CAAAA,CAAS,CAAA,CAAI,CAAC,CAC5C,CAMJ,CAlDS,OAAAM,iCAAAA,CAAAT,CAAA,iBAAA,CAAA,CAoDF,CACL,OAAA,CAAS,yCAAA,CACT,oBAAA,CAAsB,CAAA,CAAA,CACtB,GAAGA,CAAAA,CAAgBD,CAAM,CAC3B,CACF,CA5DgBU,iCAAAA,CAAAX,CAAA,wBAAA,CAAA,CA8DT,SAASY,CAAAA,CAAgCX,CAAAA,CAAyB,CACvE,IAAMY,CAAAA,CAAab,CAAAA,CAAuBC,CAAM,CAAA,CAChD,OAAO,IAAA,CAAK,SAAA,CAAUY,CAAAA,CAAY,IAAA,CAAM,CAAC,CAC3C,CAHgBF,iCAAAA,CAAAC,CAAA,8BAAA,CAAA,CAAA,6BAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-UO65Z4DR.cjs","sourcesContent":[null,"import type { Type } from './schema'\nimport { isEmpty } from '../data'\nimport { objectMap } from '../data/object'\n\nconst _mapJsonSchemaType: Record<string, string> = {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n int: 'integer',\n}\n\nexport function schemaExportJsonSchema<T>(schema: Type<T>): Record<string, any> {\n // assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n function transformSchema(schema: Type<any>): any {\n const type = _mapJsonSchemaType[schema.type] ?? schema.type ?? 'object'\n const properties: Record<string, any> = {}\n const required: string[] = []\n\n objectMap(schema._object!, (key, schema: any) => {\n const type = _mapJsonSchemaType[schema.type] ?? schema.type\n properties[key] = { type }\n const enumValues = (schema as any)._enumValues\n if (enumValues) {\n properties[key].enum = enumValues\n }\n if (schema._default !== undefined) {\n properties[key].default = schema._default\n }\n if (schema._meta?.desc) {\n properties[key].description = schema._meta.desc\n }\n if (schema._optional !== true) {\n required.push(key)\n }\n if (schema.type === 'array' && schema._type) {\n properties[key].items = transformSchema(schema._type)\n }\n else if (schema.type === 'object' && schema._object) {\n Object.assign(properties[key], transformSchema(schema))\n properties[key].additionalProperties = false\n }\n else if (schema.type === 'record' && schema._type) {\n properties[key].type = 'object'\n properties[key].additionalProperties = transformSchema(schema._type)\n }\n // Handle union types (e.g., z.union)\n else if (schema.type === 'union' && Array.isArray(schema._union)) {\n properties[key].type = schema._union.map((s: any) => _mapJsonSchemaType[s.type] ?? s.type) // todo complex types\n }\n })\n\n if (!isEmpty(properties)) {\n return {\n type,\n properties,\n additionalProperties: false,\n ...(required.length > 0 ? { required } : {}),\n }\n }\n\n return {\n type,\n }\n }\n\n return {\n $schema: 'http://json-schema.org/draft-07/schema#',\n additionalProperties: false,\n ...transformSchema(schema),\n }\n}\n\nexport function schemaExportJsonSchemaString<T>(schema: Type<T>): string {\n const jsonSchema = schemaExportJsonSchema(schema)\n return JSON.stringify(jsonSchema, null, 2)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-UO65Z4DR.cjs","../src/common/schema/export-json-schema.ts"],"names":["_mapJsonSchemaType","schemaExportJsonSchema","schema","transformSchema","type","properties","required","objectMap","key","enumValues","s","isEmpty","__name","schemaExportJsonSchemaString","jsonSchema"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-UO65Z4DR.cjs","sourcesContent":[null,"import type { Type } from './schema'\nimport { isEmpty } from '../data'\nimport { objectMap } from '../data/object'\n\nconst _mapJsonSchemaType: Record<string, string> = {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n int: 'integer',\n}\n\nexport function schemaExportJsonSchema<T>(schema: Type<T>): Record<string, any> {\n // assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n function transformSchema(schema: Type<any>): any {\n const type = _mapJsonSchemaType[schema.type] ?? schema.type ?? 'object'\n const properties: Record<string, any> = {}\n const required: string[] = []\n\n objectMap(schema._object!, (key, schema: any) => {\n const type = _mapJsonSchemaType[schema.type] ?? schema.type\n properties[key] = { type }\n const enumValues = (schema as any)._enumValues\n if (enumValues) {\n properties[key].enum = enumValues\n }\n if (schema._default !== undefined) {\n properties[key].default = schema._default\n }\n if (schema._meta?.desc) {\n properties[key].description = schema._meta.desc\n }\n if (schema._optional !== true) {\n required.push(key)\n }\n if (schema.type === 'array' && schema._type) {\n properties[key].items = transformSchema(schema._type)\n }\n else if (schema.type === 'object' && schema._object) {\n Object.assign(properties[key], transformSchema(schema))\n properties[key].additionalProperties = false\n }\n else if (schema.type === 'record' && schema._type) {\n properties[key].type = 'object'\n properties[key].additionalProperties = transformSchema(schema._type)\n }\n // Handle union types (e.g., z.union)\n else if (schema.type === 'union' && Array.isArray(schema._union)) {\n properties[key].type = schema._union.map((s: any) => _mapJsonSchemaType[s.type] ?? s.type) // todo complex types\n }\n })\n\n if (!isEmpty(properties)) {\n return {\n type,\n properties,\n additionalProperties: false,\n ...(required.length > 0 ? { required } : {}),\n }\n }\n\n return {\n type,\n }\n }\n\n return {\n $schema: 'http://json-schema.org/draft-07/schema#',\n additionalProperties: false,\n ...transformSchema(schema),\n }\n}\n\nexport function schemaExportJsonSchemaString<T>(schema: Type<T>): string {\n const jsonSchema = schemaExportJsonSchema(schema)\n return JSON.stringify(jsonSchema, null, 2)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-UXW3L3L6.cjs","../src/common/data/math.ts"],"names":["getSecureRandom","__name","getSecureRandomIfPossible","randomBoolean","bias","randomInt","max","min","randomFloat","between","value","sum","array","acc","avg","isPrimeRX","isPrime","i","_seed","seededRandom","seed","rnd","base32Chars","numberToBase32","num","padding","str","rem","base32ToNumber","index"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-UXW3L3L6.cjs","sourcesContent":[null,"export function getSecureRandom(): number {\n return crypto.getRandomValues(new Uint32Array(1))[0] / 0xFFFFFFFF\n}\n\nexport function getSecureRandomIfPossible(): number {\n return typeof crypto !== 'undefined' ? getSecureRandom() : Math.random()\n}\n\nexport function randomBoolean(bias = 0.25): boolean {\n return getSecureRandomIfPossible() < bias\n}\n\n/** max is not included, min is included */\nexport function randomInt(max = 100, min = 0): number {\n return min + Math.floor(getSecureRandomIfPossible() * (max - min))\n}\n\nexport function randomFloat(max = 100, min = 0): number {\n return min + getSecureRandomIfPossible() * (max - min)\n}\n\nexport function between(min: number, value: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\n/** See also arraySum */\nexport function sum(array: number[]): number {\n return array.reduce((acc, value) => acc + value, 0)\n}\n\n/** See also arrayAvg */\nexport function avg(array: number[]): number {\n return sum(array) / array.length\n}\n\n// export const clamp = (n: number, min: number, max: number) => Math.min(max, Math.max(min, n))\n\n// https://www.noulakaz.net/2007/03/18/a-regular-expression-to-check-for-prime-numbers/\n/** Fancy prime number check ;) */\nexport function isPrimeRX(value: number): boolean {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n return !/^1?$|^(1{2,}?)\\1+$/.test('1'.repeat(value))\n}\n\nexport function isPrime(value: number): boolean {\n for (let i = 2; i < value; i++) {\n if (value % i === 0)\n return false\n }\n return value > 1\n}\n\n// http://indiegamr.com/generate-repeatable-random-numbers-in-js/\n// https://softwareengineering.stackexchange.com/questions/260969/original-source-of-seed-9301-49297-233280-random-algorithm\n\nlet _seed = 6\n\n/** Deterministic random */\nexport function seededRandom(max = 0, min = 1, seed?: number) {\n _seed = ((seed ?? _seed) * 9301 + 49297) % 233280\n const rnd = _seed / 233280\n return min + rnd * (max - min)\n}\n\nconst base32Chars = '0123456789abcdefghjkmnpqrtuvwxyz'\n\nexport function numberToBase32(num: number, padding = 0): string {\n if (num === 0)\n return '0'\n let str = ''\n while (num > 0) {\n const rem = num % 32\n str = base32Chars[rem] + str\n num = Math.floor(num / 32)\n }\n while (str.length < padding)\n str = '0' + str\n return str\n}\n\nexport function base32ToNumber(str: string): number {\n let num = 0\n for (let i = 0; i < str.length; i++) {\n const index = base32Chars.indexOf(str[i].toLowerCase())\n if (index === -1)\n throw new Error(`Invalid base32 character: ${str[i]}`)\n num = num * 32 + index\n }\n return num\n}"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-UXW3L3L6.cjs","../src/common/data/math.ts"],"names":["getSecureRandom","__name","getSecureRandomIfPossible","randomBoolean","bias","randomInt","max","min","randomFloat","between","value","sum","array","acc","avg","isPrimeRX","isPrime","i","_seed","seededRandom","seed","rnd","base32Chars","numberToBase32","num","padding","str","rem","base32ToNumber","index"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-UXW3L3L6.cjs","sourcesContent":[null,"export function getSecureRandom(): number {\n return crypto.getRandomValues(new Uint32Array(1))[0] / 0xFFFFFFFF\n}\n\nexport function getSecureRandomIfPossible(): number {\n return typeof crypto !== 'undefined' ? getSecureRandom() : Math.random()\n}\n\nexport function randomBoolean(bias = 0.25): boolean {\n return getSecureRandomIfPossible() < bias\n}\n\n/** max is not included, min is included */\nexport function randomInt(max = 100, min = 0): number {\n return min + Math.floor(getSecureRandomIfPossible() * (max - min))\n}\n\nexport function randomFloat(max = 100, min = 0): number {\n return min + getSecureRandomIfPossible() * (max - min)\n}\n\nexport function between(min: number, value: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\n/** See also arraySum */\nexport function sum(array: number[]): number {\n return array.reduce((acc, value) => acc + value, 0)\n}\n\n/** See also arrayAvg */\nexport function avg(array: number[]): number {\n return sum(array) / array.length\n}\n\n// export const clamp = (n: number, min: number, max: number) => Math.min(max, Math.max(min, n))\n\n// https://www.noulakaz.net/2007/03/18/a-regular-expression-to-check-for-prime-numbers/\n/** Fancy prime number check ;) */\nexport function isPrimeRX(value: number): boolean {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n return !/^1?$|^(1{2,}?)\\1+$/.test('1'.repeat(value))\n}\n\nexport function isPrime(value: number): boolean {\n for (let i = 2; i < value; i++) {\n if (value % i === 0)\n return false\n }\n return value > 1\n}\n\n// http://indiegamr.com/generate-repeatable-random-numbers-in-js/\n// https://softwareengineering.stackexchange.com/questions/260969/original-source-of-seed-9301-49297-233280-random-algorithm\n\nlet _seed = 6\n\n/** Deterministic random */\nexport function seededRandom(max = 0, min = 1, seed?: number) {\n _seed = ((seed ?? _seed) * 9301 + 49297) % 233280\n const rnd = _seed / 233280\n return min + rnd * (max - min)\n}\n\nconst base32Chars = '0123456789abcdefghjkmnpqrtuvwxyz'\n\nexport function numberToBase32(num: number, padding = 0): string {\n if (num === 0)\n return '0'\n let str = ''\n while (num > 0) {\n const rem = num % 32\n str = base32Chars[rem] + str\n num = Math.floor(num / 32)\n }\n while (str.length < padding)\n str = '0' + str\n return str\n}\n\nexport function base32ToNumber(str: string): number {\n let num = 0\n for (let i = 0; i < str.length; i++) {\n const index = base32Chars.indexOf(str[i].toLowerCase())\n if (index === -1)\n throw new Error(`Invalid base32 character: ${str[i]}`)\n num = num * 32 + index\n }\n return num\n}"]}