zeed 0.28.7 → 0.28.9

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 (392) hide show
  1. package/dist/browser/base64.cjs.map +1 -1
  2. package/dist/browser/gravatar.cjs.map +1 -1
  3. package/dist/browser/index.cjs.map +1 -1
  4. package/dist/browser/localstorage.cjs.map +1 -1
  5. package/dist/browser/log/index.cjs.map +1 -1
  6. package/dist/browser/log/log-browser-factory.cjs.map +1 -1
  7. package/dist/browser/log/log-browser.cjs.map +1 -1
  8. package/dist/browser/log/log-colors.cjs.map +1 -1
  9. package/dist/browser/log/log-context-browser.cjs.map +1 -1
  10. package/dist/chunk-26J4SA3M.cjs.map +1 -1
  11. package/dist/chunk-2FUSCDBB.cjs.map +1 -1
  12. package/dist/chunk-2RBU7QFL.cjs.map +1 -1
  13. package/dist/chunk-2YTY5X3S.cjs.map +1 -1
  14. package/dist/chunk-3FLO2VXX.cjs.map +1 -1
  15. package/dist/chunk-3O7Y3U7Y.cjs.map +1 -1
  16. package/dist/chunk-3TNVJY4F.cjs.map +1 -1
  17. package/dist/{chunk-GMJXOP7Z.js → chunk-3U2QR5SP.js} +2 -2
  18. package/dist/chunk-3VEGCRLF.cjs.map +1 -1
  19. package/dist/chunk-4B2XCWGL.cjs.map +1 -1
  20. package/dist/chunk-4SKL5XXG.cjs.map +1 -1
  21. package/dist/chunk-5CHPHDA5.cjs.map +1 -1
  22. package/dist/chunk-5FLXL7Q3.cjs +2 -0
  23. package/dist/chunk-5FLXL7Q3.cjs.map +1 -0
  24. package/dist/{chunk-TU7WPJOU.cjs → chunk-5GO3AK4J.cjs} +2 -2
  25. package/dist/chunk-5GO3AK4J.cjs.map +1 -0
  26. package/dist/chunk-5P4XZHKJ.cjs.map +1 -1
  27. package/dist/chunk-5VHLMAKU.cjs.map +1 -1
  28. package/dist/chunk-5W7DNVOJ.cjs.map +1 -1
  29. package/dist/chunk-6HCJ6MJQ.cjs.map +1 -1
  30. package/dist/chunk-6U6Q5CBH.cjs.map +1 -1
  31. package/dist/chunk-6XH2AGIH.cjs.map +1 -1
  32. package/dist/{chunk-J2KIRUQO.js → chunk-6Y7WTQVG.js} +2 -2
  33. package/dist/chunk-6ZLJSWLM.cjs.map +1 -1
  34. package/dist/chunk-724WHMXL.cjs.map +1 -1
  35. package/dist/chunk-76UOP7N2.cjs.map +1 -1
  36. package/dist/chunk-7ADMZQFX.cjs.map +1 -1
  37. package/dist/chunk-7N5S4JIQ.cjs.map +1 -1
  38. package/dist/chunk-7WEQTYF3.cjs.map +1 -1
  39. package/dist/{chunk-5MAXMHAR.js → chunk-AAHTORMI.js} +2 -2
  40. package/dist/chunk-AT5AILNI.cjs.map +1 -1
  41. package/dist/chunk-BBLSC52Q.cjs.map +1 -1
  42. package/dist/chunk-BL6UEZLA.cjs.map +1 -1
  43. package/dist/chunk-BNMSTFVY.cjs +2 -0
  44. package/dist/chunk-BNMSTFVY.cjs.map +1 -0
  45. package/dist/chunk-BNWABQDO.cjs.map +1 -1
  46. package/dist/chunk-BP5KZK4I.cjs.map +1 -1
  47. package/dist/chunk-BYFGE7MW.cjs.map +1 -1
  48. package/dist/chunk-C3NS435H.cjs.map +1 -1
  49. package/dist/{chunk-ARYH3DRK.js → chunk-C3QCEKO3.js} +2 -2
  50. package/dist/{chunk-44J4HY7M.cjs → chunk-C4UETAZW.cjs} +2 -2
  51. package/dist/chunk-C4UETAZW.cjs.map +1 -0
  52. package/dist/chunk-CDRKVTXH.cjs.map +1 -1
  53. package/dist/chunk-CFF4Z5HZ.cjs.map +1 -1
  54. package/dist/chunk-CR2WSRFB.cjs.map +1 -1
  55. package/dist/chunk-CW7OVU6D.cjs.map +1 -1
  56. package/dist/chunk-D3MBR5LJ.cjs.map +1 -1
  57. package/dist/chunk-D5MT7SAA.cjs.map +1 -1
  58. package/dist/{chunk-B5IXEDTR.cjs → chunk-DJINTZFD.cjs} +2 -2
  59. package/dist/chunk-DJINTZFD.cjs.map +1 -0
  60. package/dist/chunk-DUTK2D77.cjs.map +1 -1
  61. package/dist/chunk-DVSS4UAR.cjs.map +1 -1
  62. package/dist/chunk-E2ATUVME.cjs.map +1 -1
  63. package/dist/chunk-E3TYSVBQ.js +2 -0
  64. package/dist/chunk-ECVG4NHM.cjs.map +1 -1
  65. package/dist/chunk-ERHUQJ6A.cjs.map +1 -1
  66. package/dist/chunk-FQ2HVUI7.cjs.map +1 -1
  67. package/dist/chunk-FWJ2ABR5.cjs.map +1 -1
  68. package/dist/chunk-G3QVU7BW.cjs.map +1 -1
  69. package/dist/{chunk-G4R4KFXL.js → chunk-GEV3TRDQ.js} +2 -2
  70. package/dist/{chunk-IUH6267J.cjs → chunk-GSJ54UTH.cjs} +2 -2
  71. package/dist/chunk-GSJ54UTH.cjs.map +1 -0
  72. package/dist/chunk-HBZHLYXW.cjs.map +1 -1
  73. package/dist/chunk-HEYAOG5D.cjs.map +1 -1
  74. package/dist/{chunk-GP2HHSPI.cjs → chunk-HT2VGSOC.cjs} +2 -2
  75. package/dist/chunk-HT2VGSOC.cjs.map +1 -0
  76. package/dist/chunk-I5YVETCQ.cjs +2 -0
  77. package/dist/chunk-I5YVETCQ.cjs.map +1 -0
  78. package/dist/chunk-IGZA77TR.cjs.map +1 -1
  79. package/dist/{chunk-5TJTQRWT.js → chunk-JSFCIROJ.js} +2 -2
  80. package/dist/chunk-JVWHUOOY.cjs.map +1 -1
  81. package/dist/chunk-JZXEVNFX.cjs.map +1 -1
  82. package/dist/{chunk-KITREJ2W.js → chunk-KPSXJ3IJ.js} +2 -2
  83. package/dist/chunk-KPU7ZOUH.cjs.map +1 -1
  84. package/dist/{chunk-3AKAT4ZG.js → chunk-KTKS43F6.js} +2 -2
  85. package/dist/chunk-KWBPYDJC.cjs.map +1 -1
  86. package/dist/chunk-KZUVW6PP.cjs.map +1 -1
  87. package/dist/chunk-L32SZCS2.js +2 -0
  88. package/dist/chunk-L32SZCS2.js.map +1 -0
  89. package/dist/chunk-L5JQFMTK.cjs.map +1 -1
  90. package/dist/chunk-L5XYQBG4.cjs.map +1 -1
  91. package/dist/chunk-L6SDCMB4.cjs.map +1 -1
  92. package/dist/chunk-LKCAGRU7.cjs.map +1 -1
  93. package/dist/{chunk-XBMH7DOS.js → chunk-M3BNDEQI.js} +2 -2
  94. package/dist/chunk-MJLJAWQU.cjs.map +1 -1
  95. package/dist/chunk-MVTKILPI.cjs.map +1 -1
  96. package/dist/chunk-MZOAQKNJ.cjs.map +1 -1
  97. package/dist/{chunk-DY6RMJJK.cjs → chunk-N7JQO6FG.cjs} +2 -2
  98. package/dist/chunk-N7JQO6FG.cjs.map +1 -0
  99. package/dist/chunk-N7XQZD7O.cjs.map +1 -1
  100. package/dist/chunk-NU2LARFE.cjs.map +1 -1
  101. package/dist/chunk-NV7ABJAH.cjs.map +1 -1
  102. package/dist/chunk-OGNEGHHJ.cjs.map +1 -1
  103. package/dist/chunk-OR7Q7U5S.cjs.map +1 -1
  104. package/dist/chunk-ORA3J2SQ.cjs.map +1 -1
  105. package/dist/chunk-OSJGUOU2.cjs.map +1 -1
  106. package/dist/chunk-OYAZQOT3.cjs.map +1 -1
  107. package/dist/chunk-P75EIP44.cjs.map +1 -1
  108. package/dist/chunk-PBHNRC5D.cjs.map +1 -1
  109. package/dist/chunk-PQCBHUC4.cjs.map +1 -1
  110. package/dist/{chunk-LQA56AWJ.cjs → chunk-PUVQJAUJ.cjs} +2 -2
  111. package/dist/chunk-PUVQJAUJ.cjs.map +1 -0
  112. package/dist/chunk-PVD4WJLP.cjs.map +1 -1
  113. package/dist/chunk-PWWR4H26.cjs.map +1 -1
  114. package/dist/chunk-Q2SNIYQS.cjs.map +1 -1
  115. package/dist/chunk-QQLWSF3G.cjs.map +1 -1
  116. package/dist/chunk-QSTP2ZQT.cjs.map +1 -1
  117. package/dist/chunk-QV4LM6ZT.cjs.map +1 -1
  118. package/dist/{chunk-BOM3HKWA.cjs → chunk-R7USC6WF.cjs} +2 -2
  119. package/dist/chunk-R7USC6WF.cjs.map +1 -0
  120. package/dist/chunk-RCH2BZO5.cjs.map +1 -1
  121. package/dist/{chunk-LSUW3BE7.cjs → chunk-RYOPEKWG.cjs} +2 -2
  122. package/dist/chunk-RYOPEKWG.cjs.map +1 -0
  123. package/dist/chunk-S43EDRFK.cjs.map +1 -1
  124. package/dist/{chunk-46APCVZH.cjs → chunk-SA5MSIRV.cjs} +2 -2
  125. package/dist/chunk-SA5MSIRV.cjs.map +1 -0
  126. package/dist/chunk-SAYZWFMV.cjs.map +1 -1
  127. package/dist/chunk-SDCEAQZX.cjs.map +1 -1
  128. package/dist/chunk-SEQAFKIV.cjs.map +1 -1
  129. package/dist/chunk-STAFIEKA.cjs.map +1 -1
  130. package/dist/{chunk-EKJRE7F6.js → chunk-T2E5T2ZQ.js} +2 -2
  131. package/dist/chunk-T6G6S6LA.cjs.map +1 -1
  132. package/dist/chunk-TAUWRIFY.cjs.map +1 -1
  133. package/dist/{chunk-WBCXXI6X.js → chunk-TGIYHPPX.js} +2 -2
  134. package/dist/chunk-TRLTZEHW.cjs.map +1 -1
  135. package/dist/chunk-TS2ABSYW.cjs.map +1 -1
  136. package/dist/chunk-TXKYNYVG.cjs.map +1 -1
  137. package/dist/chunk-U3RSWYDX.cjs.map +1 -1
  138. package/dist/chunk-ULLUQLTA.cjs.map +1 -1
  139. package/dist/chunk-VFR5TEQE.cjs.map +1 -1
  140. package/dist/chunk-VHPUN6W2.cjs.map +1 -1
  141. package/dist/chunk-VMGJFJIM.cjs.map +1 -1
  142. package/dist/chunk-VSXOJYNZ.cjs.map +1 -1
  143. package/dist/{chunk-V7KEBZAU.cjs → chunk-VWGZLMDY.cjs} +2 -2
  144. package/dist/chunk-VWGZLMDY.cjs.map +1 -0
  145. package/dist/chunk-W4EPLFUE.cjs.map +1 -1
  146. package/dist/chunk-WGYEX7AJ.cjs.map +1 -1
  147. package/dist/chunk-WIUZ5ACA.cjs.map +1 -1
  148. package/dist/chunk-WPWV7ZEM.cjs.map +1 -1
  149. package/dist/chunk-WR5SBVCT.cjs.map +1 -1
  150. package/dist/chunk-WR6QCC7M.cjs.map +1 -1
  151. package/dist/{chunk-KBV6B6VE.js → chunk-WVAB6E4Q.js} +2 -2
  152. package/dist/chunk-X4RCMSVN.cjs.map +1 -1
  153. package/dist/chunk-X75HL5HY.cjs.map +1 -1
  154. package/dist/chunk-XHBPFXWQ.cjs.map +1 -1
  155. package/dist/chunk-XRSSOHB3.cjs.map +1 -1
  156. package/dist/chunk-XT67IKLC.cjs.map +1 -1
  157. package/dist/chunk-Y4CZHSBV.cjs.map +1 -1
  158. package/dist/{chunk-VS4KVAHQ.cjs → chunk-YFV2QQVE.cjs} +2 -2
  159. package/dist/chunk-YFV2QQVE.cjs.map +1 -0
  160. package/dist/chunk-YKQSST44.cjs.map +1 -1
  161. package/dist/chunk-YTBSAWWU.cjs.map +1 -1
  162. package/dist/{chunk-WF2FLXJD.js → chunk-Z6XHALPL.js} +2 -2
  163. package/dist/chunk-ZCZ6PN5V.cjs.map +1 -1
  164. package/dist/chunk-ZQYZWX6Y.cjs.map +1 -1
  165. package/dist/common/assert.cjs.map +1 -1
  166. package/dist/common/bin/index.cjs +1 -1
  167. package/dist/common/bin/index.cjs.map +1 -1
  168. package/dist/common/bin/index.js +1 -1
  169. package/dist/common/bin/lib0/binary.cjs.map +1 -1
  170. package/dist/common/bin/lib0/buffer.cjs +1 -1
  171. package/dist/common/bin/lib0/buffer.cjs.map +1 -1
  172. package/dist/common/bin/lib0/buffer.js +1 -1
  173. package/dist/common/bin/lib0/create.cjs.map +1 -1
  174. package/dist/common/bin/lib0/decoding.cjs +1 -1
  175. package/dist/common/bin/lib0/decoding.cjs.map +1 -1
  176. package/dist/common/bin/lib0/decoding.js +1 -1
  177. package/dist/common/bin/lib0/encoding.cjs +1 -1
  178. package/dist/common/bin/lib0/encoding.cjs.map +1 -1
  179. package/dist/common/bin/lib0/encoding.js +1 -1
  180. package/dist/common/bin/lib0/string.cjs.map +1 -1
  181. package/dist/common/crypto/aes-sealed.cjs.map +1 -1
  182. package/dist/common/crypto/crypto.cjs.map +1 -1
  183. package/dist/common/crypto/index.cjs.map +1 -1
  184. package/dist/common/crypto/xaes.cjs.map +1 -1
  185. package/dist/common/csv.cjs.map +1 -1
  186. package/dist/common/data/array.cjs.map +1 -1
  187. package/dist/common/data/basex-secure.cjs.map +1 -1
  188. package/dist/common/data/basex.cjs.map +1 -1
  189. package/dist/common/data/bin.cjs.map +1 -1
  190. package/dist/common/data/camelcase.cjs.map +1 -1
  191. package/dist/common/data/convert.cjs.map +1 -1
  192. package/dist/common/data/datauri.cjs +1 -1
  193. package/dist/common/data/datauri.cjs.map +1 -1
  194. package/dist/common/data/datauri.js +1 -1
  195. package/dist/common/data/day-legacy.cjs.map +1 -1
  196. package/dist/common/data/day.cjs.map +1 -1
  197. package/dist/common/data/decimal.cjs.map +1 -1
  198. package/dist/common/data/deep.cjs.map +1 -1
  199. package/dist/common/data/diff.cjs.map +1 -1
  200. package/dist/common/data/distributed.cjs.map +1 -1
  201. package/dist/common/data/format.cjs.map +1 -1
  202. package/dist/common/data/html.cjs.map +1 -1
  203. package/dist/common/data/index.cjs +1 -1
  204. package/dist/common/data/index.cjs.map +1 -1
  205. package/dist/common/data/index.js +1 -1
  206. package/dist/common/data/is.cjs.map +1 -1
  207. package/dist/common/data/json.cjs.map +1 -1
  208. package/dist/common/data/list.cjs.map +1 -1
  209. package/dist/common/data/lru.cjs.map +1 -1
  210. package/dist/common/data/math.cjs.map +1 -1
  211. package/dist/common/data/message.cjs.map +1 -1
  212. package/dist/common/data/object-changes.cjs.map +1 -1
  213. package/dist/common/data/object.cjs.map +1 -1
  214. package/dist/common/data/orderby.cjs.map +1 -1
  215. package/dist/common/data/path.cjs.map +1 -1
  216. package/dist/common/data/regexp.cjs.map +1 -1
  217. package/dist/common/data/rounding.cjs.map +1 -1
  218. package/dist/common/data/signal.cjs.map +1 -1
  219. package/dist/common/data/sortable.cjs.map +1 -1
  220. package/dist/common/data/sorted.cjs.map +1 -1
  221. package/dist/common/data/string-deburr.cjs.map +1 -1
  222. package/dist/common/data/string-hash-fnv.cjs.map +1 -1
  223. package/dist/common/data/string-hash-pool.cjs.map +1 -1
  224. package/dist/common/data/url.cjs.map +1 -1
  225. package/dist/common/data/utils.cjs.map +1 -1
  226. package/dist/common/data/wordlist.cjs.map +1 -1
  227. package/dist/common/data/xrx.cjs.map +1 -1
  228. package/dist/common/dispose-defer.cjs.map +1 -1
  229. package/dist/common/dispose-types.cjs.map +1 -1
  230. package/dist/common/dispose-utils.cjs.map +1 -1
  231. package/dist/common/exec/index.cjs +1 -1
  232. package/dist/common/exec/index.cjs.map +1 -1
  233. package/dist/common/exec/index.js +1 -1
  234. package/dist/common/exec/mutex.cjs.map +1 -1
  235. package/dist/common/exec/pool.cjs +1 -1
  236. package/dist/common/exec/pool.cjs.map +1 -1
  237. package/dist/common/exec/pool.js +1 -1
  238. package/dist/common/exec/progress.cjs +1 -1
  239. package/dist/common/exec/progress.cjs.map +1 -1
  240. package/dist/common/exec/progress.js +1 -1
  241. package/dist/common/exec/promise.cjs.map +1 -1
  242. package/dist/common/exec/queue.cjs +1 -1
  243. package/dist/common/exec/queue.cjs.map +1 -1
  244. package/dist/common/exec/queue.js +1 -1
  245. package/dist/common/exec/throttle-debounce.cjs.map +1 -1
  246. package/dist/common/global.cjs.map +1 -1
  247. package/dist/common/index.cjs +1 -1
  248. package/dist/common/index.cjs.map +1 -1
  249. package/dist/common/index.js +1 -1
  250. package/dist/common/localhost.cjs.map +1 -1
  251. package/dist/common/log/index.cjs.map +1 -1
  252. package/dist/common/log/log-base.cjs.map +1 -1
  253. package/dist/common/log/log-colors.cjs.map +1 -1
  254. package/dist/common/log/log-config.cjs.map +1 -1
  255. package/dist/common/log/log-console-capture.cjs.map +1 -1
  256. package/dist/common/log/log-console-original.cjs.map +1 -1
  257. package/dist/common/log/log-console.cjs.map +1 -1
  258. package/dist/common/log/log-context.cjs.map +1 -1
  259. package/dist/common/log/log-filter.cjs.map +1 -1
  260. package/dist/common/log/log-memory.cjs.map +1 -1
  261. package/dist/common/log/log-noop.cjs.map +1 -1
  262. package/dist/common/log/log.cjs.map +1 -1
  263. package/dist/common/msg/channel-debug.cjs +1 -1
  264. package/dist/common/msg/channel-debug.cjs.map +1 -1
  265. package/dist/common/msg/channel-debug.js +1 -1
  266. package/dist/common/msg/channel-local.cjs +1 -1
  267. package/dist/common/msg/channel-local.cjs.map +1 -1
  268. package/dist/common/msg/channel-local.js +1 -1
  269. package/dist/common/msg/channel-resilient.cjs +1 -1
  270. package/dist/common/msg/channel-resilient.cjs.map +1 -1
  271. package/dist/common/msg/channel-resilient.js +1 -1
  272. package/dist/common/msg/channel-wkwebview.cjs +2 -0
  273. package/dist/common/msg/channel-wkwebview.cjs.map +1 -0
  274. package/dist/common/msg/channel-wkwebview.d.cts +21 -0
  275. package/dist/common/msg/channel-wkwebview.d.ts +21 -0
  276. package/dist/common/msg/channel-wkwebview.js +2 -0
  277. package/dist/common/msg/channel-wkwebview.js.map +1 -0
  278. package/dist/common/msg/channel.cjs +1 -1
  279. package/dist/common/msg/channel.cjs.map +1 -1
  280. package/dist/common/msg/channel.js +1 -1
  281. package/dist/common/msg/emitter.cjs +1 -1
  282. package/dist/common/msg/emitter.cjs.map +1 -1
  283. package/dist/common/msg/emitter.d.cts +16 -0
  284. package/dist/common/msg/emitter.d.ts +16 -0
  285. package/dist/common/msg/emitter.js +1 -1
  286. package/dist/common/msg/encoder.cjs.map +1 -1
  287. package/dist/common/msg/index.cjs +1 -1
  288. package/dist/common/msg/index.cjs.map +1 -1
  289. package/dist/common/msg/index.js +1 -1
  290. package/dist/common/msg/messages.cjs +1 -1
  291. package/dist/common/msg/messages.cjs.map +1 -1
  292. package/dist/common/msg/messages.js +1 -1
  293. package/dist/common/msg/pipe.cjs.map +1 -1
  294. package/dist/common/msg/pubsub.cjs +1 -1
  295. package/dist/common/msg/pubsub.cjs.map +1 -1
  296. package/dist/common/msg/pubsub.js +1 -1
  297. package/dist/common/msg/rpc.cjs.map +1 -1
  298. package/dist/common/network.cjs.map +1 -1
  299. package/dist/common/platform.cjs.map +1 -1
  300. package/dist/common/schema/_sandbox/sandbox-inherit.cjs +2 -0
  301. package/dist/common/schema/_sandbox/sandbox-inherit.cjs.map +1 -0
  302. package/dist/common/schema/_sandbox/sandbox-inherit.d.cts +2 -0
  303. package/dist/common/schema/_sandbox/sandbox-inherit.d.ts +2 -0
  304. package/dist/common/schema/_sandbox/sandbox-inherit.js +2 -0
  305. package/dist/common/schema/_sandbox/sandbox-inherit.js.map +1 -0
  306. package/dist/common/schema/_sandbox/sandbox.cjs +2 -0
  307. package/dist/common/schema/_sandbox/sandbox.cjs.map +1 -0
  308. package/dist/common/schema/_sandbox/sandbox.d.cts +2 -0
  309. package/dist/common/schema/_sandbox/sandbox.d.ts +2 -0
  310. package/dist/common/schema/_sandbox/sandbox.js +2 -0
  311. package/dist/common/schema/_sandbox/sandbox.js.map +1 -0
  312. package/dist/common/schema/export-swift.cjs.map +1 -1
  313. package/dist/common/schema/export-typescript.cjs.map +1 -1
  314. package/dist/common/schema/index.cjs +1 -1
  315. package/dist/common/schema/index.cjs.map +1 -1
  316. package/dist/common/schema/index.js +1 -1
  317. package/dist/common/schema/parse-args.cjs.map +1 -1
  318. package/dist/common/schema/parse-env.cjs.map +1 -1
  319. package/dist/common/schema/schema.cjs.map +1 -1
  320. package/dist/common/schema/type-test.cjs.map +1 -1
  321. package/dist/common/schema/utils.cjs.map +1 -1
  322. package/dist/common/storage/index.cjs.map +1 -1
  323. package/dist/common/storage/memstorage.cjs.map +1 -1
  324. package/dist/common/time.cjs.map +1 -1
  325. package/dist/common/timeout.cjs.map +1 -1
  326. package/dist/common/types.cjs.map +1 -1
  327. package/dist/common/utils.cjs.map +1 -1
  328. package/dist/common/uuid.cjs +1 -1
  329. package/dist/common/uuid.cjs.map +1 -1
  330. package/dist/common/uuid.js +1 -1
  331. package/dist/index.all.cjs +1 -1
  332. package/dist/index.all.cjs.map +1 -1
  333. package/dist/index.all.js +1 -1
  334. package/dist/index.browser.cjs +1 -1
  335. package/dist/index.browser.cjs.map +1 -1
  336. package/dist/index.browser.js +1 -1
  337. package/dist/index.node.cjs +1 -1
  338. package/dist/index.node.cjs.map +1 -1
  339. package/dist/index.node.js +1 -1
  340. package/dist/node/args.cjs.map +1 -1
  341. package/dist/node/clipboard.cjs.map +1 -1
  342. package/dist/node/crypto.cjs.map +1 -1
  343. package/dist/node/env.cjs.map +1 -1
  344. package/dist/node/files-async.cjs.map +1 -1
  345. package/dist/node/files.cjs.map +1 -1
  346. package/dist/node/filestorage.cjs.map +1 -1
  347. package/dist/node/fs.cjs.map +1 -1
  348. package/dist/node/glob.cjs.map +1 -1
  349. package/dist/node/index.cjs.map +1 -1
  350. package/dist/node/log/index.cjs.map +1 -1
  351. package/dist/node/log/log-context-node.cjs.map +1 -1
  352. package/dist/node/log/log-file.cjs.map +1 -1
  353. package/dist/node/log/log-node.cjs.map +1 -1
  354. package/dist/node/log/log-util.cjs.map +1 -1
  355. package/dist/node/open-browser.cjs.map +1 -1
  356. package/dist/shim-window.d.cjs.map +1 -1
  357. package/package.json +18 -26
  358. package/dist/chunk-3HXTCWSE.cjs +0 -2
  359. package/dist/chunk-3HXTCWSE.cjs.map +0 -1
  360. package/dist/chunk-44J4HY7M.cjs.map +0 -1
  361. package/dist/chunk-46APCVZH.cjs.map +0 -1
  362. package/dist/chunk-B5IXEDTR.cjs.map +0 -1
  363. package/dist/chunk-BOM3HKWA.cjs.map +0 -1
  364. package/dist/chunk-DY6RMJJK.cjs.map +0 -1
  365. package/dist/chunk-GP2HHSPI.cjs.map +0 -1
  366. package/dist/chunk-IRXNXBJY.js +0 -2
  367. package/dist/chunk-IUH6267J.cjs.map +0 -1
  368. package/dist/chunk-LQA56AWJ.cjs.map +0 -1
  369. package/dist/chunk-LSUW3BE7.cjs.map +0 -1
  370. package/dist/chunk-MBMNUH3V.js +0 -2
  371. package/dist/chunk-MBMNUH3V.js.map +0 -1
  372. package/dist/chunk-R6KT6YSJ.cjs +0 -2
  373. package/dist/chunk-R6KT6YSJ.cjs.map +0 -1
  374. package/dist/chunk-TU7WPJOU.cjs.map +0 -1
  375. package/dist/chunk-UWCE23Z7.cjs +0 -2
  376. package/dist/chunk-UWCE23Z7.cjs.map +0 -1
  377. package/dist/chunk-V7KEBZAU.cjs.map +0 -1
  378. package/dist/chunk-VS4KVAHQ.cjs.map +0 -1
  379. /package/dist/{chunk-GMJXOP7Z.js.map → chunk-3U2QR5SP.js.map} +0 -0
  380. /package/dist/{chunk-J2KIRUQO.js.map → chunk-6Y7WTQVG.js.map} +0 -0
  381. /package/dist/{chunk-5MAXMHAR.js.map → chunk-AAHTORMI.js.map} +0 -0
  382. /package/dist/{chunk-ARYH3DRK.js.map → chunk-C3QCEKO3.js.map} +0 -0
  383. /package/dist/{chunk-IRXNXBJY.js.map → chunk-E3TYSVBQ.js.map} +0 -0
  384. /package/dist/{chunk-G4R4KFXL.js.map → chunk-GEV3TRDQ.js.map} +0 -0
  385. /package/dist/{chunk-5TJTQRWT.js.map → chunk-JSFCIROJ.js.map} +0 -0
  386. /package/dist/{chunk-KITREJ2W.js.map → chunk-KPSXJ3IJ.js.map} +0 -0
  387. /package/dist/{chunk-3AKAT4ZG.js.map → chunk-KTKS43F6.js.map} +0 -0
  388. /package/dist/{chunk-XBMH7DOS.js.map → chunk-M3BNDEQI.js.map} +0 -0
  389. /package/dist/{chunk-EKJRE7F6.js.map → chunk-T2E5T2ZQ.js.map} +0 -0
  390. /package/dist/{chunk-WBCXXI6X.js.map → chunk-TGIYHPPX.js.map} +0 -0
  391. /package/dist/{chunk-KBV6B6VE.js.map → chunk-WVAB6E4Q.js.map} +0 -0
  392. /package/dist/{chunk-WF2FLXJD.js.map → chunk-Z6XHALPL.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/base64.cjs"],"names":[],"mappings":"AAAA,kIAAoC,oDAAmC","file":"/home/runner/work/zeed/zeed/dist/browser/base64.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/base64.cjs"],"names":[],"mappings":"AAAA,kIAAoC,oDAAmC","file":"/Users/dirk/work/github-zeed/dist/browser/base64.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/gravatar.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iDAAgC","file":"/home/runner/work/zeed/zeed/dist/browser/gravatar.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/gravatar.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iDAAgC","file":"/Users/dirk/work/github-zeed/dist/browser/gravatar.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/index.cjs"],"names":[],"mappings":"AAAA,0GAA6B,iCAA8B,yDAA0C,iCAA8B,yDAA0C,yDAA0C,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,yDAAqC,yDAA0C,yDAA0C,iCAA8B,yTAAsK","file":"/home/runner/work/zeed/zeed/dist/browser/index.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/index.cjs"],"names":[],"mappings":"AAAA,0GAA6B,iCAA8B,yDAA0C,iCAA8B,yDAA0C,yDAA0C,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,iCAA8B,yDAAqC,yDAA0C,yDAA0C,iCAA8B,yTAAsK","file":"/Users/dirk/work/github-zeed/dist/browser/index.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/localstorage.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iCAA8B,2CAA0B","file":"/home/runner/work/zeed/zeed/dist/browser/localstorage.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/localstorage.cjs"],"names":[],"mappings":"AAAA,kIAAoC,iCAA8B,2CAA0B","file":"/Users/dirk/work/github-zeed/dist/browser/localstorage.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/index.cjs"],"names":[],"mappings":"AAAA,6GAAgC,4DAA6C,oCAAiC,4DAA6C,4DAAwC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,sKAAiG","file":"/home/runner/work/zeed/zeed/dist/browser/log/index.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/index.cjs"],"names":[],"mappings":"AAAA,6GAAgC,4DAA6C,oCAAiC,4DAA6C,4DAAwC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,sKAAiG","file":"/Users/dirk/work/github-zeed/dist/browser/log/index.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/log-browser-factory.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,6DAA4C","file":"/home/runner/work/zeed/zeed/dist/browser/log/log-browser-factory.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/log-browser-factory.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,6DAA4C","file":"/Users/dirk/work/github-zeed/dist/browser/log/log-browser-factory.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/log-browser.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,mDAAkC","file":"/home/runner/work/zeed/zeed/dist/browser/log/log-browser.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/log-browser.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,mDAAkC","file":"/Users/dirk/work/github-zeed/dist/browser/log/log-browser.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/log-colors.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oDAAmC","file":"/home/runner/work/zeed/zeed/dist/browser/log/log-colors.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/log-colors.cjs"],"names":[],"mappings":"AAAA,qIAAuC,oDAAmC","file":"/Users/dirk/work/github-zeed/dist/browser/log/log-colors.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/browser/log/log-context-browser.cjs"],"names":[],"mappings":"AAAA,qIAAyC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,qFAA0C","file":"/home/runner/work/zeed/zeed/dist/browser/log/log-context-browser.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/browser/log/log-context-browser.cjs"],"names":[],"mappings":"AAAA,qIAAyC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,oCAAiC,qFAA0C","file":"/Users/dirk/work/github-zeed/dist/browser/log/log-context-browser.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-26J4SA3M.cjs","../src/common/storage/memstorage.ts"],"names":["MemStorage","_opt","key","value","cloneObject"],"mappings":"AAAA,iIAAwC,ICU3BA,CAAAA,CAAN,KAAuD,CAM5D,WAAA,CAAYC,CAAAA,CAA0B,CAAC,CAAA,CAAG,CAL1C,IAAA,CAAQ,KAAA,CAA2B,CAAC,CAsBpC,CAEA,OAAA,CAAQC,CAAAA,CAAaC,CAAAA,CAAgB,CAEnC,IAAA,CAAK,KAAA,CAAMD,CAAG,CAAA,CAAIE,iCAAAA,CAAiB,CACrC,CAEA,OAAA,CAAQF,CAAAA,CAA4B,CAClC,OAAOE,iCAAAA,IAAY,CAAK,KAAA,CAAMF,CAAG,CAAC,CACpC,CAEA,UAAA,CAAWA,CAAAA,CAAmB,CAC5B,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAG,CACvB,CAEA,KAAA,CAAA,CAAc,CACZ,IAAA,CAAK,KAAA,CAAQ,CAAC,CAChB,CAEA,OAAA,CAAA,CAAoB,CAClB,OAAO,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,KAAK,CAC/B,CACF,CAAA,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-26J4SA3M.cjs","sourcesContent":[null,"import type { Json, ObjectStorage } from '../types'\nimport { cloneObject } from '../data/utils'\n\n// const log = Logger('zeed:memstorage', 'error')\n\nexport interface MemStorageOptions {\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n}\n\nexport class MemStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T> = {}\n // private pretty: boolean = false\n // private objectFromString: (data: string) => any\n // private objectToString: (data: any) => string\n\n constructor(_opt: MemStorageOptions = {}) {\n // this.objectToString =\n // opt.objectToString ??\n // ((data: any): string => {\n // return this.pretty\n // ? JSON.stringify(data, null, 2)\n // : JSON.stringify(data)\n // })\n // this.objectFromString =\n // opt.objectFromString ??\n // ((data: string) => {\n // try {\n // return JSON.parse(data)\n // } catch (err) {\n // log.warn(`MemStorage parse error '${err}' in`, data)\n // }\n // })\n }\n\n setItem(key: string, value: T): void {\n // const data = this.objectToString(value)\n this.store[key] = cloneObject(value)\n }\n\n getItem(key: string): T | undefined {\n return cloneObject(this.store[key])\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n }\n\n clear(): void {\n this.store = {}\n }\n\n allKeys(): string[] {\n return Object.keys(this.store)\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-26J4SA3M.cjs","../src/common/storage/memstorage.ts"],"names":["MemStorage","_opt","key","value","cloneObject"],"mappings":"AAAA,iIAAwC,ICU3BA,CAAAA,CAAN,KAAuD,CAM5D,WAAA,CAAYC,CAAAA,CAA0B,CAAC,CAAA,CAAG,CAL1C,IAAA,CAAQ,KAAA,CAA2B,CAAC,CAsBpC,CAEA,OAAA,CAAQC,CAAAA,CAAaC,CAAAA,CAAgB,CAEnC,IAAA,CAAK,KAAA,CAAMD,CAAG,CAAA,CAAIE,iCAAAA,CAAiB,CACrC,CAEA,OAAA,CAAQF,CAAAA,CAA4B,CAClC,OAAOE,iCAAAA,IAAY,CAAK,KAAA,CAAMF,CAAG,CAAC,CACpC,CAEA,UAAA,CAAWA,CAAAA,CAAmB,CAC5B,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAG,CACvB,CAEA,KAAA,CAAA,CAAc,CACZ,IAAA,CAAK,KAAA,CAAQ,CAAC,CAChB,CAEA,OAAA,CAAA,CAAoB,CAClB,OAAO,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,KAAK,CAC/B,CACF,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-26J4SA3M.cjs","sourcesContent":[null,"import type { Json, ObjectStorage } from '../types'\nimport { cloneObject } from '../data/utils'\n\n// const log = Logger('zeed:memstorage', 'error')\n\nexport interface MemStorageOptions {\n objectFromString?: (data: string) => any\n objectToString?: (data: any) => string\n}\n\nexport class MemStorage<T = Json> implements ObjectStorage<T> {\n private store: Record<string, T> = {}\n // private pretty: boolean = false\n // private objectFromString: (data: string) => any\n // private objectToString: (data: any) => string\n\n constructor(_opt: MemStorageOptions = {}) {\n // this.objectToString =\n // opt.objectToString ??\n // ((data: any): string => {\n // return this.pretty\n // ? JSON.stringify(data, null, 2)\n // : JSON.stringify(data)\n // })\n // this.objectFromString =\n // opt.objectFromString ??\n // ((data: string) => {\n // try {\n // return JSON.parse(data)\n // } catch (err) {\n // log.warn(`MemStorage parse error '${err}' in`, data)\n // }\n // })\n }\n\n setItem(key: string, value: T): void {\n // const data = this.objectToString(value)\n this.store[key] = cloneObject(value)\n }\n\n getItem(key: string): T | undefined {\n return cloneObject(this.store[key])\n }\n\n removeItem(key: string): void {\n delete this.store[key]\n }\n\n clear(): void {\n this.store = {}\n }\n\n allKeys(): string[] {\n return Object.keys(this.store)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/time.ts"],"names":["getTimestamp","getTimestampInSeconds","dateFromSeconds","ts","formatMilliseconds","ms"],"mappings":"AAGO,kFAASA,CAAAA,CAAAA,CAAuB,CACrC,OAAO,IAAA,CAAK,GAAA,CAAI,CAClB,CAKO,SAASC,CAAAA,CAAAA,CAAgC,CAC9C,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAA,CAAI,GAAI,CACrC,CAKO,SAASC,CAAAA,CAAgBC,CAAAA,CAAkB,CAChD,OAAO,IAAI,IAAA,CAAKA,CAAAA,CAAK,GAAI,CAC3B,CAIO,SAASC,CAAAA,CAAmBC,CAAAA,CAAoB,CACrD,OAAOA,CAAAA,CAAK,GAAA,CAAM,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-2FUSCDBB.cjs","sourcesContent":["/**\n * @returns Timestamp in miliseconds\n */\nexport function getTimestamp(): number {\n return Date.now()\n}\n\n/**\n * @returns Timestamp in seconds\n */\nexport function getTimestampInSeconds(): number {\n return Math.floor(Date.now() / 1000)\n}\n\n/**\n * @returns Timestamp in seconds\n */\nexport function dateFromSeconds(ts: number): Date {\n return new Date(ts * 1000)\n}\n\n// typeof performance !== \"undefined\" ? performance.now() : new Date().getTime()\n\nexport function formatMilliseconds(ms: number): string {\n return ms > 999 ? `${(ms / 1000).toFixed(1)} s` : `${ms.toFixed(2)} ms`\n}\n\n/**\n * Parses the given date candidates and returns the first valid Date object found.\n *\n * @param dateCandidates - The date candidates to parse, which can be either strings or Date objects.\n * @returns The parsed Date object, or undefined if no valid date is found.\n */\nexport function parseDate(\n ...dateCandidates: (string | Date)[]\n): Date | undefined {\n for (const dateCandidate of dateCandidates) {\n if (dateCandidate instanceof Date)\n return dateCandidate\n\n if (typeof dateCandidate === 'string') {\n let date = null\n if (dateCandidate.includes(':')) {\n try {\n date = new Date(dateCandidate)\n }\n catch (err) {}\n }\n if (!(date instanceof Date)) {\n const m = /(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/.exec(dateCandidate)\n if (m)\n date = new Date(+m[1], +m[2] - 1, +m[3], 12, 0)\n }\n if (date instanceof Date)\n return date\n }\n }\n}\n\n/**\n * @returns Timestamp in miliseconds\n */\nexport function getPerformanceTimestamp(): number {\n return typeof performance !== 'undefined' ? performance.now() : Date.now()\n}\n\nexport function duration() {\n const t0 = getPerformanceTimestamp()\n\n return function () {\n const duration = getPerformanceTimestamp() - t0\n return formatMilliseconds(duration)\n\n // if (duration > 500)\n // return `${(duration / 1000).toFixed(4)}s`\n\n // // https://elijahmanor.com/format-js-numbers\n // // https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\n // return duration.toLocaleString('en-US', {\n // style: 'unit',\n // unit: 'millisecond',\n // notation: 'compact',\n // compactDisplay: 'long',\n // })\n }\n}\n\n/** If you parsed a date without time zone, you may need to shift it to local time */\nexport function datetimeToLocal(fromDate: Date): Date {\n return new Date(\n fromDate.getUTCFullYear(),\n fromDate.getUTCMonth(),\n fromDate.getUTCDate(),\n fromDate.getUTCHours(),\n fromDate.getUTCMinutes(),\n fromDate.getUTCSeconds(),\n fromDate.getUTCMilliseconds(),\n )\n}\n\n/** If you parsed a date without time zone, you may need to shift it to UTC time */\nexport function datetimeToUTC(fromDate: Date): Date {\n return new Date(Date.UTC(\n fromDate.getFullYear(),\n fromDate.getMonth(),\n fromDate.getDate(),\n fromDate.getHours(),\n fromDate.getMinutes(),\n fromDate.getSeconds(),\n fromDate.getMilliseconds(),\n ))\n}\n\n// const tsMs2000 = 946684800000 // same as Jan 11 1970 in ms\n// const tsMs2500 = 16725225600000 // same as Jul 13 1970 in ms\n// 1000000000000\n\n/** ms -> s with simple check. Assume low values are already ms */\nexport function timestampMillisecondsToSeconds(ts: number, smart = true) {\n if (ts <= 0)\n return 0\n if (smart && ts < 1000000000000) { // TODO find a better threshold and add tests\n return ts\n // log.warn('Timestamp might already be in seconds?', ts)\n }\n return Math.floor(ts / 1000)\n}\n\n/** s -> ms with simple check. Assume high values are already ms */\nexport function timestampSecondsToMilliseconds(ts: number, smart = true) {\n if (ts <= 0)\n return 0\n if (smart && ts > 1000000000000) { // TODO find a better threshold and add tests\n return ts\n // log.warn('Timestamp might already be in milliseconds?', ts)\n }\n return Math.floor(ts * 1000)\n}\n\nexport const TIME_YEAR_MS = 31536000000 // 365 * 24 * 60 * 60 * 1000\nexport const TIME_YEAR_S = 31536000 // 365 * 24 * 60 * 60\nexport const TIME_MONTH_MS = 2592000000 // 30 * 24 * 60 * 60 * 1000\nexport const TIME_MONTH_S = 2592000 // 30 * 24 * 60 * 60\nexport const TIME_WEEK_MS = 604800000 // 7 * 24 * 60 * 60 * 1000\nexport const TIME_WEEK_S = 604800 // 7 * 24 * 60 * 60\nexport const TIME_DAY_MS = 86400000 // 24 * 60 * 60 * 1000\nexport const TIME_DAY_S = 86400 // 24 * 60 * 60\nexport const TIME_HOUR_MS = 3600000 // 60 * 60 * 1000\nexport const TIME_HOUR_S = 3600 // 60 * 60\nexport const TIME_MINUTE_MS = 60000 // 60 * 1000\nexport const TIME_MINUTE_S = 60 // 60\n"]}
1
+ {"version":3,"sources":["../src/common/time.ts"],"names":["getTimestamp","getTimestampInSeconds","dateFromSeconds","ts","formatMilliseconds","ms"],"mappings":"AAGO,kFAASA,CAAAA,CAAAA,CAAuB,CACrC,OAAO,IAAA,CAAK,GAAA,CAAI,CAClB,CAKO,SAASC,CAAAA,CAAAA,CAAgC,CAC9C,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAA,CAAI,GAAI,CACrC,CAKO,SAASC,CAAAA,CAAgBC,CAAAA,CAAkB,CAChD,OAAO,IAAI,IAAA,CAAKA,CAAAA,CAAK,GAAI,CAC3B,CAIO,SAASC,CAAAA,CAAmBC,CAAAA,CAAoB,CACrD,OAAOA,CAAAA,CAAK,GAAA,CAAM,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-2FUSCDBB.cjs","sourcesContent":["/**\n * @returns Timestamp in miliseconds\n */\nexport function getTimestamp(): number {\n return Date.now()\n}\n\n/**\n * @returns Timestamp in seconds\n */\nexport function getTimestampInSeconds(): number {\n return Math.floor(Date.now() / 1000)\n}\n\n/**\n * @returns Timestamp in seconds\n */\nexport function dateFromSeconds(ts: number): Date {\n return new Date(ts * 1000)\n}\n\n// typeof performance !== \"undefined\" ? performance.now() : new Date().getTime()\n\nexport function formatMilliseconds(ms: number): string {\n return ms > 999 ? `${(ms / 1000).toFixed(1)} s` : `${ms.toFixed(2)} ms`\n}\n\n/**\n * Parses the given date candidates and returns the first valid Date object found.\n *\n * @param dateCandidates - The date candidates to parse, which can be either strings or Date objects.\n * @returns The parsed Date object, or undefined if no valid date is found.\n */\nexport function parseDate(\n ...dateCandidates: (string | Date)[]\n): Date | undefined {\n for (const dateCandidate of dateCandidates) {\n if (dateCandidate instanceof Date)\n return dateCandidate\n\n if (typeof dateCandidate === 'string') {\n let date = null\n if (dateCandidate.includes(':')) {\n try {\n date = new Date(dateCandidate)\n }\n catch (err) {}\n }\n if (!(date instanceof Date)) {\n const m = /(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)/.exec(dateCandidate)\n if (m)\n date = new Date(+m[1], +m[2] - 1, +m[3], 12, 0)\n }\n if (date instanceof Date)\n return date\n }\n }\n}\n\n/**\n * @returns Timestamp in miliseconds\n */\nexport function getPerformanceTimestamp(): number {\n return typeof performance !== 'undefined' ? performance.now() : Date.now()\n}\n\nexport function duration() {\n const t0 = getPerformanceTimestamp()\n\n return function () {\n const duration = getPerformanceTimestamp() - t0\n return formatMilliseconds(duration)\n\n // if (duration > 500)\n // return `${(duration / 1000).toFixed(4)}s`\n\n // // https://elijahmanor.com/format-js-numbers\n // // https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\n // return duration.toLocaleString('en-US', {\n // style: 'unit',\n // unit: 'millisecond',\n // notation: 'compact',\n // compactDisplay: 'long',\n // })\n }\n}\n\n/** If you parsed a date without time zone, you may need to shift it to local time */\nexport function datetimeToLocal(fromDate: Date): Date {\n return new Date(\n fromDate.getUTCFullYear(),\n fromDate.getUTCMonth(),\n fromDate.getUTCDate(),\n fromDate.getUTCHours(),\n fromDate.getUTCMinutes(),\n fromDate.getUTCSeconds(),\n fromDate.getUTCMilliseconds(),\n )\n}\n\n/** If you parsed a date without time zone, you may need to shift it to UTC time */\nexport function datetimeToUTC(fromDate: Date): Date {\n return new Date(Date.UTC(\n fromDate.getFullYear(),\n fromDate.getMonth(),\n fromDate.getDate(),\n fromDate.getHours(),\n fromDate.getMinutes(),\n fromDate.getSeconds(),\n fromDate.getMilliseconds(),\n ))\n}\n\n// const tsMs2000 = 946684800000 // same as Jan 11 1970 in ms\n// const tsMs2500 = 16725225600000 // same as Jul 13 1970 in ms\n// 1000000000000\n\n/** ms -> s with simple check. Assume low values are already ms */\nexport function timestampMillisecondsToSeconds(ts: number, smart = true) {\n if (ts <= 0)\n return 0\n if (smart && ts < 1000000000000) { // TODO find a better threshold and add tests\n return ts\n // log.warn('Timestamp might already be in seconds?', ts)\n }\n return Math.floor(ts / 1000)\n}\n\n/** s -> ms with simple check. Assume high values are already ms */\nexport function timestampSecondsToMilliseconds(ts: number, smart = true) {\n if (ts <= 0)\n return 0\n if (smart && ts > 1000000000000) { // TODO find a better threshold and add tests\n return ts\n // log.warn('Timestamp might already be in milliseconds?', ts)\n }\n return Math.floor(ts * 1000)\n}\n\nexport const TIME_YEAR_MS = 31536000000 // 365 * 24 * 60 * 60 * 1000\nexport const TIME_YEAR_S = 31536000 // 365 * 24 * 60 * 60\nexport const TIME_MONTH_MS = 2592000000 // 30 * 24 * 60 * 60 * 1000\nexport const TIME_MONTH_S = 2592000 // 30 * 24 * 60 * 60\nexport const TIME_WEEK_MS = 604800000 // 7 * 24 * 60 * 60 * 1000\nexport const TIME_WEEK_S = 604800 // 7 * 24 * 60 * 60\nexport const TIME_DAY_MS = 86400000 // 24 * 60 * 60 * 1000\nexport const TIME_DAY_S = 86400 // 24 * 60 * 60\nexport const TIME_HOUR_MS = 3600000 // 60 * 60 * 1000\nexport const TIME_HOUR_S = 3600 // 60 * 60\nexport const TIME_MINUTE_MS = 60000 // 60 * 1000\nexport const TIME_MINUTE_S = 60 // 60\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/data/day.ts"],"names":["DAY_MS","dayYear","day","dayMonth","dayDay","dayToParts","dayToDate","utc"],"mappings":"AAEO,6EAAMA,CAAAA,CAAS,KAAA,CAWf,SAASC,CAAAA,CAAQC,CAAAA,CAAyB,CAC/C,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAM,GAAK,CAC/B,CAEO,SAASC,CAAAA,CAASD,CAAAA,CAAyB,CAChD,OAAO,IAAA,CAAK,KAAA,CAAOA,CAAAA,CAAM,GAAA,CAAO,GAAG,CACrC,CAEO,SAASE,CAAAA,CAAOF,CAAAA,CAAyB,CAC9C,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAM,GAAG,CAC7B,CAEO,SAASG,CAAAA,CAAWH,CAAAA,CAAyC,CAClE,MAAO,CAACD,CAAAA,CAAQC,CAAG,CAAA,CAAGC,CAAAA,CAASD,CAAG,CAAA,CAAGE,CAAAA,CAAOF,CAAG,CAAC,CAClD,CAEO,SAASI,CAAAA,CAAUJ,CAAAA,CAAeK,CAAAA,CAAM,CAAA,CAAA,CAAa,CAC1D,OAAOA,CAAAA,CACH,IAAI,IAAA,CAAK,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-2RBU7QFL.cjs","sourcesContent":["// Functional Variant\n\nexport const DAY_MS = 86400000 // 1000 * 60 * 60 * 24\n\nexport type DayValue = number\n\nexport type DayInput =\n | DayValue\n | number\n | string\n | Date\n | [number, number?, number?]\n\nexport function dayYear(day: DayValue): DayValue {\n return Math.floor(day / 10000)\n}\n\nexport function dayMonth(day: DayValue): DayValue {\n return Math.floor((day / 100) % 100)\n}\n\nexport function dayDay(day: DayValue): DayValue {\n return Math.floor(day % 100)\n}\n\nexport function dayToParts(day: DayValue): [number, number, number] {\n return [dayYear(day), dayMonth(day), dayDay(day)]\n}\n\nexport function dayToDate(day: DayValue, utc = false): Date {\n return utc\n ? new Date(`${dayToString(day)}T00:00:00.000Z`)\n : new Date(\n day / 10000, // year\n Math.max(0, ((day / 100) % 100) - 1), // month\n Math.max(1, day % 100), // day\n )\n}\n\nexport function dayFromToday(): DayValue {\n return dayFromDate(new Date())\n}\n\nexport function dayFromAny(\n value: DayInput,\n utc = false,\n): DayValue | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return value\n }\n else if (typeof value === 'string') {\n return dayFromString(value)\n }\n else if (Array.isArray(value) && value.length >= 1) {\n return dayFromParts(...value)\n }\n else if (value instanceof Date) {\n return dayFromDate(value, utc)\n // } else if (value instanceof Day) {\n // return value.days\n }\n}\n\nexport function dayToDateUTC(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/** @deprecated use dayToDateUTC */\nexport function dayToDateGMT(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\nexport function dayFromDate(date: Date, utc = false): DayValue {\n return (\n utc\n ? dayFromString(date.toISOString())\n : date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n )!\n}\n\nexport function dayFromDateUTC(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n/** @deprecated use dayFromDateUTC */\nexport function dayFromDateGMT(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n\nexport function dayToTimestampSeconds(day: DayValue, utc = true): number {\n return Math.floor(dayToDate(day, utc).getTime() / 1000)\n}\n\n/// Timestamp in miliseconds\nexport function dayToTimestamp(day: DayValue, utc = true): number {\n return dayToDate(day, utc).getTime()\n}\n\n/// Timestamp in miliseconds\nexport function dayFromTimestamp(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(ms), utc)\n}\n\nexport function dayFromTimestampSeconds(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(Math.floor(ms * 1000)), utc) \n}\n\nexport function dayToString(day: DayValue, sep = '-') {\n const baseString = String(day)\n return (\n baseString.slice(0, 4) + sep\n + baseString.slice(4, 6) + sep\n + baseString.slice(6, 8)\n )\n}\n\n/// Day value from parts, returns undefined if invalid\nexport function dayFromParts(\n year: number,\n month = 1,\n day = 1,\n): DayValue | undefined {\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return year * 10000 + month * 100 + day\n}\n\n/// Day value from string, returns undefined if invalid\nexport function dayFromString(value: string): DayValue | undefined {\n const string = String(value)\n .replace(/\\D/g, '')\n .slice(0, 8)\n if (string.length === 8)\n return +string\n}\n\nexport function dayMonthStart(day: DayValue, offset = 0): DayValue {\n let year = dayYear(day)\n let month = dayMonth(day)\n if (offset !== 0) {\n month += offset\n year += Math.floor((month - 1) / 12)\n month = Math.floor((month - 1) % 12) + 1\n if (month === 0)\n month = 12\n }\n return dayFromParts(year, month, 1)!\n}\n\nexport function dayYearStart(day: DayValue, offset = 0): DayValue {\n const year = dayYear(day)\n return dayFromParts(year + offset, 1, 1)!\n}\n\nexport function dayOffset(day: DayValue, offset: number): DayValue {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return dayFromTimestamp(dayToTimestamp(day) + offset * DAY_MS)\n}\n\nexport function dayDiff(left: DayValue, right: DayValue): number {\n return Math.round((dayToTimestamp(right) - dayToTimestamp(left)) / DAY_MS)\n}\n\n/** List of dates for loops */\nexport function dayRange(left: DayValue, right?: DayValue): number[] {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n list.push(left)\n left = dayOffset(left, +1)\n }\n return list\n}\n\n/** Iterator, see dayRange */\nexport function* dayIterator(left: DayValue, right?: DayValue) {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n yield left\n left = dayOffset(left, +1)\n }\n return list\n}\n"]}
1
+ {"version":3,"sources":["../src/common/data/day.ts"],"names":["DAY_MS","dayYear","day","dayMonth","dayDay","dayToParts","dayToDate","utc"],"mappings":"AAEO,6EAAMA,CAAAA,CAAS,KAAA,CAWf,SAASC,CAAAA,CAAQC,CAAAA,CAAyB,CAC/C,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAM,GAAK,CAC/B,CAEO,SAASC,CAAAA,CAASD,CAAAA,CAAyB,CAChD,OAAO,IAAA,CAAK,KAAA,CAAOA,CAAAA,CAAM,GAAA,CAAO,GAAG,CACrC,CAEO,SAASE,CAAAA,CAAOF,CAAAA,CAAyB,CAC9C,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAM,GAAG,CAC7B,CAEO,SAASG,CAAAA,CAAWH,CAAAA,CAAyC,CAClE,MAAO,CAACD,CAAAA,CAAQC,CAAG,CAAA,CAAGC,CAAAA,CAASD,CAAG,CAAA,CAAGE,CAAAA,CAAOF,CAAG,CAAC,CAClD,CAEO,SAASI,CAAAA,CAAUJ,CAAAA,CAAeK,CAAAA,CAAM,CAAA,CAAA,CAAa,CAC1D,OAAOA,CAAAA,CACH,IAAI,IAAA,CAAK,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-2RBU7QFL.cjs","sourcesContent":["// Functional Variant\n\nexport const DAY_MS = 86400000 // 1000 * 60 * 60 * 24\n\nexport type DayValue = number\n\nexport type DayInput =\n | DayValue\n | number\n | string\n | Date\n | [number, number?, number?]\n\nexport function dayYear(day: DayValue): DayValue {\n return Math.floor(day / 10000)\n}\n\nexport function dayMonth(day: DayValue): DayValue {\n return Math.floor((day / 100) % 100)\n}\n\nexport function dayDay(day: DayValue): DayValue {\n return Math.floor(day % 100)\n}\n\nexport function dayToParts(day: DayValue): [number, number, number] {\n return [dayYear(day), dayMonth(day), dayDay(day)]\n}\n\nexport function dayToDate(day: DayValue, utc = false): Date {\n return utc\n ? new Date(`${dayToString(day)}T00:00:00.000Z`)\n : new Date(\n day / 10000, // year\n Math.max(0, ((day / 100) % 100) - 1), // month\n Math.max(1, day % 100), // day\n )\n}\n\nexport function dayFromToday(): DayValue {\n return dayFromDate(new Date())\n}\n\nexport function dayFromAny(\n value: DayInput,\n utc = false,\n): DayValue | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return value\n }\n else if (typeof value === 'string') {\n return dayFromString(value)\n }\n else if (Array.isArray(value) && value.length >= 1) {\n return dayFromParts(...value)\n }\n else if (value instanceof Date) {\n return dayFromDate(value, utc)\n // } else if (value instanceof Day) {\n // return value.days\n }\n}\n\nexport function dayToDateUTC(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/** @deprecated use dayToDateUTC */\nexport function dayToDateGMT(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\nexport function dayFromDate(date: Date, utc = false): DayValue {\n return (\n utc\n ? dayFromString(date.toISOString())\n : date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n )!\n}\n\nexport function dayFromDateUTC(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n/** @deprecated use dayFromDateUTC */\nexport function dayFromDateGMT(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n\nexport function dayToTimestampSeconds(day: DayValue, utc = true): number {\n return Math.floor(dayToDate(day, utc).getTime() / 1000)\n}\n\n/// Timestamp in miliseconds\nexport function dayToTimestamp(day: DayValue, utc = true): number {\n return dayToDate(day, utc).getTime()\n}\n\n/// Timestamp in miliseconds\nexport function dayFromTimestamp(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(ms), utc)\n}\n\nexport function dayFromTimestampSeconds(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(Math.floor(ms * 1000)), utc) \n}\n\nexport function dayToString(day: DayValue, sep = '-') {\n const baseString = String(day)\n return (\n baseString.slice(0, 4) + sep\n + baseString.slice(4, 6) + sep\n + baseString.slice(6, 8)\n )\n}\n\n/// Day value from parts, returns undefined if invalid\nexport function dayFromParts(\n year: number,\n month = 1,\n day = 1,\n): DayValue | undefined {\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return year * 10000 + month * 100 + day\n}\n\n/// Day value from string, returns undefined if invalid\nexport function dayFromString(value: string): DayValue | undefined {\n const string = String(value)\n .replace(/\\D/g, '')\n .slice(0, 8)\n if (string.length === 8)\n return +string\n}\n\nexport function dayMonthStart(day: DayValue, offset = 0): DayValue {\n let year = dayYear(day)\n let month = dayMonth(day)\n if (offset !== 0) {\n month += offset\n year += Math.floor((month - 1) / 12)\n month = Math.floor((month - 1) % 12) + 1\n if (month === 0)\n month = 12\n }\n return dayFromParts(year, month, 1)!\n}\n\nexport function dayYearStart(day: DayValue, offset = 0): DayValue {\n const year = dayYear(day)\n return dayFromParts(year + offset, 1, 1)!\n}\n\nexport function dayOffset(day: DayValue, offset: number): DayValue {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return dayFromTimestamp(dayToTimestamp(day) + offset * DAY_MS)\n}\n\nexport function dayDiff(left: DayValue, right: DayValue): number {\n return Math.round((dayToTimestamp(right) - dayToTimestamp(left)) / DAY_MS)\n}\n\n/** List of dates for loops */\nexport function dayRange(left: DayValue, right?: DayValue): number[] {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n list.push(left)\n left = dayOffset(left, +1)\n }\n return list\n}\n\n/** Iterator, see dayRange */\nexport function* dayIterator(left: DayValue, right?: DayValue) {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n yield left\n left = dayOffset(left, +1)\n }\n return list\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/node/env.ts"],"names":["NEWLINE","RE_INI_KEY_VAL","RE_NEWLINES","NEWLINES_MATCH","parse","src","_options","obj","line","idx","keyValueArr","key","val","end","isDoubleQuoted","stringToPath","value","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-2YTY5X3S.cjs","sourcesContent":["// 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\ninterface 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// Parses src into an Object\nfunction parse(src: string, _options: EnvOptions = {}) {\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 ? parse(fs.readFileSync(name, { encoding }), { debug })\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":["../src/node/env.ts"],"names":["NEWLINE","RE_INI_KEY_VAL","RE_NEWLINES","NEWLINES_MATCH","parse","src","_options","obj","line","idx","keyValueArr","key","val","end","isDoubleQuoted","stringToPath","value","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-2YTY5X3S.cjs","sourcesContent":["// 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\ninterface 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// Parses src into an Object\nfunction parse(src: string, _options: EnvOptions = {}) {\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 ? parse(fs.readFileSync(name, { encoding }), { debug })\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-3FLO2VXX.cjs","../src/common/data/message.ts"],"names":["formatMessages","messages","opt","trace","pretty","obj","Uint8ArrayToHexDump"],"mappings":"AAAA,iIAAwC,wDAAyC,wDAAyC,SCS1GA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAA6B,CAAC,CAAA,CACvB,CACP,GAAM,CAAE,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CAAA,CAAM,MAAA,CAAAC,CAAAA,CAAS,CAAA,CAAK,CAAA,CAAIF,CAAAA,CACxC,OAAOD,CAAAA,CAAS,GAAA,CAAKI,CAAAA,EAAQ,CAC3B,EAAA,CAAIA,CAAAA,EAAO,OAAOA,CAAAA,EAAQ,QAAA,CAAU,CAClC,EAAA,CAAID,CAAAA,EAAAA,CAAWC,EAAAA,WAAe,UAAA,EAAcA,EAAAA,WAAe,WAAA,CAAA,CACzD,MAAO,CAAA;AAAA,EAAKC,iCAAAA,CAAuB,CAAC,CAAA;AAAA,CAAA,CAEtC,EAAA,CAAID,EAAAA,WAAe,KAAA,CACjB,MAAO,CAAA,EAAA;AAEE;AAGP;AAGcA;AAKEA","file":"/home/runner/work/zeed/zeed/dist/chunk-3FLO2VXX.cjs","sourcesContent":[null,"import { Uint8ArrayToHexDump } from \"./bin\"\nimport { isArray } from \"./is\"\nimport { objectPlain } from \"./object\"\n\nexport interface RenderMessagesOptions {\n trace?: boolean // = true\n pretty?: boolean // = true\n}\n\nexport function formatMessages(\n messages: any[],\n opt: RenderMessagesOptions = {},\n): any[] {\n const { trace = true, pretty = true } = opt\n return messages.map((obj) => {\n if (obj && typeof obj === 'object') {\n if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer))\n return `\\n${Uint8ArrayToHexDump(obj)}\\n`\n \n if (obj instanceof Error) {\n return `${obj.name}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return `${obj.error.name || 'ErrorEvent'}: ${obj.error.message}` + (trace ? `\\n${obj.error.stack}` : '')\n }\n if (typeof DOMException !== 'undefined' && obj instanceof DOMException) {\n return `${obj.name || 'DOMException'}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (obj && typeof obj === 'object' && 'reason' in obj) {\n return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\\n${obj.stack}` : '')\n }\n \n try {\n obj = objectPlain(obj)\n return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj)\n }\n catch (err) {}\n }\n return String(obj)\n })\n}\n\nexport function renderMessages(\n messages: any | any[],\n opt: RenderMessagesOptions = {},\n): string {\n return formatMessages(isArray(messages) ? messages : [messages], opt).join(' ')\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-3FLO2VXX.cjs","../src/common/data/message.ts"],"names":["formatMessages","messages","opt","trace","pretty","obj","Uint8ArrayToHexDump"],"mappings":"AAAA,iIAAwC,wDAAyC,wDAAyC,SCS1GA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CAA6B,CAAC,CAAA,CACvB,CACP,GAAM,CAAE,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CAAA,CAAM,MAAA,CAAAC,CAAAA,CAAS,CAAA,CAAK,CAAA,CAAIF,CAAAA,CACxC,OAAOD,CAAAA,CAAS,GAAA,CAAKI,CAAAA,EAAQ,CAC3B,EAAA,CAAIA,CAAAA,EAAO,OAAOA,CAAAA,EAAQ,QAAA,CAAU,CAClC,EAAA,CAAID,CAAAA,EAAAA,CAAWC,EAAAA,WAAe,UAAA,EAAcA,EAAAA,WAAe,WAAA,CAAA,CACzD,MAAO,CAAA;AAAA,EAAKC,iCAAAA,CAAuB,CAAC,CAAA;AAAA,CAAA,CAEtC,EAAA,CAAID,EAAAA,WAAe,KAAA,CACjB,MAAO,CAAA,EAAA;AAEE;AAGP;AAGcA;AAKEA","file":"/Users/dirk/work/github-zeed/dist/chunk-3FLO2VXX.cjs","sourcesContent":[null,"import { Uint8ArrayToHexDump } from \"./bin\"\nimport { isArray } from \"./is\"\nimport { objectPlain } from \"./object\"\n\nexport interface RenderMessagesOptions {\n trace?: boolean // = true\n pretty?: boolean // = true\n}\n\nexport function formatMessages(\n messages: any[],\n opt: RenderMessagesOptions = {},\n): any[] {\n const { trace = true, pretty = true } = opt\n return messages.map((obj) => {\n if (obj && typeof obj === 'object') {\n if (pretty && (obj instanceof Uint8Array || obj instanceof ArrayBuffer))\n return `\\n${Uint8ArrayToHexDump(obj)}\\n`\n \n if (obj instanceof Error) {\n return `${obj.name}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (typeof ErrorEvent !== 'undefined' && obj instanceof ErrorEvent) {\n return `${obj.error.name || 'ErrorEvent'}: ${obj.error.message}` + (trace ? `\\n${obj.error.stack}` : '')\n }\n if (typeof DOMException !== 'undefined' && obj instanceof DOMException) {\n return `${obj.name || 'DOMException'}: ${obj.message}` + (trace ? `\\n${obj.stack}` : '')\n }\n if (obj && typeof obj === 'object' && 'reason' in obj) {\n return `PromiseRejection ${obj.type}: ${obj.reason}` + (trace ? `\\n${obj.stack}` : '')\n }\n \n try {\n obj = objectPlain(obj)\n return pretty ? JSON.stringify(obj, null, 2) : JSON.stringify(obj)\n }\n catch (err) {}\n }\n return String(obj)\n })\n}\n\nexport function renderMessages(\n messages: any | any[],\n opt: RenderMessagesOptions = {},\n): string {\n return formatMessages(isArray(messages) ? messages : [messages], opt).join(' ')\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-3O7Y3U7Y.cjs","../src/common/assert.ts"],"names":["fatal","messages","getGlobalLoggerIfExists"],"mappings":"AAAA,qoBAAwC,SCGxBA,CAAAA,CAAAA,GAASC,CAAAA,CAAwB,CAC/C,sBAAAC,iCAAAA,CAAwB,wBAAA,CAAI,QAAQ,CAAA,6BAAG,KAAA,mBAAM,GAAGD,CAAQ,GAAA,CAClD,IAAI,KAAA,CAAM,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-3O7Y3U7Y.cjs","sourcesContent":[null,"import { getGlobalLoggerIfExists } from './log/log'\n\n/** Always throws. */\nexport function fatal(...messages: any[]): never {\n getGlobalLoggerIfExists()?.('assert')?.fatal(...messages)\n throw new Error(`${messages.map(String).join(' ')}`)\n}\n\n/** Throws if condition is not truthy. */\nexport function assert(condition: unknown, ...messages: any[]): asserts condition {\n if (condition == null || (typeof condition === 'number' && Number.isNaN(condition)) || !condition)\n fatal(...messages)\n}\n\n/** Alias for `assert` for better differentiation to unit test's assert function. */\nexport function assertCondition(condition: unknown, ...messages: any[]): asserts condition {\n assert(condition, ...messages)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-3O7Y3U7Y.cjs","../src/common/assert.ts"],"names":["fatal","messages","getGlobalLoggerIfExists"],"mappings":"AAAA,qoBAAwC,SCGxBA,CAAAA,CAAAA,GAASC,CAAAA,CAAwB,CAC/C,sBAAAC,iCAAAA,CAAwB,wBAAA,CAAI,QAAQ,CAAA,6BAAG,KAAA,mBAAM,GAAGD,CAAQ,GAAA,CAClD,IAAI,KAAA,CAAM,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-3O7Y3U7Y.cjs","sourcesContent":[null,"import { getGlobalLoggerIfExists } from './log/log'\n\n/** Always throws. */\nexport function fatal(...messages: any[]): never {\n getGlobalLoggerIfExists()?.('assert')?.fatal(...messages)\n throw new Error(`${messages.map(String).join(' ')}`)\n}\n\n/** Throws if condition is not truthy. */\nexport function assert(condition: unknown, ...messages: any[]): asserts condition {\n if (condition == null || (typeof condition === 'number' && Number.isNaN(condition)) || !condition)\n fatal(...messages)\n}\n\n/** Alias for `assert` for better differentiation to unit test's assert function. */\nexport function assertCondition(condition: unknown, ...messages: any[]): asserts condition {\n assert(condition, ...messages)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-3TNVJY4F.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-3TNVJY4F.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-3TNVJY4F.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-3TNVJY4F.cjs"}
@@ -1,2 +1,2 @@
1
- import{b as A}from"./chunk-4LIUGZHX.js";import{h as C}from"./chunk-GBX4HAEG.js";import{q as E,u as j}from"./chunk-KBV6B6VE.js";import{f as T,h as D}from"./chunk-2COZNZSC.js";import{c as $}from"./chunk-OTNXCBEK.js";function O(g,M,p={}){return new Proxy(p,{get:(d,u)=>u in d?d[u]:(...w)=>g(u,w,M)})}function N(g={}){let{name:M=j("hub"),encoder:p=new A,retryAfter:d=1e3,ignoreUnhandled:u=!0,logLevel:w=!1}=g,s=$(M,w),L={},c,f=[],x,m={},R=()=>{clearTimeout(x)},y=async()=>{if(clearTimeout(x),c){if(c.isConnected)for(;f.length;){let n=f[0];try{c.postMessage(await p.encode(n)),f.shift()}catch(o){s.warn("postMessage",o);break}}f.length>0&&d>0&&(x=setTimeout(y,d))}},b=async n=>{s("enqueue postMessage",n),f.push(n),await y()},P=async n=>{c=n,c.on("connect",y),c.on("message",async o=>{s("onmessage",typeof o);let{name:r,args:v,id:e,result:l,error:a}=await p.decode(o.data);if(r){s(`name ${r} id ${e}`);try{if(L[r]==null)throw new Error(`handler for ${r} was not found`);let t=L[r](...v);D(t)&&(t=await t),s(`result ${t}`),e&&await b({id:e,result:t})}catch(t){let i=t instanceof Error?t:new Error(C(t));s.warn("execution error",i.name),await b({id:e,error:{message:i.message,stack:i.stack,name:i.name}})}}else if(e)if(s(`response for id=${e}: result=${l}, error=${a}`),m[e]==null)l===void 0?s(`skip response for ${e}`):s.warn(`no response hook for ${e}`);else{let[t,i]=m[e];if(t&&i)if(delete m[e],a){let h=new Error(a.message);h.stack=a.stack,h.name=a.name,s.warn("reject",h.name),i(h)}else s("resolve",l),t(l)}else u||s.warn("Unhandled message",o)}),await y()},k=async(n,o,r={})=>{let{timeout:v=5e3}=r,e=E();return await b({name:n,args:o,id:e}),T(new Promise((l,a)=>m[e]=[l,a]),v)};return g.channel&&P(g.channel),{dispose:R,connect:P,listen(n){Object.assign(L,n)},send(){return O(k,{},{options(n){return O(k,{...n})}})}}}export{O as a,N as b};
2
- //# sourceMappingURL=chunk-GMJXOP7Z.js.map
1
+ import{b as A}from"./chunk-4LIUGZHX.js";import{h as C}from"./chunk-GBX4HAEG.js";import{q as E,u as j}from"./chunk-WVAB6E4Q.js";import{f as T,h as D}from"./chunk-2COZNZSC.js";import{c as $}from"./chunk-OTNXCBEK.js";function O(g,M,p={}){return new Proxy(p,{get:(d,u)=>u in d?d[u]:(...w)=>g(u,w,M)})}function N(g={}){let{name:M=j("hub"),encoder:p=new A,retryAfter:d=1e3,ignoreUnhandled:u=!0,logLevel:w=!1}=g,s=$(M,w),L={},c,f=[],x,m={},R=()=>{clearTimeout(x)},y=async()=>{if(clearTimeout(x),c){if(c.isConnected)for(;f.length;){let n=f[0];try{c.postMessage(await p.encode(n)),f.shift()}catch(o){s.warn("postMessage",o);break}}f.length>0&&d>0&&(x=setTimeout(y,d))}},b=async n=>{s("enqueue postMessage",n),f.push(n),await y()},P=async n=>{c=n,c.on("connect",y),c.on("message",async o=>{s("onmessage",typeof o);let{name:r,args:v,id:e,result:l,error:a}=await p.decode(o.data);if(r){s(`name ${r} id ${e}`);try{if(L[r]==null)throw new Error(`handler for ${r} was not found`);let t=L[r](...v);D(t)&&(t=await t),s(`result ${t}`),e&&await b({id:e,result:t})}catch(t){let i=t instanceof Error?t:new Error(C(t));s.warn("execution error",i.name),await b({id:e,error:{message:i.message,stack:i.stack,name:i.name}})}}else if(e)if(s(`response for id=${e}: result=${l}, error=${a}`),m[e]==null)l===void 0?s(`skip response for ${e}`):s.warn(`no response hook for ${e}`);else{let[t,i]=m[e];if(t&&i)if(delete m[e],a){let h=new Error(a.message);h.stack=a.stack,h.name=a.name,s.warn("reject",h.name),i(h)}else s("resolve",l),t(l)}else u||s.warn("Unhandled message",o)}),await y()},k=async(n,o,r={})=>{let{timeout:v=5e3}=r,e=E();return await b({name:n,args:o,id:e}),T(new Promise((l,a)=>m[e]=[l,a]),v)};return g.channel&&P(g.channel),{dispose:R,connect:P,listen(n){Object.assign(L,n)},send(){return O(k,{},{options(n){return O(k,{...n})}})}}}export{O as a,N as b};
2
+ //# sourceMappingURL=chunk-3U2QR5SP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/data/format.ts"],"names":["formatBytesToHumanBase1024","bytes","decimals","units","c","i","h"],"mappings":"AACO,kFAASA,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-3VEGCRLF.cjs","sourcesContent":["/** 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":["../src/common/data/format.ts"],"names":["formatBytesToHumanBase1024","bytes","decimals","units","c","i","h"],"mappings":"AACO,kFAASA,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-3VEGCRLF.cjs","sourcesContent":["/** 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-4B2XCWGL.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-4B2XCWGL.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-4B2XCWGL.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-4B2XCWGL.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-4SKL5XXG.cjs","../src/common/data/deep.ts"],"names":["deepEqual","a","b","hash","isPrimitive","p","aa","bb","deepStripUndefinedInPlace","isRecord","isArray","i","deepMerge","target","sources","source","isObject","key","targetValue","sourceValue"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-4SKL5XXG.cjs","sourcesContent":[null,"/* eslint-disable no-prototype-builtins */\n\nimport { isArray, isObject, isPrimitive, isRecord } from './is'\n\nexport function deepEqual(a: any, b: any, hash = new WeakSet()) {\n // if both x and y are null or undefined and exactly the same\n if (a === b)\n return true\n\n // Cyclic\n if (hash.has(b)) {\n // console.log('cyclic')\n return false\n }\n\n if (!isPrimitive(b))\n hash.add(b)\n\n // if they are not strictly equal, they both need to be Objects\n if (!(a instanceof Object) || !(b instanceof Object))\n return false\n\n // they must have the exact same prototype chain, the closest we can do is\n // test there constructor.\n if (a.constructor !== b.constructor)\n return false\n\n // Shortcut to avoid to many loops\n if (a.length !== b.length)\n return false\n\n for (const p in a) {\n // other properties were tested using x.constructor === y.constructor\n if (!a.hasOwnProperty(p))\n continue\n\n // allows to compare x[ p ] and y[ p ] when set to undefined\n if (!b.hasOwnProperty(p))\n return false\n\n const aa = a[p]\n const bb = b[p]\n\n // if they have the same strict value or identity then they are equal\n // if (aa === bb) {\n // console.log('eq', typeof bb)\n // if (bb != null) hash.set(bb, true)\n // continue\n // }\n //\n // // Numbers, Strings, Functions, Booleans must be strictly equal\n // if (typeof (aa) !== 'object') {\n // return false\n // }\n\n // Objects and Arrays must be tested recursively\n if (!deepEqual(aa, bb, hash))\n return false\n }\n\n // allows x[ p ] to be set to undefined\n for (const p in b) {\n if (b.hasOwnProperty(p) && !a.hasOwnProperty(p))\n return false\n }\n\n return true\n}\n\n/** Strip properties with value `undefined` in place */\nexport function deepStripUndefinedInPlace(a: any, hash = new WeakSet()) {\n // Cyclic\n if (hash.has(a))\n return '[Circular ~]'\n if (!isPrimitive(a))\n hash.add(a)\n\n if (isRecord(a)) {\n for (const p in a) {\n if (!a.hasOwnProperty(p))\n continue\n if (a[p] === undefined) {\n delete a[p]\n continue\n }\n deepStripUndefinedInPlace(a[p], hash)\n }\n }\n else if (isArray(a)) {\n for (let i = a.length - 1; i >= 0; i--) {\n if (a[i] === undefined)\n a.splice(i, 1)\n }\n }\n // else ignore\n\n return a\n}\n\nexport function deepMerge(target: any, ...sources: any[]) {\n // todo cyclic protection\n for (const source of sources) {\n if (!isObject(target))\n target = {}\n\n if (source == null || !isObject(source))\n continue\n\n Object.keys(source).forEach((key) => {\n const targetValue = target[key]\n const sourceValue = (source as any)[key]\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue))\n target[key] = targetValue.concat(sourceValue)\n else if (isObject(targetValue) && isObject(sourceValue))\n target[key] = deepMerge(Object.assign({}, targetValue), sourceValue)\n else\n target[key] = sourceValue\n })\n }\n\n return target\n}\n\n// // https://stackoverflow.com/a/40294058/140927\n// // Handles cyclic references\n// export function deepClonePrimitives(obj, hash = new WeakMap()) {\n//\n// // primitives\n// if (Object(obj) !== obj) {\n// // log('Primitive', obj)\n// return obj\n// }\n//\n// // cyclic reference\n// if (hash.has(obj)) {\n// return hash.get(obj)\n// }\n//\n// let result\n//\n// // primitives as objects like new String(), new Number()\n// if (\n// obj instanceof String ||\n// obj instanceof Number ||\n// obj instanceof BigInt ||\n// obj instanceof Boolean ||\n// obj instanceof Symbol\n// ) {\n// result = new obj.constructor(obj.valueOf())\n// // hash.set(obj, result)\n// return result\n// }\n//\n// // log('Obj', obj)\n//\n// if (obj instanceof Set) {\n// result = new Set(obj)\n// } else if (obj instanceof Map) {\n// result = new Map(Array.from(obj, ([key, val]) => [key, deepClonePrimitives(val, hash)]))\n// } else if (obj instanceof Date) {\n// result = new Date(obj)\n// } else if (obj instanceof RegExp) {\n// result = new RegExp(obj.source, obj.flags)\n// } else if (Array.isArray(obj)) {\n// result = Array.from(obj, val => deepClonePrimitives(val, hash))\n// } else if (obj.constructor) {\n// result = new obj.constructor()\n// log('bj object', result)\n// } else if (obj instanceof Function || typeof obj === 'function') {\n// log('Keep object', obj, Object.getPrototypeOf(obj))\n// result = obj\n// } else {\n// result = Object.create(null)\n// }\n//\n// hash.set(obj, result)\n//\n// return Object.assign(result, ...Object.keys(obj).map(key => ({\n// [key]: deepClonePrimitives(obj[key], hash),\n// })))\n// }\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-4SKL5XXG.cjs","../src/common/data/deep.ts"],"names":["deepEqual","a","b","hash","isPrimitive","p","aa","bb","deepStripUndefinedInPlace","isRecord","isArray","i","deepMerge","target","sources","source","isObject","key","targetValue","sourceValue"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-4SKL5XXG.cjs","sourcesContent":[null,"/* eslint-disable no-prototype-builtins */\n\nimport { isArray, isObject, isPrimitive, isRecord } from './is'\n\nexport function deepEqual(a: any, b: any, hash = new WeakSet()) {\n // if both x and y are null or undefined and exactly the same\n if (a === b)\n return true\n\n // Cyclic\n if (hash.has(b)) {\n // console.log('cyclic')\n return false\n }\n\n if (!isPrimitive(b))\n hash.add(b)\n\n // if they are not strictly equal, they both need to be Objects\n if (!(a instanceof Object) || !(b instanceof Object))\n return false\n\n // they must have the exact same prototype chain, the closest we can do is\n // test there constructor.\n if (a.constructor !== b.constructor)\n return false\n\n // Shortcut to avoid to many loops\n if (a.length !== b.length)\n return false\n\n for (const p in a) {\n // other properties were tested using x.constructor === y.constructor\n if (!a.hasOwnProperty(p))\n continue\n\n // allows to compare x[ p ] and y[ p ] when set to undefined\n if (!b.hasOwnProperty(p))\n return false\n\n const aa = a[p]\n const bb = b[p]\n\n // if they have the same strict value or identity then they are equal\n // if (aa === bb) {\n // console.log('eq', typeof bb)\n // if (bb != null) hash.set(bb, true)\n // continue\n // }\n //\n // // Numbers, Strings, Functions, Booleans must be strictly equal\n // if (typeof (aa) !== 'object') {\n // return false\n // }\n\n // Objects and Arrays must be tested recursively\n if (!deepEqual(aa, bb, hash))\n return false\n }\n\n // allows x[ p ] to be set to undefined\n for (const p in b) {\n if (b.hasOwnProperty(p) && !a.hasOwnProperty(p))\n return false\n }\n\n return true\n}\n\n/** Strip properties with value `undefined` in place */\nexport function deepStripUndefinedInPlace(a: any, hash = new WeakSet()) {\n // Cyclic\n if (hash.has(a))\n return '[Circular ~]'\n if (!isPrimitive(a))\n hash.add(a)\n\n if (isRecord(a)) {\n for (const p in a) {\n if (!a.hasOwnProperty(p))\n continue\n if (a[p] === undefined) {\n delete a[p]\n continue\n }\n deepStripUndefinedInPlace(a[p], hash)\n }\n }\n else if (isArray(a)) {\n for (let i = a.length - 1; i >= 0; i--) {\n if (a[i] === undefined)\n a.splice(i, 1)\n }\n }\n // else ignore\n\n return a\n}\n\nexport function deepMerge(target: any, ...sources: any[]) {\n // todo cyclic protection\n for (const source of sources) {\n if (!isObject(target))\n target = {}\n\n if (source == null || !isObject(source))\n continue\n\n Object.keys(source).forEach((key) => {\n const targetValue = target[key]\n const sourceValue = (source as any)[key]\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue))\n target[key] = targetValue.concat(sourceValue)\n else if (isObject(targetValue) && isObject(sourceValue))\n target[key] = deepMerge(Object.assign({}, targetValue), sourceValue)\n else\n target[key] = sourceValue\n })\n }\n\n return target\n}\n\n// // https://stackoverflow.com/a/40294058/140927\n// // Handles cyclic references\n// export function deepClonePrimitives(obj, hash = new WeakMap()) {\n//\n// // primitives\n// if (Object(obj) !== obj) {\n// // log('Primitive', obj)\n// return obj\n// }\n//\n// // cyclic reference\n// if (hash.has(obj)) {\n// return hash.get(obj)\n// }\n//\n// let result\n//\n// // primitives as objects like new String(), new Number()\n// if (\n// obj instanceof String ||\n// obj instanceof Number ||\n// obj instanceof BigInt ||\n// obj instanceof Boolean ||\n// obj instanceof Symbol\n// ) {\n// result = new obj.constructor(obj.valueOf())\n// // hash.set(obj, result)\n// return result\n// }\n//\n// // log('Obj', obj)\n//\n// if (obj instanceof Set) {\n// result = new Set(obj)\n// } else if (obj instanceof Map) {\n// result = new Map(Array.from(obj, ([key, val]) => [key, deepClonePrimitives(val, hash)]))\n// } else if (obj instanceof Date) {\n// result = new Date(obj)\n// } else if (obj instanceof RegExp) {\n// result = new RegExp(obj.source, obj.flags)\n// } else if (Array.isArray(obj)) {\n// result = Array.from(obj, val => deepClonePrimitives(val, hash))\n// } else if (obj.constructor) {\n// result = new obj.constructor()\n// log('bj object', result)\n// } else if (obj instanceof Function || typeof obj === 'function') {\n// log('Keep object', obj, Object.getPrototypeOf(obj))\n// result = obj\n// } else {\n// result = Object.create(null)\n// }\n//\n// hash.set(obj, result)\n//\n// return Object.assign(result, ...Object.keys(obj).map(key => ({\n// [key]: deepClonePrimitives(obj[key], hash),\n// })))\n// }\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/crypto/aes-sealed.ts"],"names":["encryptAesGcm","data","key","authenticating","iv","encrypted","encryptedArray","combined","decryptAesGcm","decrypted"],"mappings":"AAEA,+EAAA,SAAsBA,CAAAA,CAAcC,CAAAA,CAAkBC,CAAAA,CAAgBC,CAAAA,CAA6B,IAAI,UAAA,CAAmC,CACxI,IAAMC,CAAAA,CAAK,MAAA,CAAO,eAAA,CAAgB,IAAI,UAAA,CAAW,EAAE,CAAC,CAAA,CAC9CC,CAAAA,CAAY,MAAM,MAAA,CAAO,MAAA,CAAO,OAAA,CACpC,CACE,IAAA,CAAM,SAAA,CACN,EAAA,CAAAD,CAAAA,CACA,SAAA,CAAW,GAAA,CACX,cAAA,CAAgBD,CAClB,CAAA,CACAD,CAAAA,CACAD,CACF,CAAA,CAEMK,CAAAA,CAAiB,IAAI,UAAA,CAAWD,CAAS,CAAA,CACzCE,CAAAA,CAAW,IAAI,UAAA,CAAWH,CAAAA,CAAG,MAAA,CAASE,CAAAA,CAAe,MAAM,CAAA,CACjE,OAAAC,CAAAA,CAAS,GAAA,CAAIH,CAAE,CAAA,CACfG,CAAAA,CAAS,GAAA,CAAID,CAAAA,CAAgBF,CAAAA,CAAG,MAAM,CAAA,CAC/BG,CACT,CAEA,MAAA,SAAsBC,CAAAA,CAAcP,CAAAA,CAAkBC,CAAAA,CAAgBC,CAAAA,CAA6B,IAAI,UAAA,CAAmC,CACxI,IAAMC,CAAAA,CAAKH,CAAAA,CAAK,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CACrBI,CAAAA,CAAYJ,CAAAA,CAAK,KAAA,CAAM,EAAE,CAAA,CACzBQ,CAAAA,CAAY,MAAM,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAC5C,IAAA,CAAM,SAAA,CACN,EAAA,CAAAL,CAAAA,CACA,SAAA,CAAW,GAAA,CACX,cAAA,CAAgBD,CAClB,CAAA,CAAGD,CAAAA,CAAKG,CAAS,CAAA,CACjB,OAAO,IAAI,UAAA,CAAWI,CAAS,CACjC,CAAA,6BAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-5CHPHDA5.cjs","sourcesContent":["const AES_GCM_TAG_LENGTH_BITS = 128\n\nexport async function encryptAesGcm(data: Uint8Array, key: CryptoKey, authenticating: Uint8Array = new Uint8Array()): Promise<Uint8Array> {\n const iv = crypto.getRandomValues(new Uint8Array(12)) // AES-GCM requires a 12-byte IV\n const encrypted = await crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv,\n tagLength: AES_GCM_TAG_LENGTH_BITS,\n additionalData: authenticating,\n },\n key,\n data,\n )\n\n const encryptedArray = new Uint8Array(encrypted)\n const combined = new Uint8Array(iv.length + encryptedArray.length)\n combined.set(iv)\n combined.set(encryptedArray, iv.length)\n return combined\n}\n\nexport async function decryptAesGcm(data: Uint8Array, key: CryptoKey, authenticating: Uint8Array = new Uint8Array()): Promise<Uint8Array> {\n const iv = data.slice(0, 12) // nonce is the first 12 bytes\n const encrypted = data.slice(12) // ciphertext and tag of 128 bits\n const decrypted = await crypto.subtle.decrypt({\n name: 'AES-GCM',\n iv,\n tagLength: AES_GCM_TAG_LENGTH_BITS,\n additionalData: authenticating,\n }, key, encrypted)\n return new Uint8Array(decrypted)\n}\n"]}
1
+ {"version":3,"sources":["../src/common/crypto/aes-sealed.ts"],"names":["encryptAesGcm","data","key","authenticating","iv","encrypted","encryptedArray","combined","decryptAesGcm","decrypted"],"mappings":"AAEA,+EAAA,SAAsBA,CAAAA,CAAcC,CAAAA,CAAkBC,CAAAA,CAAgBC,CAAAA,CAA6B,IAAI,UAAA,CAAmC,CACxI,IAAMC,CAAAA,CAAK,MAAA,CAAO,eAAA,CAAgB,IAAI,UAAA,CAAW,EAAE,CAAC,CAAA,CAC9CC,CAAAA,CAAY,MAAM,MAAA,CAAO,MAAA,CAAO,OAAA,CACpC,CACE,IAAA,CAAM,SAAA,CACN,EAAA,CAAAD,CAAAA,CACA,SAAA,CAAW,GAAA,CACX,cAAA,CAAgBD,CAClB,CAAA,CACAD,CAAAA,CACAD,CACF,CAAA,CAEMK,CAAAA,CAAiB,IAAI,UAAA,CAAWD,CAAS,CAAA,CACzCE,CAAAA,CAAW,IAAI,UAAA,CAAWH,CAAAA,CAAG,MAAA,CAASE,CAAAA,CAAe,MAAM,CAAA,CACjE,OAAAC,CAAAA,CAAS,GAAA,CAAIH,CAAE,CAAA,CACfG,CAAAA,CAAS,GAAA,CAAID,CAAAA,CAAgBF,CAAAA,CAAG,MAAM,CAAA,CAC/BG,CACT,CAEA,MAAA,SAAsBC,CAAAA,CAAcP,CAAAA,CAAkBC,CAAAA,CAAgBC,CAAAA,CAA6B,IAAI,UAAA,CAAmC,CACxI,IAAMC,CAAAA,CAAKH,CAAAA,CAAK,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CACrBI,CAAAA,CAAYJ,CAAAA,CAAK,KAAA,CAAM,EAAE,CAAA,CACzBQ,CAAAA,CAAY,MAAM,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAC5C,IAAA,CAAM,SAAA,CACN,EAAA,CAAAL,CAAAA,CACA,SAAA,CAAW,GAAA,CACX,cAAA,CAAgBD,CAClB,CAAA,CAAGD,CAAAA,CAAKG,CAAS,CAAA,CACjB,OAAO,IAAI,UAAA,CAAWI,CAAS,CACjC,CAAA,6BAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-5CHPHDA5.cjs","sourcesContent":["const AES_GCM_TAG_LENGTH_BITS = 128\n\nexport async function encryptAesGcm(data: Uint8Array, key: CryptoKey, authenticating: Uint8Array = new Uint8Array()): Promise<Uint8Array> {\n const iv = crypto.getRandomValues(new Uint8Array(12)) // AES-GCM requires a 12-byte IV\n const encrypted = await crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv,\n tagLength: AES_GCM_TAG_LENGTH_BITS,\n additionalData: authenticating,\n },\n key,\n data,\n )\n\n const encryptedArray = new Uint8Array(encrypted)\n const combined = new Uint8Array(iv.length + encryptedArray.length)\n combined.set(iv)\n combined.set(encryptedArray, iv.length)\n return combined\n}\n\nexport async function decryptAesGcm(data: Uint8Array, key: CryptoKey, authenticating: Uint8Array = new Uint8Array()): Promise<Uint8Array> {\n const iv = data.slice(0, 12) // nonce is the first 12 bytes\n const encrypted = data.slice(12) // ciphertext and tag of 128 bits\n const decrypted = await crypto.subtle.decrypt({\n name: 'AES-GCM',\n iv,\n tagLength: AES_GCM_TAG_LENGTH_BITS,\n additionalData: authenticating,\n }, key, encrypted)\n return new Uint8Array(decrypted)\n}\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkBNMSTFVYcjs = require('./chunk-BNMSTFVY.cjs');var _chunkN7JQO6FGcjs = require('./chunk-N7JQO6FG.cjs');var _chunkWGYEX7AJcjs = require('./chunk-WGYEX7AJ.cjs');var o=class extends _chunkBNMSTFVYcjs.a{constructor(){super(...arguments);this.id=_chunkN7JQO6FGcjs.q.call(void 0, );this.context={};this.dispose=_chunkWGYEX7AJcjs.b.call(void 0, )}close(){this.dispose()}};exports.a = o;
2
+ //# sourceMappingURL=chunk-5FLXL7Q3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-5FLXL7Q3.cjs","../src/common/msg/channel.ts"],"names":["Channel","Emitter","uuid","useDispose"],"mappings":"AAAA,iIAAwC,wDAAyC,wDAAyC,ICgBpGA,CAAAA,CAAf,MAAA,QAA2EC,mBAM/E,CANI,WAAA,CAAA,CAAA,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CAOL,IAAA,CAAA,EAAA,CAAaC,iCAAAA,CAAK,CAGlB,IAAA,CAAA,OAAA,CAAuB,CAAC,CAAA,CAKxB,IAAA,CAAA,OAAA,CAAUC,iCAAAA,CAAW,CAGrB,KAAA,CAAA,CAAQ,CACD,IAAA,CAAK,OAAA,CAAQ,CACpB,CACF,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-5FLXL7Q3.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,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk46APCVZHcjs = require('./chunk-46APCVZH.cjs');var _chunkR6KT6YSJcjs = require('./chunk-R6KT6YSJ.cjs');var _chunkDY6RMJJKcjs = require('./chunk-DY6RMJJK.cjs');var _chunkWGYEX7AJcjs = require('./chunk-WGYEX7AJ.cjs');var _chunkXHBPFXWQcjs = require('./chunk-XHBPFXWQ.cjs');function N(w={}){let{maxParallel:F=3,name:U=_chunkDY6RMJJKcjs.u.call(void 0, "pool"),idConflictResolution:j="memoize"}=w,d=new _chunkR6KT6YSJcjs.a,y=_chunkWGYEX7AJcjs.b.call(void 0, );y.add(v);let m=new (0, _chunk46APCVZHcjs.a)({name:U});m.on("progressCancelled",v);let u=0,c=0,f=0,k=0,i={};async function I(){if(u>0){let[t,e]=_chunkXHBPFXWQcjs.a.call(void 0, );return d.once("didFinish",e),t}}async function z(){for(let t of Object.keys(i))i[t].state==="finished"&&(await i[t].progress.dispose(),delete i[t])}function M(){d.emit("didFinish"),u=0,c=0,z(),m.reset()}function p(){let t=0,e=0;for(let{max:n,resolved:a,state:o}of Object.values(i))t+=n,e+=o==="finished"?n:Math.min(n,a);d.emit("didUpdate",u,c,t,e)}function P(){if(p(),u>0&&u===c&&M(),f>=F)return;let t=Object.values(i).filter(e=>e.state==="waiting");if(t.length>0){let e;for(let n of t)n.group!=null&&Object.values(i).some(a=>a.state==="running"&&a.id!==n.id&&a.group===n.group)||(e==null||n.priority<e.priority)&&(e=n);if(e!=null){let n=e.id,a=e.done;e.state="running",++f,d.emit("didStart",n);let o=r=>{e&&(e.result=r,e.state="finished",e.resolved=e.max,_optionalChain([e, 'access', _ => _.progress, 'optionalAccess', _2 => _2.setCompleted, 'call', _3 => _3()])),--f,++c,P()};e.task(e).then(r=>{a(r),d.emit("didResolve",n,r),o(r)}).catch(r=>{a(),d.emit("didReject",n,r),o()})}}}function l(t){let e=i[t];e&&e.state==="waiting"&&(i[t].state="finished",++c,d.emit("didCancel",t),i[t].progress.dispose(),p())}function v(){Object.keys(i).forEach(l)}function E(t){return i[t]!=null}function O(t,e={}){let n,a=new Promise(s=>n=s),o=_nullishCoalesce(e.id, () => (_chunkDY6RMJJKcjs.q.call(void 0, )));if(i[o]!=null){let s=_nullishCoalesce(e.idConflictResolution, () => (j));if(s==="replace")l(o);else if(s==="memoize"||s==="prioritize"){let T=i[o];return s==="prioritize"&&(T.priority=++k),{id:o,promise:(async()=>{if(T.state==="finished")return i[o].result})(),dispose:()=>l(o),cancel:()=>l(o)}}else throw new Error(`Pool task with id=${o} already exists!`)}let r=new (0, _chunk46APCVZHcjs.a)({name:o,totalUnits:_nullishCoalesce(e.max, () => (1)),completeUnits:_nullishCoalesce(e.resolved, () => (0))});return m.addChild(r),i[o]={id:o,task:t,priority:++k,group:e.group,state:"waiting",max:_nullishCoalesce(e.max, () => (1)),resolved:_nullishCoalesce(e.resolved, () => (0)),done:n,payload:e.payload,progress:r,setMax(s){r.setTotalUnits(s),i[o].max=s,p()},setResolved(s){r.setCompletetedUnits(s),i[o].resolved=s,p()},incResolved(s=1){r.incCompletedUnits(s),i[o].resolved+=s,p()}},++u,P(),{id:o,promise:a,dispose:()=>l(o),cancel:()=>l(o)}}return{events:d,cancel:l,cancelAll:v,hasById:E,progress:m,enqueue:O,dispose:y,waitFinishAll:I}}exports.a = N;
2
- //# sourceMappingURL=chunk-TU7WPJOU.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkSA5MSIRVcjs = require('./chunk-SA5MSIRV.cjs');var _chunkBNMSTFVYcjs = require('./chunk-BNMSTFVY.cjs');var _chunkN7JQO6FGcjs = require('./chunk-N7JQO6FG.cjs');var _chunkWGYEX7AJcjs = require('./chunk-WGYEX7AJ.cjs');var _chunkXHBPFXWQcjs = require('./chunk-XHBPFXWQ.cjs');function N(w={}){let{maxParallel:F=3,name:U=_chunkN7JQO6FGcjs.u.call(void 0, "pool"),idConflictResolution:j="memoize"}=w,d=new _chunkBNMSTFVYcjs.a,y=_chunkWGYEX7AJcjs.b.call(void 0, );y.add(v);let m=new (0, _chunkSA5MSIRVcjs.a)({name:U});m.on("progressCancelled",v);let u=0,c=0,f=0,k=0,i={};async function I(){if(u>0){let[t,e]=_chunkXHBPFXWQcjs.a.call(void 0, );return d.once("didFinish",e),t}}async function z(){for(let t of Object.keys(i))i[t].state==="finished"&&(await i[t].progress.dispose(),delete i[t])}function M(){d.emit("didFinish"),u=0,c=0,z(),m.reset()}function p(){let t=0,e=0;for(let{max:n,resolved:a,state:o}of Object.values(i))t+=n,e+=o==="finished"?n:Math.min(n,a);d.emit("didUpdate",u,c,t,e)}function P(){if(p(),u>0&&u===c&&M(),f>=F)return;let t=Object.values(i).filter(e=>e.state==="waiting");if(t.length>0){let e;for(let n of t)n.group!=null&&Object.values(i).some(a=>a.state==="running"&&a.id!==n.id&&a.group===n.group)||(e==null||n.priority<e.priority)&&(e=n);if(e!=null){let n=e.id,a=e.done;e.state="running",++f,d.emit("didStart",n);let o=r=>{e&&(e.result=r,e.state="finished",e.resolved=e.max,_optionalChain([e, 'access', _ => _.progress, 'optionalAccess', _2 => _2.setCompleted, 'call', _3 => _3()])),--f,++c,P()};e.task(e).then(r=>{a(r),d.emit("didResolve",n,r),o(r)}).catch(r=>{a(),d.emit("didReject",n,r),o()})}}}function l(t){let e=i[t];e&&e.state==="waiting"&&(i[t].state="finished",++c,d.emit("didCancel",t),i[t].progress.dispose(),p())}function v(){Object.keys(i).forEach(l)}function E(t){return i[t]!=null}function O(t,e={}){let n,a=new Promise(s=>n=s),o=_nullishCoalesce(e.id, () => (_chunkN7JQO6FGcjs.q.call(void 0, )));if(i[o]!=null){let s=_nullishCoalesce(e.idConflictResolution, () => (j));if(s==="replace")l(o);else if(s==="memoize"||s==="prioritize"){let T=i[o];return s==="prioritize"&&(T.priority=++k),{id:o,promise:(async()=>{if(T.state==="finished")return i[o].result})(),dispose:()=>l(o),cancel:()=>l(o)}}else throw new Error(`Pool task with id=${o} already exists!`)}let r=new (0, _chunkSA5MSIRVcjs.a)({name:o,totalUnits:_nullishCoalesce(e.max, () => (1)),completeUnits:_nullishCoalesce(e.resolved, () => (0))});return m.addChild(r),i[o]={id:o,task:t,priority:++k,group:e.group,state:"waiting",max:_nullishCoalesce(e.max, () => (1)),resolved:_nullishCoalesce(e.resolved, () => (0)),done:n,payload:e.payload,progress:r,setMax(s){r.setTotalUnits(s),i[o].max=s,p()},setResolved(s){r.setCompletetedUnits(s),i[o].resolved=s,p()},incResolved(s=1){r.incCompletedUnits(s),i[o].resolved+=s,p()}},++u,P(),{id:o,promise:a,dispose:()=>l(o),cancel:()=>l(o)}}return{events:d,cancel:l,cancelAll:v,hasById:E,progress:m,enqueue:O,dispose:y,waitFinishAll:I}}exports.a = N;
2
+ //# sourceMappingURL=chunk-5GO3AK4J.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-5GO3AK4J.cjs","../src/common/exec/pool.ts"],"names":["usePool","config","maxParallel","name","uname","idConflictResolution","events","Emitter","dispose","useDispose","cancelAll","progress","Progress","countMax","countResolved","currentParallel","priority","tasks","waitFinishAll","promise","resolve","createPromise","cleanupFinished","id","didFinish","didUpdate","presentMax","presentResolved","max","resolved","state","performNext","waitingTasks","t","taskInfo","tt","done","taskFinished","result","err","cancel","hasById","enqueue","task","uuid","resolution","runningTask","taskProgress","units","inc"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-5GO3AK4J.cjs","sourcesContent":[null,"import { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname, uuid } from '../uuid'\nimport { Progress } from './progress'\nimport { createPromise } from './promise'\n\nexport type PoolTaskIdConflictResolution = 'replace' | 'memoize' | 'prioritize' | 'error'\n\n// export enum PoolTaskIdConflictResolution {\n// /**\n// * Tasks with same `id` are replaced. Newest wins.\n// */\n// replace = 0,\n\n// /**\n// * Task with same `id` will continue to run. Reference is returned with option to cancel.\n// * Named \"memoize\" because the result of the task should always be the same for the same `id`,\n// * like e.g. a download.\n// */\n// memoize = 1,\n\n// /** Like memoize, but try to put on top of the list */\n// prioritize = 2,\n\n// /**\n// * Tasks with same `id` throw error\n// */\n// error = 3,\n\n// }\n\nexport interface PoolConfig {\n name?: string\n maxParallel?: number\n idConflictResolution?: PoolTaskIdConflictResolution\n}\n\nexport type PoolTaskFn<T = any> = (taskInfo: PoolTask<T>) => Promise<T>\n\nexport type PoolTaskState = 'waiting' | 'running' | 'finished'\n\n/** Task */\nexport interface PoolTask<T> {\n readonly id: string\n readonly task: PoolTaskFn<T>\n readonly done: (result?: any) => void\n readonly setMax: (max: number) => void\n readonly setResolved: (resolved: number) => void\n readonly incResolved: (inc?: number) => void\n state: PoolTaskState\n priority: number\n /** Same groups are executed only one at a time */\n group?: string\n\n progress: Progress\n max: number\n resolved: number\n\n result?: T\n payload?: unknown\n}\n\nexport interface PoolTaskEvents {\n didUpdate: (\n max: number,\n resolved: number,\n presentMax: number,\n presentResolved: number\n ) => void\n didStart: (id: string) => void\n didCancel: (id: string) => void\n didFinish: () => void\n didResolve: (id: string, value: any) => void\n didReject: (id: string, error: any) => void\n}\n\n// todo: barrier\n// todo: dependents\n\nexport function usePool<T = any>(config: PoolConfig = {}) {\n const {\n maxParallel = 3,\n name = uname('pool'),\n idConflictResolution = 'memoize',\n } = config\n\n const events = new Emitter<PoolTaskEvents>()\n\n const dispose = useDispose()\n dispose.add(cancelAll)\n\n const progress = new Progress({ name })\n\n progress.on('progressCancelled', cancelAll)\n\n let countMax = 0\n let countResolved = 0\n let currentParallel = 0\n let priority = 0\n const tasks: Record<string, PoolTask<T>> = {}\n\n // const [allFinishedPromise, allFinishedResolve] = createPromise()\n\n async function waitFinishAll() {\n if (countMax > 0) {\n const [promise, resolve] = createPromise()\n events.once('didFinish', resolve)\n return promise\n }\n }\n\n async function cleanupFinished() {\n for (const id of Object.keys(tasks)) {\n const task = tasks[id]\n if (task.state === 'finished') {\n await tasks[id].progress.dispose()\n delete tasks[id]\n }\n }\n }\n\n function didFinish() {\n void events.emit('didFinish')\n // allFinishedResolve(countMax)\n countMax = 0\n countResolved = 0\n void cleanupFinished()\n progress.reset()\n }\n\n function didUpdate() {\n let presentMax = 0\n let presentResolved = 0\n for (const { max, resolved, state } of Object.values(tasks)) {\n presentMax += max\n presentResolved += state === 'finished' ? max : Math.min(max, resolved)\n }\n void events.emit(\n 'didUpdate',\n countMax,\n countResolved,\n presentMax,\n presentResolved,\n )\n }\n\n function performNext() {\n didUpdate()\n if (countMax > 0 && countMax === countResolved)\n didFinish()\n if (currentParallel >= maxParallel)\n return\n const waitingTasks = Object.values(tasks).filter(\n t => t.state === 'waiting',\n )\n if (waitingTasks.length > 0) {\n let taskInfo: PoolTask<T> | undefined\n for (const t of waitingTasks) {\n // Skip task if one of same group is running.\n // Forces serialized execution for subgroup of tasks.\n if (\n t.group != null\n && Object.values(tasks).some(\n tt =>\n tt.state === 'running'\n && tt.id !== t.id\n && tt.group === t.group,\n )\n ) {\n continue\n }\n\n // fifo\n if (taskInfo == null || t.priority < taskInfo.priority)\n taskInfo = t\n }\n if (taskInfo != null) {\n const id = taskInfo.id\n const done = taskInfo.done\n taskInfo.state = 'running'\n ++currentParallel\n void events.emit('didStart', id)\n\n const taskFinished = (result?: T) => {\n if (taskInfo) {\n taskInfo.result = result\n taskInfo.state = 'finished'\n taskInfo.resolved = taskInfo.max\n taskInfo.progress?.setCompleted()\n // void taskInfo.progress.dispose()\n }\n --currentParallel\n ++countResolved\n performNext()\n }\n\n taskInfo\n .task(taskInfo)\n .then((r) => {\n done(r)\n void events.emit('didResolve', id, r)\n taskFinished(r)\n })\n .catch((err) => {\n done()\n void events.emit('didReject', id, err)\n taskFinished()\n })\n }\n }\n }\n\n function cancel(id: string) {\n const taskInfo = tasks[id]\n if (taskInfo && taskInfo.state === 'waiting') {\n tasks[id].state = 'finished'\n ++countResolved\n void events.emit('didCancel', id)\n void tasks[id].progress.dispose()\n didUpdate()\n }\n }\n\n function cancelAll() {\n Object.keys(tasks).forEach(cancel)\n // progress.dispose()\n }\n\n function hasById(id: string) {\n return tasks[id] != null\n }\n\n function enqueue<P>(\n task: PoolTaskFn<T>,\n config: {\n id?: string\n max?: number\n resolved?: number\n group?: string\n idConflictResolution?: PoolTaskIdConflictResolution\n payload?: P\n } = {},\n ) {\n let done: any\n const promise: Promise<any> = new Promise(resolve => (done = resolve))\n const id = config.id ?? uuid()\n\n if (tasks[id] != null) {\n const resolution = config.idConflictResolution ?? idConflictResolution\n\n if (resolution === 'replace') {\n cancel(id)\n }\n else if (resolution === 'memoize' || resolution === 'prioritize') {\n const runningTask = tasks[id]\n\n if (resolution === 'prioritize')\n runningTask.priority = ++priority\n\n return {\n id,\n promise: (async () => {\n if (runningTask.state === 'finished')\n return tasks[id].result\n\n // todo: wait for task to finish\n })(),\n dispose: () => cancel(id),\n cancel: () => cancel(id),\n }\n }\n else {\n throw new Error(`Pool task with id=${id} already exists!`)\n }\n }\n\n const taskProgress = new Progress({\n name: id,\n totalUnits: config.max ?? 1,\n completeUnits: config.resolved ?? 0,\n })\n\n progress.addChild(taskProgress)\n\n tasks[id] = {\n id,\n task,\n priority: ++priority,\n group: config.group,\n state: 'waiting',\n max: config.max ?? 1,\n resolved: config.resolved ?? 0,\n done,\n payload: config.payload,\n progress: taskProgress,\n\n /** @deprecated should use `.progress` */\n setMax(units) {\n taskProgress.setTotalUnits(units)\n tasks[id].max = units\n didUpdate()\n },\n\n /** @deprecated should use `.progress` */\n setResolved(units) {\n taskProgress.setCompletetedUnits(units)\n tasks[id].resolved = units\n didUpdate()\n },\n\n /** @deprecated should use `.progress` */\n incResolved(inc = 1) {\n taskProgress.incCompletedUnits(inc)\n tasks[id].resolved += inc\n didUpdate()\n },\n }\n ++countMax\n performNext()\n\n return {\n id,\n promise,\n dispose: () => cancel(id),\n cancel: () => cancel(id),\n }\n }\n\n return {\n events,\n cancel,\n cancelAll,\n hasById,\n progress,\n enqueue,\n dispose,\n waitFinishAll,\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/crypto/xaes.ts"],"names":["aesBlock","key","data","xor","block","halfKey","index","iv","k1","m","deriveKeyNonce","ivBytes","msb","i","kxBytes","encryptXAES","params","derived","decryptXAES","generateKeyXAES","extractable","importKeyXAES","format","keyData","exportKeyXAES"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-5P4XZHKJ.cjs","sourcesContent":["// Original at https://github.com/dchest/xaes MIT License as of 2024-07-02\n// More at https://words.filippo.io/dispatches/xaes-256-gcm/\n\n/**\n * Implementation of XAES-256-GCM as defined in https://c2sp.org/XAES-256-GCM\n * based on the Web Cryptography API (https://www.w3.org/TR/WebCryptoAPI/).\n *\n * It uses a 256-bit AES-CBC CryptoKey and a 192-bit nonce to derive\n * a 256-bit key and a 96-bit nonce for AES-GCM.\n *\n * Due to the use of the standard CryptoKey and Web Cryptography API operations,\n * this implementation is fully compatible with other parts of the Web Cryptography API.\n * For example, keys can be stored in IndexedDB and be non-extractable. The only\n * additional requirement is that the key must have 'encrypt' usage even for decryption,\n * however, there's no real distinction between encryption and decryption operations\n * for AES-GCM anyway (you can simulate decryption by encrypting the ciphertext).\n */\n\n/**\n * Generates an AES block using the given key and data xored with the given xor.\n */\nasync function aesBlock(key: CryptoKey, data: BufferSource, xor: BufferSource): Promise<Uint8Array> {\n const block = await crypto.subtle.encrypt(\n { name: 'AES-CBC', iv: xor },\n key,\n data,\n )\n return new Uint8Array(block, 0, 16)\n}\n\n/**\n * Derives a half key.\n */\nasync function halfKey(index: number, key: CryptoKey, iv: Uint8Array, k1: Uint8Array): Promise<Uint8Array> {\n const m = new Uint8Array(16)\n m[1] = index\n m[2] = 0x58 // 'X'\n m.set(iv.subarray(0, 12), 4)\n return await aesBlock(key, m, k1)\n}\n\n/**\n * Derives a 256-bit key and 96-bit nonce from the given 256-bit key and a 192-bit nonce.\n */\nasync function deriveKeyNonce(key: CryptoKey, iv: BufferSource): Promise<{ key: CryptoKey, iv: Uint8Array }> {\n if (key.algorithm.name !== 'AES-CBC') {\n throw new Error('key must be for AES-CBC')\n }\n if (!key.usages.includes('encrypt')) {\n throw new Error('key must have \\'encrypt\\' usage')\n }\n // @ts-expect-error todo\n if (key.algorithm.length !== 256) {\n throw new Error('key must be 256 bits')\n }\n if (iv == null || iv.byteLength !== 24) {\n throw new Error('iv must be 24 bytes')\n }\n const ivBytes = ArrayBuffer.isView(iv)\n ? new Uint8Array(iv.buffer, iv.byteOffset, iv.byteLength)\n : new Uint8Array(iv)\n const k1 = await aesBlock(key, new Uint8Array(16), new Uint8Array(16))\n\n let msb = 0\n for (let i = k1.length - 1; i >= 0; i--) {\n [msb, k1[i]] = [(k1[i] >>> 7) & 0xFF, ((k1[i] << 1) | msb) & 0xFF]\n }\n k1[k1.length - 1] ^= (msb * 0b10000111) & 0xFF\n\n const kxBytes = new Uint8Array(32)\n kxBytes.set(await halfKey(0x01, key, ivBytes, k1), 0)\n kxBytes.set(await halfKey(0x02, key, ivBytes, k1), 16)\n\n const kx = await crypto.subtle.importKey(\n 'raw',\n kxBytes,\n { name: 'AES-GCM', length: 256 },\n false,\n [...key.usages],\n )\n return {\n key: kx,\n iv: ivBytes.subarray(12),\n }\n}\n/**\n * Encrypts data using XAES-256-GCM with the given key and iv.\n * Key must be a 256-bit AES-CBC CryptoKey with 'encrypt' usage.\n */\nexport async function encryptXAES(params: {\n iv: BufferSource\n additionalData?: BufferSource\n}, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n const derived = await deriveKeyNonce(key, params.iv)\n return await crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: derived.iv,\n tagLength: 128,\n additionalData: params.additionalData ?? new Uint8Array(),\n },\n derived.key,\n data,\n )\n}\n\n/**\n * Decrypts data using XAES-256-GCM with the given key and iv.\n * Key must be a 256-bit AES-CBC CryptoKey with 'encrypt' and 'decrypt' usages.\n */\nexport async function decryptXAES(params: {\n iv: BufferSource\n additionalData?: BufferSource\n}, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n const derived = await deriveKeyNonce(key, params.iv)\n return await crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: derived.iv,\n tagLength: 128,\n additionalData: params.additionalData ?? new Uint8Array(),\n },\n derived.key,\n data,\n )\n}\n\n/**\n * Generate a random key suitable for XAES-256-GCM.\n * The actual key is an AES-CBC CryptoKey with 256-bit length.\n *\n * This function is not necessary, as you can use crypto.subtle.generateKey with AES-CBC directly.\n */\nexport async function generateKeyXAES(extractable?: boolean): Promise<CryptoKey> {\n return await crypto.subtle.generateKey(\n {\n name: 'AES-CBC',\n // @ts-expect-error todo\n length: 256,\n },\n extractable,\n ['encrypt', 'decrypt'],\n )\n}\n\n/**\n * Import a key suitable for XAES-256-GCM.\n * The actual key must be an AES-CBC CryptoKey with 256-bit length.\n *\n * This function is not necessary, as you can use crypto.subtle.importKey with AES-CBC directly.\n */\nexport async function importKeyXAES(format: 'jwk' | 'raw' | 'pkcs8' | 'spki', keyData: BufferSource | JsonWebKey, extractable?: boolean): Promise<CryptoKey> {\n return await crypto.subtle.importKey( // @ts-expect-error-next-line\n format,\n keyData,\n { name: 'AES-CBC', length: 256 },\n extractable,\n ['encrypt', 'decrypt'],\n )\n}\n\n/**\n * Export a key.\n * The resulting export will have AES-CBC algorithm specified.\n *\n * This function is not necessary, as you can use crypto.subtle.exportKey directly.\n */\nexport async function exportKeyXAES(format: 'jwk' | 'pkcs8' | 'raw' | 'spki', key: CryptoKey): Promise<ArrayBuffer | JsonWebKey> {\n return await crypto.subtle.exportKey(format, key)\n}\n"]}
1
+ {"version":3,"sources":["../src/common/crypto/xaes.ts"],"names":["aesBlock","key","data","xor","block","halfKey","index","iv","k1","m","deriveKeyNonce","ivBytes","msb","i","kxBytes","encryptXAES","params","derived","decryptXAES","generateKeyXAES","extractable","importKeyXAES","format","keyData","exportKeyXAES"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-5P4XZHKJ.cjs","sourcesContent":["// Original at https://github.com/dchest/xaes MIT License as of 2024-07-02\n// More at https://words.filippo.io/dispatches/xaes-256-gcm/\n\n/**\n * Implementation of XAES-256-GCM as defined in https://c2sp.org/XAES-256-GCM\n * based on the Web Cryptography API (https://www.w3.org/TR/WebCryptoAPI/).\n *\n * It uses a 256-bit AES-CBC CryptoKey and a 192-bit nonce to derive\n * a 256-bit key and a 96-bit nonce for AES-GCM.\n *\n * Due to the use of the standard CryptoKey and Web Cryptography API operations,\n * this implementation is fully compatible with other parts of the Web Cryptography API.\n * For example, keys can be stored in IndexedDB and be non-extractable. The only\n * additional requirement is that the key must have 'encrypt' usage even for decryption,\n * however, there's no real distinction between encryption and decryption operations\n * for AES-GCM anyway (you can simulate decryption by encrypting the ciphertext).\n */\n\n/**\n * Generates an AES block using the given key and data xored with the given xor.\n */\nasync function aesBlock(key: CryptoKey, data: BufferSource, xor: BufferSource): Promise<Uint8Array> {\n const block = await crypto.subtle.encrypt(\n { name: 'AES-CBC', iv: xor },\n key,\n data,\n )\n return new Uint8Array(block, 0, 16)\n}\n\n/**\n * Derives a half key.\n */\nasync function halfKey(index: number, key: CryptoKey, iv: Uint8Array, k1: Uint8Array): Promise<Uint8Array> {\n const m = new Uint8Array(16)\n m[1] = index\n m[2] = 0x58 // 'X'\n m.set(iv.subarray(0, 12), 4)\n return await aesBlock(key, m, k1)\n}\n\n/**\n * Derives a 256-bit key and 96-bit nonce from the given 256-bit key and a 192-bit nonce.\n */\nasync function deriveKeyNonce(key: CryptoKey, iv: BufferSource): Promise<{ key: CryptoKey, iv: Uint8Array }> {\n if (key.algorithm.name !== 'AES-CBC') {\n throw new Error('key must be for AES-CBC')\n }\n if (!key.usages.includes('encrypt')) {\n throw new Error('key must have \\'encrypt\\' usage')\n }\n // @ts-expect-error todo\n if (key.algorithm.length !== 256) {\n throw new Error('key must be 256 bits')\n }\n if (iv == null || iv.byteLength !== 24) {\n throw new Error('iv must be 24 bytes')\n }\n const ivBytes = ArrayBuffer.isView(iv)\n ? new Uint8Array(iv.buffer, iv.byteOffset, iv.byteLength)\n : new Uint8Array(iv)\n const k1 = await aesBlock(key, new Uint8Array(16), new Uint8Array(16))\n\n let msb = 0\n for (let i = k1.length - 1; i >= 0; i--) {\n [msb, k1[i]] = [(k1[i] >>> 7) & 0xFF, ((k1[i] << 1) | msb) & 0xFF]\n }\n k1[k1.length - 1] ^= (msb * 0b10000111) & 0xFF\n\n const kxBytes = new Uint8Array(32)\n kxBytes.set(await halfKey(0x01, key, ivBytes, k1), 0)\n kxBytes.set(await halfKey(0x02, key, ivBytes, k1), 16)\n\n const kx = await crypto.subtle.importKey(\n 'raw',\n kxBytes,\n { name: 'AES-GCM', length: 256 },\n false,\n [...key.usages],\n )\n return {\n key: kx,\n iv: ivBytes.subarray(12),\n }\n}\n/**\n * Encrypts data using XAES-256-GCM with the given key and iv.\n * Key must be a 256-bit AES-CBC CryptoKey with 'encrypt' usage.\n */\nexport async function encryptXAES(params: {\n iv: BufferSource\n additionalData?: BufferSource\n}, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n const derived = await deriveKeyNonce(key, params.iv)\n return await crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: derived.iv,\n tagLength: 128,\n additionalData: params.additionalData ?? new Uint8Array(),\n },\n derived.key,\n data,\n )\n}\n\n/**\n * Decrypts data using XAES-256-GCM with the given key and iv.\n * Key must be a 256-bit AES-CBC CryptoKey with 'encrypt' and 'decrypt' usages.\n */\nexport async function decryptXAES(params: {\n iv: BufferSource\n additionalData?: BufferSource\n}, key: CryptoKey, data: BufferSource): Promise<ArrayBuffer> {\n const derived = await deriveKeyNonce(key, params.iv)\n return await crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: derived.iv,\n tagLength: 128,\n additionalData: params.additionalData ?? new Uint8Array(),\n },\n derived.key,\n data,\n )\n}\n\n/**\n * Generate a random key suitable for XAES-256-GCM.\n * The actual key is an AES-CBC CryptoKey with 256-bit length.\n *\n * This function is not necessary, as you can use crypto.subtle.generateKey with AES-CBC directly.\n */\nexport async function generateKeyXAES(extractable?: boolean): Promise<CryptoKey> {\n return await crypto.subtle.generateKey(\n {\n name: 'AES-CBC',\n // @ts-expect-error todo\n length: 256,\n },\n extractable,\n ['encrypt', 'decrypt'],\n )\n}\n\n/**\n * Import a key suitable for XAES-256-GCM.\n * The actual key must be an AES-CBC CryptoKey with 256-bit length.\n *\n * This function is not necessary, as you can use crypto.subtle.importKey with AES-CBC directly.\n */\nexport async function importKeyXAES(format: 'jwk' | 'raw' | 'pkcs8' | 'spki', keyData: BufferSource | JsonWebKey, extractable?: boolean): Promise<CryptoKey> {\n return await crypto.subtle.importKey( // @ts-expect-error-next-line\n format,\n keyData,\n { name: 'AES-CBC', length: 256 },\n extractable,\n ['encrypt', 'decrypt'],\n )\n}\n\n/**\n * Export a key.\n * The resulting export will have AES-CBC algorithm specified.\n *\n * This function is not necessary, as you can use crypto.subtle.exportKey directly.\n */\nexport async function exportKeyXAES(format: 'jwk' | 'pkcs8' | 'raw' | 'spki', key: CryptoKey): Promise<ArrayBuffer | JsonWebKey> {\n return await crypto.subtle.exportKey(format, key)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-5VHLMAKU.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-5VHLMAKU.cjs"}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-5VHLMAKU.cjs"],"names":[],"mappings":"AAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-5VHLMAKU.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/browser/log/log-colors.ts"],"names":["browserSupportsColors"],"mappings":"AAIO,kFAASA,CAAAA,CAAAA,CAAiC,CAI/C,OACE,OAAO,MAAA,CAAW,GAAA,EACf,MAAA,CAAO,OAAA,EAAA,CAEN,MAAA,CAAO,OAAA,CAAQ,IAAA,GAAS,UAAA,EAAc,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAA,CAElD,CAAA,CAAA,CAKP,OAAO,SAAA,CAAc,GAAA,EAClB,SAAA,CAAU,SAAA,EACV,SAAA,CAAU,SAAA,CAAU,WAAA,CAAY,CAAA,CAAE,KAAA,CAAM,uBAAuB,CAAA,CAE3D,CAAA,CAAA,CAMN,OAAO,QAAA,CAAa,GAAA,EAChB,QAAA,CAAS,eAAA,EACT,QAAA,CAAS,eAAA,CAAgB,KAAA,EAEzB,QAAA,CAAS,eAAA,CAAgB,KAAA,CAAM,gBAAA,EAEhC,OAAO,MAAA,CAAW,GAAA,EACjB,MAAA,CAAO,OAAA,EAAA,CAEN,MAAA,CAAO,OAAA,CAAQ,OAAA,EAGb,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAa,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAA,EAG7C,OAAO,SAAA,CAAc,GAAA,EACpB,SAAA,CAAU,SAAA,EACV,SAAA,CAAU,SAAA,CAAU,WAAA,CAAY,CAAA,CAAE,KAAA,CAAM,gBAAgB,CAAA,EAExD,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,EAAA,CAAI,EAAE,CAAA,EAAK,EAAA,EAEnC,OAAO,SAAA,CAAc,GAAA,EACpB,SAAA,CAAU,SAAA,EACV,SAAA,CAAU,SAAA,CAAU,WAAA,CAAY,CAAA,CAAE,KAAA,CAAM,oBAAoB,CAEvE,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-5W7DNVOJ.cjs","sourcesContent":["/* eslint-disable node/prefer-global/process */\n\n// Taken from https://github.com/visionmedia/debug/blob/master/src/browser.js#L27\n\nexport function browserSupportsColors(): boolean {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (\n typeof window !== 'undefined'\n && window.process\n // @ts-expect-error xxx\n && (window.process.type === 'renderer' || window.process.__nwjs)\n ) {\n return true\n }\n\n // Internet Explorer and Edge do not support colors.\n if (\n typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)\n ) {\n return false\n }\n\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (\n (typeof document !== 'undefined'\n && document.documentElement\n && document.documentElement.style\n // @ts-expect-error xxx\n && document.documentElement.style.WebkitAppearance)\n // Is firebug? http://stackoverflow.com/a/398120/376773\n || (typeof window !== 'undefined'\n && window.console\n // @ts-expect-error xxx\n && (window.console.firebug\n // @ts-expect-error xxx\n\n || (window.console.exception && window.console.table)))\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n || (typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)\n // eslint-disable-next-line regexp/no-legacy-features\n && Number.parseInt(RegExp.$1, 10) >= 31)\n // Double check webkit in userAgent just in case we are in a worker\n || (typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/browser/log/log-colors.ts"],"names":["browserSupportsColors"],"mappings":"AAIO,kFAASA,CAAAA,CAAAA,CAAiC,CAI/C,OACE,OAAO,MAAA,CAAW,GAAA,EACf,MAAA,CAAO,OAAA,EAAA,CAEN,MAAA,CAAO,OAAA,CAAQ,IAAA,GAAS,UAAA,EAAc,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAA,CAElD,CAAA,CAAA,CAKP,OAAO,SAAA,CAAc,GAAA,EAClB,SAAA,CAAU,SAAA,EACV,SAAA,CAAU,SAAA,CAAU,WAAA,CAAY,CAAA,CAAE,KAAA,CAAM,uBAAuB,CAAA,CAE3D,CAAA,CAAA,CAMN,OAAO,QAAA,CAAa,GAAA,EAChB,QAAA,CAAS,eAAA,EACT,QAAA,CAAS,eAAA,CAAgB,KAAA,EAEzB,QAAA,CAAS,eAAA,CAAgB,KAAA,CAAM,gBAAA,EAEhC,OAAO,MAAA,CAAW,GAAA,EACjB,MAAA,CAAO,OAAA,EAAA,CAEN,MAAA,CAAO,OAAA,CAAQ,OAAA,EAGb,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAa,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAA,EAG7C,OAAO,SAAA,CAAc,GAAA,EACpB,SAAA,CAAU,SAAA,EACV,SAAA,CAAU,SAAA,CAAU,WAAA,CAAY,CAAA,CAAE,KAAA,CAAM,gBAAgB,CAAA,EAExD,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,EAAA,CAAI,EAAE,CAAA,EAAK,EAAA,EAEnC,OAAO,SAAA,CAAc,GAAA,EACpB,SAAA,CAAU,SAAA,EACV,SAAA,CAAU,SAAA,CAAU,WAAA,CAAY,CAAA,CAAE,KAAA,CAAM,oBAAoB,CAEvE,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-5W7DNVOJ.cjs","sourcesContent":["/* eslint-disable node/prefer-global/process */\n\n// Taken from https://github.com/visionmedia/debug/blob/master/src/browser.js#L27\n\nexport function browserSupportsColors(): boolean {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (\n typeof window !== 'undefined'\n && window.process\n // @ts-expect-error xxx\n && (window.process.type === 'renderer' || window.process.__nwjs)\n ) {\n return true\n }\n\n // Internet Explorer and Edge do not support colors.\n if (\n typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)\n ) {\n return false\n }\n\n // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (\n (typeof document !== 'undefined'\n && document.documentElement\n && document.documentElement.style\n // @ts-expect-error xxx\n && document.documentElement.style.WebkitAppearance)\n // Is firebug? http://stackoverflow.com/a/398120/376773\n || (typeof window !== 'undefined'\n && window.console\n // @ts-expect-error xxx\n && (window.console.firebug\n // @ts-expect-error xxx\n\n || (window.console.exception && window.console.table)))\n // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n || (typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)\n // eslint-disable-next-line regexp/no-legacy-features\n && Number.parseInt(RegExp.$1, 10) >= 31)\n // Double check webkit in userAgent just in case we are in a worker\n || (typeof navigator !== 'undefined'\n && navigator.userAgent\n && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))\n )\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-6HCJ6MJQ.cjs","../src/common/data/day-legacy.ts"],"names":["Day","_Day","days","date","n","dateString","utc","value","year","month","day","sep","baseString"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-6HCJ6MJQ.cjs","sourcesContent":[null,"import { isPromise } from '../exec/promise'\nimport type { DayInput, DayValue } from './day'\nimport { DAY_MS } from './day'\n\n// See also and alternatives:\n// https://blog.openreplay.com/is-it-time-for-the-javascript-temporal-api\n// https://github.com/iamkun/dayjs\n// https://github.com/date-fns/date-fns\n\nexport type DayInputLegacy = DayInput | Day\n\n/**\n * Date represented as positive integer value. Years smaller 0 are not supported.\n * @deprecated\n */\nexport class Day {\n days: DayValue\n\n get value() {\n return this.days\n }\n\n constructor(days?: DayInputLegacy) {\n if (typeof days === 'number') {\n this.days = days\n return\n }\n\n if (days != null)\n days = Day.from(days)?.days\n\n if (days == null) {\n const date = new Date()\n this.days\n = date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n }\n else {\n this.days = days\n }\n }\n\n static fromNumber(n: number): Day {\n return new Day(n)\n }\n\n static fromString(dateString: string): Day | undefined {\n return Day.from(+dateString.replace(/\\D/g, '').slice(0, 8))\n }\n\n static fromDate(date: Date, utc = false): Day {\n return (\n utc\n ? Day.fromString(date.toISOString().substr(0, 10))\n : Day.from(\n date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate(),\n )\n ) as Day\n }\n\n static fromDateUTC(date: Date): Day {\n return Day.fromDate(date, true)\n }\n\n /** @deprecated use fromDateUTC */\n static fromDateGMT(date: Date): Day {\n return Day.fromDate(date, true)\n }\n\n static from(value: DayInputLegacy, utc = false): Day | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return new Day(value)\n }\n else if (typeof value === 'string') {\n return Day.fromString(value)\n }\n else if (Array.isArray(value) && value.length === 3) {\n const [year, month = 1, day = 1] = value\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return new Day(year * 10000 + month * 100 + day)\n }\n else if (value instanceof Date) {\n return Day.fromDate(value, utc)\n }\n else if (value instanceof Day) {\n return value\n }\n }\n\n toNumber(): number {\n return this.days\n }\n\n // Transformer\n\n /** Just for future extensions */\n toJson() {\n return this.days\n }\n\n toString(sep = '-') {\n const baseString = String(this.days)\n return (\n baseString.slice(0, 4)\n + sep\n + baseString.slice(4, 6)\n + sep\n + baseString.slice(6, 8)\n )\n }\n\n toDate(utc = false): Date {\n return utc\n ? new Date(`${this.toString()}T00:00:00.000Z`)\n : new Date(\n this.days / 10000, // year\n ((this.days / 100) % 100) - 1, // month\n this.days % 100, // day\n )\n }\n\n toDateUTC() {\n return this.toDate(true)\n }\n\n /** @deprecated use toDateUTC */\n toDateGMT() {\n return this.toDate(true)\n }\n\n get year() {\n return Math.floor(this.days / 10000)\n }\n\n get month() {\n return Math.floor((this.days / 100) % 100)\n }\n\n get day() {\n return Math.floor(this.days % 100)\n }\n\n // Calculations\n\n dayOffset(offset: number): Day {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return Day.fromDateUTC(\n new Date(this.toDateUTC().getTime() + offset * DAY_MS),\n )\n }\n\n monthStart(): Day {\n return Day.from([this.year, this.month, 1])!\n }\n\n yearStart(): Day {\n return Day.from([this.year, 1, 1])!\n }\n\n /** Very stupid approach, only works for days <= 28 */\n monthOffset(offset: number): Day {\n const m = this.month + offset\n let mm = Math.floor((m - 1) % 12) + 1\n if (mm === 0)\n mm = 12\n const yy = Math.floor((m - 1) / 12)\n // log(\"calc\", m, mm, yy, [this.year + yy, mm, this.day])\n return Day.from([this.year + yy, mm, this.day])!\n }\n\n daysUntil(otherDay: DayInputLegacy): number {\n return Math.round(\n (new Day(otherDay)?.toDateUTC().getTime() - this.toDateUTC().getTime())\n / DAY_MS,\n )\n }\n\n // Shortcuts\n\n yesterday() {\n return this.dayOffset(-1)\n }\n\n tomorrow() {\n return this.dayOffset(+1)\n }\n}\n\nexport async function forEachDay(\n from: DayInputLegacy,\n to: DayInputLegacy,\n handler: (date: Day) => Promise<void> | void,\n) {\n let start = Day.from(from)\n const end = Day.from(to)\n // eslint-disable-next-line no-unmodified-loop-condition\n while (start && end && start?.days <= end?.days) {\n const result = handler(start)\n if (isPromise(result))\n await result\n start = start.dayOffset(+1)\n }\n}\n\nexport function today(): Day {\n return new Day()\n}\n\n/** @deprecated */\nexport function day(days?: DayInputLegacy): Day {\n return new Day(days)\n}\n\nexport function dateStringToDays(dateString: string): number {\n return Day.fromDate(new Date(dateString)).days\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-6HCJ6MJQ.cjs","../src/common/data/day-legacy.ts"],"names":["Day","_Day","days","date","n","dateString","utc","value","year","month","day","sep","baseString"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-6HCJ6MJQ.cjs","sourcesContent":[null,"import { isPromise } from '../exec/promise'\nimport type { DayInput, DayValue } from './day'\nimport { DAY_MS } from './day'\n\n// See also and alternatives:\n// https://blog.openreplay.com/is-it-time-for-the-javascript-temporal-api\n// https://github.com/iamkun/dayjs\n// https://github.com/date-fns/date-fns\n\nexport type DayInputLegacy = DayInput | Day\n\n/**\n * Date represented as positive integer value. Years smaller 0 are not supported.\n * @deprecated\n */\nexport class Day {\n days: DayValue\n\n get value() {\n return this.days\n }\n\n constructor(days?: DayInputLegacy) {\n if (typeof days === 'number') {\n this.days = days\n return\n }\n\n if (days != null)\n days = Day.from(days)?.days\n\n if (days == null) {\n const date = new Date()\n this.days\n = date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n }\n else {\n this.days = days\n }\n }\n\n static fromNumber(n: number): Day {\n return new Day(n)\n }\n\n static fromString(dateString: string): Day | undefined {\n return Day.from(+dateString.replace(/\\D/g, '').slice(0, 8))\n }\n\n static fromDate(date: Date, utc = false): Day {\n return (\n utc\n ? Day.fromString(date.toISOString().substr(0, 10))\n : Day.from(\n date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate(),\n )\n ) as Day\n }\n\n static fromDateUTC(date: Date): Day {\n return Day.fromDate(date, true)\n }\n\n /** @deprecated use fromDateUTC */\n static fromDateGMT(date: Date): Day {\n return Day.fromDate(date, true)\n }\n\n static from(value: DayInputLegacy, utc = false): Day | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return new Day(value)\n }\n else if (typeof value === 'string') {\n return Day.fromString(value)\n }\n else if (Array.isArray(value) && value.length === 3) {\n const [year, month = 1, day = 1] = value\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return new Day(year * 10000 + month * 100 + day)\n }\n else if (value instanceof Date) {\n return Day.fromDate(value, utc)\n }\n else if (value instanceof Day) {\n return value\n }\n }\n\n toNumber(): number {\n return this.days\n }\n\n // Transformer\n\n /** Just for future extensions */\n toJson() {\n return this.days\n }\n\n toString(sep = '-') {\n const baseString = String(this.days)\n return (\n baseString.slice(0, 4)\n + sep\n + baseString.slice(4, 6)\n + sep\n + baseString.slice(6, 8)\n )\n }\n\n toDate(utc = false): Date {\n return utc\n ? new Date(`${this.toString()}T00:00:00.000Z`)\n : new Date(\n this.days / 10000, // year\n ((this.days / 100) % 100) - 1, // month\n this.days % 100, // day\n )\n }\n\n toDateUTC() {\n return this.toDate(true)\n }\n\n /** @deprecated use toDateUTC */\n toDateGMT() {\n return this.toDate(true)\n }\n\n get year() {\n return Math.floor(this.days / 10000)\n }\n\n get month() {\n return Math.floor((this.days / 100) % 100)\n }\n\n get day() {\n return Math.floor(this.days % 100)\n }\n\n // Calculations\n\n dayOffset(offset: number): Day {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return Day.fromDateUTC(\n new Date(this.toDateUTC().getTime() + offset * DAY_MS),\n )\n }\n\n monthStart(): Day {\n return Day.from([this.year, this.month, 1])!\n }\n\n yearStart(): Day {\n return Day.from([this.year, 1, 1])!\n }\n\n /** Very stupid approach, only works for days <= 28 */\n monthOffset(offset: number): Day {\n const m = this.month + offset\n let mm = Math.floor((m - 1) % 12) + 1\n if (mm === 0)\n mm = 12\n const yy = Math.floor((m - 1) / 12)\n // log(\"calc\", m, mm, yy, [this.year + yy, mm, this.day])\n return Day.from([this.year + yy, mm, this.day])!\n }\n\n daysUntil(otherDay: DayInputLegacy): number {\n return Math.round(\n (new Day(otherDay)?.toDateUTC().getTime() - this.toDateUTC().getTime())\n / DAY_MS,\n )\n }\n\n // Shortcuts\n\n yesterday() {\n return this.dayOffset(-1)\n }\n\n tomorrow() {\n return this.dayOffset(+1)\n }\n}\n\nexport async function forEachDay(\n from: DayInputLegacy,\n to: DayInputLegacy,\n handler: (date: Day) => Promise<void> | void,\n) {\n let start = Day.from(from)\n const end = Day.from(to)\n // eslint-disable-next-line no-unmodified-loop-condition\n while (start && end && start?.days <= end?.days) {\n const result = handler(start)\n if (isPromise(result))\n await result\n start = start.dayOffset(+1)\n }\n}\n\nexport function today(): Day {\n return new Day()\n}\n\n/** @deprecated */\nexport function day(days?: DayInputLegacy): Day {\n return new Day(days)\n}\n\nexport function dateStringToDays(dateString: string): number {\n return Day.fromDate(new Date(dateString)).days\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-6U6Q5CBH.cjs","../src/common/data/path.ts"],"names":["MAX_FILENAME_LENGTH","reRelativePath","reTrailingPeriods","reFilenameIllegal","filenameReservedRegex","windowsReservedNameRegex","toValidFilename","string","replacement","reReplacement","escapeRegExp"],"mappings":"AAAA,iIAAwC,ICKlCA,CAAAA,CAAsB,GAAA,CAGtBC,CAAAA,CAAiB,MAAA,CACjBC,CAAAA,CAAoB,MAAA,CACpBC,CAAAA,CAAoB,0CAAA,CAE1B,SAASC,CAAAA,CAAAA,CAAwB,CAC/B,OAAOD,CACT,CAEA,SAASE,CAAAA,CAAAA,CAA2B,CAClC,MAAO,kCACT,CAGO,SAASC,CAAAA,CAAgBC,CAAAA,CAAgBC,CAAAA,CAAc,GAAA,CAAqB,CACjF,EAAA,CAAI,OAAOD,CAAAA,EAAW,QAAA,CACpB,MAAM,IAAI,SAAA,CAAU,mBAAmB,CAAA,CAEzC,EAAA,CAAIH,CAAAA,CAAsB,CAAA,CAAE,IAAA,CAAKI,CAAW,CAAA,CAC1C,MAAM,IAAI,KAAA,CAAM,gEAAgE,CAAA,CAElF,IAAMC,CAAAA,CAAgB,CAAA,CAAA,EAAIC,iCAAAA,CAAwB,CAAC,CAAA,EAAA,CAAA,CAEnD,OAAAH,CAAAA,CAASA,CAAAA,CACN,OAAA,CAAQH,CAAAA,CAAsB,CAAA,CAAGI,CAAW,CAAA,CAC5C,OAAA,CAAQP,CAAAA,CAAgBO,CAAW,CAAA,CACnC,OAAA,CAAQN,CAAAA,CAAmB,EAAE,CAAA,CAC7B,OAAA,CAAQ,IAAI,MAAA,CAAOO,CAAAA,CAAe,IAAI,CAAA,CAAGD,CAAW,CAAA,CACpD,IAAA,CAAK,CAAA,CAERD,CAAAA,CAASF,CAAAA,CAAyB,CAAA,CAAE,IAAA,CAAKE,CAAM,CAAA,CAAIA,CAAAA,CAASC,CAAAA,CAAcD,CAAAA,CAEnEA,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAGP,CAAmB,CAC5C,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-6U6Q5CBH.cjs","sourcesContent":[null,"// https://github.com/sindresorhus/filenamify/blob/main/filenamify.js\n/* eslint-disable no-control-regex */\n\nimport { escapeRegExp } from './regexp'\n\nconst MAX_FILENAME_LENGTH = 100\n\n// const reControlChars = /[\\u0000-\\u001F\\u0080-\\u009F]/g\nconst reRelativePath = /^\\.+/\nconst reTrailingPeriods = /\\.+$/\nconst reFilenameIllegal = /[<>:\"/\\\\|?*\\u0000-\\u001F\\u0080-\\u009F]+/g // https://superuser.com/questions/358855/what-characters-are-safe-in-cross-platform-file-names-for-linux-windows-and-os/358861#358861\n\nfunction filenameReservedRegex() {\n return reFilenameIllegal // /[<>:\"/\\\\|?*\\u0000-\\u001F]/g\n}\n\nfunction windowsReservedNameRegex() {\n return /^(con|prn|aux|nul|com\\d|lpt\\d)$/i\n}\n\n/** Ensure a valid file name. Unsupported characters get a `replacement`, default: `_` */\nexport function toValidFilename(string: string, replacement = '_'): string | never {\n if (typeof string !== 'string')\n throw new TypeError('Expected a string')\n\n if (filenameReservedRegex().test(replacement))\n throw new Error('Replacement string cannot contain reserved filename characters')\n\n const reReplacement = `(${escapeRegExp(replacement)})+`\n\n string = string\n .replace(filenameReservedRegex(), replacement)\n .replace(reRelativePath, replacement)\n .replace(reTrailingPeriods, '')\n .replace(new RegExp(reReplacement, 'gm'), replacement) // collapse\n .trim()\n\n string = windowsReservedNameRegex().test(string) ? string + replacement : string\n\n return string.slice(0, MAX_FILENAME_LENGTH)\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-6U6Q5CBH.cjs","../src/common/data/path.ts"],"names":["MAX_FILENAME_LENGTH","reRelativePath","reTrailingPeriods","reFilenameIllegal","filenameReservedRegex","windowsReservedNameRegex","toValidFilename","string","replacement","reReplacement","escapeRegExp"],"mappings":"AAAA,iIAAwC,ICKlCA,CAAAA,CAAsB,GAAA,CAGtBC,CAAAA,CAAiB,MAAA,CACjBC,CAAAA,CAAoB,MAAA,CACpBC,CAAAA,CAAoB,0CAAA,CAE1B,SAASC,CAAAA,CAAAA,CAAwB,CAC/B,OAAOD,CACT,CAEA,SAASE,CAAAA,CAAAA,CAA2B,CAClC,MAAO,kCACT,CAGO,SAASC,CAAAA,CAAgBC,CAAAA,CAAgBC,CAAAA,CAAc,GAAA,CAAqB,CACjF,EAAA,CAAI,OAAOD,CAAAA,EAAW,QAAA,CACpB,MAAM,IAAI,SAAA,CAAU,mBAAmB,CAAA,CAEzC,EAAA,CAAIH,CAAAA,CAAsB,CAAA,CAAE,IAAA,CAAKI,CAAW,CAAA,CAC1C,MAAM,IAAI,KAAA,CAAM,gEAAgE,CAAA,CAElF,IAAMC,CAAAA,CAAgB,CAAA,CAAA,EAAIC,iCAAAA,CAAwB,CAAC,CAAA,EAAA,CAAA,CAEnD,OAAAH,CAAAA,CAASA,CAAAA,CACN,OAAA,CAAQH,CAAAA,CAAsB,CAAA,CAAGI,CAAW,CAAA,CAC5C,OAAA,CAAQP,CAAAA,CAAgBO,CAAW,CAAA,CACnC,OAAA,CAAQN,CAAAA,CAAmB,EAAE,CAAA,CAC7B,OAAA,CAAQ,IAAI,MAAA,CAAOO,CAAAA,CAAe,IAAI,CAAA,CAAGD,CAAW,CAAA,CACpD,IAAA,CAAK,CAAA,CAERD,CAAAA,CAASF,CAAAA,CAAyB,CAAA,CAAE,IAAA,CAAKE,CAAM,CAAA,CAAIA,CAAAA,CAASC,CAAAA,CAAcD,CAAAA,CAEnEA,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAGP,CAAmB,CAC5C,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-6U6Q5CBH.cjs","sourcesContent":[null,"// https://github.com/sindresorhus/filenamify/blob/main/filenamify.js\n/* eslint-disable no-control-regex */\n\nimport { escapeRegExp } from './regexp'\n\nconst MAX_FILENAME_LENGTH = 100\n\n// const reControlChars = /[\\u0000-\\u001F\\u0080-\\u009F]/g\nconst reRelativePath = /^\\.+/\nconst reTrailingPeriods = /\\.+$/\nconst reFilenameIllegal = /[<>:\"/\\\\|?*\\u0000-\\u001F\\u0080-\\u009F]+/g // https://superuser.com/questions/358855/what-characters-are-safe-in-cross-platform-file-names-for-linux-windows-and-os/358861#358861\n\nfunction filenameReservedRegex() {\n return reFilenameIllegal // /[<>:\"/\\\\|?*\\u0000-\\u001F]/g\n}\n\nfunction windowsReservedNameRegex() {\n return /^(con|prn|aux|nul|com\\d|lpt\\d)$/i\n}\n\n/** Ensure a valid file name. Unsupported characters get a `replacement`, default: `_` */\nexport function toValidFilename(string: string, replacement = '_'): string | never {\n if (typeof string !== 'string')\n throw new TypeError('Expected a string')\n\n if (filenameReservedRegex().test(replacement))\n throw new Error('Replacement string cannot contain reserved filename characters')\n\n const reReplacement = `(${escapeRegExp(replacement)})+`\n\n string = string\n .replace(filenameReservedRegex(), replacement)\n .replace(reRelativePath, replacement)\n .replace(reTrailingPeriods, '')\n .replace(new RegExp(reReplacement, 'gm'), replacement) // collapse\n .trim()\n\n string = windowsReservedNameRegex().test(string) ? string + replacement : string\n\n return string.slice(0, MAX_FILENAME_LENGTH)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-6XH2AGIH.cjs","../src/node/fs.ts"],"names":["toHumanReadableFilePath","path","p","normalize","h","process"],"mappings":"AAAA,iOAAwC,wDAAyC,wDAAyC,uCCArE,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-6XH2AGIH.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\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 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 exists(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 exists(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 exists(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 exists(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 exists(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 exists(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-6XH2AGIH.cjs","../src/node/fs.ts"],"names":["toHumanReadableFilePath","path","p","normalize","h","process"],"mappings":"AAAA,iOAAwC,wDAAyC,wDAAyC,uCCArE,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-6XH2AGIH.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\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 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 exists(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 exists(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 exists(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 exists(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 exists(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 exists(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,2 +1,2 @@
1
- import{g as e}from"./chunk-WF2FLXJD.js";import{J as i,L as n}from"./chunk-T5KO3KAJ.js";function f(t){if(t.startsWith("data:"))return n(t.split(",",2)[1])}function p(t){if(t.startsWith("data:"))return t.slice(5).split(",",2)[0]}function u(t){if(t.startsWith("data:")){let[r,o]=t.slice(5).split(",",2);return new Blob([n(o)],{type:r})}}async function d(t){let r=await e(t);if(r)return`data:${t.type},${i(r)}`}function c(t,r="application/octet-stream"){return`data:${r},${i(t)}`}export{f as a,p as b,u as c,d,c as e};
2
- //# sourceMappingURL=chunk-J2KIRUQO.js.map
1
+ import{g as e}from"./chunk-Z6XHALPL.js";import{J as i,L as n}from"./chunk-T5KO3KAJ.js";function f(t){if(t.startsWith("data:"))return n(t.split(",",2)[1])}function p(t){if(t.startsWith("data:"))return t.slice(5).split(",",2)[0]}function u(t){if(t.startsWith("data:")){let[r,o]=t.slice(5).split(",",2);return new Blob([n(o)],{type:r})}}async function d(t){let r=await e(t);if(r)return`data:${t.type},${i(r)}`}function c(t,r="application/octet-stream"){return`data:${r},${i(t)}`}export{f as a,p as b,u as c,d,c as e};
2
+ //# sourceMappingURL=chunk-6Y7WTQVG.js.map