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
package/AGENTS.md CHANGED
@@ -1,25 +1,232 @@
1
1
  # AGENTS.md
2
2
 
3
- ## Dev environment tips
3
+ ## Project Overview
4
4
 
5
- - Use `pnpm install` to install dependencies.
6
- - Run `pnpm build` to build the library (runs `tsup` with ESM/CJS, minification, and type generation).
7
- - Check `package.json` for available scripts.
8
- - Read JSDoc comments in source files (`src/**/*.ts`) for inline API documentation and usage examples.
9
- - Run and examine test specs (`src/**/*.spec.ts`) to understand functionality, expected behavior, and integration patterns.
10
- - Check `README.md` for project overview, architecture, and usage patterns.
11
- - See `docs/` folder for generated API documentation (run `pnpm build:docs` to update).
5
+ Zeed is a zero-dependency TypeScript utility library designed for universal JavaScript (browsers, Node.js, Deno, and Bun). It provides core utilities for logging, messaging, schema validation, event handling, async operations, and more.
12
6
 
13
- ## Testing instructions
7
+ **Key characteristics:**
8
+ - Zero runtime dependencies (all integrations are vendored or optional)
9
+ - Strict TypeScript with full type inference
10
+ - Tree-shakable ESM with CommonJS fallback
11
+ - Platform-specific code split between `src/browser/`, `src/node/`, and `src/common/`
14
12
 
15
- - Run `pnpm test --run` to run all tests with Vitest.
16
- - Run `pnpm coverage` to check test coverage (aim for 100%).
17
- - Run `pnpm lint` to check linting with ESLint.
18
- - Run `pnpm lint:fix` to auto-fix linting issues.
19
- - Fix any test or type errors until the whole suite is green.
20
- - Add or update tests for the code you change, even if nobody asked.
13
+ ## Commands
21
14
 
