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,2 +1,114 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./exec/promise.cjs`),t=require(`./dispose-defer.cjs`);function n(){let e=()=>{};return e[Symbol.dispose]=e,e}const r=n(),i=()=>r;function a(e,t=0){let n=setTimeout(e,t),r=()=>{n&&=(clearTimeout(n),void 0)};return r[Symbol.dispose]=r,r}function o(e,t){let n=setInterval(e,t),r=()=>{n&&=(clearInterval(n),void 0)};return r[Symbol.dispose]=r,r}function s(t,n,r=!1){let i,a=!1;async function o(r=!1){r&&await e.promisify(t()),a||(i=setTimeout(o,n,!0))}o(r);let s=()=>{i&&=(a=!0,clearTimeout(i),void 0)};return s[Symbol.dispose]=s,s}function c(e,t,n,...r){if(e==null)return i();e.on?e.on(t,n,...r):e.addEventListener&&e.addEventListener(t,n,...r);let a=()=>{e.off?e.off(t,n,...r):e.removeEventListener&&e.removeEventListener(t,n,...r)};return a[Symbol.dispose]=a,a}function l(e,t,n,...r){if(e==null)return i();e.once?e.once(t,n,...r):e.on?e.on(t,n,...r):e.addEventListener&&e.addEventListener(t,n,...r);let a=()=>{e.off?e.off(t,n,...r):e.removeEventListener&&e.removeEventListener(t,n,...r)};return a[Symbol.dispose]=a,a}function u(e){let n=t.useDispose(e);return Object.assign(n,{timeout:(e,t=0)=>n.add(a(e,t)),interval:(e,t=0)=>n.add(o(e,t)),intervalPause:(e,t=0)=>n.add(s(e,t)),on:(e,t,r,...i)=>n.add(c(e,t,r,...i)),once:(e,t,r,...i)=>n.add(l(e,t,r,...i))})}exports.noopDisposer=i,exports.useDisposeWithUtils=u,exports.useEventListener=c,exports.useEventListenerOnce=l,exports.useInterval=o,exports.useIntervalPause=s,exports.useTimeout=a;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_common_exec_promise = require('./exec/promise.cjs');
3
+ const require_common_dispose_defer = require('./dispose-defer.cjs');
4
+
5
+ //#region src/common/dispose-utils.ts
6
+ function _createNoopDispose() {
7
+ const fn = () => {};
8
+ fn[Symbol.dispose] = fn;
9
+ return fn;
10
+ }
11
+ const _noopDispose = _createNoopDispose();
12
+ /** Returns a no-op disposer (shared instance, no allocation per call). */
13
+ const noopDisposer = () => _noopDispose;
14
+ /**
15
+ * Executes a function after a specified timeout and returns a disposer function
16
+ * that can be used to cancel the timeout.
17
+ *
18
+ * @param fn - The function to execute after the timeout.
19
+ * @param timeout - The timeout duration in milliseconds (default: 0).
20
+ * @returns A disposer function that can be used to cancel the timeout.
21
+ */
22
+ function useTimeout(fn, timeout = 0) {
23
+ let timeoutHandle = setTimeout(fn, timeout);
24
+ const dispose = () => {
25
+ if (timeoutHandle) {
26
+ clearTimeout(timeoutHandle);
27
+ timeoutHandle = void 0;
28
+ }
29
+ };
30
+ dispose[Symbol.dispose] = dispose;
31
+ return dispose;
32
+ }
33
+ /**
34
+ * Executes a function repeatedly at a specified interval and returns a disposer function
35
+ * that can be used to stop the execution.
36
+ *
37
+ * @param fn - The function to be executed at the specified interval.
38
+ * @param interval - The interval (in milliseconds) at which the function should be executed.
39
+ * @returns A disposer function that can be used to stop the execution of the function.
40
+ */
41
+ function useInterval(fn, interval) {
42
+ let intervalHandle = setInterval(fn, interval);
43
+ const dispose = () => {
44
+ if (intervalHandle) {
45
+ clearInterval(intervalHandle);
46
+ intervalHandle = void 0;
47
+ }
48
+ };
49
+ dispose[Symbol.dispose] = dispose;
50
+ return dispose;
51
+ }
52
+ /** The interval starts only, when the function is finished. */
53
+ function useIntervalPause(fn, interval, immediately = false) {
54
+ let intervalHandle;
55
+ let stop = false;
56
+ async function loop(exec = false) {
57
+ if (exec) await require_common_exec_promise.promisify(fn());
58
+ if (!stop) intervalHandle = setTimeout(loop, interval, true);
59
+ }
60
+ loop(immediately);
61
+ const dispose = () => {
62
+ if (intervalHandle) {
63
+ stop = true;
64
+ clearTimeout(intervalHandle);
65
+ intervalHandle = void 0;
66
+ }
67
+ };
68
+ dispose[Symbol.dispose] = dispose;
69
+ return dispose;
70
+ }
71
+ function useEventListener(emitter, eventName, fn, ...args) {
72
+ if (emitter == null) return noopDisposer();
73
+ if (emitter.on) emitter.on(eventName, fn, ...args);
74
+ else if (emitter.addEventListener) emitter.addEventListener(eventName, fn, ...args);
75
+ const dispose = () => {
76
+ if (emitter.off) emitter.off(eventName, fn, ...args);
77
+ else if (emitter.removeEventListener) emitter.removeEventListener(eventName, fn, ...args);
78
+ };
79
+ dispose[Symbol.dispose] = dispose;
80
+ return dispose;
81
+ }
82
+ function useEventListenerOnce(emitter, eventName, fn, ...args) {
83
+ if (emitter == null) return noopDisposer();
84
+ if (emitter.once) emitter.once(eventName, fn, ...args);
85
+ else if (emitter.on) emitter.on(eventName, fn, ...args);
86
+ else if (emitter.addEventListener) emitter.addEventListener(eventName, fn, ...args);
87
+ const dispose = () => {
88
+ if (emitter.off) emitter.off(eventName, fn, ...args);
89
+ else if (emitter.removeEventListener) emitter.removeEventListener(eventName, fn, ...args);
90
+ };
91
+ dispose[Symbol.dispose] = dispose;
92
+ return dispose;
93
+ }
94
+ /** Like useDispose but with shorthands for emitter and timers */
95
+ function useDisposeWithUtils(config) {
96
+ const dispose = require_common_dispose_defer.useDispose(config);
97
+ return Object.assign(dispose, {
98
+ timeout: (fn, timeout = 0) => dispose.add(useTimeout(fn, timeout)),
99
+ interval: (fn, interval = 0) => dispose.add(useInterval(fn, interval)),
100
+ intervalPause: (fn, interval = 0) => dispose.add(useIntervalPause(fn, interval)),
101
+ on: (emitter, eventName, fn, ...args) => dispose.add(useEventListener(emitter, eventName, fn, ...args)),
102
+ once: (emitter, eventName, fn, ...args) => dispose.add(useEventListenerOnce(emitter, eventName, fn, ...args))
103
+ });
104
+ }
105
+
106
+ //#endregion
107
+ exports.noopDisposer = noopDisposer;
108
+ exports.useDisposeWithUtils = useDisposeWithUtils;
109
+ exports.useEventListener = useEventListener;
110
+ exports.useEventListenerOnce = useEventListenerOnce;
111
+ exports.useInterval = useInterval;
112
+ exports.useIntervalPause = useIntervalPause;
113
+ exports.useTimeout = useTimeout;
2
114
  //# sourceMappingURL=dispose-utils.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispose-utils.cjs","names":["promisify","useDispose"],"sources":["../../src/common/dispose-utils.ts"],"sourcesContent":["import type { UseDisposeConfig } from './dispose-defer'\nimport type { DisposerFunction } from './dispose-types'\nimport type { LoggerInterface } from './log/log-base'\nimport { useDispose } from './dispose-defer'\nimport { promisify } from './exec/promise'\n\nexport type TimerExecFunction = () => void | Promise<void>\n\nfunction _createNoopDispose() {\n const fn = () => {}\n fn[Symbol.dispose] = fn\n return fn as unknown as DisposerFunction\n}\n\nconst _noopDispose = _createNoopDispose()\n\n/** Returns a no-op disposer (shared instance, no allocation per call). */\nexport const noopDisposer: () => DisposerFunction = () => _noopDispose\n\n/**\n * Executes a function after a specified timeout and returns a disposer function\n * that can be used to cancel the timeout.\n *\n * @param fn - The function to execute after the timeout.\n * @param timeout - The timeout duration in milliseconds (default: 0).\n * @returns A disposer function that can be used to cancel the timeout.\n */\nexport function useTimeout(fn: TimerExecFunction, timeout = 0): DisposerFunction {\n let timeoutHandle: any = setTimeout(fn, timeout)\n const dispose = () => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n timeoutHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/**\n * Executes a function repeatedly at a specified interval and returns a disposer function\n * that can be used to stop the execution.\n *\n * @param fn - The function to be executed at the specified interval.\n * @param interval - The interval (in milliseconds) at which the function should be executed.\n * @returns A disposer function that can be used to stop the execution of the function.\n */\nexport function useInterval(fn: TimerExecFunction, interval: number): DisposerFunction {\n let intervalHandle: any = setInterval(fn, interval)\n const dispose = () => {\n if (intervalHandle) {\n clearInterval(intervalHandle)\n intervalHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/** The interval starts only, when the function is finished. */\nexport function useIntervalPause(fn: TimerExecFunction, interval: number, immediately = false): DisposerFunction {\n let intervalHandle: any\n let stop = false\n\n async function loop(exec = false) {\n if (exec)\n await promisify(fn())\n if (!stop)\n intervalHandle = setTimeout(loop, interval, true)\n }\n\n void loop(immediately)\n\n const dispose = () => {\n if (intervalHandle) {\n stop = true\n clearTimeout(intervalHandle) // uses setTimeout internally, so clearTimeout is correct\n intervalHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\nexport function useEventListener(\n emitter: any,\n eventName: string,\n fn: (ev?: any) => void,\n ...args: any[]\n): DisposerFunction {\n if (emitter == null)\n return noopDisposer()\n if (emitter.on)\n emitter.on(eventName, fn, ...args)\n else if (emitter.addEventListener)\n emitter.addEventListener(eventName, fn, ...args)\n const dispose = () => {\n if (emitter.off)\n emitter.off(eventName, fn, ...args)\n else if (emitter.removeEventListener)\n emitter.removeEventListener(eventName, fn, ...args)\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\nexport function useEventListenerOnce(\n emitter: any,\n eventName: string,\n fn: (ev?: any) => void,\n ...args: any[]\n): DisposerFunction {\n if (emitter == null)\n return noopDisposer()\n if (emitter.once)\n emitter.once(eventName, fn, ...args)\n else if (emitter.on)\n emitter.on(eventName, fn, ...args)\n else if (emitter.addEventListener)\n emitter.addEventListener(eventName, fn, ...args)\n const dispose = () => {\n if (emitter.off)\n emitter.off(eventName, fn, ...args)\n else if (emitter.removeEventListener)\n emitter.removeEventListener(eventName, fn, ...args)\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/** Like useDispose but with shorthands for emitter and timers */\nexport function useDisposeWithUtils(config?: string | UseDisposeConfig | LoggerInterface) {\n const dispose = useDispose(config)\n return Object.assign(dispose, {\n timeout: (fn: TimerExecFunction, timeout = 0) => dispose.add(useTimeout(fn, timeout))!,\n interval: (fn: TimerExecFunction, interval = 0) => dispose.add(useInterval(fn, interval))!,\n intervalPause: (fn: TimerExecFunction, interval = 0) => dispose.add(useIntervalPause(fn, interval))!,\n on: (emitter: any, eventName: string, fn: (ev?: any) => void, ...args: any[]) => dispose.add(useEventListener(emitter, eventName, fn, ...args))!,\n once: (emitter: any, eventName: string, fn: (ev?: any) => void, ...args: any[]) => dispose.add(useEventListenerOnce(emitter, eventName, fn, ...args))!,\n })\n}\n\nexport type UseDisposeWithUtils = ReturnType<typeof useDisposeWithUtils>\n"],"mappings":"0IAQA,SAAS,GAAqB,CAC5B,IAAM,MAAW,GAEjB,MADA,GAAG,OAAO,SAAW,EACd,EAGT,MAAM,EAAe,GAAoB,CAG5B,MAA6C,EAU1D,SAAgB,EAAW,EAAuB,EAAU,EAAqB,CAC/E,IAAI,EAAqB,WAAW,EAAI,EAAQ,CAC1C,MAAgB,CACpB,AAEE,KADA,aAAa,EAAc,CACX,IAAA,KAIpB,MADA,GAAQ,OAAO,SAAW,EACnB,EAWT,SAAgB,EAAY,EAAuB,EAAoC,CACrF,IAAI,EAAsB,YAAY,EAAI,EAAS,CAC7C,MAAgB,CACpB,AAEE,KADA,cAAc,EAAe,CACZ,IAAA,KAIrB,MADA,GAAQ,OAAO,SAAW,EACnB,EAIT,SAAgB,EAAiB,EAAuB,EAAkB,EAAc,GAAyB,CAC/G,IAAI,EACA,EAAO,GAEX,eAAe,EAAK,EAAO,GAAO,CAC5B,GACF,MAAMA,EAAAA,UAAU,GAAI,CAAC,CAClB,IACH,EAAiB,WAAW,EAAM,EAAU,GAAK,EAGhD,EAAK,EAAY,CAEtB,IAAM,MAAgB,CACpB,AAGE,KAFA,EAAO,GACP,aAAa,EAAe,CACX,IAAA,KAIrB,MADA,GAAQ,OAAO,SAAW,EACnB,EAGT,SAAgB,EACd,EACA,EACA,EACA,GAAG,EACe,CAClB,GAAI,GAAW,KACb,OAAO,GAAc,CACnB,EAAQ,GACV,EAAQ,GAAG,EAAW,EAAI,GAAG,EAAK,CAC3B,EAAQ,kBACf,EAAQ,iBAAiB,EAAW,EAAI,GAAG,EAAK,CAClD,IAAM,MAAgB,CAChB,EAAQ,IACV,EAAQ,IAAI,EAAW,EAAI,GAAG,EAAK,CAC5B,EAAQ,qBACf,EAAQ,oBAAoB,EAAW,EAAI,GAAG,EAAK,EAGvD,MADA,GAAQ,OAAO,SAAW,EACnB,EAGT,SAAgB,EACd,EACA,EACA,EACA,GAAG,EACe,CAClB,GAAI,GAAW,KACb,OAAO,GAAc,CACnB,EAAQ,KACV,EAAQ,KAAK,EAAW,EAAI,GAAG,EAAK,CAC7B,EAAQ,GACf,EAAQ,GAAG,EAAW,EAAI,GAAG,EAAK,CAC3B,EAAQ,kBACf,EAAQ,iBAAiB,EAAW,EAAI,GAAG,EAAK,CAClD,IAAM,MAAgB,CAChB,EAAQ,IACV,EAAQ,IAAI,EAAW,EAAI,GAAG,EAAK,CAC5B,EAAQ,qBACf,EAAQ,oBAAoB,EAAW,EAAI,GAAG,EAAK,EAGvD,MADA,GAAQ,OAAO,SAAW,EACnB,EAIT,SAAgB,EAAoB,EAAsD,CACxF,IAAM,EAAUC,EAAAA,WAAW,EAAO,CAClC,OAAO,OAAO,OAAO,EAAS,CAC5B,SAAU,EAAuB,EAAU,IAAM,EAAQ,IAAI,EAAW,EAAI,EAAQ,CAAC,CACrF,UAAW,EAAuB,EAAW,IAAM,EAAQ,IAAI,EAAY,EAAI,EAAS,CAAC,CACzF,eAAgB,EAAuB,EAAW,IAAM,EAAQ,IAAI,EAAiB,EAAI,EAAS,CAAC,CACnG,IAAK,EAAc,EAAmB,EAAwB,GAAG,IAAgB,EAAQ,IAAI,EAAiB,EAAS,EAAW,EAAI,GAAG,EAAK,CAAC,CAC/I,MAAO,EAAc,EAAmB,EAAwB,GAAG,IAAgB,EAAQ,IAAI,EAAqB,EAAS,EAAW,EAAI,GAAG,EAAK,CAAC,CACtJ,CAAC"}
1
+ {"version":3,"file":"dispose-utils.cjs","names":["promisify","useDispose"],"sources":["../../src/common/dispose-utils.ts"],"sourcesContent":["import type { UseDisposeConfig } from './dispose-defer'\nimport type { DisposerFunction } from './dispose-types'\nimport type { LoggerInterface } from './log/log-base'\nimport { useDispose } from './dispose-defer'\nimport { promisify } from './exec/promise'\n\nexport type TimerExecFunction = () => void | Promise<void>\n\nfunction _createNoopDispose() {\n const fn = () => {}\n fn[Symbol.dispose] = fn\n return fn as unknown as DisposerFunction\n}\n\nconst _noopDispose = _createNoopDispose()\n\n/** Returns a no-op disposer (shared instance, no allocation per call). */\nexport const noopDisposer: () => DisposerFunction = () => _noopDispose\n\n/**\n * Executes a function after a specified timeout and returns a disposer function\n * that can be used to cancel the timeout.\n *\n * @param fn - The function to execute after the timeout.\n * @param timeout - The timeout duration in milliseconds (default: 0).\n * @returns A disposer function that can be used to cancel the timeout.\n */\nexport function useTimeout(fn: TimerExecFunction, timeout = 0): DisposerFunction {\n let timeoutHandle: any = setTimeout(fn, timeout)\n const dispose = () => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n timeoutHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/**\n * Executes a function repeatedly at a specified interval and returns a disposer function\n * that can be used to stop the execution.\n *\n * @param fn - The function to be executed at the specified interval.\n * @param interval - The interval (in milliseconds) at which the function should be executed.\n * @returns A disposer function that can be used to stop the execution of the function.\n */\nexport function useInterval(fn: TimerExecFunction, interval: number): DisposerFunction {\n let intervalHandle: any = setInterval(fn, interval)\n const dispose = () => {\n if (intervalHandle) {\n clearInterval(intervalHandle)\n intervalHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/** The interval starts only, when the function is finished. */\nexport function useIntervalPause(fn: TimerExecFunction, interval: number, immediately = false): DisposerFunction {\n let intervalHandle: any\n let stop = false\n\n async function loop(exec = false) {\n if (exec)\n await promisify(fn())\n if (!stop)\n intervalHandle = setTimeout(loop, interval, true)\n }\n\n void loop(immediately)\n\n const dispose = () => {\n if (intervalHandle) {\n stop = true\n clearTimeout(intervalHandle) // uses setTimeout internally, so clearTimeout is correct\n intervalHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\nexport function useEventListener(\n emitter: any,\n eventName: string,\n fn: (ev?: any) => void,\n ...args: any[]\n): DisposerFunction {\n if (emitter == null)\n return noopDisposer()\n if (emitter.on)\n emitter.on(eventName, fn, ...args)\n else if (emitter.addEventListener)\n emitter.addEventListener(eventName, fn, ...args)\n const dispose = () => {\n if (emitter.off)\n emitter.off(eventName, fn, ...args)\n else if (emitter.removeEventListener)\n emitter.removeEventListener(eventName, fn, ...args)\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\nexport function useEventListenerOnce(\n emitter: any,\n eventName: string,\n fn: (ev?: any) => void,\n ...args: any[]\n): DisposerFunction {\n if (emitter == null)\n return noopDisposer()\n if (emitter.once)\n emitter.once(eventName, fn, ...args)\n else if (emitter.on)\n emitter.on(eventName, fn, ...args)\n else if (emitter.addEventListener)\n emitter.addEventListener(eventName, fn, ...args)\n const dispose = () => {\n if (emitter.off)\n emitter.off(eventName, fn, ...args)\n else if (emitter.removeEventListener)\n emitter.removeEventListener(eventName, fn, ...args)\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/** Like useDispose but with shorthands for emitter and timers */\nexport function useDisposeWithUtils(config?: string | UseDisposeConfig | LoggerInterface) {\n const dispose = useDispose(config)\n return Object.assign(dispose, {\n timeout: (fn: TimerExecFunction, timeout = 0) => dispose.add(useTimeout(fn, timeout))!,\n interval: (fn: TimerExecFunction, interval = 0) => dispose.add(useInterval(fn, interval))!,\n intervalPause: (fn: TimerExecFunction, interval = 0) => dispose.add(useIntervalPause(fn, interval))!,\n on: (emitter: any, eventName: string, fn: (ev?: any) => void, ...args: any[]) => dispose.add(useEventListener(emitter, eventName, fn, ...args))!,\n once: (emitter: any, eventName: string, fn: (ev?: any) => void, ...args: any[]) => dispose.add(useEventListenerOnce(emitter, eventName, fn, ...args))!,\n })\n}\n\nexport type UseDisposeWithUtils = ReturnType<typeof useDisposeWithUtils>\n"],"mappings":";;;;;AAQA,SAAS,qBAAqB;CAC5B,MAAM,WAAW;AACjB,IAAG,OAAO,WAAW;AACrB,QAAO;;AAGT,MAAM,eAAe,oBAAoB;;AAGzC,MAAa,qBAA6C;;;;;;;;;AAU1D,SAAgB,WAAW,IAAuB,UAAU,GAAqB;CAC/E,IAAI,gBAAqB,WAAW,IAAI,QAAQ;CAChD,MAAM,gBAAgB;AACpB,MAAI,eAAe;AACjB,gBAAa,cAAc;AAC3B,mBAAgB;;;AAGpB,SAAQ,OAAO,WAAW;AAC1B,QAAO;;;;;;;;;;AAWT,SAAgB,YAAY,IAAuB,UAAoC;CACrF,IAAI,iBAAsB,YAAY,IAAI,SAAS;CACnD,MAAM,gBAAgB;AACpB,MAAI,gBAAgB;AAClB,iBAAc,eAAe;AAC7B,oBAAiB;;;AAGrB,SAAQ,OAAO,WAAW;AAC1B,QAAO;;;AAIT,SAAgB,iBAAiB,IAAuB,UAAkB,cAAc,OAAyB;CAC/G,IAAI;CACJ,IAAI,OAAO;CAEX,eAAe,KAAK,OAAO,OAAO;AAChC,MAAI,KACF,OAAMA,sCAAU,IAAI,CAAC;AACvB,MAAI,CAAC,KACH,kBAAiB,WAAW,MAAM,UAAU,KAAK;;AAGrD,CAAK,KAAK,YAAY;CAEtB,MAAM,gBAAgB;AACpB,MAAI,gBAAgB;AAClB,UAAO;AACP,gBAAa,eAAe;AAC5B,oBAAiB;;;AAGrB,SAAQ,OAAO,WAAW;AAC1B,QAAO;;AAGT,SAAgB,iBACd,SACA,WACA,IACA,GAAG,MACe;AAClB,KAAI,WAAW,KACb,QAAO,cAAc;AACvB,KAAI,QAAQ,GACV,SAAQ,GAAG,WAAW,IAAI,GAAG,KAAK;UAC3B,QAAQ,iBACf,SAAQ,iBAAiB,WAAW,IAAI,GAAG,KAAK;CAClD,MAAM,gBAAgB;AACpB,MAAI,QAAQ,IACV,SAAQ,IAAI,WAAW,IAAI,GAAG,KAAK;WAC5B,QAAQ,oBACf,SAAQ,oBAAoB,WAAW,IAAI,GAAG,KAAK;;AAEvD,SAAQ,OAAO,WAAW;AAC1B,QAAO;;AAGT,SAAgB,qBACd,SACA,WACA,IACA,GAAG,MACe;AAClB,KAAI,WAAW,KACb,QAAO,cAAc;AACvB,KAAI,QAAQ,KACV,SAAQ,KAAK,WAAW,IAAI,GAAG,KAAK;UAC7B,QAAQ,GACf,SAAQ,GAAG,WAAW,IAAI,GAAG,KAAK;UAC3B,QAAQ,iBACf,SAAQ,iBAAiB,WAAW,IAAI,GAAG,KAAK;CAClD,MAAM,gBAAgB;AACpB,MAAI,QAAQ,IACV,SAAQ,IAAI,WAAW,IAAI,GAAG,KAAK;WAC5B,QAAQ,oBACf,SAAQ,oBAAoB,WAAW,IAAI,GAAG,KAAK;;AAEvD,SAAQ,OAAO,WAAW;AAC1B,QAAO;;;AAIT,SAAgB,oBAAoB,QAAsD;CACxF,MAAM,UAAUC,wCAAW,OAAO;AAClC,QAAO,OAAO,OAAO,SAAS;EAC5B,UAAU,IAAuB,UAAU,MAAM,QAAQ,IAAI,WAAW,IAAI,QAAQ,CAAC;EACrF,WAAW,IAAuB,WAAW,MAAM,QAAQ,IAAI,YAAY,IAAI,SAAS,CAAC;EACzF,gBAAgB,IAAuB,WAAW,MAAM,QAAQ,IAAI,iBAAiB,IAAI,SAAS,CAAC;EACnG,KAAK,SAAc,WAAmB,IAAwB,GAAG,SAAgB,QAAQ,IAAI,iBAAiB,SAAS,WAAW,IAAI,GAAG,KAAK,CAAC;EAC/I,OAAO,SAAc,WAAmB,IAAwB,GAAG,SAAgB,QAAQ,IAAI,qBAAqB,SAAS,WAAW,IAAI,GAAG,KAAK,CAAC;EACtJ,CAAC"}
@@ -1,2 +1,107 @@
1
- import{promisify as e}from"./exec/promise.mjs";import{useDispose as t}from"./dispose-defer.mjs";function n(){let e=()=>{};return e[Symbol.dispose]=e,e}const r=n(),i=()=>r;function a(e,t=0){let n=setTimeout(e,t),r=()=>{n&&=(clearTimeout(n),void 0)};return r[Symbol.dispose]=r,r}function o(e,t){let n=setInterval(e,t),r=()=>{n&&=(clearInterval(n),void 0)};return r[Symbol.dispose]=r,r}function s(t,n,r=!1){let i,a=!1;async function o(r=!1){r&&await e(t()),a||(i=setTimeout(o,n,!0))}o(r);let s=()=>{i&&=(a=!0,clearTimeout(i),void 0)};return s[Symbol.dispose]=s,s}function c(e,t,n,...r){if(e==null)return i();e.on?e.on(t,n,...r):e.addEventListener&&e.addEventListener(t,n,...r);let a=()=>{e.off?e.off(t,n,...r):e.removeEventListener&&e.removeEventListener(t,n,...r)};return a[Symbol.dispose]=a,a}function l(e,t,n,...r){if(e==null)return i();e.once?e.once(t,n,...r):e.on?e.on(t,n,...r):e.addEventListener&&e.addEventListener(t,n,...r);let a=()=>{e.off?e.off(t,n,...r):e.removeEventListener&&e.removeEventListener(t,n,...r)};return a[Symbol.dispose]=a,a}function u(e){let n=t(e);return Object.assign(n,{timeout:(e,t=0)=>n.add(a(e,t)),interval:(e,t=0)=>n.add(o(e,t)),intervalPause:(e,t=0)=>n.add(s(e,t)),on:(e,t,r,...i)=>n.add(c(e,t,r,...i)),once:(e,t,r,...i)=>n.add(l(e,t,r,...i))})}export{i as noopDisposer,u as useDisposeWithUtils,c as useEventListener,l as useEventListenerOnce,o as useInterval,s as useIntervalPause,a as useTimeout};
1
+ import { promisify } from "./exec/promise.mjs";
2
+ import { useDispose } from "./dispose-defer.mjs";
3
+
4
+ //#region src/common/dispose-utils.ts
5
+ function _createNoopDispose() {
6
+ const fn = () => {};
7
+ fn[Symbol.dispose] = fn;
8
+ return fn;
9
+ }
10
+ const _noopDispose = _createNoopDispose();
11
+ /** Returns a no-op disposer (shared instance, no allocation per call). */
12
+ const noopDisposer = () => _noopDispose;
13
+ /**
14
+ * Executes a function after a specified timeout and returns a disposer function
15
+ * that can be used to cancel the timeout.
16
+ *
17
+ * @param fn - The function to execute after the timeout.
18
+ * @param timeout - The timeout duration in milliseconds (default: 0).
19
+ * @returns A disposer function that can be used to cancel the timeout.
20
+ */
21
+ function useTimeout(fn, timeout = 0) {
22
+ let timeoutHandle = setTimeout(fn, timeout);
23
+ const dispose = () => {
24
+ if (timeoutHandle) {
25
+ clearTimeout(timeoutHandle);
26
+ timeoutHandle = void 0;
27
+ }
28
+ };
29
+ dispose[Symbol.dispose] = dispose;
30
+ return dispose;
31
+ }
32
+ /**
33
+ * Executes a function repeatedly at a specified interval and returns a disposer function
34
+ * that can be used to stop the execution.
35
+ *
36
+ * @param fn - The function to be executed at the specified interval.
37
+ * @param interval - The interval (in milliseconds) at which the function should be executed.
38
+ * @returns A disposer function that can be used to stop the execution of the function.
39
+ */
40
+ function useInterval(fn, interval) {
41
+ let intervalHandle = setInterval(fn, interval);
42
+ const dispose = () => {
43
+ if (intervalHandle) {
44
+ clearInterval(intervalHandle);
45
+ intervalHandle = void 0;
46
+ }
47
+ };
48
+ dispose[Symbol.dispose] = dispose;
49
+ return dispose;
50
+ }
51
+ /** The interval starts only, when the function is finished. */
52
+ function useIntervalPause(fn, interval, immediately = false) {
53
+ let intervalHandle;
54
+ let stop = false;
55
+ async function loop(exec = false) {
56
+ if (exec) await promisify(fn());
57
+ if (!stop) intervalHandle = setTimeout(loop, interval, true);
58
+ }
59
+ loop(immediately);
60
+ const dispose = () => {
61
+ if (intervalHandle) {
62
+ stop = true;
63
+ clearTimeout(intervalHandle);
64
+ intervalHandle = void 0;
65
+ }
66
+ };
67
+ dispose[Symbol.dispose] = dispose;
68
+ return dispose;
69
+ }
70
+ function useEventListener(emitter, eventName, fn, ...args) {
71
+ if (emitter == null) return noopDisposer();
72
+ if (emitter.on) emitter.on(eventName, fn, ...args);
73
+ else if (emitter.addEventListener) emitter.addEventListener(eventName, fn, ...args);
74
+ const dispose = () => {
75
+ if (emitter.off) emitter.off(eventName, fn, ...args);
76
+ else if (emitter.removeEventListener) emitter.removeEventListener(eventName, fn, ...args);
77
+ };
78
+ dispose[Symbol.dispose] = dispose;
79
+ return dispose;
80
+ }
81
+ function useEventListenerOnce(emitter, eventName, fn, ...args) {
82
+ if (emitter == null) return noopDisposer();
83
+ if (emitter.once) emitter.once(eventName, fn, ...args);
84
+ else if (emitter.on) emitter.on(eventName, fn, ...args);
85
+ else if (emitter.addEventListener) emitter.addEventListener(eventName, fn, ...args);
86
+ const dispose = () => {
87
+ if (emitter.off) emitter.off(eventName, fn, ...args);
88
+ else if (emitter.removeEventListener) emitter.removeEventListener(eventName, fn, ...args);
89
+ };
90
+ dispose[Symbol.dispose] = dispose;
91
+ return dispose;
92
+ }
93
+ /** Like useDispose but with shorthands for emitter and timers */
94
+ function useDisposeWithUtils(config) {
95
+ const dispose = useDispose(config);
96
+ return Object.assign(dispose, {
97
+ timeout: (fn, timeout = 0) => dispose.add(useTimeout(fn, timeout)),
98
+ interval: (fn, interval = 0) => dispose.add(useInterval(fn, interval)),
99
+ intervalPause: (fn, interval = 0) => dispose.add(useIntervalPause(fn, interval)),
100
+ on: (emitter, eventName, fn, ...args) => dispose.add(useEventListener(emitter, eventName, fn, ...args)),
101
+ once: (emitter, eventName, fn, ...args) => dispose.add(useEventListenerOnce(emitter, eventName, fn, ...args))
102
+ });
103
+ }
104
+
105
+ //#endregion
106
+ export { noopDisposer, useDisposeWithUtils, useEventListener, useEventListenerOnce, useInterval, useIntervalPause, useTimeout };
2
107
  //# sourceMappingURL=dispose-utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispose-utils.mjs","names":[],"sources":["../../src/common/dispose-utils.ts"],"sourcesContent":["import type { UseDisposeConfig } from './dispose-defer'\nimport type { DisposerFunction } from './dispose-types'\nimport type { LoggerInterface } from './log/log-base'\nimport { useDispose } from './dispose-defer'\nimport { promisify } from './exec/promise'\n\nexport type TimerExecFunction = () => void | Promise<void>\n\nfunction _createNoopDispose() {\n const fn = () => {}\n fn[Symbol.dispose] = fn\n return fn as unknown as DisposerFunction\n}\n\nconst _noopDispose = _createNoopDispose()\n\n/** Returns a no-op disposer (shared instance, no allocation per call). */\nexport const noopDisposer: () => DisposerFunction = () => _noopDispose\n\n/**\n * Executes a function after a specified timeout and returns a disposer function\n * that can be used to cancel the timeout.\n *\n * @param fn - The function to execute after the timeout.\n * @param timeout - The timeout duration in milliseconds (default: 0).\n * @returns A disposer function that can be used to cancel the timeout.\n */\nexport function useTimeout(fn: TimerExecFunction, timeout = 0): DisposerFunction {\n let timeoutHandle: any = setTimeout(fn, timeout)\n const dispose = () => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n timeoutHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/**\n * Executes a function repeatedly at a specified interval and returns a disposer function\n * that can be used to stop the execution.\n *\n * @param fn - The function to be executed at the specified interval.\n * @param interval - The interval (in milliseconds) at which the function should be executed.\n * @returns A disposer function that can be used to stop the execution of the function.\n */\nexport function useInterval(fn: TimerExecFunction, interval: number): DisposerFunction {\n let intervalHandle: any = setInterval(fn, interval)\n const dispose = () => {\n if (intervalHandle) {\n clearInterval(intervalHandle)\n intervalHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/** The interval starts only, when the function is finished. */\nexport function useIntervalPause(fn: TimerExecFunction, interval: number, immediately = false): DisposerFunction {\n let intervalHandle: any\n let stop = false\n\n async function loop(exec = false) {\n if (exec)\n await promisify(fn())\n if (!stop)\n intervalHandle = setTimeout(loop, interval, true)\n }\n\n void loop(immediately)\n\n const dispose = () => {\n if (intervalHandle) {\n stop = true\n clearTimeout(intervalHandle) // uses setTimeout internally, so clearTimeout is correct\n intervalHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\nexport function useEventListener(\n emitter: any,\n eventName: string,\n fn: (ev?: any) => void,\n ...args: any[]\n): DisposerFunction {\n if (emitter == null)\n return noopDisposer()\n if (emitter.on)\n emitter.on(eventName, fn, ...args)\n else if (emitter.addEventListener)\n emitter.addEventListener(eventName, fn, ...args)\n const dispose = () => {\n if (emitter.off)\n emitter.off(eventName, fn, ...args)\n else if (emitter.removeEventListener)\n emitter.removeEventListener(eventName, fn, ...args)\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\nexport function useEventListenerOnce(\n emitter: any,\n eventName: string,\n fn: (ev?: any) => void,\n ...args: any[]\n): DisposerFunction {\n if (emitter == null)\n return noopDisposer()\n if (emitter.once)\n emitter.once(eventName, fn, ...args)\n else if (emitter.on)\n emitter.on(eventName, fn, ...args)\n else if (emitter.addEventListener)\n emitter.addEventListener(eventName, fn, ...args)\n const dispose = () => {\n if (emitter.off)\n emitter.off(eventName, fn, ...args)\n else if (emitter.removeEventListener)\n emitter.removeEventListener(eventName, fn, ...args)\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/** Like useDispose but with shorthands for emitter and timers */\nexport function useDisposeWithUtils(config?: string | UseDisposeConfig | LoggerInterface) {\n const dispose = useDispose(config)\n return Object.assign(dispose, {\n timeout: (fn: TimerExecFunction, timeout = 0) => dispose.add(useTimeout(fn, timeout))!,\n interval: (fn: TimerExecFunction, interval = 0) => dispose.add(useInterval(fn, interval))!,\n intervalPause: (fn: TimerExecFunction, interval = 0) => dispose.add(useIntervalPause(fn, interval))!,\n on: (emitter: any, eventName: string, fn: (ev?: any) => void, ...args: any[]) => dispose.add(useEventListener(emitter, eventName, fn, ...args))!,\n once: (emitter: any, eventName: string, fn: (ev?: any) => void, ...args: any[]) => dispose.add(useEventListenerOnce(emitter, eventName, fn, ...args))!,\n })\n}\n\nexport type UseDisposeWithUtils = ReturnType<typeof useDisposeWithUtils>\n"],"mappings":"gGAQA,SAAS,GAAqB,CAC5B,IAAM,MAAW,GAEjB,MADA,GAAG,OAAO,SAAW,EACd,EAGT,MAAM,EAAe,GAAoB,CAG5B,MAA6C,EAU1D,SAAgB,EAAW,EAAuB,EAAU,EAAqB,CAC/E,IAAI,EAAqB,WAAW,EAAI,EAAQ,CAC1C,MAAgB,CACpB,AAEE,KADA,aAAa,EAAc,CACX,IAAA,KAIpB,MADA,GAAQ,OAAO,SAAW,EACnB,EAWT,SAAgB,EAAY,EAAuB,EAAoC,CACrF,IAAI,EAAsB,YAAY,EAAI,EAAS,CAC7C,MAAgB,CACpB,AAEE,KADA,cAAc,EAAe,CACZ,IAAA,KAIrB,MADA,GAAQ,OAAO,SAAW,EACnB,EAIT,SAAgB,EAAiB,EAAuB,EAAkB,EAAc,GAAyB,CAC/G,IAAI,EACA,EAAO,GAEX,eAAe,EAAK,EAAO,GAAO,CAC5B,GACF,MAAM,EAAU,GAAI,CAAC,CAClB,IACH,EAAiB,WAAW,EAAM,EAAU,GAAK,EAGhD,EAAK,EAAY,CAEtB,IAAM,MAAgB,CACpB,AAGE,KAFA,EAAO,GACP,aAAa,EAAe,CACX,IAAA,KAIrB,MADA,GAAQ,OAAO,SAAW,EACnB,EAGT,SAAgB,EACd,EACA,EACA,EACA,GAAG,EACe,CAClB,GAAI,GAAW,KACb,OAAO,GAAc,CACnB,EAAQ,GACV,EAAQ,GAAG,EAAW,EAAI,GAAG,EAAK,CAC3B,EAAQ,kBACf,EAAQ,iBAAiB,EAAW,EAAI,GAAG,EAAK,CAClD,IAAM,MAAgB,CAChB,EAAQ,IACV,EAAQ,IAAI,EAAW,EAAI,GAAG,EAAK,CAC5B,EAAQ,qBACf,EAAQ,oBAAoB,EAAW,EAAI,GAAG,EAAK,EAGvD,MADA,GAAQ,OAAO,SAAW,EACnB,EAGT,SAAgB,EACd,EACA,EACA,EACA,GAAG,EACe,CAClB,GAAI,GAAW,KACb,OAAO,GAAc,CACnB,EAAQ,KACV,EAAQ,KAAK,EAAW,EAAI,GAAG,EAAK,CAC7B,EAAQ,GACf,EAAQ,GAAG,EAAW,EAAI,GAAG,EAAK,CAC3B,EAAQ,kBACf,EAAQ,iBAAiB,EAAW,EAAI,GAAG,EAAK,CAClD,IAAM,MAAgB,CAChB,EAAQ,IACV,EAAQ,IAAI,EAAW,EAAI,GAAG,EAAK,CAC5B,EAAQ,qBACf,EAAQ,oBAAoB,EAAW,EAAI,GAAG,EAAK,EAGvD,MADA,GAAQ,OAAO,SAAW,EACnB,EAIT,SAAgB,EAAoB,EAAsD,CACxF,IAAM,EAAU,EAAW,EAAO,CAClC,OAAO,OAAO,OAAO,EAAS,CAC5B,SAAU,EAAuB,EAAU,IAAM,EAAQ,IAAI,EAAW,EAAI,EAAQ,CAAC,CACrF,UAAW,EAAuB,EAAW,IAAM,EAAQ,IAAI,EAAY,EAAI,EAAS,CAAC,CACzF,eAAgB,EAAuB,EAAW,IAAM,EAAQ,IAAI,EAAiB,EAAI,EAAS,CAAC,CACnG,IAAK,EAAc,EAAmB,EAAwB,GAAG,IAAgB,EAAQ,IAAI,EAAiB,EAAS,EAAW,EAAI,GAAG,EAAK,CAAC,CAC/I,MAAO,EAAc,EAAmB,EAAwB,GAAG,IAAgB,EAAQ,IAAI,EAAqB,EAAS,EAAW,EAAI,GAAG,EAAK,CAAC,CACtJ,CAAC"}
1
+ {"version":3,"file":"dispose-utils.mjs","names":[],"sources":["../../src/common/dispose-utils.ts"],"sourcesContent":["import type { UseDisposeConfig } from './dispose-defer'\nimport type { DisposerFunction } from './dispose-types'\nimport type { LoggerInterface } from './log/log-base'\nimport { useDispose } from './dispose-defer'\nimport { promisify } from './exec/promise'\n\nexport type TimerExecFunction = () => void | Promise<void>\n\nfunction _createNoopDispose() {\n const fn = () => {}\n fn[Symbol.dispose] = fn\n return fn as unknown as DisposerFunction\n}\n\nconst _noopDispose = _createNoopDispose()\n\n/** Returns a no-op disposer (shared instance, no allocation per call). */\nexport const noopDisposer: () => DisposerFunction = () => _noopDispose\n\n/**\n * Executes a function after a specified timeout and returns a disposer function\n * that can be used to cancel the timeout.\n *\n * @param fn - The function to execute after the timeout.\n * @param timeout - The timeout duration in milliseconds (default: 0).\n * @returns A disposer function that can be used to cancel the timeout.\n */\nexport function useTimeout(fn: TimerExecFunction, timeout = 0): DisposerFunction {\n let timeoutHandle: any = setTimeout(fn, timeout)\n const dispose = () => {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n timeoutHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/**\n * Executes a function repeatedly at a specified interval and returns a disposer function\n * that can be used to stop the execution.\n *\n * @param fn - The function to be executed at the specified interval.\n * @param interval - The interval (in milliseconds) at which the function should be executed.\n * @returns A disposer function that can be used to stop the execution of the function.\n */\nexport function useInterval(fn: TimerExecFunction, interval: number): DisposerFunction {\n let intervalHandle: any = setInterval(fn, interval)\n const dispose = () => {\n if (intervalHandle) {\n clearInterval(intervalHandle)\n intervalHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/** The interval starts only, when the function is finished. */\nexport function useIntervalPause(fn: TimerExecFunction, interval: number, immediately = false): DisposerFunction {\n let intervalHandle: any\n let stop = false\n\n async function loop(exec = false) {\n if (exec)\n await promisify(fn())\n if (!stop)\n intervalHandle = setTimeout(loop, interval, true)\n }\n\n void loop(immediately)\n\n const dispose = () => {\n if (intervalHandle) {\n stop = true\n clearTimeout(intervalHandle) // uses setTimeout internally, so clearTimeout is correct\n intervalHandle = undefined\n }\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\nexport function useEventListener(\n emitter: any,\n eventName: string,\n fn: (ev?: any) => void,\n ...args: any[]\n): DisposerFunction {\n if (emitter == null)\n return noopDisposer()\n if (emitter.on)\n emitter.on(eventName, fn, ...args)\n else if (emitter.addEventListener)\n emitter.addEventListener(eventName, fn, ...args)\n const dispose = () => {\n if (emitter.off)\n emitter.off(eventName, fn, ...args)\n else if (emitter.removeEventListener)\n emitter.removeEventListener(eventName, fn, ...args)\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\nexport function useEventListenerOnce(\n emitter: any,\n eventName: string,\n fn: (ev?: any) => void,\n ...args: any[]\n): DisposerFunction {\n if (emitter == null)\n return noopDisposer()\n if (emitter.once)\n emitter.once(eventName, fn, ...args)\n else if (emitter.on)\n emitter.on(eventName, fn, ...args)\n else if (emitter.addEventListener)\n emitter.addEventListener(eventName, fn, ...args)\n const dispose = () => {\n if (emitter.off)\n emitter.off(eventName, fn, ...args)\n else if (emitter.removeEventListener)\n emitter.removeEventListener(eventName, fn, ...args)\n }\n dispose[Symbol.dispose] = dispose\n return dispose\n}\n\n/** Like useDispose but with shorthands for emitter and timers */\nexport function useDisposeWithUtils(config?: string | UseDisposeConfig | LoggerInterface) {\n const dispose = useDispose(config)\n return Object.assign(dispose, {\n timeout: (fn: TimerExecFunction, timeout = 0) => dispose.add(useTimeout(fn, timeout))!,\n interval: (fn: TimerExecFunction, interval = 0) => dispose.add(useInterval(fn, interval))!,\n intervalPause: (fn: TimerExecFunction, interval = 0) => dispose.add(useIntervalPause(fn, interval))!,\n on: (emitter: any, eventName: string, fn: (ev?: any) => void, ...args: any[]) => dispose.add(useEventListener(emitter, eventName, fn, ...args))!,\n once: (emitter: any, eventName: string, fn: (ev?: any) => void, ...args: any[]) => dispose.add(useEventListenerOnce(emitter, eventName, fn, ...args))!,\n })\n}\n\nexport type UseDisposeWithUtils = ReturnType<typeof useDisposeWithUtils>\n"],"mappings":";;;;AAQA,SAAS,qBAAqB;CAC5B,MAAM,WAAW;AACjB,IAAG,OAAO,WAAW;AACrB,QAAO;;AAGT,MAAM,eAAe,oBAAoB;;AAGzC,MAAa,qBAA6C;;;;;;;;;AAU1D,SAAgB,WAAW,IAAuB,UAAU,GAAqB;CAC/E,IAAI,gBAAqB,WAAW,IAAI,QAAQ;CAChD,MAAM,gBAAgB;AACpB,MAAI,eAAe;AACjB,gBAAa,cAAc;AAC3B,mBAAgB;;;AAGpB,SAAQ,OAAO,WAAW;AAC1B,QAAO;;;;;;;;;;AAWT,SAAgB,YAAY,IAAuB,UAAoC;CACrF,IAAI,iBAAsB,YAAY,IAAI,SAAS;CACnD,MAAM,gBAAgB;AACpB,MAAI,gBAAgB;AAClB,iBAAc,eAAe;AAC7B,oBAAiB;;;AAGrB,SAAQ,OAAO,WAAW;AAC1B,QAAO;;;AAIT,SAAgB,iBAAiB,IAAuB,UAAkB,cAAc,OAAyB;CAC/G,IAAI;CACJ,IAAI,OAAO;CAEX,eAAe,KAAK,OAAO,OAAO;AAChC,MAAI,KACF,OAAM,UAAU,IAAI,CAAC;AACvB,MAAI,CAAC,KACH,kBAAiB,WAAW,MAAM,UAAU,KAAK;;AAGrD,CAAK,KAAK,YAAY;CAEtB,MAAM,gBAAgB;AACpB,MAAI,gBAAgB;AAClB,UAAO;AACP,gBAAa,eAAe;AAC5B,oBAAiB;;;AAGrB,SAAQ,OAAO,WAAW;AAC1B,QAAO;;AAGT,SAAgB,iBACd,SACA,WACA,IACA,GAAG,MACe;AAClB,KAAI,WAAW,KACb,QAAO,cAAc;AACvB,KAAI,QAAQ,GACV,SAAQ,GAAG,WAAW,IAAI,GAAG,KAAK;UAC3B,QAAQ,iBACf,SAAQ,iBAAiB,WAAW,IAAI,GAAG,KAAK;CAClD,MAAM,gBAAgB;AACpB,MAAI,QAAQ,IACV,SAAQ,IAAI,WAAW,IAAI,GAAG,KAAK;WAC5B,QAAQ,oBACf,SAAQ,oBAAoB,WAAW,IAAI,GAAG,KAAK;;AAEvD,SAAQ,OAAO,WAAW;AAC1B,QAAO;;AAGT,SAAgB,qBACd,SACA,WACA,IACA,GAAG,MACe;AAClB,KAAI,WAAW,KACb,QAAO,cAAc;AACvB,KAAI,QAAQ,KACV,SAAQ,KAAK,WAAW,IAAI,GAAG,KAAK;UAC7B,QAAQ,GACf,SAAQ,GAAG,WAAW,IAAI,GAAG,KAAK;UAC3B,QAAQ,iBACf,SAAQ,iBAAiB,WAAW,IAAI,GAAG,KAAK;CAClD,MAAM,gBAAgB;AACpB,MAAI,QAAQ,IACV,SAAQ,IAAI,WAAW,IAAI,GAAG,KAAK;WAC5B,QAAQ,oBACf,SAAQ,oBAAoB,WAAW,IAAI,GAAG,KAAK;;AAEvD,SAAQ,OAAO,WAAW;AAC1B,QAAO;;;AAIT,SAAgB,oBAAoB,QAAsD;CACxF,MAAM,UAAU,WAAW,OAAO;AAClC,QAAO,OAAO,OAAO,SAAS;EAC5B,UAAU,IAAuB,UAAU,MAAM,QAAQ,IAAI,WAAW,IAAI,QAAQ,CAAC;EACrF,WAAW,IAAuB,WAAW,MAAM,QAAQ,IAAI,YAAY,IAAI,SAAS,CAAC;EACzF,gBAAgB,IAAuB,WAAW,MAAM,QAAQ,IAAI,iBAAiB,IAAI,SAAS,CAAC;EACnG,KAAK,SAAc,WAAmB,IAAwB,GAAG,SAAgB,QAAQ,IAAI,iBAAiB,SAAS,WAAW,IAAI,GAAG,KAAK,CAAC;EAC/I,OAAO,SAAc,WAAmB,IAAwB,GAAG,SAAgB,QAAQ,IAAI,qBAAqB,SAAS,WAAW,IAAI,GAAG,KAAK,CAAC;EACtJ,CAAC"}
@@ -1 +1,24 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./promise.cjs`),t=require(`./mutex.cjs`),n=require(`./progress.cjs`),r=require(`./pool.cjs`),i=require(`./queue.cjs`),a=require(`./throttle-debounce.cjs`);exports.Progress=n.Progress,exports.SerialQueue=i.SerialQueue,exports.createPromise=e.createPromise,exports.debounce=a.debounce,exports.immediate=e.immediate,exports.isPromise=e.isPromise,exports.isTimeout=e.isTimeout,exports.promisify=e.promisify,exports.sleep=e.sleep,exports.throttle=a.throttle,exports.timeout=e.timeout,exports.tryTimeout=e.tryTimeout,exports.useAsyncMutex=t.useAsyncMutex,exports.useMutex=t.useMutex,exports.usePool=r.usePool,exports.waitOn=e.waitOn;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_common_exec_promise = require('./promise.cjs');
3
+ const require_common_exec_mutex = require('./mutex.cjs');
4
+ const require_common_exec_progress = require('./progress.cjs');
5
+ const require_common_exec_pool = require('./pool.cjs');
6
+ const require_common_exec_queue = require('./queue.cjs');
7
+ const require_common_exec_throttle_debounce = require('./throttle-debounce.cjs');
8
+
9
+ exports.Progress = require_common_exec_progress.Progress;
10
+ exports.SerialQueue = require_common_exec_queue.SerialQueue;
11
+ exports.createPromise = require_common_exec_promise.createPromise;
12
+ exports.debounce = require_common_exec_throttle_debounce.debounce;
13
+ exports.immediate = require_common_exec_promise.immediate;
14
+ exports.isPromise = require_common_exec_promise.isPromise;
15
+ exports.isTimeout = require_common_exec_promise.isTimeout;
16
+ exports.promisify = require_common_exec_promise.promisify;
17
+ exports.sleep = require_common_exec_promise.sleep;
18
+ exports.throttle = require_common_exec_throttle_debounce.throttle;
19
+ exports.timeout = require_common_exec_promise.timeout;
20
+ exports.tryTimeout = require_common_exec_promise.tryTimeout;
21
+ exports.useAsyncMutex = require_common_exec_mutex.useAsyncMutex;
22
+ exports.useMutex = require_common_exec_mutex.useMutex;
23
+ exports.usePool = require_common_exec_pool.usePool;
24
+ exports.waitOn = require_common_exec_promise.waitOn;
@@ -1,5 +1,5 @@
1
1
  import { i as useMutex, n as Mutex, r as useAsyncMutex, t as AsyncMutex } from "../../mutex-Bx9wpyQU.cjs";
