zeed 1.3.0 → 1.4.0

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 (575) hide show
  1. package/AGENTS.md +50 -211
  2. package/README.md +16 -0
  3. package/dist/_experiments/bitcask.cjs +243 -1
  4. package/dist/_experiments/bitcask.cjs.map +1 -1
  5. package/dist/_experiments/bitcask.mjs +230 -1
  6. package/dist/_experiments/bitcask.mjs.map +1 -1
  7. package/dist/bin-BAoS4qtm.mjs +593 -0
  8. package/dist/{bin-SPdenYkw.mjs.map → bin-BAoS4qtm.mjs.map} +1 -1
  9. package/dist/bin-Ddaz2lxM.cjs +862 -0
  10. package/dist/{bin-Ce3i6ABn.cjs.map → bin-Ddaz2lxM.cjs.map} +1 -1
  11. package/dist/browser/base64.cjs +14 -1
  12. package/dist/browser/base64.cjs.map +1 -1
  13. package/dist/browser/base64.mjs +12 -1
  14. package/dist/browser/base64.mjs.map +1 -1
  15. package/dist/browser/gravatar.cjs +186 -1
  16. package/dist/browser/gravatar.cjs.map +1 -1
  17. package/dist/browser/gravatar.mjs +184 -1
  18. package/dist/browser/gravatar.mjs.map +1 -1
  19. package/dist/browser/index.cjs +14 -1
  20. package/dist/browser/index.mjs +8 -1
  21. package/dist/browser/localstorage.cjs +46 -1
  22. package/dist/browser/localstorage.cjs.map +1 -1
  23. package/dist/browser/localstorage.mjs +45 -1
  24. package/dist/browser/localstorage.mjs.map +1 -1
  25. package/dist/browser/log/index.cjs +8 -1
  26. package/dist/browser/log/index.mjs +5 -1
  27. package/dist/browser/log/log-browser-factory.cjs +65 -1
  28. package/dist/browser/log/log-browser-factory.cjs.map +1 -1
  29. package/dist/browser/log/log-browser-factory.mjs +64 -1
  30. package/dist/browser/log/log-browser-factory.mjs.map +1 -1
  31. package/dist/browser/log/log-browser.cjs +72 -1
  32. package/dist/browser/log/log-browser.cjs.map +1 -1
  33. package/dist/browser/log/log-browser.mjs +71 -1
  34. package/dist/browser/log/log-browser.mjs.map +1 -1
  35. package/dist/browser/log/log-colors.cjs +11 -1
  36. package/dist/browser/log/log-colors.cjs.map +1 -1
  37. package/dist/browser/log/log-colors.mjs +9 -1
  38. package/dist/browser/log/log-colors.mjs.map +1 -1
  39. package/dist/browser/log/log-context-browser.cjs +25 -1
  40. package/dist/browser/log/log-context-browser.cjs.map +1 -1
  41. package/dist/browser/log/log-context-browser.mjs +23 -1
  42. package/dist/browser/log/log-context-browser.mjs.map +1 -1
  43. package/dist/chunk-DQk6qfdC.mjs +18 -0
  44. package/dist/chunk-uaV2rQ02.cjs +53 -0
  45. package/dist/common/assert.cjs +22 -1
  46. package/dist/common/assert.cjs.map +1 -1
  47. package/dist/common/assert.mjs +19 -1
  48. package/dist/common/assert.mjs.map +1 -1
  49. package/dist/common/bin/index.cjs +106 -1
  50. package/dist/common/bin/index.cjs.map +1 -1
  51. package/dist/common/bin/index.mjs +98 -1
  52. package/dist/common/bin/index.mjs.map +1 -1
  53. package/dist/common/bin/lib0/binary.cjs +146 -1
  54. package/dist/common/bin/lib0/binary.cjs.map +1 -1
  55. package/dist/common/bin/lib0/binary.mjs +80 -1
  56. package/dist/common/bin/lib0/binary.mjs.map +1 -1
  57. package/dist/common/bin/lib0/buffer.cjs +42 -1
  58. package/dist/common/bin/lib0/buffer.cjs.map +1 -1
  59. package/dist/common/bin/lib0/buffer.mjs +38 -1
  60. package/dist/common/bin/lib0/buffer.mjs.map +1 -1
  61. package/dist/common/bin/lib0/create.cjs +24 -1
  62. package/dist/common/bin/lib0/create.cjs.map +1 -1
  63. package/dist/common/bin/lib0/create.mjs +21 -1
  64. package/dist/common/bin/lib0/create.mjs.map +1 -1
  65. package/dist/common/bin/lib0/decoding.cjs +325 -1
  66. package/dist/common/bin/lib0/decoding.cjs.map +1 -1
  67. package/dist/common/bin/lib0/decoding.mjs +298 -1
  68. package/dist/common/bin/lib0/decoding.mjs.map +1 -1
  69. package/dist/common/bin/lib0/encoding.cjs +404 -1
  70. package/dist/common/bin/lib0/encoding.cjs.map +1 -1
  71. package/dist/common/bin/lib0/encoding.mjs +377 -1
  72. package/dist/common/bin/lib0/encoding.mjs.map +1 -1
  73. package/dist/common/bin/lib0/string.cjs +81 -1
  74. package/dist/common/bin/lib0/string.cjs.map +1 -1
  75. package/dist/common/bin/lib0/string.mjs +71 -1
  76. package/dist/common/bin/lib0/string.mjs.map +1 -1
  77. package/dist/common/crypto/aes-sealed.cjs +34 -1
  78. package/dist/common/crypto/aes-sealed.cjs.map +1 -1
  79. package/dist/common/crypto/aes-sealed.mjs +32 -1
  80. package/dist/common/crypto/aes-sealed.mjs.map +1 -1
  81. package/dist/common/crypto/crypto.cjs +91 -1
  82. package/dist/common/crypto/crypto.cjs.map +1 -1
  83. package/dist/common/crypto/crypto.mjs +80 -1
  84. package/dist/common/crypto/crypto.mjs.map +1 -1
  85. package/dist/common/crypto/index.cjs +23 -1
  86. package/dist/common/crypto/index.mjs +5 -1
  87. package/dist/common/crypto/xaes.cjs +128 -1
  88. package/dist/common/crypto/xaes.cjs.map +1 -1
  89. package/dist/common/crypto/xaes.mjs +123 -1
  90. package/dist/common/crypto/xaes.mjs.map +1 -1
  91. package/dist/common/csv.cjs +49 -4
  92. package/dist/common/csv.cjs.map +1 -1
  93. package/dist/common/csv.mjs +46 -4
  94. package/dist/common/csv.mjs.map +1 -1
  95. package/dist/common/data/array.cjs +299 -1
  96. package/dist/common/data/array.cjs.map +1 -1
  97. package/dist/common/data/array.mjs +274 -1
  98. package/dist/common/data/array.mjs.map +1 -1
  99. package/dist/common/data/basex-secure.cjs +30 -1
  100. package/dist/common/data/basex-secure.mjs +3 -1
  101. package/dist/common/data/basex.cjs +163 -1
  102. package/dist/common/data/basex.cjs.map +1 -1
  103. package/dist/common/data/basex.mjs +152 -1
  104. package/dist/common/data/basex.mjs.map +1 -1
  105. package/dist/common/data/bin-types.mjs +1 -1
  106. package/dist/common/data/bin.cjs +21 -1
  107. package/dist/common/data/bin.mjs +3 -1
  108. package/dist/common/data/camelcase.cjs +27 -1
  109. package/dist/common/data/camelcase.cjs.map +1 -1
  110. package/dist/common/data/camelcase.mjs +22 -1
  111. package/dist/common/data/camelcase.mjs.map +1 -1
  112. package/dist/common/data/convert.cjs +104 -1
  113. package/dist/common/data/convert.cjs.map +1 -1
  114. package/dist/common/data/convert.mjs +88 -1
  115. package/dist/common/data/convert.mjs.map +1 -1
  116. package/dist/common/data/datauri.cjs +32 -1
  117. package/dist/common/data/datauri.cjs.map +1 -1
  118. package/dist/common/data/datauri.mjs +27 -1
  119. package/dist/common/data/datauri.mjs.map +1 -1
  120. package/dist/common/data/day-legacy.cjs +148 -1
  121. package/dist/common/data/day-legacy.cjs.map +1 -1
  122. package/dist/common/data/day-legacy.mjs +143 -1
  123. package/dist/common/data/day-legacy.mjs.map +1 -1
  124. package/dist/common/data/day.cjs +335 -1
  125. package/dist/common/data/day.cjs.map +1 -1
  126. package/dist/common/data/day.mjs +305 -1
  127. package/dist/common/data/day.mjs.map +1 -1
  128. package/dist/common/data/decimal.cjs +28 -1
  129. package/dist/common/data/decimal.cjs.map +1 -1
  130. package/dist/common/data/decimal.mjs +23 -1
  131. package/dist/common/data/decimal.mjs.map +1 -1
  132. package/dist/common/data/deep.cjs +57 -1
  133. package/dist/common/data/deep.cjs.map +1 -1
  134. package/dist/common/data/deep.mjs +54 -1
  135. package/dist/common/data/deep.mjs.map +1 -1
  136. package/dist/common/data/diff.cjs +62 -1
  137. package/dist/common/data/diff.cjs.map +1 -1
  138. package/dist/common/data/diff.mjs +60 -1
  139. package/dist/common/data/diff.mjs.map +1 -1
  140. package/dist/common/data/distributed.cjs +24 -1
  141. package/dist/common/data/distributed.cjs.map +1 -1
  142. package/dist/common/data/distributed.mjs +22 -1
  143. package/dist/common/data/distributed.mjs.map +1 -1
  144. package/dist/common/data/format.cjs +63 -1
  145. package/dist/common/data/format.cjs.map +1 -1
  146. package/dist/common/data/format.mjs +59 -1
  147. package/dist/common/data/format.mjs.map +1 -1
  148. package/dist/common/data/html.cjs +13 -1
  149. package/dist/common/data/html.cjs.map +1 -1
  150. package/dist/common/data/html.mjs +10 -1
  151. package/dist/common/data/html.mjs.map +1 -1
  152. package/dist/common/data/index.cjs +296 -1
  153. package/dist/common/data/index.mjs +37 -1
  154. package/dist/common/data/is.cjs +106 -1
  155. package/dist/common/data/is.cjs.map +1 -1
  156. package/dist/common/data/is.mjs +85 -1
  157. package/dist/common/data/is.mjs.map +1 -1
  158. package/dist/common/data/json.cjs +70 -1
  159. package/dist/common/data/json.cjs.map +1 -1
  160. package/dist/common/data/json.mjs +65 -1
  161. package/dist/common/data/json.mjs.map +1 -1
  162. package/dist/common/data/list.cjs +32 -1
  163. package/dist/common/data/list.cjs.map +1 -1
  164. package/dist/common/data/list.mjs +27 -1
  165. package/dist/common/data/list.mjs.map +1 -1
  166. package/dist/common/data/lru.mjs +1 -1
  167. package/dist/common/data/math.cjs +79 -1
  168. package/dist/common/data/math.cjs.map +1 -1
  169. package/dist/common/data/math.mjs +65 -1
  170. package/dist/common/data/math.mjs.map +1 -1
  171. package/dist/common/data/message.cjs +30 -1
  172. package/dist/common/data/message.cjs.map +1 -1
  173. package/dist/common/data/message.mjs +28 -1
  174. package/dist/common/data/message.mjs.map +1 -1
  175. package/dist/common/data/object-changes.cjs +66 -1
  176. package/dist/common/data/object-changes.cjs.map +1 -1
  177. package/dist/common/data/object-changes.mjs +63 -1
  178. package/dist/common/data/object-changes.mjs.map +1 -1
  179. package/dist/common/data/object.cjs +112 -1
  180. package/dist/common/data/object.cjs.map +1 -1
  181. package/dist/common/data/object.mjs +104 -1
  182. package/dist/common/data/object.mjs.map +1 -1
  183. package/dist/common/data/orderby.cjs +42 -1
  184. package/dist/common/data/orderby.cjs.map +1 -1
  185. package/dist/common/data/orderby.mjs +37 -1
  186. package/dist/common/data/orderby.mjs.map +1 -1
  187. package/dist/common/data/path.cjs +26 -1
  188. package/dist/common/data/path.cjs.map +1 -1
  189. package/dist/common/data/path.mjs +25 -1
  190. package/dist/common/data/path.mjs.map +1 -1
  191. package/dist/common/data/regexp.cjs +12 -1
  192. package/dist/common/data/regexp.cjs.map +1 -1
  193. package/dist/common/data/regexp.mjs +10 -1
  194. package/dist/common/data/regexp.mjs.map +1 -1
  195. package/dist/common/data/rounding.cjs +107 -1
  196. package/dist/common/data/rounding.cjs.map +1 -1
  197. package/dist/common/data/rounding.mjs +95 -1
  198. package/dist/common/data/rounding.mjs.map +1 -1
  199. package/dist/common/data/signal.cjs +39 -1
  200. package/dist/common/data/signal.cjs.map +1 -1
  201. package/dist/common/data/signal.mjs +38 -1
  202. package/dist/common/data/signal.mjs.map +1 -1
  203. package/dist/common/data/sortable.cjs +35 -1
  204. package/dist/common/data/sortable.cjs.map +1 -1
  205. package/dist/common/data/sortable.mjs +31 -1
  206. package/dist/common/data/sortable.mjs.map +1 -1
  207. package/dist/common/data/sorted.cjs +54 -1
  208. package/dist/common/data/sorted.cjs.map +1 -1
  209. package/dist/common/data/sorted.mjs +53 -1
  210. package/dist/common/data/sorted.mjs.map +1 -1
  211. package/dist/common/data/string-deburr.cjs +240 -1
  212. package/dist/common/data/string-deburr.cjs.map +1 -1
  213. package/dist/common/data/string-deburr.mjs +238 -1
  214. package/dist/common/data/string-deburr.mjs.map +1 -1
  215. package/dist/common/data/string-hash-fnv.cjs +69 -1
  216. package/dist/common/data/string-hash-fnv.cjs.map +1 -1
  217. package/dist/common/data/string-hash-fnv.mjs +67 -1
  218. package/dist/common/data/string-hash-fnv.mjs.map +1 -1
  219. package/dist/common/data/string-hash-pool.cjs +28 -1
  220. package/dist/common/data/string-hash-pool.cjs.map +1 -1
  221. package/dist/common/data/string-hash-pool.mjs +27 -1
  222. package/dist/common/data/string-hash-pool.mjs.map +1 -1
  223. package/dist/common/data/url.cjs +98 -2
  224. package/dist/common/data/url.cjs.map +1 -1
  225. package/dist/common/data/url.mjs +91 -2
  226. package/dist/common/data/url.mjs.map +1 -1
  227. package/dist/common/data/utils.cjs +118 -1
  228. package/dist/common/data/utils.cjs.map +1 -1
  229. package/dist/common/data/utils.mjs +107 -1
  230. package/dist/common/data/utils.mjs.map +1 -1
  231. package/dist/common/data/wordlist.cjs +531 -1
  232. package/dist/common/data/wordlist.cjs.map +1 -1
  233. package/dist/common/data/wordlist.mjs +529 -1
  234. package/dist/common/data/wordlist.mjs.map +1 -1
  235. package/dist/common/data/xrx.cjs +96 -1
  236. package/dist/common/data/xrx.cjs.map +1 -1
  237. package/dist/common/data/xrx.mjs +92 -1
  238. package/dist/common/data/xrx.mjs.map +1 -1
  239. package/dist/common/dispose-defer.cjs +133 -1
  240. package/dist/common/dispose-defer.cjs.map +1 -1
  241. package/dist/common/dispose-defer.mjs +130 -1
  242. package/dist/common/dispose-defer.mjs.map +1 -1
  243. package/dist/common/dispose-types.mjs +1 -1
  244. package/dist/common/dispose-utils.cjs +113 -1
  245. package/dist/common/dispose-utils.cjs.map +1 -1
  246. package/dist/common/dispose-utils.mjs +106 -1
  247. package/dist/common/dispose-utils.mjs.map +1 -1
  248. package/dist/common/exec/index.cjs +24 -1
  249. package/dist/common/exec/index.d.cts +1 -1
  250. package/dist/common/exec/index.d.mts +1 -1
  251. package/dist/common/exec/index.mjs +8 -1
  252. package/dist/common/exec/mutex.cjs +44 -1
  253. package/dist/common/exec/mutex.cjs.map +1 -1
  254. package/dist/common/exec/mutex.mjs +42 -1
  255. package/dist/common/exec/mutex.mjs.map +1 -1
  256. package/dist/common/exec/pool.cjs +181 -1
  257. package/dist/common/exec/pool.cjs.map +1 -1
  258. package/dist/common/exec/pool.d.cts +1 -1
  259. package/dist/common/exec/pool.d.mts +1 -1
  260. package/dist/common/exec/pool.mjs +180 -1
  261. package/dist/common/exec/pool.mjs.map +1 -1
  262. package/dist/common/exec/progress.cjs +149 -1
  263. package/dist/common/exec/progress.cjs.map +1 -1
  264. package/dist/common/exec/progress.d.cts +1 -1
  265. package/dist/common/exec/progress.d.mts +1 -1
  266. package/dist/common/exec/progress.mjs +148 -1
  267. package/dist/common/exec/progress.mjs.map +1 -1
  268. package/dist/common/exec/promise.cjs +113 -1
  269. package/dist/common/exec/promise.cjs.map +1 -1
  270. package/dist/common/exec/promise.mjs +103 -1
  271. package/dist/common/exec/promise.mjs.map +1 -1
  272. package/dist/common/exec/queue.cjs +125 -1
  273. package/dist/common/exec/queue.cjs.map +1 -1
  274. package/dist/common/exec/queue.d.cts +1 -1
  275. package/dist/common/exec/queue.d.mts +1 -1
  276. package/dist/common/exec/queue.mjs +124 -1
  277. package/dist/common/exec/queue.mjs.map +1 -1
  278. package/dist/common/exec/throttle-debounce.cjs +114 -1
  279. package/dist/common/exec/throttle-debounce.cjs.map +1 -1
  280. package/dist/common/exec/throttle-debounce.mjs +112 -1
  281. package/dist/common/exec/throttle-debounce.mjs.map +1 -1
  282. package/dist/common/global.cjs +22 -1
  283. package/dist/common/global.cjs.map +1 -1
  284. package/dist/common/global.mjs +19 -1
  285. package/dist/common/global.mjs.map +1 -1
  286. package/dist/common/index.cjs +559 -1
  287. package/dist/common/index.d.cts +1 -1
  288. package/dist/common/index.d.mts +1 -1
  289. package/dist/common/index.mjs +89 -1
  290. package/dist/common/localhost.cjs +16 -1
  291. package/dist/common/localhost.cjs.map +1 -1
  292. package/dist/common/localhost.mjs +14 -1
  293. package/dist/common/localhost.mjs.map +1 -1
  294. package/dist/common/log/index.cjs +34 -1
  295. package/dist/common/log/index.mjs +11 -1
  296. package/dist/common/log/log-base.cjs +40 -1
  297. package/dist/common/log/log-base.cjs.map +1 -1
  298. package/dist/common/log/log-base.mjs +31 -1
  299. package/dist/common/log/log-base.mjs.map +1 -1
  300. package/dist/common/log/log-colors.cjs +92 -1
  301. package/dist/common/log/log-colors.cjs.map +1 -1
  302. package/dist/common/log/log-colors.mjs +90 -1
  303. package/dist/common/log/log-colors.mjs.map +1 -1
  304. package/dist/common/log/log-config.cjs +15 -1
  305. package/dist/common/log/log-config.cjs.map +1 -1
  306. package/dist/common/log/log-config.mjs +14 -1
  307. package/dist/common/log/log-config.mjs.map +1 -1
  308. package/dist/common/log/log-console-capture.cjs +33 -1
  309. package/dist/common/log/log-console-capture.cjs.map +1 -1
  310. package/dist/common/log/log-console-capture.mjs +32 -1
  311. package/dist/common/log/log-console-capture.mjs.map +1 -1
  312. package/dist/common/log/log-console-original.cjs +27 -1
  313. package/dist/common/log/log-console-original.cjs.map +1 -1
  314. package/dist/common/log/log-console-original.mjs +26 -1
  315. package/dist/common/log/log-console-original.mjs.map +1 -1
  316. package/dist/common/log/log-console.cjs +39 -1
  317. package/dist/common/log/log-console.cjs.map +1 -1
  318. package/dist/common/log/log-console.mjs +38 -1
  319. package/dist/common/log/log-console.mjs.map +1 -1
  320. package/dist/common/log/log-context.cjs +109 -1
  321. package/dist/common/log/log-context.cjs.map +1 -1
  322. package/dist/common/log/log-context.mjs +108 -1
  323. package/dist/common/log/log-context.mjs.map +1 -1
  324. package/dist/common/log/log-filter.cjs +80 -1
  325. package/dist/common/log/log-filter.cjs.map +1 -1
  326. package/dist/common/log/log-filter.mjs +75 -1
  327. package/dist/common/log/log-filter.mjs.map +1 -1
  328. package/dist/common/log/log-memory.cjs +45 -1
  329. package/dist/common/log/log-memory.cjs.map +1 -1
  330. package/dist/common/log/log-memory.mjs +43 -1
  331. package/dist/common/log/log-memory.mjs.map +1 -1
  332. package/dist/common/log/log-noop.cjs +17 -1
  333. package/dist/common/log/log-noop.cjs.map +1 -1
  334. package/dist/common/log/log-noop.mjs +15 -1
  335. package/dist/common/log/log-noop.mjs.map +1 -1
  336. package/dist/common/log/log.cjs +46 -1
  337. package/dist/common/log/log.cjs.map +1 -1
  338. package/dist/common/log/log.mjs +43 -1
  339. package/dist/common/log/log.mjs.map +1 -1
  340. package/dist/common/msg/channel-debug.cjs +17 -1
  341. package/dist/common/msg/channel-debug.cjs.map +1 -1
  342. package/dist/common/msg/channel-debug.d.cts +1 -1
  343. package/dist/common/msg/channel-debug.d.mts +1 -1
  344. package/dist/common/msg/channel-debug.mjs +16 -1
  345. package/dist/common/msg/channel-debug.mjs.map +1 -1
  346. package/dist/common/msg/channel-local.cjs +28 -1
  347. package/dist/common/msg/channel-local.cjs.map +1 -1
  348. package/dist/common/msg/channel-local.d.cts +1 -1
  349. package/dist/common/msg/channel-local.d.mts +1 -1
  350. package/dist/common/msg/channel-local.mjs +26 -1
  351. package/dist/common/msg/channel-local.mjs.map +1 -1
  352. package/dist/common/msg/channel-resilient.cjs +63 -1
  353. package/dist/common/msg/channel-resilient.cjs.map +1 -1
  354. package/dist/common/msg/channel-resilient.d.cts +1 -1
  355. package/dist/common/msg/channel-resilient.d.mts +1 -1
  356. package/dist/common/msg/channel-resilient.mjs +62 -1
  357. package/dist/common/msg/channel-resilient.mjs.map +1 -1
  358. package/dist/common/msg/channel-wkwebview.cjs +35 -1
  359. package/dist/common/msg/channel-wkwebview.cjs.map +1 -1
  360. package/dist/common/msg/channel-wkwebview.d.cts +2 -1
  361. package/dist/common/msg/channel-wkwebview.d.mts +2 -1
  362. package/dist/common/msg/channel-wkwebview.mjs +34 -1
  363. package/dist/common/msg/channel-wkwebview.mjs.map +1 -1
  364. package/dist/common/msg/channel.cjs +23 -1
  365. package/dist/common/msg/channel.cjs.map +1 -1
  366. package/dist/common/msg/channel.d.cts +1 -1
  367. package/dist/common/msg/channel.d.mts +1 -1
  368. package/dist/common/msg/channel.mjs +22 -1
  369. package/dist/common/msg/channel.mjs.map +1 -1
  370. package/dist/common/msg/emitter.cjs +141 -1
  371. package/dist/common/msg/emitter.cjs.map +1 -1
  372. package/dist/common/msg/emitter.d.cts +1 -1
  373. package/dist/common/msg/emitter.d.mts +1 -1
  374. package/dist/common/msg/emitter.mjs +139 -1
  375. package/dist/common/msg/emitter.mjs.map +1 -1
  376. package/dist/common/msg/encoder.cjs +38 -1
  377. package/dist/common/msg/encoder.cjs.map +1 -1
  378. package/dist/common/msg/encoder.mjs +35 -1
  379. package/dist/common/msg/encoder.mjs.map +1 -1
  380. package/dist/common/msg/index.cjs +28 -1
  381. package/dist/common/msg/index.d.cts +1 -1
  382. package/dist/common/msg/index.d.mts +1 -1
  383. package/dist/common/msg/index.mjs +11 -1
  384. package/dist/common/msg/messages.cjs +135 -1
  385. package/dist/common/msg/messages.cjs.map +1 -1
  386. package/dist/common/msg/messages.d.cts +1 -1
  387. package/dist/common/msg/messages.d.mts +1 -1
  388. package/dist/common/msg/messages.mjs +133 -1
  389. package/dist/common/msg/messages.mjs.map +1 -1
  390. package/dist/common/msg/pipe.mjs +1 -1
  391. package/dist/common/msg/pubsub.cjs +78 -1
  392. package/dist/common/msg/pubsub.cjs.map +1 -1
  393. package/dist/common/msg/pubsub.d.cts +1 -1
  394. package/dist/common/msg/pubsub.d.mts +1 -1
  395. package/dist/common/msg/pubsub.mjs +76 -1
  396. package/dist/common/msg/pubsub.mjs.map +1 -1
  397. package/dist/common/msg/rpc.cjs +142 -1
  398. package/dist/common/msg/rpc.cjs.map +1 -1
  399. package/dist/common/msg/rpc.mjs +139 -1
  400. package/dist/common/msg/rpc.mjs.map +1 -1
  401. package/dist/common/network.cjs +129 -1
  402. package/dist/common/network.cjs.map +1 -1
  403. package/dist/common/network.mjs +122 -1
  404. package/dist/common/network.mjs.map +1 -1
  405. package/dist/common/platform.cjs +92 -1
  406. package/dist/common/platform.cjs.map +1 -1
  407. package/dist/common/platform.mjs +84 -1
  408. package/dist/common/platform.mjs.map +1 -1
  409. package/dist/common/schema/_sandbox/sandbox-inherit.mjs +1 -1
  410. package/dist/common/schema/_sandbox/sandbox.mjs +1 -1
  411. package/dist/common/schema/_sandbox/sandbox.xspec.mjs +1 -1
  412. package/dist/common/schema/export-json-schema.cjs +54 -1
  413. package/dist/common/schema/export-json-schema.cjs.map +1 -1
  414. package/dist/common/schema/export-json-schema.mjs +52 -1
  415. package/dist/common/schema/export-json-schema.mjs.map +1 -1
  416. package/dist/common/schema/export-swift.cjs +30 -2
  417. package/dist/common/schema/export-swift.cjs.map +1 -1
  418. package/dist/common/schema/export-swift.mjs +29 -2
  419. package/dist/common/schema/export-swift.mjs.map +1 -1
  420. package/dist/common/schema/export-typescript.cjs +20 -2
  421. package/dist/common/schema/export-typescript.cjs.map +1 -1
  422. package/dist/common/schema/export-typescript.mjs +19 -2
  423. package/dist/common/schema/export-typescript.mjs.map +1 -1
  424. package/dist/common/schema/index.cjs +55 -1
  425. package/dist/common/schema/index.mjs +12 -1
  426. package/dist/common/schema/parse-args.cjs +62 -2
  427. package/dist/common/schema/parse-args.cjs.map +1 -1
  428. package/dist/common/schema/parse-args.mjs +60 -2
  429. package/dist/common/schema/parse-args.mjs.map +1 -1
  430. package/dist/common/schema/parse-env.cjs +48 -3
  431. package/dist/common/schema/parse-env.cjs.map +1 -1
  432. package/dist/common/schema/parse-env.mjs +46 -3
  433. package/dist/common/schema/parse-env.mjs.map +1 -1
  434. package/dist/common/schema/parse-object.cjs +122 -1
  435. package/dist/common/schema/parse-object.cjs.map +1 -1
  436. package/dist/common/schema/parse-object.mjs +119 -1
  437. package/dist/common/schema/parse-object.mjs.map +1 -1
  438. package/dist/common/schema/schema-standard.mjs +1 -1
  439. package/dist/common/schema/schema.cjs +423 -1
  440. package/dist/common/schema/schema.cjs.map +1 -1
  441. package/dist/common/schema/schema.mjs +404 -1
  442. package/dist/common/schema/schema.mjs.map +1 -1
  443. package/dist/common/schema/serialize.cjs +109 -1
  444. package/dist/common/schema/serialize.cjs.map +1 -1
  445. package/dist/common/schema/serialize.mjs +107 -1
  446. package/dist/common/schema/serialize.mjs.map +1 -1
  447. package/dist/common/schema/type-test.mjs +1 -1
  448. package/dist/common/schema/utils.cjs +25 -1
  449. package/dist/common/schema/utils.cjs.map +1 -1
  450. package/dist/common/schema/utils.mjs +19 -1
  451. package/dist/common/schema/utils.mjs.map +1 -1
  452. package/dist/common/schema/z-collection.cjs +51 -1
  453. package/dist/common/schema/z-collection.mjs +27 -1
  454. package/dist/common/schema/z.cjs +9 -1
  455. package/dist/common/schema/z.mjs +3 -1
  456. package/dist/common/storage/index.cjs +4 -1
  457. package/dist/common/storage/index.mjs +3 -1
  458. package/dist/common/storage/memstorage.cjs +26 -1
  459. package/dist/common/storage/memstorage.cjs.map +1 -1
  460. package/dist/common/storage/memstorage.mjs +25 -1
  461. package/dist/common/storage/memstorage.mjs.map +1 -1
  462. package/dist/common/test.cjs +14 -1
  463. package/dist/common/test.cjs.map +1 -1
  464. package/dist/common/test.mjs +13 -1
  465. package/dist/common/test.mjs.map +1 -1
  466. package/dist/common/time.cjs +220 -1
  467. package/dist/common/time.cjs.map +1 -1
  468. package/dist/common/time.mjs +194 -1
  469. package/dist/common/time.mjs.map +1 -1
  470. package/dist/common/timeout.cjs +27 -1
  471. package/dist/common/timeout.cjs.map +1 -1
  472. package/dist/common/timeout.mjs +25 -1
  473. package/dist/common/timeout.mjs.map +1 -1
  474. package/dist/common/types.mjs +1 -1
  475. package/dist/common/utils.cjs +7 -1
  476. package/dist/common/utils.cjs.map +1 -1
  477. package/dist/common/utils.mjs +5 -1
  478. package/dist/common/utils.mjs.map +1 -1
  479. package/dist/common/uuid.cjs +307 -1
  480. package/dist/common/uuid.cjs.map +1 -1
  481. package/dist/common/uuid.mjs +284 -1
  482. package/dist/common/uuid.mjs.map +1 -1
  483. package/dist/{index-DHXVOH8h.d.cts → index-CFkMqHvX.d.cts} +1 -2
  484. package/dist/{index-DMaPyx9O.d.mts → index-C_3Y_s6f.d.mts} +1 -2
  485. package/dist/index.all.cjs +641 -1
  486. package/dist/index.all.d.cts +1 -1
  487. package/dist/index.all.d.mts +1 -1
  488. package/dist/index.all.mjs +113 -1
  489. package/dist/index.browser.cjs +576 -1
  490. package/dist/index.browser.d.cts +1 -1
  491. package/dist/index.browser.d.mts +1 -1
  492. package/dist/index.browser.mjs +98 -1
  493. package/dist/index.jsr.cjs +57 -1
  494. package/dist/index.jsr.mjs +6 -1
  495. package/dist/index.node.cjs +628 -1
  496. package/dist/index.node.d.cts +1 -1
  497. package/dist/index.node.d.mts +1 -1
  498. package/dist/index.node.mjs +106 -1
  499. package/dist/node/args.cjs +56 -1
  500. package/dist/node/args.cjs.map +1 -1
  501. package/dist/node/args.mjs +53 -1
  502. package/dist/node/args.mjs.map +1 -1
  503. package/dist/node/clipboard.cjs +18 -1
  504. package/dist/node/clipboard.cjs.map +1 -1
  505. package/dist/node/clipboard.mjs +16 -1
  506. package/dist/node/clipboard.mjs.map +1 -1
  507. package/dist/node/crypto.cjs +28 -1
  508. package/dist/node/crypto.cjs.map +1 -1
  509. package/dist/node/crypto.mjs +24 -1
  510. package/dist/node/crypto.mjs.map +1 -1
  511. package/dist/node/env.cjs +100 -4
  512. package/dist/node/env.cjs.map +1 -1
  513. package/dist/node/env.mjs +90 -4
  514. package/dist/node/env.mjs.map +1 -1
  515. package/dist/node/files-async.cjs +66 -1
  516. package/dist/node/files-async.cjs.map +1 -1
  517. package/dist/node/files-async.mjs +60 -1
  518. package/dist/node/files-async.mjs.map +1 -1
  519. package/dist/node/files.cjs +52 -1
  520. package/dist/node/files.cjs.map +1 -1
  521. package/dist/node/files.mjs +46 -1
  522. package/dist/node/files.mjs.map +1 -1
  523. package/dist/node/filestorage.cjs +100 -1
  524. package/dist/node/filestorage.cjs.map +1 -1
  525. package/dist/node/filestorage.mjs +97 -1
  526. package/dist/node/filestorage.mjs.map +1 -1
  527. package/dist/node/fs.cjs +119 -1
  528. package/dist/node/fs.cjs.map +1 -1
  529. package/dist/node/fs.mjs +101 -1
  530. package/dist/node/fs.mjs.map +1 -1
  531. package/dist/node/glob.cjs +75 -1
  532. package/dist/node/glob.cjs.map +1 -1
  533. package/dist/node/glob.mjs +73 -1
  534. package/dist/node/glob.mjs.map +1 -1
  535. package/dist/node/index.cjs +66 -1
  536. package/dist/node/index.mjs +16 -1
  537. package/dist/node/log/index.cjs +20 -1
  538. package/dist/node/log/index.mjs +7 -1
  539. package/dist/node/log/log-context-node.cjs +39 -1
  540. package/dist/node/log/log-context-node.cjs.map +1 -1
  541. package/dist/node/log/log-context-node.mjs +35 -1
  542. package/dist/node/log/log-context-node.mjs.map +1 -1
  543. package/dist/node/log/log-file-rotation.cjs +71 -1
  544. package/dist/node/log/log-file-rotation.cjs.map +1 -1
  545. package/dist/node/log/log-file-rotation.mjs +68 -1
  546. package/dist/node/log/log-file-rotation.mjs.map +1 -1
  547. package/dist/node/log/log-file.cjs +57 -1
  548. package/dist/node/log/log-file.cjs.map +1 -1
  549. package/dist/node/log/log-file.mjs +54 -1
  550. package/dist/node/log/log-file.mjs.map +1 -1
  551. package/dist/node/log/log-node.cjs +162 -1
  552. package/dist/node/log/log-node.cjs.map +1 -1
  553. package/dist/node/log/log-node.mjs +155 -1
  554. package/dist/node/log/log-node.mjs.map +1 -1
  555. package/dist/node/log/log-rotation.cjs +543 -3
  556. package/dist/node/log/log-rotation.cjs.map +1 -1
  557. package/dist/node/log/log-rotation.mjs +538 -3
  558. package/dist/node/log/log-rotation.mjs.map +1 -1
  559. package/dist/node/log/log-util.cjs +69 -3
  560. package/dist/node/log/log-util.cjs.map +1 -1
  561. package/dist/node/log/log-util.mjs +63 -3
  562. package/dist/node/log/log-util.mjs.map +1 -1
  563. package/dist/node/open-browser.cjs +20 -1
  564. package/dist/node/open-browser.cjs.map +1 -1
  565. package/dist/node/open-browser.mjs +18 -1
  566. package/dist/node/open-browser.mjs.map +1 -1
  567. package/package.json +15 -15
  568. package/src/common/schema/README.md +247 -66
  569. package/src/eslint-defaults.js +4 -0
  570. package/src/index.spec.ts +6 -6
  571. package/dist/bin-Ce3i6ABn.cjs +0 -3
  572. package/dist/bin-SPdenYkw.mjs +0 -3
  573. package/dist/chunk-0Lt9GpW0.mjs +0 -1
  574. package/dist/chunk-D-qHiVGv.cjs +0 -1
  575. package/src/common/schema/README-SCHEMA.md +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"progress.cjs","names":["Emitter","useDispose","uname"],"sources":["../../../src/common/exec/progress.ts"],"sourcesContent":["// Inspired by https://developer.apple.com/documentation/foundation/progress\n\nimport { arrayRemoveElement } from '../data/array'\nimport { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname } from '../uuid'\n\nexport interface ProgressOptions {\n totalUnits?: number\n completeUnits?: number\n resetWhenFinished?: boolean\n name?: string\n}\n\n/**\n * Progress helper with these properties:\n *\n * - `totalUnits` and `completedUnits` for progress\n * - Can be cancelled\n * - Sends events on cancel, changed and dispose\n * - Supports children and propagates values.\n * Total progress is sum of all units in the tree.\n * - On `dispose` child removes itself from parent.\n */\nexport class Progress extends Emitter<{\n progressCancelled: (progress: Progress) => void\n progressChanged: (progress: Progress) => void\n progressDispose: (progress: Progress) => void\n}> {\n private _totalUnits: number\n private _completedUnits: number\n private _isCancelled = false\n private _resetWhenFinished = true\n private _children: Progress[] = []\n\n dispose = useDispose()\n name: string\n\n constructor(opt: ProgressOptions = {}) {\n super()\n\n this._totalUnits = opt.totalUnits ?? 0\n this._completedUnits = opt.completeUnits ?? 0\n this._resetWhenFinished = opt.resetWhenFinished ?? true\n this.name = opt.name ?? uname('progress')\n\n // Make sure to cleanup also children\n this.dispose.add(async () => {\n for (const child of this._children)\n await child.dispose()\n await this.emit('progressDispose', this)\n })\n }\n\n /** Notify others about changes and reset on completion, if flag is set. */\n private update() {\n void this.emit('progressChanged', this)\n\n if (this._isCancelled && this._resetWhenFinished) {\n if (this.getTotalUnits() <= this.getCompletedUnits())\n this.reset()\n }\n }\n\n /** Fresh start */\n reset() {\n if (this._isCancelled) {\n this._isCancelled = false\n for (const child of this._children)\n child.reset()\n this.update()\n }\n }\n\n /** Notify and mark as cancelled. May take some time before having an effect. */\n async cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true\n await this.emit('progressCancelled', this)\n for (const child of this._children)\n await child.cancel()\n this.update()\n }\n }\n\n /** Add child progress, which count into its parents units. On `dispose` it will auto remove itself from parent. */\n addChild(child: Progress) {\n child.on('progressDispose', () => this.removeChild(child))\n child.on('progressChanged', () => this.update())\n if (!this._children.includes(child))\n this._children.push(child)\n this.update()\n }\n\n /** Create child progress. */\n createChildProgress(opt?: ProgressOptions) {\n const progress = new Progress(opt)\n this.addChild(progress)\n return progress\n }\n\n removeChild(child: Progress) {\n arrayRemoveElement(this._children, child)\n this.update()\n }\n\n /** Total units including children */\n getTotalUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._totalUnits\n for (const child of this._children)\n units += child.getTotalUnits()\n return units\n }\n\n /** Completed units including children */\n getCompletedUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._completedUnits\n for (const child of this._children)\n units += child.getCompletedUnits()\n return units\n // return Math.min(this.getTotalUnits(), units)\n }\n\n /** Cannot calculate progress, because totalUnits are missing. Special representation in UI. */\n isIndeterminate(): boolean {\n return this._totalUnits <= 0 && this._children.length <= 0\n }\n\n isCancelled() {\n return this._isCancelled\n }\n\n /** Either disposed or all units completed. */\n isFinished() {\n return this.dispose.isDisposed() || (!this.isIndeterminate() && (this.getTotalUnits() <= this.getCompletedUnits()))\n }\n\n /** Value from 0 to 1, where 1 is 100% completeness. */\n getFraction() {\n if (this.isIndeterminate())\n return 0\n let value = this.getCompletedUnits() / this.getTotalUnits()\n if (Number.isNaN(value))\n value = 0\n return Math.min(1, Math.max(0, value))\n }\n\n getChildrenCount() {\n return this._children.length\n }\n\n /** Change total units. */\n setTotalUnits(units: number, completedUnits?: number) {\n this._totalUnits = units\n if (completedUnits != null)\n this._completedUnits = completedUnits\n this.update()\n }\n\n /** Relatively change total units. */\n incTotalUnits(step = 1) {\n this._totalUnits += step\n this.update()\n }\n\n /** Set fixed number of completed units. */\n setCompletetedUnits(units: number) {\n this._completedUnits = units\n this.update()\n }\n\n /** Set to 100% without disposing. */\n setCompleted() {\n this._completedUnits = this._totalUnits\n this.update()\n }\n\n /** Dynamically change completed units. */\n incCompletedUnits(step = 1) {\n this._completedUnits += step\n this.update()\n }\n\n /** Progress tree to string for debuggin purposes. Consider using `name` attribute of Progress. */\n toString(indent = 0) {\n let s = `${' '.repeat(indent)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction() * 100)} %, cancel=${this._isCancelled}\\n`\n for (const child of this._children)\n s += child.toString(indent + 1)\n if (indent === 0)\n return s.trim()\n return s\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"progress.cjs","names":["Emitter","useDispose","uname"],"sources":["../../../src/common/exec/progress.ts"],"sourcesContent":["// Inspired by https://developer.apple.com/documentation/foundation/progress\n\nimport { arrayRemoveElement } from '../data/array'\nimport { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname } from '../uuid'\n\nexport interface ProgressOptions {\n totalUnits?: number\n completeUnits?: number\n resetWhenFinished?: boolean\n name?: string\n}\n\n/**\n * Progress helper with these properties:\n *\n * - `totalUnits` and `completedUnits` for progress\n * - Can be cancelled\n * - Sends events on cancel, changed and dispose\n * - Supports children and propagates values.\n * Total progress is sum of all units in the tree.\n * - On `dispose` child removes itself from parent.\n */\nexport class Progress extends Emitter<{\n progressCancelled: (progress: Progress) => void\n progressChanged: (progress: Progress) => void\n progressDispose: (progress: Progress) => void\n}> {\n private _totalUnits: number\n private _completedUnits: number\n private _isCancelled = false\n private _resetWhenFinished = true\n private _children: Progress[] = []\n\n dispose = useDispose()\n name: string\n\n constructor(opt: ProgressOptions = {}) {\n super()\n\n this._totalUnits = opt.totalUnits ?? 0\n this._completedUnits = opt.completeUnits ?? 0\n this._resetWhenFinished = opt.resetWhenFinished ?? true\n this.name = opt.name ?? uname('progress')\n\n // Make sure to cleanup also children\n this.dispose.add(async () => {\n for (const child of this._children)\n await child.dispose()\n await this.emit('progressDispose', this)\n })\n }\n\n /** Notify others about changes and reset on completion, if flag is set. */\n private update() {\n void this.emit('progressChanged', this)\n\n if (this._isCancelled && this._resetWhenFinished) {\n if (this.getTotalUnits() <= this.getCompletedUnits())\n this.reset()\n }\n }\n\n /** Fresh start */\n reset() {\n if (this._isCancelled) {\n this._isCancelled = false\n for (const child of this._children)\n child.reset()\n this.update()\n }\n }\n\n /** Notify and mark as cancelled. May take some time before having an effect. */\n async cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true\n await this.emit('progressCancelled', this)\n for (const child of this._children)\n await child.cancel()\n this.update()\n }\n }\n\n /** Add child progress, which count into its parents units. On `dispose` it will auto remove itself from parent. */\n addChild(child: Progress) {\n child.on('progressDispose', () => this.removeChild(child))\n child.on('progressChanged', () => this.update())\n if (!this._children.includes(child))\n this._children.push(child)\n this.update()\n }\n\n /** Create child progress. */\n createChildProgress(opt?: ProgressOptions) {\n const progress = new Progress(opt)\n this.addChild(progress)\n return progress\n }\n\n removeChild(child: Progress) {\n arrayRemoveElement(this._children, child)\n this.update()\n }\n\n /** Total units including children */\n getTotalUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._totalUnits\n for (const child of this._children)\n units += child.getTotalUnits()\n return units\n }\n\n /** Completed units including children */\n getCompletedUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._completedUnits\n for (const child of this._children)\n units += child.getCompletedUnits()\n return units\n // return Math.min(this.getTotalUnits(), units)\n }\n\n /** Cannot calculate progress, because totalUnits are missing. Special representation in UI. */\n isIndeterminate(): boolean {\n return this._totalUnits <= 0 && this._children.length <= 0\n }\n\n isCancelled() {\n return this._isCancelled\n }\n\n /** Either disposed or all units completed. */\n isFinished() {\n return this.dispose.isDisposed() || (!this.isIndeterminate() && (this.getTotalUnits() <= this.getCompletedUnits()))\n }\n\n /** Value from 0 to 1, where 1 is 100% completeness. */\n getFraction() {\n if (this.isIndeterminate())\n return 0\n let value = this.getCompletedUnits() / this.getTotalUnits()\n if (Number.isNaN(value))\n value = 0\n return Math.min(1, Math.max(0, value))\n }\n\n getChildrenCount() {\n return this._children.length\n }\n\n /** Change total units. */\n setTotalUnits(units: number, completedUnits?: number) {\n this._totalUnits = units\n if (completedUnits != null)\n this._completedUnits = completedUnits\n this.update()\n }\n\n /** Relatively change total units. */\n incTotalUnits(step = 1) {\n this._totalUnits += step\n this.update()\n }\n\n /** Set fixed number of completed units. */\n setCompletetedUnits(units: number) {\n this._completedUnits = units\n this.update()\n }\n\n /** Set to 100% without disposing. */\n setCompleted() {\n this._completedUnits = this._totalUnits\n this.update()\n }\n\n /** Dynamically change completed units. */\n incCompletedUnits(step = 1) {\n this._completedUnits += step\n this.update()\n }\n\n /** Progress tree to string for debuggin purposes. Consider using `name` attribute of Progress. */\n toString(indent = 0) {\n let s = `${' '.repeat(indent)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction() * 100)} %, cancel=${this._isCancelled}\\n`\n for (const child of this._children)\n s += child.toString(indent + 1)\n if (indent === 0)\n return s.trim()\n return s\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { d as Progress, f as ProgressOptions } from "../../index-DHXVOH8h.cjs";
1
+ import { d as Progress, f as ProgressOptions } from "../../index-CFkMqHvX.cjs";
2
2
  export { Progress, ProgressOptions };
@@ -1,2 +1,2 @@
1
- import { d as Progress, f as ProgressOptions } from "../../index-DMaPyx9O.mjs";
1
+ import { d as Progress, f as ProgressOptions } from "../../index-C_3Y_s6f.mjs";
2
2
  export { Progress, ProgressOptions };
@@ -1,2 +1,149 @@
1
- import{arrayRemoveElement as e}from"../data/array.mjs";import{useDispose as t}from"../dispose-defer.mjs";import{Emitter as n}from"../msg/emitter.mjs";import{uname as r}from"../uuid.mjs";var i=class i extends n{_totalUnits;_completedUnits;_isCancelled=!1;_resetWhenFinished=!0;_children=[];dispose=t();name;constructor(e={}){super(),this._totalUnits=e.totalUnits??0,this._completedUnits=e.completeUnits??0,this._resetWhenFinished=e.resetWhenFinished??!0,this.name=e.name??r(`progress`),this.dispose.add(async()=>{for(let e of this._children)await e.dispose();await this.emit(`progressDispose`,this)})}update(){this.emit(`progressChanged`,this),this._isCancelled&&this._resetWhenFinished&&this.getTotalUnits()<=this.getCompletedUnits()&&this.reset()}reset(){if(this._isCancelled){this._isCancelled=!1;for(let e of this._children)e.reset();this.update()}}async cancel(){if(!this._isCancelled){this._isCancelled=!0,await this.emit(`progressCancelled`,this);for(let e of this._children)await e.cancel();this.update()}}addChild(e){e.on(`progressDispose`,()=>this.removeChild(e)),e.on(`progressChanged`,()=>this.update()),this._children.includes(e)||this._children.push(e),this.update()}createChildProgress(e){let t=new i(e);return this.addChild(t),t}removeChild(t){e(this._children,t),this.update()}getTotalUnits(){if(this.isIndeterminate())return 0;let e=this._totalUnits;for(let t of this._children)e+=t.getTotalUnits();return e}getCompletedUnits(){if(this.isIndeterminate())return 0;let e=this._completedUnits;for(let t of this._children)e+=t.getCompletedUnits();return e}isIndeterminate(){return this._totalUnits<=0&&this._children.length<=0}isCancelled(){return this._isCancelled}isFinished(){return this.dispose.isDisposed()||!this.isIndeterminate()&&this.getTotalUnits()<=this.getCompletedUnits()}getFraction(){if(this.isIndeterminate())return 0;let e=this.getCompletedUnits()/this.getTotalUnits();return Number.isNaN(e)&&(e=0),Math.min(1,Math.max(0,e))}getChildrenCount(){return this._children.length}setTotalUnits(e,t){this._totalUnits=e,t!=null&&(this._completedUnits=t),this.update()}incTotalUnits(e=1){this._totalUnits+=e,this.update()}setCompletetedUnits(e){this._completedUnits=e,this.update()}setCompleted(){this._completedUnits=this._totalUnits,this.update()}incCompletedUnits(e=1){this._completedUnits+=e,this.update()}toString(e=0){let t=`${` `.repeat(e)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction()*100)} %, cancel=${this._isCancelled}\n`;for(let n of this._children)t+=n.toString(e+1);return e===0?t.trim():t}};export{i as Progress};
1
+ import { arrayRemoveElement } from "../data/array.mjs";
2
+ import { useDispose } from "../dispose-defer.mjs";
3
+ import { Emitter } from "../msg/emitter.mjs";
4
+ import { uname } from "../uuid.mjs";
5
+
6
+ //#region src/common/exec/progress.ts
7
+ /**
8
+ * Progress helper with these properties:
9
+ *
10
+ * - `totalUnits` and `completedUnits` for progress
11
+ * - Can be cancelled
12
+ * - Sends events on cancel, changed and dispose
13
+ * - Supports children and propagates values.
14
+ * Total progress is sum of all units in the tree.
15
+ * - On `dispose` child removes itself from parent.
16
+ */
17
+ var Progress = class Progress extends Emitter {
18
+ _totalUnits;
19
+ _completedUnits;
20
+ _isCancelled = false;
21
+ _resetWhenFinished = true;
22
+ _children = [];
23
+ dispose = useDispose();
24
+ name;
25
+ constructor(opt = {}) {
26
+ super();
27
+ this._totalUnits = opt.totalUnits ?? 0;
28
+ this._completedUnits = opt.completeUnits ?? 0;
29
+ this._resetWhenFinished = opt.resetWhenFinished ?? true;
30
+ this.name = opt.name ?? uname("progress");
31
+ this.dispose.add(async () => {
32
+ for (const child of this._children) await child.dispose();
33
+ await this.emit("progressDispose", this);
34
+ });
35
+ }
36
+ /** Notify others about changes and reset on completion, if flag is set. */
37
+ update() {
38
+ this.emit("progressChanged", this);
39
+ if (this._isCancelled && this._resetWhenFinished) {
40
+ if (this.getTotalUnits() <= this.getCompletedUnits()) this.reset();
41
+ }
42
+ }
43
+ /** Fresh start */
44
+ reset() {
45
+ if (this._isCancelled) {
46
+ this._isCancelled = false;
47
+ for (const child of this._children) child.reset();
48
+ this.update();
49
+ }
50
+ }
51
+ /** Notify and mark as cancelled. May take some time before having an effect. */
52
+ async cancel() {
53
+ if (!this._isCancelled) {
54
+ this._isCancelled = true;
55
+ await this.emit("progressCancelled", this);
56
+ for (const child of this._children) await child.cancel();
57
+ this.update();
58
+ }
59
+ }
60
+ /** Add child progress, which count into its parents units. On `dispose` it will auto remove itself from parent. */
61
+ addChild(child) {
62
+ child.on("progressDispose", () => this.removeChild(child));
63
+ child.on("progressChanged", () => this.update());
64
+ if (!this._children.includes(child)) this._children.push(child);
65
+ this.update();
66
+ }
67
+ /** Create child progress. */
68
+ createChildProgress(opt) {
69
+ const progress = new Progress(opt);
70
+ this.addChild(progress);
71
+ return progress;
72
+ }
73
+ removeChild(child) {
74
+ arrayRemoveElement(this._children, child);
75
+ this.update();
76
+ }
77
+ /** Total units including children */
78
+ getTotalUnits() {
79
+ if (this.isIndeterminate()) return 0;
80
+ let units = this._totalUnits;
81
+ for (const child of this._children) units += child.getTotalUnits();
82
+ return units;
83
+ }
84
+ /** Completed units including children */
85
+ getCompletedUnits() {
86
+ if (this.isIndeterminate()) return 0;
87
+ let units = this._completedUnits;
88
+ for (const child of this._children) units += child.getCompletedUnits();
89
+ return units;
90
+ }
91
+ /** Cannot calculate progress, because totalUnits are missing. Special representation in UI. */
92
+ isIndeterminate() {
93
+ return this._totalUnits <= 0 && this._children.length <= 0;
94
+ }
95
+ isCancelled() {
96
+ return this._isCancelled;
97
+ }
98
+ /** Either disposed or all units completed. */
99
+ isFinished() {
100
+ return this.dispose.isDisposed() || !this.isIndeterminate() && this.getTotalUnits() <= this.getCompletedUnits();
101
+ }
102
+ /** Value from 0 to 1, where 1 is 100% completeness. */
103
+ getFraction() {
104
+ if (this.isIndeterminate()) return 0;
105
+ let value = this.getCompletedUnits() / this.getTotalUnits();
106
+ if (Number.isNaN(value)) value = 0;
107
+ return Math.min(1, Math.max(0, value));
108
+ }
109
+ getChildrenCount() {
110
+ return this._children.length;
111
+ }
112
+ /** Change total units. */
113
+ setTotalUnits(units, completedUnits) {
114
+ this._totalUnits = units;
115
+ if (completedUnits != null) this._completedUnits = completedUnits;
116
+ this.update();
117
+ }
118
+ /** Relatively change total units. */
119
+ incTotalUnits(step = 1) {
120
+ this._totalUnits += step;
121
+ this.update();
122
+ }
123
+ /** Set fixed number of completed units. */
124
+ setCompletetedUnits(units) {
125
+ this._completedUnits = units;
126
+ this.update();
127
+ }
128
+ /** Set to 100% without disposing. */
129
+ setCompleted() {
130
+ this._completedUnits = this._totalUnits;
131
+ this.update();
132
+ }
133
+ /** Dynamically change completed units. */
134
+ incCompletedUnits(step = 1) {
135
+ this._completedUnits += step;
136
+ this.update();
137
+ }
138
+ /** Progress tree to string for debuggin purposes. Consider using `name` attribute of Progress. */
139
+ toString(indent = 0) {
140
+ let s = `${" ".repeat(indent)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction() * 100)} %, cancel=${this._isCancelled}\n`;
141
+ for (const child of this._children) s += child.toString(indent + 1);
142
+ if (indent === 0) return s.trim();
143
+ return s;
144
+ }
145
+ };
146
+
147
+ //#endregion
148
+ export { Progress };
2
149
  //# sourceMappingURL=progress.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.mjs","names":[],"sources":["../../../src/common/exec/progress.ts"],"sourcesContent":["// Inspired by https://developer.apple.com/documentation/foundation/progress\n\nimport { arrayRemoveElement } from '../data/array'\nimport { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname } from '../uuid'\n\nexport interface ProgressOptions {\n totalUnits?: number\n completeUnits?: number\n resetWhenFinished?: boolean\n name?: string\n}\n\n/**\n * Progress helper with these properties:\n *\n * - `totalUnits` and `completedUnits` for progress\n * - Can be cancelled\n * - Sends events on cancel, changed and dispose\n * - Supports children and propagates values.\n * Total progress is sum of all units in the tree.\n * - On `dispose` child removes itself from parent.\n */\nexport class Progress extends Emitter<{\n progressCancelled: (progress: Progress) => void\n progressChanged: (progress: Progress) => void\n progressDispose: (progress: Progress) => void\n}> {\n private _totalUnits: number\n private _completedUnits: number\n private _isCancelled = false\n private _resetWhenFinished = true\n private _children: Progress[] = []\n\n dispose = useDispose()\n name: string\n\n constructor(opt: ProgressOptions = {}) {\n super()\n\n this._totalUnits = opt.totalUnits ?? 0\n this._completedUnits = opt.completeUnits ?? 0\n this._resetWhenFinished = opt.resetWhenFinished ?? true\n this.name = opt.name ?? uname('progress')\n\n // Make sure to cleanup also children\n this.dispose.add(async () => {\n for (const child of this._children)\n await child.dispose()\n await this.emit('progressDispose', this)\n })\n }\n\n /** Notify others about changes and reset on completion, if flag is set. */\n private update() {\n void this.emit('progressChanged', this)\n\n if (this._isCancelled && this._resetWhenFinished) {\n if (this.getTotalUnits() <= this.getCompletedUnits())\n this.reset()\n }\n }\n\n /** Fresh start */\n reset() {\n if (this._isCancelled) {\n this._isCancelled = false\n for (const child of this._children)\n child.reset()\n this.update()\n }\n }\n\n /** Notify and mark as cancelled. May take some time before having an effect. */\n async cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true\n await this.emit('progressCancelled', this)\n for (const child of this._children)\n await child.cancel()\n this.update()\n }\n }\n\n /** Add child progress, which count into its parents units. On `dispose` it will auto remove itself from parent. */\n addChild(child: Progress) {\n child.on('progressDispose', () => this.removeChild(child))\n child.on('progressChanged', () => this.update())\n if (!this._children.includes(child))\n this._children.push(child)\n this.update()\n }\n\n /** Create child progress. */\n createChildProgress(opt?: ProgressOptions) {\n const progress = new Progress(opt)\n this.addChild(progress)\n return progress\n }\n\n removeChild(child: Progress) {\n arrayRemoveElement(this._children, child)\n this.update()\n }\n\n /** Total units including children */\n getTotalUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._totalUnits\n for (const child of this._children)\n units += child.getTotalUnits()\n return units\n }\n\n /** Completed units including children */\n getCompletedUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._completedUnits\n for (const child of this._children)\n units += child.getCompletedUnits()\n return units\n // return Math.min(this.getTotalUnits(), units)\n }\n\n /** Cannot calculate progress, because totalUnits are missing. Special representation in UI. */\n isIndeterminate(): boolean {\n return this._totalUnits <= 0 && this._children.length <= 0\n }\n\n isCancelled() {\n return this._isCancelled\n }\n\n /** Either disposed or all units completed. */\n isFinished() {\n return this.dispose.isDisposed() || (!this.isIndeterminate() && (this.getTotalUnits() <= this.getCompletedUnits()))\n }\n\n /** Value from 0 to 1, where 1 is 100% completeness. */\n getFraction() {\n if (this.isIndeterminate())\n return 0\n let value = this.getCompletedUnits() / this.getTotalUnits()\n if (Number.isNaN(value))\n value = 0\n return Math.min(1, Math.max(0, value))\n }\n\n getChildrenCount() {\n return this._children.length\n }\n\n /** Change total units. */\n setTotalUnits(units: number, completedUnits?: number) {\n this._totalUnits = units\n if (completedUnits != null)\n this._completedUnits = completedUnits\n this.update()\n }\n\n /** Relatively change total units. */\n incTotalUnits(step = 1) {\n this._totalUnits += step\n this.update()\n }\n\n /** Set fixed number of completed units. */\n setCompletetedUnits(units: number) {\n this._completedUnits = units\n this.update()\n }\n\n /** Set to 100% without disposing. */\n setCompleted() {\n this._completedUnits = this._totalUnits\n this.update()\n }\n\n /** Dynamically change completed units. */\n incCompletedUnits(step = 1) {\n this._completedUnits += step\n this.update()\n }\n\n /** Progress tree to string for debuggin purposes. Consider using `name` attribute of Progress. */\n toString(indent = 0) {\n let s = `${' '.repeat(indent)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction() * 100)} %, cancel=${this._isCancelled}\\n`\n for (const child of this._children)\n s += child.toString(indent + 1)\n if (indent === 0)\n return s.trim()\n return s\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"progress.mjs","names":[],"sources":["../../../src/common/exec/progress.ts"],"sourcesContent":["// Inspired by https://developer.apple.com/documentation/foundation/progress\n\nimport { arrayRemoveElement } from '../data/array'\nimport { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname } from '../uuid'\n\nexport interface ProgressOptions {\n totalUnits?: number\n completeUnits?: number\n resetWhenFinished?: boolean\n name?: string\n}\n\n/**\n * Progress helper with these properties:\n *\n * - `totalUnits` and `completedUnits` for progress\n * - Can be cancelled\n * - Sends events on cancel, changed and dispose\n * - Supports children and propagates values.\n * Total progress is sum of all units in the tree.\n * - On `dispose` child removes itself from parent.\n */\nexport class Progress extends Emitter<{\n progressCancelled: (progress: Progress) => void\n progressChanged: (progress: Progress) => void\n progressDispose: (progress: Progress) => void\n}> {\n private _totalUnits: number\n private _completedUnits: number\n private _isCancelled = false\n private _resetWhenFinished = true\n private _children: Progress[] = []\n\n dispose = useDispose()\n name: string\n\n constructor(opt: ProgressOptions = {}) {\n super()\n\n this._totalUnits = opt.totalUnits ?? 0\n this._completedUnits = opt.completeUnits ?? 0\n this._resetWhenFinished = opt.resetWhenFinished ?? true\n this.name = opt.name ?? uname('progress')\n\n // Make sure to cleanup also children\n this.dispose.add(async () => {\n for (const child of this._children)\n await child.dispose()\n await this.emit('progressDispose', this)\n })\n }\n\n /** Notify others about changes and reset on completion, if flag is set. */\n private update() {\n void this.emit('progressChanged', this)\n\n if (this._isCancelled && this._resetWhenFinished) {\n if (this.getTotalUnits() <= this.getCompletedUnits())\n this.reset()\n }\n }\n\n /** Fresh start */\n reset() {\n if (this._isCancelled) {\n this._isCancelled = false\n for (const child of this._children)\n child.reset()\n this.update()\n }\n }\n\n /** Notify and mark as cancelled. May take some time before having an effect. */\n async cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true\n await this.emit('progressCancelled', this)\n for (const child of this._children)\n await child.cancel()\n this.update()\n }\n }\n\n /** Add child progress, which count into its parents units. On `dispose` it will auto remove itself from parent. */\n addChild(child: Progress) {\n child.on('progressDispose', () => this.removeChild(child))\n child.on('progressChanged', () => this.update())\n if (!this._children.includes(child))\n this._children.push(child)\n this.update()\n }\n\n /** Create child progress. */\n createChildProgress(opt?: ProgressOptions) {\n const progress = new Progress(opt)\n this.addChild(progress)\n return progress\n }\n\n removeChild(child: Progress) {\n arrayRemoveElement(this._children, child)\n this.update()\n }\n\n /** Total units including children */\n getTotalUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._totalUnits\n for (const child of this._children)\n units += child.getTotalUnits()\n return units\n }\n\n /** Completed units including children */\n getCompletedUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._completedUnits\n for (const child of this._children)\n units += child.getCompletedUnits()\n return units\n // return Math.min(this.getTotalUnits(), units)\n }\n\n /** Cannot calculate progress, because totalUnits are missing. Special representation in UI. */\n isIndeterminate(): boolean {\n return this._totalUnits <= 0 && this._children.length <= 0\n }\n\n isCancelled() {\n return this._isCancelled\n }\n\n /** Either disposed or all units completed. */\n isFinished() {\n return this.dispose.isDisposed() || (!this.isIndeterminate() && (this.getTotalUnits() <= this.getCompletedUnits()))\n }\n\n /** Value from 0 to 1, where 1 is 100% completeness. */\n getFraction() {\n if (this.isIndeterminate())\n return 0\n let value = this.getCompletedUnits() / this.getTotalUnits()\n if (Number.isNaN(value))\n value = 0\n return Math.min(1, Math.max(0, value))\n }\n\n getChildrenCount() {\n return this._children.length\n }\n\n /** Change total units. */\n setTotalUnits(units: number, completedUnits?: number) {\n this._totalUnits = units\n if (completedUnits != null)\n this._completedUnits = completedUnits\n this.update()\n }\n\n /** Relatively change total units. */\n incTotalUnits(step = 1) {\n this._totalUnits += step\n this.update()\n }\n\n /** Set fixed number of completed units. */\n setCompletetedUnits(units: number) {\n this._completedUnits = units\n this.update()\n }\n\n /** Set to 100% without disposing. */\n setCompleted() {\n this._completedUnits = this._totalUnits\n this.update()\n }\n\n /** Dynamically change completed units. */\n incCompletedUnits(step = 1) {\n this._completedUnits += step\n this.update()\n }\n\n /** Progress tree to string for debuggin purposes. Consider using `name` attribute of Progress. */\n toString(indent = 0) {\n let s = `${' '.repeat(indent)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction() * 100)} %, cancel=${this._isCancelled}\\n`\n for (const child of this._children)\n s += child.toString(indent + 1)\n if (indent === 0)\n return s.trim()\n return s\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,114 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(){let e,t;return[new Promise((n,r)=>{e=n,t=r}),e,t]}async function t(e){return new Promise(t=>setTimeout(t,e))}async function n(){return new Promise(e=>setTimeout(e,0))}async function r(e,t,n=`timeoutReached`){return new Promise((r,i)=>{let a=!1,o=setTimeout(()=>{a=!0,r(n)},t);e.then(e=>{clearTimeout(o),a||r(e)}).catch(e=>{clearTimeout(o),a||i(e)})})}function i(e){return e===`timeoutReached`||e?.name===`Timeout reached`}async function a(e,t){return t<=0?await e:new Promise((n,r)=>{let i=!1,a=setTimeout(()=>{i=!0,r(Error(`Timeout reached`))},t);e.then(e=>{clearTimeout(a),i||n(e)}).catch(e=>{clearTimeout(a),i||r(e)})})}function o(e,t,n=1e3){return new Promise((r,i)=>{let a=e=>{s&&(clearTimeout(s),o(),r(e))},o=()=>{s=null,e.off?e.off(t,a):e.removeEventListener&&e.removeEventListener(t,a)},s=setTimeout(()=>{o(),i(Error(`Did not response in time`))},n);e.on?e.on(t,a):e.addEventListener&&e.addEventListener(t,a)})}function s(e){return!!(e&&(e instanceof Promise||typeof e.then==`function`))}function c(e){return Promise.resolve(e)}exports.createPromise=e,exports.immediate=n,exports.isPromise=s,exports.isTimeout=i,exports.promisify=c,exports.sleep=t,exports.timeout=r,exports.tryTimeout=a,exports.waitOn=o;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/common/exec/promise.ts
4
+ /**
5
+ * Promise to be used with `await`. Example:
6
+ *
7
+ * ```
8
+ * const [promise, resolve, reject] = createPromise()
9
+ * setTimeout(() => {
10
+ * resolve(5)
11
+ * }, 50)
12
+ * const result = await promise
13
+ * ```
14
+ */
15
+ function createPromise() {
16
+ let resolve, reject;
17
+ return [
18
+ new Promise((_resolve, _reject) => {
19
+ resolve = _resolve;
20
+ reject = _reject;
21
+ }),
22
+ resolve,
23
+ reject
24
+ ];
25
+ }
26
+ /** Sleep for `milliSeconds`. Example 1s: `await sleep(1000)` */
27
+ async function sleep(milliSeconds) {
28
+ return new Promise((resolve) => setTimeout(resolve, milliSeconds));
29
+ }
30
+ /** Same as `await sleep(0)`, just let the event loop execute. */
31
+ async function immediate() {
32
+ return new Promise((resolve) => setTimeout(resolve, 0));
33
+ }
34
+ async function timeout(promise, milliSeconds, timeoutValue = "timeoutReached") {
35
+ return new Promise((resolve, reject) => {
36
+ let done = false;
37
+ const timeout = setTimeout(() => {
38
+ done = true;
39
+ resolve(timeoutValue);
40
+ }, milliSeconds);
41
+ promise.then((result) => {
42
+ clearTimeout(timeout);
43
+ if (!done) resolve(result);
44
+ }).catch((err) => {
45
+ clearTimeout(timeout);
46
+ if (!done) reject(err);
47
+ });
48
+ });
49
+ }
50
+ function isTimeout(value) {
51
+ return value === "timeoutReached" || value?.name === "Timeout reached";
52
+ }
53
+ async function tryTimeout(promise, milliSeconds) {
54
+ if (milliSeconds <= 0) return await promise;
55
+ return new Promise((resolve, reject) => {
56
+ let done = false;
57
+ const timeout = setTimeout(() => {
58
+ done = true;
59
+ reject(/* @__PURE__ */ new Error("Timeout reached"));
60
+ }, milliSeconds);
61
+ promise.then((result) => {
62
+ clearTimeout(timeout);
63
+ if (!done) resolve(result);
64
+ }).catch((err) => {
65
+ clearTimeout(timeout);
66
+ if (!done) reject(err);
67
+ });
68
+ });
69
+ }
70
+ /**
71
+ * @deprecated use emitter.waitOn
72
+ * Wait for `event` on `obj` to emit. Resolve with result or reject on `timeout`
73
+ */
74
+ function waitOn(obj, event, timeoutMS = 1e3) {
75
+ return new Promise((resolve, reject) => {
76
+ const fn = (value) => {
77
+ if (timer) {
78
+ clearTimeout(timer);
79
+ done();
80
+ resolve(value);
81
+ }
82
+ };
83
+ let done = () => {
84
+ timer = null;
85
+ if (obj.off) obj.off(event, fn);
86
+ else if (obj.removeEventListener) obj.removeEventListener(event, fn);
87
+ };
88
+ let timer = setTimeout(() => {
89
+ done();
90
+ reject(/* @__PURE__ */ new Error("Did not response in time"));
91
+ }, timeoutMS);
92
+ if (obj.on) obj.on(event, fn);
93
+ else if (obj.addEventListener) obj.addEventListener(event, fn);
94
+ });
95
+ }
96
+ function isPromise(value) {
97
+ return Boolean(value && (value instanceof Promise || typeof value.then === "function"));
98
+ }
99
+ /** This is exactly what Prose.resolve(x) is supposed to be: return a Promise no matter what type x is */
100
+ function promisify(value) {
101
+ return Promise.resolve(value);
102
+ }
103
+
104
+ //#endregion
105
+ exports.createPromise = createPromise;
106
+ exports.immediate = immediate;
107
+ exports.isPromise = isPromise;
108
+ exports.isTimeout = isTimeout;
109
+ exports.promisify = promisify;
110
+ exports.sleep = sleep;
111
+ exports.timeout = timeout;
112
+ exports.tryTimeout = tryTimeout;
113
+ exports.waitOn = waitOn;
2
114
  //# sourceMappingURL=promise.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"promise.cjs","names":[],"sources":["../../../src/common/exec/promise.ts"],"sourcesContent":["/* eslint-disable ts/no-use-before-define */\n\n/**\n * Promise to be used with `await`. Example:\n *\n * ```\n * const [promise, resolve, reject] = createPromise()\n * setTimeout(() => {\n * resolve(5)\n * }, 50)\n * const result = await promise\n * ```\n */\nexport function createPromise<T>(): [Promise<T>, any, any] {\n let resolve, reject\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n return [promise, resolve, reject]\n}\n\n/** Sleep for `milliSeconds`. Example 1s: `await sleep(1000)` */\nexport async function sleep(milliSeconds: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, milliSeconds))\n}\n\n/** Same as `await sleep(0)`, just let the event loop execute. */\nexport async function immediate(): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, 0))\n}\n\n// type Unwrap<T> = T extends Promise<infer U>\n// ? U\n// : T extends (...args: any) => Promise<infer U>\n// ? U\n// : T extends (...args: any) => infer U\n// ? U\n// : T\n\nexport async function timeout<T>(\n promise: Promise<T>,\n milliSeconds: number,\n timeoutValue = 'timeoutReached',\n): Promise<T | typeof timeoutValue> {\n return new Promise((resolve, reject) => {\n let done = false\n\n const timeout = setTimeout(() => {\n done = true\n resolve(timeoutValue)\n }, milliSeconds)\n\n promise\n .then((result) => {\n clearTimeout(timeout)\n if (!done)\n resolve(result)\n })\n .catch((err) => {\n clearTimeout(timeout)\n if (!done)\n reject(err)\n })\n })\n}\n\nexport function isTimeout(value: any): boolean {\n return value === 'timeoutReached' || value?.name === 'Timeout reached'\n}\n\nexport async function tryTimeout<T>(\n promise: Promise<T>,\n milliSeconds: number,\n): Promise<T | undefined> {\n if (milliSeconds <= 0)\n return await promise\n\n return new Promise((resolve, reject) => {\n let done = false\n\n const timeout = setTimeout(() => {\n done = true\n reject(new Error('Timeout reached'))\n }, milliSeconds)\n\n promise\n .then((result) => {\n clearTimeout(timeout)\n if (!done)\n resolve(result)\n })\n .catch((err) => {\n clearTimeout(timeout)\n if (!done)\n reject(err)\n })\n })\n}\n\n/**\n * @deprecated use emitter.waitOn\n * Wait for `event` on `obj` to emit. Resolve with result or reject on `timeout`\n */\nexport function waitOn(\n obj: any,\n event: string,\n timeoutMS = 1000,\n): Promise<any> {\n return new Promise((resolve, reject) => {\n const fn = (value: any) => {\n if (timer) {\n clearTimeout(timer)\n done()\n resolve(value)\n }\n }\n\n let done = () => {\n timer = null\n if (obj.off)\n obj.off(event, fn)\n else if (obj.removeEventListener)\n obj.removeEventListener(event, fn)\n // else\n // log.warn('No remove listener method found for', obj, event)\n }\n\n let timer: any = setTimeout(() => {\n done()\n reject(new Error('Did not response in time'))\n }, timeoutMS)\n\n if (obj.on)\n obj.on(event, fn)\n else if (obj.addEventListener)\n obj.addEventListener(event, fn)\n // else\n // log.warn('No listener method found for', obj)\n })\n}\n\nexport function isPromise<T>(value: Promise<T> | T): value is Promise<T> {\n return Boolean(value && (value instanceof Promise || typeof (value as any).then === 'function'))\n}\n\n/** This is exactly what Prose.resolve(x) is supposed to be: return a Promise no matter what type x is */\nexport function promisify<T>(value: Promise<T> | T): Promise<T> {\n return Promise.resolve(value)\n}\n\n// // https://github.com/unjs/items-promise\n\n// /**\n// * Run tasks one by one by calling fn(task, previous) in a promise chain.\n// * Return value is of type Promise<*> which resolves to the last fn result.\n// */\n// export async function serial(tasks: any, fn: any) {\n// return tasks.reduce(\n// (promise: Promise<any>, task: any) =>\n// promise.then((previous) => fn(task, previous)),\n// Promise.resolve(null)\n// )\n// }\n\n// /**\n// * Run all tasks in parallel by calling fn(tasks) and await using Promise.all.\n// * Return value is of type Promise<*[]> which resolves to results of all fns in an array.\n// */\n// export async function parallel(tasks: any[], fn: any): Promise<any[]> {\n// return Promise.all(tasks.map((task) => fn(task)))\n// }\n\n//\n\n/**\n * Like ReturnType but for async functions.\n * From https://www.jpwilliams.dev/how-to-unpack-the-return-type-of-a-promise-in-typescript\n */\nexport type AsyncReturnType<T extends (...args: any) => any> = T extends (\n ...args: any\n) => Promise<infer U>\n ? U\n : T extends (...args: any) => infer U\n ? U\n : any\n"],"mappings":"mEAaA,SAAgB,GAA2C,CACzD,IAAI,EAAS,EAKb,MAAO,CAJS,IAAI,SAAY,EAAU,IAAY,CACpD,EAAU,EACV,EAAS,GACT,CACe,EAAS,EAAO,CAInC,eAAsB,EAAM,EAAqC,CAC/D,OAAO,IAAI,QAAQ,GAAW,WAAW,EAAS,EAAa,CAAC,CAIlE,eAAsB,GAA2B,CAC/C,OAAO,IAAI,QAAQ,GAAW,WAAW,EAAS,EAAE,CAAC,CAWvD,eAAsB,EACpB,EACA,EACA,EAAe,iBACmB,CAClC,OAAO,IAAI,SAAS,EAAS,IAAW,CACtC,IAAI,EAAO,GAEL,EAAU,eAAiB,CAC/B,EAAO,GACP,EAAQ,EAAa,EACpB,EAAa,CAEhB,EACG,KAAM,GAAW,CAChB,aAAa,EAAQ,CAChB,GACH,EAAQ,EAAO,EACjB,CACD,MAAO,GAAQ,CACd,aAAa,EAAQ,CAChB,GACH,EAAO,EAAI,EACb,EACJ,CAGJ,SAAgB,EAAU,EAAqB,CAC7C,OAAO,IAAU,kBAAoB,GAAO,OAAS,kBAGvD,eAAsB,EACpB,EACA,EACwB,CAIxB,OAHI,GAAgB,EACX,MAAM,EAER,IAAI,SAAS,EAAS,IAAW,CACtC,IAAI,EAAO,GAEL,EAAU,eAAiB,CAC/B,EAAO,GACP,EAAW,MAAM,kBAAkB,CAAC,EACnC,EAAa,CAEhB,EACG,KAAM,GAAW,CAChB,aAAa,EAAQ,CAChB,GACH,EAAQ,EAAO,EACjB,CACD,MAAO,GAAQ,CACd,aAAa,EAAQ,CAChB,GACH,EAAO,EAAI,EACb,EACJ,CAOJ,SAAgB,EACd,EACA,EACA,EAAY,IACE,CACd,OAAO,IAAI,SAAS,EAAS,IAAW,CACtC,IAAM,EAAM,GAAe,CACrB,IACF,aAAa,EAAM,CACnB,GAAM,CACN,EAAQ,EAAM,GAId,MAAa,CACf,EAAQ,KACJ,EAAI,IACN,EAAI,IAAI,EAAO,EAAG,CACX,EAAI,qBACX,EAAI,oBAAoB,EAAO,EAAG,EAKlC,EAAa,eAAiB,CAChC,GAAM,CACN,EAAW,MAAM,2BAA2B,CAAC,EAC5C,EAAU,CAET,EAAI,GACN,EAAI,GAAG,EAAO,EAAG,CACV,EAAI,kBACX,EAAI,iBAAiB,EAAO,EAAG,EAGjC,CAGJ,SAAgB,EAAa,EAA4C,CACvE,MAAO,GAAQ,IAAU,aAAiB,SAAW,OAAQ,EAAc,MAAS,aAItF,SAAgB,EAAa,EAAmC,CAC9D,OAAO,QAAQ,QAAQ,EAAM"}
1
+ {"version":3,"file":"promise.cjs","names":[],"sources":["../../../src/common/exec/promise.ts"],"sourcesContent":["/* eslint-disable ts/no-use-before-define */\n\n/**\n * Promise to be used with `await`. Example:\n *\n * ```\n * const [promise, resolve, reject] = createPromise()\n * setTimeout(() => {\n * resolve(5)\n * }, 50)\n * const result = await promise\n * ```\n */\nexport function createPromise<T>(): [Promise<T>, any, any] {\n let resolve, reject\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n return [promise, resolve, reject]\n}\n\n/** Sleep for `milliSeconds`. Example 1s: `await sleep(1000)` */\nexport async function sleep(milliSeconds: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, milliSeconds))\n}\n\n/** Same as `await sleep(0)`, just let the event loop execute. */\nexport async function immediate(): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, 0))\n}\n\n// type Unwrap<T> = T extends Promise<infer U>\n// ? U\n// : T extends (...args: any) => Promise<infer U>\n// ? U\n// : T extends (...args: any) => infer U\n// ? U\n// : T\n\nexport async function timeout<T>(\n promise: Promise<T>,\n milliSeconds: number,\n timeoutValue = 'timeoutReached',\n): Promise<T | typeof timeoutValue> {\n return new Promise((resolve, reject) => {\n let done = false\n\n const timeout = setTimeout(() => {\n done = true\n resolve(timeoutValue)\n }, milliSeconds)\n\n promise\n .then((result) => {\n clearTimeout(timeout)\n if (!done)\n resolve(result)\n })\n .catch((err) => {\n clearTimeout(timeout)\n if (!done)\n reject(err)\n })\n })\n}\n\nexport function isTimeout(value: any): boolean {\n return value === 'timeoutReached' || value?.name === 'Timeout reached'\n}\n\nexport async function tryTimeout<T>(\n promise: Promise<T>,\n milliSeconds: number,\n): Promise<T | undefined> {\n if (milliSeconds <= 0)\n return await promise\n\n return new Promise((resolve, reject) => {\n let done = false\n\n const timeout = setTimeout(() => {\n done = true\n reject(new Error('Timeout reached'))\n }, milliSeconds)\n\n promise\n .then((result) => {\n clearTimeout(timeout)\n if (!done)\n resolve(result)\n })\n .catch((err) => {\n clearTimeout(timeout)\n if (!done)\n reject(err)\n })\n })\n}\n\n/**\n * @deprecated use emitter.waitOn\n * Wait for `event` on `obj` to emit. Resolve with result or reject on `timeout`\n */\nexport function waitOn(\n obj: any,\n event: string,\n timeoutMS = 1000,\n): Promise<any> {\n return new Promise((resolve, reject) => {\n const fn = (value: any) => {\n if (timer) {\n clearTimeout(timer)\n done()\n resolve(value)\n }\n }\n\n let done = () => {\n timer = null\n if (obj.off)\n obj.off(event, fn)\n else if (obj.removeEventListener)\n obj.removeEventListener(event, fn)\n // else\n // log.warn('No remove listener method found for', obj, event)\n }\n\n let timer: any = setTimeout(() => {\n done()\n reject(new Error('Did not response in time'))\n }, timeoutMS)\n\n if (obj.on)\n obj.on(event, fn)\n else if (obj.addEventListener)\n obj.addEventListener(event, fn)\n // else\n // log.warn('No listener method found for', obj)\n })\n}\n\nexport function isPromise<T>(value: Promise<T> | T): value is Promise<T> {\n return Boolean(value && (value instanceof Promise || typeof (value as any).then === 'function'))\n}\n\n/** This is exactly what Prose.resolve(x) is supposed to be: return a Promise no matter what type x is */\nexport function promisify<T>(value: Promise<T> | T): Promise<T> {\n return Promise.resolve(value)\n}\n\n// // https://github.com/unjs/items-promise\n\n// /**\n// * Run tasks one by one by calling fn(task, previous) in a promise chain.\n// * Return value is of type Promise<*> which resolves to the last fn result.\n// */\n// export async function serial(tasks: any, fn: any) {\n// return tasks.reduce(\n// (promise: Promise<any>, task: any) =>\n// promise.then((previous) => fn(task, previous)),\n// Promise.resolve(null)\n// )\n// }\n\n// /**\n// * Run all tasks in parallel by calling fn(tasks) and await using Promise.all.\n// * Return value is of type Promise<*[]> which resolves to results of all fns in an array.\n// */\n// export async function parallel(tasks: any[], fn: any): Promise<any[]> {\n// return Promise.all(tasks.map((task) => fn(task)))\n// }\n\n//\n\n/**\n * Like ReturnType but for async functions.\n * From https://www.jpwilliams.dev/how-to-unpack-the-return-type-of-a-promise-in-typescript\n */\nexport type AsyncReturnType<T extends (...args: any) => any> = T extends (\n ...args: any\n) => Promise<infer U>\n ? U\n : T extends (...args: any) => infer U\n ? U\n : any\n"],"mappings":";;;;;;;;;;;;;;AAaA,SAAgB,gBAA2C;CACzD,IAAI,SAAS;AAKb,QAAO;EAJS,IAAI,SAAY,UAAU,YAAY;AACpD,aAAU;AACV,YAAS;IACT;EACe;EAAS;EAAO;;;AAInC,eAAsB,MAAM,cAAqC;AAC/D,QAAO,IAAI,SAAQ,YAAW,WAAW,SAAS,aAAa,CAAC;;;AAIlE,eAAsB,YAA2B;AAC/C,QAAO,IAAI,SAAQ,YAAW,WAAW,SAAS,EAAE,CAAC;;AAWvD,eAAsB,QACpB,SACA,cACA,eAAe,kBACmB;AAClC,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,IAAI,OAAO;EAEX,MAAM,UAAU,iBAAiB;AAC/B,UAAO;AACP,WAAQ,aAAa;KACpB,aAAa;AAEhB,UACG,MAAM,WAAW;AAChB,gBAAa,QAAQ;AACrB,OAAI,CAAC,KACH,SAAQ,OAAO;IACjB,CACD,OAAO,QAAQ;AACd,gBAAa,QAAQ;AACrB,OAAI,CAAC,KACH,QAAO,IAAI;IACb;GACJ;;AAGJ,SAAgB,UAAU,OAAqB;AAC7C,QAAO,UAAU,oBAAoB,OAAO,SAAS;;AAGvD,eAAsB,WACpB,SACA,cACwB;AACxB,KAAI,gBAAgB,EAClB,QAAO,MAAM;AAEf,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,IAAI,OAAO;EAEX,MAAM,UAAU,iBAAiB;AAC/B,UAAO;AACP,0BAAO,IAAI,MAAM,kBAAkB,CAAC;KACnC,aAAa;AAEhB,UACG,MAAM,WAAW;AAChB,gBAAa,QAAQ;AACrB,OAAI,CAAC,KACH,SAAQ,OAAO;IACjB,CACD,OAAO,QAAQ;AACd,gBAAa,QAAQ;AACrB,OAAI,CAAC,KACH,QAAO,IAAI;IACb;GACJ;;;;;;AAOJ,SAAgB,OACd,KACA,OACA,YAAY,KACE;AACd,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,MAAM,UAAe;AACzB,OAAI,OAAO;AACT,iBAAa,MAAM;AACnB,UAAM;AACN,YAAQ,MAAM;;;EAIlB,IAAI,aAAa;AACf,WAAQ;AACR,OAAI,IAAI,IACN,KAAI,IAAI,OAAO,GAAG;YACX,IAAI,oBACX,KAAI,oBAAoB,OAAO,GAAG;;EAKtC,IAAI,QAAa,iBAAiB;AAChC,SAAM;AACN,0BAAO,IAAI,MAAM,2BAA2B,CAAC;KAC5C,UAAU;AAEb,MAAI,IAAI,GACN,KAAI,GAAG,OAAO,GAAG;WACV,IAAI,iBACX,KAAI,iBAAiB,OAAO,GAAG;GAGjC;;AAGJ,SAAgB,UAAa,OAA4C;AACvE,QAAO,QAAQ,UAAU,iBAAiB,WAAW,OAAQ,MAAc,SAAS,YAAY;;;AAIlG,SAAgB,UAAa,OAAmC;AAC9D,QAAO,QAAQ,QAAQ,MAAM"}
@@ -1,2 +1,104 @@
1
- function e(){let e,t;return[new Promise((n,r)=>{e=n,t=r}),e,t]}async function t(e){return new Promise(t=>setTimeout(t,e))}async function n(){return new Promise(e=>setTimeout(e,0))}async function r(e,t,n=`timeoutReached`){return new Promise((r,i)=>{let a=!1,o=setTimeout(()=>{a=!0,r(n)},t);e.then(e=>{clearTimeout(o),a||r(e)}).catch(e=>{clearTimeout(o),a||i(e)})})}function i(e){return e===`timeoutReached`||e?.name===`Timeout reached`}async function a(e,t){return t<=0?await e:new Promise((n,r)=>{let i=!1,a=setTimeout(()=>{i=!0,r(Error(`Timeout reached`))},t);e.then(e=>{clearTimeout(a),i||n(e)}).catch(e=>{clearTimeout(a),i||r(e)})})}function o(e,t,n=1e3){return new Promise((r,i)=>{let a=e=>{s&&(clearTimeout(s),o(),r(e))},o=()=>{s=null,e.off?e.off(t,a):e.removeEventListener&&e.removeEventListener(t,a)},s=setTimeout(()=>{o(),i(Error(`Did not response in time`))},n);e.on?e.on(t,a):e.addEventListener&&e.addEventListener(t,a)})}function s(e){return!!(e&&(e instanceof Promise||typeof e.then==`function`))}function c(e){return Promise.resolve(e)}export{e as createPromise,n as immediate,s as isPromise,i as isTimeout,c as promisify,t as sleep,r as timeout,a as tryTimeout,o as waitOn};
1
+ //#region src/common/exec/promise.ts
2
+ /**
3
+ * Promise to be used with `await`. Example:
4
+ *
5
+ * ```
6
+ * const [promise, resolve, reject] = createPromise()
7
+ * setTimeout(() => {
8
+ * resolve(5)
9
+ * }, 50)
10
+ * const result = await promise
11
+ * ```
12
+ */
13
+ function createPromise() {
14
+ let resolve, reject;
15
+ return [
16
+ new Promise((_resolve, _reject) => {
17
+ resolve = _resolve;
18
+ reject = _reject;
19
+ }),
20
+ resolve,
21
+ reject
22
+ ];
23
+ }
24
+ /** Sleep for `milliSeconds`. Example 1s: `await sleep(1000)` */
25
+ async function sleep(milliSeconds) {
26
+ return new Promise((resolve) => setTimeout(resolve, milliSeconds));
27
+ }
28
+ /** Same as `await sleep(0)`, just let the event loop execute. */
29
+ async function immediate() {
30
+ return new Promise((resolve) => setTimeout(resolve, 0));
31
+ }
32
+ async function timeout(promise, milliSeconds, timeoutValue = "timeoutReached") {
33
+ return new Promise((resolve, reject) => {
34
+ let done = false;
35
+ const timeout = setTimeout(() => {
36
+ done = true;
37
+ resolve(timeoutValue);
38
+ }, milliSeconds);
39
+ promise.then((result) => {
40
+ clearTimeout(timeout);
41
+ if (!done) resolve(result);
42
+ }).catch((err) => {
43
+ clearTimeout(timeout);
44
+ if (!done) reject(err);
45
+ });
46
+ });
47
+ }
48
+ function isTimeout(value) {
49
+ return value === "timeoutReached" || value?.name === "Timeout reached";
50
+ }
51
+ async function tryTimeout(promise, milliSeconds) {
52
+ if (milliSeconds <= 0) return await promise;
53
+ return new Promise((resolve, reject) => {
54
+ let done = false;
55
+ const timeout = setTimeout(() => {
56
+ done = true;
57
+ reject(/* @__PURE__ */ new Error("Timeout reached"));
58
+ }, milliSeconds);
59
+ promise.then((result) => {
60
+ clearTimeout(timeout);
61
+ if (!done) resolve(result);
62
+ }).catch((err) => {
63
+ clearTimeout(timeout);
64
+ if (!done) reject(err);
65
+ });
66
+ });
67
+ }
68
+ /**
69
+ * @deprecated use emitter.waitOn
70
+ * Wait for `event` on `obj` to emit. Resolve with result or reject on `timeout`
71
+ */
72
+ function waitOn(obj, event, timeoutMS = 1e3) {
73
+ return new Promise((resolve, reject) => {
74
+ const fn = (value) => {
75
+ if (timer) {
76
+ clearTimeout(timer);
77
+ done();
78
+ resolve(value);
79
+ }
80
+ };
81
+ let done = () => {
82
+ timer = null;
83
+ if (obj.off) obj.off(event, fn);
84
+ else if (obj.removeEventListener) obj.removeEventListener(event, fn);
85
+ };
86
+ let timer = setTimeout(() => {
87
+ done();
88
+ reject(/* @__PURE__ */ new Error("Did not response in time"));
89
+ }, timeoutMS);
90
+ if (obj.on) obj.on(event, fn);
91
+ else if (obj.addEventListener) obj.addEventListener(event, fn);
92
+ });
93
+ }
94
+ function isPromise(value) {
95
+ return Boolean(value && (value instanceof Promise || typeof value.then === "function"));
96
+ }
97
+ /** This is exactly what Prose.resolve(x) is supposed to be: return a Promise no matter what type x is */
98
+ function promisify(value) {
99
+ return Promise.resolve(value);
100
+ }
101
+
102
+ //#endregion
103
+ export { createPromise, immediate, isPromise, isTimeout, promisify, sleep, timeout, tryTimeout, waitOn };
2
104
  //# sourceMappingURL=promise.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"promise.mjs","names":[],"sources":["../../../src/common/exec/promise.ts"],"sourcesContent":["/* eslint-disable ts/no-use-before-define */\n\n/**\n * Promise to be used with `await`. Example:\n *\n * ```\n * const [promise, resolve, reject] = createPromise()\n * setTimeout(() => {\n * resolve(5)\n * }, 50)\n * const result = await promise\n * ```\n */\nexport function createPromise<T>(): [Promise<T>, any, any] {\n let resolve, reject\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n return [promise, resolve, reject]\n}\n\n/** Sleep for `milliSeconds`. Example 1s: `await sleep(1000)` */\nexport async function sleep(milliSeconds: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, milliSeconds))\n}\n\n/** Same as `await sleep(0)`, just let the event loop execute. */\nexport async function immediate(): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, 0))\n}\n\n// type Unwrap<T> = T extends Promise<infer U>\n// ? U\n// : T extends (...args: any) => Promise<infer U>\n// ? U\n// : T extends (...args: any) => infer U\n// ? U\n// : T\n\nexport async function timeout<T>(\n promise: Promise<T>,\n milliSeconds: number,\n timeoutValue = 'timeoutReached',\n): Promise<T | typeof timeoutValue> {\n return new Promise((resolve, reject) => {\n let done = false\n\n const timeout = setTimeout(() => {\n done = true\n resolve(timeoutValue)\n }, milliSeconds)\n\n promise\n .then((result) => {\n clearTimeout(timeout)\n if (!done)\n resolve(result)\n })\n .catch((err) => {\n clearTimeout(timeout)\n if (!done)\n reject(err)\n })\n })\n}\n\nexport function isTimeout(value: any): boolean {\n return value === 'timeoutReached' || value?.name === 'Timeout reached'\n}\n\nexport async function tryTimeout<T>(\n promise: Promise<T>,\n milliSeconds: number,\n): Promise<T | undefined> {\n if (milliSeconds <= 0)\n return await promise\n\n return new Promise((resolve, reject) => {\n let done = false\n\n const timeout = setTimeout(() => {\n done = true\n reject(new Error('Timeout reached'))\n }, milliSeconds)\n\n promise\n .then((result) => {\n clearTimeout(timeout)\n if (!done)\n resolve(result)\n })\n .catch((err) => {\n clearTimeout(timeout)\n if (!done)\n reject(err)\n })\n })\n}\n\n/**\n * @deprecated use emitter.waitOn\n * Wait for `event` on `obj` to emit. Resolve with result or reject on `timeout`\n */\nexport function waitOn(\n obj: any,\n event: string,\n timeoutMS = 1000,\n): Promise<any> {\n return new Promise((resolve, reject) => {\n const fn = (value: any) => {\n if (timer) {\n clearTimeout(timer)\n done()\n resolve(value)\n }\n }\n\n let done = () => {\n timer = null\n if (obj.off)\n obj.off(event, fn)\n else if (obj.removeEventListener)\n obj.removeEventListener(event, fn)\n // else\n // log.warn('No remove listener method found for', obj, event)\n }\n\n let timer: any = setTimeout(() => {\n done()\n reject(new Error('Did not response in time'))\n }, timeoutMS)\n\n if (obj.on)\n obj.on(event, fn)\n else if (obj.addEventListener)\n obj.addEventListener(event, fn)\n // else\n // log.warn('No listener method found for', obj)\n })\n}\n\nexport function isPromise<T>(value: Promise<T> | T): value is Promise<T> {\n return Boolean(value && (value instanceof Promise || typeof (value as any).then === 'function'))\n}\n\n/** This is exactly what Prose.resolve(x) is supposed to be: return a Promise no matter what type x is */\nexport function promisify<T>(value: Promise<T> | T): Promise<T> {\n return Promise.resolve(value)\n}\n\n// // https://github.com/unjs/items-promise\n\n// /**\n// * Run tasks one by one by calling fn(task, previous) in a promise chain.\n// * Return value is of type Promise<*> which resolves to the last fn result.\n// */\n// export async function serial(tasks: any, fn: any) {\n// return tasks.reduce(\n// (promise: Promise<any>, task: any) =>\n// promise.then((previous) => fn(task, previous)),\n// Promise.resolve(null)\n// )\n// }\n\n// /**\n// * Run all tasks in parallel by calling fn(tasks) and await using Promise.all.\n// * Return value is of type Promise<*[]> which resolves to results of all fns in an array.\n// */\n// export async function parallel(tasks: any[], fn: any): Promise<any[]> {\n// return Promise.all(tasks.map((task) => fn(task)))\n// }\n\n//\n\n/**\n * Like ReturnType but for async functions.\n * From https://www.jpwilliams.dev/how-to-unpack-the-return-type-of-a-promise-in-typescript\n */\nexport type AsyncReturnType<T extends (...args: any) => any> = T extends (\n ...args: any\n) => Promise<infer U>\n ? U\n : T extends (...args: any) => infer U\n ? U\n : any\n"],"mappings":"AAaA,SAAgB,GAA2C,CACzD,IAAI,EAAS,EAKb,MAAO,CAJS,IAAI,SAAY,EAAU,IAAY,CACpD,EAAU,EACV,EAAS,GACT,CACe,EAAS,EAAO,CAInC,eAAsB,EAAM,EAAqC,CAC/D,OAAO,IAAI,QAAQ,GAAW,WAAW,EAAS,EAAa,CAAC,CAIlE,eAAsB,GAA2B,CAC/C,OAAO,IAAI,QAAQ,GAAW,WAAW,EAAS,EAAE,CAAC,CAWvD,eAAsB,EACpB,EACA,EACA,EAAe,iBACmB,CAClC,OAAO,IAAI,SAAS,EAAS,IAAW,CACtC,IAAI,EAAO,GAEL,EAAU,eAAiB,CAC/B,EAAO,GACP,EAAQ,EAAa,EACpB,EAAa,CAEhB,EACG,KAAM,GAAW,CAChB,aAAa,EAAQ,CAChB,GACH,EAAQ,EAAO,EACjB,CACD,MAAO,GAAQ,CACd,aAAa,EAAQ,CAChB,GACH,EAAO,EAAI,EACb,EACJ,CAGJ,SAAgB,EAAU,EAAqB,CAC7C,OAAO,IAAU,kBAAoB,GAAO,OAAS,kBAGvD,eAAsB,EACpB,EACA,EACwB,CAIxB,OAHI,GAAgB,EACX,MAAM,EAER,IAAI,SAAS,EAAS,IAAW,CACtC,IAAI,EAAO,GAEL,EAAU,eAAiB,CAC/B,EAAO,GACP,EAAW,MAAM,kBAAkB,CAAC,EACnC,EAAa,CAEhB,EACG,KAAM,GAAW,CAChB,aAAa,EAAQ,CAChB,GACH,EAAQ,EAAO,EACjB,CACD,MAAO,GAAQ,CACd,aAAa,EAAQ,CAChB,GACH,EAAO,EAAI,EACb,EACJ,CAOJ,SAAgB,EACd,EACA,EACA,EAAY,IACE,CACd,OAAO,IAAI,SAAS,EAAS,IAAW,CACtC,IAAM,EAAM,GAAe,CACrB,IACF,aAAa,EAAM,CACnB,GAAM,CACN,EAAQ,EAAM,GAId,MAAa,CACf,EAAQ,KACJ,EAAI,IACN,EAAI,IAAI,EAAO,EAAG,CACX,EAAI,qBACX,EAAI,oBAAoB,EAAO,EAAG,EAKlC,EAAa,eAAiB,CAChC,GAAM,CACN,EAAW,MAAM,2BAA2B,CAAC,EAC5C,EAAU,CAET,EAAI,GACN,EAAI,GAAG,EAAO,EAAG,CACV,EAAI,kBACX,EAAI,iBAAiB,EAAO,EAAG,EAGjC,CAGJ,SAAgB,EAAa,EAA4C,CACvE,MAAO,GAAQ,IAAU,aAAiB,SAAW,OAAQ,EAAc,MAAS,aAItF,SAAgB,EAAa,EAAmC,CAC9D,OAAO,QAAQ,QAAQ,EAAM"}
1
+ {"version":3,"file":"promise.mjs","names":[],"sources":["../../../src/common/exec/promise.ts"],"sourcesContent":["/* eslint-disable ts/no-use-before-define */\n\n/**\n * Promise to be used with `await`. Example:\n *\n * ```\n * const [promise, resolve, reject] = createPromise()\n * setTimeout(() => {\n * resolve(5)\n * }, 50)\n * const result = await promise\n * ```\n */\nexport function createPromise<T>(): [Promise<T>, any, any] {\n let resolve, reject\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n return [promise, resolve, reject]\n}\n\n/** Sleep for `milliSeconds`. Example 1s: `await sleep(1000)` */\nexport async function sleep(milliSeconds: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, milliSeconds))\n}\n\n/** Same as `await sleep(0)`, just let the event loop execute. */\nexport async function immediate(): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, 0))\n}\n\n// type Unwrap<T> = T extends Promise<infer U>\n// ? U\n// : T extends (...args: any) => Promise<infer U>\n// ? U\n// : T extends (...args: any) => infer U\n// ? U\n// : T\n\nexport async function timeout<T>(\n promise: Promise<T>,\n milliSeconds: number,\n timeoutValue = 'timeoutReached',\n): Promise<T | typeof timeoutValue> {\n return new Promise((resolve, reject) => {\n let done = false\n\n const timeout = setTimeout(() => {\n done = true\n resolve(timeoutValue)\n }, milliSeconds)\n\n promise\n .then((result) => {\n clearTimeout(timeout)\n if (!done)\n resolve(result)\n })\n .catch((err) => {\n clearTimeout(timeout)\n if (!done)\n reject(err)\n })\n })\n}\n\nexport function isTimeout(value: any): boolean {\n return value === 'timeoutReached' || value?.name === 'Timeout reached'\n}\n\nexport async function tryTimeout<T>(\n promise: Promise<T>,\n milliSeconds: number,\n): Promise<T | undefined> {\n if (milliSeconds <= 0)\n return await promise\n\n return new Promise((resolve, reject) => {\n let done = false\n\n const timeout = setTimeout(() => {\n done = true\n reject(new Error('Timeout reached'))\n }, milliSeconds)\n\n promise\n .then((result) => {\n clearTimeout(timeout)\n if (!done)\n resolve(result)\n })\n .catch((err) => {\n clearTimeout(timeout)\n if (!done)\n reject(err)\n })\n })\n}\n\n/**\n * @deprecated use emitter.waitOn\n * Wait for `event` on `obj` to emit. Resolve with result or reject on `timeout`\n */\nexport function waitOn(\n obj: any,\n event: string,\n timeoutMS = 1000,\n): Promise<any> {\n return new Promise((resolve, reject) => {\n const fn = (value: any) => {\n if (timer) {\n clearTimeout(timer)\n done()\n resolve(value)\n }\n }\n\n let done = () => {\n timer = null\n if (obj.off)\n obj.off(event, fn)\n else if (obj.removeEventListener)\n obj.removeEventListener(event, fn)\n // else\n // log.warn('No remove listener method found for', obj, event)\n }\n\n let timer: any = setTimeout(() => {\n done()\n reject(new Error('Did not response in time'))\n }, timeoutMS)\n\n if (obj.on)\n obj.on(event, fn)\n else if (obj.addEventListener)\n obj.addEventListener(event, fn)\n // else\n // log.warn('No listener method found for', obj)\n })\n}\n\nexport function isPromise<T>(value: Promise<T> | T): value is Promise<T> {\n return Boolean(value && (value instanceof Promise || typeof (value as any).then === 'function'))\n}\n\n/** This is exactly what Prose.resolve(x) is supposed to be: return a Promise no matter what type x is */\nexport function promisify<T>(value: Promise<T> | T): Promise<T> {\n return Promise.resolve(value)\n}\n\n// // https://github.com/unjs/items-promise\n\n// /**\n// * Run tasks one by one by calling fn(task, previous) in a promise chain.\n// * Return value is of type Promise<*> which resolves to the last fn result.\n// */\n// export async function serial(tasks: any, fn: any) {\n// return tasks.reduce(\n// (promise: Promise<any>, task: any) =>\n// promise.then((previous) => fn(task, previous)),\n// Promise.resolve(null)\n// )\n// }\n\n// /**\n// * Run all tasks in parallel by calling fn(tasks) and await using Promise.all.\n// * Return value is of type Promise<*[]> which resolves to results of all fns in an array.\n// */\n// export async function parallel(tasks: any[], fn: any): Promise<any[]> {\n// return Promise.all(tasks.map((task) => fn(task)))\n// }\n\n//\n\n/**\n * Like ReturnType but for async functions.\n * From https://www.jpwilliams.dev/how-to-unpack-the-return-type-of-a-promise-in-typescript\n */\nexport type AsyncReturnType<T extends (...args: any) => any> = T extends (\n ...args: any\n) => Promise<infer U>\n ? U\n : T extends (...args: any) => infer U\n ? U\n : any\n"],"mappings":";;;;;;;;;;;;AAaA,SAAgB,gBAA2C;CACzD,IAAI,SAAS;AAKb,QAAO;EAJS,IAAI,SAAY,UAAU,YAAY;AACpD,aAAU;AACV,YAAS;IACT;EACe;EAAS;EAAO;;;AAInC,eAAsB,MAAM,cAAqC;AAC/D,QAAO,IAAI,SAAQ,YAAW,WAAW,SAAS,aAAa,CAAC;;;AAIlE,eAAsB,YAA2B;AAC/C,QAAO,IAAI,SAAQ,YAAW,WAAW,SAAS,EAAE,CAAC;;AAWvD,eAAsB,QACpB,SACA,cACA,eAAe,kBACmB;AAClC,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,IAAI,OAAO;EAEX,MAAM,UAAU,iBAAiB;AAC/B,UAAO;AACP,WAAQ,aAAa;KACpB,aAAa;AAEhB,UACG,MAAM,WAAW;AAChB,gBAAa,QAAQ;AACrB,OAAI,CAAC,KACH,SAAQ,OAAO;IACjB,CACD,OAAO,QAAQ;AACd,gBAAa,QAAQ;AACrB,OAAI,CAAC,KACH,QAAO,IAAI;IACb;GACJ;;AAGJ,SAAgB,UAAU,OAAqB;AAC7C,QAAO,UAAU,oBAAoB,OAAO,SAAS;;AAGvD,eAAsB,WACpB,SACA,cACwB;AACxB,KAAI,gBAAgB,EAClB,QAAO,MAAM;AAEf,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,IAAI,OAAO;EAEX,MAAM,UAAU,iBAAiB;AAC/B,UAAO;AACP,0BAAO,IAAI,MAAM,kBAAkB,CAAC;KACnC,aAAa;AAEhB,UACG,MAAM,WAAW;AAChB,gBAAa,QAAQ;AACrB,OAAI,CAAC,KACH,SAAQ,OAAO;IACjB,CACD,OAAO,QAAQ;AACd,gBAAa,QAAQ;AACrB,OAAI,CAAC,KACH,QAAO,IAAI;IACb;GACJ;;;;;;AAOJ,SAAgB,OACd,KACA,OACA,YAAY,KACE;AACd,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,MAAM,UAAe;AACzB,OAAI,OAAO;AACT,iBAAa,MAAM;AACnB,UAAM;AACN,YAAQ,MAAM;;;EAIlB,IAAI,aAAa;AACf,WAAQ;AACR,OAAI,IAAI,IACN,KAAI,IAAI,OAAO,GAAG;YACX,IAAI,oBACX,KAAI,oBAAoB,OAAO,GAAG;;EAKtC,IAAI,QAAa,iBAAiB;AAChC,SAAM;AACN,0BAAO,IAAI,MAAM,2BAA2B,CAAC;KAC5C,UAAU;AAEb,MAAI,IAAI,GACN,KAAI,GAAG,OAAO,GAAG;WACV,IAAI,iBACX,KAAI,iBAAiB,OAAO,GAAG;GAGjC;;AAGJ,SAAgB,UAAa,OAA4C;AACvE,QAAO,QAAQ,UAAU,iBAAiB,WAAW,OAAQ,MAAc,SAAS,YAAY;;;AAIlG,SAAgB,UAAa,OAAmC;AAC9D,QAAO,QAAQ,QAAQ,MAAM"}