22
- ## PR instructions
15
+ ### Building and Development
16
+ ```bash
17
+ # Build the library (ESM + CJS with minification and types)
18
+ pnpm build
23
19
 
24
- - Title format: [zeed] <Title>
25
- - Always run `pnpm lint:fix` and `pnpm test --run` before committing.
20
+ # Type checking without compilation
21
+ pnpm check
22
+
23
+ # Watch mode for development
24
+ pnpm watch
25
+ ```
26
+
27
+ ### Testing
28
+ ```bash
29
+ # Run all tests (Node.js + common)
30
+ pnpm test
31
+
32
+ # Run tests with coverage report
33
+ pnpm coverage
34
+
35
+ # Run specific test file
36
+ pnpm test <filename>.spec.ts
37
+
38
+ # Run browser tests in different browsers
39
+ pnpm test:browser # Chromium with preview
40
+ pnpm test:chromium # Chromium via playwright
41
+ pnpm test:firefox # Firefox via playwright
42
+ pnpm test:webkit # WebKit via playwright
43
+ ```
44
+
45
+ ### Linting
46
+ ```bash
47
+ # Check for linting issues
48
+ pnpm lint
49
+
50
+ # Auto-fix linting issues
51
+ pnpm lint:fix
52
+ ```
53
+
54
+ ### Documentation
55
+ ```bash
56
+ # Generate API documentation (published to https://zeed.holtwick.de/)
57
+ pnpm build:docs
58
+ ```
59
+
60
+ ## Architecture
61
+
62
+ ### Module Structure
63
+
64
+ The codebase is organized into three main areas:
65
+
66
+ 1. **`src/common/`** - Platform-agnostic utilities
67
+ - Core functionality that works everywhere (browser, Node.js, Deno, Bun)
68
+ - Includes: schema validation, messaging, data utilities, logging foundation, etc.
69
+
70
+ 2. **`src/browser/`** - Browser-specific utilities
71
+ - DOM interactions, LocalStorage, browser-specific logging handlers
72
+ - Example: `log-browser-factory.ts` provides colorful console output for browsers
73
+
74
+ 3. **`src/node/`** - Node.js/Deno/Bun-specific utilities
75
+ - File system operations, process env handling, Node-specific features
76
+ - Example: `env.ts` for environment variable management
77
+
78
+ ### Entry Points
79
+
80
+ The library uses conditional exports for platform-specific builds:
81
+
82
+ - **`src/index.all.ts`** - Full universal export (browser + node + common)
83
+ - **`src/index.browser.ts`** - Browser-only build (re-exports browser + common)
84
+ - **`src/index.node.ts`** - Node-only build (re-exports node + common)
85
+ - **`src/index.jsr.ts`** - JSR registry specific export
86
+
87
+ The `package.json` exports field automatically selects the right build:
88
+ ```json
89
+ {
90
+ "exports": {
91
+ ".": {
92
+ "types": "./dist/index.all.d.ts",
93
+ "node": "./dist/index.node.js",
94
+ "default": "./dist/index.browser.js"
95
+ }
96
+ }
97
+ }
98
+ ```
99
+
100
+ ### Key Subsystems
101
+
102
+ #### Messaging (`src/common/msg/`)
103
+
104
+ A layered messaging architecture for cross-context communication. See `src/common/msg/README.md` for full details.
105
+
106
+ - **Emitter** - Type-safe, async event emitter for in-app communication
107
+ - **Channel** - Uniform `postMessage` abstraction for data transport (WebSocket, WebRTC, WebWorker, etc.)
108
+ - **PubSub** - Event-like messages over a Channel with type safety
109
+ - **Messages** - RPC-like interface with Promise-based responses, timeouts, and retries
110
+ - **Encoder** - Transform data for transport (JSON, encryption, etc.)
111
+
112
+ Example:
113
+ ```typescript
114
+ interface MyMessages {
115
+ echo: (data: any) => Promise<any>
116
+ }
117
+
118
+ const hub = useMessageHub({ channel }).send<MyMessages>()
119
+ await hub.echo({ hello: 'world' })
120
+ ```
121
+
122
+ #### Schema Validation (`src/common/schema/`)
123
+
124
+ Type-safe runtime validation with [Standard Schema](https://github.com/standard-schema/standard-schema) compatibility. Works with tRPC, TanStack Form/Router, Hono, and 40+ other libraries.
125
+
126
+ - Import via `z` namespace: `import { z } from 'zeed'`
127
+ - All schemas support `.parse()`, `.optional()`, `.default()`, type inference
128
+ - Standard Schema interface available via `schema['~standard']`
129
+ - Supports serialization/deserialization for network transport
130
+
131
+ Example:
132
+ ```typescript
133
+ const userSchema = z.object({
134
+ name: z.string(),
135
+ email: z.string(),
136
+ role: z.stringLiterals(['admin', 'user']),
137
+ })
138
+
139
+ type User = z.infer<typeof userSchema>
140
+ const user = userSchema.parse(data)
141
+ ```
142
+
143
+ #### Logging (`src/common/log/`, `src/browser/log/`, `src/node/log/`)
144
+
145
+ Universal logging system with platform-specific handlers:
146
+
147
+ - **Configuration**: `ZEED=*` or `DEBUG=*` to enable logs (ZEED supersedes DEBUG)
148
+ - **Level filtering**: `ZEED_LEVEL=info` to hide debug logs
149
+ - **Log to file**: `ZEED_LOG=/path/to/file.log`
150
+ - **Handlers**: `LoggerConsoleHandler`, `LoggerBrowserHandler`, `LoggerNodeHandler`, `LoggerFileHandler`
151
+
152
+ Usage:
153
+ ```typescript
154
+ import { Logger } from 'zeed'
155
+
156
+ const log = Logger('my-module')
157
+ log('message')
158
+ log.info('info')
159
+ log.warn('warning')
160
+ log.error('error')
161
+ ```
162
+
163
+ #### Data Utilities (`src/common/data/`)
164
+
165
+ Extensive collection of data manipulation utilities:
166
+ - **Array operations**: `arrayUnique`, `arrayShuffle`, `arrayGroupBy`
167
+ - **String utilities**: `camelCase`, `snakeCase`, `slugify`
168
+ - **Binary encoding**: `useBase(62)` for Base62 encoding/decoding
169
+ - **Object operations**: `deepEqual`, `deepMerge`, `objectFilter`, `objectPluck`
170
+ - **CRDT sorting**: `sortedItems` for conflict-free replicated data
171
+
172
+ ## Development Conventions
173
+
174
+ ### Code Style
175
+
176
+ - **Indentation**: Always use 2 spaces (not tabs)
177
+ - **TypeScript**: Strict mode enabled, use explicit types where inference isn't clear
178
+ - **Imports**: Use relative imports within the same major module, exported symbols for cross-module
179
+
180
+ ### Testing
181
+
182
+ - All test files must end with `.spec.ts`
183
+ - Tests live side-by-side with the code they test (e.g., `array.ts` → `array.spec.ts`)
184
+ - Use Vitest with globals enabled (`describe`, `it`, `expect` available globally)
185
+ - Aim for 100% test coverage for new utilities
186
+ - Browser tests require explicit environment: `pnpm test:browser`
187
+
188
+ ### File Organization
189
+
190
+ - Platform-specific code goes in `src/browser/` or `src/node/`
191
+ - Shared code goes in `src/common/`
192
+ - Each module exports through an `index.ts` barrel file
193
+ - Ignore `_archive/`, `dist/`, `docs/`, and `demos/` folders
194
+
195
+ ### Type System Patterns
196
+
197
+ **Use the `Type` class for runtime validation:**
198
+ ```typescript
199
+ // Define schema
200
+ const schema = z.object({ name: z.string() })
201
+
202
+ // Infer TypeScript type
203
+ type Schema = z.infer<typeof schema>
204
+
205
+ // Parse/validate at runtime
206
+ const data = schema.parse(input)
207
+ ```
208
+
209
+ **Event emitters should use typed interfaces:**
210
+ ```typescript
211
+ interface MyEvents {
212
+ inc: (count: number) => number
213
+ }
214
+
215
+ const e = new Emitter<MyEvents>()
216
+ e.on('inc', async count => count + 1)
217
+ ```
218
+
219
+ ## Build System
220
+
221
+ - **Bundler**: tsup (esbuild-based)
222
+ - **Output**: ESM + CJS in `dist/` with TypeScript declarations
223
+ - **Target**: ES2022
224
+ - **Features**: Tree-shaking, minification, source maps, code splitting
225
+
226
+ The build creates multiple entry points but maintains a single type definition file (`dist/index.all.d.ts`) for simplicity.
227
+
228
+ ## Package Management
229
+
230
+ - Uses `pnpm` (v10.18.0+)
231
+ - Node.js >= 20 required
232
+ - The `nr` alias in scripts refers to `ni run` from `@antfu/ni` package
package/README.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## ✨ Features
21
21
 
22
- <table>
22
+ <table width="100%">
23
23
  <tr>
24
24
  <td width="50%">
25
25
 
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/_experiments/bitcask.cjs","../../src/_experiments/bitcask.ts"],"names":["ENTRY_HEADER_SIZE","Bitcask","__name","dirname","opts","f","fname","fileId","filePath","fd","offset","header","keySize","valueSize","tombstone","timestamp","key","entrySize","fileIds","nextId"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/_experiments/bitcask.cjs","sourcesContent":[null,"// Bitcask-inspired key-value store (minimal, single-process, single-writer)\n// Copyright 2024\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { FileHandle, open as openFile } from 'fs/promises'\n\nconst ENTRY_HEADER_SIZE = 17 // 4 (key) + 4 (value) + 1 (tombstone) + 8 (timestamp)\n\ninterface KeyDirEntry {\n fileId: number\n offset: number\n size: number\n timestamp: bigint\n tombstone: boolean\n}\n\nexport class Bitcask {\n private dirname: string\n private readWrite: boolean\n private syncOnPut: boolean\n private keydir: Map<string, KeyDirEntry> = new Map();\n private activeFile: fs.WriteStream | null = null;\n private activeFileId: number = 0;\n private activeOffset: number = 0;\n private openFiles: Map<number, FileHandle> = new Map();\n\n constructor(dirname: string, opts: { readWrite?: boolean; syncOnPut?: boolean } = {}) {\n this.dirname = dirname\n this.readWrite = opts.readWrite !== false\n this.syncOnPut = opts.syncOnPut === true\n if (!fs.existsSync(dirname)) fs.mkdirSync(dirname, { recursive: true })\n this.loadFiles()\n if (this.readWrite) this.rollover()\n }\n\n private listDataFiles(): string[] {\n return fs.readdirSync(this.dirname).filter(f => f.endsWith('.data')).sort()\n }\n\n private loadFiles() {\n for (const fname of this.listDataFiles()) {\n const fileId = parseInt(fname.split('.')[0], 10)\n const filePath = path.join(this.dirname, fname)\n const fd = fs.openSync(filePath, 'r')\n let offset = 0\n while (true) {\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n const bytesRead = fs.readSync(fd, header, 0, ENTRY_HEADER_SIZE, offset)\n if (bytesRead < ENTRY_HEADER_SIZE) break\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const tombstone = header.readUInt8(8) === 1\n const timestamp = header.readBigUInt64BE(9)\n const key = Buffer.alloc(keySize)\n fs.readSync(fd, key, 0, keySize, offset + ENTRY_HEADER_SIZE)\n // skip value\n const entrySize = ENTRY_HEADER_SIZE + keySize + valueSize\n this.keydir.set(key.toString('binary'), {\n fileId,\n offset,\n size: entrySize,\n timestamp,\n tombstone,\n })\n offset += entrySize\n }\n fs.closeSync(fd)\n }\n }\n\n private rollover() {\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n this.activeFile = fs.createWriteStream(filePath, { flags: 'a' })\n this.activeFileId = nextId\n this.activeOffset = fs.existsSync(filePath) ? fs.statSync(filePath).size : 0\n }\n\n async put(key: string | Buffer, value: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const valueBuf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n const timestamp = BigInt(Date.now())\n const tombstone = 0\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(valueBuf.length, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, valueBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: false,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n async get(key: string | Buffer): Promise<Buffer | null> {\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const meta = this.keydir.get(keyBuf.toString('binary'))\n if (!meta || meta.tombstone) return null\n let fh = this.openFiles.get(meta.fileId)\n if (!fh) {\n const fname = path.join(this.dirname, `${meta.fileId.toString().padStart(8, '0')}.data`)\n fh = await openFile(fname, 'r')\n this.openFiles.set(meta.fileId, fh)\n }\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n await fh.read(header, 0, ENTRY_HEADER_SIZE, meta.offset)\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const keyRead = Buffer.alloc(keySize)\n await fh.read(keyRead, 0, keySize, meta.offset + ENTRY_HEADER_SIZE)\n const value = Buffer.alloc(valueSize)\n await fh.read(value, 0, valueSize, meta.offset + ENTRY_HEADER_SIZE + keySize)\n return value\n }\n\n async delete(key: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const timestamp = BigInt(Date.now())\n const tombstone = 1\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(0, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: true,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n listKeys(): string[] {\n return Array.from(this.keydir.entries()).filter(([_, v]) => !v.tombstone).map(([k, _]) => k)\n }\n\n async fold<T>(fn: (k: string, v: Buffer, acc: T) => T, acc0: T): Promise<T> {\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) {\n const v = await this.get(k)\n acc0 = fn(k, v!, acc0)\n }\n }\n return acc0\n }\n\n async merge() {\n // Compact all but active file\n const live: Map<string, KeyDirEntry> = new Map()\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) live.set(k, meta)\n }\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n const f = fs.createWriteStream(filePath, { flags: 'a' })\n for (const [k, meta] of live.entries()) {\n const v = await this.get(k)\n const keyBuf = Buffer.from(k, 'binary')\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(v!.length, 4)\n header.writeUInt8(0, 8)\n header.writeBigUInt64BE(meta.timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, v!])\n await new Promise<void>((resolve, reject) => {\n f.write(entry, err => (err ? reject(err) : resolve()))\n })\n }\n f.close()\n for (const fid of fileIds) {\n if (fid !== this.activeFileId && fid !== nextId) {\n try {\n fs.unlinkSync(path.join(this.dirname, `${fid.toString().padStart(8, '0')}.data`))\n } catch { }\n }\n }\n this.loadFiles()\n }\n\n sync() {\n if (this.activeFile) fs.fsyncSync((this.activeFile as any).fd)\n }\n\n async close() {\n if (this.activeFile) this.activeFile.end()\n for (const fh of this.openFiles.values()) await fh.close()\n this.openFiles.clear()\n }\n}\n\n// API functions\nexport function open(dirname: string, opts?: { readWrite?: boolean; syncOnPut?: boolean }) {\n return new Bitcask(dirname, opts)\n}\nexport async function get(handle: Bitcask, key: string | Buffer) {\n const v = await handle.get(key)\n return v === null ? 'not found' : v\n}\nexport async function put(handle: Bitcask, key: string | Buffer, value: string | Buffer) {\n await handle.put(key, value)\n return 'ok'\n}\nexport async function del(handle: Bitcask, key: string | Buffer) {\n await handle.delete(key)\n return 'ok'\n}\nexport function listKeys(handle: Bitcask) {\n return handle.listKeys()\n}\nexport async function fold<T>(handle: Bitcask, fn: (k: string, v: Buffer, acc: T) => T, acc0: T) {\n return await handle.fold(fn, acc0)\n}\nexport async function merge(dirname: string) {\n const h = new Bitcask(dirname, { readWrite: true })\n await h.merge()\n h.close()\n return 'ok'\n}\nexport function sync(handle: Bitcask) {\n handle.sync()\n return 'ok'\n}\nexport async function close(handle: Bitcask) {\n await handle.close()\n return 'ok'\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/_experiments/bitcask.cjs","../../src/_experiments/bitcask.ts"],"names":["ENTRY_HEADER_SIZE","Bitcask","__name","dirname","opts","f","fname","fileId","filePath","fd","offset","header","keySize","valueSize","tombstone","timestamp","key","entrySize","fileIds","nextId"],"mappings":"AAAA,gaAAyC,8DCErB,oEACE,uCACuB,IAEvCA,CAAAA,CAAoB,EAAA,CAUbC,CAAAA,6BAAN,KAAc,CAhBrB,MAgBqB,CAAAC,iCAAAA,IAAA,CAAA,SAAA,CAAA,CACX,eAGA,MAAA,CAAmC,IAAI,IAAA,gBACvC,UAAA,CAAoC,KAAA,gBACpC,YAAA,CAAuB,EAAA,gBACvB,YAAA,CAAuB,EAAA,gBACvB,SAAA,CAAqC,IAAI,IAAA,WAEjD,CAAYC,CAAAA,CAAiBC,CAAAA,CAAqD,CAAC,CAAA,CAAG,qLACpF,IAAA,CAAK,OAAA,CAAUD,CAAAA,CACf,IAAA,CAAK,SAAA,CAAYC,CAAAA,CAAK,SAAA,GAAc,CAAA,CAAA,CACpC,IAAA,CAAK,SAAA,CAAYA,CAAAA,CAAK,SAAA,GAAc,CAAA,CAAA,CAC5B,CAAA,CAAA,UAAA,CAAWD,CAAO,CAAA,EAAM,CAAA,CAAA,SAAA,CAAUA,CAAAA,CAAS,CAAE,SAAA,CAAW,CAAA,CAAK,CAAC,CAAA,CACtE,IAAA,CAAK,SAAA,CAAU,CAAA,CACX,IAAA,CAAK,SAAA,EAAW,IAAA,CAAK,QAAA,CAAS,CACpC,CAEQ,aAAA,CAAA,CAA0B,CAChC,OAAU,CAAA,CAAA,WAAA,CAAY,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,CAAOE,CAAAA,EAAKA,CAAAA,CAAE,QAAA,CAAS,OAAO,CAAC,CAAA,CAAE,IAAA,CAAK,CAC5E,CAEQ,SAAA,CAAA,CAAY,CAClB,GAAA,CAAA,IAAWC,EAAAA,GAAS,IAAA,CAAK,aAAA,CAAc,CAAA,CAAG,CACxC,IAAMC,CAAAA,CAAS,QAAA,CAASD,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAG,EAAE,CAAA,CACzCE,CAAAA,CAAgB,CAAA,CAAA,IAAA,CAAK,IAAA,CAAK,OAAA,CAASF,CAAK,CAAA,CACxCG,CAAAA,CAAQ,CAAA,CAAA,QAAA,CAASD,CAAAA,CAAU,GAAG,CAAA,CAChCE,CAAAA,CAAS,CAAA,CACb,GAAA,CAAA,CAAA,CAAA,CAAa,CACX,IAAMC,CAAAA,CAAS,MAAA,CAAO,KAAA,CAAMX,CAAiB,CAAA,CAE7C,EAAA,CADqB,CAAA,CAAA,QAAA,CAASS,CAAAA,CAAIE,CAAAA,CAAQ,CAAA,CAAGX,CAAAA,CAAmBU,CAAM,CAAA,CACtDV,CAAAA,CAAmB,KAAA,CACnC,IAAMY,CAAAA,CAAUD,CAAAA,CAAO,YAAA,CAAa,CAAC,CAAA,CAC/BE,CAAAA,CAAYF,CAAAA,CAAO,YAAA,CAAa,CAAC,CAAA,CACjCG,CAAAA,CAAYH,CAAAA,CAAO,SAAA,CAAU,CAAC,CAAA,GAAM,CAAA,CACpCI,CAAAA,CAAYJ,CAAAA,CAAO,eAAA,CAAgB,CAAC,CAAA,CACpCK,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAMJ,CAAO,CAAA,CAC7B,CAAA,CAAA,QAAA,CAASH,CAAAA,CAAIO,CAAAA,CAAK,CAAA,CAAGJ,CAAAA,CAASF,CAAAA,CAASV,CAAiB,CAAA,CAE3D,IAAMiB,CAAAA,CAAYjB,CAAAA,CAAoBY,CAAAA,CAAUC,CAAAA,CAChD,IAAA,CAAK,MAAA,CAAO,GAAA,CAAIG,CAAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,CAAG,CACtC,MAAA,CAAAT,CAAAA,CACA,MAAA,CAAAG,CAAAA,CACA,IAAA,CAAMO,CAAAA,CACN,SAAA,CAAAF,CAAAA,CACA,SAAA,CAAAD,CACF,CAAC,CAAA,CACDJ,CAAAA,EAAUO,CACZ,CACG,CAAA,CAAA,SAAA,CAAUR,CAAE,CACjB,CACF,CAEQ,QAAA,CAAA,CAAW,CACjB,IAAMS,CAAAA,CAAU,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,GAAA,CAAIb,CAAAA,EAAK,QAAA,CAASA,CAAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAG,EAAE,CAAC,CAAA,CACrEc,CAAAA,CAASD,CAAAA,CAAQ,MAAA,CAAS,IAAA,CAAK,GAAA,CAAI,GAAGA,CAAO,CAAA,CAAI,CAAA,CAAI,CAAA,CACrDZ,CAAAA,CAAQ,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/_experiments/bitcask.cjs","sourcesContent":[null,"// Bitcask-inspired key-value store (minimal, single-process, single-writer)\n// Copyright 2024\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { FileHandle, open as openFile } from 'fs/promises'\n\nconst ENTRY_HEADER_SIZE = 17 // 4 (key) + 4 (value) + 1 (tombstone) + 8 (timestamp)\n\ninterface KeyDirEntry {\n fileId: number\n offset: number\n size: number\n timestamp: bigint\n tombstone: boolean\n}\n\nexport class Bitcask {\n private dirname: string\n private readWrite: boolean\n private syncOnPut: boolean\n private keydir: Map<string, KeyDirEntry> = new Map();\n private activeFile: fs.WriteStream | null = null;\n private activeFileId: number = 0;\n private activeOffset: number = 0;\n private openFiles: Map<number, FileHandle> = new Map();\n\n constructor(dirname: string, opts: { readWrite?: boolean; syncOnPut?: boolean } = {}) {\n this.dirname = dirname\n this.readWrite = opts.readWrite !== false\n this.syncOnPut = opts.syncOnPut === true\n if (!fs.existsSync(dirname)) fs.mkdirSync(dirname, { recursive: true })\n this.loadFiles()\n if (this.readWrite) this.rollover()\n }\n\n private listDataFiles(): string[] {\n return fs.readdirSync(this.dirname).filter(f => f.endsWith('.data')).sort()\n }\n\n private loadFiles() {\n for (const fname of this.listDataFiles()) {\n const fileId = parseInt(fname.split('.')[0], 10)\n const filePath = path.join(this.dirname, fname)\n const fd = fs.openSync(filePath, 'r')\n let offset = 0\n while (true) {\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n const bytesRead = fs.readSync(fd, header, 0, ENTRY_HEADER_SIZE, offset)\n if (bytesRead < ENTRY_HEADER_SIZE) break\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const tombstone = header.readUInt8(8) === 1\n const timestamp = header.readBigUInt64BE(9)\n const key = Buffer.alloc(keySize)\n fs.readSync(fd, key, 0, keySize, offset + ENTRY_HEADER_SIZE)\n // skip value\n const entrySize = ENTRY_HEADER_SIZE + keySize + valueSize\n this.keydir.set(key.toString('binary'), {\n fileId,\n offset,\n size: entrySize,\n timestamp,\n tombstone,\n })\n offset += entrySize\n }\n fs.closeSync(fd)\n }\n }\n\n private rollover() {\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n this.activeFile = fs.createWriteStream(filePath, { flags: 'a' })\n this.activeFileId = nextId\n this.activeOffset = fs.existsSync(filePath) ? fs.statSync(filePath).size : 0\n }\n\n async put(key: string | Buffer, value: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const valueBuf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n const timestamp = BigInt(Date.now())\n const tombstone = 0\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(valueBuf.length, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, valueBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: false,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n async get(key: string | Buffer): Promise<Buffer | null> {\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const meta = this.keydir.get(keyBuf.toString('binary'))\n if (!meta || meta.tombstone) return null\n let fh = this.openFiles.get(meta.fileId)\n if (!fh) {\n const fname = path.join(this.dirname, `${meta.fileId.toString().padStart(8, '0')}.data`)\n fh = await openFile(fname, 'r')\n this.openFiles.set(meta.fileId, fh)\n }\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n await fh.read(header, 0, ENTRY_HEADER_SIZE, meta.offset)\n const keySize = header.readUInt32BE(0)\n const valueSize = header.readUInt32BE(4)\n const keyRead = Buffer.alloc(keySize)\n await fh.read(keyRead, 0, keySize, meta.offset + ENTRY_HEADER_SIZE)\n const value = Buffer.alloc(valueSize)\n await fh.read(value, 0, valueSize, meta.offset + ENTRY_HEADER_SIZE + keySize)\n return value\n }\n\n async delete(key: string | Buffer) {\n if (!this.readWrite) throw new Error('Read-only mode')\n const keyBuf = Buffer.isBuffer(key) ? key : Buffer.from(key)\n const timestamp = BigInt(Date.now())\n const tombstone = 1\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(0, 4)\n header.writeUInt8(tombstone, 8)\n header.writeBigUInt64BE(timestamp, 9)\n const entry = Buffer.concat([header, keyBuf])\n const offset = this.activeOffset\n await new Promise<void>((resolve, reject) => {\n this.activeFile!.write(entry, err => (err ? reject(err) : resolve()))\n })\n if (this.syncOnPut && this.activeFile) {\n fs.fsyncSync((this.activeFile as any).fd)\n }\n this.keydir.set(keyBuf.toString('binary'), {\n fileId: this.activeFileId,\n offset,\n size: entry.length,\n timestamp,\n tombstone: true,\n })\n this.activeOffset += entry.length\n if (this.activeOffset > 32 * 1024 * 1024) {\n this.activeFile!.close()\n this.rollover()\n }\n }\n\n listKeys(): string[] {\n return Array.from(this.keydir.entries()).filter(([_, v]) => !v.tombstone).map(([k, _]) => k)\n }\n\n async fold<T>(fn: (k: string, v: Buffer, acc: T) => T, acc0: T): Promise<T> {\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) {\n const v = await this.get(k)\n acc0 = fn(k, v!, acc0)\n }\n }\n return acc0\n }\n\n async merge() {\n // Compact all but active file\n const live: Map<string, KeyDirEntry> = new Map()\n for (const [k, meta] of this.keydir.entries()) {\n if (!meta.tombstone) live.set(k, meta)\n }\n const fileIds = this.listDataFiles().map(f => parseInt(f.split('.')[0], 10))\n const nextId = fileIds.length ? Math.max(...fileIds) + 1 : 1\n const fname = `${nextId.toString().padStart(8, '0')}.data`\n const filePath = path.join(this.dirname, fname)\n const f = fs.createWriteStream(filePath, { flags: 'a' })\n for (const [k, meta] of live.entries()) {\n const v = await this.get(k)\n const keyBuf = Buffer.from(k, 'binary')\n const header = Buffer.alloc(ENTRY_HEADER_SIZE)\n header.writeUInt32BE(keyBuf.length, 0)\n header.writeUInt32BE(v!.length, 4)\n header.writeUInt8(0, 8)\n header.writeBigUInt64BE(meta.timestamp, 9)\n const entry = Buffer.concat([header, keyBuf, v!])\n await new Promise<void>((resolve, reject) => {\n f.write(entry, err => (err ? reject(err) : resolve()))\n })\n }\n f.close()\n for (const fid of fileIds) {\n if (fid !== this.activeFileId && fid !== nextId) {\n try {\n fs.unlinkSync(path.join(this.dirname, `${fid.toString().padStart(8, '0')}.data`))\n } catch { }\n }\n }\n this.loadFiles()\n }\n\n sync() {\n if (this.activeFile) fs.fsyncSync((this.activeFile as any).fd)\n }\n\n async close() {\n if (this.activeFile) this.activeFile.end()\n for (const fh of this.openFiles.values()) await fh.close()\n this.openFiles.clear()\n }\n}\n\n// API functions\nexport function open(dirname: string, opts?: { readWrite?: boolean; syncOnPut?: boolean }) {\n return new Bitcask(dirname, opts)\n}\nexport async function get(handle: Bitcask, key: string | Buffer) {\n const v = await handle.get(key)\n return v === null ? 'not found' : v\n}\nexport async function put(handle: Bitcask, key: string | Buffer, value: string | Buffer) {\n await handle.put(key, value)\n return 'ok'\n}\nexport async function del(handle: Bitcask, key: string | Buffer) {\n await handle.delete(key)\n return 'ok'\n}\nexport function listKeys(handle: Bitcask) {\n return handle.listKeys()\n}\nexport async function fold<T>(handle: Bitcask, fn: (k: string, v: Buffer, acc: T) => T, acc0: T) {\n return await handle.fold(fn, acc0)\n}\nexport async function merge(dirname: string) {\n const h = new Bitcask(dirname, { readWrite: true })\n await h.merge()\n h.close()\n return 'ok'\n}\nexport function sync(handle: Bitcask) {\n handle.sync()\n return 'ok'\n}\nexport async function close(handle: Bitcask) {\n await handle.close()\n return 'ok'\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/base64.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iCAA8B,oDAAmC","file":"/home/runner/work/zeed/zeed/dist/browser/base64.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/base64.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iCAA8B,oDAAmC","file":"/Users/dirk/work/github-zeed/dist/browser/base64.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/gravatar.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iCAA8B,iDAAgC","file":"/home/runner/work/zeed/zeed/dist/browser/gravatar.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/gravatar.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iCAA8B,iDAAgC","file":"/Users/dirk/work/github-zeed/dist/browser/gravatar.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/index.cjs"],"names":[],"mappings":"AAAA,0GAA6B,iCAA8B,yDAA0C,iCAA8B,yDAA0C,yDAA0C,yDAA0C,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,yDAAqC,yDAA0C,iCAA8B,yTAAsK","file":"/home/runner/work/zeed/zeed/dist/browser/index.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/index.cjs"],"names":[],"mappings":"AAAA,0GAA6B,iCAA8B,yDAA0C,iCAA8B,yDAA0C,yDAA0C,yDAA0C,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,yDAAqC,yDAA0C,iCAA8B,yTAAsK","file":"/Users/dirk/work/github-zeed/dist/browser/index.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/localstorage.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iCAA8B,iCAA8B,2CAA0B","file":"/home/runner/work/zeed/zeed/dist/browser/localstorage.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/localstorage.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iCAA8B,iCAA8B,2CAA0B","file":"/Users/dirk/work/github-zeed/dist/browser/localstorage.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/index.cjs"],"names":[],"mappings":"AAAA,6GAAgC,4DAA6C,oCAAiC,4DAA6C,4DAAwC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,sKAAiG","file":"/home/runner/work/zeed/zeed/dist/browser/log/index.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/index.cjs"],"names":[],"mappings":"AAAA,6GAAgC,4DAA6C,oCAAiC,4DAA6C,4DAAwC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,sKAAiG","file":"/Users/dirk/work/github-zeed/dist/browser/log/index.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/log-browser-factory.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,6DAA4C","file":"/home/runner/work/zeed/zeed/dist/browser/log/log-browser-factory.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/log-browser-factory.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,6DAA4C","file":"/Users/dirk/work/github-zeed/dist/browser/log/log-browser-factory.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/log-browser.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,mDAAkC","file":"/home/runner/work/zeed/zeed/dist/browser/log/log-browser.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/log-browser.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,mDAAkC","file":"/Users/dirk/work/github-zeed/dist/browser/log/log-browser.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/log-colors.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oDAAmC","file":"/home/runner/work/zeed/zeed/dist/browser/log/log-colors.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/log-colors.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oDAAmC","file":"/Users/dirk/work/github-zeed/dist/browser/log/log-colors.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/log-context-browser.cjs"],"names":[],"mappings":"AAAA,qIAAyC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,qFAA0C","file":"/home/runner/work/zeed/zeed/dist/browser/log/log-context-browser.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/log-context-browser.cjs"],"names":[],"mappings":"AAAA,qIAAyC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,qFAA0C","file":"/Users/dirk/work/github-zeed/dist/browser/log/log-context-browser.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-2TNLYCZH.cjs","../src/common/data/string-hash-pool.ts"],"names":["useStringHashPool","hashToString","stringToHash","hash","s","v","stringHashFNV1a"],"mappings":"AAAA,iIAAwC,wDAAyC,SCEjEA,CAAAA,CAAAA,CAAoB,CAClC,IAAMC,CAAAA,CAAoC,IAAI,GAAA,CACxCC,CAAAA,CAAoC,IAAI,GAAA,CAE9C,SAASC,CAAAA,CAAKC,CAAAA,CAAW,CACvB,IAAIC,CAAAA,CAAwBH,CAAAA,CAAa,GAAA,CAAIE,CAAC,CAAA,CAC9C,EAAA,CAAIC,CAAAA,EAAK,IAAA,CAAM,CAEb,EAAA,CADAA,CAAAA,CAAIC,iCAAAA,CAAiB,CAAA,CACjBL,CAAAA,CAAa,GAAA,CAAII,CAAC,CAAA,CACpB,MAAM,IAAI,KAAA,CAAM,CAAA,UAAA,EAAaD,CAAC,CAAA,yBAAA,EAA4BH,CAAAA,CAAa,GAAA,CAAII,CAAC,CAAC,CAAA,CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-2TNLYCZH.cjs","sourcesContent":[null,"import { stringHashFNV1a } from './string-hash-fnv'\n\nexport function useStringHashPool() {\n const hashToString: Map<number, string> = new Map()\n const stringToHash: Map<string, number> = new Map()\n\n function hash(s: string) {\n let v: number | undefined = stringToHash.get(s)\n if (v == null) {\n v = stringHashFNV1a(s)\n if (hashToString.has(v))\n throw new Error(`Hash for '${s}' is already in use for '${hashToString.get(v)}`)\n hashToString.set(v, s)\n stringToHash.set(s, v)\n }\n return v\n }\n\n function stringForHash(v: number) {\n return hashToString.get(v)\n }\n\n return {\n hash,\n stringForHash,\n }\n}\n\nexport type UseStringHashPool = ReturnType<typeof useStringHashPool>\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-2TNLYCZH.cjs","../src/common/data/string-hash-pool.ts"],"names":["useStringHashPool","hashToString","stringToHash","hash","s","v","stringHashFNV1a"],"mappings":"AAAA,iIAAwC,wDAAyC,SCEjEA,CAAAA,CAAAA,CAAoB,CAClC,IAAMC,CAAAA,CAAoC,IAAI,GAAA,CACxCC,CAAAA,CAAoC,IAAI,GAAA,CAE9C,SAASC,CAAAA,CAAKC,CAAAA,CAAW,CACvB,IAAIC,CAAAA,CAAwBH,CAAAA,CAAa,GAAA,CAAIE,CAAC,CAAA,CAC9C,EAAA,CAAIC,CAAAA,EAAK,IAAA,CAAM,CAEb,EAAA,CADAA,CAAAA,CAAIC,iCAAAA,CAAiB,CAAA,CACjBL,CAAAA,CAAa,GAAA,CAAII,CAAC,CAAA,CACpB,MAAM,IAAI,KAAA,CAAM,CAAA,UAAA,EAAaD,CAAC,CAAA,yBAAA,EAA4BH,CAAAA,CAAa,GAAA,CAAII,CAAC,CAAC,CAAA,CAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-2TNLYCZH.cjs","sourcesContent":[null,"import { stringHashFNV1a } from './string-hash-fnv'\n\nexport function useStringHashPool() {\n const hashToString: Map<number, string> = new Map()\n const stringToHash: Map<string, number> = new Map()\n\n function hash(s: string) {\n let v: number | undefined = stringToHash.get(s)\n if (v == null) {\n v = stringHashFNV1a(s)\n if (hashToString.has(v))\n throw new Error(`Hash for '${s}' is already in use for '${hashToString.get(v)}`)\n hashToString.set(v, s)\n stringToHash.set(s, v)\n }\n return v\n }\n\n function stringForHash(v: number) {\n return hashToString.get(v)\n }\n\n return {\n hash,\n stringForHash,\n }\n}\n\nexport type UseStringHashPool = ReturnType<typeof useStringHashPool>\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-2UQU3IBA.cjs","../src/common/data/string-hash-fnv.ts"],"names":["stringHashFNV1a","str","l","c","t0","v0","t1","v1","__name"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-2UQU3IBA.cjs","sourcesContent":[null,"// Why FNV-1a (32-bit) https://softwareengineering.stackexchange.com/a/250750/366573\n// A simple implementation https://gist.github.com/vaiorabbit/5657561\n// This implementation https://github.com/tjwebb/fnv-plus/blob/master/index.js#L341\n// Alternative implementation https://github.com/sindresorhus/fnv1a\n\nexport function stringHashFNV1a(str: string): number {\n const l = str.length\n let c: number\n let i: number\n let t0 = 0\n let v0 = 0x9DC5\n let t1 = 0\n let v1 = 0x811C\n\n for (i = 0; i < l; i++) {\n c = str.charCodeAt(i)\n if (c < 128) {\n v0 ^= c\n }\n else if (c < 2048) {\n v0 ^= (c >> 6) | 192\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n else if (((c & 64512) === 55296) && (i + 1) < l && ((str.charCodeAt(i + 1) & 64512) === 56320)) {\n c = 65536 + ((c & 1023) << 10) + (str.charCodeAt(++i) & 1023)\n v0 ^= (c >> 18) | 240\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 12) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 6) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n else {\n v0 ^= (c >> 12) | 224\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 6) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n }\n\n return ((v1 << 16) >>> 0) + v0\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-2UQU3IBA.cjs","../src/common/data/string-hash-fnv.ts"],"names":["stringHashFNV1a","str","l","c","t0","v0","t1","v1","__name"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-2UQU3IBA.cjs","sourcesContent":[null,"// Why FNV-1a (32-bit) https://softwareengineering.stackexchange.com/a/250750/366573\n// A simple implementation https://gist.github.com/vaiorabbit/5657561\n// This implementation https://github.com/tjwebb/fnv-plus/blob/master/index.js#L341\n// Alternative implementation https://github.com/sindresorhus/fnv1a\n\nexport function stringHashFNV1a(str: string): number {\n const l = str.length\n let c: number\n let i: number\n let t0 = 0\n let v0 = 0x9DC5\n let t1 = 0\n let v1 = 0x811C\n\n for (i = 0; i < l; i++) {\n c = str.charCodeAt(i)\n if (c < 128) {\n v0 ^= c\n }\n else if (c < 2048) {\n v0 ^= (c >> 6) | 192\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n else if (((c & 64512) === 55296) && (i + 1) < l && ((str.charCodeAt(i + 1) & 64512) === 56320)) {\n c = 65536 + ((c & 1023) << 10) + (str.charCodeAt(++i) & 1023)\n v0 ^= (c >> 18) | 240\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 12) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 6) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n else {\n v0 ^= (c >> 12) | 224\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= ((c >> 6) & 63) | 128\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n v0 ^= (c & 63) | 128\n }\n t0 = v0 * 403\n t1 = v1 * 403\n t1 += v0 << 8\n v1 = (t1 + (t0 >>> 16)) & 65535\n v0 = t0 & 65535\n }\n\n return ((v1 << 16) >>> 0) + v0\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-32B4KRI6.cjs","../src/common/data/xrx.ts"],"names":["RX_WHITESPACE","RX_REAL_GROUPS","RX_LOOK_BEHIND","regExpString","rx","__name","regExpEscape","str","XRX","pattern","flags","_flags","_rx","r","index","name","parts"],"mappings":"AAAA,iPAAwC,ICElCA,CAAAA,CAAgB,sBAAA,CAChBC,CAAAA,CAAiB,yCAAA,CAEjBC,CAAAA,CAAiB,+CAAA,CAEhB,SAASC,CAAAA,CAAaC,CAAAA,CAA6B,CACxD,OAAO,OAAOA,CAAAA,EAAO,QAAA,CAAWA,CAAAA,CAAMA,CAAAA,CAAG,MAAA,EAAU,EACrD,CAFgBC,iCAAAA,CAAAF,CAAA,cAAA,CAAA,CAIT,SAASG,CAAAA,CAAaC,CAAAA,CAAqB,CAChD,OAAOA,CAAAA,CAAI,OAAA,CAAQ,0BAAA,CAA4B,MAAM,CACvD,CAFgBF,iCAAAA,CAAAC,CAAA,cAAA,CAAA,CAIT,IAAME,CAAAA,WAAN,KAAU,CAfjB,MAeiB,CAAAH,iCAAAA,IAAA,CAAA,KAAA,CAAA,CACf,eACA,WAAA,CAAsC,CAAC,EAAA,gBACvC,KAAA,CAAkB,CAAC,EAAA,WAGnB,CAAYI,CAAAA,CAA0BC,CAAAA,CAAgB,yEACpD,IAAIC,CAAAA,kBAAiBD,CAAAA,SAAS,IAAA,CAC1BE,CAAAA,CAuBJ,EAAA,CArBIH,EAAAA,WAAmB,MAAA,CAAA,CACjBC,CAAAA,EAAS,IAAA,EAAA,CACXC,CAAAA,CAASF,CAAAA,CAAQ,KAAA,CAAA,CAEnBG,CAAAA,CAAMH,CAAAA,CAAQ,MAAA,CAAA,CAGdG,CAAAA,CAAMH,CAAAA,CAISE,CAAAA,EAAUA,CAAAA,CAAO,QAAA,CAAS,GAAG,CAAA,EAAA,CAE5CA,CAAAA,CAASA,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAK,EAAE,CAAA,CAC/BC,CAAAA,CAAMA,CAAAA,CAAI,OAAA,CAAQZ,CAAAA,CAAgBa,CAAAA,EAEzBA,CAAAA,CAAE,CAAC,CAAA,GAAM,IAAA,CAAOA,CAAAA,CAAI,EAC5B,CAAA,CAAA,CAIC,CAAA,CAAEJ,EAAAA,WAAmB,MAAA,CAAA,CAAS,CAChC,IAAIK,CAAAA,CAAQ,CAAA,CACZF,CAAAA,CAAMA,CAAAA,CAAI,OAAA,CAAQX,CAAAA,CAAgB,CAACM,CAAAA,CAAKQ,CAAAA,CAAAA,EAAAA,CAEtCD,CAAAA,EAAS,CAAA,CACLC,CAAAA,CAAAA,CAEAA,CAAAA,GAAS,OAAA,EACNA,CAAAA,GAAS,QAAA,EACT,CAAC,IAAA,CAAK,WAAA,CAAYA,CAAI,CAAA,EAAA,CAEzB,IAAA,CAAK,WAAA,CAAYA,CAAI,CAAA,CAAID,CAAAA,CAAAA,CAKpB,GAAA,CAAA,CAEFP,CAAAA,CACR,CAAA,CACD,IAAA,CAAK,KAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,WAAW,CAC3C,CAIAK,CAAAA,CAAMT,CAAAA,CAAaS,CAAG,CAAA,CACtBV,CAAAA,CAAe,SAAA,CAAY,CAAA,CAC3B,IAAMc,CAAAA,CAAQd,CAAAA,CAAe,IAAA,CAAKU,CAAG,CAAA,CACjCI,CAAAA,EAAAA,CACF,IAAA,CAAK,UAAA,CAAa,CAChB,EAAA,CAAI,IAAI,MAAA,CAAO,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-32B4KRI6.cjs","sourcesContent":[null,"/* eslint-disable no-cond-assign */\n\nconst RX_WHITESPACE = /\\\\\\s|\\s+|#[^\\n]*\\n?/g\nconst RX_REAL_GROUPS = /\\(\\?P?<(\\w{2,})>|\\((?!\\?([:!=]|<=|<!))/g\n// eslint-disable-next-line regexp/no-unused-capturing-group\nconst RX_LOOK_BEHIND = /^((?:\\(\\?[\\w$]+\\))?)\\(\\?<([=!])([\\s\\S]*?)\\)/gm\n\nexport function regExpString(rx: string | RegExp): string {\n return typeof rx === 'string' ? rx : (rx.source || '')\n}\n\nexport function regExpEscape(str: string): string {\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n\nexport class XRX {\n lookBehind:any\n namedGroups: Record<string, number> = {}\n names: string[] = []\n rx: RegExp\n\n constructor(pattern: string | RegExp, flags?: string) {\n let _flags: string = flags ?? ''\n let _rx: string\n\n if (pattern instanceof RegExp) {\n if (flags == null)\n _flags = pattern.flags\n\n _rx = pattern.source\n }\n else {\n _rx = pattern\n }\n\n // eXtended / Ignore Whitespace\n const extended = _flags && _flags.includes('x')\n if (extended) {\n _flags = _flags.replace('x', '')\n _rx = _rx.replace(RX_WHITESPACE, (r) => {\n // log('rp', r)\n return r[0] === '\\\\' ? r : ''\n })\n }\n\n // Named Groups\n if (!(pattern instanceof RegExp)) {\n let index = 0\n _rx = _rx.replace(RX_REAL_GROUPS, (str, name) => {\n // log('>>>', name)\n index += 1\n if (name) {\n if (\n name !== 'index'\n && name !== 'length'\n && !this.namedGroups[name]\n ) {\n this.namedGroups[name] = index\n }\n // else\n // log.error(`Unallowed or duplicate group name: ${name}`)\n\n return '('\n }\n return str\n })\n this.names = Object.keys(this.namedGroups)\n }\n\n // http://www.rexegg.com/regex-best-trick.html\n\n _rx = regExpString(_rx)\n RX_LOOK_BEHIND.lastIndex = 0\n const parts = RX_LOOK_BEHIND.exec(_rx)\n if (parts) {\n this.lookBehind = {\n rx: new RegExp(`${parts[3]}$(?!\\\\s)`),\n expect: parts ? parts[2] === '=' : !parts,\n }\n _rx = _rx.substr(parts[0].length)\n }\n\n this.rx = new RegExp(_rx, _flags)\n }\n\n // flagsString() {\n // let hash = this.rx.toString() + '/'\n // if (this.rx.global) {\n // hash += 'g'\n // }\n // if (this.rx.multiline) {\n // hash += 'm'\n // }\n // if (this.rx.ignoreCase) {\n // hash += 'i'\n // }\n // if (this.rx.unicode) {\n // hash += 'u'\n // }\n // if (this.rx.sticky) {\n // hash += 'y'\n // }\n // }\n\n get lastIndex(): number {\n return this.rx.lastIndex\n }\n\n set lastIndex(index: number) {\n this.rx.lastIndex = index\n }\n\n _handleMatch(m: any) {\n if (this.lookBehind) {\n const leftContext = m.input.slice(0, m.index)\n if (this.lookBehind.expect !== this.lookBehind.rx.test(leftContext))\n return null\n }\n for (const name of this.names)\n m[name] = m[this.namedGroups[name]]\n\n return m\n }\n\n exec(str: string) {\n let m\n while ((m = this.rx.exec(str))) {\n if (this.rx.lastIndex === m.index)\n this.rx.lastIndex++\n m = this._handleMatch(m)\n if (m != null)\n return m\n }\n }\n\n execAll(str: string) {\n const matches = []\n let m\n this.rx.lastIndex = 0\n while ((m = this.exec(str)))\n matches.push(m)\n\n this.rx.lastIndex = 0\n // log('execAll:', matches)\n return matches\n }\n\n replace(str: string, replacement: string | ((m: string) => string)) {\n const fn = typeof replacement === 'function' ? replacement : () => replacement\n return str.replace(this.rx, (m) => {\n // m = this._handleMatch(m)\n return fn(m)\n })\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-32B4KRI6.cjs","../src/common/data/xrx.ts"],"names":["RX_WHITESPACE","RX_REAL_GROUPS","RX_LOOK_BEHIND","regExpString","rx","__name","regExpEscape","str","XRX","pattern","flags","_flags","_rx","r","index","name","parts"],"mappings":"AAAA,iPAAwC,ICElCA,CAAAA,CAAgB,sBAAA,CAChBC,CAAAA,CAAiB,yCAAA,CAEjBC,CAAAA,CAAiB,+CAAA,CAEhB,SAASC,CAAAA,CAAaC,CAAAA,CAA6B,CACxD,OAAO,OAAOA,CAAAA,EAAO,QAAA,CAAWA,CAAAA,CAAMA,CAAAA,CAAG,MAAA,EAAU,EACrD,CAFgBC,iCAAAA,CAAAF,CAAA,cAAA,CAAA,CAIT,SAASG,CAAAA,CAAaC,CAAAA,CAAqB,CAChD,OAAOA,CAAAA,CAAI,OAAA,CAAQ,0BAAA,CAA4B,MAAM,CACvD,CAFgBF,iCAAAA,CAAAC,CAAA,cAAA,CAAA,CAIT,IAAME,CAAAA,WAAN,KAAU,CAfjB,MAeiB,CAAAH,iCAAAA,IAAA,CAAA,KAAA,CAAA,CACf,eACA,WAAA,CAAsC,CAAC,EAAA,gBACvC,KAAA,CAAkB,CAAC,EAAA,WAGnB,CAAYI,CAAAA,CAA0BC,CAAAA,CAAgB,yEACpD,IAAIC,CAAAA,kBAAiBD,CAAAA,SAAS,IAAA,CAC1BE,CAAAA,CAuBJ,EAAA,CArBIH,EAAAA,WAAmB,MAAA,CAAA,CACjBC,CAAAA,EAAS,IAAA,EAAA,CACXC,CAAAA,CAASF,CAAAA,CAAQ,KAAA,CAAA,CAEnBG,CAAAA,CAAMH,CAAAA,CAAQ,MAAA,CAAA,CAGdG,CAAAA,CAAMH,CAAAA,CAISE,CAAAA,EAAUA,CAAAA,CAAO,QAAA,CAAS,GAAG,CAAA,EAAA,CAE5CA,CAAAA,CAASA,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAK,EAAE,CAAA,CAC/BC,CAAAA,CAAMA,CAAAA,CAAI,OAAA,CAAQZ,CAAAA,CAAgBa,CAAAA,EAEzBA,CAAAA,CAAE,CAAC,CAAA,GAAM,IAAA,CAAOA,CAAAA,CAAI,EAC5B,CAAA,CAAA,CAIC,CAAA,CAAEJ,EAAAA,WAAmB,MAAA,CAAA,CAAS,CAChC,IAAIK,CAAAA,CAAQ,CAAA,CACZF,CAAAA,CAAMA,CAAAA,CAAI,OAAA,CAAQX,CAAAA,CAAgB,CAACM,CAAAA,CAAKQ,CAAAA,CAAAA,EAAAA,CAEtCD,CAAAA,EAAS,CAAA,CACLC,CAAAA,CAAAA,CAEAA,CAAAA,GAAS,OAAA,EACNA,CAAAA,GAAS,QAAA,EACT,CAAC,IAAA,CAAK,WAAA,CAAYA,CAAI,CAAA,EAAA,CAEzB,IAAA,CAAK,WAAA,CAAYA,CAAI,CAAA,CAAID,CAAAA,CAAAA,CAKpB,GAAA,CAAA,CAEFP,CAAAA,CACR,CAAA,CACD,IAAA,CAAK,KAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,WAAW,CAC3C,CAIAK,CAAAA,CAAMT,CAAAA,CAAaS,CAAG,CAAA,CACtBV,CAAAA,CAAe,SAAA,CAAY,CAAA,CAC3B,IAAMc,CAAAA,CAAQd,CAAAA,CAAe,IAAA,CAAKU,CAAG,CAAA,CACjCI,CAAAA,EAAAA,CACF,IAAA,CAAK,UAAA,CAAa,CAChB,EAAA,CAAI,IAAI,MAAA,CAAO,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-32B4KRI6.cjs","sourcesContent":[null,"/* eslint-disable no-cond-assign */\n\nconst RX_WHITESPACE = /\\\\\\s|\\s+|#[^\\n]*\\n?/g\nconst RX_REAL_GROUPS = /\\(\\?P?<(\\w{2,})>|\\((?!\\?([:!=]|<=|<!))/g\n// eslint-disable-next-line regexp/no-unused-capturing-group\nconst RX_LOOK_BEHIND = /^((?:\\(\\?[\\w$]+\\))?)\\(\\?<([=!])([\\s\\S]*?)\\)/gm\n\nexport function regExpString(rx: string | RegExp): string {\n return typeof rx === 'string' ? rx : (rx.source || '')\n}\n\nexport function regExpEscape(str: string): string {\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n}\n\nexport class XRX {\n lookBehind:any\n namedGroups: Record<string, number> = {}\n names: string[] = []\n rx: RegExp\n\n constructor(pattern: string | RegExp, flags?: string) {\n let _flags: string = flags ?? ''\n let _rx: string\n\n if (pattern instanceof RegExp) {\n if (flags == null)\n _flags = pattern.flags\n\n _rx = pattern.source\n }\n else {\n _rx = pattern\n }\n\n // eXtended / Ignore Whitespace\n const extended = _flags && _flags.includes('x')\n if (extended) {\n _flags = _flags.replace('x', '')\n _rx = _rx.replace(RX_WHITESPACE, (r) => {\n // log('rp', r)\n return r[0] === '\\\\' ? r : ''\n })\n }\n\n // Named Groups\n if (!(pattern instanceof RegExp)) {\n let index = 0\n _rx = _rx.replace(RX_REAL_GROUPS, (str, name) => {\n // log('>>>', name)\n index += 1\n if (name) {\n if (\n name !== 'index'\n && name !== 'length'\n && !this.namedGroups[name]\n ) {\n this.namedGroups[name] = index\n }\n // else\n // log.error(`Unallowed or duplicate group name: ${name}`)\n\n return '('\n }\n return str\n })\n this.names = Object.keys(this.namedGroups)\n }\n\n // http://www.rexegg.com/regex-best-trick.html\n\n _rx = regExpString(_rx)\n RX_LOOK_BEHIND.lastIndex = 0\n const parts = RX_LOOK_BEHIND.exec(_rx)\n if (parts) {\n this.lookBehind = {\n rx: new RegExp(`${parts[3]}$(?!\\\\s)`),\n expect: parts ? parts[2] === '=' : !parts,\n }\n _rx = _rx.substr(parts[0].length)\n }\n\n this.rx = new RegExp(_rx, _flags)\n }\n\n // flagsString() {\n // let hash = this.rx.toString() + '/'\n // if (this.rx.global) {\n // hash += 'g'\n // }\n // if (this.rx.multiline) {\n // hash += 'm'\n // }\n // if (this.rx.ignoreCase) {\n // hash += 'i'\n // }\n // if (this.rx.unicode) {\n // hash += 'u'\n // }\n // if (this.rx.sticky) {\n // hash += 'y'\n // }\n // }\n\n get lastIndex(): number {\n return this.rx.lastIndex\n }\n\n set lastIndex(index: number) {\n this.rx.lastIndex = index\n }\n\n _handleMatch(m: any) {\n if (this.lookBehind) {\n const leftContext = m.input.slice(0, m.index)\n if (this.lookBehind.expect !== this.lookBehind.rx.test(leftContext))\n return null\n }\n for (const name of this.names)\n m[name] = m[this.namedGroups[name]]\n\n return m\n }\n\n exec(str: string) {\n let m\n while ((m = this.rx.exec(str))) {\n if (this.rx.lastIndex === m.index)\n this.rx.lastIndex++\n m = this._handleMatch(m)\n if (m != null)\n return m\n }\n }\n\n execAll(str: string) {\n const matches = []\n let m\n this.rx.lastIndex = 0\n while ((m = this.exec(str)))\n matches.push(m)\n\n this.rx.lastIndex = 0\n // log('execAll:', matches)\n return matches\n }\n\n replace(str: string, replacement: string | ((m: string) => string)) {\n const fn = typeof replacement === 'function' ? replacement : () => replacement\n return str.replace(this.rx, (m) => {\n // m = this._handleMatch(m)\n return fn(m)\n })\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunk3ZBLU4D6cjs = require('./chunk-3ZBLU4D6.cjs');var _chunkL5OF6DSHcjs = require('./chunk-L5OF6DSH.cjs');var _chunkSHOLGUSOcjs = require('./chunk-SHOLGUSO.cjs');var _chunkIA2OMOCBcjs = require('./chunk-IA2OMOCB.cjs');var _chunkGFMSFYKEcjs = require('./chunk-GFMSFYKE.cjs');var _chunk3P4XRJ23cjs = require('./chunk-3P4XRJ23.cjs');var _chunkVX3R7DUJcjs = require('./chunk-VX3R7DUJ.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var _process = require('process'); var _process2 = _interopRequireDefault(_process);function T(e,r){return _chunkVX3R7DUJcjs.a.call(void 0, t=>{let i=[_chunk3ZBLU4D6cjs.d.call(void 0, {padding:32,nameBrackets:!1})],m=_nullishCoalesce(_process2.default.env.ZEED_LOG, () => (_process2.default.env.LOG)),c=_chunk3P4XRJ23cjs.f.call(void 0, _process2.default.env.ZEED_TIME,!0),E=_chunk3P4XRJ23cjs.f.call(void 0, _process2.default.env.ZEED_PRETTY,!1),v=_chunkSHOLGUSOcjs.a.call(void 0, _process2.default.env.ZEED_ROTATE);m&&i.unshift(_chunkL5OF6DSHcjs.a.call(void 0, _chunkIA2OMOCBcjs.e.call(void 0, m),{time:c,pretty:E,rotation:v})),t.setHandlers(i)})(e,r)}_chunkP7XCQ7WVcjs.a.call(void 0, T,"Logger");function F(e,r,t){return _chunkGFMSFYKEcjs.a.call(void 0, T,e,r,t)}_chunkP7XCQ7WVcjs.a.call(void 0, F,"LoggerFromConfig");exports.a = T; exports.b = F;
2
- //# sourceMappingURL=chunk-DAD3M2IM.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkXAU2ICXAcjs = require('./chunk-XAU2ICXA.cjs');var _chunkSHOLGUSOcjs = require('./chunk-SHOLGUSO.cjs');var _chunk3ZBLU4D6cjs = require('./chunk-3ZBLU4D6.cjs');var _chunkIA2OMOCBcjs = require('./chunk-IA2OMOCB.cjs');var _chunkGFMSFYKEcjs = require('./chunk-GFMSFYKE.cjs');var _chunk3P4XRJ23cjs = require('./chunk-3P4XRJ23.cjs');var _chunkVX3R7DUJcjs = require('./chunk-VX3R7DUJ.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var _process = require('process'); var _process2 = _interopRequireDefault(_process);function T(e,r){return _chunkVX3R7DUJcjs.a.call(void 0, t=>{let i=[_chunk3ZBLU4D6cjs.d.call(void 0, {padding:32,nameBrackets:!1})],m=_nullishCoalesce(_process2.default.env.ZEED_LOG, () => (_process2.default.env.LOG)),c=_chunk3P4XRJ23cjs.f.call(void 0, _process2.default.env.ZEED_TIME,!0),E=_chunk3P4XRJ23cjs.f.call(void 0, _process2.default.env.ZEED_PRETTY,!1),v=_chunkSHOLGUSOcjs.a.call(void 0, _process2.default.env.ZEED_ROTATE);m&&i.unshift(_chunkXAU2ICXAcjs.a.call(void 0, _chunkIA2OMOCBcjs.e.call(void 0, m),{time:c,pretty:E,rotation:v})),t.setHandlers(i)})(e,r)}_chunkP7XCQ7WVcjs.a.call(void 0, T,"Logger");function F(e,r,t){return _chunkGFMSFYKEcjs.a.call(void 0, T,e,r,t)}_chunkP7XCQ7WVcjs.a.call(void 0, F,"LoggerFromConfig");exports.a = T; exports.b = F;
2
+ //# sourceMappingURL=chunk-344WNUEK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-344WNUEK.cjs","../src/node/log/log-context-node.ts"],"names":["Logger","name","level","getGlobalLogger","context","handlers","LoggerNodeHandler","logFilePath","process","time","valueToBoolean","pretty","rotation","parseLogRotationConfigEnv","LoggerFileHandler","toPath","__name","LoggerFromConfig","config","_LoggerFromConfig"],"mappings":"AAAA,qUAAwC,wDAAyC,wDAAyC,wDAAyC,wDAAoC,wDAAyC,wDAAyC,wDAAyC,oFCE9S,SASJA,CAAAA,CAAOC,CAAAA,CAAeC,CAAAA,CAA4C,CAChF,OAAOC,iCAAAA,CAAiBC,EAAY,CAClC,IAAMC,CAAAA,CAAW,CACfC,iCAAAA,CACE,OAAA,CAAS,EAAA,CACT,YAAA,CAAc,CAAA,CAEhB,CAAC,CACH,CAAA,CAEMC,CAAAA,kBAAcC,iBAAAA,CAAQ,GAAA,CAAI,QAAA,SAAYA,iBAAAA,CAAQ,GAAA,CAAI,KAAA,CAClDC,CAAAA,CAAOC,iCAAAA,iBAAeF,CAAQ,GAAA,CAAI,SAAA,CAAW,CAAA,CAAI,CAAA,CACjDG,CAAAA,CAASD,iCAAAA,iBAAeF,CAAQ,GAAA,CAAI,WAAA,CAAa,CAAA,CAAK,CAAA,CACtDI,CAAAA,CAAWC,iCAAAA,iBAA0BL,CAAQ,GAAA,CAAI,WAAW,CAAA,CAC9DD,CAAAA,EACFF,CAAAA,CAAS,OAAA,CAAQS,iCAAAA,iCAAkBC,CAAkB,CAAA,CAAG,CAAE,IAAA,CAAAN,CAAAA,CAAM,MAAA,CAAAE,CAAAA,CAAQ,QAAA,CAAAC,CAAS,CAAC,CAAC,CAAA,CAErFR,CAAAA,CAAQ,WAAA,CAAYC,CAAQ,CAC9B,CAAC,CAAA,CAAEJ,CAAAA,CAAMC,CAAK,CAChB,CAnBgBc,iCAAAA,CAAAhB,CAAA,QAAA,CAAA,CAsBT,SAASiB,CAAAA,CAAiBC,CAAAA,CAAmBjB,CAAAA,CAAcC,CAAAA,CAA4C,CAC5G,OAAOiB,iCAAAA,CAAkBnB,CAAQkB,CAAAA,CAAQjB,CAAAA,CAAMC,CAAK,CACtD,CAFgBc,iCAAAA,CAAAC,CAAA,kBAAA,CAAA,CAAA,6BAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-344WNUEK.cjs","sourcesContent":[null,"import type { LoggerInterface, LogLevelAliasType } from '../../common/log/log-base'\nimport type { LogConfig } from '../../common/log/log-config'\nimport process from 'node:process'\nimport { valueToBoolean } from '../../common/data/convert'\nimport { getGlobalLogger } from '../../common/log/log'\nimport { _LoggerFromConfig } from '../../common/log/log-config'\nimport { toPath } from '../env'\nimport { LoggerFileHandler } from './log-file'\nimport { parseLogRotationConfigEnv } from './log-file-rotation'\nimport { LoggerNodeHandler } from './log-node'\n\nexport function Logger(name?: string, level?: LogLevelAliasType): LoggerInterface {\n return getGlobalLogger((context) => {\n const handlers = [\n LoggerNodeHandler({\n padding: 32,\n nameBrackets: false,\n // levelHelper: false,\n }),\n ]\n\n const logFilePath = process.env.ZEED_LOG ?? process.env.LOG\n const time = valueToBoolean(process.env.ZEED_TIME, true)\n const pretty = valueToBoolean(process.env.ZEED_PRETTY, false)\n const rotation = parseLogRotationConfigEnv(process.env.ZEED_ROTATE)\n if (logFilePath)\n handlers.unshift(LoggerFileHandler(toPath(logFilePath), { time, pretty, rotation }))\n\n context.setHandlers(handlers)\n })(name, level)\n}\n\n/** See LogConfig */\nexport function LoggerFromConfig(config: LogConfig, name: string, level?: LogLevelAliasType): LoggerInterface {\n return _LoggerFromConfig(Logger, config, name, level)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-36N7ZI6A.cjs","../src/node/filestorage.ts"],"names":["FileStorage","__name","opt","resolve","process"],"mappings":"AAAA,iVAAwC,wDAAyC,wDAAyC,wDAAoC,gCCCvI,wBACiE,4BACvD,oFACb,IAcPA,CAAAA,WAAN,KAAwD,CAlB/D,MAkB+D,CAAAC,iCAAAA,IAAA,CAAA,aAAA,CAAA,gBACrD,KAAA,CAAkC,CAAC,EAAA,gBAEnC,QAAA,CAAsB,KAAA,EAAA,gBACtB,MAAA,CAAS,CAAA,EAAA,WAOjB,CAAYC,CAAAA,CAA0B,CAAC,CAAA,CAAG,6GACxC,IAAA,CAAK,OAAA,CAAUC,2BAAAA,iBAAQC,CAAQ,GAAA,CAAI,CAAA,kBAAGF,CAAAA,CAAI,IAAA,SAAQ,gBAAc,CAAA,CAChE,IAAA,CAAK,MAAA,CAAS,CAAC,CAACA,CAAAA,CAAI,MAAA,CACpB,IAAA,CAAK,SAAA,kBAAYA,CAAAA,CAAI,SAAA,SAAa,SAAA,CAE9BA,CAAAA,CAAI,SAAA,EAAa,CAAC,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,GAAG,CAAA,EAAA,CACjD,IAAA,CAAK,SAAA,CAAY,CAAA,CAAA,EAAI,IAAA,CAAK,SAAS,CAAA,CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-36N7ZI6A.cjs","sourcesContent":[null,"import type { Json, ObjectStorage } from '../common/types'\nimport { Buffer } from 'node:buffer'\nimport { mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport process from 'node:process'\nimport { jsonStringifySafe } from '../common/data/json'\nimport { toValidFilename } from '../common/data/path'\nimport { cloneObject } from '../common/data/utils'\n\nexport interface FileStorageOptions {\n pretty?: boolean\n path?: string\n extension?: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n keyToFilename?: (key: string) => string\n}\n\nexport class FileStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T | null> = {}\n private dirname: string\n private fileKeys?: string[] = undefined\n private pretty = false\n private extension: string\n private extensionLength: number\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n private keyToFilename: (key: string) => string\n\n constructor(opt: FileStorageOptions = {}) {\n this.dirname = resolve(process.cwd(), opt.path ?? '.fileStorage')\n this.pretty = !!opt.pretty\n this.extension = opt.extension ?? '.json'\n\n if (opt.extension && !this.extension.startsWith('.'))\n this.extension = `.${this.extension}`\n\n this.extensionLength = this.extension.length\n\n this.objectToString = opt.objectToString ?? ((data: any): string => {\n return this.pretty\n ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString = opt.objectFromString ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\n catch (err) {\n // log.warn(`fileStorage parse error '${err}' in`, data)\n }\n })\n\n this.keyToFilename = opt.keyToFilename ?? toValidFilename\n }\n\n setItem(key: string, value: T): void {\n this.store[key] = cloneObject(value)\n try {\n const data = this.objectToString(value)\n const path = this.getPath(key)\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, data, 'utf8')\n }\n catch (err) {\n // log.error('setItem error', err)\n }\n }\n\n getPath(key: string): string {\n return resolve(this.dirname, this.keyToFilename(key) + this.extension)\n }\n\n getBuffer(key: string): any {\n const path = this.getPath(key)\n return Buffer.from(readFileSync(path))\n }\n\n getItem(key: string): T | undefined {\n const value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null)\n return\n\n if (value != null)\n return cloneObject(value) // this.objectFromString(value)\n\n try {\n const path = this.getPath(key)\n const data = readFileSync(path, 'utf8')\n if (data != null) {\n const value = this.objectFromString(data)\n this.store[key] = value\n return value\n }\n }\n catch (err) {\n // log.warn(\"getItem error\", err)\n this.store[key] = null // do not retry next time\n }\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n if (this.fileKeys != null) {\n const index: number = this.fileKeys.indexOf(key)\n if (index !== -1)\n this.fileKeys.splice(index, 1)\n }\n try {\n const path = this.getPath(key)\n unlinkSync(path)\n }\n catch (err) {}\n }\n\n clear(): void {\n this.fileKeys = []\n this.store = {}\n rmSync(this.dirname, { recursive: true, force: true })\n }\n\n allKeys(): string[] {\n if (this.fileKeys == null) {\n try {\n this.fileKeys\n = readdirSync(this.dirname, { withFileTypes: true })\n .filter(\n item =>\n !item.isDirectory() && item.name.endsWith(this.extension),\n )\n .map(item => item.name.slice(0, -this.extensionLength)) || []\n }\n catch (err) {}\n }\n const keys = [...(this.fileKeys || [])]\n for (const key of Object.keys(this.store)) {\n if (!keys.includes(key))\n keys.push(key)\n }\n keys.sort()\n return keys\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-36N7ZI6A.cjs","../src/node/filestorage.ts"],"names":["FileStorage","__name","opt","resolve","process"],"mappings":"AAAA,iVAAwC,wDAAyC,wDAAyC,wDAAoC,gCCCvI,wBACiE,4BACvD,oFACb,IAcPA,CAAAA,WAAN,KAAwD,CAlB/D,MAkB+D,CAAAC,iCAAAA,IAAA,CAAA,aAAA,CAAA,gBACrD,KAAA,CAAkC,CAAC,EAAA,gBAEnC,QAAA,CAAsB,KAAA,EAAA,gBACtB,MAAA,CAAS,CAAA,EAAA,WAOjB,CAAYC,CAAAA,CAA0B,CAAC,CAAA,CAAG,6GACxC,IAAA,CAAK,OAAA,CAAUC,2BAAAA,iBAAQC,CAAQ,GAAA,CAAI,CAAA,kBAAGF,CAAAA,CAAI,IAAA,SAAQ,gBAAc,CAAA,CAChE,IAAA,CAAK,MAAA,CAAS,CAAC,CAACA,CAAAA,CAAI,MAAA,CACpB,IAAA,CAAK,SAAA,kBAAYA,CAAAA,CAAI,SAAA,SAAa,SAAA,CAE9BA,CAAAA,CAAI,SAAA,EAAa,CAAC,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,GAAG,CAAA,EAAA,CACjD,IAAA,CAAK,SAAA,CAAY,CAAA,CAAA,EAAI,IAAA,CAAK,SAAS,CAAA,CAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-36N7ZI6A.cjs","sourcesContent":[null,"import type { Json, ObjectStorage } from '../common/types'\nimport { Buffer } from 'node:buffer'\nimport { mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport process from 'node:process'\nimport { jsonStringifySafe } from '../common/data/json'\nimport { toValidFilename } from '../common/data/path'\nimport { cloneObject } from '../common/data/utils'\n\nexport interface FileStorageOptions {\n pretty?: boolean\n path?: string\n extension?: string\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n keyToFilename?: (key: string) => string\n}\n\nexport class FileStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T | null> = {}\n private dirname: string\n private fileKeys?: string[] = undefined\n private pretty = false\n private extension: string\n private extensionLength: number\n private objectFromString: (data: string) => any\n private objectToString: (data: any) => string\n private keyToFilename: (key: string) => string\n\n constructor(opt: FileStorageOptions = {}) {\n this.dirname = resolve(process.cwd(), opt.path ?? '.fileStorage')\n this.pretty = !!opt.pretty\n this.extension = opt.extension ?? '.json'\n\n if (opt.extension && !this.extension.startsWith('.'))\n this.extension = `.${this.extension}`\n\n this.extensionLength = this.extension.length\n\n this.objectToString = opt.objectToString ?? ((data: any): string => {\n return this.pretty\n ? jsonStringifySafe(data, null, 2)\n : jsonStringifySafe(data)\n })\n\n this.objectFromString = opt.objectFromString ?? ((data: string) => {\n try {\n return JSON.parse(data)\n }\n catch (err) {\n // log.warn(`fileStorage parse error '${err}' in`, data)\n }\n })\n\n this.keyToFilename = opt.keyToFilename ?? toValidFilename\n }\n\n setItem(key: string, value: T): void {\n this.store[key] = cloneObject(value)\n try {\n const data = this.objectToString(value)\n const path = this.getPath(key)\n mkdirSync(dirname(path), { recursive: true })\n writeFileSync(path, data, 'utf8')\n }\n catch (err) {\n // log.error('setItem error', err)\n }\n }\n\n getPath(key: string): string {\n return resolve(this.dirname, this.keyToFilename(key) + this.extension)\n }\n\n getBuffer(key: string): any {\n const path = this.getPath(key)\n return Buffer.from(readFileSync(path))\n }\n\n getItem(key: string): T | undefined {\n const value = this.store[key]\n\n // null is an indicator for not existing!\n if (value === null)\n return\n\n if (value != null)\n return cloneObject(value) // this.objectFromString(value)\n\n try {\n const path = this.getPath(key)\n const data = readFileSync(path, 'utf8')\n if (data != null) {\n const value = this.objectFromString(data)\n this.store[key] = value\n return value\n }\n }\n catch (err) {\n // log.warn(\"getItem error\", err)\n this.store[key] = null // do not retry next time\n }\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n if (this.fileKeys != null) {\n const index: number = this.fileKeys.indexOf(key)\n if (index !== -1)\n this.fileKeys.splice(index, 1)\n }\n try {\n const path = this.getPath(key)\n unlinkSync(path)\n }\n catch (err) {}\n }\n\n clear(): void {\n this.fileKeys = []\n this.store = {}\n rmSync(this.dirname, { recursive: true, force: true })\n }\n\n allKeys(): string[] {\n if (this.fileKeys == null) {\n try {\n this.fileKeys\n = readdirSync(this.dirname, { withFileTypes: true })\n .filter(\n item =>\n !item.isDirectory() && item.name.endsWith(this.extension),\n )\n .map(item => item.name.slice(0, -this.extensionLength)) || []\n }\n catch (err) {}\n }\n const keys = [...(this.fileKeys || [])]\n for (const key of Object.keys(this.store)) {\n if (!keys.includes(key))\n keys.push(key)\n }\n keys.sort()\n return keys\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-3P4XRJ23.cjs","../src/common/data/convert.ts"],"names":["TRUE_VALUES_LIST","FALSE_VALUES_LIST","parseFloat","value","parsed","__name","parseInt","radix","stringToBoolean","defaultValue","stringToInteger","stringToFloat","valueToBoolean","valueToBooleanNotFalse","valueToInteger","valueToFloat","valueToString","toFloat","toInt","toString","toBool","fixBrokenUtf8String","brokenString"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-3P4XRJ23.cjs","sourcesContent":[null,"\n// import { jsonStringify } from './json'\n\nconst TRUE_VALUES_LIST = ['1', 'true', 'yes', 'y', 'on']\nconst FALSE_VALUES_LIST = ['0', 'false', 'no', 'n', 'off']\n\n/** Like Number.parseFloat, but returning `undefined` instead of `NaN` */\nexport function parseFloat(value: any): number | undefined {\n try {\n const parsed = Number.parseFloat(value)\n return Number.isNaN(parsed) ? undefined : parsed\n } catch (e) {\n return undefined\n }\n}\n\n/** Like Number.parseInt, but returning `undefined` instead of `NaN` */\nexport function parseInt(value: any, radix = 10): number | undefined {\n try {\n const parsed = Number.parseInt(value, radix)\n return Number.isNaN(parsed) ? undefined : parsed\n } catch (e) {\n return undefined\n }\n}\n\n\nexport function stringToBoolean(value?: string, defaultValue = false): boolean {\n if (value == null || typeof value !== 'string')\n return defaultValue\n return TRUE_VALUES_LIST.includes(String(value).trim().toLowerCase())\n}\n\nexport function stringToInteger(value?: string, defaultValue = 0): number {\n if (value == null || typeof value !== 'string')\n return defaultValue\n return parseInt(value.trim(), 10) ?? defaultValue\n}\n\nexport function stringToFloat(value?: string, defaultValue = 0.0): number {\n if (value == null || typeof value !== 'string')\n return defaultValue\n return parseFloat(value.trim()) ?? defaultValue\n}\n\n/** `true` is a number != 0, a string stating `true`. Otherwise false. */\nexport function valueToBoolean(value?: any, defaultValue = false): boolean {\n if (value == null)\n return defaultValue\n if (typeof value === 'boolean')\n return value\n if (typeof value === 'number')\n return value !== 0\n return TRUE_VALUES_LIST.includes(String(value).trim().toLowerCase())\n}\n\n/** Explicitly has to have a `false` value to become `false`, otherwise `true` */\nexport function valueToBooleanNotFalse(value?: any, defaultValue = true): boolean {\n if (value == null)\n return defaultValue\n if (typeof value === 'boolean')\n return value\n if (typeof value === 'number')\n return value !== 0\n return !(FALSE_VALUES_LIST.includes(String(value).trim().toLowerCase()))\n}\n\nexport function valueToInteger(value?: any, defaultValue = 0): number {\n if (value == null)\n return defaultValue\n if (typeof value === 'boolean')\n return value ? 1 : 0\n if (typeof value === 'number')\n return Math.floor(value)\n return parseInt(String(value).trim(), 10) ?? defaultValue\n}\n\nexport function valueToFloat(value?: any, defaultValue = 0.0): number {\n if (value == null)\n return defaultValue\n if (typeof value === 'boolean')\n return value ? 1 : 0\n if (typeof value === 'number')\n return Math.floor(value)\n return parseFloat(String(value).trim()) ?? defaultValue\n}\n\nexport function valueToString(value?: any, defaultValue = ''): string {\n if (value == null)\n return defaultValue\n // if (value == \"\") return defaultValue // ???\n return String(value) ?? defaultValue\n}\n\n// todo: toDate, toTimestamp, toData(value, base=64)\n\n// export function mapToObject<T>(map: Map<string, T>): { [key: string]: T } {\n// return Object.fromEntries(map)\n// }\n\n// export function objectToMap<T>(obj: { [key: string]: T }): Map<string, T> {\n// return new Map(Object.entries(obj))\n// }\n\n// Shortcuts\n\nexport const toFloat = valueToFloat\nexport const toInt = valueToInteger\nexport const toString = valueToString\nexport const toBool = valueToBoolean\n\n\n// Awesome trick from https://stackoverflow.com/a/5396742/140927\nexport function fixBrokenUtf8String(brokenString: string): string {\n try {\n return decodeURIComponent(escape(brokenString))\n }\n catch (e) {\n // log.debug(\"fixString failed for\", s)\n }\n return brokenString\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-3P4XRJ23.cjs","../src/common/data/convert.ts"],"names":["TRUE_VALUES_LIST","FALSE_VALUES_LIST","parseFloat","value","parsed","__name","parseInt","radix","stringToBoolean","defaultValue","stringToInteger","stringToFloat","valueToBoolean","valueToBooleanNotFalse","valueToInteger","valueToFloat","valueToString","toFloat","toInt","toString","toBool","fixBrokenUtf8String","brokenString"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-3P4XRJ23.cjs","sourcesContent":[null,"\n// import { jsonStringify } from './json'\n\nconst TRUE_VALUES_LIST = ['1', 'true', 'yes', 'y', 'on']\nconst FALSE_VALUES_LIST = ['0', 'false', 'no', 'n', 'off']\n\n/** Like Number.parseFloat, but returning `undefined` instead of `NaN` */\nexport function parseFloat(value: any): number | undefined {\n try {\n const parsed = Number.parseFloat(value)\n return Number.isNaN(parsed) ? undefined : parsed\n } catch (e) {\n return undefined\n }\n}\n\n/** Like Number.parseInt, but returning `undefined` instead of `NaN` */\nexport function parseInt(value: any, radix = 10): number | undefined {\n try {\n const parsed = Number.parseInt(value, radix)\n return Number.isNaN(parsed) ? undefined : parsed\n } catch (e) {\n return undefined\n }\n}\n\n\nexport function stringToBoolean(value?: string, defaultValue = false): boolean {\n if (value == null || typeof value !== 'string')\n return defaultValue\n return TRUE_VALUES_LIST.includes(String(value).trim().toLowerCase())\n}\n\nexport function stringToInteger(value?: string, defaultValue = 0): number {\n if (value == null || typeof value !== 'string')\n return defaultValue\n return parseInt(value.trim(), 10) ?? defaultValue\n}\n\nexport function stringToFloat(value?: string, defaultValue = 0.0): number {\n if (value == null || typeof value !== 'string')\n return defaultValue\n return parseFloat(value.trim()) ?? defaultValue\n}\n\n/** `true` is a number != 0, a string stating `true`. Otherwise false. */\nexport function valueToBoolean(value?: any, defaultValue = false): boolean {\n if (value == null)\n return defaultValue\n if (typeof value === 'boolean')\n return value\n if (typeof value === 'number')\n return value !== 0\n return TRUE_VALUES_LIST.includes(String(value).trim().toLowerCase())\n}\n\n/** Explicitly has to have a `false` value to become `false`, otherwise `true` */\nexport function valueToBooleanNotFalse(value?: any, defaultValue = true): boolean {\n if (value == null)\n return defaultValue\n if (typeof value === 'boolean')\n return value\n if (typeof value === 'number')\n return value !== 0\n return !(FALSE_VALUES_LIST.includes(String(value).trim().toLowerCase()))\n}\n\nexport function valueToInteger(value?: any, defaultValue = 0): number {\n if (value == null)\n return defaultValue\n if (typeof value === 'boolean')\n return value ? 1 : 0\n if (typeof value === 'number')\n return Math.floor(value)\n return parseInt(String(value).trim(), 10) ?? defaultValue\n}\n\nexport function valueToFloat(value?: any, defaultValue = 0.0): number {\n if (value == null)\n return defaultValue\n if (typeof value === 'boolean')\n return value ? 1 : 0\n if (typeof value === 'number')\n return Math.floor(value)\n return parseFloat(String(value).trim()) ?? defaultValue\n}\n\nexport function valueToString(value?: any, defaultValue = ''): string {\n if (value == null)\n return defaultValue\n // if (value == \"\") return defaultValue // ???\n return String(value) ?? defaultValue\n}\n\n// todo: toDate, toTimestamp, toData(value, base=64)\n\n// export function mapToObject<T>(map: Map<string, T>): { [key: string]: T } {\n// return Object.fromEntries(map)\n// }\n\n// export function objectToMap<T>(obj: { [key: string]: T }): Map<string, T> {\n// return new Map(Object.entries(obj))\n// }\n\n// Shortcuts\n\nexport const toFloat = valueToFloat\nexport const toInt = valueToInteger\nexport const toString = valueToString\nexport const toBool = valueToBoolean\n\n\n// Awesome trick from https://stackoverflow.com/a/5396742/140927\nexport function fixBrokenUtf8String(brokenString: string): string {\n try {\n return decodeURIComponent(escape(brokenString))\n }\n catch (e) {\n // log.debug(\"fixString failed for\", s)\n }\n return brokenString\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-3TNVJY4F.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-3TNVJY4F.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-3TNVJY4F.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-3TNVJY4F.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-3ZBLU4D6.cjs","../src/node/log/log-node.ts"],"names":["shouldUseColor","valueToBoolean","process","tty","__name","defaultUseColor","colors","nodeSelectColorByName","namespace","hash","i","namespaces","startTime","log","args"],"mappings":"AAAA,quBAAsD,wDAAyC,wDAAyC,wDAAgD,wDAAuD,wDAAgD,wDAAyC,oFCCpT,oEACJ,SAQPA,CAAAA,CAAAA,CAA0B,CACjC,GAAI,CACF,OAAOC,iCAAAA,iBAAeC,CAAQ,GAAA,CAAI,UAAA,CAAYC,aAAAA,CAAI,MAAA,CAAOD,iBAAAA,CAAQ,MAAA,CAAO,EAAE,CAAC,CAC7E,CAAA,UACY,CAAC,CACb,MAAO,CAAA,CACT,CANSE,iCAAAA,CAAAJ,CAAA,gBAAA,CAAA,CAQT,IAAIK,CAAAA,CAEEC,CAAAA,CAAS,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAEhC,SAASC,CAAAA,CAAsBC,CAAAA,CAAmB,CAChD,IAAIC,CAAAA,CAAO,CAAA,CACX,GAAA,CAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAU,MAAA,CAAQE,CAAAA,EAAAA,CACpCD,CAAAA,CAAAA,CAAQA,CAAAA,EAAQ,CAAA,CAAA,CAAKA,CAAAA,CAAOD,CAAAA,CAAU,UAAA,CAAWE,CAAC,CAAA,CAClDD,CAAAA,EAAQ,CAAA,CAEV,OAAOH,CAAAA,CAAO,IAAA,CAAK,GAAA,CAAIG,CAAI,CAAA,CAAIH,CAAAA,CAAO,MAAM,CAC9C,CAPSF,iCAAAA,CAAAG,CAAA,uBAAA,CAAA,CAST,IAAMI,CAAAA,CAAkC,CAAC,CAAA,CAErCC,CAAAA,CAEJ,SAASC,CAAAA,CAAAA,GAAOC,CAAAA,CAAa,CAC3BZ,iBAAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAA;AAmFnBU","file":"/home/runner/work/zeed/zeed/dist/chunk-3ZBLU4D6.cjs","sourcesContent":[null,"import type { LogHandler, LogHandlerOptions, LogMessage } from '../../common/log/log-base'\nimport process from 'node:process'\nimport tty from 'node:tty'\nimport { valueToBoolean } from '../../common/data/convert'\nimport { renderMessages } from '../../common/data/message'\nimport { LogLevelError, LogLevelInfo, LogLevelWarn } from '../../common/log/log-base'\nimport { useLevelFilter, useNamespaceFilter } from '../../common/log/log-filter'\nimport { formatMilliseconds, getTimestamp } from '../../common/time'\nimport { getSourceLocation, getSourceLocationByPrecedingPattern, getStack } from './log-util'\n\nfunction shouldUseColor(): boolean {\n try {\n return valueToBoolean(process.env.ZEED_COLOR, tty.isatty(process.stdout.fd))\n }\n catch (err) {}\n return false\n}\n\nlet defaultUseColor: boolean | undefined\n\nconst colors = [6, 2, 3, 4, 5, 1]\n\nfunction nodeSelectColorByName(namespace: string) {\n let hash = 0\n for (let i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i)\n hash |= 0 // Convert to 32bit integer\n }\n return colors[Math.abs(hash) % colors.length]\n}\n\nconst namespaces: Record<string, any> = {}\n\nlet startTime: number | undefined\n\nfunction log(...args: any[]) {\n process.stdout.write(`${renderMessages(args)}\\n`)\n}\n\n// const _browserStyleMap = {\n// [BOLD]: { \"font-weight\": \"bold\" },\n// [UNBOLD]: { \"font-weight\": \"normal\" },\n// [BLUE]: { color: \"blue\" },\n// [GREEN]: { color: \"green\" },\n// [GREY]: { color: \"grey\" },\n// [RED]: { color: \"red\" },\n// [PURPLE]: { color: \"purple\" },\n// [ORANGE]: { color: \"orange\" },\n// [UNCOLOR]: { color: \"black\" },\n// }\n\nconst TTY_STYLE = {\n BOLD: '\\u001B[1m',\n UNBOLD: '\\u001B[2m',\n RED: '\\u001B[31m',\n GREEN: '\\u001B[32m',\n BLUE: '\\u001B[34m',\n PURPLE: '\\u001B[35m',\n GRAY: '\\u001B[37m',\n ORANGE: '\\u001B[38;5;208m',\n UNCOLOR: '\\u001B[0m',\n}\n\nenum COLOR {\n RED = 1,\n GREEN = 2,\n BLUE = 4,\n PURPLE = 5,\n GRAY = 7,\n ORANGE = 8,\n}\n\nconst colorEnd = '\\u001B[0m'\n\nexport function colorString(text: string, colorCode: number) {\n const colorStart = colorCode === COLOR.ORANGE\n ? TTY_STYLE.ORANGE\n : `\\u001B[3${colorCode < 8 ? colorCode : `8;5;${colorCode}`}m`\n return `${colorStart}${text}${colorEnd}`\n}\n\nexport function colorStringList(\n list: Array<any>,\n style: string,\n bold = true,\n) {\n return list.map((value) => {\n if (typeof value !== 'string')\n return value\n let start = style\n let end = colorEnd\n if (bold) {\n start = `${TTY_STYLE.BOLD}${start}`\n end = `${end}${TTY_STYLE.BOLD}`\n }\n return `${start}${value}${end}`\n })\n}\n\nfunction shouldUseStack(): boolean {\n try {\n return valueToBoolean(process.env.ZEED_STACK, false)\n }\n catch (err) {}\n return false\n}\n\nlet defaultUseStack: boolean | undefined\n\nexport const loggerStackTraceDebug = 'loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485'\n\nexport function LoggerNodeHandler(opt: LogHandlerOptions = {}): LogHandler {\n if (defaultUseColor == null)\n defaultUseColor = shouldUseColor()\n\n if (defaultUseStack == null)\n defaultUseStack = shouldUseStack()\n\n if (startTime == null)\n startTime = getTimestamp()\n\n const {\n level = undefined,\n filter = undefined,\n colors = defaultUseColor,\n levelHelper = true,\n nameBrackets = true,\n padding = 0,\n fill = 0,\n stack = defaultUseStack,\n time = true,\n } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n const timeNow = getTimestamp()\n const name = msg.name || ''\n let ninfo = namespaces[name || '']\n if (ninfo == null) {\n ninfo = {\n color: nodeSelectColorByName(name),\n // time: timeNow\n }\n namespaces[name] = ninfo\n }\n const timeDiffString = formatMilliseconds(timeNow - startTime!)\n\n let args: string[]\n\n let displayName = nameBrackets ? `[${name}]` : name\n\n if (padding > 0)\n displayName = displayName.padStart(padding, ' ')\n\n if (fill > 0)\n displayName = displayName.padEnd(fill, ' ')\n\n if (colors) {\n const c = ninfo.color\n args = [`${colorString(displayName, c)} | `] // nameBrackets ? [`%c[${name}]`] : [`%c${name}`]\n if (msg.level === LogLevelWarn)\n args.push(...colorStringList(msg.messages, TTY_STYLE.ORANGE))\n else if (msg.level === LogLevelError)\n args.push(...colorStringList(msg.messages, TTY_STYLE.RED))\n else\n args.push(...msg.messages)\n if (time)\n args.push(colorString(`+${timeDiffString}`, c))\n }\n else {\n args = [displayName, ...msg.messages]\n if (time)\n args.push(`+${timeDiffString}`)\n }\n\n if (msg.messages?.[0] === loggerStackTraceDebug) {\n try {\n // eslint-disable-next-line no-console\n console.log(getStack())\n }\n catch (err) { }\n }\n\n // Probably time consuming\n if (stack) {\n let line = ''\n if (typeof stack === 'boolean') {\n line = getSourceLocationByPrecedingPattern(\n ['at Function.', 'at null.log (', 'at log ('],\n true,\n )\n if (!line)\n line = getSourceLocation(0, true)\n }\n else {\n const depth = typeof stack === 'number' ? stack : 3\n line = getSourceLocation(depth, true)\n }\n if (line)\n args.push(colorString(`(${line})`, COLOR.GRAY))\n }\n\n const sep = '|'\n const charLevel = '.'\n\n switch (msg.level) {\n case LogLevelInfo:\n if (levelHelper)\n args[0] = `I${sep}${charLevel} ${args[0]}`\n log(...args)\n break\n case LogLevelWarn:\n if (levelHelper) {\n args[0] = (colors\n ? colorString(`W${sep}${charLevel}${charLevel} `, COLOR.ORANGE)\n : `W${sep}${charLevel}${charLevel} `) + args[0]\n }\n log(...args)\n break\n case LogLevelError:\n if (levelHelper) {\n args[0] = (colors\n ? colorString(`E${sep}${charLevel}${charLevel}${charLevel} `, COLOR.RED)\n : `E${sep}${charLevel}${charLevel}${charLevel} `) + args[0]\n }\n log(...args)\n break\n default:\n if (levelHelper)\n args[0] = `D${sep} ${args[0]}`\n log(...args)\n break\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-3ZBLU4D6.cjs","../src/node/log/log-node.ts"],"names":["shouldUseColor","valueToBoolean","process","tty","__name","defaultUseColor","colors","nodeSelectColorByName","namespace","hash","i","namespaces","startTime","log","args"],"mappings":"AAAA,quBAAsD,wDAAyC,wDAAyC,wDAAgD,wDAAuD,wDAAgD,wDAAyC,oFCCpT,oEACJ,SAQPA,CAAAA,CAAAA,CAA0B,CACjC,GAAI,CACF,OAAOC,iCAAAA,iBAAeC,CAAQ,GAAA,CAAI,UAAA,CAAYC,aAAAA,CAAI,MAAA,CAAOD,iBAAAA,CAAQ,MAAA,CAAO,EAAE,CAAC,CAC7E,CAAA,UACY,CAAC,CACb,MAAO,CAAA,CACT,CANSE,iCAAAA,CAAAJ,CAAA,gBAAA,CAAA,CAQT,IAAIK,CAAAA,CAEEC,CAAAA,CAAS,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAEhC,SAASC,CAAAA,CAAsBC,CAAAA,CAAmB,CAChD,IAAIC,CAAAA,CAAO,CAAA,CACX,GAAA,CAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAU,MAAA,CAAQE,CAAAA,EAAAA,CACpCD,CAAAA,CAAAA,CAAQA,CAAAA,EAAQ,CAAA,CAAA,CAAKA,CAAAA,CAAOD,CAAAA,CAAU,UAAA,CAAWE,CAAC,CAAA,CAClDD,CAAAA,EAAQ,CAAA,CAEV,OAAOH,CAAAA,CAAO,IAAA,CAAK,GAAA,CAAIG,CAAI,CAAA,CAAIH,CAAAA,CAAO,MAAM,CAC9C,CAPSF,iCAAAA,CAAAG,CAAA,uBAAA,CAAA,CAST,IAAMI,CAAAA,CAAkC,CAAC,CAAA,CAErCC,CAAAA,CAEJ,SAASC,CAAAA,CAAAA,GAAOC,CAAAA,CAAa,CAC3BZ,iBAAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAA;AAmFnBU","file":"/Users/dirk/work/github-zeed/dist/chunk-3ZBLU4D6.cjs","sourcesContent":[null,"import type { LogHandler, LogHandlerOptions, LogMessage } from '../../common/log/log-base'\nimport process from 'node:process'\nimport tty from 'node:tty'\nimport { valueToBoolean } from '../../common/data/convert'\nimport { renderMessages } from '../../common/data/message'\nimport { LogLevelError, LogLevelInfo, LogLevelWarn } from '../../common/log/log-base'\nimport { useLevelFilter, useNamespaceFilter } from '../../common/log/log-filter'\nimport { formatMilliseconds, getTimestamp } from '../../common/time'\nimport { getSourceLocation, getSourceLocationByPrecedingPattern, getStack } from './log-util'\n\nfunction shouldUseColor(): boolean {\n try {\n return valueToBoolean(process.env.ZEED_COLOR, tty.isatty(process.stdout.fd))\n }\n catch (err) {}\n return false\n}\n\nlet defaultUseColor: boolean | undefined\n\nconst colors = [6, 2, 3, 4, 5, 1]\n\nfunction nodeSelectColorByName(namespace: string) {\n let hash = 0\n for (let i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i)\n hash |= 0 // Convert to 32bit integer\n }\n return colors[Math.abs(hash) % colors.length]\n}\n\nconst namespaces: Record<string, any> = {}\n\nlet startTime: number | undefined\n\nfunction log(...args: any[]) {\n process.stdout.write(`${renderMessages(args)}\\n`)\n}\n\n// const _browserStyleMap = {\n// [BOLD]: { \"font-weight\": \"bold\" },\n// [UNBOLD]: { \"font-weight\": \"normal\" },\n// [BLUE]: { color: \"blue\" },\n// [GREEN]: { color: \"green\" },\n// [GREY]: { color: \"grey\" },\n// [RED]: { color: \"red\" },\n// [PURPLE]: { color: \"purple\" },\n// [ORANGE]: { color: \"orange\" },\n// [UNCOLOR]: { color: \"black\" },\n// }\n\nconst TTY_STYLE = {\n BOLD: '\\u001B[1m',\n UNBOLD: '\\u001B[2m',\n RED: '\\u001B[31m',\n GREEN: '\\u001B[32m',\n BLUE: '\\u001B[34m',\n PURPLE: '\\u001B[35m',\n GRAY: '\\u001B[37m',\n ORANGE: '\\u001B[38;5;208m',\n UNCOLOR: '\\u001B[0m',\n}\n\nenum COLOR {\n RED = 1,\n GREEN = 2,\n BLUE = 4,\n PURPLE = 5,\n GRAY = 7,\n ORANGE = 8,\n}\n\nconst colorEnd = '\\u001B[0m'\n\nexport function colorString(text: string, colorCode: number) {\n const colorStart = colorCode === COLOR.ORANGE\n ? TTY_STYLE.ORANGE\n : `\\u001B[3${colorCode < 8 ? colorCode : `8;5;${colorCode}`}m`\n return `${colorStart}${text}${colorEnd}`\n}\n\nexport function colorStringList(\n list: Array<any>,\n style: string,\n bold = true,\n) {\n return list.map((value) => {\n if (typeof value !== 'string')\n return value\n let start = style\n let end = colorEnd\n if (bold) {\n start = `${TTY_STYLE.BOLD}${start}`\n end = `${end}${TTY_STYLE.BOLD}`\n }\n return `${start}${value}${end}`\n })\n}\n\nfunction shouldUseStack(): boolean {\n try {\n return valueToBoolean(process.env.ZEED_STACK, false)\n }\n catch (err) {}\n return false\n}\n\nlet defaultUseStack: boolean | undefined\n\nexport const loggerStackTraceDebug = 'loggerStackTraceDebug-7d38e5a9214b58d29734374cdb9521fd964d7485'\n\nexport function LoggerNodeHandler(opt: LogHandlerOptions = {}): LogHandler {\n if (defaultUseColor == null)\n defaultUseColor = shouldUseColor()\n\n if (defaultUseStack == null)\n defaultUseStack = shouldUseStack()\n\n if (startTime == null)\n startTime = getTimestamp()\n\n const {\n level = undefined,\n filter = undefined,\n colors = defaultUseColor,\n levelHelper = true,\n nameBrackets = true,\n padding = 0,\n fill = 0,\n stack = defaultUseStack,\n time = true,\n } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n const timeNow = getTimestamp()\n const name = msg.name || ''\n let ninfo = namespaces[name || '']\n if (ninfo == null) {\n ninfo = {\n color: nodeSelectColorByName(name),\n // time: timeNow\n }\n namespaces[name] = ninfo\n }\n const timeDiffString = formatMilliseconds(timeNow - startTime!)\n\n let args: string[]\n\n let displayName = nameBrackets ? `[${name}]` : name\n\n if (padding > 0)\n displayName = displayName.padStart(padding, ' ')\n\n if (fill > 0)\n displayName = displayName.padEnd(fill, ' ')\n\n if (colors) {\n const c = ninfo.color\n args = [`${colorString(displayName, c)} | `] // nameBrackets ? [`%c[${name}]`] : [`%c${name}`]\n if (msg.level === LogLevelWarn)\n args.push(...colorStringList(msg.messages, TTY_STYLE.ORANGE))\n else if (msg.level === LogLevelError)\n args.push(...colorStringList(msg.messages, TTY_STYLE.RED))\n else\n args.push(...msg.messages)\n if (time)\n args.push(colorString(`+${timeDiffString}`, c))\n }\n else {\n args = [displayName, ...msg.messages]\n if (time)\n args.push(`+${timeDiffString}`)\n }\n\n if (msg.messages?.[0] === loggerStackTraceDebug) {\n try {\n // eslint-disable-next-line no-console\n console.log(getStack())\n }\n catch (err) { }\n }\n\n // Probably time consuming\n if (stack) {\n let line = ''\n if (typeof stack === 'boolean') {\n line = getSourceLocationByPrecedingPattern(\n ['at Function.', 'at null.log (', 'at log ('],\n true,\n )\n if (!line)\n line = getSourceLocation(0, true)\n }\n else {\n const depth = typeof stack === 'number' ? stack : 3\n line = getSourceLocation(depth, true)\n }\n if (line)\n args.push(colorString(`(${line})`, COLOR.GRAY))\n }\n\n const sep = '|'\n const charLevel = '.'\n\n switch (msg.level) {\n case LogLevelInfo:\n if (levelHelper)\n args[0] = `I${sep}${charLevel} ${args[0]}`\n log(...args)\n break\n case LogLevelWarn:\n if (levelHelper) {\n args[0] = (colors\n ? colorString(`W${sep}${charLevel}${charLevel} `, COLOR.ORANGE)\n : `W${sep}${charLevel}${charLevel} `) + args[0]\n }\n log(...args)\n break\n case LogLevelError:\n if (levelHelper) {\n args[0] = (colors\n ? colorString(`E${sep}${charLevel}${charLevel}${charLevel} `, COLOR.RED)\n : `E${sep}${charLevel}${charLevel}${charLevel} `) + args[0]\n }\n log(...args)\n break\n default:\n if (levelHelper)\n args[0] = `D${sep} ${args[0]}`\n log(...args)\n break\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-47GAJHNO.cjs","../src/common/data/message.ts"],"names":["formatMessages","messages","opt","trace","pretty","obj","Uint8ArrayToHexDump","ensureUint8Array"],"mappings":"AAAA,iIAAwC,wDAAyC,wDAAgD,wDAAyC,SCS1JA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAA6B,CAAC,CAAA,CACvB,CACP,GAAM,CAAE,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CAAA,CAAM,MAAA,CAAAC,CAAAA,CAAS,CAAA,CAAK,CAAA,CAAIF,CAAAA,CACxC,OAAOD,CAAAA,CAAS,GAAA,CAAKI,CAAAA,EAAQ,CAC3B,EAAA,CAAIA,CAAAA,EAAO,OAAOA,CAAAA,EAAQ,QAAA,CAAU,CAClC,EAAA,CAAID,CAAAA,EAAAA,CAAWC,EAAAA,WAAe,UAAA,EAAcA,EAAAA,WAAe,WAAA,CAAA,CACzD,MAAO,CAAA;AAAA,EAAKC,iCAAAA,iCAAoBC,EAAiBF,WAAe,WAAA,CAAc,IAAI,UAAA,CAAWA,CAAG,CAAA,CAAIA,CAAG,CAAC,CAAC,CAAA;AAAA,CAAA,CAE3G,EAAA,CAAIA,EAAAA,WAAe,KAAA,CACjB,MAAO,CAAA,EAAA;AAEE;AAGP;AAGcA;AAKEA","file":"/home/runner/work/zeed/zeed/dist/chunk-47GAJHNO.cjs","sourcesContent":[null,"import { ensureUint8Array, Uint8ArrayToHexDump } from './bin'\nimport { isArray } from './is'\nimport { objectPlain } from './object'\n\nexport interface RenderMessagesOptions {\n trace?: boolean // = true\n pretty?: boolean // = true\n}\n\nexport function formatMessages(\n messages: any[],\n opt: RenderMessagesOptions = {},\n): any[] {\n const { trace = true, pretty = true } = opt\n return messages.map((obj) => {\n if (obj && typeof obj === 'object') {\n if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer))\n return `\\n${Uint8ArrayToHexDump(ensureUint8Array(obj instanceof ArrayBuffer ? new Uint8Array(obj) : obj))}\\n`\n \n if (obj instanceof Error) {\n return `${obj.name}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return `${obj.error.name || 'ErrorEvent'}: ${obj.error.message}` + (trace ? `\\n${obj.error.stack}` : '')\n }\n if (typeof DOMException !== 'undefined' && obj instanceof DOMException) {\n return `${obj.name || 'DOMException'}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (obj && typeof obj === 'object' && 'reason' in obj) {\n return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\\n${obj.stack}` : '')\n }\n \n try {\n obj = objectPlain(obj)\n return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj)\n }\n catch (err) {}\n }\n return String(obj)\n })\n}\n\nexport function renderMessages(\n messages: any | any[],\n opt: RenderMessagesOptions = {},\n): string {\n return formatMessages(isArray(messages) ? messages : [messages], opt).join(' ')\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-47GAJHNO.cjs","../src/common/data/message.ts"],"names":["formatMessages","messages","opt","trace","pretty","obj","Uint8ArrayToHexDump","ensureUint8Array"],"mappings":"AAAA,iIAAwC,wDAAyC,wDAAgD,wDAAyC,SCS1JA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAA6B,CAAC,CAAA,CACvB,CACP,GAAM,CAAE,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CAAA,CAAM,MAAA,CAAAC,CAAAA,CAAS,CAAA,CAAK,CAAA,CAAIF,CAAAA,CACxC,OAAOD,CAAAA,CAAS,GAAA,CAAKI,CAAAA,EAAQ,CAC3B,EAAA,CAAIA,CAAAA,EAAO,OAAOA,CAAAA,EAAQ,QAAA,CAAU,CAClC,EAAA,CAAID,CAAAA,EAAAA,CAAWC,EAAAA,WAAe,UAAA,EAAcA,EAAAA,WAAe,WAAA,CAAA,CACzD,MAAO,CAAA;AAAA,EAAKC,iCAAAA,iCAAoBC,EAAiBF,WAAe,WAAA,CAAc,IAAI,UAAA,CAAWA,CAAG,CAAA,CAAIA,CAAG,CAAC,CAAC,CAAA;AAAA,CAAA,CAE3G,EAAA,CAAIA,EAAAA,WAAe,KAAA,CACjB,MAAO,CAAA,EAAA;AAEE;AAGP;AAGcA;AAKEA","file":"/Users/dirk/work/github-zeed/dist/chunk-47GAJHNO.cjs","sourcesContent":[null,"import { ensureUint8Array, Uint8ArrayToHexDump } from './bin'\nimport { isArray } from './is'\nimport { objectPlain } from './object'\n\nexport interface RenderMessagesOptions {\n trace?: boolean // = true\n pretty?: boolean // = true\n}\n\nexport function formatMessages(\n messages: any[],\n opt: RenderMessagesOptions = {},\n): any[] {\n const { trace = true, pretty = true } = opt\n return messages.map((obj) => {\n if (obj && typeof obj === 'object') {\n if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer))\n return `\\n${Uint8ArrayToHexDump(ensureUint8Array(obj instanceof ArrayBuffer ? new Uint8Array(obj) : obj))}\\n`\n \n if (obj instanceof Error) {\n return `${obj.name}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return `${obj.error.name || 'ErrorEvent'}: ${obj.error.message}` + (trace ? `\\n${obj.error.stack}` : '')\n }\n if (typeof DOMException !== 'undefined' && obj instanceof DOMException) {\n return `${obj.name || 'DOMException'}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (obj && typeof obj === 'object' && 'reason' in obj) {\n return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\\n${obj.stack}` : '')\n }\n \n try {\n obj = objectPlain(obj)\n return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj)\n }\n catch (err) {}\n }\n return String(obj)\n })\n}\n\nexport function renderMessages(\n messages: any | any[],\n opt: RenderMessagesOptions = {},\n): string {\n return formatMessages(isArray(messages) ? messages : [messages], opt).join(' ')\n}\n"]}