2
- import { a as PoolTask, c as PoolTaskIdConflictResolution, d as Progress, f as ProgressOptions, i as PoolConfig, l as PoolTaskState, n as TaskEvents, o as PoolTaskEvents, r as TaskFn, s as PoolTaskFn, t as SerialQueue, u as usePool } from "../../index-DHXVOH8h.cjs";
2
+ import { a as PoolTask, c as PoolTaskIdConflictResolution, d as Progress, f as ProgressOptions, i as PoolConfig, l as PoolTaskState, n as TaskEvents, o as PoolTaskEvents, r as TaskFn, s as PoolTaskFn, t as SerialQueue, u as usePool } from "../../index-CFkMqHvX.cjs";
3
3
  import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-DGgiRckN.cjs";
4
4
  import { n as throttle, t as debounce } from "../../throttle-debounce-Psb0ay1r.cjs";
5
5
  export { AsyncMutex, AsyncReturnType, Mutex, PoolConfig, PoolTask, PoolTaskEvents, PoolTaskFn, PoolTaskIdConflictResolution, PoolTaskState, Progress, ProgressOptions, SerialQueue, TaskEvents, TaskFn, createPromise, debounce, immediate, isPromise, isTimeout, promisify, sleep, throttle, timeout, tryTimeout, useAsyncMutex, useMutex, usePool, waitOn };
