zeed 1.1.1 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/AGENTS.md +225 -18
  2. package/README.md +1 -1
  3. package/dist/_experiments/bitcask.cjs.map +1 -1
  4. package/dist/browser/base64.cjs.map +1 -1
  5. package/dist/browser/gravatar.cjs.map +1 -1
  6. package/dist/browser/index.cjs.map +1 -1
  7. package/dist/browser/localstorage.cjs.map +1 -1
  8. package/dist/browser/log/index.cjs.map +1 -1
  9. package/dist/browser/log/log-browser-factory.cjs.map +1 -1
  10. package/dist/browser/log/log-browser.cjs.map +1 -1
  11. package/dist/browser/log/log-colors.cjs.map +1 -1
  12. package/dist/browser/log/log-context-browser.cjs.map +1 -1
  13. package/dist/chunk-2TNLYCZH.cjs.map +1 -1
  14. package/dist/chunk-2UQU3IBA.cjs.map +1 -1
  15. package/dist/chunk-32B4KRI6.cjs.map +1 -1
  16. package/dist/{chunk-DAD3M2IM.cjs → chunk-344WNUEK.cjs} +2 -2
  17. package/dist/chunk-344WNUEK.cjs.map +1 -0
  18. package/dist/chunk-36N7ZI6A.cjs.map +1 -1
  19. package/dist/chunk-3P4XRJ23.cjs.map +1 -1
  20. package/dist/chunk-3TNVJY4F.cjs.map +1 -1
  21. package/dist/chunk-3ZBLU4D6.cjs.map +1 -1
  22. package/dist/chunk-47GAJHNO.cjs.map +1 -1
  23. package/dist/chunk-4ATJXWZH.cjs.map +1 -1
  24. package/dist/chunk-4B2XCWGL.cjs.map +1 -1
  25. package/dist/chunk-4M4EUXUS.cjs.map +1 -1
  26. package/dist/chunk-4TLMJAZB.cjs.map +1 -1
  27. package/dist/chunk-5RHVNJKM.cjs.map +1 -1
  28. package/dist/chunk-5RJ6XORD.cjs.map +1 -1
  29. package/dist/chunk-5VHLMAKU.cjs.map +1 -1
  30. package/dist/chunk-75LG3YTX.cjs.map +1 -1
  31. package/dist/chunk-7HXAZLZN.cjs.map +1 -1
  32. package/dist/chunk-7UA33BQW.cjs.map +1 -1
  33. package/dist/chunk-7XE6IQ4X.cjs.map +1 -1
  34. package/dist/chunk-A6DSKTWF.cjs.map +1 -1
  35. package/dist/chunk-ABCQXAMV.cjs.map +1 -1
  36. package/dist/chunk-AERHWWDH.cjs.map +1 -1
  37. package/dist/chunk-AH7ZMSSE.cjs.map +1 -1
  38. package/dist/chunk-B2XPF5R4.cjs.map +1 -1
  39. package/dist/chunk-B75IPNYG.cjs.map +1 -1
  40. package/dist/{chunk-RZPIAOGG.js → chunk-BPPN3ZNV.js} +2 -2
  41. package/dist/chunk-BPWOWVF7.cjs.map +1 -1
  42. package/dist/chunk-BQ66KUDG.cjs.map +1 -1
  43. package/dist/chunk-BTEZYY77.cjs.map +1 -1
  44. package/dist/chunk-BTOZJX47.cjs.map +1 -1
  45. package/dist/chunk-C3WUDLBK.cjs.map +1 -1
  46. package/dist/{chunk-AUYYYDRM.cjs → chunk-C72ST4ZR.cjs} +1 -1
  47. package/dist/chunk-C72ST4ZR.cjs.map +1 -0
  48. package/dist/chunk-C7CD7VGT.cjs.map +1 -1
  49. package/dist/chunk-CEANCAI7.cjs.map +1 -1
  50. package/dist/chunk-CGNAZMNO.cjs.map +1 -1
  51. package/dist/chunk-CGQIHGXL.cjs.map +1 -1
  52. package/dist/chunk-CHR4BOAA.cjs.map +1 -1
  53. package/dist/{chunk-LXFL3VYA.cjs → chunk-CLMIDN5Q.cjs} +2 -2
  54. package/dist/chunk-CLMIDN5Q.cjs.map +1 -0
  55. package/dist/chunk-CM2VW6MR.cjs.map +1 -1
  56. package/dist/chunk-CWGNDC2T.cjs.map +1 -1
  57. package/dist/chunk-CYPMLO24.cjs.map +1 -1
  58. package/dist/{chunk-AH3LPY2A.js → chunk-DBXJFUZ7.js} +2 -2
  59. package/dist/chunk-DHZPCNPE.cjs.map +1 -1
  60. package/dist/chunk-DLVWYIS2.cjs.map +1 -1
  61. package/dist/chunk-DMKWVXY7.cjs.map +1 -1
  62. package/dist/chunk-DRKHTT76.cjs.map +1 -1
  63. package/dist/chunk-DXQHNAIL.cjs.map +1 -1
  64. package/dist/chunk-ETHALF2S.cjs.map +1 -1
  65. package/dist/chunk-FMMEBQFR.cjs.map +1 -1
  66. package/dist/{chunk-5BA3O5XZ.cjs → chunk-GARQAHQE.cjs} +2 -2
  67. package/dist/chunk-GARQAHQE.cjs.map +1 -0
  68. package/dist/chunk-GFMSFYKE.cjs.map +1 -1
  69. package/dist/chunk-GILR5DT5.cjs.map +1 -1
  70. package/dist/chunk-HEYAOG5D.cjs.map +1 -1
  71. package/dist/chunk-HTEAHUXG.cjs.map +1 -1
  72. package/dist/chunk-HZC2RTNS.cjs.map +1 -1
  73. package/dist/chunk-I5HBI6EC.cjs.map +1 -1
  74. package/dist/chunk-IA2OMOCB.cjs.map +1 -1
  75. package/dist/chunk-IJE3VBKC.cjs.map +1 -1
  76. package/dist/chunk-IOEXXFCL.cjs.map +1 -1
  77. package/dist/chunk-IVUEQANC.cjs.map +1 -1
  78. package/dist/chunk-IXH5D35S.cjs.map +1 -1
  79. package/dist/chunk-JJKWFF7B.cjs.map +1 -1
  80. package/dist/chunk-JLB5ALZ5.cjs.map +1 -1
  81. package/dist/chunk-JWON4PLZ.cjs.map +1 -1
  82. package/dist/chunk-K4IRAHZV.cjs.map +1 -1
  83. package/dist/chunk-KFNJHRCB.cjs.map +1 -1
  84. package/dist/chunk-KJ3RKZH5.cjs.map +1 -1
  85. package/dist/chunk-KNKYRU4X.cjs.map +1 -1
  86. package/dist/chunk-KPU7ZOUH.cjs.map +1 -1
  87. package/dist/{chunk-LI2YWV3G.js → chunk-KWFFSQMW.js} +2 -2
  88. package/dist/chunk-KYDHX5HW.cjs.map +1 -1
  89. package/dist/chunk-KYNPDWX4.cjs.map +1 -1
  90. package/dist/chunk-L5C7BHMX.cjs.map +1 -1
  91. package/dist/chunk-L5IXZXHR.cjs.map +1 -1
  92. package/dist/chunk-L5XYQBG4.cjs.map +1 -1
  93. package/dist/chunk-LCZEBSTH.cjs.map +1 -1
  94. package/dist/{chunk-ETMFCGHO.cjs → chunk-LG7UXZKN.cjs} +2 -2
  95. package/dist/chunk-LG7UXZKN.cjs.map +1 -0
  96. package/dist/chunk-LLRM7AW7.cjs.map +1 -1
  97. package/dist/chunk-LONV4KUS.cjs +2 -0
  98. package/dist/chunk-LONV4KUS.cjs.map +1 -0
  99. package/dist/chunk-LUPESR7S.cjs.map +1 -1
  100. package/dist/chunk-M3W3RDZF.cjs.map +1 -1
  101. package/dist/chunk-MIEXPALS.cjs.map +1 -1
  102. package/dist/chunk-MQFII6MR.cjs.map +1 -1
  103. package/dist/{chunk-UFYY2K4G.js → chunk-MV2F4DQ6.js} +2 -2
  104. package/dist/chunk-MVSJTIGR.cjs.map +1 -1
  105. package/dist/chunk-N7XCSNC7.cjs.map +1 -1
  106. package/dist/chunk-NNQYMABK.cjs.map +1 -1
  107. package/dist/chunk-NPQ77LO4.cjs.map +1 -1
  108. package/dist/chunk-NU2LARFE.cjs.map +1 -1
  109. package/dist/chunk-NVLJOTGF.cjs.map +1 -1
  110. package/dist/chunk-NVLQ55J2.cjs.map +1 -1
  111. package/dist/chunk-O5QH7LLM.cjs.map +1 -1
  112. package/dist/chunk-OGP3AZFM.cjs.map +1 -1
  113. package/dist/chunk-ONPGFM6G.cjs.map +1 -1
  114. package/dist/chunk-P7XCQ7WV.cjs.map +1 -1
  115. package/dist/{chunk-X7RJP4DR.cjs → chunk-PU67BXVP.cjs} +1 -1
  116. package/dist/chunk-PU67BXVP.cjs.map +1 -0
  117. package/dist/chunk-PYRSJ4KI.cjs.map +1 -1
  118. package/dist/chunk-Q2SNIYQS.cjs.map +1 -1
  119. package/dist/chunk-QOZ5S3UC.cjs.map +1 -1
  120. package/dist/chunk-R3NVN3FY.cjs.map +1 -1
  121. package/dist/chunk-R74LEJVE.cjs.map +1 -1
  122. package/dist/chunk-RAXM7FU3.cjs.map +1 -1
  123. package/dist/chunk-RLII6GIK.cjs.map +1 -1
  124. package/dist/chunk-RMTW3TW2.cjs.map +1 -1
  125. package/dist/chunk-SEQAFKIV.cjs.map +1 -1
  126. package/dist/chunk-SHOLGUSO.cjs.map +1 -1
  127. package/dist/chunk-SQK2VOFN.cjs.map +1 -1
  128. package/dist/{chunk-BRQSQXKK.js → chunk-SSKDGT5N.js} +1 -1
  129. package/dist/chunk-SSKDGT5N.js.map +1 -0
  130. package/dist/chunk-TAUWRIFY.cjs.map +1 -1
  131. package/dist/chunk-TJQMBWXU.cjs.map +1 -1
  132. package/dist/chunk-TNMEWZPW.cjs.map +1 -1
  133. package/dist/chunk-UCS53L2H.cjs.map +1 -1
  134. package/dist/chunk-ULLUQLTA.cjs.map +1 -1
  135. package/dist/chunk-UO65Z4DR.cjs.map +1 -1
  136. package/dist/chunk-UXW3L3L6.cjs.map +1 -1
  137. package/dist/{chunk-IMM23TO5.cjs → chunk-V3A7ZIGT.cjs} +2 -2
  138. package/dist/chunk-V3A7ZIGT.cjs.map +1 -0
  139. package/dist/chunk-VMGJFJIM.cjs.map +1 -1
  140. package/dist/chunk-VR7T3I5N.cjs.map +1 -1
  141. package/dist/chunk-VWJZWXTJ.cjs.map +1 -1
  142. package/dist/chunk-VX3R7DUJ.cjs.map +1 -1
  143. package/dist/{chunk-LTEGKVQQ.js → chunk-W4M6PGBQ.js} +2 -2
  144. package/dist/chunk-WAK73JNG.cjs.map +1 -1
  145. package/dist/chunk-WCOWHFZD.cjs.map +1 -1
  146. package/dist/chunk-WEF4N7J4.cjs.map +1 -1
  147. package/dist/{chunk-4X7UJTXJ.js → chunk-WH4WW45N.js} +2 -2
  148. package/dist/chunk-WHJI4PQ2.cjs.map +1 -1
  149. package/dist/chunk-WK6DXBUD.cjs.map +1 -1
  150. package/dist/chunk-WPWV7ZEM.cjs.map +1 -1
  151. package/dist/chunk-WSRQ3X55.cjs.map +1 -1
  152. package/dist/chunk-X6SZNPFL.cjs.map +1 -1
  153. package/dist/chunk-X764QBCC.cjs.map +1 -1
  154. package/dist/{chunk-L5OF6DSH.cjs → chunk-XAU2ICXA.cjs} +2 -2
  155. package/dist/chunk-XAU2ICXA.cjs.map +1 -0
  156. package/dist/chunk-XH7UHZOF.cjs.map +1 -1
  157. package/dist/chunk-XICDURQQ.cjs.map +1 -1
  158. package/dist/chunk-XMUXVBF2.cjs.map +1 -1
  159. package/dist/chunk-XX5NP5VA.cjs.map +1 -1
  160. package/dist/chunk-Y6NKJM35.cjs.map +1 -1
  161. package/dist/chunk-YEP2NVSS.js +2 -0
  162. package/dist/chunk-YEP2NVSS.js.map +1 -0
  163. package/dist/{chunk-PRTEIKN2.js → chunk-YO6FIHXC.js} +1 -1
  164. package/dist/chunk-YO6FIHXC.js.map +1 -0
  165. package/dist/chunk-ZBG4FI7E.cjs.map +1 -1
  166. package/dist/chunk-ZEDMMWJI.cjs.map +1 -1
  167. package/dist/chunk-ZEQQVU3K.cjs.map +1 -1
  168. package/dist/chunk-ZJQITDTA.cjs.map +1 -1
  169. package/dist/common/assert.cjs.map +1 -1
  170. package/dist/common/bin/index.cjs.map +1 -1
  171. package/dist/common/bin/lib0/binary.cjs.map +1 -1
  172. package/dist/common/bin/lib0/buffer.cjs.map +1 -1
  173. package/dist/common/bin/lib0/create.cjs.map +1 -1
  174. package/dist/common/bin/lib0/decoding.cjs.map +1 -1
  175. package/dist/common/bin/lib0/encoding.cjs.map +1 -1
  176. package/dist/common/bin/lib0/string.cjs.map +1 -1
  177. package/dist/common/crypto/aes-sealed.cjs.map +1 -1
  178. package/dist/common/crypto/crypto.cjs.map +1 -1
  179. package/dist/common/crypto/index.cjs.map +1 -1
  180. package/dist/common/crypto/xaes.cjs.map +1 -1
  181. package/dist/common/csv.cjs.map +1 -1
  182. package/dist/common/data/array.cjs.map +1 -1
  183. package/dist/common/data/basex-secure.cjs.map +1 -1
  184. package/dist/common/data/basex.cjs.map +1 -1
  185. package/dist/common/data/bin-types.cjs.map +1 -1
  186. package/dist/common/data/bin.cjs.map +1 -1
  187. package/dist/common/data/camelcase.cjs.map +1 -1
  188. package/dist/common/data/convert.cjs.map +1 -1
  189. package/dist/common/data/datauri.cjs.map +1 -1
  190. package/dist/common/data/day-legacy.cjs +1 -1
  191. package/dist/common/data/day-legacy.cjs.map +1 -1
  192. package/dist/common/data/day-legacy.js +1 -1
  193. package/dist/common/data/day.cjs +1 -1
  194. package/dist/common/data/day.cjs.map +1 -1
  195. package/dist/common/data/day.d.cts +19 -1
  196. package/dist/common/data/day.d.ts +19 -1
  197. package/dist/common/data/day.js +1 -1
  198. package/dist/common/data/decimal.cjs.map +1 -1
  199. package/dist/common/data/deep.cjs.map +1 -1
  200. package/dist/common/data/diff.cjs.map +1 -1
  201. package/dist/common/data/distributed.cjs.map +1 -1
  202. package/dist/common/data/format.cjs.map +1 -1
  203. package/dist/common/data/html.cjs.map +1 -1
  204. package/dist/common/data/index.cjs +1 -1
  205. package/dist/common/data/index.cjs.map +1 -1
  206. package/dist/common/data/index.d.cts +1 -1
  207. package/dist/common/data/index.d.ts +1 -1
  208. package/dist/common/data/index.js +1 -1
  209. package/dist/common/data/is.cjs.map +1 -1
  210. package/dist/common/data/json.cjs.map +1 -1
  211. package/dist/common/data/list.cjs.map +1 -1
  212. package/dist/common/data/lru.cjs.map +1 -1
  213. package/dist/common/data/math.cjs.map +1 -1
  214. package/dist/common/data/message.cjs.map +1 -1
  215. package/dist/common/data/object-changes.cjs.map +1 -1
  216. package/dist/common/data/object.cjs.map +1 -1
  217. package/dist/common/data/orderby.cjs.map +1 -1
  218. package/dist/common/data/path.cjs.map +1 -1
  219. package/dist/common/data/regexp.cjs.map +1 -1
  220. package/dist/common/data/rounding.cjs.map +1 -1
  221. package/dist/common/data/signal.cjs.map +1 -1
  222. package/dist/common/data/sortable.cjs.map +1 -1
  223. package/dist/common/data/sorted.cjs.map +1 -1
  224. package/dist/common/data/string-deburr.cjs.map +1 -1
  225. package/dist/common/data/string-hash-fnv.cjs.map +1 -1
  226. package/dist/common/data/string-hash-pool.cjs.map +1 -1
  227. package/dist/common/data/url.cjs.map +1 -1
  228. package/dist/common/data/utils.cjs.map +1 -1
  229. package/dist/common/data/wordlist.cjs.map +1 -1
  230. package/dist/common/data/xrx.cjs.map +1 -1
  231. package/dist/common/dispose-defer.cjs.map +1 -1
  232. package/dist/common/dispose-types.cjs.map +1 -1
  233. package/dist/common/dispose-utils.cjs.map +1 -1
  234. package/dist/common/exec/index.cjs +1 -1
  235. package/dist/common/exec/index.cjs.map +1 -1
  236. package/dist/common/exec/index.js +1 -1
  237. package/dist/common/exec/mutex.cjs.map +1 -1
  238. package/dist/common/exec/pool.cjs +1 -1
  239. package/dist/common/exec/pool.cjs.map +1 -1
  240. package/dist/common/exec/pool.js +1 -1
  241. package/dist/common/exec/progress.cjs.map +1 -1
  242. package/dist/common/exec/promise.cjs.map +1 -1
  243. package/dist/common/exec/queue.cjs.map +1 -1
  244. package/dist/common/exec/throttle-debounce.cjs.map +1 -1
  245. package/dist/common/global.cjs.map +1 -1
  246. package/dist/common/index.cjs +1 -1
  247. package/dist/common/index.cjs.map +1 -1
  248. package/dist/common/index.d.cts +1 -1
  249. package/dist/common/index.d.ts +1 -1
  250. package/dist/common/index.js +1 -1
  251. package/dist/common/localhost.cjs.map +1 -1
  252. package/dist/common/log/index.cjs.map +1 -1
  253. package/dist/common/log/log-base.cjs.map +1 -1
  254. package/dist/common/log/log-colors.cjs.map +1 -1
  255. package/dist/common/log/log-config.cjs.map +1 -1
  256. package/dist/common/log/log-console-capture.cjs.map +1 -1
  257. package/dist/common/log/log-console-original.cjs.map +1 -1
  258. package/dist/common/log/log-console.cjs.map +1 -1
  259. package/dist/common/log/log-context.cjs.map +1 -1
  260. package/dist/common/log/log-filter.cjs.map +1 -1
  261. package/dist/common/log/log-memory.cjs.map +1 -1
  262. package/dist/common/log/log-noop.cjs.map +1 -1
  263. package/dist/common/log/log.cjs.map +1 -1
  264. package/dist/common/msg/channel-debug.cjs.map +1 -1
  265. package/dist/common/msg/channel-local.cjs.map +1 -1
  266. package/dist/common/msg/channel-resilient.cjs.map +1 -1
  267. package/dist/common/msg/channel-wkwebview.cjs +2 -0
  268. package/dist/common/msg/channel-wkwebview.cjs.map +1 -0
  269. package/dist/common/msg/channel-wkwebview.d.cts +22 -0
  270. package/dist/common/msg/channel-wkwebview.d.ts +22 -0
  271. package/dist/common/msg/channel-wkwebview.js +2 -0
  272. package/dist/common/msg/channel-wkwebview.js.map +1 -0
  273. package/dist/common/msg/channel.cjs.map +1 -1
  274. package/dist/common/msg/emitter.cjs.map +1 -1
  275. package/dist/common/msg/encoder.cjs.map +1 -1
  276. package/dist/common/msg/index.cjs.map +1 -1
  277. package/dist/common/msg/messages.cjs.map +1 -1
  278. package/dist/common/msg/pipe.cjs.map +1 -1
  279. package/dist/common/msg/pubsub.cjs.map +1 -1
  280. package/dist/common/msg/rpc.cjs.map +1 -1
  281. package/dist/common/network.cjs.map +1 -1
  282. package/dist/common/platform.cjs.map +1 -1
  283. package/dist/common/schema/_sandbox/sandbox-inherit.cjs +1 -0
  284. package/dist/common/schema/_sandbox/sandbox-inherit.cjs.map +1 -0
  285. package/dist/common/schema/_sandbox/sandbox-inherit.d.cts +2 -0
  286. package/dist/common/schema/_sandbox/sandbox-inherit.d.ts +2 -0
  287. package/dist/common/schema/_sandbox/sandbox-inherit.js +1 -0
  288. package/dist/common/schema/_sandbox/sandbox-inherit.js.map +1 -0
  289. package/dist/common/schema/_sandbox/sandbox.cjs +1 -0
  290. package/dist/common/schema/_sandbox/sandbox.cjs.map +1 -0
  291. package/dist/common/schema/_sandbox/sandbox.d.cts +2 -0
  292. package/dist/common/schema/_sandbox/sandbox.d.ts +2 -0
  293. package/dist/common/schema/_sandbox/sandbox.js +1 -0
  294. package/dist/common/schema/_sandbox/sandbox.js.map +1 -0
  295. package/dist/common/schema/_sandbox/sandbox.xspec.cjs +1 -0
  296. package/dist/common/schema/_sandbox/sandbox.xspec.cjs.map +1 -0
  297. package/dist/common/schema/_sandbox/sandbox.xspec.d.cts +2 -0
  298. package/dist/common/schema/_sandbox/sandbox.xspec.d.ts +2 -0
  299. package/dist/common/schema/_sandbox/sandbox.xspec.js +1 -0
  300. package/dist/common/schema/_sandbox/sandbox.xspec.js.map +1 -0
  301. package/dist/common/schema/export-json-schema.cjs +1 -1
  302. package/dist/common/schema/export-json-schema.cjs.map +1 -1
  303. package/dist/common/schema/export-json-schema.js +1 -1
  304. package/dist/common/schema/export-swift.cjs +1 -1
  305. package/dist/common/schema/export-swift.cjs.map +1 -1
  306. package/dist/common/schema/export-swift.js +1 -1
  307. package/dist/common/schema/export-typescript.cjs.map +1 -1
  308. package/dist/common/schema/index.cjs +1 -1
  309. package/dist/common/schema/index.cjs.map +1 -1
  310. package/dist/common/schema/index.js +1 -1
  311. package/dist/common/schema/parse-args.cjs +1 -1
  312. package/dist/common/schema/parse-args.cjs.map +1 -1
  313. package/dist/common/schema/parse-args.js +1 -1
  314. package/dist/common/schema/parse-env.cjs +1 -1
  315. package/dist/common/schema/parse-env.cjs.map +1 -1
  316. package/dist/common/schema/parse-env.js +1 -1
  317. package/dist/common/schema/parse-object.cjs +1 -1
  318. package/dist/common/schema/parse-object.cjs.map +1 -1
  319. package/dist/common/schema/parse-object.js +1 -1
  320. package/dist/common/schema/schema-standard.cjs.map +1 -1
  321. package/dist/common/schema/schema.cjs.map +1 -1
  322. package/dist/common/schema/serialize.cjs.map +1 -1
  323. package/dist/common/schema/type-test.cjs.map +1 -1
  324. package/dist/common/schema/utils.cjs.map +1 -1
  325. package/dist/common/schema/z-collection.cjs.map +1 -1
  326. package/dist/common/schema/z.cjs.map +1 -1
  327. package/dist/common/storage/index.cjs.map +1 -1
  328. package/dist/common/storage/memstorage.cjs.map +1 -1
  329. package/dist/common/test.cjs +1 -1
  330. package/dist/common/test.cjs.map +1 -1
  331. package/dist/common/test.js +1 -1
  332. package/dist/common/time.cjs.map +1 -1
  333. package/dist/common/timeout.cjs.map +1 -1
  334. package/dist/common/types.cjs.map +1 -1
  335. package/dist/common/utils.cjs.map +1 -1
  336. package/dist/common/uuid.cjs.map +1 -1
  337. package/dist/index.all.cjs +1 -1
  338. package/dist/index.all.cjs.map +1 -1
  339. package/dist/index.all.d.cts +1 -1
  340. package/dist/index.all.d.ts +1 -1
  341. package/dist/index.all.js +1 -1
  342. package/dist/index.browser.cjs +1 -1
  343. package/dist/index.browser.cjs.map +1 -1
  344. package/dist/index.browser.d.cts +1 -1
  345. package/dist/index.browser.d.ts +1 -1
  346. package/dist/index.browser.js +1 -1
  347. package/dist/index.jsr.cjs.map +1 -1
  348. package/dist/index.node.cjs +1 -1
  349. package/dist/index.node.cjs.map +1 -1
  350. package/dist/index.node.d.cts +1 -1
  351. package/dist/index.node.d.ts +1 -1
  352. package/dist/index.node.js +1 -1
  353. package/dist/node/args.cjs.map +1 -1
  354. package/dist/node/clipboard.cjs.map +1 -1
  355. package/dist/node/crypto.cjs.map +1 -1
  356. package/dist/node/env.cjs.map +1 -1
  357. package/dist/node/files-async.cjs.map +1 -1
  358. package/dist/node/files.cjs.map +1 -1
  359. package/dist/node/filestorage.cjs.map +1 -1
  360. package/dist/node/fs.cjs.map +1 -1
  361. package/dist/node/glob.cjs.map +1 -1
  362. package/dist/node/index.cjs +1 -1
  363. package/dist/node/index.cjs.map +1 -1
  364. package/dist/node/index.js +1 -1
  365. package/dist/node/log/index.cjs +1 -1
  366. package/dist/node/log/index.cjs.map +1 -1
  367. package/dist/node/log/index.js +1 -1
  368. package/dist/node/log/log-context-node.cjs +1 -1
  369. package/dist/node/log/log-context-node.cjs.map +1 -1
  370. package/dist/node/log/log-context-node.js +1 -1
  371. package/dist/node/log/log-file-rotation.cjs +1 -1
  372. package/dist/node/log/log-file-rotation.cjs.map +1 -1
  373. package/dist/node/log/log-file-rotation.js +1 -1
  374. package/dist/node/log/log-file.cjs +1 -1
  375. package/dist/node/log/log-file.cjs.map +1 -1
  376. package/dist/node/log/log-file.js +1 -1
  377. package/dist/node/log/log-node.cjs.map +1 -1
  378. package/dist/node/log/log-rotation.cjs.map +1 -1
  379. package/dist/node/log/log-util.cjs.map +1 -1
  380. package/dist/node/open-browser.cjs.map +1 -1
  381. package/dist/shim-window.d.cjs.map +1 -1
  382. package/package.json +16 -15
  383. package/src/common/data/day.spec.ts +20 -1
  384. package/src/common/data/day.ts +44 -0
  385. package/src/common/exec/pool.ts +1 -1
  386. package/src/common/msg/channel-wkwebview.ts +47 -0
  387. package/src/common/schema/_sandbox/sandbox-inherit.ts +13 -0
  388. package/src/common/schema/_sandbox/sandbox.ts +42 -0
  389. package/src/common/schema/_sandbox/sandbox.xspec.ts +45 -0
  390. package/src/common/schema/parse-object.ts +1 -3
  391. package/src/common/time.spec.ts +3 -4
  392. package/dist/chunk-5BA3O5XZ.cjs.map +0 -1
  393. package/dist/chunk-AUYYYDRM.cjs.map +0 -1
  394. package/dist/chunk-BRQSQXKK.js.map +0 -1
  395. package/dist/chunk-DAD3M2IM.cjs.map +0 -1
  396. package/dist/chunk-ETMFCGHO.cjs.map +0 -1
  397. package/dist/chunk-IMM23TO5.cjs.map +0 -1
  398. package/dist/chunk-KHK37DTS.cjs +0 -2
  399. package/dist/chunk-KHK37DTS.cjs.map +0 -1
  400. package/dist/chunk-L5OF6DSH.cjs.map +0 -1
  401. package/dist/chunk-LXFL3VYA.cjs.map +0 -1
  402. package/dist/chunk-PRTEIKN2.js.map +0 -1
  403. package/dist/chunk-TSNDVQHW.js +0 -2
  404. package/dist/chunk-TSNDVQHW.js.map +0 -1
  405. package/dist/chunk-X7RJP4DR.cjs.map +0 -1
  406. /package/dist/{chunk-RZPIAOGG.js.map → chunk-BPPN3ZNV.js.map} +0 -0
  407. /package/dist/{chunk-AH3LPY2A.js.map → chunk-DBXJFUZ7.js.map} +0 -0
  408. /package/dist/{chunk-LI2YWV3G.js.map → chunk-KWFFSQMW.js.map} +0 -0
  409. /package/dist/{chunk-UFYY2K4G.js.map → chunk-MV2F4DQ6.js.map} +0 -0
  410. /package/dist/{chunk-LTEGKVQQ.js.map → chunk-W4M6PGBQ.js.map} +0 -0
  411. /package/dist/{chunk-4X7UJTXJ.js.map → chunk-WH4WW45N.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as o}from"./chunk-TSNDVQHW.js";import{p as s}from"./chunk-KDKT5HPM.js";import{a as e}from"./chunk-73A2QE6J.js";import{a as t}from"./chunk-5NKC2EQJ.js";function f(){s("test"),e(),o()}t(f,"setTestMode");export{f as a};
