zeed 0.26.2 → 0.26.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/dist/browser/localstorage.spec.cjs +27 -28
  2. package/dist/browser/localstorage.spec.cjs.map +1 -1
  3. package/dist/browser/localstorage.spec.js +27 -28
  4. package/dist/browser/localstorage.spec.js.map +1 -1
  5. package/dist/chunk-2JJO5AQW.cjs +138 -0
  6. package/dist/{chunk-DFEZLDW7.cjs.map → chunk-2JJO5AQW.cjs.map} +1 -1
  7. package/dist/{chunk-K4SUOAKA.cjs → chunk-2RRXYBU3.cjs} +3 -3
  8. package/dist/{chunk-K4SUOAKA.cjs.map → chunk-2RRXYBU3.cjs.map} +1 -1
  9. package/dist/{chunk-OL6HNDZP.js → chunk-33PORPRK.js} +3 -3
  10. package/dist/{chunk-XXTFH65W.cjs → chunk-36GI4EJR.cjs} +34 -8
  11. package/dist/chunk-36GI4EJR.cjs.map +1 -0
  12. package/dist/{chunk-ZUTYCOWL.cjs → chunk-464TIIPA.cjs} +3 -3
  13. package/dist/{chunk-ZUTYCOWL.cjs.map → chunk-464TIIPA.cjs.map} +1 -1
  14. package/dist/{chunk-TF6RVG6C.cjs → chunk-4KKCXRVN.cjs} +18 -18
  15. package/dist/{chunk-TF6RVG6C.cjs.map → chunk-4KKCXRVN.cjs.map} +1 -1
  16. package/dist/{chunk-RGNCCHNI.cjs → chunk-4PVFJM6I.cjs} +5 -5
  17. package/dist/{chunk-RGNCCHNI.cjs.map → chunk-4PVFJM6I.cjs.map} +1 -1
  18. package/dist/{chunk-BHSZHF7T.js → chunk-4YREGHTS.js} +2 -2
  19. package/dist/{chunk-TOSLGV7Y.js → chunk-57H5H4V7.js} +2 -2
  20. package/dist/chunk-5BT2R3H5.js +1 -0
  21. package/dist/{chunk-AC2YDDHM.js → chunk-5M26EN7U.js} +5 -5
  22. package/dist/{chunk-FGPUW5W3.cjs → chunk-5QXWV2KQ.cjs} +6 -6
  23. package/dist/{chunk-FGPUW5W3.cjs.map → chunk-5QXWV2KQ.cjs.map} +1 -1
  24. package/dist/{chunk-2Q2D6IYD.js → chunk-6HHWM67Z.js} +3 -3
  25. package/dist/{chunk-OLLVOQ6W.js → chunk-ADCHH7MN.js} +2 -2
  26. package/dist/{chunk-OKXFHCRW.js → chunk-C34SYG5U.js} +4 -4
  27. package/dist/{chunk-OJKBG3DM.cjs → chunk-CFCMFXRU.cjs} +7 -7
  28. package/dist/{chunk-OJKBG3DM.cjs.map → chunk-CFCMFXRU.cjs.map} +1 -1
  29. package/dist/{chunk-NCDI2ZTI.cjs → chunk-COWTSPSG.cjs} +3 -3
  30. package/dist/{chunk-NCDI2ZTI.cjs.map → chunk-COWTSPSG.cjs.map} +1 -1
  31. package/dist/{chunk-V3MFEGRK.cjs → chunk-D3KINVJ5.cjs} +4 -4
  32. package/dist/{chunk-V3MFEGRK.cjs.map → chunk-D3KINVJ5.cjs.map} +1 -1
  33. package/dist/{chunk-4LUSHUPX.js → chunk-EDGDHQU7.js} +2 -2
  34. package/dist/{chunk-AH3SH33X.cjs → chunk-EJYLHIIB.cjs} +3 -3
  35. package/dist/{chunk-AH3SH33X.cjs.map → chunk-EJYLHIIB.cjs.map} +1 -1
  36. package/dist/{chunk-EVGTLYBT.cjs → chunk-G4PTEYIM.cjs} +3 -3
  37. package/dist/{chunk-EVGTLYBT.cjs.map → chunk-G4PTEYIM.cjs.map} +1 -1
  38. package/dist/{chunk-3SGWYDFH.js → chunk-G6CIUQXA.js} +3 -3
  39. package/dist/{chunk-MCOJ2UGJ.js → chunk-H6NCRSQN.js} +2 -2
  40. package/dist/{chunk-NDJRHQ42.js → chunk-HQCA4UNS.js} +199 -4
  41. package/dist/chunk-HQCA4UNS.js.map +1 -0
  42. package/dist/{chunk-DVBRAJ3X.js → chunk-IL77OGRC.js} +4 -4
  43. package/dist/{chunk-XY4SHAX4.cjs → chunk-J2CKNRSU.cjs} +3 -3
  44. package/dist/{chunk-XY4SHAX4.cjs.map → chunk-J2CKNRSU.cjs.map} +1 -1
  45. package/dist/{chunk-WMSUAX76.cjs → chunk-J7XEZGH7.cjs} +8 -8
  46. package/dist/{chunk-WMSUAX76.cjs.map → chunk-J7XEZGH7.cjs.map} +1 -1
  47. package/dist/{chunk-LRNHXH3A.js → chunk-JCES7GZH.js} +2 -2
  48. package/dist/{chunk-GFC6F5OV.cjs → chunk-JIBKGG4T.cjs} +3 -3
  49. package/dist/{chunk-GFC6F5OV.cjs.map → chunk-JIBKGG4T.cjs.map} +1 -1
  50. package/dist/{chunk-V5A7GBYS.js → chunk-KDKGTFBZ.js} +3 -3
  51. package/dist/{chunk-FUEQOQBA.cjs → chunk-LPG7N2EC.cjs} +5 -5
  52. package/dist/{chunk-FUEQOQBA.cjs.map → chunk-LPG7N2EC.cjs.map} +1 -1
  53. package/dist/{chunk-SZJLXMYP.js → chunk-M7ARSJSN.js} +4 -4
  54. package/dist/{chunk-CXMKDBGU.js → chunk-MG3UBMZM.js} +2 -2
  55. package/dist/{chunk-334CCXIK.cjs → chunk-MKLFM6HT.cjs} +3 -3
  56. package/dist/{chunk-334CCXIK.cjs.map → chunk-MKLFM6HT.cjs.map} +1 -1
  57. package/dist/{chunk-BLSLMCOC.js → chunk-MW7RPH75.js} +2 -2
  58. package/dist/{chunk-ACHO37TI.cjs → chunk-NJVD4KGG.cjs} +3 -3
  59. package/dist/{chunk-ACHO37TI.cjs.map → chunk-NJVD4KGG.cjs.map} +1 -1
  60. package/dist/{chunk-4JX7UKPC.js → chunk-NTHZIZ5H.js} +16 -16
  61. package/dist/chunk-ORA3J2SQ.cjs +1 -0
  62. package/dist/chunk-ORA3J2SQ.cjs.map +1 -0
  63. package/dist/{chunk-LOKSBIQW.js → chunk-PFRBXPCR.js} +3 -3
  64. package/dist/{chunk-QZHA2OAU.cjs → chunk-PZ6HNCBN.cjs} +4 -4
  65. package/dist/{chunk-QZHA2OAU.cjs.map → chunk-PZ6HNCBN.cjs.map} +1 -1
  66. package/dist/{chunk-T5NX3H2C.cjs → chunk-Q477TRCC.cjs} +200 -5
  67. package/dist/chunk-Q477TRCC.cjs.map +1 -0
  68. package/dist/{chunk-KWO2F7PO.js → chunk-QHOHFQCT.js} +2 -2
  69. package/dist/{chunk-UFTHLJFJ.cjs → chunk-RJBXIRPI.cjs} +4 -4
  70. package/dist/{chunk-UFTHLJFJ.cjs.map → chunk-RJBXIRPI.cjs.map} +1 -1
  71. package/dist/{chunk-UGZ2626O.cjs → chunk-SN2D52WA.cjs} +3 -3
  72. package/dist/{chunk-UGZ2626O.cjs.map → chunk-SN2D52WA.cjs.map} +1 -1
  73. package/dist/{chunk-N33MGVUS.js → chunk-SZNKMNVB.js} +28 -2
  74. package/dist/chunk-SZNKMNVB.js.map +1 -0
  75. package/dist/{chunk-SFTW3AI4.cjs → chunk-TZA2LRFN.cjs} +3 -3
  76. package/dist/{chunk-SFTW3AI4.cjs.map → chunk-TZA2LRFN.cjs.map} +1 -1
  77. package/dist/{chunk-UNO2AE54.cjs → chunk-UKTONAT3.cjs} +3 -3
  78. package/dist/{chunk-UNO2AE54.cjs.map → chunk-UKTONAT3.cjs.map} +1 -1
  79. package/dist/{chunk-FCLVQRWR.js → chunk-UPRWVAXR.js} +2 -2
  80. package/dist/{chunk-LP4MNA2T.cjs → chunk-UWQIZ4OT.cjs} +3 -3
  81. package/dist/{chunk-LP4MNA2T.cjs.map → chunk-UWQIZ4OT.cjs.map} +1 -1
  82. package/dist/{chunk-N3LGUDJ4.js → chunk-UYS4UEZ2.js} +2 -2
  83. package/dist/{chunk-ORVQHQ6Y.js → chunk-VR3ISOKF.js} +2 -2
  84. package/dist/{chunk-73THIGLV.cjs → chunk-VTJPQOS6.cjs} +9 -9
  85. package/dist/{chunk-73THIGLV.cjs.map → chunk-VTJPQOS6.cjs.map} +1 -1
  86. package/dist/chunk-WBCYR5DW.js +41 -0
  87. package/dist/chunk-WBCYR5DW.js.map +1 -0
  88. package/dist/{chunk-X7FSUPTB.js → chunk-WYZE4SSY.js} +3 -3
  89. package/dist/{chunk-TOCTDWQI.js → chunk-Y3CZLPQ5.js} +2 -2
  90. package/dist/{chunk-UC4IXJII.js → chunk-ZJ44JFYZ.js} +2 -2
  91. package/dist/chunk-ZKQDN4RB.cjs +41 -0
  92. package/dist/chunk-ZKQDN4RB.cjs.map +1 -0
  93. package/dist/{chunk-FKJPSWOS.cjs → chunk-ZLOLGVNA.cjs} +5 -5
  94. package/dist/{chunk-FKJPSWOS.cjs.map → chunk-ZLOLGVNA.cjs.map} +1 -1
  95. package/dist/common/bin/index.cjs +6 -7
  96. package/dist/common/bin/index.cjs.map +1 -1
  97. package/dist/common/bin/index.js +5 -6
  98. package/dist/common/bin/index.spec.cjs +38 -39
  99. package/dist/common/bin/index.spec.cjs.map +1 -1
  100. package/dist/common/bin/index.spec.js +27 -28
  101. package/dist/common/bin/index.spec.js.map +1 -1
  102. package/dist/common/bin/lib0/buffer.cjs +7 -7
  103. package/dist/common/bin/lib0/buffer.cjs.map +1 -1
  104. package/dist/common/bin/lib0/buffer.js +6 -6
  105. package/dist/common/bin/lib0/decoding.cjs +3 -3
  106. package/dist/common/bin/lib0/decoding.js +2 -2
  107. package/dist/common/bin/lib0/encoding.cjs +3 -3
  108. package/dist/common/bin/lib0/encoding.js +2 -2
  109. package/dist/common/crypto/aes-sealed.cjs +10 -0
  110. package/dist/common/crypto/aes-sealed.cjs.map +1 -0
  111. package/dist/common/crypto/aes-sealed.d.cts +4 -0
  112. package/dist/common/crypto/aes-sealed.d.ts +4 -0
  113. package/dist/common/crypto/aes-sealed.js +10 -0
  114. package/dist/common/crypto/aes-sealed.js.map +1 -0
  115. package/dist/common/crypto/aes-sealed.spec.cjs +47 -0
  116. package/dist/common/crypto/aes-sealed.spec.cjs.map +1 -0
  117. package/dist/common/crypto/aes-sealed.spec.d.cts +2 -0
  118. package/dist/common/crypto/aes-sealed.spec.d.ts +2 -0
  119. package/dist/common/crypto/aes-sealed.spec.js +47 -0
  120. package/dist/common/crypto/aes-sealed.spec.js.map +1 -0
  121. package/dist/common/crypto.cjs +5 -4
  122. package/dist/common/crypto.cjs.map +1 -1
  123. package/dist/common/crypto.d.cts +5 -1
  124. package/dist/common/crypto.d.ts +5 -1
  125. package/dist/common/crypto.js +4 -3
  126. package/dist/common/crypto.spec.cjs +39 -121
  127. package/dist/common/crypto.spec.cjs.map +1 -1
  128. package/dist/common/crypto.spec.js +34 -116
  129. package/dist/common/crypto.spec.js.map +1 -1
  130. package/dist/common/data/basex-secure.cjs +5 -2
  131. package/dist/common/data/basex-secure.cjs.map +1 -1
  132. package/dist/common/data/basex-secure.d.cts +2 -1
  133. package/dist/common/data/basex-secure.d.ts +2 -1
  134. package/dist/common/data/basex-secure.js +4 -1
  135. package/dist/common/data/basex-secure.spec.cjs +12 -4
  136. package/dist/common/data/basex-secure.spec.cjs.map +1 -1
  137. package/dist/common/data/basex-secure.spec.js +9 -1
  138. package/dist/common/data/basex-secure.spec.js.map +1 -1
  139. package/dist/common/data/basex.cjs +3 -4
  140. package/dist/common/data/basex.cjs.map +1 -1
  141. package/dist/common/data/basex.js +2 -3
  142. package/dist/common/data/basex.spec.cjs +22 -16
  143. package/dist/common/data/basex.spec.cjs.map +1 -1
  144. package/dist/common/data/basex.spec.js +9 -3
  145. package/dist/common/data/basex.spec.js.map +1 -1
  146. package/dist/common/data/bin.cjs +2 -3
  147. package/dist/common/data/bin.cjs.map +1 -1
  148. package/dist/common/data/bin.js +1 -2
  149. package/dist/common/data/bin.spec.cjs +37 -38
  150. package/dist/common/data/bin.spec.cjs.map +1 -1
  151. package/dist/common/data/bin.spec.js +13 -14
  152. package/dist/common/data/bin.spec.js.map +1 -1
  153. package/dist/common/data/datauri.cjs +7 -8
  154. package/dist/common/data/datauri.cjs.map +1 -1
  155. package/dist/common/data/datauri.js +6 -7
  156. package/dist/common/data/datauri.spec.cjs +10 -11
  157. package/dist/common/data/datauri.spec.cjs.map +1 -1
  158. package/dist/common/data/datauri.spec.js +6 -7
  159. package/dist/common/data/datauri.spec.js.map +1 -1
  160. package/dist/common/data/index.cjs +29 -26
  161. package/dist/common/data/index.cjs.map +1 -1
  162. package/dist/common/data/index.d.cts +2 -1
  163. package/dist/common/data/index.d.ts +2 -1
  164. package/dist/common/data/index.js +47 -44
  165. package/dist/common/data/message.cjs +3 -4
  166. package/dist/common/data/message.cjs.map +1 -1
  167. package/dist/common/data/message.js +2 -3
  168. package/dist/common/data/message.spec.cjs +5 -6
  169. package/dist/common/data/message.spec.cjs.map +1 -1
  170. package/dist/common/data/message.spec.js +2 -3
  171. package/dist/common/data/message.spec.js.map +1 -1
  172. package/dist/common/data/sorted.spec.cjs +27 -28
  173. package/dist/common/data/sorted.spec.cjs.map +1 -1
  174. package/dist/common/data/sorted.spec.js +27 -28
  175. package/dist/common/data/sorted.spec.js.map +1 -1
  176. package/dist/common/data/utils.spec.cjs +7 -8
  177. package/dist/common/data/utils.spec.cjs.map +1 -1
  178. package/dist/common/data/utils.spec.js +7 -8
  179. package/dist/common/data/utils.spec.js.map +1 -1
  180. package/dist/common/data/wordlist.cjs +3 -4
  181. package/dist/common/data/wordlist.cjs.map +1 -1
  182. package/dist/common/data/wordlist.js +2 -3
  183. package/dist/common/data/wordlist.spec.cjs +5 -6
  184. package/dist/common/data/wordlist.spec.cjs.map +1 -1
  185. package/dist/common/data/wordlist.spec.js +2 -3
  186. package/dist/common/data/wordlist.spec.js.map +1 -1
  187. package/dist/common/dispose-defer.spec.cjs +7 -8
  188. package/dist/common/dispose-defer.spec.cjs.map +1 -1
  189. package/dist/common/dispose-defer.spec.js +7 -8
  190. package/dist/common/dispose-defer.spec.js.map +1 -1
  191. package/dist/common/exec/index.cjs +8 -9
  192. package/dist/common/exec/index.cjs.map +1 -1
  193. package/dist/common/exec/index.js +7 -8
  194. package/dist/common/exec/pool.cjs +7 -8
  195. package/dist/common/exec/pool.cjs.map +1 -1
  196. package/dist/common/exec/pool.js +6 -7
  197. package/dist/common/exec/pool.spec.cjs +8 -9
  198. package/dist/common/exec/pool.spec.cjs.map +1 -1
  199. package/dist/common/exec/pool.spec.js +6 -7
  200. package/dist/common/exec/pool.spec.js.map +1 -1
  201. package/dist/common/exec/progress.cjs +6 -7
  202. package/dist/common/exec/progress.cjs.map +1 -1
  203. package/dist/common/exec/progress.js +5 -6
  204. package/dist/common/exec/progress.spec.cjs +8 -9
  205. package/dist/common/exec/progress.spec.cjs.map +1 -1
  206. package/dist/common/exec/progress.spec.js +5 -6
  207. package/dist/common/exec/progress.spec.js.map +1 -1
  208. package/dist/common/exec/queue.cjs +6 -7
  209. package/dist/common/exec/queue.cjs.map +1 -1
  210. package/dist/common/exec/queue.js +5 -6
  211. package/dist/common/exec/queue.spec.cjs +9 -10
  212. package/dist/common/exec/queue.spec.cjs.map +1 -1
  213. package/dist/common/exec/queue.spec.js +5 -6
  214. package/dist/common/exec/queue.spec.js.map +1 -1
  215. package/dist/common/index.cjs +49 -44
  216. package/dist/common/index.cjs.map +1 -1
  217. package/dist/common/index.d.cts +3 -2
  218. package/dist/common/index.d.ts +3 -2
  219. package/dist/common/index.js +71 -66
  220. package/dist/common/msg/channel-debug.cjs +7 -8
  221. package/dist/common/msg/channel-debug.cjs.map +1 -1
  222. package/dist/common/msg/channel-debug.js +6 -7
  223. package/dist/common/msg/channel-local.cjs +7 -8
  224. package/dist/common/msg/channel-local.cjs.map +1 -1
  225. package/dist/common/msg/channel-local.js +6 -7
  226. package/dist/common/msg/channel-resilient.cjs +7 -8
  227. package/dist/common/msg/channel-resilient.cjs.map +1 -1
  228. package/dist/common/msg/channel-resilient.js +6 -7
  229. package/dist/common/msg/channel-resilient.spec.cjs +10 -11
  230. package/dist/common/msg/channel-resilient.spec.cjs.map +1 -1
  231. package/dist/common/msg/channel-resilient.spec.js +7 -8
  232. package/dist/common/msg/channel-resilient.spec.js.map +1 -1
  233. package/dist/common/msg/channel.cjs +6 -7
  234. package/dist/common/msg/channel.cjs.map +1 -1
  235. package/dist/common/msg/channel.js +5 -6
  236. package/dist/common/msg/channel.spec.cjs +7 -8
  237. package/dist/common/msg/channel.spec.cjs.map +1 -1
  238. package/dist/common/msg/channel.spec.js +6 -7
  239. package/dist/common/msg/channel.spec.js.map +1 -1
  240. package/dist/common/msg/encoder.cjs +4 -5
  241. package/dist/common/msg/encoder.cjs.map +1 -1
  242. package/dist/common/msg/encoder.js +3 -4
  243. package/dist/common/msg/encoder.spec.cjs +31 -32
  244. package/dist/common/msg/encoder.spec.cjs.map +1 -1
  245. package/dist/common/msg/encoder.spec.js +28 -29
  246. package/dist/common/msg/encoder.spec.js.map +1 -1
  247. package/dist/common/msg/index.cjs +13 -14
  248. package/dist/common/msg/index.cjs.map +1 -1
  249. package/dist/common/msg/index.js +16 -17
  250. package/dist/common/msg/messages.cjs +7 -8
  251. package/dist/common/msg/messages.cjs.map +1 -1
  252. package/dist/common/msg/messages.js +6 -7
  253. package/dist/common/msg/messages.spec.cjs +13 -14
  254. package/dist/common/msg/messages.spec.cjs.map +1 -1
  255. package/dist/common/msg/messages.spec.js +8 -9
  256. package/dist/common/msg/messages.spec.js.map +1 -1
  257. package/dist/common/msg/pubsub.cjs +7 -8
  258. package/dist/common/msg/pubsub.cjs.map +1 -1
  259. package/dist/common/msg/pubsub.js +6 -7
  260. package/dist/common/msg/pubsub.spec.cjs +14 -15
  261. package/dist/common/msg/pubsub.spec.cjs.map +1 -1
  262. package/dist/common/msg/pubsub.spec.js +8 -9
  263. package/dist/common/msg/pubsub.spec.js.map +1 -1
  264. package/dist/common/msg/rpc.spec.cjs +17 -18
  265. package/dist/common/msg/rpc.spec.cjs.map +1 -1
  266. package/dist/common/msg/rpc.spec.js +10 -11
  267. package/dist/common/msg/rpc.spec.js.map +1 -1
  268. package/dist/common/network.cjs +3 -4
  269. package/dist/common/network.cjs.map +1 -1
  270. package/dist/common/network.js +2 -3
  271. package/dist/common/network.spec.cjs +5 -6
  272. package/dist/common/network.spec.cjs.map +1 -1
  273. package/dist/common/network.spec.js +2 -3
  274. package/dist/common/network.spec.js.map +1 -1
  275. package/dist/common/schema/index.cjs +4 -4
  276. package/dist/common/schema/index.cjs.map +1 -1
  277. package/dist/common/schema/index.js +4 -4
  278. package/dist/common/schema/schema.spec.cjs +13 -14
  279. package/dist/common/schema/schema.spec.cjs.map +1 -1
  280. package/dist/common/schema/schema.spec.js +13 -14
  281. package/dist/common/schema/schema.spec.js.map +1 -1
  282. package/dist/common/time.spec.cjs +7 -8
  283. package/dist/common/time.spec.cjs.map +1 -1
  284. package/dist/common/time.spec.js +7 -8
  285. package/dist/common/time.spec.js.map +1 -1
  286. package/dist/common/uuid.cjs +5 -6
  287. package/dist/common/uuid.cjs.map +1 -1
  288. package/dist/common/uuid.js +4 -5
  289. package/dist/common/uuid.spec.cjs +53 -54
  290. package/dist/common/uuid.spec.cjs.map +1 -1
  291. package/dist/common/uuid.spec.js +4 -5
  292. package/dist/common/uuid.spec.js.map +1 -1
  293. package/dist/index.all.cjs +55 -50
  294. package/dist/index.all.cjs.map +1 -1
  295. package/dist/index.all.d.cts +3 -2
  296. package/dist/index.all.d.ts +3 -2
  297. package/dist/index.all.js +78 -73
  298. package/dist/index.browser.cjs +49 -44
  299. package/dist/index.browser.cjs.map +1 -1
  300. package/dist/index.browser.d.cts +3 -2
  301. package/dist/index.browser.d.ts +3 -2
  302. package/dist/index.browser.js +71 -66
  303. package/dist/index.node.cjs +56 -51
  304. package/dist/index.node.cjs.map +1 -1
  305. package/dist/index.node.d.cts +3 -2
  306. package/dist/index.node.d.ts +3 -2
  307. package/dist/index.node.js +79 -74
  308. package/dist/node/files-async.cjs +4 -5
  309. package/dist/node/files-async.cjs.map +1 -1
  310. package/dist/node/files-async.js +3 -4
  311. package/dist/node/files-async.spec.cjs +13 -14
  312. package/dist/node/files-async.spec.cjs.map +1 -1
  313. package/dist/node/files-async.spec.js +3 -4
  314. package/dist/node/files-async.spec.js.map +1 -1
  315. package/dist/node/files.cjs +4 -5
  316. package/dist/node/files.cjs.map +1 -1
  317. package/dist/node/files.js +3 -4
  318. package/dist/node/files.spec.cjs +6 -7
  319. package/dist/node/files.spec.cjs.map +1 -1
  320. package/dist/node/files.spec.js +3 -4
  321. package/dist/node/files.spec.js.map +1 -1
  322. package/dist/node/fs.cjs +3 -4
  323. package/dist/node/fs.cjs.map +1 -1
  324. package/dist/node/fs.js +2 -3
  325. package/dist/node/fs.spec.cjs +3 -4
  326. package/dist/node/fs.spec.cjs.map +1 -1
  327. package/dist/node/fs.spec.js +2 -3
  328. package/dist/node/fs.spec.js.map +1 -1
  329. package/dist/node/index.cjs +9 -10
  330. package/dist/node/index.cjs.map +1 -1
  331. package/dist/node/index.js +9 -10
  332. package/dist/node/log/index.cjs +6 -7
  333. package/dist/node/log/index.cjs.map +1 -1
  334. package/dist/node/log/index.js +6 -7
  335. package/dist/node/log/log-context-node.cjs +6 -7
  336. package/dist/node/log/log-context-node.cjs.map +1 -1
  337. package/dist/node/log/log-context-node.js +5 -6
  338. package/dist/node/log/log-file.cjs +4 -5
  339. package/dist/node/log/log-file.cjs.map +1 -1
  340. package/dist/node/log/log-file.js +3 -4
  341. package/dist/node/log/log-file.spec.cjs +4 -5
  342. package/dist/node/log/log-file.spec.cjs.map +1 -1
  343. package/dist/node/log/log-file.spec.js +3 -4
  344. package/dist/node/log/log-file.spec.js.map +1 -1
  345. package/dist/node/log/log-node.cjs +4 -5
  346. package/dist/node/log/log-node.cjs.map +1 -1
  347. package/dist/node/log/log-node.js +3 -4
  348. package/dist/node/log/log-node.spec.cjs +7 -8
  349. package/dist/node/log/log-node.spec.cjs.map +1 -1
  350. package/dist/node/log/log-node.spec.js +3 -4
  351. package/dist/node/log/log-node.spec.js.map +1 -1
  352. package/package.json +4 -4
  353. package/dist/chunk-4LNR3HBM.js +0 -197
  354. package/dist/chunk-4LNR3HBM.js.map +0 -1
  355. package/dist/chunk-BVYJH5I3.js +0 -1
  356. package/dist/chunk-DFEZLDW7.cjs +0 -138
  357. package/dist/chunk-N33MGVUS.js.map +0 -1
  358. package/dist/chunk-NDJRHQ42.js.map +0 -1
  359. package/dist/chunk-RZR7V644.cjs +0 -1
  360. package/dist/chunk-RZR7V644.cjs.map +0 -1
  361. package/dist/chunk-SK66U3XO.cjs +0 -197
  362. package/dist/chunk-SK66U3XO.cjs.map +0 -1
  363. package/dist/chunk-T5NX3H2C.cjs.map +0 -1
  364. package/dist/chunk-XXTFH65W.cjs.map +0 -1
  365. /package/dist/{chunk-OL6HNDZP.js.map → chunk-33PORPRK.js.map} +0 -0
  366. /package/dist/{chunk-BHSZHF7T.js.map → chunk-4YREGHTS.js.map} +0 -0
  367. /package/dist/{chunk-TOSLGV7Y.js.map → chunk-57H5H4V7.js.map} +0 -0
  368. /package/dist/{chunk-BVYJH5I3.js.map → chunk-5BT2R3H5.js.map} +0 -0
  369. /package/dist/{chunk-AC2YDDHM.js.map → chunk-5M26EN7U.js.map} +0 -0
  370. /package/dist/{chunk-2Q2D6IYD.js.map → chunk-6HHWM67Z.js.map} +0 -0
  371. /package/dist/{chunk-OLLVOQ6W.js.map → chunk-ADCHH7MN.js.map} +0 -0
  372. /package/dist/{chunk-OKXFHCRW.js.map → chunk-C34SYG5U.js.map} +0 -0
  373. /package/dist/{chunk-4LUSHUPX.js.map → chunk-EDGDHQU7.js.map} +0 -0
  374. /package/dist/{chunk-3SGWYDFH.js.map → chunk-G6CIUQXA.js.map} +0 -0
  375. /package/dist/{chunk-MCOJ2UGJ.js.map → chunk-H6NCRSQN.js.map} +0 -0
  376. /package/dist/{chunk-DVBRAJ3X.js.map → chunk-IL77OGRC.js.map} +0 -0
  377. /package/dist/{chunk-LRNHXH3A.js.map → chunk-JCES7GZH.js.map} +0 -0
  378. /package/dist/{chunk-V5A7GBYS.js.map → chunk-KDKGTFBZ.js.map} +0 -0
  379. /package/dist/{chunk-SZJLXMYP.js.map → chunk-M7ARSJSN.js.map} +0 -0
  380. /package/dist/{chunk-CXMKDBGU.js.map → chunk-MG3UBMZM.js.map} +0 -0
  381. /package/dist/{chunk-BLSLMCOC.js.map → chunk-MW7RPH75.js.map} +0 -0
  382. /package/dist/{chunk-4JX7UKPC.js.map → chunk-NTHZIZ5H.js.map} +0 -0
  383. /package/dist/{chunk-LOKSBIQW.js.map → chunk-PFRBXPCR.js.map} +0 -0
  384. /package/dist/{chunk-KWO2F7PO.js.map → chunk-QHOHFQCT.js.map} +0 -0
  385. /package/dist/{chunk-FCLVQRWR.js.map → chunk-UPRWVAXR.js.map} +0 -0
  386. /package/dist/{chunk-N3LGUDJ4.js.map → chunk-UYS4UEZ2.js.map} +0 -0
  387. /package/dist/{chunk-ORVQHQ6Y.js.map → chunk-VR3ISOKF.js.map} +0 -0
  388. /package/dist/{chunk-X7FSUPTB.js.map → chunk-WYZE4SSY.js.map} +0 -0
  389. /package/dist/{chunk-TOCTDWQI.js.map → chunk-Y3CZLPQ5.js.map} +0 -0
  390. /package/dist/{chunk-UC4IXJII.js.map → chunk-ZJ44JFYZ.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-ZUTYCOWL.cjs","../src/common/network.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACqBA,IAAM,eAAA,EAAkC;AAAA,EACtC,KAAA,EAAO,UAAA;AAAA,EACP,QAAA,EAAU,QAAA;AAAA,EACV,OAAA,EAAS,CAAC;AACZ,CAAA;AAcO,SAAS,cAAA,CAAe,GAAA,EAAa;AAC1C,EAAA,MAAM,EAAA,EAAI,eAAA,CAAgB,IAAA,CAAK,GAAG,CAAA;AAClC,EAAA,GAAA,CAAI,EAAA,GAAK,CAAA,CAAE,CAAC,CAAA,EAAG;AACb,IAAA,MAAM,CAAC,QAAA,EAAU,QAAQ,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA,CAAE,KAAA,CAAM,GAAA,EAAK,CAAC,CAAA;AAC9C,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,GAAA,CAAI,OAAA,CAAQ,CAAA,EAAA;AACjB,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACF;AAGsB;AAKhB,EAAA;AACU,IAAA;AACK,MAAA;AAEJ,IAAA;AACH,IAAA;AACG,MAAA;AACI,MAAA;AACZ,QAAA;AACD,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA;AAAA;AAEe,MAAA;AAGb,IAAA;AAEa,MAAA;AACf,IAAA;AAGiB,IAAA;AAGJ,IAAA;AACJ,MAAA;AAEG,IAAA;AAER,IAAA;AACO,MAAA;AACA,MAAA;AAEC,IAAA;AACA,MAAA;AACZ,IAAA;AAEU,EAAA;AACE,IAAA;AACF,IAAA;AACZ,EAAA;AACF;AAGsB;AAKhB,EAAA;AACgB,IAAA;AAChB,MAAA;AACA,MAAA;AACE,QAAA;AACU,UAAA;AACC,UAAA;AACC,YAAA;AACV,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACF,IAAA;AACI,IAAA;AACe,MAAA;AAET,EAAA;AACE,IAAA;AACF,IAAA;AACZ,EAAA;AACF;AAGsB;AAKhB,EAAA;AACgB,IAAA;AAChB,MAAA;AACiB,MAAA;AACjB,MAAA;AACF,IAAA;AACI,IAAA;AACe,MAAA;AAET,EAAA;AACE,IAAA;AACF,IAAA;AACZ,EAAA;AACF;AAKgB;AAIP,EAAA;AACL,IAAA;AACG,IAAA;AACM,IAAA;AACS,MAAA;AAClB,IAAA;AACkB,IAAA;AACpB,EAAA;AACF;AAGgB;AAIP,EAAA;AACL,IAAA;AACG,IAAA;AACM,IAAA;AACS,MAAA;AAAA;AAElB,IAAA;AACM,IAAA;AACR,EAAA;AACF;AAGgB;AAIP,EAAA;AACI,IAAA;AACQ,MAAA;AACjB,IAAA;AACF,EAAA;AACF;ADlFwB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/zeed/zeed/dist/chunk-ZUTYCOWL.cjs","sourcesContent":[null,"import type { Json } from './types'\nimport { arrayFlatten } from './data/array'\nimport { toBase64 } from './data/bin'\nimport { deepMerge } from './data/deep'\nimport { isArray } from './data/is'\nimport { jsonStringifySafe } from './data/json'\nimport { encodeQuery } from './data/url'\nimport { DefaultLogger } from './log/log'\n\n// TODO: Abort signal https://codedrivendevelopment.com/posts/everything-about-abort-signal-timeout\n\ninterface fetchOptionType {\n /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */\n cache?: RequestCache\n /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */\n credentials?: RequestCredentials\n /** Returns the kind of resource requested by request, e.g., \"document\" or \"script\". */\n destination?: RequestDestination\n /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the \"Host\" header. */\n headers?: Record<string, string>\n /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */\n integrity?: string\n /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */\n keepalive?: boolean\n /** Returns request's HTTP method, which is \"GET\" by default. */\n method?: string\n /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */\n mode?: RequestMode\n /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */\n redirect?: RequestRedirect\n /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and \"about:client\" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. */\n referrer?: string\n /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */\n referrerPolicy?: ReferrerPolicy\n /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */\n signal?: AbortSignal\n /** Returns the URL of request as a string. */\n url?: string\n body?: any\n}\n\ntype fetchOptionsType = fetchOptionType | fetchOptionsType[]\n\nconst defaultOptions: fetchOptionType = {\n cache: 'no-cache',\n redirect: 'follow',\n headers: {},\n}\n\n// Source https://developer.mozilla.org/de/docs/Web/HTTP/Methods\nexport type httpMethod =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'DELETE'\n | 'HEAD'\n | 'CONNECT'\n | 'OPTIONS'\n | 'TRACE'\n | 'PATCH'\n\nexport function parseBasicAuth(url: string) {\n const m = /:\\/\\/([^@]*)@/.exec(url)\n if (m && m[1]) {\n const [username, password] = m[1].split(':', 2)\n return {\n url: url.replace(`${m[1]}@`, ''),\n username,\n password,\n }\n }\n}\n\n/** Simplified `fetch` that returns `undefined` on non 200 status */\nexport async function fetchBasic(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<Response | undefined> {\n try {\n if (isArray(fetchOptions))\n fetchOptions = deepMerge({}, ...arrayFlatten(fetchOptions))\n\n const auth = parseBasicAuth(String(url))\n if (auth) {\n url = auth.url\n fetchOptions = deepMerge(\n {},\n fetchOptions,\n fetchOptionsBasicAuth(auth.username, auth.password),\n )\n }\n\n if (\n // @ts-expect-error headers\n fetchOptions.headers != null\n // @ts-expect-error headers\n && !(fetchOptions.headers instanceof Headers)\n ) {\n // @ts-expect-error headers\n fetchOptions.headers = new Headers(fetchOptions.headers)\n }\n\n // log(\"fetch\", url, fetchOptions)\n const response = await fetchFn(String(url), fetchOptions as RequestInit)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n if (response.status < 400)\n return response\n\n const log = DefaultLogger('zeed:network')\n\n try {\n log.warn(`Fetch of ${String(url)} returned status=${response.status}. Options:`, fetchOptions)\n log.warn(`Response: ${await response.text()}`)\n }\n catch (err) {\n log.error('Exception:', err)\n }\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchBasic', err)\n }\n}\n\n/** Fetch for JSON */\nexport async function fetchJson<T = Json>(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<T | undefined> {\n try {\n const res = await fetchBasic(\n url,\n [\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n },\n fetchOptions,\n ],\n fetchFn,\n )\n if (res)\n return await res.json()\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchJSON error:', err)\n }\n}\n\n/** Fetch for text */\nexport async function fetchText(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<string | undefined> {\n try {\n const res = await fetchBasic(\n url,\n [defaultOptions, { method: 'GET' }, fetchOptions],\n fetchFn,\n )\n if (res)\n return await res.text()\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchHTML error:', err)\n }\n}\n\n///\n\n/** Options for fetchBasic to send data as application/x-www-form-urlencoded */\nexport function fetchOptionsFormURLEncoded(\n data: object,\n method: httpMethod = 'POST',\n): fetchOptionType {\n return {\n method,\n ...defaultOptions,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n },\n body: encodeQuery(data),\n }\n}\n\n/** Options to send data as JSON */\nexport function fetchOptionsJson(\n data: object,\n method: httpMethod = 'POST',\n): fetchOptionType {\n return {\n method,\n ...defaultOptions,\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n // Accept: \"application/json\",\n },\n body: jsonStringifySafe(data),\n }\n}\n\n/** Options to pass basic auth */\nexport function fetchOptionsBasicAuth(\n username: string,\n password: string,\n): fetchOptionType {\n return {\n headers: {\n Authorization: `Basic ${toBase64(`${username}:${password}`)}`,\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-464TIIPA.cjs","../src/common/network.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACqBA,IAAM,eAAA,EAAkC;AAAA,EACtC,KAAA,EAAO,UAAA;AAAA,EACP,QAAA,EAAU,QAAA;AAAA,EACV,OAAA,EAAS,CAAC;AACZ,CAAA;AAcO,SAAS,cAAA,CAAe,GAAA,EAAa;AAC1C,EAAA,MAAM,EAAA,EAAI,eAAA,CAAgB,IAAA,CAAK,GAAG,CAAA;AAClC,EAAA,GAAA,CAAI,EAAA,GAAK,CAAA,CAAE,CAAC,CAAA,EAAG;AACb,IAAA,MAAM,CAAC,QAAA,EAAU,QAAQ,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA,CAAE,KAAA,CAAM,GAAA,EAAK,CAAC,CAAA;AAC9C,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,GAAA,CAAI,OAAA,CAAQ,CAAA,EAAA;AACjB,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACF;AAGsB;AAKhB,EAAA;AACU,IAAA;AACK,MAAA;AAEJ,IAAA;AACH,IAAA;AACG,MAAA;AACI,MAAA;AACZ,QAAA;AACD,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA;AAAA;AAEe,MAAA;AAGb,IAAA;AAEa,MAAA;AACf,IAAA;AAGiB,IAAA;AAGJ,IAAA;AACJ,MAAA;AAEG,IAAA;AAER,IAAA;AACO,MAAA;AACA,MAAA;AAEC,IAAA;AACA,MAAA;AACZ,IAAA;AAEU,EAAA;AACE,IAAA;AACF,IAAA;AACZ,EAAA;AACF;AAGsB;AAKhB,EAAA;AACgB,IAAA;AAChB,MAAA;AACA,MAAA;AACE,QAAA;AACU,UAAA;AACC,UAAA;AACC,YAAA;AACV,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACF,IAAA;AACI,IAAA;AACe,MAAA;AAET,EAAA;AACE,IAAA;AACF,IAAA;AACZ,EAAA;AACF;AAGsB;AAKhB,EAAA;AACgB,IAAA;AAChB,MAAA;AACiB,MAAA;AACjB,MAAA;AACF,IAAA;AACI,IAAA;AACe,MAAA;AAET,EAAA;AACE,IAAA;AACF,IAAA;AACZ,EAAA;AACF;AAKgB;AAIP,EAAA;AACL,IAAA;AACG,IAAA;AACM,IAAA;AACS,MAAA;AAClB,IAAA;AACkB,IAAA;AACpB,EAAA;AACF;AAGgB;AAIP,EAAA;AACL,IAAA;AACG,IAAA;AACM,IAAA;AACS,MAAA;AAAA;AAElB,IAAA;AACM,IAAA;AACR,EAAA;AACF;AAGgB;AAIP,EAAA;AACI,IAAA;AACQ,MAAA;AACjB,IAAA;AACF,EAAA;AACF;ADlFwB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/zeed/zeed/dist/chunk-464TIIPA.cjs","sourcesContent":[null,"import type { Json } from './types'\nimport { arrayFlatten } from './data/array'\nimport { toBase64 } from './data/bin'\nimport { deepMerge } from './data/deep'\nimport { isArray } from './data/is'\nimport { jsonStringifySafe } from './data/json'\nimport { encodeQuery } from './data/url'\nimport { DefaultLogger } from './log/log'\n\n// TODO: Abort signal https://codedrivendevelopment.com/posts/everything-about-abort-signal-timeout\n\ninterface fetchOptionType {\n /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */\n cache?: RequestCache\n /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */\n credentials?: RequestCredentials\n /** Returns the kind of resource requested by request, e.g., \"document\" or \"script\". */\n destination?: RequestDestination\n /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the \"Host\" header. */\n headers?: Record<string, string>\n /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */\n integrity?: string\n /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */\n keepalive?: boolean\n /** Returns request's HTTP method, which is \"GET\" by default. */\n method?: string\n /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */\n mode?: RequestMode\n /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */\n redirect?: RequestRedirect\n /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and \"about:client\" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. */\n referrer?: string\n /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */\n referrerPolicy?: ReferrerPolicy\n /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */\n signal?: AbortSignal\n /** Returns the URL of request as a string. */\n url?: string\n body?: any\n}\n\ntype fetchOptionsType = fetchOptionType | fetchOptionsType[]\n\nconst defaultOptions: fetchOptionType = {\n cache: 'no-cache',\n redirect: 'follow',\n headers: {},\n}\n\n// Source https://developer.mozilla.org/de/docs/Web/HTTP/Methods\nexport type httpMethod =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'DELETE'\n | 'HEAD'\n | 'CONNECT'\n | 'OPTIONS'\n | 'TRACE'\n | 'PATCH'\n\nexport function parseBasicAuth(url: string) {\n const m = /:\\/\\/([^@]*)@/.exec(url)\n if (m && m[1]) {\n const [username, password] = m[1].split(':', 2)\n return {\n url: url.replace(`${m[1]}@`, ''),\n username,\n password,\n }\n }\n}\n\n/** Simplified `fetch` that returns `undefined` on non 200 status */\nexport async function fetchBasic(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<Response | undefined> {\n try {\n if (isArray(fetchOptions))\n fetchOptions = deepMerge({}, ...arrayFlatten(fetchOptions))\n\n const auth = parseBasicAuth(String(url))\n if (auth) {\n url = auth.url\n fetchOptions = deepMerge(\n {},\n fetchOptions,\n fetchOptionsBasicAuth(auth.username, auth.password),\n )\n }\n\n if (\n // @ts-expect-error headers\n fetchOptions.headers != null\n // @ts-expect-error headers\n && !(fetchOptions.headers instanceof Headers)\n ) {\n // @ts-expect-error headers\n fetchOptions.headers = new Headers(fetchOptions.headers)\n }\n\n // log(\"fetch\", url, fetchOptions)\n const response = await fetchFn(String(url), fetchOptions as RequestInit)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n if (response.status < 400)\n return response\n\n const log = DefaultLogger('zeed:network')\n\n try {\n log.warn(`Fetch of ${String(url)} returned status=${response.status}. Options:`, fetchOptions)\n log.warn(`Response: ${await response.text()}`)\n }\n catch (err) {\n log.error('Exception:', err)\n }\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchBasic', err)\n }\n}\n\n/** Fetch for JSON */\nexport async function fetchJson<T = Json>(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<T | undefined> {\n try {\n const res = await fetchBasic(\n url,\n [\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n },\n fetchOptions,\n ],\n fetchFn,\n )\n if (res)\n return await res.json()\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchJSON error:', err)\n }\n}\n\n/** Fetch for text */\nexport async function fetchText(\n url: string | URL,\n fetchOptions: fetchOptionsType = {},\n fetchFn: (input: RequestInfo, init?: RequestInit) => Promise<Response> = fetch,\n): Promise<string | undefined> {\n try {\n const res = await fetchBasic(\n url,\n [defaultOptions, { method: 'GET' }, fetchOptions],\n fetchFn,\n )\n if (res)\n return await res.text()\n }\n catch (err) {\n const log = DefaultLogger('zeed:network')\n log.error('fetchHTML error:', err)\n }\n}\n\n///\n\n/** Options for fetchBasic to send data as application/x-www-form-urlencoded */\nexport function fetchOptionsFormURLEncoded(\n data: object,\n method: httpMethod = 'POST',\n): fetchOptionType {\n return {\n method,\n ...defaultOptions,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n },\n body: encodeQuery(data),\n }\n}\n\n/** Options to send data as JSON */\nexport function fetchOptionsJson(\n data: object,\n method: httpMethod = 'POST',\n): fetchOptionType {\n return {\n method,\n ...defaultOptions,\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n // Accept: \"application/json\",\n },\n body: jsonStringifySafe(data),\n }\n}\n\n/** Options to pass basic auth */\nexport function fetchOptionsBasicAuth(\n username: string,\n password: string,\n): fetchOptionType {\n return {\n headers: {\n Authorization: `Basic ${toBase64(`${username}:${password}`)}`,\n },\n }\n}\n"]}
@@ -3,16 +3,16 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkLP4MNA2Tcjs = require('./chunk-LP4MNA2T.cjs');
6
+ var _chunkUWQIZ4OTcjs = require('./chunk-UWQIZ4OT.cjs');
7
7
 
8
8
 
9
- var _chunkXXTFH65Wcjs = require('./chunk-XXTFH65W.cjs');
9
+ var _chunk36GI4EJRcjs = require('./chunk-36GI4EJR.cjs');
10
10
 
11
11
 
12
12
 
13
13
 
14
14
 
15
- var _chunkSK66U3XOcjs = require('./chunk-SK66U3XO.cjs');
15
+ var _chunkQ477TRCCcjs = require('./chunk-Q477TRCC.cjs');
16
16
 
17
17
 
18
18
  var _chunk33B2TEAZcjs = require('./chunk-33B2TEAZ.cjs');
@@ -20,36 +20,36 @@ var _chunk33B2TEAZcjs = require('./chunk-33B2TEAZ.cjs');
20
20
  // src/common/uuid.ts
21
21
  var uuidBytesLength = 16;
22
22
  function uuidBytes() {
23
- return _chunkXXTFH65Wcjs.randomUint8Array.call(void 0, uuidBytesLength);
23
+ return _chunk36GI4EJRcjs.randomUint8Array.call(void 0, uuidBytesLength);
24
24
  }
25
25
  function uuidB62(bytes = uuidBytes()) {
26
- return _chunkLP4MNA2Tcjs.encodeBase62.call(void 0, bytes, 22);
26
+ return _chunkUWQIZ4OTcjs.encodeBase62.call(void 0, bytes, 22);
27
27
  }
28
28
  function uuidEncodeB62(bytes) {
29
- return _chunkLP4MNA2Tcjs.encodeBase62.call(void 0, bytes, 22);
29
+ return _chunkUWQIZ4OTcjs.encodeBase62.call(void 0, bytes, 22);
30
30
  }
31
31
  function uuidDecodeB62(uuid2) {
32
- return _chunkLP4MNA2Tcjs.decodeBase62.call(void 0, uuid2, uuidBytesLength);
32
+ return _chunkUWQIZ4OTcjs.decodeBase62.call(void 0, uuid2, uuidBytesLength);
33
33
  }
34
34
  function uuidB32(bytes = uuidBytes()) {
35
- return _chunkLP4MNA2Tcjs.encodeBase32.call(void 0, bytes, 26);
35
+ return _chunkUWQIZ4OTcjs.encodeBase32.call(void 0, bytes, 26);
36
36
  }
37
37
  function uuidEncodeB32(bytes) {
38
- return _chunkLP4MNA2Tcjs.encodeBase32.call(void 0, bytes, 26);
38
+ return _chunkUWQIZ4OTcjs.encodeBase32.call(void 0, bytes, 26);
39
39
  }
40
40
  function uuidDecodeB32(uuid2) {
41
- return _chunkLP4MNA2Tcjs.decodeBase32.call(void 0, uuid2, uuidBytesLength);
41
+ return _chunkUWQIZ4OTcjs.decodeBase32.call(void 0, uuid2, uuidBytesLength);
42
42
  }
43
43
  var pattern = "10000000-1000-4000-8000-100000000000";
44
44
  var uuidv4 = function() {
45
- return typeof crypto !== "undefined" && crypto.randomUUID != null ? crypto.randomUUID() : pattern.replace(/[018]/g, (c) => (c ^ _chunkXXTFH65Wcjs.randomUint8Array.call(void 0, 1)[0] & 15 >> c / 4).toString(16));
45
+ return typeof crypto !== "undefined" && crypto.randomUUID != null ? crypto.randomUUID() : pattern.replace(/[018]/g, (c) => (c ^ _chunk36GI4EJRcjs.randomUint8Array.call(void 0, 1)[0] & 15 >> c / 4).toString(16));
46
46
  };
47
47
  function uuidEncodeV4(bytes) {
48
- const id = _chunkSK66U3XOcjs.toHex.call(void 0, bytes);
48
+ const id = _chunkQ477TRCCcjs.toHex.call(void 0, bytes);
49
49
  return `${id.slice(0, 8)}-${id.slice(8, 12)}-${id.slice(12, 16)}-${id.slice(16, 20)}-${id.slice(20)}`;
50
50
  }
51
51
  function uuidDecodeV4(uuid2) {
52
- return _chunkSK66U3XOcjs.fromHex.call(void 0, uuid2.replace(/-/g, ""));
52
+ return _chunkQ477TRCCcjs.fromHex.call(void 0, uuid2.replace(/-/g, ""));
53
53
  }
54
54
  var ReferenceDateInMS = 16e11;
55
55
  function longToByteArray(long) {
@@ -64,7 +64,7 @@ function longToByteArray(long) {
64
64
  }
65
65
  function suidBytes() {
66
66
  const ms = _chunk33B2TEAZcjs.getTimestamp.call(void 0, ) - ReferenceDateInMS;
67
- return new Uint8Array([...longToByteArray(ms), ..._chunkXXTFH65Wcjs.randomUint8Array.call(void 0, 10)]);
67
+ return new Uint8Array([...longToByteArray(ms), ..._chunk36GI4EJRcjs.randomUint8Array.call(void 0, 10)]);
68
68
  }
69
69
  function suid() {
70
70
  return uuidEncode(suidBytes());
@@ -78,7 +78,7 @@ function suidBytesDate(id) {
78
78
  );
79
79
  }
80
80
  function uuid32bit() {
81
- return new Uint32Array(_chunkXXTFH65Wcjs.randomUint8Array.call(void 0, 4))[0];
81
+ return new Uint32Array(_chunk36GI4EJRcjs.randomUint8Array.call(void 0, 4))[0];
82
82
  }
83
83
  var mapModes = {
84
84
  base62: {
@@ -98,8 +98,8 @@ var mapModes = {
98
98
  },
99
99
  test: {
100
100
  uuid: () => uname("test"),
101
- uuidDecode: (id) => _chunkSK66U3XOcjs.toUint8Array.call(void 0, id),
102
- uuidEncode: (bin) => _chunkSK66U3XOcjs.Uint8ArrayToString.call(void 0, bin)
101
+ uuidDecode: (id) => _chunkQ477TRCCcjs.toUint8Array.call(void 0, id),
102
+ uuidEncode: (bin) => _chunkQ477TRCCcjs.Uint8ArrayToString.call(void 0, bin)
103
103
  }
104
104
  };
105
105
  var _mode = "base62";
@@ -166,4 +166,4 @@ function qid() {
166
166
 
167
167
 
168
168
  exports.uuidBytes = uuidBytes; exports.uuidB62 = uuidB62; exports.uuidEncodeB62 = uuidEncodeB62; exports.uuidDecodeB62 = uuidDecodeB62; exports.uuidB32 = uuidB32; exports.uuidEncodeB32 = uuidEncodeB32; exports.uuidDecodeB32 = uuidDecodeB32; exports.uuidv4 = uuidv4; exports.uuidEncodeV4 = uuidEncodeV4; exports.uuidDecodeV4 = uuidDecodeV4; exports.suidBytes = suidBytes; exports.suid = suid; exports.suidDate = suidDate; exports.suidBytesDate = suidBytesDate; exports.uuid32bit = uuid32bit; exports.setUuidDefaultEncoding = setUuidDefaultEncoding; exports.uuid = uuid; exports.uuidDecode = uuidDecode; exports.uuidEncode = uuidEncode; exports.uuidIsValid = uuidIsValid; exports.uname = uname; exports.unameReset = unameReset; exports.qid = qid;
169
- //# sourceMappingURL=chunk-TF6RVG6C.cjs.map
169
+ //# sourceMappingURL=chunk-4KKCXRVN.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-TF6RVG6C.cjs","../src/common/uuid.ts"],"names":["uuid"],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACZA,IAAM,gBAAA,EAAkB,EAAA;AAEjB,SAAS,SAAA,CAAA,EAAwB;AACtC,EAAA,OAAO,gDAAA,eAAgC,CAAA;AACzC;AAIO,SAAS,OAAA,CAAQ,MAAA,EAAQ,SAAA,CAAU,CAAA,EAAW;AACnD,EAAA,OAAO,4CAAA,KAAa,EAAO,EAAE,CAAA;AAC/B;AAEO,SAAS,aAAA,CAAc,KAAA,EAA2B;AACvD,EAAA,OAAO,4CAAA,KAAa,EAAO,EAAE,CAAA;AAC/B;AAEO,SAAS,aAAA,CAAcA,KAAAA,EAA0B;AACtD,EAAA,OAAO,4CAAA,KAAaA,EAAM,eAAe,CAAA;AAC3C;AAIO,SAAS,OAAA,CAAQ,MAAA,EAAQ,SAAA,CAAU,CAAA,EAAW;AACnD,EAAA,OAAO,4CAAA,KAAa,EAAO,EAAE,CAAA;AAC/B;AAEO,SAAS,aAAA,CAAc,KAAA,EAA2B;AACvD,EAAA,OAAO,4CAAA,KAAa,EAAO,EAAE,CAAA;AAC/B;AAEO,SAAS,aAAA,CAAcA,KAAAA,EAA0B;AACtD,EAAA,OAAO,4CAAA,KAAaA,EAAM,eAAe,CAAA;AAC3C;AAKA,IAAM,QAAA,EAAU,sCAAA;AAET,IAAM,OAAA,EAAS,QAAA,CAAA,EAAY;AAChC,EAAA,OAAQ,OAAO,OAAA,IAAW,YAAA,GAAe,MAAA,CAAO,WAAA,GAAc,KAAA,EAC1D,MAAA,CAAO,UAAA,CAAW,EAAA,EAClB,OAAA,CAAQ,OAAA,CAAQ,QAAA,EAAU,CAAC,CAAA,EAAA,GAAA,CAAY,EAAA,EAAK,gDAAA,CAAkB,CAAA,CAAE,CAAC,EAAA,EAAK,GAAA,GAAO,EAAA,EAAI,CAAA,CAAA,CAAM,QAAA,CAAS,EAAE,CAAC,CAAA;AACzG,CAAA;AAEO,SAAS,YAAA,CAAa,KAAA,EAA2B;AACtD,EAAA,MAAM,GAAA,EAAK,qCAAA,KAAW,CAAA;AACtB,EAAA,OAAO,CAAA,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAgBM;AAIG;AACD,EAAA;AACA,EAAA;AACN,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAUgB;AACR,EAAA;AACC,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAEgB;AACP,EAAA;AACL,IAAA;AACF,EAAA;AACF;AAIgB;AACP,EAAA;AACT;AAIM;AACI,EAAA;AACA,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACQ,EAAA;AACA,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACQ,EAAA;AACA,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACM,EAAA;AACE,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACF;AAEI;AACA;AAEY;AACV,EAAA;AACF,IAAA;AAEM,EAAA;AACR,EAAA;AACF;AAEgB;AACP,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAEgB;AACV,EAAA;AACI,IAAA;AACN,IAAA;AACF,EAAA;AAGA,EAAA;AACO,EAAA;AACT;AAIM;AAEU;AACV,EAAA;AACF,IAAA;AAEK,EAAA;AACT;AAEgB;AACd,EAAA;AACF;AAEI;AAEY;AACP,EAAA;AACT;AD3DU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/zeed/zeed/dist/chunk-TF6RVG6C.cjs","sourcesContent":[null,"import { randomUint8Array } from './crypto'\nimport { decodeBase32, decodeBase62, encodeBase32, encodeBase62 } from './data/basex'\nimport { fromHex, toHex, toUint8Array, Uint8ArrayToString } from './data/bin'\nimport { getTimestamp } from './time'\n\n// 128 bit UUID\n\nconst uuidBytesLength = 16\n\nexport function uuidBytes(): Uint8Array {\n return randomUint8Array(uuidBytesLength)\n}\n\n// Base62\n\nexport function uuidB62(bytes = uuidBytes()): string {\n return encodeBase62(bytes, 22)\n}\n\nexport function uuidEncodeB62(bytes: Uint8Array): string {\n return encodeBase62(bytes, 22)\n}\n\nexport function uuidDecodeB62(uuid: string): Uint8Array {\n return decodeBase62(uuid, uuidBytesLength)\n}\n\n// Base32\n\nexport function uuidB32(bytes = uuidBytes()): string {\n return encodeBase32(bytes, 26)\n}\n\nexport function uuidEncodeB32(bytes: Uint8Array): string {\n return encodeBase32(bytes, 26)\n}\n\nexport function uuidDecodeB32(uuid: string): Uint8Array {\n return decodeBase32(uuid, uuidBytesLength)\n}\n\n// UUIDv4\n\n// https://stackoverflow.com/a/2117523/140927\nconst pattern = '10000000-1000-4000-8000-100000000000' // String([1e7] + -1e3 + -4e3 + -8e3 + -1e11)\n\nexport const uuidv4 = function () {\n return (typeof crypto !== 'undefined' && crypto.randomUUID != null)\n ? crypto.randomUUID() // native!\n : pattern.replace(/[018]/g, (c: any) => (c ^ (randomUint8Array(1)[0] & (15 >> (c / 4)))).toString(16))\n}\n\nexport function uuidEncodeV4(bytes: Uint8Array): string {\n const id = toHex(bytes)\n return `${id.slice(0, 8)}-${id.slice(8, 12)}-${id.slice(12, 16)}-${id.slice(16, 20)}-${id.slice(20)}` // 10000000 - 1000 - 4000 - 8000 - 100000000000\n}\n\nexport function uuidDecodeV4(uuid: string): Uint8Array {\n return fromHex(uuid.replace(/-/g, ''))\n}\n\n// Sortable UID\n\n// https://github.com/segmentio/ksuid\n// https://pkg.go.dev/github.com/rsms/go-uuid\n\n/**\n * Sortable unique ID\n * Inspired by https://github.com/rsms/go-uuid\n *\n * Bytes 0-5: Current time in miliseconds from 2021-06-01T00:00:00Z\n * Bytes 6-15: Random\n */\n\n// 1622505600000 // new Date('2021-06-01T00:00:00Z').getTime()\nconst ReferenceDateInMS = 1600000000000\n\n// 6 bytes will stay valid until end of time: new Date(1622505600000 + 0xffffffffffff) === Date Sun Jan 01 10941 06:31:50 GMT+0100 (Central European Standard Time)\n\nfunction longToByteArray(long: number) {\n const byteArray = new Uint8Array([0, 0, 0, 0, 0, 0])\n const bytes = byteArray.length - 1\n for (let index = 0; index < byteArray.length; index++) {\n const byte = long & 0xFF\n byteArray[bytes - index] = byte\n long = (long - byte) / 256\n }\n return byteArray\n}\n\n// function byteArrayToLong(byteArray: number[]): number {\n// var value = 0\n// for (var i = byteArray.length - 1; i >= 0; i--) {\n// value = value * 256 + byteArray[i]\n// }\n// return value\n// }\n\nexport function suidBytes(): Uint8Array {\n const ms = getTimestamp() - ReferenceDateInMS\n return new Uint8Array([...longToByteArray(ms), ...randomUint8Array(10)])\n}\n\nexport function suid(): string {\n return uuidEncode(suidBytes())\n}\n\nexport function suidDate(id: string): Date {\n return suidBytesDate(uuidDecode(id))\n}\n\nexport function suidBytesDate(id: Uint8Array): Date {\n return new Date(\n ReferenceDateInMS + id.slice(0, 6).reduce((acc, byte) => acc * 256 + byte, 0),\n )\n}\n\n// 32 bit UUID\n\nexport function uuid32bit(): number {\n return new Uint32Array(randomUint8Array(4))[0]\n}\n\n// Global Settings\n\nconst mapModes = {\n base62: {\n uuid: uuidB62,\n uuidDecode: uuidDecodeB62,\n uuidEncode: uuidEncodeB62,\n },\n base32: {\n uuid: uuidB32,\n uuidDecode: uuidDecodeB32,\n uuidEncode: uuidEncodeB32,\n },\n uuidv4: {\n uuid: uuidv4,\n uuidDecode: uuidDecodeV4,\n uuidEncode: uuidEncodeV4,\n },\n test: {\n uuid: () => uname('test'),\n uuidDecode: (id: string) => toUint8Array(id),\n uuidEncode: (bin: Uint8Array) => Uint8ArrayToString(bin),\n },\n}\n\nlet _mode: keyof typeof mapModes = 'base62'\nlet _sorted = false\n\nexport function setUuidDefaultEncoding(mode?: keyof typeof mapModes, sorted = false) {\n if (mode === 'test')\n unameReset('test')\n\n _mode = mode ?? 'base62'\n _sorted = sorted\n}\n\nexport function uuid(): string {\n return mapModes[_mode].uuid(_sorted ? suidBytes() : uuidBytes())\n}\n\nexport function uuidDecode(uuid: string): Uint8Array {\n return mapModes[_mode].uuidDecode(uuid)\n}\n\nexport function uuidEncode(bytes: Uint8Array): string {\n return mapModes[_mode].uuidEncode(bytes)\n}\n\nexport function uuidIsValid(uuid: string): boolean {\n try {\n const bin = uuidDecode(uuid)\n return bin.length === uuidBytesLength\n }\n catch (err) {\n // log.warn('Invalid ID:', uuid)\n }\n return false\n}\n\n// Simple Counters\n\nconst _unameCounters: Record<string, number> = {}\n\nexport function uname(name = 'id'): string {\n if (_unameCounters[name] == null)\n _unameCounters[name] = 0\n\n return `${name}-${_unameCounters[name]++}`\n}\n\nexport function unameReset(name = 'id') {\n _unameCounters[name] = 0\n}\n\nlet _qid = 0\n\nexport function qid(): string {\n return `id-${_qid++}`\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-4KKCXRVN.cjs","../src/common/uuid.ts"],"names":["uuid"],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACZA,IAAM,gBAAA,EAAkB,EAAA;AAEjB,SAAS,SAAA,CAAA,EAAwB;AACtC,EAAA,OAAO,gDAAA,eAAgC,CAAA;AACzC;AAIO,SAAS,OAAA,CAAQ,MAAA,EAAQ,SAAA,CAAU,CAAA,EAAW;AACnD,EAAA,OAAO,4CAAA,KAAa,EAAO,EAAE,CAAA;AAC/B;AAEO,SAAS,aAAA,CAAc,KAAA,EAA2B;AACvD,EAAA,OAAO,4CAAA,KAAa,EAAO,EAAE,CAAA;AAC/B;AAEO,SAAS,aAAA,CAAcA,KAAAA,EAA0B;AACtD,EAAA,OAAO,4CAAA,KAAaA,EAAM,eAAe,CAAA;AAC3C;AAIO,SAAS,OAAA,CAAQ,MAAA,EAAQ,SAAA,CAAU,CAAA,EAAW;AACnD,EAAA,OAAO,4CAAA,KAAa,EAAO,EAAE,CAAA;AAC/B;AAEO,SAAS,aAAA,CAAc,KAAA,EAA2B;AACvD,EAAA,OAAO,4CAAA,KAAa,EAAO,EAAE,CAAA;AAC/B;AAEO,SAAS,aAAA,CAAcA,KAAAA,EAA0B;AACtD,EAAA,OAAO,4CAAA,KAAaA,EAAM,eAAe,CAAA;AAC3C;AAKA,IAAM,QAAA,EAAU,sCAAA;AAET,IAAM,OAAA,EAAS,QAAA,CAAA,EAAY;AAChC,EAAA,OAAQ,OAAO,OAAA,IAAW,YAAA,GAAe,MAAA,CAAO,WAAA,GAAc,KAAA,EAC1D,MAAA,CAAO,UAAA,CAAW,EAAA,EAClB,OAAA,CAAQ,OAAA,CAAQ,QAAA,EAAU,CAAC,CAAA,EAAA,GAAA,CAAY,EAAA,EAAK,gDAAA,CAAkB,CAAA,CAAE,CAAC,EAAA,EAAK,GAAA,GAAO,EAAA,EAAI,CAAA,CAAA,CAAM,QAAA,CAAS,EAAE,CAAC,CAAA;AACzG,CAAA;AAEO,SAAS,YAAA,CAAa,KAAA,EAA2B;AACtD,EAAA,MAAM,GAAA,EAAK,qCAAA,KAAW,CAAA;AACtB,EAAA,OAAO,CAAA,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAgBM;AAIG;AACD,EAAA;AACA,EAAA;AACN,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAUgB;AACR,EAAA;AACC,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAEgB;AACP,EAAA;AACL,IAAA;AACF,EAAA;AACF;AAIgB;AACP,EAAA;AACT;AAIM;AACI,EAAA;AACA,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACQ,EAAA;AACA,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACQ,EAAA;AACA,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACM,EAAA;AACE,IAAA;AACN,IAAA;AACA,IAAA;AACF,EAAA;AACF;AAEI;AACA;AAEY;AACV,EAAA;AACF,IAAA;AAEM,EAAA;AACR,EAAA;AACF;AAEgB;AACP,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAEgB;AACP,EAAA;AACT;AAEgB;AACV,EAAA;AACI,IAAA;AACN,IAAA;AACF,EAAA;AAGA,EAAA;AACO,EAAA;AACT;AAIM;AAEU;AACV,EAAA;AACF,IAAA;AAEK,EAAA;AACT;AAEgB;AACd,EAAA;AACF;AAEI;AAEY;AACP,EAAA;AACT;AD3DU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/zeed/zeed/dist/chunk-4KKCXRVN.cjs","sourcesContent":[null,"import { randomUint8Array } from './crypto'\nimport { decodeBase32, decodeBase62, encodeBase32, encodeBase62 } from './data/basex'\nimport { fromHex, toHex, toUint8Array, Uint8ArrayToString } from './data/bin'\nimport { getTimestamp } from './time'\n\n// 128 bit UUID\n\nconst uuidBytesLength = 16\n\nexport function uuidBytes(): Uint8Array {\n return randomUint8Array(uuidBytesLength)\n}\n\n// Base62\n\nexport function uuidB62(bytes = uuidBytes()): string {\n return encodeBase62(bytes, 22)\n}\n\nexport function uuidEncodeB62(bytes: Uint8Array): string {\n return encodeBase62(bytes, 22)\n}\n\nexport function uuidDecodeB62(uuid: string): Uint8Array {\n return decodeBase62(uuid, uuidBytesLength)\n}\n\n// Base32\n\nexport function uuidB32(bytes = uuidBytes()): string {\n return encodeBase32(bytes, 26)\n}\n\nexport function uuidEncodeB32(bytes: Uint8Array): string {\n return encodeBase32(bytes, 26)\n}\n\nexport function uuidDecodeB32(uuid: string): Uint8Array {\n return decodeBase32(uuid, uuidBytesLength)\n}\n\n// UUIDv4\n\n// https://stackoverflow.com/a/2117523/140927\nconst pattern = '10000000-1000-4000-8000-100000000000' // String([1e7] + -1e3 + -4e3 + -8e3 + -1e11)\n\nexport const uuidv4 = function () {\n return (typeof crypto !== 'undefined' && crypto.randomUUID != null)\n ? crypto.randomUUID() // native!\n : pattern.replace(/[018]/g, (c: any) => (c ^ (randomUint8Array(1)[0] & (15 >> (c / 4)))).toString(16))\n}\n\nexport function uuidEncodeV4(bytes: Uint8Array): string {\n const id = toHex(bytes)\n return `${id.slice(0, 8)}-${id.slice(8, 12)}-${id.slice(12, 16)}-${id.slice(16, 20)}-${id.slice(20)}` // 10000000 - 1000 - 4000 - 8000 - 100000000000\n}\n\nexport function uuidDecodeV4(uuid: string): Uint8Array {\n return fromHex(uuid.replace(/-/g, ''))\n}\n\n// Sortable UID\n\n// https://github.com/segmentio/ksuid\n// https://pkg.go.dev/github.com/rsms/go-uuid\n\n/**\n * Sortable unique ID\n * Inspired by https://github.com/rsms/go-uuid\n *\n * Bytes 0-5: Current time in miliseconds from 2021-06-01T00:00:00Z\n * Bytes 6-15: Random\n */\n\n// 1622505600000 // new Date('2021-06-01T00:00:00Z').getTime()\nconst ReferenceDateInMS = 1600000000000\n\n// 6 bytes will stay valid until end of time: new Date(1622505600000 + 0xffffffffffff) === Date Sun Jan 01 10941 06:31:50 GMT+0100 (Central European Standard Time)\n\nfunction longToByteArray(long: number) {\n const byteArray = new Uint8Array([0, 0, 0, 0, 0, 0])\n const bytes = byteArray.length - 1\n for (let index = 0; index < byteArray.length; index++) {\n const byte = long & 0xFF\n byteArray[bytes - index] = byte\n long = (long - byte) / 256\n }\n return byteArray\n}\n\n// function byteArrayToLong(byteArray: number[]): number {\n// var value = 0\n// for (var i = byteArray.length - 1; i >= 0; i--) {\n// value = value * 256 + byteArray[i]\n// }\n// return value\n// }\n\nexport function suidBytes(): Uint8Array {\n const ms = getTimestamp() - ReferenceDateInMS\n return new Uint8Array([...longToByteArray(ms), ...randomUint8Array(10)])\n}\n\nexport function suid(): string {\n return uuidEncode(suidBytes())\n}\n\nexport function suidDate(id: string): Date {\n return suidBytesDate(uuidDecode(id))\n}\n\nexport function suidBytesDate(id: Uint8Array): Date {\n return new Date(\n ReferenceDateInMS + id.slice(0, 6).reduce((acc, byte) => acc * 256 + byte, 0),\n )\n}\n\n// 32 bit UUID\n\nexport function uuid32bit(): number {\n return new Uint32Array(randomUint8Array(4))[0]\n}\n\n// Global Settings\n\nconst mapModes = {\n base62: {\n uuid: uuidB62,\n uuidDecode: uuidDecodeB62,\n uuidEncode: uuidEncodeB62,\n },\n base32: {\n uuid: uuidB32,\n uuidDecode: uuidDecodeB32,\n uuidEncode: uuidEncodeB32,\n },\n uuidv4: {\n uuid: uuidv4,\n uuidDecode: uuidDecodeV4,\n uuidEncode: uuidEncodeV4,\n },\n test: {\n uuid: () => uname('test'),\n uuidDecode: (id: string) => toUint8Array(id),\n uuidEncode: (bin: Uint8Array) => Uint8ArrayToString(bin),\n },\n}\n\nlet _mode: keyof typeof mapModes = 'base62'\nlet _sorted = false\n\nexport function setUuidDefaultEncoding(mode?: keyof typeof mapModes, sorted = false) {\n if (mode === 'test')\n unameReset('test')\n\n _mode = mode ?? 'base62'\n _sorted = sorted\n}\n\nexport function uuid(): string {\n return mapModes[_mode].uuid(_sorted ? suidBytes() : uuidBytes())\n}\n\nexport function uuidDecode(uuid: string): Uint8Array {\n return mapModes[_mode].uuidDecode(uuid)\n}\n\nexport function uuidEncode(bytes: Uint8Array): string {\n return mapModes[_mode].uuidEncode(bytes)\n}\n\nexport function uuidIsValid(uuid: string): boolean {\n try {\n const bin = uuidDecode(uuid)\n return bin.length === uuidBytesLength\n }\n catch (err) {\n // log.warn('Invalid ID:', uuid)\n }\n return false\n}\n\n// Simple Counters\n\nconst _unameCounters: Record<string, number> = {}\n\nexport function uname(name = 'id'): string {\n if (_unameCounters[name] == null)\n _unameCounters[name] = 0\n\n return `${name}-${_unameCounters[name]++}`\n}\n\nexport function unameReset(name = 'id') {\n _unameCounters[name] = 0\n}\n\nlet _qid = 0\n\nexport function qid(): string {\n return `id-${_qid++}`\n}\n"]}
@@ -1,12 +1,12 @@
1
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; }
2
2
 
3
- var _chunk73THIGLVcjs = require('./chunk-73THIGLV.cjs');
3
+ var _chunkVTJPQOS6cjs = require('./chunk-VTJPQOS6.cjs');
4
4
 
5
5
 
6
6
  var _chunkMTWPH7QTcjs = require('./chunk-MTWPH7QT.cjs');
7
7
 
8
8
 
9
- var _chunkTF6RVG6Ccjs = require('./chunk-TF6RVG6C.cjs');
9
+ var _chunk4KKCXRVNcjs = require('./chunk-4KKCXRVN.cjs');
10
10
 
11
11
 
12
12
  var _chunk2BOMVGUQcjs = require('./chunk-2BOMVGUQ.cjs');
@@ -17,11 +17,11 @@ var PubSub = class extends _chunkMTWPH7QTcjs.Emitter {
17
17
  super();
18
18
  this.publish = this.emit.bind(this);
19
19
  this.subscribe = this.on.bind(this);
20
- const { name, encoder = new (0, _chunk73THIGLVcjs.JsonEncoder)(), channel, debug = false } = opt;
20
+ const { name, encoder = new (0, _chunkVTJPQOS6cjs.JsonEncoder)(), channel, debug = false } = opt;
21
21
  this.channel = channel;
22
22
  this.encoder = encoder;
23
23
  this.debug = debug;
24
- this.name = _nullishCoalesce(_nullishCoalesce(name, () => ( this.channel.id)), () => ( _chunkTF6RVG6Ccjs.uname.call(void 0, "pubsub")));
24
+ this.name = _nullishCoalesce(_nullishCoalesce(name, () => ( this.channel.id)), () => ( _chunk4KKCXRVNcjs.uname.call(void 0, "pubsub")));
25
25
  this.log = _chunk2BOMVGUQcjs.DefaultLogger.call(void 0, `${this.shortId}`);
26
26
  if (this.debug) {
27
27
  this.channel.on("connect", () => {
@@ -74,4 +74,4 @@ function usePubSub(opt) {
74
74
 
75
75
 
76
76
  exports.PubSub = PubSub; exports.usePubSub = usePubSub;
77
- //# sourceMappingURL=chunk-RGNCCHNI.cjs.map
77
+ //# sourceMappingURL=chunk-4PVFJM6I.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-RGNCCHNI.cjs","../src/common/msg/pubsub.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACEO,IAAM,OAAA,EAAN,MAAA,QAAuE,0BAAW;AAAA,EAWvF,WAAA,CAAY,GAAA,EAAmB;AAC7B,IAAA,KAAA,CAAM,CAAA;AA6DR,IAAA,IAAA,CAAA,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA;AAC7B,IAAA,IAAA,CAAA,UAAA,EAAY,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,IAAI,CAAA;AA5D3B,IAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,IAAI,kCAAA,CAAY,CAAA,EAAG,OAAA,EAAS,MAAA,EAAQ,MAAM,EAAA,EAAI,GAAA;AAEtE,IAAA,IAAA,CAAK,QAAA,EAAU,OAAA;AACf,IAAA,IAAA,CAAK,QAAA,EAAU,OAAA;AACf,IAAA,IAAA,CAAK,MAAA,EAAQ,KAAA;AAEb,IAAA,IAAA,CAAK,KAAA,oCAAO,IAAA,UAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,UAAM,qCAAA,QAAc,GAAA;AACrD,IAAA,IAAA,CAAK,IAAA,EAAM,6CAAA,CAAc,EAAA;AAET,IAAA;AACE,MAAA;AACL,QAAA;AACV,MAAA;AACe,MAAA;AACL,QAAA;AACV,MAAA;AACH,IAAA;AAEgB,IAAA;AACU,MAAA;AACf,MAAA;AACE,QAAA;AACG,MAAA;AACJ,MAAA;AACY,QAAA;AACC,QAAA;AACvB,MAAA;AACD,IAAA;AACH,EAAA;AAnCc,EAAA;AACY,IAAA;AAC1B,EAAA;AAqCK,EAAA;AAEqB,IAAA;AAC1B,EAAA;AAKoB,EAAA;AACd,IAAA;AACO,MAAA;AACU,QAAA;AACG,MAAA;AACJ,MAAA;AACF,QAAA;AACP,QAAA;AACT,MAAA;AACwB,MAAA;AACX,MAAA;AACN,MAAA;AAEG,IAAA;AACY,MAAA;AACxB,IAAA;AACO,IAAA;AACT,EAAA;AAIF;AAIE;AACwB,EAAA;AAC1B;ADzB8B;AACA;AACA;AACA;AACA","file":"/home/runner/work/zeed/zeed/dist/chunk-RGNCCHNI.cjs","sourcesContent":[null,"import type { Channel } from './channel'\nimport type { DefaultListener, ListenerSignature } from './emitter'\nimport type { Encoder } from './encoder'\nimport { DefaultLogger } from '../log/log'\nimport { uname } from '../uuid'\nimport { Emitter } from './emitter'\nimport { JsonEncoder } from './encoder'\n\ninterface PubSubConfig {\n channel: Channel\n encoder?: Encoder\n name?: string\n debug?: boolean\n}\n\nexport class PubSub<L extends ListenerSignature<L> = DefaultListener> extends Emitter<L> {\n name: string\n channel: Channel\n encoder: Encoder\n log: any\n debug: boolean\n\n get shortId() {\n return this.name.substr(0, 6)\n }\n\n constructor(opt: PubSubConfig) {\n super()\n\n const { name, encoder = new JsonEncoder(), channel, debug = false } = opt\n\n this.channel = channel\n this.encoder = encoder\n this.debug = debug\n\n this.name = name ?? this.channel.id ?? uname('pubsub')\n this.log = DefaultLogger(`${this.shortId}`)\n\n if (this.debug) {\n this.channel.on('connect', () => {\n this.log('channel connected')\n })\n this.channel.on('disconnect', () => {\n this.log('channel disconnected')\n })\n }\n\n this.channel.on('message', async ({ data }) => {\n const info = await this.encoder.decode(data)\n if (this.debug)\n this.log(`channel message, event=${info?.event}, info=`, info)\n else this.log(`channel message, event=${info?.event}`)\n if (info) {\n const { event, args } = info\n await this.emitSuper(event, ...args)\n }\n })\n }\n\n private async emitSuper<U extends keyof L>(\n event: U,\n ...args: Parameters<L[U]>\n ): Promise<boolean> {\n return await super.emit(event, ...args)\n }\n\n async emit<U extends keyof L>(\n event: U,\n ...args: Parameters<L[U]>\n ): Promise<boolean> {\n try {\n if (this.debug)\n this.log(`emit(${String(event)})`, event)\n else this.log(`emit(${String(event)})`, args.length)\n if (!this.channel.isConnected) {\n this.log.warn('channel not connected')\n return false\n }\n const data = await this.encoder.encode({ event, args })\n this.channel.postMessage(data)\n return true\n }\n catch (err) {\n this.log.warn(`emit(${String(event)})`, err)\n }\n return false\n }\n\n publish = this.emit.bind(this)\n subscribe = this.on.bind(this)\n}\n\nexport function usePubSub<L extends ListenerSignature<L> = DefaultListener>(\n opt: PubSubConfig,\n) {\n return new PubSub<L>(opt)\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-4PVFJM6I.cjs","../src/common/msg/pubsub.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACEO,IAAM,OAAA,EAAN,MAAA,QAAuE,0BAAW;AAAA,EAWvF,WAAA,CAAY,GAAA,EAAmB;AAC7B,IAAA,KAAA,CAAM,CAAA;AA6DR,IAAA,IAAA,CAAA,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA;AAC7B,IAAA,IAAA,CAAA,UAAA,EAAY,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,IAAI,CAAA;AA5D3B,IAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,IAAI,kCAAA,CAAY,CAAA,EAAG,OAAA,EAAS,MAAA,EAAQ,MAAM,EAAA,EAAI,GAAA;AAEtE,IAAA,IAAA,CAAK,QAAA,EAAU,OAAA;AACf,IAAA,IAAA,CAAK,QAAA,EAAU,OAAA;AACf,IAAA,IAAA,CAAK,MAAA,EAAQ,KAAA;AAEb,IAAA,IAAA,CAAK,KAAA,oCAAO,IAAA,UAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,UAAM,qCAAA,QAAc,GAAA;AACrD,IAAA,IAAA,CAAK,IAAA,EAAM,6CAAA,CAAc,EAAA;AAET,IAAA;AACE,MAAA;AACL,QAAA;AACV,MAAA;AACe,MAAA;AACL,QAAA;AACV,MAAA;AACH,IAAA;AAEgB,IAAA;AACU,MAAA;AACf,MAAA;AACE,QAAA;AACG,MAAA;AACJ,MAAA;AACY,QAAA;AACC,QAAA;AACvB,MAAA;AACD,IAAA;AACH,EAAA;AAnCc,EAAA;AACY,IAAA;AAC1B,EAAA;AAqCK,EAAA;AAEqB,IAAA;AAC1B,EAAA;AAKoB,EAAA;AACd,IAAA;AACO,MAAA;AACU,QAAA;AACG,MAAA;AACJ,MAAA;AACF,QAAA;AACP,QAAA;AACT,MAAA;AACwB,MAAA;AACX,MAAA;AACN,MAAA;AAEG,IAAA;AACY,MAAA;AACxB,IAAA;AACO,IAAA;AACT,EAAA;AAIF;AAIE;AACwB,EAAA;AAC1B;ADzB8B;AACA;AACA;AACA;AACA","file":"/home/runner/work/zeed/zeed/dist/chunk-4PVFJM6I.cjs","sourcesContent":[null,"import type { Channel } from './channel'\nimport type { DefaultListener, ListenerSignature } from './emitter'\nimport type { Encoder } from './encoder'\nimport { DefaultLogger } from '../log/log'\nimport { uname } from '../uuid'\nimport { Emitter } from './emitter'\nimport { JsonEncoder } from './encoder'\n\ninterface PubSubConfig {\n channel: Channel\n encoder?: Encoder\n name?: string\n debug?: boolean\n}\n\nexport class PubSub<L extends ListenerSignature<L> = DefaultListener> extends Emitter<L> {\n name: string\n channel: Channel\n encoder: Encoder\n log: any\n debug: boolean\n\n get shortId() {\n return this.name.substr(0, 6)\n }\n\n constructor(opt: PubSubConfig) {\n super()\n\n const { name, encoder = new JsonEncoder(), channel, debug = false } = opt\n\n this.channel = channel\n this.encoder = encoder\n this.debug = debug\n\n this.name = name ?? this.channel.id ?? uname('pubsub')\n this.log = DefaultLogger(`${this.shortId}`)\n\n if (this.debug) {\n this.channel.on('connect', () => {\n this.log('channel connected')\n })\n this.channel.on('disconnect', () => {\n this.log('channel disconnected')\n })\n }\n\n this.channel.on('message', async ({ data }) => {\n const info = await this.encoder.decode(data)\n if (this.debug)\n this.log(`channel message, event=${info?.event}, info=`, info)\n else this.log(`channel message, event=${info?.event}`)\n if (info) {\n const { event, args } = info\n await this.emitSuper(event, ...args)\n }\n })\n }\n\n private async emitSuper<U extends keyof L>(\n event: U,\n ...args: Parameters<L[U]>\n ): Promise<boolean> {\n return await super.emit(event, ...args)\n }\n\n async emit<U extends keyof L>(\n event: U,\n ...args: Parameters<L[U]>\n ): Promise<boolean> {\n try {\n if (this.debug)\n this.log(`emit(${String(event)})`, event)\n else this.log(`emit(${String(event)})`, args.length)\n if (!this.channel.isConnected) {\n this.log.warn('channel not connected')\n return false\n }\n const data = await this.encoder.encode({ event, args })\n this.channel.postMessage(data)\n return true\n }\n catch (err) {\n this.log.warn(`emit(${String(event)})`, err)\n }\n return false\n }\n\n publish = this.emit.bind(this)\n subscribe = this.on.bind(this)\n}\n\nexport function usePubSub<L extends ListenerSignature<L> = DefaultListener>(\n opt: PubSubConfig,\n) {\n return new PubSub<L>(opt)\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isHiddenPath
3
- } from "./chunk-4LUSHUPX.js";
3
+ } from "./chunk-EDGDHQU7.js";
4
4
  import {
5
5
  globToRegExp
6
6
  } from "./chunk-EGXUCKU4.js";
@@ -68,4 +68,4 @@ export {
68
68
  walkSync,
69
69
  files
70
70
  };
71
- //# sourceMappingURL=chunk-BHSZHF7T.js.map
71
+ //# sourceMappingURL=chunk-4YREGHTS.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-OPA3P4S3.js";
4
4
  import {
5
5
  uname
6
- } from "./chunk-OKXFHCRW.js";
6
+ } from "./chunk-C34SYG5U.js";
7
7
  import {
8
8
  useDispose
9
9
  } from "./chunk-3K65A2PU.js";
@@ -157,4 +157,4 @@ var Progress = class _Progress extends Emitter {
157
157
  export {
158
158
  Progress
159
159
  };
160
- //# sourceMappingURL=chunk-TOSLGV7Y.js.map
160
+ //# sourceMappingURL=chunk-57H5H4V7.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-5BT2R3H5.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- LoggerFileHandler
3
- } from "./chunk-N3LGUDJ4.js";
4
1
  import {
5
2
  LoggerNodeHandler
6
- } from "./chunk-MCOJ2UGJ.js";
3
+ } from "./chunk-H6NCRSQN.js";
4
+ import {
5
+ LoggerFileHandler
6
+ } from "./chunk-UYS4UEZ2.js";
7
7
  import {
8
8
  toPath
9
9
  } from "./chunk-YIU6EKNX.js";
@@ -44,4 +44,4 @@ export {
44
44
  Logger,
45
45
  LoggerFromConfig
46
46
  };
47
- //# sourceMappingURL=chunk-AC2YDDHM.js.map
47
+ //# sourceMappingURL=chunk-5M26EN7U.js.map
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunk73THIGLVcjs = require('./chunk-73THIGLV.cjs');
3
+ var _chunkVTJPQOS6cjs = require('./chunk-VTJPQOS6.cjs');
4
4
 
5
5
 
6
6
  var _chunkDDS4MYUBcjs = require('./chunk-DDS4MYUB.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkTF6RVG6Ccjs = require('./chunk-TF6RVG6C.cjs');
10
+ var _chunk4KKCXRVNcjs = require('./chunk-4KKCXRVN.cjs');
11
11
 
12
12
 
13
13
 
@@ -28,8 +28,8 @@ function createPromiseProxy(fn, opt, predefinedMethods = {}) {
28
28
  }
29
29
  function useMessageHub(opt = {}) {
30
30
  const {
31
- name = _chunkTF6RVG6Ccjs.uname.call(void 0, "hub"),
32
- encoder = new (0, _chunk73THIGLVcjs.JsonEncoder)(),
31
+ name = _chunk4KKCXRVNcjs.uname.call(void 0, "hub"),
32
+ encoder = new (0, _chunkVTJPQOS6cjs.JsonEncoder)(),
33
33
  retryAfter = 1e3,
34
34
  ignoreUnhandled = true,
35
35
  logLevel = false
@@ -127,7 +127,7 @@ function useMessageHub(opt = {}) {
127
127
  };
128
128
  const fetchMessage = async (name2, args, opt2 = {}) => {
129
129
  const { timeout = 5e3 } = opt2;
130
- const id = _chunkTF6RVG6Ccjs.uuid.call(void 0, );
130
+ const id = _chunk4KKCXRVNcjs.uuid.call(void 0, );
131
131
  await postMessage({
132
132
  name: name2,
133
133
  args,
@@ -162,4 +162,4 @@ function useMessageHub(opt = {}) {
162
162
 
163
163
 
164
164
  exports.createPromiseProxy = createPromiseProxy; exports.useMessageHub = useMessageHub;
165
- //# sourceMappingURL=chunk-FGPUW5W3.cjs.map
165
+ //# sourceMappingURL=chunk-5QXWV2KQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-FGPUW5W3.cjs","../src/common/msg/messages.ts"],"names":["name","result","error","opt"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-FGPUW5W3.cjs","sourcesContent":[null,"import type { LogLevelAliasType } from '../log/log-base'\nimport type { Json } from '../types'\nimport type { Channel } from './channel'\nimport type { Encoder } from './encoder'\nimport { valueToString } from '../data/convert'\nimport { isPromise, tryTimeout } from '../exec/promise'\nimport { DefaultLogger } from '../log/log'\nimport { uname, uuid } from '../uuid'\nimport { JsonEncoder } from './encoder'\n\nexport interface MessageAction {\n name: string\n id: string\n args?: Json[]\n}\n\nexport interface MessageResult {\n id: string\n result?: Json\n error?: { stack?: string, name: string, message: string }\n}\n\nexport type Message = MessageAction | MessageResult\n\nexport interface MessagesOptions {\n timeout?: number\n}\n\nexport interface MessagesDefaultMethods<L> {\n dispose: () => void\n connect?: (channel: Channel) => void\n options: (opt: MessagesOptions) => L\n}\n\nexport type MessagesMethods<L> = L & MessagesDefaultMethods<L>\n\n// export type MessageDefinitions = {\n// [key: string]: (...args: any) => Promise<any>\n// }\n\nexport type MessageDefinitions = Record<any, (...args: any) => Promise<any>>\n\nexport interface MessageHub {\n dispose: () => void\n connect: (newChannel: Channel) => void\n listen: <L extends MessageDefinitions>(newHandlers: L) => void\n send: <L extends MessageDefinitions>() => MessagesMethods<L>\n}\n\n// The async proxy, waiting for a response\nexport function createPromiseProxy<P extends object>(fn: (name: string, args: any[], opt: any) => Promise<unknown>, opt: MessagesOptions, predefinedMethods: any = {}): P {\n return new Proxy<P>(predefinedMethods, {\n get: (target: any, name: any) => {\n if (name in target)\n return target[name]\n return (...args: any): any => fn(name, args, opt)\n },\n })\n}\n\n/**\n * RPC\n *\n * Features:\n * - Waits for connection\n * - Retries after fail\n * - Timeouts\n */\nexport function useMessageHub(\n opt: {\n name?: string\n channel?: Channel\n encoder?: Encoder\n retryAfter?: number\n ignoreUnhandled?: boolean\n debug?: boolean\n logLevel?: LogLevelAliasType\n } = {},\n): MessageHub {\n const {\n name = uname('hub'),\n encoder = new JsonEncoder(),\n retryAfter = 1000,\n ignoreUnhandled = true,\n logLevel = false,\n } = opt\n\n const log = DefaultLogger(name, logLevel)\n\n const handlers = {}\n let channel: Channel | undefined\n const queue: Message[] = []\n let queueRetryTimer: any\n const waitingForResponse: Record<string, [\n (result?: any) => any, // resolve\n (result?: any) => any, // reject\n ]> = {}\n\n const dispose = () => {\n clearTimeout(queueRetryTimer)\n }\n\n const postNext = async () => {\n clearTimeout(queueRetryTimer)\n if (channel) {\n if (channel.isConnected) {\n while (queue.length) {\n const message = queue[0]\n try {\n channel.postMessage(await encoder.encode(message))\n queue.shift() // remove from queue when done\n }\n catch (err) {\n log.warn('postMessage', err)\n break\n }\n }\n }\n if (queue.length > 0 && retryAfter > 0)\n queueRetryTimer = setTimeout(postNext, retryAfter)\n }\n }\n\n const postMessage = async (message: Message) => {\n log('enqueue postMessage', message)\n queue.push(message)\n await postNext()\n }\n\n const connect = async (newChannel: Channel) => {\n channel = newChannel\n\n channel.on('connect', postNext)\n\n channel.on('message', async (msg: any) => {\n log('onmessage', typeof msg)\n const { name, args, id, result, error } = await encoder.decode(msg.data)\n\n // Incoming new message\n if (name) {\n log(`name ${name} id ${id}`)\n try {\n // @ts-expect-error xxx\n if (handlers[name] == null)\n throw new Error(`handler for ${name} was not found`)\n\n // @ts-expect-error xxx\n let result = handlers[name](...args)\n if (isPromise(result))\n result = await result\n log(`result ${result}`)\n if (id)\n await postMessage({ id, result })\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(valueToString(error))\n log.warn('execution error', err.name)\n await postMessage({\n id,\n error: {\n message: err.message,\n stack: err.stack,\n name: err.name,\n },\n })\n }\n }\n\n // Incoming new response\n else if (id) {\n log(`response for id=${id}: result=${result}, error=${error}`)\n if (waitingForResponse[id] == null) {\n if (result === undefined)\n log(`skip response for ${id}`)\n else\n log.warn(`no response hook for ${id}`)\n }\n else {\n const [resolve, reject] = waitingForResponse[id]\n if (resolve && reject) {\n delete waitingForResponse[id]\n if (error) {\n const err = new Error(error.message)\n err.stack = error.stack\n err.name = error.name\n log.warn('reject', err.name)\n reject(err)\n }\n else {\n log('resolve', result)\n resolve(result)\n }\n }\n }\n }\n\n // Don't know what to do with it\n else if (!ignoreUnhandled) {\n log.warn('Unhandled message', msg)\n }\n })\n\n await postNext()\n }\n\n const fetchMessage = async (\n name: string,\n args: any[],\n opt: MessagesOptions = {},\n ): Promise<unknown> => {\n const { timeout = 5000 } = opt\n const id = uuid()\n await postMessage({\n name,\n args,\n id,\n })\n return tryTimeout(\n new Promise(\n (resolve, reject) => (waitingForResponse[id] = [resolve, reject]),\n ),\n timeout,\n )\n }\n\n if (opt.channel)\n void connect(opt.channel) // todo async\n\n return {\n dispose,\n\n connect,\n listen<L extends object>(newHandlers: L) {\n Object.assign(handlers, newHandlers)\n },\n send<L extends object>() {\n // The regular proxy without responding, just send\n return createPromiseProxy<L>(fetchMessage, {}, {\n options(perCallopt: MessagesOptions) {\n return createPromiseProxy<L>(fetchMessage, { ...perCallopt })\n },\n } as MessagesDefaultMethods<L>) as MessagesMethods<L>\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-5QXWV2KQ.cjs","../src/common/msg/messages.ts"],"names":["name","result","error","opt"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-5QXWV2KQ.cjs","sourcesContent":[null,"import type { LogLevelAliasType } from '../log/log-base'\nimport type { Json } from '../types'\nimport type { Channel } from './channel'\nimport type { Encoder } from './encoder'\nimport { valueToString } from '../data/convert'\nimport { isPromise, tryTimeout } from '../exec/promise'\nimport { DefaultLogger } from '../log/log'\nimport { uname, uuid } from '../uuid'\nimport { JsonEncoder } from './encoder'\n\nexport interface MessageAction {\n name: string\n id: string\n args?: Json[]\n}\n\nexport interface MessageResult {\n id: string\n result?: Json\n error?: { stack?: string, name: string, message: string }\n}\n\nexport type Message = MessageAction | MessageResult\n\nexport interface MessagesOptions {\n timeout?: number\n}\n\nexport interface MessagesDefaultMethods<L> {\n dispose: () => void\n connect?: (channel: Channel) => void\n options: (opt: MessagesOptions) => L\n}\n\nexport type MessagesMethods<L> = L & MessagesDefaultMethods<L>\n\n// export type MessageDefinitions = {\n// [key: string]: (...args: any) => Promise<any>\n// }\n\nexport type MessageDefinitions = Record<any, (...args: any) => Promise<any>>\n\nexport interface MessageHub {\n dispose: () => void\n connect: (newChannel: Channel) => void\n listen: <L extends MessageDefinitions>(newHandlers: L) => void\n send: <L extends MessageDefinitions>() => MessagesMethods<L>\n}\n\n// The async proxy, waiting for a response\nexport function createPromiseProxy<P extends object>(fn: (name: string, args: any[], opt: any) => Promise<unknown>, opt: MessagesOptions, predefinedMethods: any = {}): P {\n return new Proxy<P>(predefinedMethods, {\n get: (target: any, name: any) => {\n if (name in target)\n return target[name]\n return (...args: any): any => fn(name, args, opt)\n },\n })\n}\n\n/**\n * RPC\n *\n * Features:\n * - Waits for connection\n * - Retries after fail\n * - Timeouts\n */\nexport function useMessageHub(\n opt: {\n name?: string\n channel?: Channel\n encoder?: Encoder\n retryAfter?: number\n ignoreUnhandled?: boolean\n debug?: boolean\n logLevel?: LogLevelAliasType\n } = {},\n): MessageHub {\n const {\n name = uname('hub'),\n encoder = new JsonEncoder(),\n retryAfter = 1000,\n ignoreUnhandled = true,\n logLevel = false,\n } = opt\n\n const log = DefaultLogger(name, logLevel)\n\n const handlers = {}\n let channel: Channel | undefined\n const queue: Message[] = []\n let queueRetryTimer: any\n const waitingForResponse: Record<string, [\n (result?: any) => any, // resolve\n (result?: any) => any, // reject\n ]> = {}\n\n const dispose = () => {\n clearTimeout(queueRetryTimer)\n }\n\n const postNext = async () => {\n clearTimeout(queueRetryTimer)\n if (channel) {\n if (channel.isConnected) {\n while (queue.length) {\n const message = queue[0]\n try {\n channel.postMessage(await encoder.encode(message))\n queue.shift() // remove from queue when done\n }\n catch (err) {\n log.warn('postMessage', err)\n break\n }\n }\n }\n if (queue.length > 0 && retryAfter > 0)\n queueRetryTimer = setTimeout(postNext, retryAfter)\n }\n }\n\n const postMessage = async (message: Message) => {\n log('enqueue postMessage', message)\n queue.push(message)\n await postNext()\n }\n\n const connect = async (newChannel: Channel) => {\n channel = newChannel\n\n channel.on('connect', postNext)\n\n channel.on('message', async (msg: any) => {\n log('onmessage', typeof msg)\n const { name, args, id, result, error } = await encoder.decode(msg.data)\n\n // Incoming new message\n if (name) {\n log(`name ${name} id ${id}`)\n try {\n // @ts-expect-error xxx\n if (handlers[name] == null)\n throw new Error(`handler for ${name} was not found`)\n\n // @ts-expect-error xxx\n let result = handlers[name](...args)\n if (isPromise(result))\n result = await result\n log(`result ${result}`)\n if (id)\n await postMessage({ id, result })\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(valueToString(error))\n log.warn('execution error', err.name)\n await postMessage({\n id,\n error: {\n message: err.message,\n stack: err.stack,\n name: err.name,\n },\n })\n }\n }\n\n // Incoming new response\n else if (id) {\n log(`response for id=${id}: result=${result}, error=${error}`)\n if (waitingForResponse[id] == null) {\n if (result === undefined)\n log(`skip response for ${id}`)\n else\n log.warn(`no response hook for ${id}`)\n }\n else {\n const [resolve, reject] = waitingForResponse[id]\n if (resolve && reject) {\n delete waitingForResponse[id]\n if (error) {\n const err = new Error(error.message)\n err.stack = error.stack\n err.name = error.name\n log.warn('reject', err.name)\n reject(err)\n }\n else {\n log('resolve', result)\n resolve(result)\n }\n }\n }\n }\n\n // Don't know what to do with it\n else if (!ignoreUnhandled) {\n log.warn('Unhandled message', msg)\n }\n })\n\n await postNext()\n }\n\n const fetchMessage = async (\n name: string,\n args: any[],\n opt: MessagesOptions = {},\n ): Promise<unknown> => {\n const { timeout = 5000 } = opt\n const id = uuid()\n await postMessage({\n name,\n args,\n id,\n })\n return tryTimeout(\n new Promise(\n (resolve, reject) => (waitingForResponse[id] = [resolve, reject]),\n ),\n timeout,\n )\n }\n\n if (opt.channel)\n void connect(opt.channel) // todo async\n\n return {\n dispose,\n\n connect,\n listen<L extends object>(newHandlers: L) {\n Object.assign(handlers, newHandlers)\n },\n send<L extends object>() {\n // The regular proxy without responding, just send\n return createPromiseProxy<L>(fetchMessage, {}, {\n options(perCallopt: MessagesOptions) {\n return createPromiseProxy<L>(fetchMessage, { ...perCallopt })\n },\n } as MessagesDefaultMethods<L>) as MessagesMethods<L>\n },\n }\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  decrypt,
3
3
  encrypt
4
- } from "./chunk-N33MGVUS.js";
4
+ } from "./chunk-SZNKMNVB.js";
5
5
  import {
6
6
  Uint8ArrayToJson,
7
7
  jsonToUint8Array
8
- } from "./chunk-4LNR3HBM.js";
8
+ } from "./chunk-HQCA4UNS.js";
9
9
 
10
10
  // src/common/msg/encoder.ts
11
11
  var NoopEncoder = class {
@@ -43,4 +43,4 @@ export {
43
43
  JsonEncoder,
44
44
  CryptoEncoder
45
45
  };
46
- //# sourceMappingURL=chunk-2Q2D6IYD.js.map
46
+ //# sourceMappingURL=chunk-6HHWM67Z.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-PZP2B3FC.js";
4
4
  import {
5
5
  toUint8Array
6
- } from "./chunk-4LNR3HBM.js";
6
+ } from "./chunk-HQCA4UNS.js";
7
7
 
8
8
  // src/common/data/wordlist.ts
9
9
  var wordsEven = ["aardvark", "absurd", "accrue", "acme", "adrift", "adult", "afflict", "ahead", "aimless", "Algol", "allow", "alone", "ammo", "ancient", "apple", "artist", "assume", "Athens", "atlas", "Aztec", "baboon", "backfield", "backward", "basalt", "beaming", "bedlamp", "beehive", "beeswax", "befriend", "Belfast", "berserk", "billiard", "bison", "blackjack", "blockade", "blowtorch", "bluebird", "bombast", "bookshelf", "brackish", "breadline", "breakup", "brickyard", "briefcase", "Burbank", "button", "buzzard", "cement", "chairlift", "chatter", "checkup", "chisel", "choking", "chopper", "Christmas", "clamshell", "classic", "classroom", "cleanup", "clockwork", "cobra", "commence", "concert", "cowbell", "crackdown", "cranky", "crowfoot", "crucial", "crumpled", "crusade", "cubic", "deadbolt", "deckhand", "dogsled", "dosage", "dragnet", "drainage", "dreadful", "drifter", "dropper", "drumbeat", "drunken", "Dupont", "dwelling", "eating", "edict", "egghead", "eightball", "endorse", "endow", "enlist", "erase", "escape", "exceed", "eyeglass", "eyetooth", "facial", "fallout", "flagpole", "flatfoot", "flytrap", "fracture", "fragile", "framework", "freedom", "frighten", "gazelle", "Geiger", "Glasgow", "glitter", "glucose", "goggles", "goldfish", "gremlin", "guidance", "hamlet", "highchair", "hockey", "hotdog", "indoors", "indulge", "inverse", "involve", "island", "Janus", "jawbone", "keyboard", "kickoff", "kiwi", "klaxon", "lockup", "merit", "minnow", "miser", "Mohawk", "mural", "music", "Neptune", "newborn", "nightbird", "obtuse", "offload", "oilfield", "optic", "orca", "payday", "peachy", "pheasant", "physique", "playhouse", "Pluto", "preclude", "prefer", "preshrunk", "printer", "profile", "prowler", "pupil", "puppy", "python", "quadrant", "quiver", "quota", "ragtime", "ratchet", "rebirth", "reform", "regain", "reindeer", "rematch", "repay", "retouch", "revenge", "reward", "rhythm", "ringbolt", "robust", "rocker", "ruffled", "sawdust", "scallion", "scenic", "scorecard", "Scotland", "seabird", "select", "sentence", "shadow", "showgirl", "skullcap", "skydive", "slingshot", "slothful", "slowdown", "snapline", "snapshot", "snowcap", "snowslide", "solo", "spaniel", "spearhead", "spellbind", "spheroid", "spigot", "spindle", "spoilage", "spyglass", "stagehand", "stagnate", "stairway", "standard", "stapler", "steamship", "stepchild", "sterling", "stockman", "stopwatch", "stormy", "sugar", "surmount", "suspense", "swelter", "tactics", "talon", "tapeworm", "tempest", "tiger", "tissue", "tonic", "tracker", "transit", "trauma", "treadmill", "Trojan", "trouble", "tumor", "tunnel", "tycoon", "umpire", "uncut", "unearth", "unwind", "uproot", "upset", "upshot", "vapor", "village", "virus", "Vulcan", "waffle", "wallet", "watchword", "wayside", "willow", "woodlark", "Zulu"];
@@ -19,4 +19,4 @@ export {
19
19
  Uint8ArrayToWords,
20
20
  wordsToUint8Array
21
21
  };
22
- //# sourceMappingURL=chunk-OLLVOQ6W.js.map
22
+ //# sourceMappingURL=chunk-ADCHH7MN.js.map
@@ -3,16 +3,16 @@ import {
3
3
  decodeBase62,
4
4
  encodeBase32,
5
5
  encodeBase62
6
- } from "./chunk-LRNHXH3A.js";
6
+ } from "./chunk-JCES7GZH.js";
7
7
  import {
8
8
  randomUint8Array
9
- } from "./chunk-N33MGVUS.js";
9
+ } from "./chunk-SZNKMNVB.js";
10
10
  import {
11
11
  Uint8ArrayToString,
12
12
  fromHex,
13
13
  toHex,
14
14
  toUint8Array
15
- } from "./chunk-4LNR3HBM.js";
15
+ } from "./chunk-HQCA4UNS.js";
16
16
  import {
17
17
  getTimestamp
18
18
  } from "./chunk-NNCJ3QL5.js";
@@ -166,4 +166,4 @@ export {
166
166
  unameReset,
167
167
  qid
168
168
  };
169
- //# sourceMappingURL=chunk-OKXFHCRW.js.map
169
+ //# sourceMappingURL=chunk-C34SYG5U.js.map
@@ -1,13 +1,13 @@
1
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; }
2
2
 
3
- var _chunk334CCXIKcjs = require('./chunk-334CCXIK.cjs');
3
+ var _chunkMKLFM6HTcjs = require('./chunk-MKLFM6HT.cjs');
4
4
 
5
5
 
6
6
  var _chunkMTWPH7QTcjs = require('./chunk-MTWPH7QT.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkTF6RVG6Ccjs = require('./chunk-TF6RVG6C.cjs');
10
+ var _chunk4KKCXRVNcjs = require('./chunk-4KKCXRVN.cjs');
11
11
 
12
12
 
13
13
  var _chunk5TCFLJWDcjs = require('./chunk-5TCFLJWD.cjs');
@@ -19,13 +19,13 @@ var _chunkN5KTMDVOcjs = require('./chunk-N5KTMDVO.cjs');
19
19
  function usePool(config = {}) {
20
20
  const {
21
21
  maxParallel = 3,
22
- name = _chunkTF6RVG6Ccjs.uname.call(void 0, "pool"),
22
+ name = _chunk4KKCXRVNcjs.uname.call(void 0, "pool"),
23
23
  idConflictResolution = "memoize"
24
24
  } = config;
25
25
  const events = new (0, _chunkMTWPH7QTcjs.Emitter)();
26
26
  const dispose = _chunk5TCFLJWDcjs.useDispose.call(void 0, );
27
27
  dispose.add(cancelAll);
28
- const progress = new (0, _chunk334CCXIKcjs.Progress)({ name });
28
+ const progress = new (0, _chunkMKLFM6HTcjs.Progress)({ name });
29
29
  progress.on("progressCancelled", cancelAll);
30
30
  let countMax = 0;
31
31
  let countResolved = 0;
@@ -138,7 +138,7 @@ function usePool(config = {}) {
138
138
  function enqueue(task, config2 = {}) {
139
139
  let done;
140
140
  const promise = new Promise((resolve) => done = resolve);
141
- const id = _nullishCoalesce(config2.id, () => ( _chunkTF6RVG6Ccjs.uuid.call(void 0, )));
141
+ const id = _nullishCoalesce(config2.id, () => ( _chunk4KKCXRVNcjs.uuid.call(void 0, )));
142
142
  if (tasks[id] != null) {
143
143
  const resolution = _nullishCoalesce(config2.idConflictResolution, () => ( idConflictResolution));
144
144
  if (resolution === "replace") {
@@ -160,7 +160,7 @@ function usePool(config = {}) {
160
160
  throw new Error(`Pool task with id=${id} already exists!`);
161
161
  }
162
162
  }
163
- const taskProgress = new (0, _chunk334CCXIKcjs.Progress)({
163
+ const taskProgress = new (0, _chunkMKLFM6HTcjs.Progress)({
164
164
  name: id,
165
165
  totalUnits: _nullishCoalesce(config2.max, () => ( 1)),
166
166
  completeUnits: _nullishCoalesce(config2.resolved, () => ( 0))
@@ -220,4 +220,4 @@ function usePool(config = {}) {
220
220
 
221
221
 
222
222
  exports.usePool = usePool;
223
- //# sourceMappingURL=chunk-OJKBG3DM.cjs.map
223
+ //# sourceMappingURL=chunk-CFCMFXRU.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-OJKBG3DM.cjs","../src/common/exec/pool.ts"],"names":["config"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-OJKBG3DM.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
+ {"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-CFCMFXRU.cjs","../src/common/exec/pool.ts"],"names":["config"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-CFCMFXRU.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"]}