@@ -1,5 +1,5 @@
1
1
  import { i as useMutex, n as Mutex, r as useAsyncMutex, t as AsyncMutex } from "../../mutex-D_myf4dr.mjs";
2
- import { a as PoolTask, c as PoolTaskIdConflictResolution, d as Progress, f as ProgressOptions, i as PoolConfig, l as PoolTaskState, n as TaskEvents, o as PoolTaskEvents, r as TaskFn, s as PoolTaskFn, t as SerialQueue, u as usePool } from "../../index-DMaPyx9O.mjs";
2
+ import { a as PoolTask, c as PoolTaskIdConflictResolution, d as Progress, f as ProgressOptions, i as PoolConfig, l as PoolTaskState, n as TaskEvents, o as PoolTaskEvents, r as TaskFn, s as PoolTaskFn, t as SerialQueue, u as usePool } from "../../index-C_3Y_s6f.mjs";
3
3
  import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-MH3xAy4S.mjs";
4
4
  import { n as throttle, t as debounce } from "../../throttle-debounce-BLFxAZ8W.mjs";
5
5
  export { AsyncMutex, AsyncReturnType, Mutex, PoolConfig, PoolTask, PoolTaskEvents, PoolTaskFn, PoolTaskIdConflictResolution, PoolTaskState, Progress, ProgressOptions, SerialQueue, TaskEvents, TaskFn, createPromise, debounce, immediate, isPromise, isTimeout, promisify, sleep, throttle, timeout, tryTimeout, useAsyncMutex, useMutex, usePool, waitOn };