2
- //# sourceMappingURL=chunk-AH3LPY2A.js.map
1
+ import{a as o}from"./chunk-YEP2NVSS.js";import{p as s}from"./chunk-KDKT5HPM.js";import{a as e}from"./chunk-73A2QE6J.js";import{a as t}from"./chunk-5NKC2EQJ.js";function f(){s("test"),e(),o()}t(f,"setTestMode");export{f as a};
2
+ //# sourceMappingURL=chunk-DBXJFUZ7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-DHZPCNPE.cjs","../src/common/data/diff.ts"],"names":["diffObjects","obj","newObj","options","_stack","diffs","isObjArray","key","objValue","path","newValue","areObjects","nestedDiffs","difference"],"mappings":"AAAA,iIAAwC,SC+BxBA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAAgC,CAAE,SAAA,CAAW,CAAA,CAAK,CAAA,CAClDC,CAAAA,CAAgC,CAAC,CAAA,CACnB,CACd,IAAIC,CAAAA,CAAsB,CAAC,CAAA,CACrBC,CAAAA,CAAa,KAAA,CAAM,OAAA,CAAQL,CAAG,CAAA,CAEpC,GAAA,CAAA,IAAWM,EAAAA,GAAON,CAAAA,CAAK,CACrB,IAAMO,CAAAA,CAAYP,CAAAA,CAAYM,CAAG,CAAA,CAC3BE,CAAAA,CAAOH,CAAAA,CAAa,CAACC,CAAAA,CAAMA,CAAAA,CACjC,EAAA,CAAI,CAAA,CAAEA,EAAAA,GAAOL,CAAAA,CAAAA,CAAS,CACpBG,CAAAA,CAAM,IAAA,CAAK,CACT,IAAA,CAAM,KAAA,CACN,IAAA,CAAM,CAACI,CAAI,CACb,CAAC,CAAA,CACD,QACF,CACA,IAAMC,CAAAA,CAAYR,CAAAA,CAAeK,CAAG,CAAA,CAC9BI,CAAAA,CAAa,OAAOH,CAAAA,EAAa,QAAA,EAAY,OAAOE,CAAAA,EAAa,QAAA,CACvE,EAAA,CAAIF,CAAAA,EACCE,CAAAA,EACAC,CAAAA,EACA,CAAE,CAAC,MAAA,CAAQ,QAAA,CAAU,QAAA,CAAU,QAAQ,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,cAAA,CAAeH,CAAQ,CAAA,CAAE,WAAA,CAAY,IAAI,CAAA,EAAA,CACjG,CAAAL,CAAAA,CAAQ,SAAA,EAAY,CAACC,CAAAA,CAAO,QAAA,CAASI,CAAQ,CAAA,CAAA,CACjD,CACA,IAAMI,CAAAA,CAAcZ,CAAAA,CAClBQ,CAAAA,CACAE,CAAAA,CACAP,CAAAA,CACAA,CAAAA,CAAQ,SAAA,CAAYC,CAAAA,CAAO,MAAA,CAAO,CAACI,CAAQ,CAAC,CAAA,CAAI,CAAC,CACnD,CAAA,CACAH,CAAAA,CAAQ,CAAC,GAAGA,CAAAA,CAAO,GAAGO,CAAAA,CAAY,GAAA,CAAKC,CAAAA,EAAAA,CACrCA,CAAAA,CAAW,IAAA,CAAK,OAAA,CAAQJ,CAAI,CAAA,CACrBI,CAAAA,CACR,CAAC,CACJ,CAAA,KAEEL,CAAAA,GAAaE,CAAAA,EACV,CAAA,CACDC,CAAAA,EAAAA,CACI,MAAA,CAAO,KAAA,CAAMH,CAAQ,CAAA,CACrB,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-DHZPCNPE.cjs","sourcesContent":[null,"// Original from https://github.com/AsyncBanana/microdiff MIT\n// Alternative https://github.com/kpdecker/jsdiff\n\nexport type DifferenceType = 'new' | 'upd' | 'del'\n\nexport interface Difference {\n type: DifferenceType\n path: (string | number)[]\n value?: any\n}\n\nexport interface DiffOptions {\n cyclesFix: boolean\n}\n\n/**\n * Describes the changes between to object with a list like:\n *\n * ```\n * [{\n * type: 'upd',\n * path: ['a'],\n * value: 1\n * },\n * {\n * type: 'del',\n * path: ['b', 'c']\n * }\n * ...]\n * ```\n */\nexport function diffObjects(\n obj: Record<string, any> | any[],\n newObj: Record<string, any> | any[],\n options: Partial<DiffOptions> = { cyclesFix: true },\n _stack: Record<string, any>[] = [],\n): Difference[] {\n let diffs: Difference[] = []\n const isObjArray = Array.isArray(obj)\n\n for (const key in obj) {\n const objValue = (obj as any)[key] // works for both array and record, only TS doesn't know ;)\n const path = isObjArray ? +key : key\n if (!(key in newObj)) {\n diffs.push({\n type: 'del',\n path: [path],\n })\n continue\n }\n const newValue = (newObj as any)[key]\n const areObjects = typeof objValue === 'object' && typeof newValue === 'object'\n if (objValue\n && newValue\n && areObjects\n && !(['Date', 'RegExp', 'String', 'Number'].includes(Object.getPrototypeOf(objValue).constructor.name))\n && (options.cyclesFix ? !_stack.includes(objValue) : true)\n ) {\n const nestedDiffs = diffObjects(\n objValue,\n newValue,\n options,\n options.cyclesFix ? _stack.concat([objValue]) : [],\n )\n diffs = [...diffs, ...nestedDiffs.map((difference) => {\n difference.path.unshift(path)\n return difference\n })]\n }\n else if (\n objValue !== newValue\n && !(\n areObjects\n && (Number.isNaN(objValue)\n ? `${objValue}` === `${newValue}`\n : +objValue === +newValue)\n )\n ) {\n diffs.push({\n path: [path],\n type: 'upd',\n value: newValue,\n })\n }\n }\n\n const isNewObjArray = Array.isArray(newObj)\n for (const key in newObj) {\n if (!(key in obj)) {\n diffs.push({\n type: 'new',\n path: [isNewObjArray ? +key : key],\n value: (newObj as any)[key], // works for both array and record, only TS doesn't know ;)\n })\n }\n }\n return diffs\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-DHZPCNPE.cjs","../src/common/data/diff.ts"],"names":["diffObjects","obj","newObj","options","_stack","diffs","isObjArray","key","objValue","path","newValue","areObjects","nestedDiffs","difference"],"mappings":"AAAA,iIAAwC,SC+BxBA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAAgC,CAAE,SAAA,CAAW,CAAA,CAAK,CAAA,CAClDC,CAAAA,CAAgC,CAAC,CAAA,CACnB,CACd,IAAIC,CAAAA,CAAsB,CAAC,CAAA,CACrBC,CAAAA,CAAa,KAAA,CAAM,OAAA,CAAQL,CAAG,CAAA,CAEpC,GAAA,CAAA,IAAWM,EAAAA,GAAON,CAAAA,CAAK,CACrB,IAAMO,CAAAA,CAAYP,CAAAA,CAAYM,CAAG,CAAA,CAC3BE,CAAAA,CAAOH,CAAAA,CAAa,CAACC,CAAAA,CAAMA,CAAAA,CACjC,EAAA,CAAI,CAAA,CAAEA,EAAAA,GAAOL,CAAAA,CAAAA,CAAS,CACpBG,CAAAA,CAAM,IAAA,CAAK,CACT,IAAA,CAAM,KAAA,CACN,IAAA,CAAM,CAACI,CAAI,CACb,CAAC,CAAA,CACD,QACF,CACA,IAAMC,CAAAA,CAAYR,CAAAA,CAAeK,CAAG,CAAA,CAC9BI,CAAAA,CAAa,OAAOH,CAAAA,EAAa,QAAA,EAAY,OAAOE,CAAAA,EAAa,QAAA,CACvE,EAAA,CAAIF,CAAAA,EACCE,CAAAA,EACAC,CAAAA,EACA,CAAE,CAAC,MAAA,CAAQ,QAAA,CAAU,QAAA,CAAU,QAAQ,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,cAAA,CAAeH,CAAQ,CAAA,CAAE,WAAA,CAAY,IAAI,CAAA,EAAA,CACjG,CAAAL,CAAAA,CAAQ,SAAA,EAAY,CAACC,CAAAA,CAAO,QAAA,CAASI,CAAQ,CAAA,CAAA,CACjD,CACA,IAAMI,CAAAA,CAAcZ,CAAAA,CAClBQ,CAAAA,CACAE,CAAAA,CACAP,CAAAA,CACAA,CAAAA,CAAQ,SAAA,CAAYC,CAAAA,CAAO,MAAA,CAAO,CAACI,CAAQ,CAAC,CAAA,CAAI,CAAC,CACnD,CAAA,CACAH,CAAAA,CAAQ,CAAC,GAAGA,CAAAA,CAAO,GAAGO,CAAAA,CAAY,GAAA,CAAKC,CAAAA,EAAAA,CACrCA,CAAAA,CAAW,IAAA,CAAK,OAAA,CAAQJ,CAAI,CAAA,CACrBI,CAAAA,CACR,CAAC,CACJ,CAAA,KAEEL,CAAAA,GAAaE,CAAAA,EACV,CAAA,CACDC,CAAAA,EAAAA,CACI,MAAA,CAAO,KAAA,CAAMH,CAAQ,CAAA,CACrB,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-DHZPCNPE.cjs","sourcesContent":[null,"// Original from https://github.com/AsyncBanana/microdiff MIT\n// Alternative https://github.com/kpdecker/jsdiff\n\nexport type DifferenceType = 'new' | 'upd' | 'del'\n\nexport interface Difference {\n type: DifferenceType\n path: (string | number)[]\n value?: any\n}\n\nexport interface DiffOptions {\n cyclesFix: boolean\n}\n\n/**\n * Describes the changes between to object with a list like:\n *\n * ```\n * [{\n * type: 'upd',\n * path: ['a'],\n * value: 1\n * },\n * {\n * type: 'del',\n * path: ['b', 'c']\n * }\n * ...]\n * ```\n */\nexport function diffObjects(\n obj: Record<string, any> | any[],\n newObj: Record<string, any> | any[],\n options: Partial<DiffOptions> = { cyclesFix: true },\n _stack: Record<string, any>[] = [],\n): Difference[] {\n let diffs: Difference[] = []\n const isObjArray = Array.isArray(obj)\n\n for (const key in obj) {\n const objValue = (obj as any)[key] // works for both array and record, only TS doesn't know ;)\n const path = isObjArray ? +key : key\n if (!(key in newObj)) {\n diffs.push({\n type: 'del',\n path: [path],\n })\n continue\n }\n const newValue = (newObj as any)[key]\n const areObjects = typeof objValue === 'object' && typeof newValue === 'object'\n if (objValue\n && newValue\n && areObjects\n && !(['Date', 'RegExp', 'String', 'Number'].includes(Object.getPrototypeOf(objValue).constructor.name))\n && (options.cyclesFix ? !_stack.includes(objValue) : true)\n ) {\n const nestedDiffs = diffObjects(\n objValue,\n newValue,\n options,\n options.cyclesFix ? _stack.concat([objValue]) : [],\n )\n diffs = [...diffs, ...nestedDiffs.map((difference) => {\n difference.path.unshift(path)\n return difference\n })]\n }\n else if (\n objValue !== newValue\n && !(\n areObjects\n && (Number.isNaN(objValue)\n ? `${objValue}` === `${newValue}`\n : +objValue === +newValue)\n )\n ) {\n diffs.push({\n path: [path],\n type: 'upd',\n value: newValue,\n })\n }\n }\n\n const isNewObjArray = Array.isArray(newObj)\n for (const key in newObj) {\n if (!(key in obj)) {\n diffs.push({\n type: 'new',\n path: [isNewObjArray ? +key : key],\n value: (newObj as any)[key], // works for both array and record, only TS doesn't know ;)\n })\n }\n }\n return diffs\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-DLVWYIS2.cjs","../src/common/log/log-filter.ts"],"names":["getNamespaceFilterString","defaultNamespaceFilter","__name","getDefaultNamespaceFilter","useNamespaceFilter","filter","fn","reject","accept","_name","i","split","len","template"],"mappings":"AAAA,qOAAsD,wDAAyC,wDAAyC,SCkBxHA,CAAAA,CAAyBC,CAAAA,CAAqC,CAC5E,OACEA,CAAAA,GAA2B,CAAA,CAAA,EACxBA,CAAAA,GAA2B,MAAA,EAC3BA,CAAAA,GAA2B,GAAA,EAC1B,OAAOA,CAAAA,EAA2B,QAAA,EAAYA,CAAAA,GAA2B,CAAA,CAE7EA,CAAAA,CAAyB,GAAA,CAGzBA,CAAAA,GAA2B,CAAA,CAAA,EACxBA,CAAAA,GAA2B,OAAA,EAC3BA,CAAAA,GAA2B,CAAA,EAC3BA,CAAAA,GAA2B,GAAA,EAC3BA,CAAAA,EAA0B,IAAA,EAC1BA,CAAAA,GAA2B,MAAA,EAC3BA,CAAAA,GAA2B,WAAA,CAE9BA,CAAAA,CAAyB,EAAA,CAGzBA,CAAAA,CAAyB,MAAA,CAAOA,CAAsB,CAAA,CAGjDA,CACT,CAzBgBC,iCAAAA,CAAAF,CAAA,0BAAA,CAAA,CA2BhB,SAASG,CAAAA,CAAAA,CAA4B,CACnC,OAAOH,CAAAA,CACL,OAAO,OAAA,CAAY,GAAA,kBACf,OAAA,CAAQ,GAAA,CAAI,IAAA,SAAQ,OAAA,CAAQ,GAAA,CAAI,OAAA,CAChC,OAAO,YAAA,CAAiB,GAAA,kBACtB,YAAA,CAAa,IAAA,SAAQ,YAAA,CAAa,OAAA,CAClC,GACR,CACF,CARSE,iCAAAA,CAAAC,CAAA,2BAAA,CAAA,CAgBF,SAASC,CAAAA,CACdC,CAAAA,CAAiBF,CAAAA,CAA0B,CAAA,CAC1B,CACjB,IAAIG,CAAAA,CACEC,CAAAA,CAAS,CAAC,CAAA,CACVC,CAAAA,CAAS,CAAC,CAAA,CAEhB,EAAA,CAAI,CAACH,CAAAA,CACHC,CAAAA,CAAKJ,iCAAAA,QAAA,CAAUO,CAAAA,CAAe,CAC5B,MAAO,CAAA,CACT,CAAA,CAFK,IAAA,CAAA,CAAA,KAAA,EAAA,CAIEJ,CAAAA,GAAW,GAAA,CAClBC,CAAAA,CAAKJ,iCAAAA,QAAA,CAAUO,CAAAA,CAAe,CAC5B,MAAO,CAAA,CACT,CAAA,CAFK,IAAA,CAAA,CAAA,IAIF,CACH,IAAIC,CAAAA,CACEC,CAAAA,CAAQN,CAAAA,CAAO,KAAA,CAAM,QAAQ,CAAA,CAC7BO,CAAAA,CAAMD,CAAAA,CAAM,MAAA,CAClB,GAAA,CAAKD,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIE,CAAAA,CAAKF,CAAAA,EAAAA,CAAK,CACxB,EAAA,CAAI,CAACC,CAAAA,CAAMD,CAAC,CAAA,CAEV,QAAA,CAEF,IAAMG,CAAAA,CAAWF,CAAAA,CAAMD,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAO,KAAK,CAAA,CAC1CG,CAAAA,CAAS,CAAC,CAAA,GAAM,GAAA,CAClBN,CAAAA,CAAO,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA,CAAA,EAAIM,CAAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-DLVWYIS2.cjs","sourcesContent":[null,"// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n/* eslint-disable node/prefer-global/process */\n\nimport type { LogLevel, LogLevelAliasType } from './log-base'\nimport { isString } from '../data/is'\nimport { LogLevelAlias, LogLevelAll, LogLevelOff } from './log-base'\n\n/**\n * Filter function for log namespaces.\n * @category Logging\n */\nexport interface NamespaceFilter {\n (name: string): boolean\n accept: RegExp[]\n reject: RegExp[]\n filter: string\n}\n\nexport function getNamespaceFilterString(defaultNamespaceFilter: any): string {\n if (\n defaultNamespaceFilter === true\n || defaultNamespaceFilter === 'true'\n || defaultNamespaceFilter === '1'\n || (typeof defaultNamespaceFilter === 'number' && defaultNamespaceFilter !== 0)\n ) {\n defaultNamespaceFilter = '*'\n }\n else if (\n defaultNamespaceFilter === false\n || defaultNamespaceFilter === 'false'\n || defaultNamespaceFilter === 0\n || defaultNamespaceFilter === '0'\n || defaultNamespaceFilter == null\n || defaultNamespaceFilter === 'null'\n || defaultNamespaceFilter === 'undefined'\n ) {\n defaultNamespaceFilter = ''\n }\n else {\n defaultNamespaceFilter = String(defaultNamespaceFilter)\n }\n\n return defaultNamespaceFilter\n}\n\nfunction getDefaultNamespaceFilter() {\n return getNamespaceFilterString(\n typeof process !== 'undefined'\n ? process.env.ZEED ?? process.env.DEBUG\n : typeof localStorage !== 'undefined'\n ? localStorage.zeed ?? localStorage.debug\n : '*',\n )\n}\n\n/**\n * Filter as described here https://github.com/visionmedia/debug#wildcards\n *\n * @param filter Namespace filter\n * @returns Function to check if filter applies\n */\nexport function useNamespaceFilter(\n filter: string = getDefaultNamespaceFilter(),\n): NamespaceFilter {\n let fn: any // (name: string) => boolean\n const reject = [] as RegExp[]\n const accept = [] as RegExp[]\n\n if (!filter) {\n fn = function (_name: string) {\n return false\n }\n }\n else if (filter === '*') {\n fn = function (_name: string) {\n return true\n }\n }\n else {\n let i\n const split = filter.split(/[\\s,]+/)\n const len = split.length\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue\n }\n const template = split[i].replace(/\\*/g, '.*?')\n if (template[0] === '-')\n reject.push(new RegExp(`^${template.substr(1)}`))\n else\n accept.push(new RegExp(`^${template}`))\n }\n\n fn = function (name: string) {\n if (reject.length === 0 && accept.length === 0)\n return true\n\n let i, len\n for (i = 0, len = reject.length; i < len; i++) {\n if (reject[i].test(name))\n return false\n }\n for (i = 0, len = accept.length; i < len; i++) {\n if (accept[i].test(name))\n return true\n }\n return false\n }\n }\n fn.accept = accept\n fn.reject = reject\n fn.filter = filter\n return fn as NamespaceFilter\n}\n\nfunction getDefaultLevelFilter() {\n return typeof process !== 'undefined'\n ? process.env.ZEED_LEVEL ?? process.env.LEVEL ?? process.env.DEBUG_LEVEL\n : typeof localStorage !== 'undefined'\n ? localStorage.zeed_level ?? localStorage.level ?? localStorage.debug_level\n : undefined\n}\n\nexport function parseLogLevel(filter: LogLevelAliasType): LogLevel {\n if (filter === false)\n return LogLevelOff\n if (typeof filter === 'number')\n return filter\n if (typeof filter === 'string') {\n const l = LogLevelAlias[filter.toLocaleLowerCase().trim()]\n if (l != null)\n return l\n }\n return LogLevelAll\n}\n\nexport function useLevelFilter(\n filter: string | number | boolean | LogLevelAliasType = getDefaultLevelFilter(),\n): (level: number) => boolean {\n const filterLevel = parseLogLevel(filter)\n return level => level >= filterLevel\n}\n\nexport function joinLogStrings(...messages: any[]) {\n if (isString(messages[1]))\n return [`${String(messages[0])} ${String(messages[1])}`, ...messages.slice(2)]\n return messages\n\n // let s = ''\n // for (let i = 0; i < messages.length; i++) {\n // const element = messages[i]\n // if (isString(element))\n // s += (s.length > 1 ? ' ' : '') + String(element)\n // else\n // return [s, ...messages.slice(i)]\n // }\n // return [s]\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-DLVWYIS2.cjs","../src/common/log/log-filter.ts"],"names":["getNamespaceFilterString","defaultNamespaceFilter","__name","getDefaultNamespaceFilter","useNamespaceFilter","filter","fn","reject","accept","_name","i","split","len","template"],"mappings":"AAAA,qOAAsD,wDAAyC,wDAAyC,SCkBxHA,CAAAA,CAAyBC,CAAAA,CAAqC,CAC5E,OACEA,CAAAA,GAA2B,CAAA,CAAA,EACxBA,CAAAA,GAA2B,MAAA,EAC3BA,CAAAA,GAA2B,GAAA,EAC1B,OAAOA,CAAAA,EAA2B,QAAA,EAAYA,CAAAA,GAA2B,CAAA,CAE7EA,CAAAA,CAAyB,GAAA,CAGzBA,CAAAA,GAA2B,CAAA,CAAA,EACxBA,CAAAA,GAA2B,OAAA,EAC3BA,CAAAA,GAA2B,CAAA,EAC3BA,CAAAA,GAA2B,GAAA,EAC3BA,CAAAA,EAA0B,IAAA,EAC1BA,CAAAA,GAA2B,MAAA,EAC3BA,CAAAA,GAA2B,WAAA,CAE9BA,CAAAA,CAAyB,EAAA,CAGzBA,CAAAA,CAAyB,MAAA,CAAOA,CAAsB,CAAA,CAGjDA,CACT,CAzBgBC,iCAAAA,CAAAF,CAAA,0BAAA,CAAA,CA2BhB,SAASG,CAAAA,CAAAA,CAA4B,CACnC,OAAOH,CAAAA,CACL,OAAO,OAAA,CAAY,GAAA,kBACf,OAAA,CAAQ,GAAA,CAAI,IAAA,SAAQ,OAAA,CAAQ,GAAA,CAAI,OAAA,CAChC,OAAO,YAAA,CAAiB,GAAA,kBACtB,YAAA,CAAa,IAAA,SAAQ,YAAA,CAAa,OAAA,CAClC,GACR,CACF,CARSE,iCAAAA,CAAAC,CAAA,2BAAA,CAAA,CAgBF,SAASC,CAAAA,CACdC,CAAAA,CAAiBF,CAAAA,CAA0B,CAAA,CAC1B,CACjB,IAAIG,CAAAA,CACEC,CAAAA,CAAS,CAAC,CAAA,CACVC,CAAAA,CAAS,CAAC,CAAA,CAEhB,EAAA,CAAI,CAACH,CAAAA,CACHC,CAAAA,CAAKJ,iCAAAA,QAAA,CAAUO,CAAAA,CAAe,CAC5B,MAAO,CAAA,CACT,CAAA,CAFK,IAAA,CAAA,CAAA,KAAA,EAAA,CAIEJ,CAAAA,GAAW,GAAA,CAClBC,CAAAA,CAAKJ,iCAAAA,QAAA,CAAUO,CAAAA,CAAe,CAC5B,MAAO,CAAA,CACT,CAAA,CAFK,IAAA,CAAA,CAAA,IAIF,CACH,IAAIC,CAAAA,CACEC,CAAAA,CAAQN,CAAAA,CAAO,KAAA,CAAM,QAAQ,CAAA,CAC7BO,CAAAA,CAAMD,CAAAA,CAAM,MAAA,CAClB,GAAA,CAAKD,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIE,CAAAA,CAAKF,CAAAA,EAAAA,CAAK,CACxB,EAAA,CAAI,CAACC,CAAAA,CAAMD,CAAC,CAAA,CAEV,QAAA,CAEF,IAAMG,CAAAA,CAAWF,CAAAA,CAAMD,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAO,KAAK,CAAA,CAC1CG,CAAAA,CAAS,CAAC,CAAA,GAAM,GAAA,CAClBN,CAAAA,CAAO,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA,CAAA,EAAIM,CAAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-DLVWYIS2.cjs","sourcesContent":[null,"// (C)opyright 2021-07-15 Dirk Holtwick, holtwick.it. All rights reserved.\n/* eslint-disable node/prefer-global/process */\n\nimport type { LogLevel, LogLevelAliasType } from './log-base'\nimport { isString } from '../data/is'\nimport { LogLevelAlias, LogLevelAll, LogLevelOff } from './log-base'\n\n/**\n * Filter function for log namespaces.\n * @category Logging\n */\nexport interface NamespaceFilter {\n (name: string): boolean\n accept: RegExp[]\n reject: RegExp[]\n filter: string\n}\n\nexport function getNamespaceFilterString(defaultNamespaceFilter: any): string {\n if (\n defaultNamespaceFilter === true\n || defaultNamespaceFilter === 'true'\n || defaultNamespaceFilter === '1'\n || (typeof defaultNamespaceFilter === 'number' && defaultNamespaceFilter !== 0)\n ) {\n defaultNamespaceFilter = '*'\n }\n else if (\n defaultNamespaceFilter === false\n || defaultNamespaceFilter === 'false'\n || defaultNamespaceFilter === 0\n || defaultNamespaceFilter === '0'\n || defaultNamespaceFilter == null\n || defaultNamespaceFilter === 'null'\n || defaultNamespaceFilter === 'undefined'\n ) {\n defaultNamespaceFilter = ''\n }\n else {\n defaultNamespaceFilter = String(defaultNamespaceFilter)\n }\n\n return defaultNamespaceFilter\n}\n\nfunction getDefaultNamespaceFilter() {\n return getNamespaceFilterString(\n typeof process !== 'undefined'\n ? process.env.ZEED ?? process.env.DEBUG\n : typeof localStorage !== 'undefined'\n ? localStorage.zeed ?? localStorage.debug\n : '*',\n )\n}\n\n/**\n * Filter as described here https://github.com/visionmedia/debug#wildcards\n *\n * @param filter Namespace filter\n * @returns Function to check if filter applies\n */\nexport function useNamespaceFilter(\n filter: string = getDefaultNamespaceFilter(),\n): NamespaceFilter {\n let fn: any // (name: string) => boolean\n const reject = [] as RegExp[]\n const accept = [] as RegExp[]\n\n if (!filter) {\n fn = function (_name: string) {\n return false\n }\n }\n else if (filter === '*') {\n fn = function (_name: string) {\n return true\n }\n }\n else {\n let i\n const split = filter.split(/[\\s,]+/)\n const len = split.length\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue\n }\n const template = split[i].replace(/\\*/g, '.*?')\n if (template[0] === '-')\n reject.push(new RegExp(`^${template.substr(1)}`))\n else\n accept.push(new RegExp(`^${template}`))\n }\n\n fn = function (name: string) {\n if (reject.length === 0 && accept.length === 0)\n return true\n\n let i, len\n for (i = 0, len = reject.length; i < len; i++) {\n if (reject[i].test(name))\n return false\n }\n for (i = 0, len = accept.length; i < len; i++) {\n if (accept[i].test(name))\n return true\n }\n return false\n }\n }\n fn.accept = accept\n fn.reject = reject\n fn.filter = filter\n return fn as NamespaceFilter\n}\n\nfunction getDefaultLevelFilter() {\n return typeof process !== 'undefined'\n ? process.env.ZEED_LEVEL ?? process.env.LEVEL ?? process.env.DEBUG_LEVEL\n : typeof localStorage !== 'undefined'\n ? localStorage.zeed_level ?? localStorage.level ?? localStorage.debug_level\n : undefined\n}\n\nexport function parseLogLevel(filter: LogLevelAliasType): LogLevel {\n if (filter === false)\n return LogLevelOff\n if (typeof filter === 'number')\n return filter\n if (typeof filter === 'string') {\n const l = LogLevelAlias[filter.toLocaleLowerCase().trim()]\n if (l != null)\n return l\n }\n return LogLevelAll\n}\n\nexport function useLevelFilter(\n filter: string | number | boolean | LogLevelAliasType = getDefaultLevelFilter(),\n): (level: number) => boolean {\n const filterLevel = parseLogLevel(filter)\n return level => level >= filterLevel\n}\n\nexport function joinLogStrings(...messages: any[]) {\n if (isString(messages[1]))\n return [`${String(messages[0])} ${String(messages[1])}`, ...messages.slice(2)]\n return messages\n\n // let s = ''\n // for (let i = 0; i < messages.length; i++) {\n // const element = messages[i]\n // if (isString(element))\n // s += (s.length > 1 ? ' ' : '') + String(element)\n // else\n // return [s, ...messages.slice(i)]\n // }\n // return [s]\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-DMKWVXY7.cjs","../src/node/fs.ts"],"names":["toHumanReadableFilePath","path","p","normalize","h","process"],"mappings":"AAAA,iOAAwC,wDAAyC,wDAAyC,wDAAyC,uCCA9G,4BACA,oFACjC,SAMJA,CAAAA,CAAwBC,CAAAA,CAAc,CACpD,IAAMC,CAAAA,CAAIC,6BAAAA,CAAc,CAAA,CAClBC,CAAAA,CAAIC,iBAAAA,CAAQ,GAAA,CAAI,IAAA,CACtB,OAAID,CAAAA,EAAKF,CAAAA,CAAE,UAAA,CAAWE,CAAC,CAAA,CACd,CAAA,CAAA,EAAIF,CAAAA,CAAE,KAAA,CAAME,CAAAA,CAAE,MAAM,CAAC,CAAA,CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-DMKWVXY7.cjs","sourcesContent":[null,"import { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\nimport { dirname, join as joinPath, normalize } from 'node:path'\nimport process from 'node:process'\nimport { toUint8Array } from '../common/data/bin'\nimport { isUint8Array } from '../common/data/is'\nimport { jsonStringifySorted } from '../common/data/json'\n\n/** Try to use `~` for HOME folder if possible */\nexport function toHumanReadableFilePath(path: string) {\n const p = normalize(path)\n const h = process.env.HOME\n if (h && p.startsWith(h))\n return `~${p.slice(h.length)}`\n\n return p\n}\n\n/**\n * Tests whether a value is a valid file path. Attention! Also folders are valid file paths.\n * @deprecated\n */\nexport async function exists(path: string): Promise<boolean> {\n try {\n await stat(path)\n }\n catch (err) {\n return false\n }\n return true\n}\n\nexport async function isFile(path: string) {\n try {\n const s = await stat(path)\n return s.isFile()\n }\n catch (err) {\n return false\n }\n}\n\nexport async function isFolder(path: string) {\n try {\n const s = await stat(path)\n return s.isDirectory()\n }\n catch (err) {\n return false\n }\n}\n\nexport function isHiddenPath(path: string): boolean {\n return path.startsWith('.') || path.includes('/.')\n}\n\n/** Create missing folders e.g. `/a/b/c` will create folders `/a/b/c` */\nexport async function ensureFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (!(await isFolder(path)))\n await mkdir(path, { recursive: true })\n return path\n}\n\n/** Create missing folder to file location e.g. `/a/b/c/s.txt` will create folders `/a/b/c` */\nexport async function ensureFolderForFile(...parts: string[]): Promise<string> {\n const path = dirname(joinPath(...parts))\n if (!(await isFolder(path)))\n await mkdir(path, { recursive: true })\n return path\n}\n\nexport async function removeFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (await isFolder(path))\n await rm(path, { recursive: true })\n return path\n}\n\nexport async function readText(...parts: string[]): Promise<string | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return await readFile(path, 'utf-8')\n}\n\nexport async function readJson<T = object>(...parts: string[]): Promise<T | undefined> {\n const content = await readText(...parts)\n if (content != null) {\n try {\n return JSON.parse(content)\n }\n catch (err) { }\n }\n}\n\nexport async function readBin(...parts: string[]): Promise<Uint8Array | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return toUint8Array(await readFile(path))\n}\n\n/** @deprecated use readJson or readBin */\nexport async function readData(...parts: string[]): Promise<Uint8Array | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return await readFile(path)\n}\n\nexport async function writeText(path: string, content: string, createFolders = false): Promise<void> {\n if (createFolders)\n await ensureFolderForFile(path)\n await writeFile(path, content, 'utf-8')\n}\n\n/** @deprecated use writeBin or writeJson */\nexport async function writeData(path: string, content: object | Uint8Array, createFolders = false): Promise<void> {\n if (createFolders)\n await ensureFolderForFile(path)\n const data = isUint8Array(content) ? content : JSON.stringify(content)\n await writeFile(path, data)\n}\n\nexport async function writeBin(path: string, content: Uint8Array, info: {\n createFolders?: boolean\n} = {}): Promise<void> {\n const { createFolders = false } = info\n if (createFolders)\n await ensureFolderForFile(path)\n await writeFile(path, content)\n}\n\nexport async function writeJson<T = object>(path: string, content: T, info: {\n createFolders?: boolean\n pretty?: boolean\n} = {}): Promise<void> {\n const { createFolders = false, pretty = false } = info\n await writeText(path, jsonStringifySorted(content, pretty ? 2 : undefined), createFolders)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-DMKWVXY7.cjs","../src/node/fs.ts"],"names":["toHumanReadableFilePath","path","p","normalize","h","process"],"mappings":"AAAA,iOAAwC,wDAAyC,wDAAyC,wDAAyC,uCCA9G,4BACA,oFACjC,SAMJA,CAAAA,CAAwBC,CAAAA,CAAc,CACpD,IAAMC,CAAAA,CAAIC,6BAAAA,CAAc,CAAA,CAClBC,CAAAA,CAAIC,iBAAAA,CAAQ,GAAA,CAAI,IAAA,CACtB,OAAID,CAAAA,EAAKF,CAAAA,CAAE,UAAA,CAAWE,CAAC,CAAA,CACd,CAAA,CAAA,EAAIF,CAAAA,CAAE,KAAA,CAAME,CAAAA,CAAE,MAAM,CAAC,CAAA,CAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-DMKWVXY7.cjs","sourcesContent":[null,"import { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\nimport { dirname, join as joinPath, normalize } from 'node:path'\nimport process from 'node:process'\nimport { toUint8Array } from '../common/data/bin'\nimport { isUint8Array } from '../common/data/is'\nimport { jsonStringifySorted } from '../common/data/json'\n\n/** Try to use `~` for HOME folder if possible */\nexport function toHumanReadableFilePath(path: string) {\n const p = normalize(path)\n const h = process.env.HOME\n if (h && p.startsWith(h))\n return `~${p.slice(h.length)}`\n\n return p\n}\n\n/**\n * Tests whether a value is a valid file path. Attention! Also folders are valid file paths.\n * @deprecated\n */\nexport async function exists(path: string): Promise<boolean> {\n try {\n await stat(path)\n }\n catch (err) {\n return false\n }\n return true\n}\n\nexport async function isFile(path: string) {\n try {\n const s = await stat(path)\n return s.isFile()\n }\n catch (err) {\n return false\n }\n}\n\nexport async function isFolder(path: string) {\n try {\n const s = await stat(path)\n return s.isDirectory()\n }\n catch (err) {\n return false\n }\n}\n\nexport function isHiddenPath(path: string): boolean {\n return path.startsWith('.') || path.includes('/.')\n}\n\n/** Create missing folders e.g. `/a/b/c` will create folders `/a/b/c` */\nexport async function ensureFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (!(await isFolder(path)))\n await mkdir(path, { recursive: true })\n return path\n}\n\n/** Create missing folder to file location e.g. `/a/b/c/s.txt` will create folders `/a/b/c` */\nexport async function ensureFolderForFile(...parts: string[]): Promise<string> {\n const path = dirname(joinPath(...parts))\n if (!(await isFolder(path)))\n await mkdir(path, { recursive: true })\n return path\n}\n\nexport async function removeFolder(...parts: string[]): Promise<string> {\n const path = joinPath(...parts)\n if (await isFolder(path))\n await rm(path, { recursive: true })\n return path\n}\n\nexport async function readText(...parts: string[]): Promise<string | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return await readFile(path, 'utf-8')\n}\n\nexport async function readJson<T = object>(...parts: string[]): Promise<T | undefined> {\n const content = await readText(...parts)\n if (content != null) {\n try {\n return JSON.parse(content)\n }\n catch (err) { }\n }\n}\n\nexport async function readBin(...parts: string[]): Promise<Uint8Array | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return toUint8Array(await readFile(path))\n}\n\n/** @deprecated use readJson or readBin */\nexport async function readData(...parts: string[]): Promise<Uint8Array | undefined> {\n const path = joinPath(...parts)\n if (await isFile(path))\n return await readFile(path)\n}\n\nexport async function writeText(path: string, content: string, createFolders = false): Promise<void> {\n if (createFolders)\n await ensureFolderForFile(path)\n await writeFile(path, content, 'utf-8')\n}\n\n/** @deprecated use writeBin or writeJson */\nexport async function writeData(path: string, content: object | Uint8Array, createFolders = false): Promise<void> {\n if (createFolders)\n await ensureFolderForFile(path)\n const data = isUint8Array(content) ? content : JSON.stringify(content)\n await writeFile(path, data)\n}\n\nexport async function writeBin(path: string, content: Uint8Array, info: {\n createFolders?: boolean\n} = {}): Promise<void> {\n const { createFolders = false } = info\n if (createFolders)\n await ensureFolderForFile(path)\n await writeFile(path, content)\n}\n\nexport async function writeJson<T = object>(path: string, content: T, info: {\n createFolders?: boolean\n pretty?: boolean\n} = {}): Promise<void> {\n const { createFolders = false, pretty = false } = info\n await writeText(path, jsonStringifySorted(content, pretty ? 2 : undefined), createFolders)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-DRKHTT76.cjs","../src/common/global.ts"],"names":["_global","__name","getGlobalContext","defaultValue","gcontext","globalAny"],"mappings":"AAAA,iIAAwC,SCqB/BA,CAAAA,CAAAA,CAAiC,CACxC,EAAA,CAAI,OAAO,IAAA,CAAS,GAAA,CAClB,OAAO,IAAA,CACT,EAAA,CAAI,OAAO,MAAA,CAAW,GAAA,CACpB,OAAO,MAAA,CACT,EAAA,CAAI,OAAO,MAAA,CAAW,GAAA,CACpB,OAAO,MAAA,CACT,EAAA,CAAI,OAAO,UAAA,CAAe,GAAA,CACxB,OAAO,UAAA,CACT,MAAM,IAAI,KAAA,CAAM,gCAAgC,CAClD,CAVSC,iCAAAA,CAAAD,CAAA,SAAA,CAAA,CAaF,SAASE,CAAAA,CAAwCC,CAAAA,CAAe,CAAC,CAAA,CAAM,CAC5E,IAAMC,CAAAA,CAAWJ,CAAAA,CAAQ,CAAA,CACzB,OAAII,CAAAA,CAAS,WAAA,EAAe,IAAA,EAAA,CAC1BA,CAAAA,CAAS,WAAA,CAAcD,CAAAA,CAAAA,CAClBC,CAAAA,CAAS,WAClB,CALgBH,iCAAAA,CAAAC,CAAA,kBAAA,CAAA,CAQT,IAAMG,CAAAA,CAAY,UAAA,CAAA,6BAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-DRKHTT76.cjs","sourcesContent":[null,"/* eslint-disable no-restricted-globals */\n\n/**\n * Global context for Zeed, used for cross-module state.\n * @category Global\n */\n\n// Export the global context type so TypeDoc includes it in the docs.\nexport interface ZeedGlobalContext {\n [key: string]: any\n}\n\ndeclare global {\n interface ZeedGlobalContext {}\n}\n\ninterface ZeedGlobalIntegration {\n _zeedGlobal?: ZeedGlobalContext\n}\n\n/** Identify the right global for the environment. Might be obsolete these days, due to globalThis. */\nfunction _global(): ZeedGlobalIntegration {\n if (typeof self !== 'undefined')\n return self as ZeedGlobalIntegration\n if (typeof window !== 'undefined')\n return window as ZeedGlobalIntegration\n if (typeof global !== 'undefined')\n return global as ZeedGlobalIntegration\n if (typeof globalThis !== 'undefined')\n return globalThis as ZeedGlobalIntegration\n throw new Error('unable to locate global object')\n}\n\n/** Global object to work across module boundaries as well. Internally already used for logger and emitter. */\nexport function getGlobalContext<T = ZeedGlobalContext>(defaultValue = {}): T {\n const gcontext = _global()\n if (gcontext._zeedGlobal == null)\n gcontext._zeedGlobal = defaultValue\n return gcontext._zeedGlobal as T\n}\n\n/// Last resort hack to extend the globalThis object.\nexport const globalAny = globalThis as any\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-DRKHTT76.cjs","../src/common/global.ts"],"names":["_global","__name","getGlobalContext","defaultValue","gcontext","globalAny"],"mappings":"AAAA,iIAAwC,SCqB/BA,CAAAA,CAAAA,CAAiC,CACxC,EAAA,CAAI,OAAO,IAAA,CAAS,GAAA,CAClB,OAAO,IAAA,CACT,EAAA,CAAI,OAAO,MAAA,CAAW,GAAA,CACpB,OAAO,MAAA,CACT,EAAA,CAAI,OAAO,MAAA,CAAW,GAAA,CACpB,OAAO,MAAA,CACT,EAAA,CAAI,OAAO,UAAA,CAAe,GAAA,CACxB,OAAO,UAAA,CACT,MAAM,IAAI,KAAA,CAAM,gCAAgC,CAClD,CAVSC,iCAAAA,CAAAD,CAAA,SAAA,CAAA,CAaF,SAASE,CAAAA,CAAwCC,CAAAA,CAAe,CAAC,CAAA,CAAM,CAC5E,IAAMC,CAAAA,CAAWJ,CAAAA,CAAQ,CAAA,CACzB,OAAII,CAAAA,CAAS,WAAA,EAAe,IAAA,EAAA,CAC1BA,CAAAA,CAAS,WAAA,CAAcD,CAAAA,CAAAA,CAClBC,CAAAA,CAAS,WAClB,CALgBH,iCAAAA,CAAAC,CAAA,kBAAA,CAAA,CAQT,IAAMG,CAAAA,CAAY,UAAA,CAAA,6BAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-DRKHTT76.cjs","sourcesContent":[null,"/* eslint-disable no-restricted-globals */\n\n/**\n * Global context for Zeed, used for cross-module state.\n * @category Global\n */\n\n// Export the global context type so TypeDoc includes it in the docs.\nexport interface ZeedGlobalContext {\n [key: string]: any\n}\n\ndeclare global {\n interface ZeedGlobalContext {}\n}\n\ninterface ZeedGlobalIntegration {\n _zeedGlobal?: ZeedGlobalContext\n}\n\n/** Identify the right global for the environment. Might be obsolete these days, due to globalThis. */\nfunction _global(): ZeedGlobalIntegration {\n if (typeof self !== 'undefined')\n return self as ZeedGlobalIntegration\n if (typeof window !== 'undefined')\n return window as ZeedGlobalIntegration\n if (typeof global !== 'undefined')\n return global as ZeedGlobalIntegration\n if (typeof globalThis !== 'undefined')\n return globalThis as ZeedGlobalIntegration\n throw new Error('unable to locate global object')\n}\n\n/** Global object to work across module boundaries as well. Internally already used for logger and emitter. */\nexport function getGlobalContext<T = ZeedGlobalContext>(defaultValue = {}): T {\n const gcontext = _global()\n if (gcontext._zeedGlobal == null)\n gcontext._zeedGlobal = defaultValue\n return gcontext._zeedGlobal as T\n}\n\n/// Last resort hack to extend the globalThis object.\nexport const globalAny = globalThis as any\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-DXQHNAIL.cjs","../src/common/msg/channel.ts"],"names":["Channel","Emitter","__name","uuid","useDispose"],"mappings":"AAAA,6IAAwC,wDAAyC,wDAAyC,wDAAyC,ICgB7IA,CAAAA,WAAf,MAAA,QAA2EC,mBAM/E,qJAtBH,MAsBG,CAAAC,iCAAAA,IAAA,CAAA,SAAA,CAAA,gBACD,EAAA,CAAaC,iCAAAA,EAAK,gBAGlB,OAAA,CAAuB,CAAC,EAAA,gBAKxB,OAAA,CAAUC,iCAAAA,EAAW,KAGrB,CAAA,CAAQ,CACD,IAAA,CAAK,OAAA,CAAQ,CACpB,CACF,UAAA,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-DXQHNAIL.cjs","sourcesContent":[null,"import { useDispose } from '../dispose-defer'\nimport { uuid } from '../uuid'\nimport { Emitter } from './emitter'\n\n/** See http://developer.mozilla.org/en-US/docs/Web/API/MessageEvent */\nexport interface ChannelMessageEvent<T = any> {\n data: T\n origin?: string\n lastEventId?: string\n}\n\n/**\n * Inspired by\n * http://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\n * https://deno.com/deploy/docs/runtime-broadcast-channel\n */\nexport abstract class Channel<T = any, ContextType = Record<string, any>> extends Emitter<{\n message: (event: ChannelMessageEvent<T>) => void\n messageerror: (event: ChannelMessageEvent<T>) => void // optional\n connect: () => void // optional\n disconnect: () => void // optional\n close: () => void\n}> {\n id: string = uuid()\n\n // Put you own channel context here\n context: ContextType = {} as ContextType\n\n abstract isConnected?: boolean\n abstract postMessage(data: T): void\n\n dispose = useDispose()\n\n /** @deprecated use .dispose() */\n close() {\n void this.dispose()\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-DXQHNAIL.cjs","../src/common/msg/channel.ts"],"names":["Channel","Emitter","__name","uuid","useDispose"],"mappings":"AAAA,6IAAwC,wDAAyC,wDAAyC,wDAAyC,ICgB7IA,CAAAA,WAAf,MAAA,QAA2EC,mBAM/E,qJAtBH,MAsBG,CAAAC,iCAAAA,IAAA,CAAA,SAAA,CAAA,gBACD,EAAA,CAAaC,iCAAAA,EAAK,gBAGlB,OAAA,CAAuB,CAAC,EAAA,gBAKxB,OAAA,CAAUC,iCAAAA,EAAW,KAGrB,CAAA,CAAQ,CACD,IAAA,CAAK,OAAA,CAAQ,CACpB,CACF,UAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-DXQHNAIL.cjs","sourcesContent":[null,"import { useDispose } from '../dispose-defer'\nimport { uuid } from '../uuid'\nimport { Emitter } from './emitter'\n\n/** See http://developer.mozilla.org/en-US/docs/Web/API/MessageEvent */\nexport interface ChannelMessageEvent<T = any> {\n data: T\n origin?: string\n lastEventId?: string\n}\n\n/**\n * Inspired by\n * http://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\n * https://deno.com/deploy/docs/runtime-broadcast-channel\n */\nexport abstract class Channel<T = any, ContextType = Record<string, any>> extends Emitter<{\n message: (event: ChannelMessageEvent<T>) => void\n messageerror: (event: ChannelMessageEvent<T>) => void // optional\n connect: () => void // optional\n disconnect: () => void // optional\n close: () => void\n}> {\n id: string = uuid()\n\n // Put you own channel context here\n context: ContextType = {} as ContextType\n\n abstract isConnected?: boolean\n abstract postMessage(data: T): void\n\n dispose = useDispose()\n\n /** @deprecated use .dispose() */\n close() {\n void this.dispose()\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-ETHALF2S.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-ETHALF2S.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-ETHALF2S.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-ETHALF2S.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-FMMEBQFR.cjs","../src/common/uuid.ts"],"names":["uuidBytesLength","uuidBytes","randomUint8Array","__name","uuidB62","bytes","encodeBase62","uuidEncodeB62","uuidDecodeB62","uuid","decodeBase62","uuidB32","encodeBase32","uuidEncodeB32","uuidDecodeB32","decodeBase32","uuidv4","uuidEncodeV4","id","toHex"],"mappings":"AAAA,qOAAwC,wDAA8D,wDAA8D,wDAAyC,wDAAyC,ICOhPA,CAAAA,CAAkB,EAAA,CAUjB,SAASC,CAAAA,CAAAA,CAAwB,CACtC,OAAOC,iCAAAA,CAAgC,CACzC,CAFgBC,iCAAAA,CAAAF,CAAA,WAAA,CAAA,CAaT,SAASG,CAAAA,CAAQC,CAAAA,CAAoBJ,CAAAA,CAAU,CAAA,CAAW,CAC/D,OAAOK,iCAAAA,CAAaD,CAAO,EAAE,CAC/B,CAFgBF,iCAAAA,CAAAC,CAAA,SAAA,CAAA,CAUT,SAASG,CAAAA,CAAcF,CAAAA,CAA2B,CACvD,OAAOC,iCAAAA,CAAaD,CAAO,EAAE,CAC/B,CAFgBF,iCAAAA,CAAAI,CAAA,eAAA,CAAA,CAUT,SAASC,CAAAA,CAAcC,CAAAA,CAA0B,CACtD,OAAOC,iCAAAA,CAAaD,CAAMT,CAAe,CAC3C,CAFgBG,iCAAAA,CAAAK,CAAA,eAAA,CAAA,CAYT,SAASG,CAAAA,CAAQN,CAAAA,CAAoBJ,CAAAA,CAAU,CAAA,CAAW,CAC/D,OAAOW,iCAAAA,CAAaP,CAAO,EAAE,CAC/B,CAFgBF,iCAAAA,CAAAQ,CAAA,SAAA,CAAA,CAUT,SAASE,CAAAA,CAAcR,CAAAA,CAA2B,CACvD,OAAOO,iCAAAA,CAAaP,CAAO,EAAE,CAC/B,CAFgBF,iCAAAA,CAAAU,CAAA,eAAA,CAAA,CAUT,SAASC,CAAAA,CAAcL,CAAAA,CAA0B,CACtD,OAAOM,iCAAAA,CAAaN,CAAMT,CAAe,CAC3C,CAFgBG,iCAAAA,CAAAW,CAAA,eAAA,CAAA,CAiBT,SAASE,CAAAA,CAAAA,CAAiB,CAC/B,EAAA,CAAI,OAAO,MAAA,CAAW,GAAA,EAAe,MAAA,CAAO,UAAA,EAAc,IAAA,CACxD,OAAO,MAAA,CAAO,UAAA,CAAW,CAAA,CAG3B,IAAMX,CAAAA,CAAQH,iCAAAA,EAAmB,CAAA,CACjC,OAAAG,CAAAA,CAAM,CAAC,CAAA,CAAKA,CAAAA,CAAM,CAAC,CAAA,CAAI,EAAA,CAAQ,EAAA,CAC/BA,CAAAA,CAAM,CAAC,CAAA,CAAKA,CAAAA,CAAM,CAAC,CAAA,CAAI,EAAA,CAAQ,GAAA,CACxBY,CAAAA,CAAaZ,CAAK,CAC3B,CATgBF,iCAAAA,CAAAa,CAAA,QAAA,CAAA,CAiBT,SAASC,CAAAA,CAAaZ,CAAAA,CAA2B,CACtD,IAAMa,CAAAA,CAAKC,iCAAAA,CAAW,CAAA,CACtB,MAAO,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-FMMEBQFR.cjs","sourcesContent":[null,"import { randomUint8Array } from './crypto'\nimport { decodeBase32, decodeBase62, encodeBase32, encodeBase62 } from './data/basex'\nimport { fromHex, toHex, toUint8Array, Uint8ArrayToString } from './data/bin'\nimport { getTimestamp } from './time'\n\n// 128 bit UUID\n\nconst uuidBytesLength = 16\n\n/**\n * Generate raw UUID bytes (128 bits / 16 bytes).\n *\n * Uses a cryptographically secure random source provided by\n * `randomUint8Array`.\n *\n * @returns Uint8Array of length 16 with random bytes\n */\nexport function uuidBytes(): Uint8Array {\n return randomUint8Array(uuidBytesLength)\n}\n\n// Base62\n\n/**\n * Create a Base62-encoded UUID string from the provided bytes or a newly\n * generated random UUID. The result is a compact, URL-safe identifier.\n *\n * @param bytes - optional 16-byte Uint8Array; if omitted a new random UUID is generated\n * @returns Base62 string representation (22 characters)\n */\nexport function uuidB62(bytes: Uint8Array = uuidBytes()): string {\n return encodeBase62(bytes, 22)\n}\n\n/**\n * Encode raw UUID bytes to a Base62 string.\n *\n * @param bytes - 16-byte UUID as Uint8Array\n * @returns Base62-encoded string\n */\nexport function uuidEncodeB62(bytes: Uint8Array): string {\n return encodeBase62(bytes, 22)\n}\n\n/**\n * Decode a Base62-encoded UUID string into raw bytes.\n *\n * @param uuid - Base62 string\n * @returns 16-byte Uint8Array\n */\nexport function uuidDecodeB62(uuid: string): Uint8Array {\n return decodeBase62(uuid, uuidBytesLength)\n}\n\n// Base32\n\n/**\n * Create a Base32-encoded UUID string from bytes or a new random UUID.\n *\n * @param bytes - optional 16-byte Uint8Array; if omitted a new random UUID is generated\n * @returns Base32 string representation (26 characters)\n */\nexport function uuidB32(bytes: Uint8Array = uuidBytes()): string {\n return encodeBase32(bytes, 26)\n}\n\n/**\n * Encode raw UUID bytes to a Base32 string.\n *\n * @param bytes - 16-byte UUID as Uint8Array\n * @returns Base32-encoded string\n */\nexport function uuidEncodeB32(bytes: Uint8Array): string {\n return encodeBase32(bytes, 26)\n}\n\n/**\n * Decode a Base32-encoded UUID string into raw bytes.\n *\n * @param uuid - Base32 string\n * @returns 16-byte Uint8Array\n */\nexport function uuidDecodeB32(uuid: string): Uint8Array {\n return decodeBase32(uuid, uuidBytesLength)\n}\n\n// UUIDv4\n\n// https://stackoverflow.com/a/2117523/140927\nconst pattern = '10000000-1000-4000-8000-100000000000' // String([1e7] + -1e3 + -4e3 + -8e3 + -1e11)\n\n/**\n * Generate a UUID v4 string.\n *\n * Uses the native `crypto.randomUUID()` if available; otherwise falls back to\n * a random-based implementation using `randomUint8Array`.\n *\n * @returns UUID v4 string in standard 8-4-4-4-12 hex format\n */\nexport function uuidv4(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID != null)\n return crypto.randomUUID() // native!\n\n // Fallback: generate 16 random bytes, set version and variant bits per RFC-4122\n const bytes = randomUint8Array(16)\n bytes[6] = (bytes[6] & 0x0F) | 0x40 // version 4\n bytes[8] = (bytes[8] & 0x3F) | 0x80 // variant\n return uuidEncodeV4(bytes)\n}\n\n/**\n * Encode 16 raw bytes as a UUID v4 formatted string (hex with dashes).\n *\n * @param bytes - 16-byte Uint8Array\n * @returns UUID string (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)\n */\nexport function uuidEncodeV4(bytes: Uint8Array): string {\n const id = toHex(bytes)\n return `${id.slice(0, 8)}-${id.slice(8, 12)}-${id.slice(12, 16)}-${id.slice(16, 20)}-${id.slice(20)}` // 10000000 - 1000 - 4000 - 8000 - 100000000000\n}\n\n/**\n * Decode a UUID v4 string (hex with dashes) into raw bytes.\n *\n * @param uuid - UUID string\n * @returns 16-byte Uint8Array\n */\nexport function uuidDecodeV4(uuid: string): Uint8Array {\n return fromHex(uuid.replace(/-/g, ''))\n}\n\n// Sortable UID\n\n// https://github.com/segmentio/ksuid\n// https://pkg.go.dev/github.com/rsms/go-uuid\n\n/**\n * Sortable unique ID\n * Inspired by https://github.com/rsms/go-uuid\n *\n * Bytes 0-5: Current time in miliseconds from 2021-06-01T00:00:00Z\n * Bytes 6-15: Random\n */\n\n// 1622505600000 // new Date('2021-06-01T00:00:00Z').getTime()\nconst ReferenceDateInMS = 1600000000000\n\n// 6 bytes will stay valid until end of time: new Date(1622505600000 + 0xffffffffffff) === Date Sun Jan 01 10941 06:31:50 GMT+0100 (Central European Standard Time)\n\nfunction longToByteArray(long: number) {\n const byteArray = new Uint8Array(6)\n for (let i = 5; i >= 0; i--) {\n byteArray[i] = long & 0xFF\n long = Math.floor(long / 256)\n }\n return byteArray\n}\n\n// function byteArrayToLong(byteArray: number[]): number {\n// var value = 0\n// for (var i = byteArray.length - 1; i >= 0; i--) {\n// value = value * 256 + byteArray[i]\n// }\n// return value\n// }\n\n/**\n * Create a sortable unique identifier (SUID) as raw bytes.\n *\n * The first 6 bytes encode a millisecond timestamp offset from an internal\n * reference date to allow lexicographic sorting by creation time. The\n * remaining 10 bytes are random.\n *\n * @returns 16-byte Uint8Array where bytes 0-5 are timestamp and 6-15 are random\n */\nexport function suidBytes(): Uint8Array {\n const ms = getTimestamp() - ReferenceDateInMS\n const out = new Uint8Array(16)\n out.set(longToByteArray(ms), 0)\n out.set(randomUint8Array(10), 6)\n return out\n}\n\n/**\n * Create a sortable unique identifier (SUID) and return it encoded using the\n * currently configured UUID encoding.\n *\n * @returns encoded SUID string\n */\nexport function suid(): string {\n return uuidEncode(suidBytes())\n}\n\n/**\n * Extract the creation Date from an encoded SUID string.\n *\n * @param id - encoded SUID\n * @returns Date corresponding to the timestamp component of the SUID\n */\nexport function suidDate(id: string): Date {\n return suidBytesDate(uuidDecode(id))\n}\n\n/**\n * Extract the creation Date from raw SUID bytes.\n *\n * @param id - 16-byte SUID as Uint8Array\n * @returns Date corresponding to the timestamp encoded in bytes 0-5\n */\nexport function suidBytesDate(id: Uint8Array): Date {\n return new Date(\n ReferenceDateInMS + id.slice(0, 6).reduce((acc, byte) => acc * 256 + byte, 0),\n )\n}\n\n// 32 bit UUID\n\n/**\n * Generate a 32-bit unsigned integer from 4 random bytes.\n *\n * @returns a random 32-bit unsigned integer\n */\nexport function uuid32bit(): number {\n const bytes = randomUint8Array(4)\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n return view.getUint32(0, false)\n}\n\n// Global Settings\n\nconst mapModes = {\n base62: {\n uuid: uuidB62,\n uuidDecode: uuidDecodeB62,\n uuidEncode: uuidEncodeB62,\n },\n base32: {\n uuid: uuidB32,\n uuidDecode: uuidDecodeB32,\n uuidEncode: uuidEncodeB32,\n },\n uuidv4: {\n uuid: uuidv4,\n uuidDecode: uuidDecodeV4,\n uuidEncode: uuidEncodeV4,\n },\n test: {\n uuid: (): string => uname('test'),\n uuidDecode: (id: string): Uint8Array => toUint8Array(id),\n uuidEncode: (bin: Uint8Array): string => Uint8ArrayToString(bin),\n },\n}\n\nlet _mode: keyof typeof mapModes = 'base62'\nlet _sorted = false\n\n/**\n * Configure the default encoding and whether generated IDs should be\n * lexicographically sortable.\n *\n * @param mode - encoding mode ('base62' | 'base32' | 'uuidv4' | 'test')\n * @param sorted - when true, `uuid()` will prefer sortable SUIDs\n */\nexport function setUuidDefaultEncoding(mode?: keyof typeof mapModes, sorted = false) {\n if (mode === 'test')\n unameReset('test')\n\n _mode = mode ?? 'base62'\n _sorted = sorted\n}\n\n/**\n * Generate an identifier using the current encoding mode.\n *\n * If the default encoding is configured with `sorted=true`, this returns a\n * sortable SUID; otherwise a random UUID is returned.\n *\n * @returns encoded identifier string\n */\nexport function uuid(): string {\n return mapModes[_mode].uuid(_sorted ? suidBytes() : uuidBytes())\n}\n\n/**\n * Decode an encoded identifier according to the current encoding mode into\n * raw bytes.\n *\n * @param uuid - encoded identifier string\n * @returns raw 16-byte Uint8Array\n */\nexport function uuidDecode(uuid: string): Uint8Array {\n return mapModes[_mode].uuidDecode(uuid)\n}\n\n/**\n * Encode raw UUID bytes using the current encoding mode.\n *\n * @param bytes - 16-byte Uint8Array\n * @returns encoded identifier string\n */\nexport function uuidEncode(bytes: Uint8Array): string {\n return mapModes[_mode].uuidEncode(bytes)\n}\n\n/**\n * Validate an encoded identifier by attempting to decode it and checking\n * for the expected byte length.\n *\n * @param uuid - encoded identifier string\n * @returns true when valid and decodes to 16 bytes\n */\nexport function uuidIsValid(uuid: string): boolean {\n try {\n const bin = uuidDecode(uuid)\n return bin.length === uuidBytesLength\n }\n catch (err) {\n // log.warn('Invalid ID:', uuid)\n }\n return false\n}\n\n// Simple Counters\n\nconst _unameCounters: Record<string, number> = {}\n\n/**\n * Simple counter-based unique name generator.\n *\n * Returns strings like 'name-0', 'name-1', ... and increments an internal\n * counter per `name`.\n *\n * @param name - base name for the counter (default: 'id')\n * @returns generated unique name\n */\nexport function uname(name = 'id'): string {\n if (_unameCounters[name] == null)\n _unameCounters[name] = 0\n\n return `${name}-${_unameCounters[name]++}`\n}\n\n/** Reset the counter used by `uname` for the given name. */\nexport function unameReset(name = 'id') {\n _unameCounters[name] = 0\n}\n\nlet _qid = 0\n\n/**\n * Quick global incremental id generator.\n *\n * Returns strings like 'id-0', 'id-1', ... using a single global counter.\n */\nexport function qid(): string {\n return `id-${_qid++}`\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-FMMEBQFR.cjs","../src/common/uuid.ts"],"names":["uuidBytesLength","uuidBytes","randomUint8Array","__name","uuidB62","bytes","encodeBase62","uuidEncodeB62","uuidDecodeB62","uuid","decodeBase62","uuidB32","encodeBase32","uuidEncodeB32","uuidDecodeB32","decodeBase32","uuidv4","uuidEncodeV4","id","toHex"],"mappings":"AAAA,qOAAwC,wDAA8D,wDAA8D,wDAAyC,wDAAyC,ICOhPA,CAAAA,CAAkB,EAAA,CAUjB,SAASC,CAAAA,CAAAA,CAAwB,CACtC,OAAOC,iCAAAA,CAAgC,CACzC,CAFgBC,iCAAAA,CAAAF,CAAA,WAAA,CAAA,CAaT,SAASG,CAAAA,CAAQC,CAAAA,CAAoBJ,CAAAA,CAAU,CAAA,CAAW,CAC/D,OAAOK,iCAAAA,CAAaD,CAAO,EAAE,CAC/B,CAFgBF,iCAAAA,CAAAC,CAAA,SAAA,CAAA,CAUT,SAASG,CAAAA,CAAcF,CAAAA,CAA2B,CACvD,OAAOC,iCAAAA,CAAaD,CAAO,EAAE,CAC/B,CAFgBF,iCAAAA,CAAAI,CAAA,eAAA,CAAA,CAUT,SAASC,CAAAA,CAAcC,CAAAA,CAA0B,CACtD,OAAOC,iCAAAA,CAAaD,CAAMT,CAAe,CAC3C,CAFgBG,iCAAAA,CAAAK,CAAA,eAAA,CAAA,CAYT,SAASG,CAAAA,CAAQN,CAAAA,CAAoBJ,CAAAA,CAAU,CAAA,CAAW,CAC/D,OAAOW,iCAAAA,CAAaP,CAAO,EAAE,CAC/B,CAFgBF,iCAAAA,CAAAQ,CAAA,SAAA,CAAA,CAUT,SAASE,CAAAA,CAAcR,CAAAA,CAA2B,CACvD,OAAOO,iCAAAA,CAAaP,CAAO,EAAE,CAC/B,CAFgBF,iCAAAA,CAAAU,CAAA,eAAA,CAAA,CAUT,SAASC,CAAAA,CAAcL,CAAAA,CAA0B,CACtD,OAAOM,iCAAAA,CAAaN,CAAMT,CAAe,CAC3C,CAFgBG,iCAAAA,CAAAW,CAAA,eAAA,CAAA,CAiBT,SAASE,CAAAA,CAAAA,CAAiB,CAC/B,EAAA,CAAI,OAAO,MAAA,CAAW,GAAA,EAAe,MAAA,CAAO,UAAA,EAAc,IAAA,CACxD,OAAO,MAAA,CAAO,UAAA,CAAW,CAAA,CAG3B,IAAMX,CAAAA,CAAQH,iCAAAA,EAAmB,CAAA,CACjC,OAAAG,CAAAA,CAAM,CAAC,CAAA,CAAKA,CAAAA,CAAM,CAAC,CAAA,CAAI,EAAA,CAAQ,EAAA,CAC/BA,CAAAA,CAAM,CAAC,CAAA,CAAKA,CAAAA,CAAM,CAAC,CAAA,CAAI,EAAA,CAAQ,GAAA,CACxBY,CAAAA,CAAaZ,CAAK,CAC3B,CATgBF,iCAAAA,CAAAa,CAAA,QAAA,CAAA,CAiBT,SAASC,CAAAA,CAAaZ,CAAAA,CAA2B,CACtD,IAAMa,CAAAA,CAAKC,iCAAAA,CAAW,CAAA,CACtB,MAAO,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-FMMEBQFR.cjs","sourcesContent":[null,"import { randomUint8Array } from './crypto'\nimport { decodeBase32, decodeBase62, encodeBase32, encodeBase62 } from './data/basex'\nimport { fromHex, toHex, toUint8Array, Uint8ArrayToString } from './data/bin'\nimport { getTimestamp } from './time'\n\n// 128 bit UUID\n\nconst uuidBytesLength = 16\n\n/**\n * Generate raw UUID bytes (128 bits / 16 bytes).\n *\n * Uses a cryptographically secure random source provided by\n * `randomUint8Array`.\n *\n * @returns Uint8Array of length 16 with random bytes\n */\nexport function uuidBytes(): Uint8Array {\n return randomUint8Array(uuidBytesLength)\n}\n\n// Base62\n\n/**\n * Create a Base62-encoded UUID string from the provided bytes or a newly\n * generated random UUID. The result is a compact, URL-safe identifier.\n *\n * @param bytes - optional 16-byte Uint8Array; if omitted a new random UUID is generated\n * @returns Base62 string representation (22 characters)\n */\nexport function uuidB62(bytes: Uint8Array = uuidBytes()): string {\n return encodeBase62(bytes, 22)\n}\n\n/**\n * Encode raw UUID bytes to a Base62 string.\n *\n * @param bytes - 16-byte UUID as Uint8Array\n * @returns Base62-encoded string\n */\nexport function uuidEncodeB62(bytes: Uint8Array): string {\n return encodeBase62(bytes, 22)\n}\n\n/**\n * Decode a Base62-encoded UUID string into raw bytes.\n *\n * @param uuid - Base62 string\n * @returns 16-byte Uint8Array\n */\nexport function uuidDecodeB62(uuid: string): Uint8Array {\n return decodeBase62(uuid, uuidBytesLength)\n}\n\n// Base32\n\n/**\n * Create a Base32-encoded UUID string from bytes or a new random UUID.\n *\n * @param bytes - optional 16-byte Uint8Array; if omitted a new random UUID is generated\n * @returns Base32 string representation (26 characters)\n */\nexport function uuidB32(bytes: Uint8Array = uuidBytes()): string {\n return encodeBase32(bytes, 26)\n}\n\n/**\n * Encode raw UUID bytes to a Base32 string.\n *\n * @param bytes - 16-byte UUID as Uint8Array\n * @returns Base32-encoded string\n */\nexport function uuidEncodeB32(bytes: Uint8Array): string {\n return encodeBase32(bytes, 26)\n}\n\n/**\n * Decode a Base32-encoded UUID string into raw bytes.\n *\n * @param uuid - Base32 string\n * @returns 16-byte Uint8Array\n */\nexport function uuidDecodeB32(uuid: string): Uint8Array {\n return decodeBase32(uuid, uuidBytesLength)\n}\n\n// UUIDv4\n\n// https://stackoverflow.com/a/2117523/140927\nconst pattern = '10000000-1000-4000-8000-100000000000' // String([1e7] + -1e3 + -4e3 + -8e3 + -1e11)\n\n/**\n * Generate a UUID v4 string.\n *\n * Uses the native `crypto.randomUUID()` if available; otherwise falls back to\n * a random-based implementation using `randomUint8Array`.\n *\n * @returns UUID v4 string in standard 8-4-4-4-12 hex format\n */\nexport function uuidv4(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID != null)\n return crypto.randomUUID() // native!\n\n // Fallback: generate 16 random bytes, set version and variant bits per RFC-4122\n const bytes = randomUint8Array(16)\n bytes[6] = (bytes[6] & 0x0F) | 0x40 // version 4\n bytes[8] = (bytes[8] & 0x3F) | 0x80 // variant\n return uuidEncodeV4(bytes)\n}\n\n/**\n * Encode 16 raw bytes as a UUID v4 formatted string (hex with dashes).\n *\n * @param bytes - 16-byte Uint8Array\n * @returns UUID string (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)\n */\nexport function uuidEncodeV4(bytes: Uint8Array): string {\n const id = toHex(bytes)\n return `${id.slice(0, 8)}-${id.slice(8, 12)}-${id.slice(12, 16)}-${id.slice(16, 20)}-${id.slice(20)}` // 10000000 - 1000 - 4000 - 8000 - 100000000000\n}\n\n/**\n * Decode a UUID v4 string (hex with dashes) into raw bytes.\n *\n * @param uuid - UUID string\n * @returns 16-byte Uint8Array\n */\nexport function uuidDecodeV4(uuid: string): Uint8Array {\n return fromHex(uuid.replace(/-/g, ''))\n}\n\n// Sortable UID\n\n// https://github.com/segmentio/ksuid\n// https://pkg.go.dev/github.com/rsms/go-uuid\n\n/**\n * Sortable unique ID\n * Inspired by https://github.com/rsms/go-uuid\n *\n * Bytes 0-5: Current time in miliseconds from 2021-06-01T00:00:00Z\n * Bytes 6-15: Random\n */\n\n// 1622505600000 // new Date('2021-06-01T00:00:00Z').getTime()\nconst ReferenceDateInMS = 1600000000000\n\n// 6 bytes will stay valid until end of time: new Date(1622505600000 + 0xffffffffffff) === Date Sun Jan 01 10941 06:31:50 GMT+0100 (Central European Standard Time)\n\nfunction longToByteArray(long: number) {\n const byteArray = new Uint8Array(6)\n for (let i = 5; i >= 0; i--) {\n byteArray[i] = long & 0xFF\n long = Math.floor(long / 256)\n }\n return byteArray\n}\n\n// function byteArrayToLong(byteArray: number[]): number {\n// var value = 0\n// for (var i = byteArray.length - 1; i >= 0; i--) {\n// value = value * 256 + byteArray[i]\n// }\n// return value\n// }\n\n/**\n * Create a sortable unique identifier (SUID) as raw bytes.\n *\n * The first 6 bytes encode a millisecond timestamp offset from an internal\n * reference date to allow lexicographic sorting by creation time. The\n * remaining 10 bytes are random.\n *\n * @returns 16-byte Uint8Array where bytes 0-5 are timestamp and 6-15 are random\n */\nexport function suidBytes(): Uint8Array {\n const ms = getTimestamp() - ReferenceDateInMS\n const out = new Uint8Array(16)\n out.set(longToByteArray(ms), 0)\n out.set(randomUint8Array(10), 6)\n return out\n}\n\n/**\n * Create a sortable unique identifier (SUID) and return it encoded using the\n * currently configured UUID encoding.\n *\n * @returns encoded SUID string\n */\nexport function suid(): string {\n return uuidEncode(suidBytes())\n}\n\n/**\n * Extract the creation Date from an encoded SUID string.\n *\n * @param id - encoded SUID\n * @returns Date corresponding to the timestamp component of the SUID\n */\nexport function suidDate(id: string): Date {\n return suidBytesDate(uuidDecode(id))\n}\n\n/**\n * Extract the creation Date from raw SUID bytes.\n *\n * @param id - 16-byte SUID as Uint8Array\n * @returns Date corresponding to the timestamp encoded in bytes 0-5\n */\nexport function suidBytesDate(id: Uint8Array): Date {\n return new Date(\n ReferenceDateInMS + id.slice(0, 6).reduce((acc, byte) => acc * 256 + byte, 0),\n )\n}\n\n// 32 bit UUID\n\n/**\n * Generate a 32-bit unsigned integer from 4 random bytes.\n *\n * @returns a random 32-bit unsigned integer\n */\nexport function uuid32bit(): number {\n const bytes = randomUint8Array(4)\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n return view.getUint32(0, false)\n}\n\n// Global Settings\n\nconst mapModes = {\n base62: {\n uuid: uuidB62,\n uuidDecode: uuidDecodeB62,\n uuidEncode: uuidEncodeB62,\n },\n base32: {\n uuid: uuidB32,\n uuidDecode: uuidDecodeB32,\n uuidEncode: uuidEncodeB32,\n },\n uuidv4: {\n uuid: uuidv4,\n uuidDecode: uuidDecodeV4,\n uuidEncode: uuidEncodeV4,\n },\n test: {\n uuid: (): string => uname('test'),\n uuidDecode: (id: string): Uint8Array => toUint8Array(id),\n uuidEncode: (bin: Uint8Array): string => Uint8ArrayToString(bin),\n },\n}\n\nlet _mode: keyof typeof mapModes = 'base62'\nlet _sorted = false\n\n/**\n * Configure the default encoding and whether generated IDs should be\n * lexicographically sortable.\n *\n * @param mode - encoding mode ('base62' | 'base32' | 'uuidv4' | 'test')\n * @param sorted - when true, `uuid()` will prefer sortable SUIDs\n */\nexport function setUuidDefaultEncoding(mode?: keyof typeof mapModes, sorted = false) {\n if (mode === 'test')\n unameReset('test')\n\n _mode = mode ?? 'base62'\n _sorted = sorted\n}\n\n/**\n * Generate an identifier using the current encoding mode.\n *\n * If the default encoding is configured with `sorted=true`, this returns a\n * sortable SUID; otherwise a random UUID is returned.\n *\n * @returns encoded identifier string\n */\nexport function uuid(): string {\n return mapModes[_mode].uuid(_sorted ? suidBytes() : uuidBytes())\n}\n\n/**\n * Decode an encoded identifier according to the current encoding mode into\n * raw bytes.\n *\n * @param uuid - encoded identifier string\n * @returns raw 16-byte Uint8Array\n */\nexport function uuidDecode(uuid: string): Uint8Array {\n return mapModes[_mode].uuidDecode(uuid)\n}\n\n/**\n * Encode raw UUID bytes using the current encoding mode.\n *\n * @param bytes - 16-byte Uint8Array\n * @returns encoded identifier string\n */\nexport function uuidEncode(bytes: Uint8Array): string {\n return mapModes[_mode].uuidEncode(bytes)\n}\n\n/**\n * Validate an encoded identifier by attempting to decode it and checking\n * for the expected byte length.\n *\n * @param uuid - encoded identifier string\n * @returns true when valid and decodes to 16 bytes\n */\nexport function uuidIsValid(uuid: string): boolean {\n try {\n const bin = uuidDecode(uuid)\n return bin.length === uuidBytesLength\n }\n catch (err) {\n // log.warn('Invalid ID:', uuid)\n }\n return false\n}\n\n// Simple Counters\n\nconst _unameCounters: Record<string, number> = {}\n\n/**\n * Simple counter-based unique name generator.\n *\n * Returns strings like 'name-0', 'name-1', ... and increments an internal\n * counter per `name`.\n *\n * @param name - base name for the counter (default: 'id')\n * @returns generated unique name\n */\nexport function uname(name = 'id'): string {\n if (_unameCounters[name] == null)\n _unameCounters[name] = 0\n\n return `${name}-${_unameCounters[name]++}`\n}\n\n/** Reset the counter used by `uname` for the given name. */\nexport function unameReset(name = 'id') {\n _unameCounters[name] = 0\n}\n\nlet _qid = 0\n\n/**\n * Quick global incremental id generator.\n *\n * Returns strings like 'id-0', 'id-1', ... using a single global counter.\n */\nexport function qid(): string {\n return `id-${_qid++}`\n}\n"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKHK37DTScjs = require('./chunk-KHK37DTS.cjs');var _chunkFMMEBQFRcjs = require('./chunk-FMMEBQFR.cjs');var _chunkZEDMMWJIcjs = require('./chunk-ZEDMMWJI.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');function f(){_chunkFMMEBQFRcjs.p.call(void 0, "test"),_chunkZEDMMWJIcjs.a.call(void 0, ),_chunkKHK37DTScjs.a.call(void 0, )}_chunkP7XCQ7WVcjs.a.call(void 0, f,"setTestMode");exports.a = f;
2
- //# sourceMappingURL=chunk-5BA3O5XZ.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkLONV4KUScjs = require('./chunk-LONV4KUS.cjs');var _chunkFMMEBQFRcjs = require('./chunk-FMMEBQFR.cjs');var _chunkZEDMMWJIcjs = require('./chunk-ZEDMMWJI.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');function f(){_chunkFMMEBQFRcjs.p.call(void 0, "test"),_chunkZEDMMWJIcjs.a.call(void 0, ),_chunkLONV4KUScjs.a.call(void 0, )}_chunkP7XCQ7WVcjs.a.call(void 0, f,"setTestMode");exports.a = f;
2
+ //# sourceMappingURL=chunk-GARQAHQE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-GARQAHQE.cjs","../src/common/test.ts"],"names":["setTestMode","setUuidDefaultEncoding","setTimestampTest","setDayTest","__name"],"mappings":"AAAA,iIAAwC,wDAAyC,wDAAyC,wDAAyC,SCInJA,CAAAA,CAAAA,CAAc,CAC5BC,iCAAAA,MAA6B,CAAA,CAC7BC,iCAAAA,CAAiB,CACjBC,iCAAAA,CACF,CAJgBC,iCAAAA,CAAAJ,CAAA,aAAA,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-GARQAHQE.cjs","sourcesContent":[null,"import { setDayTest } from './data'\nimport { setTimestampTest } from './time'\nimport { setUuidDefaultEncoding } from './uuid'\n\nexport function setTestMode() {\n setUuidDefaultEncoding('test')\n setTimestampTest()\n setDayTest()\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-GFMSFYKE.cjs","../src/common/log/log-config.ts"],"names":["_LoggerFromConfig","Logger","config","name","level","isString","isNumber","__name"],"mappings":"AAAA,iIAA+C,wDAAyC,SCkBxEA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACiB,CACjB,OAAIF,CAAAA,GAAW,CAAA,CAAA,CACND,CAAAA,CAAOE,CAAAA,CAAMC,CAAK,CAAA,CACvBC,iCAAAA,CAAe,CAAA,EAAKH,CAAAA,CAAO,MAAA,CAAS,CAAA,CAC/BD,CAAAA,CAAOC,CAAAA,CAAQE,CAAK,CAAA,CACzBE,iCAAAA,CAAe,CAAA,CACVL,CAAAA,CAAOE,CAAAA,CAAMD,CAAM,CAAA,CACxB,OAAOA,CAAAA,EAAW,UAAA,CACbA,CAAAA,CACFD,CAAAA,CAAOE,CAAAA,CAAM,CAAA,CAAK,CAC3B,CAfgBI,iCAAAA,CAAAP,CAAA,mBAAA,CAAA,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-GFMSFYKE.cjs","sourcesContent":[null,"import type { LoggerInterface, LogLevelAliasType } from './log-base'\nimport { isNumber, isString } from '../data/is'\n\n/**\n * Simple log configuration for use in modular scenarios.\n *\n * `LogConfig` can be of various types:\n *\n * 1. `LoggerInterface`: Just a complete logger howeveryou like it\n * 2. `true`: The default logger on\n * 3. `string`: Logger with name\n * 4. `number`: Logger with level e.g. set to `0` to see all\n *\n * All others turn it off.\n */\nexport type LogConfig = LoggerInterface | string | number | null | undefined | boolean\n\n/** See LogConfig */\nexport function _LoggerFromConfig(\n Logger: (name?: string, level?: LogLevelAliasType) => LoggerInterface,\n config: LogConfig,\n name: string,\n level?: LogLevelAliasType,\n): LoggerInterface {\n if (config === true)\n return Logger(name, level)\n if (isString(config) && config.length > 0)\n return Logger(config, level)\n if (isNumber(config))\n return Logger(name, config)\n if (typeof config === 'function')\n return config\n return Logger(name, false)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-GFMSFYKE.cjs","../src/common/log/log-config.ts"],"names":["_LoggerFromConfig","Logger","config","name","level","isString","isNumber","__name"],"mappings":"AAAA,iIAA+C,wDAAyC,SCkBxEA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACiB,CACjB,OAAIF,CAAAA,GAAW,CAAA,CAAA,CACND,CAAAA,CAAOE,CAAAA,CAAMC,CAAK,CAAA,CACvBC,iCAAAA,CAAe,CAAA,EAAKH,CAAAA,CAAO,MAAA,CAAS,CAAA,CAC/BD,CAAAA,CAAOC,CAAAA,CAAQE,CAAK,CAAA,CACzBE,iCAAAA,CAAe,CAAA,CACVL,CAAAA,CAAOE,CAAAA,CAAMD,CAAM,CAAA,CACxB,OAAOA,CAAAA,EAAW,UAAA,CACbA,CAAAA,CACFD,CAAAA,CAAOE,CAAAA,CAAM,CAAA,CAAK,CAC3B,CAfgBI,iCAAAA,CAAAP,CAAA,mBAAA,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-GFMSFYKE.cjs","sourcesContent":[null,"import type { LoggerInterface, LogLevelAliasType } from './log-base'\nimport { isNumber, isString } from '../data/is'\n\n/**\n * Simple log configuration for use in modular scenarios.\n *\n * `LogConfig` can be of various types:\n *\n * 1. `LoggerInterface`: Just a complete logger howeveryou like it\n * 2. `true`: The default logger on\n * 3. `string`: Logger with name\n * 4. `number`: Logger with level e.g. set to `0` to see all\n *\n * All others turn it off.\n */\nexport type LogConfig = LoggerInterface | string | number | null | undefined | boolean\n\n/** See LogConfig */\nexport function _LoggerFromConfig(\n Logger: (name?: string, level?: LogLevelAliasType) => LoggerInterface,\n config: LogConfig,\n name: string,\n level?: LogLevelAliasType,\n): LoggerInterface {\n if (config === true)\n return Logger(name, level)\n if (isString(config) && config.length > 0)\n return Logger(config, level)\n if (isNumber(config))\n return Logger(name, config)\n if (typeof config === 'function')\n return config\n return Logger(name, false)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-GILR5DT5.cjs","../src/common/log/log-memory.ts"],"names":["logMessageFromCompact","m","timestamp","level","name","messages","__name","LoggerMemoryHandler","opt","filter","compact","errorTrace","maxDepth","keepAsIs","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","counter","msg","getTimestamp","objectPlain"],"mappings":"AAAA,qOAAwC,wDAAgD,wDAAyC,wDAAyC,SCK1JA,CAAAA,CAAsBC,CAAAA,CAAkC,CACtE,GAAM,CAACC,CAAAA,CAAWC,CAAAA,CAAOC,CAAAA,CAAM,GAAGC,CAAQ,CAAA,CAAIJ,CAAAA,CAC9C,MAAO,CAAE,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAAA,CAAO,IAAA,CAAAC,CAAAA,CAAM,QAAA,CAAAC,CAAS,CAC5C,CAHgBC,iCAAAA,CAAAN,CAAA,uBAAA,CAAA,CAMT,SAASO,CAAAA,CACdC,CAAAA,CAQY,CACZ,GAAM,CAAE,KAAA,CAAAL,CAAAA,CAAQ,KAAA,CAAA,CAAW,MAAA,CAAAM,CAAAA,CAAS,KAAA,CAAA,CAAW,OAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CAAO,QAAA,CAAAL,CAAAA,CAAW,CAAC,CAAA,CAAG,UAAA,CAAAM,CAAAA,CAAa,CAAA,CAAA,CAAO,QAAA,CAAAC,CAAAA,CAAW,EAAA,CAAI,QAAA,CAAAC,CAAS,CAAA,CAAIL,CAAAA,CACzHM,CAAAA,CAAmBC,iCAAAA,CAAyB,CAAA,CAC5CC,CAAAA,CAAeC,iCAAAA,CAAoB,CAAA,CAErCC,CAAAA,kBAAUV,CAAAA,CAAI,KAAA,SAAS,MAAA,CAAO,mBAAA,CAElC,OAAQW,CAAAA,EAAoB,CAG1B,EAAA,CAFI,CAACH,CAAAA,CAAaG,CAAAA,CAAI,KAAK,CAAA,EAEvB,CAACL,CAAAA,CAAiBK,CAAAA,CAAI,IAAI,CAAA,CAC5B,MAAA,CAEFA,CAAAA,CAAI,SAAA,GAAcC,iCAAAA,CAAa,CAE/B,IAAMnB,CAAAA,CAAIoB,iCAAAA,CAAYF,CAAK,CACzB,QAAA,CAAAP,CAAAA,CACA,UAAA,CAAAD,CAAAA,CACA,QAAA,CAAAE,CACF,CAAC,CAAA,CAEGH,CAAAA,GAAY,CAAA,CAAA,CACbL,CAAAA,CAAiC,IAAA,CAAK,CAACJ,CAAAA,CAAE,SAAA,CAAWA,CAAAA,CAAE,KAAA,CAAOA,CAAAA,CAAE,IAAA,CAAM,GAAGA,CAAAA,CAAE,QAAQ,CAAC,CAAA,CAEnFI,CAAAA,CAA0B,IAAA,CAAKJ,CAAC,CAAA,CAE/BiB,CAAAA,EAAW,CAAA,CACbb,CAAAA,CAAS,KAAA,CAAM,CAAA,CAEf,EAAEa,CACN,CACF,CAxCgBZ,iCAAAA,CAAAC,CAAA,qBAAA,CAAA,CAAA,6BAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-GILR5DT5.cjs","sourcesContent":[null,"import type { LogHandler, LogHandlerOptions, LogMessage, LogMessageCompact } from './log-base'\nimport { objectPlain } from '../data/object'\nimport { getTimestamp } from '../time'\nimport { useLevelFilter, useNamespaceFilter } from './log-filter'\n\nexport function logMessageFromCompact(m: LogMessageCompact): LogMessage {\n const [timestamp, level, name, ...messages] = m\n return { timestamp, level, name, messages }\n}\n\n/** Collect messages in a list. */\nexport function LoggerMemoryHandler(\n opt: LogHandlerOptions & {\n compact?: boolean\n messages: LogMessageCompact[] | LogMessage[]\n errorTrace?: boolean\n limit?: number\n maxDepth?: number\n keepAsIs?: (v: any) => boolean\n },\n): LogHandler {\n const { level = undefined, filter = undefined, compact = false, messages = [], errorTrace = false, maxDepth = 20, keepAsIs } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n\n let counter = opt.limit ?? Number.POSITIVE_INFINITY\n\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n\n msg.timestamp ??= getTimestamp()\n\n const m = objectPlain(msg, {\n maxDepth,\n errorTrace,\n keepAsIs, // : v => (v instanceof Error) || (typeof ErrorEvent !== 'undefined' && v instanceof ErrorEvent),\n })\n\n if (compact === true)\n (messages as LogMessageCompact[]).push([m.timestamp, m.level, m.name, ...m.messages])\n else\n (messages as LogMessage[]).push(m)\n\n if (counter <= 0)\n messages.shift()\n else\n --counter\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-GILR5DT5.cjs","../src/common/log/log-memory.ts"],"names":["logMessageFromCompact","m","timestamp","level","name","messages","__name","LoggerMemoryHandler","opt","filter","compact","errorTrace","maxDepth","keepAsIs","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","counter","msg","getTimestamp","objectPlain"],"mappings":"AAAA,qOAAwC,wDAAgD,wDAAyC,wDAAyC,SCK1JA,CAAAA,CAAsBC,CAAAA,CAAkC,CACtE,GAAM,CAACC,CAAAA,CAAWC,CAAAA,CAAOC,CAAAA,CAAM,GAAGC,CAAQ,CAAA,CAAIJ,CAAAA,CAC9C,MAAO,CAAE,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAAA,CAAO,IAAA,CAAAC,CAAAA,CAAM,QAAA,CAAAC,CAAS,CAC5C,CAHgBC,iCAAAA,CAAAN,CAAA,uBAAA,CAAA,CAMT,SAASO,CAAAA,CACdC,CAAAA,CAQY,CACZ,GAAM,CAAE,KAAA,CAAAL,CAAAA,CAAQ,KAAA,CAAA,CAAW,MAAA,CAAAM,CAAAA,CAAS,KAAA,CAAA,CAAW,OAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CAAO,QAAA,CAAAL,CAAAA,CAAW,CAAC,CAAA,CAAG,UAAA,CAAAM,CAAAA,CAAa,CAAA,CAAA,CAAO,QAAA,CAAAC,CAAAA,CAAW,EAAA,CAAI,QAAA,CAAAC,CAAS,CAAA,CAAIL,CAAAA,CACzHM,CAAAA,CAAmBC,iCAAAA,CAAyB,CAAA,CAC5CC,CAAAA,CAAeC,iCAAAA,CAAoB,CAAA,CAErCC,CAAAA,kBAAUV,CAAAA,CAAI,KAAA,SAAS,MAAA,CAAO,mBAAA,CAElC,OAAQW,CAAAA,EAAoB,CAG1B,EAAA,CAFI,CAACH,CAAAA,CAAaG,CAAAA,CAAI,KAAK,CAAA,EAEvB,CAACL,CAAAA,CAAiBK,CAAAA,CAAI,IAAI,CAAA,CAC5B,MAAA,CAEFA,CAAAA,CAAI,SAAA,GAAcC,iCAAAA,CAAa,CAE/B,IAAMnB,CAAAA,CAAIoB,iCAAAA,CAAYF,CAAK,CACzB,QAAA,CAAAP,CAAAA,CACA,UAAA,CAAAD,CAAAA,CACA,QAAA,CAAAE,CACF,CAAC,CAAA,CAEGH,CAAAA,GAAY,CAAA,CAAA,CACbL,CAAAA,CAAiC,IAAA,CAAK,CAACJ,CAAAA,CAAE,SAAA,CAAWA,CAAAA,CAAE,KAAA,CAAOA,CAAAA,CAAE,IAAA,CAAM,GAAGA,CAAAA,CAAE,QAAQ,CAAC,CAAA,CAEnFI,CAAAA,CAA0B,IAAA,CAAKJ,CAAC,CAAA,CAE/BiB,CAAAA,EAAW,CAAA,CACbb,CAAAA,CAAS,KAAA,CAAM,CAAA,CAEf,EAAEa,CACN,CACF,CAxCgBZ,iCAAAA,CAAAC,CAAA,qBAAA,CAAA,CAAA,6BAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-GILR5DT5.cjs","sourcesContent":[null,"import type { LogHandler, LogHandlerOptions, LogMessage, LogMessageCompact } from './log-base'\nimport { objectPlain } from '../data/object'\nimport { getTimestamp } from '../time'\nimport { useLevelFilter, useNamespaceFilter } from './log-filter'\n\nexport function logMessageFromCompact(m: LogMessageCompact): LogMessage {\n const [timestamp, level, name, ...messages] = m\n return { timestamp, level, name, messages }\n}\n\n/** Collect messages in a list. */\nexport function LoggerMemoryHandler(\n opt: LogHandlerOptions & {\n compact?: boolean\n messages: LogMessageCompact[] | LogMessage[]\n errorTrace?: boolean\n limit?: number\n maxDepth?: number\n keepAsIs?: (v: any) => boolean\n },\n): LogHandler {\n const { level = undefined, filter = undefined, compact = false, messages = [], errorTrace = false, maxDepth = 20, keepAsIs } = opt\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n\n let counter = opt.limit ?? Number.POSITIVE_INFINITY\n\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n\n msg.timestamp ??= getTimestamp()\n\n const m = objectPlain(msg, {\n maxDepth,\n errorTrace,\n keepAsIs, // : v => (v instanceof Error) || (typeof ErrorEvent !== 'undefined' && v instanceof ErrorEvent),\n })\n\n if (compact === true)\n (messages as LogMessageCompact[]).push([m.timestamp, m.level, m.name, ...m.messages])\n else\n (messages as LogMessage[]).push(m)\n\n if (counter <= 0)\n messages.shift()\n else\n --counter\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-HEYAOG5D.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-HEYAOG5D.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-HEYAOG5D.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-HEYAOG5D.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-HTEAHUXG.cjs","../src/common/data/url.ts"],"names":["toHumanReadableUrl","url","__name","RX_URL","linkifyPlainTextSimple","text","part","escapedPart","escapeHTML","RX_EMAIL","RX_SIMPLE_URL","handleUrlString","rests","urlWithoutPunctuation","openingBrackets","closingBrackets","diff","rx","urlWithoutTrailing"],"mappings":"AAAA,qOAAwC,wDAAoC,SCM5DA,CAAAA,CAAmBC,CAAAA,CAAqB,CACtD,OAAOA,CAAAA,CAAI,OAAA,CAAQ,kCAAA,CAAoC,EAAE,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAO,EAAE,CAC9E,CAFgBC,iCAAAA,CAAAF,CAAA,oBAAA,CAAA,CAMT,IAAMG,CAAAA,CAAS,+YAAA,CAGf,SAASC,CAAAA,CAAuBC,CAAAA,CAAsB,CAC3D,OAAOA,CAAAA,CACJ,KAAA,CAAMF,CAAM,CAAA,CACZ,GAAA,CAAI,CAACG,CAAAA,CAAM,CAAA,CAAA,EAAM,CAChB,IAAMC,CAAAA,CAAcC,iCAAAA,CAAe,CAAA,CACnC,OAAO,CAAA,CAAI,CAAA,CACP,CAAA,mDAAA,EAAsDD,CAAW,CAAA,EAAA,EAAKP,CAAAA,CACtEO,CACF,CAAC,CAAA,IAAA,CAAA,CACCA,CACN,CAAC,CAAA,CACA,IAAA,CAAK,EAAE,CACZ,CAZgBL,iCAAAA,CAAAE,CAAA,wBAAA,CAAA,CAgBhB,IAAMK,CAAAA,CAAW,8DAAA,CACXC,CAAAA,CAAgB,gCAAA,CAEtB,SAASC,CAAAA,CAAgBL,CAAAA,CAAsB,CAC7C,IAAIL,CAAAA,CAAMK,CAAAA,CACNM,CAAAA,CAAQ,CAAC,CAAA,CAGb,IAAMC,CAAAA,CAAwBZ,CAAAA,CAAI,OAAA,CAAQ,YAAA,CAAc,EAAE,CAAA,CAI1D,EAAA,CAHAW,CAAAA,CAAM,OAAA,CAAQX,CAAAA,CAAI,KAAA,CAAMY,CAAAA,CAAsB,MAAM,CAAC,CAAA,CAGjDZ,CAAAA,CAAI,QAAA,CAAS,KAAK,CAAA,CAAG,CAGvBA,CAAAA,CAAMY,CAAAA,CACN,IAAMC,CAAAA,CAAAA,CAAmBb,CAAAA,CAAI,KAAA,CAAM,WAAW,CAAA,EAAK,CAAC,CAAA,CAAA,CAAG,MAAA,CACjDc,CAAAA,CAAAA,CAAmBd,CAAAA,CAAI,KAAA,CAAM,WAAW,CAAA,EAAK,CAAC,CAAA,CAAA,CAAG,MAAA,CACvD,EAAA,CAAIc,CAAAA,CAAkBD,CAAAA,CAAiB,CACrC,IAAME,CAAAA,CAAOD,CAAAA,CAAkBD,CAAAA,CACzBG,CAAAA,CAAK,IAAI,MAAA,CAAO,CAAA,cAAA,EAAiBD,CAAI,CAAA,EAAA,CAAA,CAAM,GAAG,CAAA,CAC9CE,CAAAA,CAAqBjB,CAAAA,CAAI,OAAA,CAAQgB,CAAAA,CAAI,EAAE,CAAA,CAC7CL,CAAAA,CAAM,OAAA,CAAQX,CAAAA,CAAI,KAAA,CAAMiB,CAAAA,CAAmB,MAAM,CAAC,CAAA,CAClDjB,CAAAA,CAAMiB,CACR,CAEF,CAAA,KAGSjB,CAAAA,CAAI,QAAA,CAAS,GAAG,CAAA,CAClBA,CAAAA,CAAI,UAAA,CAAW,SAAS,CAAA,EAAA,CAC3BA,CAAAA,CAAM,CAAA,OAAA,EAAUY,CAAqB,CAAA,CAAA;AAmE3B","file":"/home/runner/work/zeed/zeed/dist/chunk-HTEAHUXG.cjs","sourcesContent":[null,"// https://mathiasbynens.be/demo/url-regex\n// https://gist.github.com/dperini/729294\n\nimport { escapeHTML } from './html'\n\n/// Remove scheme, www. and trailing slash for display purposes\nexport function toHumanReadableUrl(url: string): string {\n return url.replace(/^(https?:\\/\\/(www\\.)?|mailto:)/gi, '').replace(/\\/$/, '')\n}\n\n//\n\nexport const RX_URL = /((?:(?:https?|ftp):)?\\/\\/(?:\\S+@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[01])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4])|(?:(?:[a-z0-9\\u00A1-\\uFFFF][\\w\\u00A1-\\uFFFF-]{0,62})?[a-z0-9\\u00A1-\\uFFFF]\\.)+[a-z\\u00A1-\\uFFFF]{2,}\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?)/gi\n\n/** @deprecated use linkifyPlainText */\nexport function linkifyPlainTextSimple(text: string): string {\n return text\n .split(RX_URL)\n .map((part, i) => {\n const escapedPart = escapeHTML(part)\n return i % 2\n ? `<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"${escapedPart}\">${toHumanReadableUrl(\n escapedPart,\n )}</a>`\n : escapedPart\n })\n .join('')\n}\n\n// Advanced implementation that also handles email addresses and simple URLs without protocol\n\nconst RX_EMAIL = /((mailto:)?[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})/gi\nconst RX_SIMPLE_URL = /([a-zA-Z0-9]+\\.[a-zA-Z]{2,})/gi\n\nfunction handleUrlString(part: string): string {\n var url = part\n var rests = []\n\n // Remove trailing punctuation from URLs\n const urlWithoutPunctuation = url.replace(/[.,!?;:]*$/, '')\n rests.unshift(url.slice(urlWithoutPunctuation.length))\n\n // Full URL with protocol\n if (url.includes('://')) {\n\n // Remove trailing closing brackets if unbalanced\n url = urlWithoutPunctuation\n const openingBrackets = (url.match(/[\\(\\[\\{]/g) || []).length\n const closingBrackets = (url.match(/[\\)\\]\\}]/g) || []).length\n if (closingBrackets > openingBrackets) {\n const diff = closingBrackets - openingBrackets\n const rx = new RegExp(`[\\\\)\\\\]\\\\}]{0,${diff}}$`, 'g')\n const urlWithoutTrailing = url.replace(rx, '')\n rests.unshift(url.slice(urlWithoutTrailing.length))\n url = urlWithoutTrailing\n }\n\n }\n\n // Email address\n else if (url.includes('@')) {\n if (!url.startsWith('mailto:'))\n url = `mailto:${urlWithoutPunctuation}`\n }\n\n // Simple URL without protocol\n else {\n url = `https://${urlWithoutPunctuation}`\n }\n\n const escapedRest = escapeHTML(rests.join(''))\n const escapedHumanReadableUrl = escapeHTML(toHumanReadableUrl(url))\n const escapedUrl = escapeHTML(url)\n const classInsecureHttp = url.startsWith('http://') ? ' class=\"_warn\"' : ''\n return `<a target=\"_blank\" rel=\"noopener noreferrer\"${classInsecureHttp} href=\"${escapedUrl}\">${escapedHumanReadableUrl}</a>${escapedRest}`\n}\n\nvar rxJoined: RegExp | undefined = undefined\n\nexport interface LinkifyOptions {\n}\n\nexport function linkifyPlainText(text: string, options: LinkifyOptions = {}): string {\n if (rxJoined == null) {\n rxJoined = new RegExp(`((${RX_URL.source})|(${RX_EMAIL.source})|(${RX_SIMPLE_URL.source}))`, 'gi')\n } else {\n rxJoined.lastIndex = 0\n }\n\n var index = 0\n const parts: string[] = []\n\n text.replace(rxJoined, (match, ...args) => {\n const offset = args[args.length - 2]\n const leading = text.slice(index, offset) ?? ''\n parts.push(escapeHTML(leading))\n index = offset + match.length\n parts.push(handleUrlString(match))\n return match\n })\n\n return parts.join('') + escapeHTML(text.slice(index))\n}\n\n\nexport function linkifyPlainTextWithLineBreaks(text: string, options: LinkifyOptions = {}): string {\n return text.split('\\n').map(l => linkifyPlainText(l, options)).join('<br>')\n}\n\n//\n\nexport function encodeQuery(data: Record<string, any>, filterValue?: (value: any) => boolean) {\n const pairs = []\n for (let [key, value] of Object.entries(data)) {\n if (value != null) {\n if (!Array.isArray(value))\n value = [value]\n for (const v of value) {\n if (filterValue && !filterValue(v))\n continue\n else if (v == null)\n continue\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`)\n }\n }\n }\n return pairs.join('&')\n}\n\nexport function parseQuery(queryString: string) {\n const query: any = {}\n while (queryString.startsWith('?')) {\n queryString = queryString.substring(1)\n }\n const pairs = queryString.split('&')\n for (let i = 0; i < pairs.length; i++) {\n const part = pairs[i]\n const idx = part.indexOf('=')\n if (part.length === 0) continue\n const key = idx < 0 ? part : decodeURIComponent(part.substring(0, idx))\n const value = idx < 0 ? '' : decodeURIComponent(part.substring(idx + 1))\n if (query[key] != null) {\n if (!Array.isArray(query[key]))\n query[key] = [query[key]]\n query[key].push(value)\n }\n else {\n query[key] = value\n }\n }\n return query\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-HTEAHUXG.cjs","../src/common/data/url.ts"],"names":["toHumanReadableUrl","url","__name","RX_URL","linkifyPlainTextSimple","text","part","escapedPart","escapeHTML","RX_EMAIL","RX_SIMPLE_URL","handleUrlString","rests","urlWithoutPunctuation","openingBrackets","closingBrackets","diff","rx","urlWithoutTrailing"],"mappings":"AAAA,qOAAwC,wDAAoC,SCM5DA,CAAAA,CAAmBC,CAAAA,CAAqB,CACtD,OAAOA,CAAAA,CAAI,OAAA,CAAQ,kCAAA,CAAoC,EAAE,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAO,EAAE,CAC9E,CAFgBC,iCAAAA,CAAAF,CAAA,oBAAA,CAAA,CAMT,IAAMG,CAAAA,CAAS,+YAAA,CAGf,SAASC,CAAAA,CAAuBC,CAAAA,CAAsB,CAC3D,OAAOA,CAAAA,CACJ,KAAA,CAAMF,CAAM,CAAA,CACZ,GAAA,CAAI,CAACG,CAAAA,CAAM,CAAA,CAAA,EAAM,CAChB,IAAMC,CAAAA,CAAcC,iCAAAA,CAAe,CAAA,CACnC,OAAO,CAAA,CAAI,CAAA,CACP,CAAA,mDAAA,EAAsDD,CAAW,CAAA,EAAA,EAAKP,CAAAA,CACtEO,CACF,CAAC,CAAA,IAAA,CAAA,CACCA,CACN,CAAC,CAAA,CACA,IAAA,CAAK,EAAE,CACZ,CAZgBL,iCAAAA,CAAAE,CAAA,wBAAA,CAAA,CAgBhB,IAAMK,CAAAA,CAAW,8DAAA,CACXC,CAAAA,CAAgB,gCAAA,CAEtB,SAASC,CAAAA,CAAgBL,CAAAA,CAAsB,CAC7C,IAAIL,CAAAA,CAAMK,CAAAA,CACNM,CAAAA,CAAQ,CAAC,CAAA,CAGb,IAAMC,CAAAA,CAAwBZ,CAAAA,CAAI,OAAA,CAAQ,YAAA,CAAc,EAAE,CAAA,CAI1D,EAAA,CAHAW,CAAAA,CAAM,OAAA,CAAQX,CAAAA,CAAI,KAAA,CAAMY,CAAAA,CAAsB,MAAM,CAAC,CAAA,CAGjDZ,CAAAA,CAAI,QAAA,CAAS,KAAK,CAAA,CAAG,CAGvBA,CAAAA,CAAMY,CAAAA,CACN,IAAMC,CAAAA,CAAAA,CAAmBb,CAAAA,CAAI,KAAA,CAAM,WAAW,CAAA,EAAK,CAAC,CAAA,CAAA,CAAG,MAAA,CACjDc,CAAAA,CAAAA,CAAmBd,CAAAA,CAAI,KAAA,CAAM,WAAW,CAAA,EAAK,CAAC,CAAA,CAAA,CAAG,MAAA,CACvD,EAAA,CAAIc,CAAAA,CAAkBD,CAAAA,CAAiB,CACrC,IAAME,CAAAA,CAAOD,CAAAA,CAAkBD,CAAAA,CACzBG,CAAAA,CAAK,IAAI,MAAA,CAAO,CAAA,cAAA,EAAiBD,CAAI,CAAA,EAAA,CAAA,CAAM,GAAG,CAAA,CAC9CE,CAAAA,CAAqBjB,CAAAA,CAAI,OAAA,CAAQgB,CAAAA,CAAI,EAAE,CAAA,CAC7CL,CAAAA,CAAM,OAAA,CAAQX,CAAAA,CAAI,KAAA,CAAMiB,CAAAA,CAAmB,MAAM,CAAC,CAAA,CAClDjB,CAAAA,CAAMiB,CACR,CAEF,CAAA,KAGSjB,CAAAA,CAAI,QAAA,CAAS,GAAG,CAAA,CAClBA,CAAAA,CAAI,UAAA,CAAW,SAAS,CAAA,EAAA,CAC3BA,CAAAA,CAAM,CAAA,OAAA,EAAUY,CAAqB,CAAA,CAAA;AAmE3B","file":"/Users/dirk/work/github-zeed/dist/chunk-HTEAHUXG.cjs","sourcesContent":[null,"// https://mathiasbynens.be/demo/url-regex\n// https://gist.github.com/dperini/729294\n\nimport { escapeHTML } from './html'\n\n/// Remove scheme, www. and trailing slash for display purposes\nexport function toHumanReadableUrl(url: string): string {\n return url.replace(/^(https?:\\/\\/(www\\.)?|mailto:)/gi, '').replace(/\\/$/, '')\n}\n\n//\n\nexport const RX_URL = /((?:(?:https?|ftp):)?\\/\\/(?:\\S+@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[01])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4])|(?:(?:[a-z0-9\\u00A1-\\uFFFF][\\w\\u00A1-\\uFFFF-]{0,62})?[a-z0-9\\u00A1-\\uFFFF]\\.)+[a-z\\u00A1-\\uFFFF]{2,}\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?)/gi\n\n/** @deprecated use linkifyPlainText */\nexport function linkifyPlainTextSimple(text: string): string {\n return text\n .split(RX_URL)\n .map((part, i) => {\n const escapedPart = escapeHTML(part)\n return i % 2\n ? `<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"${escapedPart}\">${toHumanReadableUrl(\n escapedPart,\n )}</a>`\n : escapedPart\n })\n .join('')\n}\n\n// Advanced implementation that also handles email addresses and simple URLs without protocol\n\nconst RX_EMAIL = /((mailto:)?[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})/gi\nconst RX_SIMPLE_URL = /([a-zA-Z0-9]+\\.[a-zA-Z]{2,})/gi\n\nfunction handleUrlString(part: string): string {\n var url = part\n var rests = []\n\n // Remove trailing punctuation from URLs\n const urlWithoutPunctuation = url.replace(/[.,!?;:]*$/, '')\n rests.unshift(url.slice(urlWithoutPunctuation.length))\n\n // Full URL with protocol\n if (url.includes('://')) {\n\n // Remove trailing closing brackets if unbalanced\n url = urlWithoutPunctuation\n const openingBrackets = (url.match(/[\\(\\[\\{]/g) || []).length\n const closingBrackets = (url.match(/[\\)\\]\\}]/g) || []).length\n if (closingBrackets > openingBrackets) {\n const diff = closingBrackets - openingBrackets\n const rx = new RegExp(`[\\\\)\\\\]\\\\}]{0,${diff}}$`, 'g')\n const urlWithoutTrailing = url.replace(rx, '')\n rests.unshift(url.slice(urlWithoutTrailing.length))\n url = urlWithoutTrailing\n }\n\n }\n\n // Email address\n else if (url.includes('@')) {\n if (!url.startsWith('mailto:'))\n url = `mailto:${urlWithoutPunctuation}`\n }\n\n // Simple URL without protocol\n else {\n url = `https://${urlWithoutPunctuation}`\n }\n\n const escapedRest = escapeHTML(rests.join(''))\n const escapedHumanReadableUrl = escapeHTML(toHumanReadableUrl(url))\n const escapedUrl = escapeHTML(url)\n const classInsecureHttp = url.startsWith('http://') ? ' class=\"_warn\"' : ''\n return `<a target=\"_blank\" rel=\"noopener noreferrer\"${classInsecureHttp} href=\"${escapedUrl}\">${escapedHumanReadableUrl}</a>${escapedRest}`\n}\n\nvar rxJoined: RegExp | undefined = undefined\n\nexport interface LinkifyOptions {\n}\n\nexport function linkifyPlainText(text: string, options: LinkifyOptions = {}): string {\n if (rxJoined == null) {\n rxJoined = new RegExp(`((${RX_URL.source})|(${RX_EMAIL.source})|(${RX_SIMPLE_URL.source}))`, 'gi')\n } else {\n rxJoined.lastIndex = 0\n }\n\n var index = 0\n const parts: string[] = []\n\n text.replace(rxJoined, (match, ...args) => {\n const offset = args[args.length - 2]\n const leading = text.slice(index, offset) ?? ''\n parts.push(escapeHTML(leading))\n index = offset + match.length\n parts.push(handleUrlString(match))\n return match\n })\n\n return parts.join('') + escapeHTML(text.slice(index))\n}\n\n\nexport function linkifyPlainTextWithLineBreaks(text: string, options: LinkifyOptions = {}): string {\n return text.split('\\n').map(l => linkifyPlainText(l, options)).join('<br>')\n}\n\n//\n\nexport function encodeQuery(data: Record<string, any>, filterValue?: (value: any) => boolean) {\n const pairs = []\n for (let [key, value] of Object.entries(data)) {\n if (value != null) {\n if (!Array.isArray(value))\n value = [value]\n for (const v of value) {\n if (filterValue && !filterValue(v))\n continue\n else if (v == null)\n continue\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`)\n }\n }\n }\n return pairs.join('&')\n}\n\nexport function parseQuery(queryString: string) {\n const query: any = {}\n while (queryString.startsWith('?')) {\n queryString = queryString.substring(1)\n }\n const pairs = queryString.split('&')\n for (let i = 0; i < pairs.length; i++) {\n const part = pairs[i]\n const idx = part.indexOf('=')\n if (part.length === 0) continue\n const key = idx < 0 ? part : decodeURIComponent(part.substring(0, idx))\n const value = idx < 0 ? '' : decodeURIComponent(part.substring(idx + 1))\n if (query[key] != null) {\n if (!Array.isArray(query[key]))\n query[key] = [query[key]]\n query[key].push(value)\n }\n else {\n query[key] = value\n }\n }\n return query\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-HZC2RTNS.cjs","../src/common/data/distributed.ts"],"names":["distributedFilePath","index","maxEntriesPerFolder","names","__name"],"mappings":"AAAA,iIAAwC,SCQxBA,CAAAA,CAAoBC,CAAAA,CAAeC,CAAAA,CAA8B,GAAA,CAAgB,CAC/F,EAAA,CAAID,CAAAA,CAAQ,CAAA,CACV,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA,CAC/C,IAAME,CAAAA,CAAkB,CAAC,CAAA,CACzB,GACEA,CAAAA,CAAM,OAAA,CAAA,CAASF,CAAAA,CAAQC,CAAAA,CAAAA,CAAqB,QAAA,CAAS,CAAC,CAAA,CACtDD,CAAAA,CAAQ,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAQC,CAAmB,CAAA,CAAA,KAAA,CACvCD,CAAAA,CAAQ,CAAA,CAAA,CACjB,OAAAE,CAAAA,CAAM,OAAA,CAAQA,CAAAA,CAAM,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,CAC9BA,CACT,CAVgBC,iCAAAA,CAAAJ,CAAA,qBAAA,CAAA,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-HZC2RTNS.cjs","sourcesContent":[null,"/**\n * Distribute file, named by natural numbers, in a way that each folder only\n * contains `maxEntriesPerFolder` subfolders or files. Returns a list of\n * names, where the last one is the file name, all others are folder names.\n *\n * Example: `distributedFilePath(1003)` results in `['2', '1', '3']` which\n * could be translated to the file path `2/1/3.json`.\n */\nexport function distributedFilePath(index: number, maxEntriesPerFolder: number = 1000): string[] {\n if (index < 0)\n throw new Error('Only numbers >= 0 supported')\n const names: string[] = []\n do {\n names.unshift((index % maxEntriesPerFolder).toString())\n index = Math.floor(index / maxEntriesPerFolder)\n } while (index > 0)\n names.unshift(names.length.toString())\n return names\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-HZC2RTNS.cjs","../src/common/data/distributed.ts"],"names":["distributedFilePath","index","maxEntriesPerFolder","names","__name"],"mappings":"AAAA,iIAAwC,SCQxBA,CAAAA,CAAoBC,CAAAA,CAAeC,CAAAA,CAA8B,GAAA,CAAgB,CAC/F,EAAA,CAAID,CAAAA,CAAQ,CAAA,CACV,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA,CAC/C,IAAME,CAAAA,CAAkB,CAAC,CAAA,CACzB,GACEA,CAAAA,CAAM,OAAA,CAAA,CAASF,CAAAA,CAAQC,CAAAA,CAAAA,CAAqB,QAAA,CAAS,CAAC,CAAA,CACtDD,CAAAA,CAAQ,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAQC,CAAmB,CAAA,CAAA,KAAA,CACvCD,CAAAA,CAAQ,CAAA,CAAA,CACjB,OAAAE,CAAAA,CAAM,OAAA,CAAQA,CAAAA,CAAM,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,CAC9BA,CACT,CAVgBC,iCAAAA,CAAAJ,CAAA,qBAAA,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-HZC2RTNS.cjs","sourcesContent":[null,"/**\n * Distribute file, named by natural numbers, in a way that each folder only\n * contains `maxEntriesPerFolder` subfolders or files. Returns a list of\n * names, where the last one is the file name, all others are folder names.\n *\n * Example: `distributedFilePath(1003)` results in `['2', '1', '3']` which\n * could be translated to the file path `2/1/3.json`.\n */\nexport function distributedFilePath(index: number, maxEntriesPerFolder: number = 1000): string[] {\n if (index < 0)\n throw new Error('Only numbers >= 0 supported')\n const names: string[] = []\n do {\n names.unshift((index % maxEntriesPerFolder).toString())\n index = Math.floor(index / maxEntriesPerFolder)\n } while (index > 0)\n names.unshift(names.length.toString())\n return names\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-I5HBI6EC.cjs","../src/common/data/format.ts"],"names":["formatBytesToHumanBase1024","bytes","decimals","units","c","i","h"],"mappings":"AAAA,iIAAwC,SCCxBA,CAAAA,CAA2BC,CAAAA,CAAeC,CAAAA,CAAW,CAAA,CAAG,CAEtE,IAAMC,CAAAA,CAAQ,CAAC,OAAA,CAAS,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAK,CAAA,CAC1DC,CAAAA,CAAI,oBAAA,CACNC,CAAAA,CAAI,CAAA,CACJC,CAAAA,CAAI,CAAA,CAGR,GAAA,CAFIL,CAAAA,CAAQ,CAAA,EAAA,CACVA,CAAAA,CAAQ,CAAA,CAAA,CACHK,CAAAA,CAAIF,CAAAA,EAAKC,CAAAA,CAAIF,CAAAA,CAAM,MAAA,EAAA,CACxBG,CAAAA,CAAI,IAAA,EAAQD,CAAAA,CAAIJ,CAAAA,CACZ,CAAA,CAAAK,CAAAA,EAAKF,CAAAA,CAAAA,CAAAA,CAFuBC,CAAAA,EAAAA,CAEhC,CAGF,MAAQ,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-I5HBI6EC.cjs","sourcesContent":[null,"/** Just a simple yet fast helper. Alternatively you may use Intl formatters http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat */\nexport function formatBytesToHumanBase1024(bytes: number, decimals = 2) {\n // https://en.wikipedia.org/wiki/Orders_of_magnitude_(data)\n const units = ['bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB'] // etc\n const c = 1 / 1023 // change it to 1024 and see the diff\n let i = 0\n let h = 0\n if (bytes < 0)\n bytes = 0\n for (; h < c && i < units.length; i++) {\n h = 1024 ** i / bytes\n if (h >= c)\n break\n }\n return (`${(1 / h).toFixed(i > 0 ? decimals : 0).toLocaleString()} ${units[i]}`)\n}\n\n/** Just a simple yet fast helper. Alternatively you may use Intl formatters http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat */\nexport function formatBytesToHumanBase1000(bytes: number, decimals = 2) {\n // https://en.wikipedia.org/wiki/Orders_of_magnitude_(data)\n const units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'] // etc\n const c = 1 / 999\n let i = 0\n let h = 0\n if (bytes < 0)\n bytes = 0\n for (; h < c && i < units.length; i++) {\n h = 1000 ** i / bytes\n if (h >= c)\n break\n }\n return (`${(1 / h).toFixed(i > 0 ? decimals : 0).toLocaleString()} ${units[i]}`)\n}\n\n/** Just a simple yet fast helper. Alternatively you may use Intl formatters http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat */\nexport function formatSecondsToTime(seconds: number, separator = ':') {\n const prefix = seconds < 0 ? '-' : ''\n if (seconds < 0)\n seconds = -1 * seconds\n const h = Math.floor(seconds / 3600)\n const m = Math.floor((seconds % 3600) / 60)\n const s = Math.round(seconds % 60)\n return prefix + [h, m > 9 ? m : h ? `0${m}` : m || '0', s > 9 ? s : `0${s}`].filter(Boolean).join(separator)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-I5HBI6EC.cjs","../src/common/data/format.ts"],"names":["formatBytesToHumanBase1024","bytes","decimals","units","c","i","h"],"mappings":"AAAA,iIAAwC,SCCxBA,CAAAA,CAA2BC,CAAAA,CAAeC,CAAAA,CAAW,CAAA,CAAG,CAEtE,IAAMC,CAAAA,CAAQ,CAAC,OAAA,CAAS,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,KAAK,CAAA,CAC1DC,CAAAA,CAAI,oBAAA,CACNC,CAAAA,CAAI,CAAA,CACJC,CAAAA,CAAI,CAAA,CAGR,GAAA,CAFIL,CAAAA,CAAQ,CAAA,EAAA,CACVA,CAAAA,CAAQ,CAAA,CAAA,CACHK,CAAAA,CAAIF,CAAAA,EAAKC,CAAAA,CAAIF,CAAAA,CAAM,MAAA,EAAA,CACxBG,CAAAA,CAAI,IAAA,EAAQD,CAAAA,CAAIJ,CAAAA,CACZ,CAAA,CAAAK,CAAAA,EAAKF,CAAAA,CAAAA,CAAAA,CAFuBC,CAAAA,EAAAA,CAEhC,CAGF,MAAQ,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-I5HBI6EC.cjs","sourcesContent":[null,"/** Just a simple yet fast helper. Alternatively you may use Intl formatters http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat */\nexport function formatBytesToHumanBase1024(bytes: number, decimals = 2) {\n // https://en.wikipedia.org/wiki/Orders_of_magnitude_(data)\n const units = ['bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB'] // etc\n const c = 1 / 1023 // change it to 1024 and see the diff\n let i = 0\n let h = 0\n if (bytes < 0)\n bytes = 0\n for (; h < c && i < units.length; i++) {\n h = 1024 ** i / bytes\n if (h >= c)\n break\n }\n return (`${(1 / h).toFixed(i > 0 ? decimals : 0).toLocaleString()} ${units[i]}`)\n}\n\n/** Just a simple yet fast helper. Alternatively you may use Intl formatters http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat */\nexport function formatBytesToHumanBase1000(bytes: number, decimals = 2) {\n // https://en.wikipedia.org/wiki/Orders_of_magnitude_(data)\n const units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'] // etc\n const c = 1 / 999\n let i = 0\n let h = 0\n if (bytes < 0)\n bytes = 0\n for (; h < c && i < units.length; i++) {\n h = 1000 ** i / bytes\n if (h >= c)\n break\n }\n return (`${(1 / h).toFixed(i > 0 ? decimals : 0).toLocaleString()} ${units[i]}`)\n}\n\n/** Just a simple yet fast helper. Alternatively you may use Intl formatters http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat */\nexport function formatSecondsToTime(seconds: number, separator = ':') {\n const prefix = seconds < 0 ? '-' : ''\n if (seconds < 0)\n seconds = -1 * seconds\n const h = Math.floor(seconds / 3600)\n const m = Math.floor((seconds % 3600) / 60)\n const s = Math.round(seconds % 60)\n return prefix + [h, m > 9 ? m : h ? `0${m}` : m || '0', s > 9 ? s : `0${s}`].filter(Boolean).join(separator)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-IA2OMOCB.cjs","../src/node/env.ts"],"names":["NEWLINE","RE_INI_KEY_VAL","RE_NEWLINES","NEWLINES_MATCH","LINE","parseEnvStringAlt","src","obj","lines","match","key","value","maybeQuote","__name","parseEnvString","line","idx","keyValueArr","val","end","isDoubleQuoted","stringToPath","defaultValue","resolve","process","valueToPath","toPath","getEnvVariableRelaxed","name","env","k","v","setupEnv","options","dotenvPath","encoding","debug","envOf","fs","parsed"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-IA2OMOCB.cjs","sourcesContent":[null,"// Adopted from https://github.com/motdotla/dotenv BSD-2\n\nimport fs from 'node:fs'\nimport { resolve } from 'node:path'\nimport process from 'node:process'\n\nconst NEWLINE = '\\n'\n// eslint-disable-next-line regexp/no-super-linear-backtracking\nconst RE_INI_KEY_VAL = /^\\s*([\\w.-]+)\\s*=\\s*(.*)\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\r\\n|\\n|\\r/\n\nexport interface EnvOptions {\n /** @deprecated will probably be replaced by logLevel */\n debug?: boolean\n path?: string\n filename?: string\n encoding?: BufferEncoding\n prefix?: string\n env?: Record<string, string>\n mode?: string\n}\n\n// BSD-2-Clause License from here https://github.com/motdotla/dotenv/blob/master/lib/main.js#L12\n// eslint-disable-next-line regexp/no-super-linear-backtracking\nconst LINE = /^\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?$/gm\n\n// https://docs.docker.com/compose/how-tos/environment-variables/variable-interpolation/#env-file-syntax\nexport function parseEnvStringAlt(src: string): Record<string, string> {\n const obj: Record<string, string> = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/g, '\\n')\n\n let match\n // eslint-disable-next-line no-cond-assign\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/gm, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n// Parses src into an Object\nexport function parseEnvString(src: string) {\n const obj: Record<string, string> = {}\n\n // convert Buffers before splitting into lines and processing\n String(src)\n .split(NEWLINES_MATCH)\n\n .forEach((line, idx) => {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n\n // log.debug(\"keyValueArr\", keyValueArr)\n\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = keyValueArr[2] || ''\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === '\\'' && val[end] === '\\''\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted)\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n else {\n // remove surrounding whitespace\n val = val.trim()\n }\n obj[key] = val\n }\n // else {\n // log.debug(`did not match key and value when parsing line ${idx + 1}: ${line}`)\n // }\n })\n\n // log.debug(\"obj\", obj)\n return obj\n}\n\n/**\n * Return a path relative to the current working directory\n */\nexport function stringToPath(\n value?: string,\n defaultValue = '.',\n): string {\n return resolve(process.cwd(), value ?? defaultValue)\n}\n\nexport function valueToPath(value?: any, defaultValue = ''): string {\n if (value == null)\n value = defaultValue\n return stringToPath(String(value).trim(), defaultValue)\n}\n\nexport const toPath = valueToPath\n\nexport function getEnvVariableRelaxed(\n name: string,\n env = process.env,\n): string | undefined {\n if (env[name] != null)\n return env[name]\n name = name.toLowerCase()\n for (const [k, v] of Object.entries(env)) {\n if (k.toLowerCase() === name)\n return v\n }\n}\n\n/** Populates process.env from .env file. */\nexport function setupEnv(options: EnvOptions = {}) {\n const dotenvPath: string = options?.path ?? toPath(options?.filename ?? '.env')\n const encoding: BufferEncoding = options?.encoding ?? 'utf8'\n const debug = options?.debug || false\n\n try {\n const parsed: Record<string, string> = {}\n\n function envOf(name: string) {\n return fs.existsSync(name)\n ? parseEnvStringAlt(fs.readFileSync(name, { encoding }))\n : {}\n }\n\n Object.assign(\n parsed,\n envOf(dotenvPath),\n envOf(`${dotenvPath}.local`),\n )\n\n if (options.mode) {\n Object.assign(\n parsed,\n envOf(`${dotenvPath}.${options.mode}`),\n envOf(`${dotenvPath}.${options.mode}.local`),\n )\n }\n\n const env = options?.env ?? process.env\n\n Object.entries(parsed).forEach(([key, value]) => {\n if (typeof options?.prefix === 'string')\n key = options?.prefix + key\n\n if (!Object.prototype.hasOwnProperty.call(env, key)) {\n if (value != null)\n env[key] = value\n }\n // else {\n // log.debug(`\"${key}\" is already defined and will not be overwritten`)\n // }\n })\n return { parsed }\n }\n catch (e) {\n return { error: e }\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-IA2OMOCB.cjs","../src/node/env.ts"],"names":["NEWLINE","RE_INI_KEY_VAL","RE_NEWLINES","NEWLINES_MATCH","LINE","parseEnvStringAlt","src","obj","lines","match","key","value","maybeQuote","__name","parseEnvString","line","idx","keyValueArr","val","end","isDoubleQuoted","stringToPath","defaultValue","resolve","process","valueToPath","toPath","getEnvVariableRelaxed","name","env","k","v","setupEnv","options","dotenvPath","encoding","debug","envOf","fs","parsed"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-IA2OMOCB.cjs","sourcesContent":[null,"// Adopted from https://github.com/motdotla/dotenv BSD-2\n\nimport fs from 'node:fs'\nimport { resolve } from 'node:path'\nimport process from 'node:process'\n\nconst NEWLINE = '\\n'\n// eslint-disable-next-line regexp/no-super-linear-backtracking\nconst RE_INI_KEY_VAL = /^\\s*([\\w.-]+)\\s*=\\s*(.*)\\s*$/\nconst RE_NEWLINES = /\\\\n/g\nconst NEWLINES_MATCH = /\\r\\n|\\n|\\r/\n\nexport interface EnvOptions {\n /** @deprecated will probably be replaced by logLevel */\n debug?: boolean\n path?: string\n filename?: string\n encoding?: BufferEncoding\n prefix?: string\n env?: Record<string, string>\n mode?: string\n}\n\n// BSD-2-Clause License from here https://github.com/motdotla/dotenv/blob/master/lib/main.js#L12\n// eslint-disable-next-line regexp/no-super-linear-backtracking\nconst LINE = /^\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?$/gm\n\n// https://docs.docker.com/compose/how-tos/environment-variables/variable-interpolation/#env-file-syntax\nexport function parseEnvStringAlt(src: string): Record<string, string> {\n const obj: Record<string, string> = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/g, '\\n')\n\n let match\n // eslint-disable-next-line no-cond-assign\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/gm, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n// Parses src into an Object\nexport function parseEnvString(src: string) {\n const obj: Record<string, string> = {}\n\n // convert Buffers before splitting into lines and processing\n String(src)\n .split(NEWLINES_MATCH)\n\n .forEach((line, idx) => {\n // matching \"KEY' and 'VAL' in 'KEY=VAL'\n const keyValueArr = line.match(RE_INI_KEY_VAL)\n // matched?\n\n // log.debug(\"keyValueArr\", keyValueArr)\n\n if (keyValueArr != null) {\n const key = keyValueArr[1]\n // default undefined or missing values to empty string\n let val = keyValueArr[2] || ''\n const end = val.length - 1\n const isDoubleQuoted = val[0] === '\"' && val[end] === '\"'\n const isSingleQuoted = val[0] === '\\'' && val[end] === '\\''\n\n // if single or double quoted, remove quotes\n if (isSingleQuoted || isDoubleQuoted) {\n val = val.substring(1, end)\n\n // if double quoted, expand newlines\n if (isDoubleQuoted)\n val = val.replace(RE_NEWLINES, NEWLINE)\n }\n else {\n // remove surrounding whitespace\n val = val.trim()\n }\n obj[key] = val\n }\n // else {\n // log.debug(`did not match key and value when parsing line ${idx + 1}: ${line}`)\n // }\n })\n\n // log.debug(\"obj\", obj)\n return obj\n}\n\n/**\n * Return a path relative to the current working directory\n */\nexport function stringToPath(\n value?: string,\n defaultValue = '.',\n): string {\n return resolve(process.cwd(), value ?? defaultValue)\n}\n\nexport function valueToPath(value?: any, defaultValue = ''): string {\n if (value == null)\n value = defaultValue\n return stringToPath(String(value).trim(), defaultValue)\n}\n\nexport const toPath = valueToPath\n\nexport function getEnvVariableRelaxed(\n name: string,\n env = process.env,\n): string | undefined {\n if (env[name] != null)\n return env[name]\n name = name.toLowerCase()\n for (const [k, v] of Object.entries(env)) {\n if (k.toLowerCase() === name)\n return v\n }\n}\n\n/** Populates process.env from .env file. */\nexport function setupEnv(options: EnvOptions = {}) {\n const dotenvPath: string = options?.path ?? toPath(options?.filename ?? '.env')\n const encoding: BufferEncoding = options?.encoding ?? 'utf8'\n const debug = options?.debug || false\n\n try {\n const parsed: Record<string, string> = {}\n\n function envOf(name: string) {\n return fs.existsSync(name)\n ? parseEnvStringAlt(fs.readFileSync(name, { encoding }))\n : {}\n }\n\n Object.assign(\n parsed,\n envOf(dotenvPath),\n envOf(`${dotenvPath}.local`),\n )\n\n if (options.mode) {\n Object.assign(\n parsed,\n envOf(`${dotenvPath}.${options.mode}`),\n envOf(`${dotenvPath}.${options.mode}.local`),\n )\n }\n\n const env = options?.env ?? process.env\n\n Object.entries(parsed).forEach(([key, value]) => {\n if (typeof options?.prefix === 'string')\n key = options?.prefix + key\n\n if (!Object.prototype.hasOwnProperty.call(env, key)) {\n if (value != null)\n env[key] = value\n }\n // else {\n // log.debug(`\"${key}\" is already defined and will not be overwritten`)\n // }\n })\n return { parsed }\n }\n catch (e) {\n return { error: e }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-IJE3VBKC.cjs","../src/common/exec/throttle-debounce.ts"],"names":["throttle","callback","opt","delay","trailing","leading","timeoutID","checkpoint","visited","trailingExec","clearExistingTimeout","__name","wrapper","args","now","elapsed","exec","timeout","debounce","running","lastArguments","promisify","immediate"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-IJE3VBKC.cjs","sourcesContent":[null,"// General explaination https://css-tricks.com/debouncing-throttling-explained-examples/\n// From https://github.com/cowboy/jquery-throttle-debounce\n// And https://github.com/wuct/raf-throttle/blob/master/rafThrottle.js\n\nimport { promisify } from './promise'\n\n// const DEBUG = false\n// const log = DEBUG ? LoggerLazy('zeed:throttle', 'error') : () => {}\n\n/**\n * A special throttle implementation that tries to distribute execution\n * in an optimal way.\n *\n * **Functionality:** For UI usage the function is executed on first occasion (`leading`).\n * If more calls follow it will again be executed at end (`trailing`).\n * If the next call is inside the timeframe, it is delayed until `trailing`.\n * This avoids timewise too close calls.\n * It is possible to `cancel` the timeout and to `flush` a call, e.g. if\n * leaving UI situation where a final call is required to write data or similar.\n */\nexport function throttle<F extends (...args: any[]) => any>(\n callback: F,\n opt: {\n delay?: number\n trailing?: boolean\n leading?: boolean\n } = {},\n): F & {\n /** Stop all timers, do not exec nothing */\n cancel: () => void\n\n /** Stop all timers and execute right now. */\n immediate: (...args: Parameters<F>) => Promise<void>\n\n /** Stop all timers and execute trailing call, if exists. */\n stop: () => void\n\n dispose: () => void\n} {\n const { delay = 100, trailing = true, leading = true } = opt\n\n let timeoutID: any\n let checkpoint = 0\n let visited = 0\n let trailingExec: () => void | undefined\n\n // const debugCheckpoint = Date.now()\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID)\n timeoutID = undefined\n return true\n }\n return false\n }\n\n function wrapper(this: any, ...args: any[]) {\n const now = Date.now()\n const elapsed = now - checkpoint\n\n // function debugElapsed() {\n // const dnow = Date.now()\n // return `total ${(dnow - debugCheckpoint).toFixed(1)}ms - elapsed ${(\n // dnow - checkpoint\n // ).toFixed(1)}ms - visited ${visited}x`\n // }\n\n const exec = () => {\n visited = 0\n checkpoint = Date.now()\n callback.apply(this, args)\n }\n\n trailingExec = exec\n\n // Make sure enough time has passed since last call\n if (elapsed > delay || !timeoutID) {\n // DEBUG && log('elapsed', debugElapsed())\n\n // Leading execute once immediately\n if (leading) {\n if (elapsed > delay) {\n // DEBUG && log('🚀 leading', debugElapsed())\n exec()\n }\n else {\n ++visited // at least trigger trailing this way\n }\n }\n\n const timeout = elapsed > delay ? delay : delay - elapsed\n // log(`⏱ start timeout with ${timeout.toFixed(1)}ms`, debugElapsed())\n\n // Prepare for next round\n clearExistingTimeout()\n checkpoint = now\n\n // Delay. We should not get here if timeout has not been reached before\n timeoutID = setTimeout(() => {\n // DEBUG && log('⏱ reached timeout', debugElapsed())\n clearExistingTimeout()\n // Only execute on trailing or when visited again, but do not twice if leading\n if (trailing && (!leading || visited > 0)) {\n // DEBUG && log('🚀 trailing', debugElapsed())\n trailingExec?.()\n }\n }, timeout)\n }\n else {\n // Count visits\n ++visited\n // DEBUG && log('visited', debugElapsed())\n }\n }\n\n wrapper.cancel = clearExistingTimeout\n\n wrapper.stop = () => {\n if (clearExistingTimeout() && trailingExec)\n trailingExec()\n }\n\n wrapper.immediate = async function immediate(this: any, ...args: Parameters<F>[]) {\n clearExistingTimeout()\n checkpoint = Date.now()\n callback.apply(this, args)\n }\n\n wrapper.dispose = () => wrapper.stop()\n\n return wrapper as any\n}\n\n/**\n * Debounce fits best for filtering a large peak of events.\n * For UI event filtering throttle is probably a better choice.\n *\n * **Functionality:** It only fires after triggers pause for `delay` ms.\n */\nexport function debounce<F extends (...args: any[]) => any | Promise<any>>(\n callback: F,\n opt: {\n delay?: number\n } = {},\n): F & {\n cancel: () => void\n immediate: (...args: Parameters<F>) => Promise<void>\n dispose: () => void\n} {\n const { delay = 100 } = opt\n let timeoutID: any\n let running = false\n let lastArguments: any[] | undefined\n\n function clearExistingTimeout() {\n if (timeoutID) {\n // log('clear')\n clearTimeout(timeoutID)\n timeoutID = undefined\n }\n }\n\n async function exec() {\n try {\n clearExistingTimeout()\n if (lastArguments != null) {\n // log('exec')\n const args = [...lastArguments]\n lastArguments = undefined\n running = true\n await promisify(callback(...args))\n running = false\n // log('exec done')\n if (lastArguments != null) {\n clearExistingTimeout()\n // log('exec trigger next')\n timeoutID = setTimeout(exec, delay)\n }\n }\n }\n catch (err) { }\n }\n\n function wrapper(this: any, ...args: any[]) {\n lastArguments = [...args]\n clearExistingTimeout()\n // log('trigger')\n if (running === false)\n timeoutID = setTimeout(exec, delay)\n }\n\n async function immediate(this: any, ...args: any[]) {\n clearExistingTimeout()\n lastArguments = [...args]\n await exec()\n }\n\n wrapper.cancel = clearExistingTimeout\n wrapper.dispose = clearExistingTimeout\n wrapper.immediate = immediate\n\n return wrapper as any\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-IJE3VBKC.cjs","../src/common/exec/throttle-debounce.ts"],"names":["throttle","callback","opt","delay","trailing","leading","timeoutID","checkpoint","visited","trailingExec","clearExistingTimeout","__name","wrapper","args","now","elapsed","exec","timeout","debounce","running","lastArguments","promisify","immediate"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-IJE3VBKC.cjs","sourcesContent":[null,"// General explaination https://css-tricks.com/debouncing-throttling-explained-examples/\n// From https://github.com/cowboy/jquery-throttle-debounce\n// And https://github.com/wuct/raf-throttle/blob/master/rafThrottle.js\n\nimport { promisify } from './promise'\n\n// const DEBUG = false\n// const log = DEBUG ? LoggerLazy('zeed:throttle', 'error') : () => {}\n\n/**\n * A special throttle implementation that tries to distribute execution\n * in an optimal way.\n *\n * **Functionality:** For UI usage the function is executed on first occasion (`leading`).\n * If more calls follow it will again be executed at end (`trailing`).\n * If the next call is inside the timeframe, it is delayed until `trailing`.\n * This avoids timewise too close calls.\n * It is possible to `cancel` the timeout and to `flush` a call, e.g. if\n * leaving UI situation where a final call is required to write data or similar.\n */\nexport function throttle<F extends (...args: any[]) => any>(\n callback: F,\n opt: {\n delay?: number\n trailing?: boolean\n leading?: boolean\n } = {},\n): F & {\n /** Stop all timers, do not exec nothing */\n cancel: () => void\n\n /** Stop all timers and execute right now. */\n immediate: (...args: Parameters<F>) => Promise<void>\n\n /** Stop all timers and execute trailing call, if exists. */\n stop: () => void\n\n dispose: () => void\n} {\n const { delay = 100, trailing = true, leading = true } = opt\n\n let timeoutID: any\n let checkpoint = 0\n let visited = 0\n let trailingExec: () => void | undefined\n\n // const debugCheckpoint = Date.now()\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID)\n timeoutID = undefined\n return true\n }\n return false\n }\n\n function wrapper(this: any, ...args: any[]) {\n const now = Date.now()\n const elapsed = now - checkpoint\n\n // function debugElapsed() {\n // const dnow = Date.now()\n // return `total ${(dnow - debugCheckpoint).toFixed(1)}ms - elapsed ${(\n // dnow - checkpoint\n // ).toFixed(1)}ms - visited ${visited}x`\n // }\n\n const exec = () => {\n visited = 0\n checkpoint = Date.now()\n callback.apply(this, args)\n }\n\n trailingExec = exec\n\n // Make sure enough time has passed since last call\n if (elapsed > delay || !timeoutID) {\n // DEBUG && log('elapsed', debugElapsed())\n\n // Leading execute once immediately\n if (leading) {\n if (elapsed > delay) {\n // DEBUG && log('🚀 leading', debugElapsed())\n exec()\n }\n else {\n ++visited // at least trigger trailing this way\n }\n }\n\n const timeout = elapsed > delay ? delay : delay - elapsed\n // log(`⏱ start timeout with ${timeout.toFixed(1)}ms`, debugElapsed())\n\n // Prepare for next round\n clearExistingTimeout()\n checkpoint = now\n\n // Delay. We should not get here if timeout has not been reached before\n timeoutID = setTimeout(() => {\n // DEBUG && log('⏱ reached timeout', debugElapsed())\n clearExistingTimeout()\n // Only execute on trailing or when visited again, but do not twice if leading\n if (trailing && (!leading || visited > 0)) {\n // DEBUG && log('🚀 trailing', debugElapsed())\n trailingExec?.()\n }\n }, timeout)\n }\n else {\n // Count visits\n ++visited\n // DEBUG && log('visited', debugElapsed())\n }\n }\n\n wrapper.cancel = clearExistingTimeout\n\n wrapper.stop = () => {\n if (clearExistingTimeout() && trailingExec)\n trailingExec()\n }\n\n wrapper.immediate = async function immediate(this: any, ...args: Parameters<F>[]) {\n clearExistingTimeout()\n checkpoint = Date.now()\n callback.apply(this, args)\n }\n\n wrapper.dispose = () => wrapper.stop()\n\n return wrapper as any\n}\n\n/**\n * Debounce fits best for filtering a large peak of events.\n * For UI event filtering throttle is probably a better choice.\n *\n * **Functionality:** It only fires after triggers pause for `delay` ms.\n */\nexport function debounce<F extends (...args: any[]) => any | Promise<any>>(\n callback: F,\n opt: {\n delay?: number\n } = {},\n): F & {\n cancel: () => void\n immediate: (...args: Parameters<F>) => Promise<void>\n dispose: () => void\n} {\n const { delay = 100 } = opt\n let timeoutID: any\n let running = false\n let lastArguments: any[] | undefined\n\n function clearExistingTimeout() {\n if (timeoutID) {\n // log('clear')\n clearTimeout(timeoutID)\n timeoutID = undefined\n }\n }\n\n async function exec() {\n try {\n clearExistingTimeout()\n if (lastArguments != null) {\n // log('exec')\n const args = [...lastArguments]\n lastArguments = undefined\n running = true\n await promisify(callback(...args))\n running = false\n // log('exec done')\n if (lastArguments != null) {\n clearExistingTimeout()\n // log('exec trigger next')\n timeoutID = setTimeout(exec, delay)\n }\n }\n }\n catch (err) { }\n }\n\n function wrapper(this: any, ...args: any[]) {\n lastArguments = [...args]\n clearExistingTimeout()\n // log('trigger')\n if (running === false)\n timeoutID = setTimeout(exec, delay)\n }\n\n async function immediate(this: any, ...args: any[]) {\n clearExistingTimeout()\n lastArguments = [...args]\n await exec()\n }\n\n wrapper.cancel = clearExistingTimeout\n wrapper.dispose = clearExistingTimeout\n wrapper.immediate = immediate\n\n return wrapper as any\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-IOEXXFCL.cjs","../src/node/files.ts"],"names":["getStat","path","statSync","__name","getFingerprint","mtimeMs","size"],"mappings":"AAAA,qUAAwC,wDAAyC,wDAAyC,wBCApF,4BACR,oFACV,SAIJA,CAAAA,CAAQC,CAAAA,CAAmB,CACzC,GAAI,CACF,OAAOC,0BAAAA,CAAa,CACtB,CAAA,UACY,CAAE,CAChB,CALgBC,iCAAAA,CAAAH,CAAA,SAAA,CAAA,CAOT,SAASI,CAAAA,CAAeH,CAAAA,CAAc,CAC3C,GAAM,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAK,CAAA,kBAAIN,CAAAA,CAAQC,CAAI,CAAA,SAAK,CAAC,GAAA,CAC5C,MAAO,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-IOEXXFCL.cjs","sourcesContent":[null,"import { readdirSync, statSync } from 'node:fs'\nimport { join, resolve } from 'node:path'\nimport process from 'node:process'\nimport { isHiddenPath } from './fs'\nimport { globToRegExp } from './glob'\n\nexport function getStat(path: string): any {\n try {\n return statSync(path)\n }\n catch (err) { }\n}\n\nexport function getFingerprint(path: string) {\n const { mtimeMs, size } = getStat(path) ?? {}\n return `${path}|${mtimeMs}|${size}`\n}\n\nexport function walkSync(rootFolder: string, subFolder = '', ignoreHidden = true) {\n let resultPaths: string[] = []\n const paths = readdirSync(resolve(rootFolder, subFolder))\n if (paths != null && paths.length > 0) {\n for (let file of paths) {\n file = join(subFolder, file)\n if (ignoreHidden && isHiddenPath(file))\n continue\n const realFile = join(rootFolder, file)\n const stat = getStat(realFile)\n if (stat && stat.isDirectory())\n resultPaths = resultPaths.concat(walkSync(rootFolder, file) || [])\n else\n resultPaths.push(file)\n }\n }\n return resultPaths\n}\n\nexport function files(opt: {\n basePath?: string\n pattern?: string | RegExp\n filter?: (name: string) => boolean\n ignoreHidden?: boolean\n} = {}) {\n let {\n pattern,\n filter,\n basePath = process.cwd(),\n ignoreHidden = false,\n } = opt\n\n let paths = walkSync(basePath, '', ignoreHidden)\n\n paths = paths.filter(\n path =>\n !(ignoreHidden && (path.startsWith('.') || path.includes('/.'))),\n )\n\n if (pattern) {\n if (typeof pattern === 'string')\n pattern = globToRegExp(pattern)\n if (pattern instanceof RegExp) {\n const rx = pattern\n rx.lastIndex = 0\n paths = paths.filter(path => rx.test(path))\n }\n }\n\n if (filter)\n paths = paths.filter(filter)\n\n return paths\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-IOEXXFCL.cjs","../src/node/files.ts"],"names":["getStat","path","statSync","__name","getFingerprint","mtimeMs","size"],"mappings":"AAAA,qUAAwC,wDAAyC,wDAAyC,wBCApF,4BACR,oFACV,SAIJA,CAAAA,CAAQC,CAAAA,CAAmB,CACzC,GAAI,CACF,OAAOC,0BAAAA,CAAa,CACtB,CAAA,UACY,CAAE,CAChB,CALgBC,iCAAAA,CAAAH,CAAA,SAAA,CAAA,CAOT,SAASI,CAAAA,CAAeH,CAAAA,CAAc,CAC3C,GAAM,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAK,CAAA,kBAAIN,CAAAA,CAAQC,CAAI,CAAA,SAAK,CAAC,GAAA,CAC5C,MAAO,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-IOEXXFCL.cjs","sourcesContent":[null,"import { readdirSync, statSync } from 'node:fs'\nimport { join, resolve } from 'node:path'\nimport process from 'node:process'\nimport { isHiddenPath } from './fs'\nimport { globToRegExp } from './glob'\n\nexport function getStat(path: string): any {\n try {\n return statSync(path)\n }\n catch (err) { }\n}\n\nexport function getFingerprint(path: string) {\n const { mtimeMs, size } = getStat(path) ?? {}\n return `${path}|${mtimeMs}|${size}`\n}\n\nexport function walkSync(rootFolder: string, subFolder = '', ignoreHidden = true) {\n let resultPaths: string[] = []\n const paths = readdirSync(resolve(rootFolder, subFolder))\n if (paths != null && paths.length > 0) {\n for (let file of paths) {\n file = join(subFolder, file)\n if (ignoreHidden && isHiddenPath(file))\n continue\n const realFile = join(rootFolder, file)\n const stat = getStat(realFile)\n if (stat && stat.isDirectory())\n resultPaths = resultPaths.concat(walkSync(rootFolder, file) || [])\n else\n resultPaths.push(file)\n }\n }\n return resultPaths\n}\n\nexport function files(opt: {\n basePath?: string\n pattern?: string | RegExp\n filter?: (name: string) => boolean\n ignoreHidden?: boolean\n} = {}) {\n let {\n pattern,\n filter,\n basePath = process.cwd(),\n ignoreHidden = false,\n } = opt\n\n let paths = walkSync(basePath, '', ignoreHidden)\n\n paths = paths.filter(\n path =>\n !(ignoreHidden && (path.startsWith('.') || path.includes('/.'))),\n )\n\n if (pattern) {\n if (typeof pattern === 'string')\n pattern = globToRegExp(pattern)\n if (pattern instanceof RegExp) {\n const rx = pattern\n rx.lastIndex = 0\n paths = paths.filter(path => rx.test(path))\n }\n }\n\n if (filter)\n paths = paths.filter(filter)\n\n return paths\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-IVUEQANC.cjs","../src/common/data/is.ts"],"names":["isObject","obj","__name","isFunction","isBinaryArray","isPrimitive","isArray","isRecord","isRecordPlain","isString","isNumber","isInteger","isSafeInteger","isBoolean","isSymbol","isNullOrUndefined","isNull","isUint8Array","isNotNull","value","isEmpty","size","isNotEmpty","isValue","isTruthy"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-IVUEQANC.cjs","sourcesContent":[null,"// https://github.com/sindresorhus/is/ MIT\n// https://github.com/sindresorhus/ts-extras\n// https://github.com/sindresorhus/type-fest\n// https://github.com/antfu/utils\n\nimport { size } from './utils'\n\n// https://developer.mozilla.org/en-US/docs/Glossary/Primitive\nexport type Primitive =\n | null\n | undefined\n | string\n | number\n | boolean\n | symbol\n | bigint\n\nexport function isObject(obj: unknown): obj is object {\n return obj != null && typeof obj === 'object'\n}\n\n// eslint-disable-next-line ts/no-unsafe-function-type\nexport function isFunction(obj: unknown): obj is Function {\n return obj != null && typeof obj === 'function'\n}\n\nexport function isBinaryArray<T>(obj: unknown): obj is T {\n return (typeof Uint8Array !== 'undefined' && obj instanceof Uint8Array)\n || (typeof Uint8ClampedArray !== 'undefined' && obj instanceof Uint8ClampedArray)\n || (typeof Uint16Array !== 'undefined' && obj instanceof Uint16Array)\n || (typeof Uint32Array !== 'undefined' && obj instanceof Uint32Array)\n || (typeof Int8Array !== 'undefined' && obj instanceof Int8Array)\n || (typeof Int16Array !== 'undefined' && obj instanceof Int16Array)\n || (typeof Int32Array !== 'undefined' && obj instanceof Int32Array)\n || (typeof Float32Array !== 'undefined' && obj instanceof Float32Array)\n || (typeof Float64Array !== 'undefined' && obj instanceof Float64Array)\n || (typeof BigInt64Array !== 'undefined' && obj instanceof BigInt64Array)\n || (typeof BigUint64Array !== 'undefined' && obj instanceof BigUint64Array)\n}\n\n/** Something like number, string, boolean */\nexport function isPrimitive(obj: unknown): obj is Primitive {\n return Object(obj) !== obj\n}\n\nexport function isArray(obj: unknown): obj is Array<any> {\n return Array.isArray(obj)\n}\n\n/** Object that is not an array. But could also be an object defined by a class. */\nexport function isRecord(obj: unknown): obj is Record<string, any> {\n return isObject(obj) && !isArray(obj)\n}\n\n/** Just data, like constructed via `{...}`. */\nexport function isRecordPlain(obj: unknown): obj is Record<string, any> {\n return obj?.constructor === Object\n}\n\nexport function isString(obj: unknown): obj is string {\n return typeof obj === 'string'\n}\n\nexport function isNumber(obj: unknown): obj is number {\n return typeof obj === 'number' && !Number.isNaN(obj) // wtf! Nan === type number\n}\n\nexport function isInteger(obj: unknown): obj is number {\n return isNumber(obj) && Number.isInteger(obj)\n}\n\n/** Integer with full precision i.e. its value is in the signed 53 bit range. */\nexport function isSafeInteger(obj: unknown): obj is number {\n return isNumber(obj) && Number.isSafeInteger(obj)\n}\n\nexport function isBoolean(obj: unknown): obj is boolean {\n return typeof obj === 'boolean'\n}\n\nexport function isSymbol(obj: unknown): obj is symbol {\n return typeof obj === 'symbol'\n}\n\n/** @deprecated use `isNull` */\nexport function isNullOrUndefined(obj: unknown): obj is null | undefined {\n return obj == null\n}\n\nexport function isNull(obj: unknown): obj is null | undefined {\n return obj == null\n}\nexport function isUint8Array(obj: unknown): obj is Uint8Array {\n return isObject(obj) && obj.constructor.name === 'Uint8Array'\n}\n\n// https://stackoverflow.com/a/46700791/140927\n\n/** Not `null` or `undefined`, use like `.filter(isNotNull)` */\nexport function isNotNull<T>(value: T | null | undefined): value is T {\n return value != null\n}\n\n/** Empty means `null` or `undefined` or object, array or string without items, use like `.filter(isEmpty)` */\nexport function isEmpty<T>(value: T | null | undefined): value is T {\n return value == null || value === '' || (isObject(value) && size(value) <= 0)\n}\n\n/** Not `null` or `undefined` or object or array without items, use like `.filter(isNotEmpty)` */\nexport function isNotEmpty<T>(value: T | null | undefined): value is T {\n return !isEmpty(value)\n}\n\n/**\n * Not `null` or `undefined` or `false`, use like `.filter(isValue)`.\n * Usefull e.g. on conditional list: `[x && 'value', ...]`\n */\nexport function isValue<T>(value: T | null | undefined | boolean): value is T {\n return value != null && value !== false && value !== true // todo limit on false?\n}\n\n/**\n * Not `null` or `undefined` or `false` or empty string, use like `.filter(isValue)`.\n * Usefull e.g. on conditional list: `[x && 'value', ...]`\n */\nexport function isTruthy<T>(value: T | null | undefined | boolean): value is T {\n return value != null && value !== false && value !== 0 && value !== ''\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-IVUEQANC.cjs","../src/common/data/is.ts"],"names":["isObject","obj","__name","isFunction","isBinaryArray","isPrimitive","isArray","isRecord","isRecordPlain","isString","isNumber","isInteger","isSafeInteger","isBoolean","isSymbol","isNullOrUndefined","isNull","isUint8Array","isNotNull","value","isEmpty","size","isNotEmpty","isValue","isTruthy"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-IVUEQANC.cjs","sourcesContent":[null,"// https://github.com/sindresorhus/is/ MIT\n// https://github.com/sindresorhus/ts-extras\n// https://github.com/sindresorhus/type-fest\n// https://github.com/antfu/utils\n\nimport { size } from './utils'\n\n// https://developer.mozilla.org/en-US/docs/Glossary/Primitive\nexport type Primitive =\n | null\n | undefined\n | string\n | number\n | boolean\n | symbol\n | bigint\n\nexport function isObject(obj: unknown): obj is object {\n return obj != null && typeof obj === 'object'\n}\n\n// eslint-disable-next-line ts/no-unsafe-function-type\nexport function isFunction(obj: unknown): obj is Function {\n return obj != null && typeof obj === 'function'\n}\n\nexport function isBinaryArray<T>(obj: unknown): obj is T {\n return (typeof Uint8Array !== 'undefined' && obj instanceof Uint8Array)\n || (typeof Uint8ClampedArray !== 'undefined' && obj instanceof Uint8ClampedArray)\n || (typeof Uint16Array !== 'undefined' && obj instanceof Uint16Array)\n || (typeof Uint32Array !== 'undefined' && obj instanceof Uint32Array)\n || (typeof Int8Array !== 'undefined' && obj instanceof Int8Array)\n || (typeof Int16Array !== 'undefined' && obj instanceof Int16Array)\n || (typeof Int32Array !== 'undefined' && obj instanceof Int32Array)\n || (typeof Float32Array !== 'undefined' && obj instanceof Float32Array)\n || (typeof Float64Array !== 'undefined' && obj instanceof Float64Array)\n || (typeof BigInt64Array !== 'undefined' && obj instanceof BigInt64Array)\n || (typeof BigUint64Array !== 'undefined' && obj instanceof BigUint64Array)\n}\n\n/** Something like number, string, boolean */\nexport function isPrimitive(obj: unknown): obj is Primitive {\n return Object(obj) !== obj\n}\n\nexport function isArray(obj: unknown): obj is Array<any> {\n return Array.isArray(obj)\n}\n\n/** Object that is not an array. But could also be an object defined by a class. */\nexport function isRecord(obj: unknown): obj is Record<string, any> {\n return isObject(obj) && !isArray(obj)\n}\n\n/** Just data, like constructed via `{...}`. */\nexport function isRecordPlain(obj: unknown): obj is Record<string, any> {\n return obj?.constructor === Object\n}\n\nexport function isString(obj: unknown): obj is string {\n return typeof obj === 'string'\n}\n\nexport function isNumber(obj: unknown): obj is number {\n return typeof obj === 'number' && !Number.isNaN(obj) // wtf! Nan === type number\n}\n\nexport function isInteger(obj: unknown): obj is number {\n return isNumber(obj) && Number.isInteger(obj)\n}\n\n/** Integer with full precision i.e. its value is in the signed 53 bit range. */\nexport function isSafeInteger(obj: unknown): obj is number {\n return isNumber(obj) && Number.isSafeInteger(obj)\n}\n\nexport function isBoolean(obj: unknown): obj is boolean {\n return typeof obj === 'boolean'\n}\n\nexport function isSymbol(obj: unknown): obj is symbol {\n return typeof obj === 'symbol'\n}\n\n/** @deprecated use `isNull` */\nexport function isNullOrUndefined(obj: unknown): obj is null | undefined {\n return obj == null\n}\n\nexport function isNull(obj: unknown): obj is null | undefined {\n return obj == null\n}\nexport function isUint8Array(obj: unknown): obj is Uint8Array {\n return isObject(obj) && obj.constructor.name === 'Uint8Array'\n}\n\n// https://stackoverflow.com/a/46700791/140927\n\n/** Not `null` or `undefined`, use like `.filter(isNotNull)` */\nexport function isNotNull<T>(value: T | null | undefined): value is T {\n return value != null\n}\n\n/** Empty means `null` or `undefined` or object, array or string without items, use like `.filter(isEmpty)` */\nexport function isEmpty<T>(value: T | null | undefined): value is T {\n return value == null || value === '' || (isObject(value) && size(value) <= 0)\n}\n\n/** Not `null` or `undefined` or object or array without items, use like `.filter(isNotEmpty)` */\nexport function isNotEmpty<T>(value: T | null | undefined): value is T {\n return !isEmpty(value)\n}\n\n/**\n * Not `null` or `undefined` or `false`, use like `.filter(isValue)`.\n * Usefull e.g. on conditional list: `[x && 'value', ...]`\n */\nexport function isValue<T>(value: T | null | undefined | boolean): value is T {\n return value != null && value !== false && value !== true // todo limit on false?\n}\n\n/**\n * Not `null` or `undefined` or `false` or empty string, use like `.filter(isValue)`.\n * Usefull e.g. on conditional list: `[x && 'value', ...]`\n */\nexport function isTruthy<T>(value: T | null | undefined | boolean): value is T {\n return value != null && value !== false && value !== 0 && value !== ''\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-IXH5D35S.cjs","../src/common/data/utils.ts"],"names":["ensureKey","obj","key","createFn","value","__name","ensureKeyAsync","size","first","array","last","empty","err","cloneObject","jsonStringifySafe","cloneJsonObject","memoize","fn","cache","n","result","memoizeAsync","forTimes","count","i"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-IXH5D35S.cjs","sourcesContent":[null,"import type { Json } from '../types'\nimport { jsonStringifySafe } from './json'\n\n/**\n * Call a create function if key does not yet exist on an object. Returns the found or created object. Example:\n *\n * ```js\n * function createRoom(room, rooms) { return new Room() }\n * ensureKey(rooms, room, createRoom).enter()\n * ```\n */\nexport function ensureKey<T>(\n obj: Record<string, T>,\n key: string,\n createFn: (key?: string, obj?: Record<string, T>) => T,\n): T {\n let value = obj[key]\n if (value === undefined) {\n value = createFn(key, obj)\n obj[key] = value\n }\n return value\n}\n\n/**\n * Call a create function if key does not yet exist on an object. Returns the found or created object. Example:\n *\n * ```js\n * async function fetchItem(id, cache) { ... }\n * let data = await ensureKey(cache, id, fetchItem)\n * ```\n */\nexport async function ensureKeyAsync<T>(\n obj: Record<string, T>,\n key: string,\n createFn: (key?: string, obj?: Record<string, T>) => Promise<T>,\n): Promise<T> {\n let value = obj[key]\n if (value === undefined) {\n value = await createFn(key, obj)\n obj[key] = value\n }\n return value\n}\n\n/**\n * Returns the size of an object, array, string or similar. For example:\n */\nexport function size(obj: any) {\n if (obj != null) {\n if (obj.size != null)\n return obj.size\n\n if (obj.length != null)\n return obj.length\n\n return Object.keys(obj).length\n }\n return 0\n}\n\nexport function first<T>(array?: T[]): T | undefined {\n return (array != null && array.length > 0) ? array[0] : undefined\n}\n\nexport function last<T>(array?: T[]): T | undefined {\n return (array != null && array.length > 0) ? array[array.length - 1] : undefined\n}\n\n// True for [], {}, \"\", Map(), Set() and all primitives\nexport function empty(value: any): boolean {\n try {\n if (value != null) {\n if (Array.isArray(value))\n return value.length <= 0\n else if (typeof value === 'string')\n return value.length <= 0\n else if (value?.size != null)\n return value.size <= 0\n else\n return Object.keys(value).length <= 0\n }\n }\n catch (err) {\n console.warn('Failed to check if empty for', value, err)\n }\n return true\n}\n\n// Also see common/data/deep.ts\nexport function cloneObject<T>(obj: T): T {\n // Primitives are immutable anyway\n if (Object(obj) !== obj)\n return obj\n\n // Rude but very efficient way to clone\n return JSON.parse(jsonStringifySafe(obj))\n}\n\n// export const cloneObject = typeof structuredClone !== 'undefined' ? structuredClone : _cloneObject\n\n// Also see common/data/deep.ts\nexport function cloneJsonObject<T = Json>(obj: T): T {\n // Primitives are immutable anyway\n if (Object(obj) !== obj)\n return obj\n\n // Rude but very efficient way to clone\n return JSON.parse(jsonStringifySafe(obj))\n}\n\n// export function cloneStructuredObject<T>(obj: T): T {\n// // Primitives are immutable anyway\n// if (Object(obj) !== obj) return obj\n\n// // https://developer.mozilla.org/en-US/docs/Web/API/structuredClone\n// // @ts-ignore\n// return typeof structuredClone !== \"undefined\"\n// ? // @ts-ignore\n// structuredClone(obj)\n// : // Rude but very efficient way to clone\n// JSON.parse(JSON.stringify(obj))\n// }\n\n/**\n * Cache result of a function. Same arguments have to always return the same result in order to get expected optimization!\n *\n * ```\n * const square = memoize((value) => value * value)`\n * square(2) // == 2\n * ```\n */\nexport function memoize<In, Out>(fn: (arg: In) => Out): (arg: In) => Out {\n const cache = new Map<In, Out>()\n return (n: In): Out => {\n if (cache.has(n))\n return cache.get(n)!\n const result = fn(n)\n cache.set(n, result)\n return result\n }\n}\n\nexport function memoizeAsync<In extends any[], Out extends Promise<any>>(fn: (...arg: In) => Out): (...arg: In) => Promise<Out> {\n const cache = new Map<string, Out>()\n return async (...n: In): Promise<Out> => {\n const key = jsonStringifySafe(n)\n if (cache.has(key))\n return cache.get(key)!\n\n const result = await fn(...n)\n cache.set(key, result)\n return result\n }\n}\n\n// let cacheMemoizeDomain: any\n\n// /**\n// * Same as `memoize` but does not require global const.\n// */\n// export function memoizeDomain<In, Out>(domain: string, fn: (arg: In) => Out): (arg: In) => Out {\n// if (cacheMemoizeDomain == null)\n// cacheMemoizeDomain = new Map<string, Map<In, Out>>()\n// if (!cacheMemoizeDomain.has(domain))\n// cacheMemoizeDomain.set(domain, new Map())\n// const cache = cacheMemoizeDomain.get(domain)\n// return (n: In): Out => {\n// if (cache.has(n))\n// return cache.get(n)!\n// const result = fn(n)\n// cache.set(n, result)\n// return result\n// }\n// }\n\n// export default function memoizeMultiArguments<T extends Function>(func: T) {\n// const cache = new Map()\n\n// const memoized = function (...args: any[]) {\n// let innerCache = cache\n\n// // first layer of the map is the arguments length\n// // if two calls have different number of arguments\n// // then they cannot be the same call\n// if (!innerCache.has(args.length))\n// innerCache.set(args.length, new Map())\n\n// innerCache = innerCache.get(args.length)\n\n// // using args.length because func.length is 0 for variadic functions\n// for (let i = 0; i < args.length - 1; i++) {\n// const key = args[i]\n// if (!innerCache.has(key))\n// innerCache.set(key, new Map())\n\n// innerCache = innerCache.get(key)\n// }\n\n// const key = args[args.length - 1]\n// if (innerCache.has(key))\n// return innerCache.get(key)\n\n// const result = func(...args)\n// innerCache.set(key, result)\n// return result\n// }\n\n// return memoized\n// }\n\n/** Repeat `count` times. Starts with `0` */\nexport function forTimes<T = undefined>(\n count: number,\n fn: (i: number, count: number) => T,\n): T[] {\n const result = []\n for (let i = 0; i < count; i++)\n result.push(fn(i, count))\n\n return result\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-IXH5D35S.cjs","../src/common/data/utils.ts"],"names":["ensureKey","obj","key","createFn","value","__name","ensureKeyAsync","size","first","array","last","empty","err","cloneObject","jsonStringifySafe","cloneJsonObject","memoize","fn","cache","n","result","memoizeAsync","forTimes","count","i"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-IXH5D35S.cjs","sourcesContent":[null,"import type { Json } from '../types'\nimport { jsonStringifySafe } from './json'\n\n/**\n * Call a create function if key does not yet exist on an object. Returns the found or created object. Example:\n *\n * ```js\n * function createRoom(room, rooms) { return new Room() }\n * ensureKey(rooms, room, createRoom).enter()\n * ```\n */\nexport function ensureKey<T>(\n obj: Record<string, T>,\n key: string,\n createFn: (key?: string, obj?: Record<string, T>) => T,\n): T {\n let value = obj[key]\n if (value === undefined) {\n value = createFn(key, obj)\n obj[key] = value\n }\n return value\n}\n\n/**\n * Call a create function if key does not yet exist on an object. Returns the found or created object. Example:\n *\n * ```js\n * async function fetchItem(id, cache) { ... }\n * let data = await ensureKey(cache, id, fetchItem)\n * ```\n */\nexport async function ensureKeyAsync<T>(\n obj: Record<string, T>,\n key: string,\n createFn: (key?: string, obj?: Record<string, T>) => Promise<T>,\n): Promise<T> {\n let value = obj[key]\n if (value === undefined) {\n value = await createFn(key, obj)\n obj[key] = value\n }\n return value\n}\n\n/**\n * Returns the size of an object, array, string or similar. For example:\n */\nexport function size(obj: any) {\n if (obj != null) {\n if (obj.size != null)\n return obj.size\n\n if (obj.length != null)\n return obj.length\n\n return Object.keys(obj).length\n }\n return 0\n}\n\nexport function first<T>(array?: T[]): T | undefined {\n return (array != null && array.length > 0) ? array[0] : undefined\n}\n\nexport function last<T>(array?: T[]): T | undefined {\n return (array != null && array.length > 0) ? array[array.length - 1] : undefined\n}\n\n// True for [], {}, \"\", Map(), Set() and all primitives\nexport function empty(value: any): boolean {\n try {\n if (value != null) {\n if (Array.isArray(value))\n return value.length <= 0\n else if (typeof value === 'string')\n return value.length <= 0\n else if (value?.size != null)\n return value.size <= 0\n else\n return Object.keys(value).length <= 0\n }\n }\n catch (err) {\n console.warn('Failed to check if empty for', value, err)\n }\n return true\n}\n\n// Also see common/data/deep.ts\nexport function cloneObject<T>(obj: T): T {\n // Primitives are immutable anyway\n if (Object(obj) !== obj)\n return obj\n\n // Rude but very efficient way to clone\n return JSON.parse(jsonStringifySafe(obj))\n}\n\n// export const cloneObject = typeof structuredClone !== 'undefined' ? structuredClone : _cloneObject\n\n// Also see common/data/deep.ts\nexport function cloneJsonObject<T = Json>(obj: T): T {\n // Primitives are immutable anyway\n if (Object(obj) !== obj)\n return obj\n\n // Rude but very efficient way to clone\n return JSON.parse(jsonStringifySafe(obj))\n}\n\n// export function cloneStructuredObject<T>(obj: T): T {\n// // Primitives are immutable anyway\n// if (Object(obj) !== obj) return obj\n\n// // https://developer.mozilla.org/en-US/docs/Web/API/structuredClone\n// // @ts-ignore\n// return typeof structuredClone !== \"undefined\"\n// ? // @ts-ignore\n// structuredClone(obj)\n// : // Rude but very efficient way to clone\n// JSON.parse(JSON.stringify(obj))\n// }\n\n/**\n * Cache result of a function. Same arguments have to always return the same result in order to get expected optimization!\n *\n * ```\n * const square = memoize((value) => value * value)`\n * square(2) // == 2\n * ```\n */\nexport function memoize<In, Out>(fn: (arg: In) => Out): (arg: In) => Out {\n const cache = new Map<In, Out>()\n return (n: In): Out => {\n if (cache.has(n))\n return cache.get(n)!\n const result = fn(n)\n cache.set(n, result)\n return result\n }\n}\n\nexport function memoizeAsync<In extends any[], Out extends Promise<any>>(fn: (...arg: In) => Out): (...arg: In) => Promise<Out> {\n const cache = new Map<string, Out>()\n return async (...n: In): Promise<Out> => {\n const key = jsonStringifySafe(n)\n if (cache.has(key))\n return cache.get(key)!\n\n const result = await fn(...n)\n cache.set(key, result)\n return result\n }\n}\n\n// let cacheMemoizeDomain: any\n\n// /**\n// * Same as `memoize` but does not require global const.\n// */\n// export function memoizeDomain<In, Out>(domain: string, fn: (arg: In) => Out): (arg: In) => Out {\n// if (cacheMemoizeDomain == null)\n// cacheMemoizeDomain = new Map<string, Map<In, Out>>()\n// if (!cacheMemoizeDomain.has(domain))\n// cacheMemoizeDomain.set(domain, new Map())\n// const cache = cacheMemoizeDomain.get(domain)\n// return (n: In): Out => {\n// if (cache.has(n))\n// return cache.get(n)!\n// const result = fn(n)\n// cache.set(n, result)\n// return result\n// }\n// }\n\n// export default function memoizeMultiArguments<T extends Function>(func: T) {\n// const cache = new Map()\n\n// const memoized = function (...args: any[]) {\n// let innerCache = cache\n\n// // first layer of the map is the arguments length\n// // if two calls have different number of arguments\n// // then they cannot be the same call\n// if (!innerCache.has(args.length))\n// innerCache.set(args.length, new Map())\n\n// innerCache = innerCache.get(args.length)\n\n// // using args.length because func.length is 0 for variadic functions\n// for (let i = 0; i < args.length - 1; i++) {\n// const key = args[i]\n// if (!innerCache.has(key))\n// innerCache.set(key, new Map())\n\n// innerCache = innerCache.get(key)\n// }\n\n// const key = args[args.length - 1]\n// if (innerCache.has(key))\n// return innerCache.get(key)\n\n// const result = func(...args)\n// innerCache.set(key, result)\n// return result\n// }\n\n// return memoized\n// }\n\n/** Repeat `count` times. Starts with `0` */\nexport function forTimes<T = undefined>(\n count: number,\n fn: (i: number, count: number) => T,\n): T[] {\n const result = []\n for (let i = 0; i < count; i++)\n result.push(fn(i, count))\n\n return result\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-JJKWFF7B.cjs","../src/common/bin/lib0/string.ts"],"names":["toLowerCase","s","__name","trimLeftRegex","trimLeft","fromCamelCaseRegex","fromCamelCase","separator","match"],"mappings":"AAAA,qOAAwC,SCS/BA,CAAAA,CAAYC,CAAAA,CAAmB,CACtC,OAAOA,CAAAA,CAAE,WAAA,CAAY,CACvB,CAFSC,iCAAAA,CAAAF,CAAA,aAAA,CAAA,CAIT,IAAMG,CAAAA,CAAgB,OAAA,CAEf,SAASC,CAAAA,CAASH,CAAAA,CAAmB,CAC1C,OAAOA,CAAAA,CAAE,OAAA,CAAQE,CAAAA,CAAe,EAAE,CACpC,CAFgBD,iCAAAA,CAAAE,CAAA,UAAA,CAAA,CAIhB,IAAMC,CAAAA,CAAqB,UAAA,CAEpB,SAASC,CAAAA,CAAcL,CAAAA,CAAWM,CAAAA,CAA2B,CAClE,OAAOH,CAAAA,CAASH,CAAAA,CAAE,OAAA,CAAQI,CAAAA,CAAoBG,CAAAA,EAAS,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-JJKWFF7B.cjs","sourcesContent":[null,"/**\n * Original at https://github.com/dmonad/lib0\n *\n * Utility module to work with strings.\n */\n\n// export const fromCharCode = String.fromCharCode\n// export const fromCodePoint = String.fromCodePoint\n\nfunction toLowerCase(s: string): string {\n return s.toLowerCase()\n}\n\nconst trimLeftRegex = /^\\s*/g\n\nexport function trimLeft(s: string): string {\n return s.replace(trimLeftRegex, '')\n}\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\nexport function fromCamelCase(s: string, separator: string): string {\n return trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n}\n\n/**\n * Compute the utf8ByteLength\n */\nexport function utf8ByteLength(str: string): number {\n return unescape(encodeURIComponent(str)).length\n}\n\nexport function _encodeUtf8Polyfill(str: string): Uint8Array {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++)\n buf[i] = (encodedString.codePointAt(i) as number)\n\n return buf\n}\n\nlet utf8TextEncoder: TextEncoder | undefined | null\n\nexport function getUtf8TextEncoder(): TextEncoder | null {\n if (utf8TextEncoder === undefined)\n utf8TextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n return utf8TextEncoder\n}\n\nexport function encodeUtf8(str: string): Uint8Array {\n return getUtf8TextEncoder()\n ? utf8TextEncoder!.encode(str)\n : _encodeUtf8Polyfill(str)\n}\n\nfunction _decodeUtf8Polyfill(buf: Uint8Array): string {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, (bytes as any))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\nlet utf8TextDecoder: any\n\nexport function getUtf8TextDecoder(): TextDecoder | undefined {\n if (utf8TextDecoder === undefined) {\n utf8TextDecoder = (typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })) ?? null\n if (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n utf8TextDecoder = null\n }\n }\n return utf8TextDecoder\n}\n\nexport function decodeUtf8(buf: Uint8Array): string {\n return getUtf8TextDecoder()\n ? utf8TextDecoder.decode(buf)\n : _decodeUtf8Polyfill(buf)\n}\n\nexport function splice(str: string, index: number, remove: number, insert = '') {\n return str.slice(0, index) + insert + str.slice(index + remove)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-JJKWFF7B.cjs","../src/common/bin/lib0/string.ts"],"names":["toLowerCase","s","__name","trimLeftRegex","trimLeft","fromCamelCaseRegex","fromCamelCase","separator","match"],"mappings":"AAAA,qOAAwC,SCS/BA,CAAAA,CAAYC,CAAAA,CAAmB,CACtC,OAAOA,CAAAA,CAAE,WAAA,CAAY,CACvB,CAFSC,iCAAAA,CAAAF,CAAA,aAAA,CAAA,CAIT,IAAMG,CAAAA,CAAgB,OAAA,CAEf,SAASC,CAAAA,CAASH,CAAAA,CAAmB,CAC1C,OAAOA,CAAAA,CAAE,OAAA,CAAQE,CAAAA,CAAe,EAAE,CACpC,CAFgBD,iCAAAA,CAAAE,CAAA,UAAA,CAAA,CAIhB,IAAMC,CAAAA,CAAqB,UAAA,CAEpB,SAASC,CAAAA,CAAcL,CAAAA,CAAWM,CAAAA,CAA2B,CAClE,OAAOH,CAAAA,CAASH,CAAAA,CAAE,OAAA,CAAQI,CAAAA,CAAoBG,CAAAA,EAAS,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-JJKWFF7B.cjs","sourcesContent":[null,"/**\n * Original at https://github.com/dmonad/lib0\n *\n * Utility module to work with strings.\n */\n\n// export const fromCharCode = String.fromCharCode\n// export const fromCodePoint = String.fromCodePoint\n\nfunction toLowerCase(s: string): string {\n return s.toLowerCase()\n}\n\nconst trimLeftRegex = /^\\s*/g\n\nexport function trimLeft(s: string): string {\n return s.replace(trimLeftRegex, '')\n}\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\nexport function fromCamelCase(s: string, separator: string): string {\n return trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n}\n\n/**\n * Compute the utf8ByteLength\n */\nexport function utf8ByteLength(str: string): number {\n return unescape(encodeURIComponent(str)).length\n}\n\nexport function _encodeUtf8Polyfill(str: string): Uint8Array {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++)\n buf[i] = (encodedString.codePointAt(i) as number)\n\n return buf\n}\n\nlet utf8TextEncoder: TextEncoder | undefined | null\n\nexport function getUtf8TextEncoder(): TextEncoder | null {\n if (utf8TextEncoder === undefined)\n utf8TextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n return utf8TextEncoder\n}\n\nexport function encodeUtf8(str: string): Uint8Array {\n return getUtf8TextEncoder()\n ? utf8TextEncoder!.encode(str)\n : _encodeUtf8Polyfill(str)\n}\n\nfunction _decodeUtf8Polyfill(buf: Uint8Array): string {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, (bytes as any))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\nlet utf8TextDecoder: any\n\nexport function getUtf8TextDecoder(): TextDecoder | undefined {\n if (utf8TextDecoder === undefined) {\n utf8TextDecoder = (typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })) ?? null\n if (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n utf8TextDecoder = null\n }\n }\n return utf8TextDecoder\n}\n\nexport function decodeUtf8(buf: Uint8Array): string {\n return getUtf8TextDecoder()\n ? utf8TextDecoder.decode(buf)\n : _decodeUtf8Polyfill(buf)\n}\n\nexport function splice(str: string, index: number, remove: number, insert = '') {\n return str.slice(0, index) + insert + str.slice(index + remove)\n}\n"]}