@@ -1 +1,8 @@
1
- import{createPromise as e,immediate as t,isPromise as n,isTimeout as r,promisify as i,sleep as a,timeout as o,tryTimeout as s,waitOn as c}from"./promise.mjs";import{useAsyncMutex as l,useMutex as u}from"./mutex.mjs";import{Progress as d}from"./progress.mjs";import{usePool as f}from"./pool.mjs";import{SerialQueue as p}from"./queue.mjs";import{debounce as m,throttle as h}from"./throttle-debounce.mjs";export{d as Progress,p as SerialQueue,e as createPromise,m as debounce,t as immediate,n as isPromise,r as isTimeout,i as promisify,a as sleep,h as throttle,o as timeout,s as tryTimeout,l as useAsyncMutex,u as useMutex,f as usePool,c as waitOn};
1
+ import { createPromise, immediate, isPromise, isTimeout, promisify, sleep, timeout, tryTimeout, waitOn } from "./promise.mjs";
2
+ import { useAsyncMutex, useMutex } from "./mutex.mjs";
3
+ import { Progress } from "./progress.mjs";
4
+ import { usePool } from "./pool.mjs";
5
+ import { SerialQueue } from "./queue.mjs";
6
+ import { debounce, throttle } from "./throttle-debounce.mjs";
7
+
8
+ export { Progress, SerialQueue, createPromise, debounce, immediate, isPromise, isTimeout, promisify, sleep, throttle, timeout, tryTimeout, useAsyncMutex, useMutex, usePool, waitOn };
@@ -1,2 +1,45 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./promise.cjs`);function t(){let e=!0;return(t,n)=>{let r=!1;if(e){e=!1;try{t(),r=!0}finally{e=!0}}else n!==void 0&&n();return r}}function n(){let t=!0;return async(n,r)=>{let i=!1;if(t){t=!1;try{let t=n();e.isPromise(t)&&await t,i=!0}finally{t=!0}}else if(r!==void 0){let t=r();e.isPromise(t)&&await t}return i}}exports.useAsyncMutex=n,exports.useMutex=t;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_common_exec_promise = require('./promise.cjs');
3
+
4
+ //#region src/common/exec/mutex.ts
5
+ function useMutex() {
6
+ let token = true;
7
+ return (fn, elseFn) => {
8
+ let executed = false;
9
+ if (token) {
10
+ token = false;
11
+ try {
12
+ fn();
13
+ executed = true;
14
+ } finally {
15
+ token = true;
16
+ }
17
+ } else if (elseFn !== void 0) elseFn();
18
+ return executed;
19
+ };
20
+ }
21
+ function useAsyncMutex() {
22
+ let token = true;
23
+ return async (fn, elseFn) => {
24
+ let executed = false;
25
+ if (token) {
26
+ token = false;
27
+ try {
28
+ const result = fn();
29
+ if (require_common_exec_promise.isPromise(result)) await result;
30
+ executed = true;
31
+ } finally {
32
+ token = true;
33
+ }
34
+ } else if (elseFn !== void 0) {
35
+ const result = elseFn();
36
+ if (require_common_exec_promise.isPromise(result)) await result;
37
+ }
38
+ return executed;
39
+ };
40
+ }
41
+
42
+ //#endregion
43
+ exports.useAsyncMutex = useAsyncMutex;
44
+ exports.useMutex = useMutex;
2
45
  //# sourceMappingURL=mutex.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutex.cjs","names":["isPromise"],"sources":["../../../src/common/exec/mutex.ts"],"sourcesContent":["import { isPromise } from './promise'\n\nexport type Mutex = (fn: (() => void), elseFn?: (() => void)) => boolean\nexport type AsyncMutex = (fn: (() => void), elseFn?: (() => void)) => Promise<boolean>\n\nexport function useMutex(): Mutex {\n let token = true\n return (fn, elseFn) => {\n let executed = false\n if (token) {\n token = false\n try {\n fn()\n executed = true\n }\n finally {\n token = true\n }\n }\n else if (elseFn !== undefined) {\n elseFn()\n }\n return executed\n }\n}\n\nexport function useAsyncMutex(): AsyncMutex {\n let token = true\n return async (fn, elseFn) => {\n let executed = false\n if (token) {\n token = false\n try {\n const result = fn()\n if (isPromise(result))\n await result\n executed = true\n }\n finally {\n token = true\n }\n }\n else if (elseFn !== undefined) {\n const result = elseFn()\n if (isPromise(result))\n await result\n }\n return executed\n }\n}\n\n// export type Lock = ({lock: () => Promise<void>, unlock: () => void})\n\n// export function createLock() {\n// let lockCtr = []\n// return {\n// lock() {\n\n// },\n// unlock() {\n\n// }\n// }\n// }\n"],"mappings":"oGAKA,SAAgB,GAAkB,CAChC,IAAI,EAAQ,GACZ,OAAQ,EAAI,IAAW,CACrB,IAAI,EAAW,GACf,GAAI,EAAO,CACT,EAAQ,GACR,GAAI,CACF,GAAI,CACJ,EAAW,UAEL,CACN,EAAQ,SAGH,IAAW,IAAA,IAClB,GAAQ,CAEV,OAAO,GAIX,SAAgB,GAA4B,CAC1C,IAAI,EAAQ,GACZ,OAAO,MAAO,EAAI,IAAW,CAC3B,IAAI,EAAW,GACf,GAAI,EAAO,CACT,EAAQ,GACR,GAAI,CACF,IAAM,EAAS,GAAI,CACfA,EAAAA,UAAU,EAAO,EACnB,MAAM,EACR,EAAW,UAEL,CACN,EAAQ,YAGH,IAAW,IAAA,GAAW,CAC7B,IAAM,EAAS,GAAQ,CACnBA,EAAAA,UAAU,EAAO,EACnB,MAAM,EAEV,OAAO"}
1
+ {"version":3,"file":"mutex.cjs","names":["isPromise"],"sources":["../../../src/common/exec/mutex.ts"],"sourcesContent":["import { isPromise } from './promise'\n\nexport type Mutex = (fn: (() => void), elseFn?: (() => void)) => boolean\nexport type AsyncMutex = (fn: (() => void), elseFn?: (() => void)) => Promise<boolean>\n\nexport function useMutex(): Mutex {\n let token = true\n return (fn, elseFn) => {\n let executed = false\n if (token) {\n token = false\n try {\n fn()\n executed = true\n }\n finally {\n token = true\n }\n }\n else if (elseFn !== undefined) {\n elseFn()\n }\n return executed\n }\n}\n\nexport function useAsyncMutex(): AsyncMutex {\n let token = true\n return async (fn, elseFn) => {\n let executed = false\n if (token) {\n token = false\n try {\n const result = fn()\n if (isPromise(result))\n await result\n executed = true\n }\n finally {\n token = true\n }\n }\n else if (elseFn !== undefined) {\n const result = elseFn()\n if (isPromise(result))\n await result\n }\n return executed\n }\n}\n\n// export type Lock = ({lock: () => Promise<void>, unlock: () => void})\n\n// export function createLock() {\n// let lockCtr = []\n// return {\n// lock() {\n\n// },\n// unlock() {\n\n// }\n// }\n// }\n"],"mappings":";;;;AAKA,SAAgB,WAAkB;CAChC,IAAI,QAAQ;AACZ,SAAQ,IAAI,WAAW;EACrB,IAAI,WAAW;AACf,MAAI,OAAO;AACT,WAAQ;AACR,OAAI;AACF,QAAI;AACJ,eAAW;aAEL;AACN,YAAQ;;aAGH,WAAW,OAClB,SAAQ;AAEV,SAAO;;;AAIX,SAAgB,gBAA4B;CAC1C,IAAI,QAAQ;AACZ,QAAO,OAAO,IAAI,WAAW;EAC3B,IAAI,WAAW;AACf,MAAI,OAAO;AACT,WAAQ;AACR,OAAI;IACF,MAAM,SAAS,IAAI;AACnB,QAAIA,sCAAU,OAAO,CACnB,OAAM;AACR,eAAW;aAEL;AACN,YAAQ;;aAGH,WAAW,QAAW;GAC7B,MAAM,SAAS,QAAQ;AACvB,OAAIA,sCAAU,OAAO,CACnB,OAAM;;AAEV,SAAO"}
@@ -1,2 +1,43 @@
1
- import{isPromise as e}from"./promise.mjs";function t(){let e=!0;return(t,n)=>{let r=!1;if(e){e=!1;try{t(),r=!0}finally{e=!0}}else n!==void 0&&n();return r}}function n(){let t=!0;return async(n,r)=>{let i=!1;if(t){t=!1;try{let t=n();e(t)&&await t,i=!0}finally{t=!0}}else if(r!==void 0){let t=r();e(t)&&await t}return i}}export{n as useAsyncMutex,t as useMutex};
1
+ import { isPromise } from "./promise.mjs";
2
+
3
+ //#region src/common/exec/mutex.ts
4
+ function useMutex() {
5
+ let token = true;
6
+ return (fn, elseFn) => {
7
+ let executed = false;
8
+ if (token) {
9
+ token = false;
10
+ try {
11
+ fn();
12
+ executed = true;
13
+ } finally {
14
+ token = true;
15
+ }
16
+ } else if (elseFn !== void 0) elseFn();
17
+ return executed;
18
+ };
19
+ }
20
+ function useAsyncMutex() {
21
+ let token = true;
22
+ return async (fn, elseFn) => {
23
+ let executed = false;
24
+ if (token) {
25
+ token = false;
26
+ try {
27
+ const result = fn();
28
+ if (isPromise(result)) await result;
29
+ executed = true;
30
+ } finally {
31
+ token = true;
32
+ }
33
+ } else if (elseFn !== void 0) {
34
+ const result = elseFn();
35
+ if (isPromise(result)) await result;
36
+ }
37
+ return executed;
38
+ };
39
+ }
40
+
41
+ //#endregion
42
+ export { useAsyncMutex, useMutex };
2
43
  //# sourceMappingURL=mutex.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutex.mjs","names":[],"sources":["../../../src/common/exec/mutex.ts"],"sourcesContent":["import { isPromise } from './promise'\n\nexport type Mutex = (fn: (() => void), elseFn?: (() => void)) => boolean\nexport type AsyncMutex = (fn: (() => void), elseFn?: (() => void)) => Promise<boolean>\n\nexport function useMutex(): Mutex {\n let token = true\n return (fn, elseFn) => {\n let executed = false\n if (token) {\n token = false\n try {\n fn()\n executed = true\n }\n finally {\n token = true\n }\n }\n else if (elseFn !== undefined) {\n elseFn()\n }\n return executed\n }\n}\n\nexport function useAsyncMutex(): AsyncMutex {\n let token = true\n return async (fn, elseFn) => {\n let executed = false\n if (token) {\n token = false\n try {\n const result = fn()\n if (isPromise(result))\n await result\n executed = true\n }\n finally {\n token = true\n }\n }\n else if (elseFn !== undefined) {\n const result = elseFn()\n if (isPromise(result))\n await result\n }\n return executed\n }\n}\n\n// export type Lock = ({lock: () => Promise<void>, unlock: () => void})\n\n// export function createLock() {\n// let lockCtr = []\n// return {\n// lock() {\n\n// },\n// unlock() {\n\n// }\n// }\n// }\n"],"mappings":"0CAKA,SAAgB,GAAkB,CAChC,IAAI,EAAQ,GACZ,OAAQ,EAAI,IAAW,CACrB,IAAI,EAAW,GACf,GAAI,EAAO,CACT,EAAQ,GACR,GAAI,CACF,GAAI,CACJ,EAAW,UAEL,CACN,EAAQ,SAGH,IAAW,IAAA,IAClB,GAAQ,CAEV,OAAO,GAIX,SAAgB,GAA4B,CAC1C,IAAI,EAAQ,GACZ,OAAO,MAAO,EAAI,IAAW,CAC3B,IAAI,EAAW,GACf,GAAI,EAAO,CACT,EAAQ,GACR,GAAI,CACF,IAAM,EAAS,GAAI,CACf,EAAU,EAAO,EACnB,MAAM,EACR,EAAW,UAEL,CACN,EAAQ,YAGH,IAAW,IAAA,GAAW,CAC7B,IAAM,EAAS,GAAQ,CACnB,EAAU,EAAO,EACnB,MAAM,EAEV,OAAO"}
1
+ {"version":3,"file":"mutex.mjs","names":[],"sources":["../../../src/common/exec/mutex.ts"],"sourcesContent":["import { isPromise } from './promise'\n\nexport type Mutex = (fn: (() => void), elseFn?: (() => void)) => boolean\nexport type AsyncMutex = (fn: (() => void), elseFn?: (() => void)) => Promise<boolean>\n\nexport function useMutex(): Mutex {\n let token = true\n return (fn, elseFn) => {\n let executed = false\n if (token) {\n token = false\n try {\n fn()\n executed = true\n }\n finally {\n token = true\n }\n }\n else if (elseFn !== undefined) {\n elseFn()\n }\n return executed\n }\n}\n\nexport function useAsyncMutex(): AsyncMutex {\n let token = true\n return async (fn, elseFn) => {\n let executed = false\n if (token) {\n token = false\n try {\n const result = fn()\n if (isPromise(result))\n await result\n executed = true\n }\n finally {\n token = true\n }\n }\n else if (elseFn !== undefined) {\n const result = elseFn()\n if (isPromise(result))\n await result\n }\n return executed\n }\n}\n\n// export type Lock = ({lock: () => Promise<void>, unlock: () => void})\n\n// export function createLock() {\n// let lockCtr = []\n// return {\n// lock() {\n\n// },\n// unlock() {\n\n// }\n// }\n// }\n"],"mappings":";;;AAKA,SAAgB,WAAkB;CAChC,IAAI,QAAQ;AACZ,SAAQ,IAAI,WAAW;EACrB,IAAI,WAAW;AACf,MAAI,OAAO;AACT,WAAQ;AACR,OAAI;AACF,QAAI;AACJ,eAAW;aAEL;AACN,YAAQ;;aAGH,WAAW,OAClB,SAAQ;AAEV,SAAO;;;AAIX,SAAgB,gBAA4B;CAC1C,IAAI,QAAQ;AACZ,QAAO,OAAO,IAAI,WAAW;EAC3B,IAAI,WAAW;AACf,MAAI,OAAO;AACT,WAAQ;AACR,OAAI;IACF,MAAM,SAAS,IAAI;AACnB,QAAI,UAAU,OAAO,CACnB,OAAM;AACR,eAAW;aAEL;AACN,YAAQ;;aAGH,WAAW,QAAW;GAC7B,MAAM,SAAS,QAAQ;AACvB,OAAI,UAAU,OAAO,CACnB,OAAM;;AAEV,SAAO"}