@adviser/cement 0.5.0 → 0.5.2

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 (1735) hide show
  1. package/README.md +168 -23
  2. package/cjs/add-cement-do-not-export.cjs +26 -0
  3. package/cjs/add-cement-do-not-export.cjs.map +1 -0
  4. package/cjs/add-cement-do-not-export.d.ts +3 -0
  5. package/cjs/add-cement-do-not-export.d.ts.map +1 -0
  6. package/cjs/app-context.cjs.map +1 -1
  7. package/cjs/app-context.d.ts.map +1 -1
  8. package/cjs/base-basic-sys-abstraction.test.cjs +21 -8
  9. package/cjs/base-basic-sys-abstraction.test.cjs.map +1 -1
  10. package/cjs/base-sys-abstraction.cjs +9 -8
  11. package/cjs/base-sys-abstraction.cjs.map +1 -1
  12. package/cjs/base-sys-abstraction.d.ts +4 -1
  13. package/cjs/base-sys-abstraction.d.ts.map +1 -1
  14. package/cjs/bin2text.cjs.map +1 -1
  15. package/cjs/bin2text.d.ts.map +1 -1
  16. package/cjs/cf-env/cf-basic-sys-abstraction.cjs +74 -0
  17. package/cjs/cf-env/cf-basic-sys-abstraction.cjs.map +1 -0
  18. package/cjs/cf-env/cf-basic-sys-abstraction.d.ts +15 -0
  19. package/cjs/cf-env/cf-basic-sys-abstraction.d.ts.map +1 -0
  20. package/cjs/cf-env/cf-env-actions.cjs +59 -0
  21. package/cjs/cf-env/cf-env-actions.cjs.map +1 -0
  22. package/cjs/cf-env/cf-env-actions.d.ts +17 -0
  23. package/cjs/cf-env/cf-env-actions.d.ts.map +1 -0
  24. package/cjs/cf-env/index.cjs.map +1 -0
  25. package/cjs/cf-env/index.d.ts.map +1 -0
  26. package/cjs/cli/generate-version-ts-cmd.cjs +79 -0
  27. package/cjs/cli/generate-version-ts-cmd.cjs.map +1 -0
  28. package/cjs/cli/generate-version-ts-cmd.d.ts +3 -0
  29. package/cjs/cli/generate-version-ts-cmd.d.ts.map +1 -0
  30. package/cjs/cli/main.cjs +8 -3
  31. package/cjs/cli/main.cjs.map +1 -1
  32. package/cjs/cli/patch-version-cmd.cjs +3 -226
  33. package/cjs/cli/patch-version-cmd.cjs.map +1 -1
  34. package/cjs/cli/patch-version-cmd.d.ts +0 -4
  35. package/cjs/cli/patch-version-cmd.d.ts.map +1 -1
  36. package/cjs/cli/prepare-pubdir-cmd.cjs +150 -0
  37. package/cjs/cli/prepare-pubdir-cmd.cjs.map +1 -0
  38. package/cjs/cli/prepare-pubdir-cmd.d.ts +4 -0
  39. package/cjs/cli/prepare-pubdir-cmd.d.ts.map +1 -0
  40. package/cjs/cli/publish-tags-cmd.cjs +97 -0
  41. package/cjs/cli/publish-tags-cmd.cjs.map +1 -0
  42. package/cjs/cli/publish-tags-cmd.d.ts +3 -0
  43. package/cjs/cli/publish-tags-cmd.d.ts.map +1 -0
  44. package/cjs/cli/setup-deno-json-cmd.cjs +77 -0
  45. package/cjs/cli/setup-deno-json-cmd.cjs.map +1 -0
  46. package/cjs/cli/setup-deno-json-cmd.d.ts +3 -0
  47. package/cjs/cli/setup-deno-json-cmd.d.ts.map +1 -0
  48. package/cjs/cli/utils.cjs +93 -0
  49. package/cjs/cli/utils.cjs.map +1 -0
  50. package/cjs/cli/utils.d.ts +6 -0
  51. package/cjs/cli/utils.d.ts.map +1 -0
  52. package/cjs/coerce-binary.cjs +10 -2
  53. package/cjs/coerce-binary.cjs.map +1 -1
  54. package/cjs/coerce-binary.d.ts +2 -0
  55. package/cjs/coerce-binary.d.ts.map +1 -1
  56. package/cjs/crypto.cjs.map +1 -1
  57. package/cjs/crypto.d.ts.map +1 -1
  58. package/cjs/deno-env/deno-basic-sys-abstraction.cjs +40 -0
  59. package/cjs/deno-env/deno-basic-sys-abstraction.cjs.map +1 -0
  60. package/cjs/deno-env/deno-basic-sys-abstraction.d.ts +13 -0
  61. package/cjs/deno-env/deno-basic-sys-abstraction.d.ts.map +1 -0
  62. package/cjs/deno-env/deno-env-actions.cjs +44 -0
  63. package/cjs/deno-env/deno-env-actions.cjs.map +1 -0
  64. package/cjs/deno-env/deno-env-actions.d.ts.map +1 -0
  65. package/cjs/deno-env/index.cjs +19 -0
  66. package/cjs/deno-env/index.cjs.map +1 -0
  67. package/cjs/deno-env/index.d.ts +3 -0
  68. package/cjs/deno-env/index.d.ts.map +1 -0
  69. package/cjs/deno-fs/deno-basic-sys-abstraction.cjs +37 -0
  70. package/cjs/deno-fs/deno-basic-sys-abstraction.cjs.map +1 -0
  71. package/cjs/deno-fs/deno-basic-sys-abstraction.d.ts +11 -0
  72. package/cjs/deno-fs/deno-basic-sys-abstraction.d.ts.map +1 -0
  73. package/cjs/deno-fs/deno-env-actions.cjs +43 -0
  74. package/cjs/deno-fs/deno-env-actions.cjs.map +1 -0
  75. package/cjs/deno-fs/deno-env-actions.d.ts +23 -0
  76. package/cjs/deno-fs/deno-env-actions.d.ts.map +1 -0
  77. package/cjs/deno-fs/deno-file-service.cjs +103 -0
  78. package/cjs/deno-fs/deno-file-service.cjs.map +1 -0
  79. package/cjs/deno-fs/deno-file-service.d.ts +16 -0
  80. package/cjs/deno-fs/deno-file-service.d.ts.map +1 -0
  81. package/cjs/deno-fs/deno-sys-abstraction.cjs +103 -0
  82. package/cjs/deno-fs/deno-sys-abstraction.cjs.map +1 -0
  83. package/cjs/deno-fs/deno-sys-abstraction.d.ts +18 -0
  84. package/cjs/deno-fs/deno-sys-abstraction.d.ts.map +1 -0
  85. package/cjs/deno-fs/index.cjs +21 -0
  86. package/cjs/deno-fs/index.cjs.map +1 -0
  87. package/cjs/deno-fs/index.d.ts +5 -0
  88. package/cjs/deno-fs/index.d.ts.map +1 -0
  89. package/cjs/future.cjs +5 -1
  90. package/cjs/future.cjs.map +1 -1
  91. package/cjs/future.d.ts +4 -2
  92. package/cjs/future.d.ts.map +1 -1
  93. package/cjs/future.test.cjs +9 -0
  94. package/cjs/future.test.cjs.map +1 -1
  95. package/cjs/http_header.cjs +72 -45
  96. package/cjs/http_header.cjs.map +1 -1
  97. package/cjs/http_header.d.ts +10 -4
  98. package/cjs/http_header.d.ts.map +1 -1
  99. package/cjs/http_header.test.cjs +44 -0
  100. package/cjs/http_header.test.cjs.map +1 -1
  101. package/cjs/import-meta-env.commonjs.cjs +22 -2
  102. package/cjs/import-meta-env.commonjs.cjs.map +1 -1
  103. package/cjs/import-meta-env.commonjs.d.ts +10 -2
  104. package/cjs/import-meta-env.commonjs.d.ts.map +1 -1
  105. package/cjs/index.cjs +19 -24
  106. package/cjs/index.cjs.map +1 -1
  107. package/cjs/index.d.ts +19 -1
  108. package/cjs/index.d.ts.map +1 -1
  109. package/cjs/is-json.cjs.map +1 -1
  110. package/cjs/is-json.d.ts.map +1 -1
  111. package/cjs/is-promise.cjs.map +1 -1
  112. package/cjs/is-promise.d.ts +1 -1
  113. package/cjs/is-promise.d.ts.map +1 -1
  114. package/cjs/keyed-ng.cjs +94 -0
  115. package/cjs/keyed-ng.cjs.map +1 -0
  116. package/cjs/keyed-ng.d.ts +52 -0
  117. package/cjs/keyed-ng.d.ts.map +1 -0
  118. package/cjs/keyed-ng.test.cjs +151 -0
  119. package/cjs/keyed-ng.test.cjs.map +1 -0
  120. package/cjs/keyed-ng.test.d.ts +2 -0
  121. package/cjs/keyed-ng.test.d.ts.map +1 -0
  122. package/cjs/log-level-impl.cjs +4 -4
  123. package/cjs/log-level-impl.cjs.map +1 -1
  124. package/cjs/log-level-impl.d.ts +2 -1
  125. package/cjs/log-level-impl.d.ts.map +1 -1
  126. package/cjs/logger-impl.cjs +12 -45
  127. package/cjs/logger-impl.cjs.map +1 -1
  128. package/cjs/logger-impl.d.ts +3 -4
  129. package/cjs/logger-impl.d.ts.map +1 -1
  130. package/cjs/logger.cjs +26 -42
  131. package/cjs/logger.cjs.map +1 -1
  132. package/cjs/logger.d.ts +1 -16
  133. package/cjs/logger.d.ts.map +1 -1
  134. package/cjs/logger.test.cjs +11 -7
  135. package/cjs/logger.test.cjs.map +1 -1
  136. package/cjs/lru-map-set.cjs +2 -1
  137. package/cjs/lru-map-set.cjs.map +1 -1
  138. package/cjs/lru-map-set.d.ts +4 -1
  139. package/cjs/lru-map-set.d.ts.map +1 -1
  140. package/cjs/mutable-url.cjs +7 -7
  141. package/cjs/mutable-url.cjs.map +1 -1
  142. package/cjs/mutable-url.test.cjs +221 -220
  143. package/cjs/mutable-url.test.cjs.map +1 -1
  144. package/cjs/node-env/index.cjs +19 -0
  145. package/cjs/node-env/index.cjs.map +1 -0
  146. package/cjs/node-env/index.d.ts +3 -0
  147. package/cjs/node-env/index.d.ts.map +1 -0
  148. package/cjs/node-env/node-basic-sys-abstraction.cjs +52 -0
  149. package/cjs/node-env/node-basic-sys-abstraction.cjs.map +1 -0
  150. package/cjs/node-env/node-basic-sys-abstraction.d.ts +26 -0
  151. package/cjs/node-env/node-basic-sys-abstraction.d.ts.map +1 -0
  152. package/cjs/node-env/node-env-actions.cjs +43 -0
  153. package/cjs/node-env/node-env-actions.cjs.map +1 -0
  154. package/cjs/node-env/node-env-actions.d.ts +15 -0
  155. package/cjs/node-env/node-env-actions.d.ts.map +1 -0
  156. package/cjs/node-fs/get-iface-adr.cjs.map +1 -0
  157. package/cjs/node-fs/get-iface-adr.d.ts.map +1 -0
  158. package/cjs/node-fs/index.cjs.map +1 -0
  159. package/cjs/node-fs/index.d.ts.map +1 -0
  160. package/cjs/node-fs/mock-file-service.cjs +35 -0
  161. package/cjs/node-fs/mock-file-service.cjs.map +1 -0
  162. package/cjs/node-fs/mock-file-service.d.ts +11 -0
  163. package/cjs/node-fs/mock-file-service.d.ts.map +1 -0
  164. package/cjs/node-fs/mock-file-service.test.cjs +66 -0
  165. package/cjs/node-fs/mock-file-service.test.cjs.map +1 -0
  166. package/cjs/node-fs/mock-file-service.test.d.ts.map +1 -0
  167. package/cjs/node-fs/node-file-service.cjs +80 -0
  168. package/cjs/node-fs/node-file-service.cjs.map +1 -0
  169. package/cjs/node-fs/node-file-service.d.ts +16 -0
  170. package/cjs/node-fs/node-file-service.d.ts.map +1 -0
  171. package/cjs/node-fs/node-sys-abstraction.cjs +104 -0
  172. package/cjs/node-fs/node-sys-abstraction.cjs.map +1 -0
  173. package/cjs/node-fs/node-sys-abstraction.d.ts +18 -0
  174. package/cjs/node-fs/node-sys-abstraction.d.ts.map +1 -0
  175. package/cjs/node-fs/node-sys-abstraction.test.cjs.map +1 -0
  176. package/cjs/node-fs/node-sys-abstraction.test.d.ts.map +1 -0
  177. package/cjs/on-func.cjs +58 -0
  178. package/cjs/on-func.cjs.map +1 -0
  179. package/cjs/on-func.d.ts +15 -0
  180. package/cjs/on-func.d.ts.map +1 -0
  181. package/cjs/on-func.test.cjs +97 -0
  182. package/cjs/on-func.test.cjs.map +1 -0
  183. package/cjs/on-func.test.d.ts +27 -0
  184. package/cjs/on-func.test.d.ts.map +1 -0
  185. package/cjs/option.cjs.map +1 -1
  186. package/cjs/option.d.ts.map +1 -1
  187. package/cjs/path-ops.test.cjs.map +1 -1
  188. package/cjs/poller.cjs +150 -0
  189. package/cjs/poller.cjs.map +1 -0
  190. package/cjs/poller.d.ts +51 -0
  191. package/cjs/poller.d.ts.map +1 -0
  192. package/cjs/poller.test.cjs +164 -0
  193. package/cjs/poller.test.cjs.map +1 -0
  194. package/cjs/poller.test.d.ts +2 -0
  195. package/cjs/poller.test.d.ts.map +1 -0
  196. package/cjs/promise-sleep.cjs +33 -0
  197. package/cjs/promise-sleep.cjs.map +1 -0
  198. package/cjs/promise-sleep.d.ts +29 -0
  199. package/cjs/promise-sleep.d.ts.map +1 -0
  200. package/cjs/promise-sleep.test.cjs +64 -0
  201. package/cjs/promise-sleep.test.cjs.map +1 -0
  202. package/cjs/promise-sleep.test.d.ts +2 -0
  203. package/cjs/promise-sleep.test.d.ts.map +1 -0
  204. package/cjs/resolve-once.cjs +228 -113
  205. package/cjs/resolve-once.cjs.map +1 -1
  206. package/cjs/resolve-once.d.ts +60 -44
  207. package/cjs/resolve-once.d.ts.map +1 -1
  208. package/cjs/resolve-once.test.cjs +281 -47
  209. package/cjs/resolve-once.test.cjs.map +1 -1
  210. package/cjs/result.cjs.map +1 -1
  211. package/cjs/result.d.ts +3 -3
  212. package/cjs/result.d.ts.map +1 -1
  213. package/cjs/runtime.cjs.map +1 -1
  214. package/cjs/runtime.d.ts.map +1 -1
  215. package/cjs/sys-env.cjs +23 -15
  216. package/cjs/sys-env.cjs.map +1 -1
  217. package/cjs/sys-env.d.ts +4 -2
  218. package/cjs/sys-env.d.ts.map +1 -1
  219. package/cjs/sys-env.test.cjs +5 -5
  220. package/cjs/sys-env.test.cjs.map +1 -1
  221. package/cjs/test/log-write-stream.cjs +4 -6
  222. package/cjs/test/log-write-stream.cjs.map +1 -1
  223. package/cjs/test/log-write-stream.d.ts +1 -2
  224. package/cjs/test/log-write-stream.d.ts.map +1 -1
  225. package/cjs/test/mock-logger.cjs +3 -4
  226. package/cjs/test/mock-logger.cjs.map +1 -1
  227. package/cjs/test/mock-logger.d.ts +1 -2
  228. package/cjs/test/mock-logger.d.ts.map +1 -1
  229. package/cjs/timeouted.cjs +154 -0
  230. package/cjs/timeouted.cjs.map +1 -0
  231. package/cjs/timeouted.d.ts +60 -0
  232. package/cjs/timeouted.d.ts.map +1 -0
  233. package/cjs/timeouted.test.cjs +759 -0
  234. package/cjs/timeouted.test.cjs.map +1 -0
  235. package/cjs/timeouted.test.d.ts +2 -0
  236. package/cjs/timeouted.test.d.ts.map +1 -0
  237. package/cjs/tracer.cjs.map +1 -1
  238. package/cjs/tracer.d.ts.map +1 -1
  239. package/cjs/txt-en-decoder.cjs +2 -5
  240. package/cjs/txt-en-decoder.cjs.map +1 -1
  241. package/cjs/txt-en-decoder.d.ts +1 -1
  242. package/cjs/txt-en-decoder.d.ts.map +1 -1
  243. package/cjs/types.cjs +26 -1
  244. package/cjs/types.cjs.map +1 -1
  245. package/cjs/types.d.ts +30 -0
  246. package/cjs/types.d.ts.map +1 -1
  247. package/cjs/uri.cjs +11 -12
  248. package/cjs/uri.cjs.map +1 -1
  249. package/cjs/uri.d.ts +2 -3
  250. package/cjs/uri.d.ts.map +1 -1
  251. package/cjs/utils/coerce-uint8.cjs +9 -9
  252. package/cjs/utils/coerce-uint8.cjs.map +1 -1
  253. package/cjs/utils/coerce-uint8.d.ts +1 -1
  254. package/cjs/utils/coerce-uint8.d.ts.map +1 -1
  255. package/cjs/utils/console-write-stream.cjs.map +1 -1
  256. package/cjs/utils/console-write-stream.d.ts.map +1 -1
  257. package/cjs/utils/consume.cjs +2 -2
  258. package/cjs/utils/consume.cjs.map +1 -1
  259. package/cjs/utils/consume.d.ts.map +1 -1
  260. package/cjs/utils/consume.test.cjs.map +1 -1
  261. package/cjs/utils/fanout-write-stream.cjs.map +1 -1
  262. package/cjs/utils/fanout-write-stream.d.ts.map +1 -1
  263. package/cjs/utils/get-params-result.cjs +4 -5
  264. package/cjs/utils/get-params-result.cjs.map +1 -1
  265. package/cjs/utils/get-params-result.d.ts +1 -2
  266. package/cjs/utils/get-params-result.d.ts.map +1 -1
  267. package/cjs/utils/rebuffer.cjs.map +1 -1
  268. package/cjs/utils/rebuffer.d.ts.map +1 -1
  269. package/cjs/utils/rebuffer.test.cjs +7 -7
  270. package/cjs/utils/rebuffer.test.cjs.map +1 -1
  271. package/cjs/utils/relative-path.cjs.map +1 -1
  272. package/cjs/utils/relative-path.d.ts.map +1 -1
  273. package/cjs/utils/sorted-object.cjs +7 -6
  274. package/cjs/utils/sorted-object.cjs.map +1 -1
  275. package/cjs/utils/sorted-object.d.ts +4 -3
  276. package/cjs/utils/sorted-object.d.ts.map +1 -1
  277. package/cjs/utils/sorted-object.test.cjs +22 -0
  278. package/cjs/utils/sorted-object.test.cjs.map +1 -0
  279. package/cjs/utils/sorted-object.test.d.ts +2 -0
  280. package/cjs/utils/sorted-object.test.d.ts.map +1 -0
  281. package/cjs/utils/stream-map.cjs.map +1 -1
  282. package/cjs/utils/stream-map.d.ts.map +1 -1
  283. package/cjs/utils/stream-map.test.cjs +8 -8
  284. package/cjs/utils/stream-map.test.cjs.map +1 -1
  285. package/cjs/utils/stream2string.cjs.map +1 -1
  286. package/cjs/utils/stream2string.d.ts.map +1 -1
  287. package/cjs/utils/stream2string.test.cjs +3 -3
  288. package/cjs/utils/stream2string.test.cjs.map +1 -1
  289. package/cjs/utils/string2stream.cjs.map +1 -1
  290. package/cjs/utils/string2stream.d.ts.map +1 -1
  291. package/cjs/utils/string2stream.test.cjs +4 -3
  292. package/cjs/utils/string2stream.test.cjs.map +1 -1
  293. package/cjs/utils/stripper.cjs.map +1 -1
  294. package/cjs/utils/stripper.d.ts.map +1 -1
  295. package/cjs/utils/to-sorted.cjs +74 -0
  296. package/cjs/utils/to-sorted.cjs.map +1 -0
  297. package/cjs/utils/to-sorted.d.ts +16 -0
  298. package/cjs/utils/to-sorted.d.ts.map +1 -0
  299. package/cjs/utils/to-sorted.test.cjs +229 -0
  300. package/cjs/utils/to-sorted.test.cjs.map +1 -0
  301. package/cjs/utils/to-sorted.test.d.ts +2 -0
  302. package/cjs/utils/to-sorted.test.d.ts.map +1 -0
  303. package/cjs/utils/uint8array-equal.cjs.map +1 -1
  304. package/cjs/utils/uint8array-equal.d.ts.map +1 -1
  305. package/cjs/version.cjs +1 -1
  306. package/cjs/web-env/index.cjs +19 -0
  307. package/cjs/web-env/index.cjs.map +1 -0
  308. package/cjs/web-env/index.d.ts +3 -0
  309. package/cjs/web-env/index.d.ts.map +1 -0
  310. package/cjs/web-env/web-basic-sys-abstraction.cjs +52 -0
  311. package/cjs/web-env/web-basic-sys-abstraction.cjs.map +1 -0
  312. package/cjs/web-env/web-basic-sys-abstraction.d.ts +4 -0
  313. package/cjs/web-env/web-basic-sys-abstraction.d.ts.map +1 -0
  314. package/cjs/web-env/web-env-actions.cjs +40 -0
  315. package/cjs/web-env/web-env-actions.cjs.map +1 -0
  316. package/cjs/web-env/web-env-actions.d.ts +14 -0
  317. package/cjs/web-env/web-env-actions.d.ts.map +1 -0
  318. package/deno.json +9 -11
  319. package/esm/add-cement-do-not-export.d.ts +3 -0
  320. package/esm/add-cement-do-not-export.d.ts.map +1 -0
  321. package/esm/add-cement-do-not-export.js +23 -0
  322. package/esm/add-cement-do-not-export.js.map +1 -0
  323. package/esm/app-context.d.ts.map +1 -1
  324. package/esm/app-context.js.map +1 -1
  325. package/esm/base-basic-sys-abstraction.test.js +21 -8
  326. package/esm/base-basic-sys-abstraction.test.js.map +1 -1
  327. package/esm/base-sys-abstraction.d.ts +4 -1
  328. package/esm/base-sys-abstraction.d.ts.map +1 -1
  329. package/esm/base-sys-abstraction.js +9 -8
  330. package/esm/base-sys-abstraction.js.map +1 -1
  331. package/esm/bin2text.d.ts.map +1 -1
  332. package/esm/bin2text.js.map +1 -1
  333. package/esm/cf-env/cf-basic-sys-abstraction.d.ts +15 -0
  334. package/esm/cf-env/cf-basic-sys-abstraction.d.ts.map +1 -0
  335. package/esm/cf-env/cf-basic-sys-abstraction.js +69 -0
  336. package/esm/cf-env/cf-basic-sys-abstraction.js.map +1 -0
  337. package/esm/cf-env/cf-env-actions.d.ts +17 -0
  338. package/esm/cf-env/cf-env-actions.d.ts.map +1 -0
  339. package/esm/cf-env/cf-env-actions.js +55 -0
  340. package/esm/cf-env/cf-env-actions.js.map +1 -0
  341. package/esm/cf-env/index.d.ts.map +1 -0
  342. package/esm/cf-env/index.js.map +1 -0
  343. package/esm/cli/generate-version-ts-cmd.d.ts +3 -0
  344. package/esm/cli/generate-version-ts-cmd.d.ts.map +1 -0
  345. package/esm/cli/generate-version-ts-cmd.js +43 -0
  346. package/esm/cli/generate-version-ts-cmd.js.map +1 -0
  347. package/esm/cli/main.js +6 -1
  348. package/esm/cli/main.js.map +1 -1
  349. package/esm/cli/patch-version-cmd.d.ts +0 -4
  350. package/esm/cli/patch-version-cmd.d.ts.map +1 -1
  351. package/esm/cli/patch-version-cmd.js +1 -220
  352. package/esm/cli/patch-version-cmd.js.map +1 -1
  353. package/esm/cli/prepare-pubdir-cmd.d.ts +4 -0
  354. package/esm/cli/prepare-pubdir-cmd.d.ts.map +1 -0
  355. package/esm/cli/prepare-pubdir-cmd.js +113 -0
  356. package/esm/cli/prepare-pubdir-cmd.js.map +1 -0
  357. package/esm/cli/publish-tags-cmd.d.ts +3 -0
  358. package/esm/cli/publish-tags-cmd.d.ts.map +1 -0
  359. package/esm/cli/publish-tags-cmd.js +61 -0
  360. package/esm/cli/publish-tags-cmd.js.map +1 -0
  361. package/esm/cli/setup-deno-json-cmd.d.ts +3 -0
  362. package/esm/cli/setup-deno-json-cmd.d.ts.map +1 -0
  363. package/esm/cli/setup-deno-json-cmd.js +41 -0
  364. package/esm/cli/setup-deno-json-cmd.js.map +1 -0
  365. package/esm/cli/utils.d.ts +6 -0
  366. package/esm/cli/utils.d.ts.map +1 -0
  367. package/esm/cli/utils.js +54 -0
  368. package/esm/cli/utils.js.map +1 -0
  369. package/esm/coerce-binary.d.ts +2 -0
  370. package/esm/coerce-binary.d.ts.map +1 -1
  371. package/esm/coerce-binary.js +8 -2
  372. package/esm/coerce-binary.js.map +1 -1
  373. package/esm/crypto.d.ts.map +1 -1
  374. package/esm/crypto.js.map +1 -1
  375. package/esm/deno-env/deno-basic-sys-abstraction.d.ts +13 -0
  376. package/esm/deno-env/deno-basic-sys-abstraction.d.ts.map +1 -0
  377. package/esm/deno-env/deno-basic-sys-abstraction.js +35 -0
  378. package/esm/deno-env/deno-basic-sys-abstraction.js.map +1 -0
  379. package/esm/deno-env/deno-env-actions.d.ts.map +1 -0
  380. package/esm/deno-env/deno-env-actions.js +40 -0
  381. package/esm/deno-env/deno-env-actions.js.map +1 -0
  382. package/esm/deno-env/index.d.ts +3 -0
  383. package/esm/deno-env/index.d.ts.map +1 -0
  384. package/esm/deno-env/index.js +3 -0
  385. package/esm/deno-env/index.js.map +1 -0
  386. package/esm/deno-fs/deno-basic-sys-abstraction.d.ts +11 -0
  387. package/esm/deno-fs/deno-basic-sys-abstraction.d.ts.map +1 -0
  388. package/esm/deno-fs/deno-basic-sys-abstraction.js +32 -0
  389. package/esm/deno-fs/deno-basic-sys-abstraction.js.map +1 -0
  390. package/esm/deno-fs/deno-env-actions.d.ts +23 -0
  391. package/esm/deno-fs/deno-env-actions.d.ts.map +1 -0
  392. package/esm/deno-fs/deno-env-actions.js +39 -0
  393. package/esm/deno-fs/deno-env-actions.js.map +1 -0
  394. package/esm/deno-fs/deno-file-service.d.ts +16 -0
  395. package/esm/deno-fs/deno-file-service.d.ts.map +1 -0
  396. package/esm/deno-fs/deno-file-service.js +66 -0
  397. package/esm/deno-fs/deno-file-service.js.map +1 -0
  398. package/esm/deno-fs/deno-sys-abstraction.d.ts +18 -0
  399. package/esm/deno-fs/deno-sys-abstraction.d.ts.map +1 -0
  400. package/esm/deno-fs/deno-sys-abstraction.js +97 -0
  401. package/esm/deno-fs/deno-sys-abstraction.js.map +1 -0
  402. package/esm/deno-fs/index.d.ts +5 -0
  403. package/esm/deno-fs/index.d.ts.map +1 -0
  404. package/esm/deno-fs/index.js +5 -0
  405. package/esm/deno-fs/index.js.map +1 -0
  406. package/esm/future.d.ts +4 -2
  407. package/esm/future.d.ts.map +1 -1
  408. package/esm/future.js +5 -1
  409. package/esm/future.js.map +1 -1
  410. package/esm/future.test.js +9 -0
  411. package/esm/future.test.js.map +1 -1
  412. package/esm/http_header.d.ts +10 -4
  413. package/esm/http_header.d.ts.map +1 -1
  414. package/esm/http_header.js +72 -45
  415. package/esm/http_header.js.map +1 -1
  416. package/esm/http_header.test.js +44 -0
  417. package/esm/http_header.test.js.map +1 -1
  418. package/esm/import-meta-env.module.d.ts +12 -2
  419. package/esm/import-meta-env.module.d.ts.map +1 -1
  420. package/esm/import-meta-env.module.js +4 -13
  421. package/esm/import-meta-env.module.js.map +1 -1
  422. package/esm/index.d.ts +19 -1
  423. package/esm/index.d.ts.map +1 -1
  424. package/esm/index.js +19 -1
  425. package/esm/index.js.map +1 -1
  426. package/esm/is-json.d.ts.map +1 -1
  427. package/esm/is-json.js.map +1 -1
  428. package/esm/is-promise.d.ts +1 -1
  429. package/esm/is-promise.d.ts.map +1 -1
  430. package/esm/is-promise.js.map +1 -1
  431. package/esm/keyed-ng.d.ts +52 -0
  432. package/esm/keyed-ng.d.ts.map +1 -0
  433. package/esm/keyed-ng.js +90 -0
  434. package/esm/keyed-ng.js.map +1 -0
  435. package/esm/keyed-ng.test.d.ts +2 -0
  436. package/esm/keyed-ng.test.d.ts.map +1 -0
  437. package/esm/keyed-ng.test.js +149 -0
  438. package/esm/keyed-ng.test.js.map +1 -0
  439. package/esm/log-level-impl.d.ts +2 -1
  440. package/esm/log-level-impl.d.ts.map +1 -1
  441. package/esm/log-level-impl.js +1 -1
  442. package/esm/log-level-impl.js.map +1 -1
  443. package/esm/logger-impl.d.ts +3 -4
  444. package/esm/logger-impl.d.ts.map +1 -1
  445. package/esm/logger-impl.js +5 -8
  446. package/esm/logger-impl.js.map +1 -1
  447. package/esm/logger.d.ts +1 -16
  448. package/esm/logger.d.ts.map +1 -1
  449. package/esm/logger.js +11 -25
  450. package/esm/logger.js.map +1 -1
  451. package/esm/logger.test.js +12 -8
  452. package/esm/logger.test.js.map +1 -1
  453. package/esm/lru-map-set.d.ts +4 -1
  454. package/esm/lru-map-set.d.ts.map +1 -1
  455. package/esm/lru-map-set.js +2 -1
  456. package/esm/lru-map-set.js.map +1 -1
  457. package/esm/mutable-url.js +1 -1
  458. package/esm/mutable-url.js.map +1 -1
  459. package/esm/mutable-url.test.js +1 -0
  460. package/esm/mutable-url.test.js.map +1 -1
  461. package/esm/node-env/index.d.ts +3 -0
  462. package/esm/node-env/index.d.ts.map +1 -0
  463. package/esm/node-env/index.js +3 -0
  464. package/esm/node-env/index.js.map +1 -0
  465. package/esm/node-env/node-basic-sys-abstraction.d.ts +26 -0
  466. package/esm/node-env/node-basic-sys-abstraction.d.ts.map +1 -0
  467. package/esm/node-env/node-basic-sys-abstraction.js +47 -0
  468. package/esm/node-env/node-basic-sys-abstraction.js.map +1 -0
  469. package/esm/node-env/node-env-actions.d.ts +15 -0
  470. package/esm/node-env/node-env-actions.d.ts.map +1 -0
  471. package/esm/node-env/node-env-actions.js +39 -0
  472. package/esm/node-env/node-env-actions.js.map +1 -0
  473. package/esm/node-fs/get-iface-adr.d.ts.map +1 -0
  474. package/esm/node-fs/get-iface-adr.js.map +1 -0
  475. package/esm/node-fs/index.d.ts.map +1 -0
  476. package/esm/node-fs/index.js.map +1 -0
  477. package/esm/node-fs/mock-file-service.d.ts +11 -0
  478. package/esm/node-fs/mock-file-service.d.ts.map +1 -0
  479. package/esm/node-fs/mock-file-service.js +31 -0
  480. package/esm/node-fs/mock-file-service.js.map +1 -0
  481. package/esm/node-fs/mock-file-service.test.d.ts.map +1 -0
  482. package/esm/node-fs/mock-file-service.test.js +31 -0
  483. package/esm/node-fs/mock-file-service.test.js.map +1 -0
  484. package/esm/node-fs/node-file-service.d.ts +16 -0
  485. package/esm/node-fs/node-file-service.d.ts.map +1 -0
  486. package/esm/node-fs/node-file-service.js +73 -0
  487. package/esm/node-fs/node-file-service.js.map +1 -0
  488. package/esm/node-fs/node-sys-abstraction.d.ts +18 -0
  489. package/esm/node-fs/node-sys-abstraction.d.ts.map +1 -0
  490. package/esm/node-fs/node-sys-abstraction.js +95 -0
  491. package/esm/node-fs/node-sys-abstraction.js.map +1 -0
  492. package/esm/node-fs/node-sys-abstraction.test.d.ts.map +1 -0
  493. package/esm/node-fs/node-sys-abstraction.test.js.map +1 -0
  494. package/esm/on-func.d.ts +15 -0
  495. package/esm/on-func.d.ts.map +1 -0
  496. package/esm/on-func.js +54 -0
  497. package/esm/on-func.js.map +1 -0
  498. package/esm/on-func.test.d.ts +27 -0
  499. package/esm/on-func.test.d.ts.map +1 -0
  500. package/esm/on-func.test.js +95 -0
  501. package/esm/on-func.test.js.map +1 -0
  502. package/esm/option.d.ts.map +1 -1
  503. package/esm/option.js.map +1 -1
  504. package/esm/path-ops.test.js.map +1 -1
  505. package/esm/poller.d.ts +51 -0
  506. package/esm/poller.d.ts.map +1 -0
  507. package/esm/poller.js +146 -0
  508. package/esm/poller.js.map +1 -0
  509. package/esm/poller.test.d.ts +2 -0
  510. package/esm/poller.test.d.ts.map +1 -0
  511. package/esm/poller.test.js +162 -0
  512. package/esm/poller.test.js.map +1 -0
  513. package/esm/promise-sleep.d.ts +29 -0
  514. package/esm/promise-sleep.d.ts.map +1 -0
  515. package/esm/promise-sleep.js +30 -0
  516. package/esm/promise-sleep.js.map +1 -0
  517. package/esm/promise-sleep.test.d.ts +2 -0
  518. package/esm/promise-sleep.test.d.ts.map +1 -0
  519. package/esm/promise-sleep.test.js +62 -0
  520. package/esm/promise-sleep.test.js.map +1 -0
  521. package/esm/resolve-once.d.ts +60 -44
  522. package/esm/resolve-once.d.ts.map +1 -1
  523. package/esm/resolve-once.js +227 -111
  524. package/esm/resolve-once.js.map +1 -1
  525. package/esm/resolve-once.test.js +249 -48
  526. package/esm/resolve-once.test.js.map +1 -1
  527. package/esm/result.d.ts +3 -3
  528. package/esm/result.d.ts.map +1 -1
  529. package/esm/result.js.map +1 -1
  530. package/esm/runtime.d.ts.map +1 -1
  531. package/esm/runtime.js.map +1 -1
  532. package/esm/sys-env.d.ts +4 -2
  533. package/esm/sys-env.d.ts.map +1 -1
  534. package/esm/sys-env.js +19 -11
  535. package/esm/sys-env.js.map +1 -1
  536. package/esm/sys-env.test.js +2 -2
  537. package/esm/sys-env.test.js.map +1 -1
  538. package/esm/test/log-write-stream.d.ts +1 -2
  539. package/esm/test/log-write-stream.d.ts.map +1 -1
  540. package/esm/test/log-write-stream.js +1 -3
  541. package/esm/test/log-write-stream.js.map +1 -1
  542. package/esm/test/mock-logger.d.ts +1 -2
  543. package/esm/test/mock-logger.d.ts.map +1 -1
  544. package/esm/test/mock-logger.js +1 -2
  545. package/esm/test/mock-logger.js.map +1 -1
  546. package/esm/test/test-exit-handler.js +11 -4
  547. package/esm/test/test-exit-handler.js.map +1 -1
  548. package/esm/timeouted.d.ts +60 -0
  549. package/esm/timeouted.d.ts.map +1 -0
  550. package/esm/timeouted.js +144 -0
  551. package/esm/timeouted.js.map +1 -0
  552. package/esm/timeouted.test.d.ts +2 -0
  553. package/esm/timeouted.test.d.ts.map +1 -0
  554. package/esm/timeouted.test.js +724 -0
  555. package/esm/timeouted.test.js.map +1 -0
  556. package/esm/tracer.d.ts.map +1 -1
  557. package/esm/tracer.js.map +1 -1
  558. package/esm/txt-en-decoder.d.ts +1 -1
  559. package/esm/txt-en-decoder.d.ts.map +1 -1
  560. package/esm/txt-en-decoder.js +2 -5
  561. package/esm/txt-en-decoder.js.map +1 -1
  562. package/esm/types.d.ts +30 -0
  563. package/esm/types.d.ts.map +1 -1
  564. package/esm/types.js +24 -0
  565. package/esm/types.js.map +1 -1
  566. package/esm/uri.d.ts +2 -3
  567. package/esm/uri.d.ts.map +1 -1
  568. package/esm/uri.js +3 -4
  569. package/esm/uri.js.map +1 -1
  570. package/esm/utils/coerce-uint8.d.ts +1 -1
  571. package/esm/utils/coerce-uint8.d.ts.map +1 -1
  572. package/esm/utils/coerce-uint8.js +1 -1
  573. package/esm/utils/coerce-uint8.js.map +1 -1
  574. package/esm/utils/console-write-stream.d.ts.map +1 -1
  575. package/esm/utils/console-write-stream.js.map +1 -1
  576. package/esm/utils/consume.d.ts.map +1 -1
  577. package/esm/utils/consume.js +1 -1
  578. package/esm/utils/consume.js.map +1 -1
  579. package/esm/utils/consume.test.js.map +1 -1
  580. package/esm/utils/fanout-write-stream.d.ts.map +1 -1
  581. package/esm/utils/fanout-write-stream.js.map +1 -1
  582. package/esm/utils/get-params-result.d.ts +1 -2
  583. package/esm/utils/get-params-result.d.ts.map +1 -1
  584. package/esm/utils/get-params-result.js +1 -2
  585. package/esm/utils/get-params-result.js.map +1 -1
  586. package/esm/utils/rebuffer.d.ts.map +1 -1
  587. package/esm/utils/rebuffer.js.map +1 -1
  588. package/esm/utils/rebuffer.test.js +7 -7
  589. package/esm/utils/rebuffer.test.js.map +1 -1
  590. package/esm/utils/relative-path.d.ts.map +1 -1
  591. package/esm/utils/relative-path.js.map +1 -1
  592. package/esm/utils/sorted-object.d.ts +4 -3
  593. package/esm/utils/sorted-object.d.ts.map +1 -1
  594. package/esm/utils/sorted-object.js +7 -6
  595. package/esm/utils/sorted-object.js.map +1 -1
  596. package/esm/utils/sorted-object.test.d.ts +2 -0
  597. package/esm/utils/sorted-object.test.d.ts.map +1 -0
  598. package/esm/utils/sorted-object.test.js +20 -0
  599. package/esm/utils/sorted-object.test.js.map +1 -0
  600. package/esm/utils/stream-map.d.ts.map +1 -1
  601. package/esm/utils/stream-map.js.map +1 -1
  602. package/esm/utils/stream-map.test.js +8 -8
  603. package/esm/utils/stream-map.test.js.map +1 -1
  604. package/esm/utils/stream2string.d.ts.map +1 -1
  605. package/esm/utils/stream2string.js.map +1 -1
  606. package/esm/utils/stream2string.test.js +1 -1
  607. package/esm/utils/stream2string.test.js.map +1 -1
  608. package/esm/utils/string2stream.d.ts.map +1 -1
  609. package/esm/utils/string2stream.js.map +1 -1
  610. package/esm/utils/string2stream.test.js +4 -3
  611. package/esm/utils/string2stream.test.js.map +1 -1
  612. package/esm/utils/stripper.d.ts.map +1 -1
  613. package/esm/utils/stripper.js.map +1 -1
  614. package/esm/utils/to-sorted.d.ts +16 -0
  615. package/esm/utils/to-sorted.d.ts.map +1 -0
  616. package/esm/utils/to-sorted.js +70 -0
  617. package/esm/utils/to-sorted.js.map +1 -0
  618. package/esm/utils/to-sorted.test.d.ts +2 -0
  619. package/esm/utils/to-sorted.test.d.ts.map +1 -0
  620. package/esm/utils/to-sorted.test.js +227 -0
  621. package/esm/utils/to-sorted.test.js.map +1 -0
  622. package/esm/utils/uint8array-equal.d.ts.map +1 -1
  623. package/esm/utils/uint8array-equal.js.map +1 -1
  624. package/esm/version.js +1 -1
  625. package/esm/web-env/index.d.ts +3 -0
  626. package/esm/web-env/index.d.ts.map +1 -0
  627. package/esm/web-env/index.js +3 -0
  628. package/esm/web-env/index.js.map +1 -0
  629. package/esm/web-env/web-basic-sys-abstraction.d.ts +4 -0
  630. package/esm/web-env/web-basic-sys-abstraction.d.ts.map +1 -0
  631. package/esm/web-env/web-basic-sys-abstraction.js +49 -0
  632. package/esm/web-env/web-basic-sys-abstraction.js.map +1 -0
  633. package/esm/web-env/web-env-actions.d.ts +14 -0
  634. package/esm/web-env/web-env-actions.d.ts.map +1 -0
  635. package/esm/web-env/web-env-actions.js +36 -0
  636. package/esm/web-env/web-env-actions.js.map +1 -0
  637. package/package.json +62 -56
  638. package/src/add-cement-do-not-export.ts +29 -0
  639. package/src/app-context.ts +111 -5
  640. package/src/base-sys-abstraction.ts +261 -9
  641. package/src/bin2text.ts +37 -0
  642. package/src/cf-env/cf-basic-sys-abstraction.ts +85 -0
  643. package/src/cf-env/cf-env-actions.ts +55 -0
  644. package/src/cli/generate-version-ts-cmd.ts +43 -0
  645. package/src/cli/main.ts +6 -1
  646. package/src/cli/patch-version-cmd.ts +1 -289
  647. package/src/cli/prepare-pubdir-cmd.ts +156 -0
  648. package/src/cli/publish-tags-cmd.ts +70 -0
  649. package/src/cli/run.sh +10 -1
  650. package/src/cli/setup-deno-json-cmd.ts +51 -0
  651. package/src/cli/utils.ts +70 -0
  652. package/src/coerce-binary.ts +51 -2
  653. package/src/crypto.ts +35 -1
  654. package/src/deno-env/deno-basic-sys-abstraction.ts +45 -0
  655. package/src/deno-env/deno-env-actions.ts +57 -0
  656. package/src/deno-env/index.ts +2 -0
  657. package/src/deno-fs/deno-basic-sys-abstraction.ts +45 -0
  658. package/src/deno-fs/deno-env-actions.ts +56 -0
  659. package/src/deno-fs/deno-file-service.ts +91 -0
  660. package/src/deno-fs/deno-sys-abstraction.ts +130 -0
  661. package/src/deno-fs/index.ts +4 -0
  662. package/src/future.ts +53 -2
  663. package/src/http_header.ts +357 -53
  664. package/src/import-meta-env.commonjs.ts +21 -3
  665. package/src/import-meta-env.module.ts +5 -14
  666. package/src/index.ts +22 -4
  667. package/src/is-json.ts +21 -0
  668. package/src/is-promise.ts +28 -2
  669. package/src/keyed-ng.ts +631 -0
  670. package/src/log-level-impl.ts +2 -1
  671. package/src/logger-impl.ts +5 -16
  672. package/src/logger.ts +10 -31
  673. package/src/lru-map-set.ts +53 -5
  674. package/src/mutable-url.ts +1 -1
  675. package/src/node-env/index.ts +2 -0
  676. package/src/node-env/node-basic-sys-abstraction.ts +66 -0
  677. package/src/node-env/node-env-actions.ts +46 -0
  678. package/src/node-fs/mock-file-service.ts +45 -0
  679. package/src/node-fs/node-file-service.ts +92 -0
  680. package/src/node-fs/node-sys-abstraction.ts +116 -0
  681. package/src/on-func.ts +115 -0
  682. package/src/option.ts +27 -0
  683. package/src/poller.ts +269 -0
  684. package/src/promise-sleep.ts +101 -0
  685. package/src/resolve-once.ts +809 -176
  686. package/src/result.ts +54 -4
  687. package/src/runtime.ts +75 -2
  688. package/src/sys-env.ts +85 -18
  689. package/src/test/log-write-stream.ts +1 -3
  690. package/src/test/mock-logger.ts +1 -4
  691. package/src/timeouted.ts +355 -0
  692. package/src/tracer.ts +42 -1
  693. package/src/txt-en-decoder.ts +3 -6
  694. package/src/types.ts +46 -0
  695. package/src/uri.ts +79 -9
  696. package/src/utils/coerce-uint8.ts +61 -1
  697. package/src/utils/console-write-stream.ts +34 -0
  698. package/src/utils/consume.ts +107 -1
  699. package/src/utils/fanout-write-stream.ts +45 -0
  700. package/src/utils/get-params-result.ts +38 -2
  701. package/src/utils/rebuffer.ts +42 -0
  702. package/src/utils/relative-path.ts +108 -0
  703. package/src/utils/sorted-object.ts +59 -6
  704. package/src/utils/stream-map.ts +90 -0
  705. package/src/utils/stream2string.ts +35 -0
  706. package/src/utils/string2stream.ts +30 -0
  707. package/src/utils/stripper.ts +34 -0
  708. package/src/utils/to-sorted.ts +118 -0
  709. package/src/utils/uint8array-equal.ts +20 -0
  710. package/src/web-env/index.ts +2 -0
  711. package/src/web-env/web-basic-sys-abstraction.ts +56 -0
  712. package/src/web-env/web-env-actions.ts +41 -0
  713. package/ts/cjs/add-cement-do-not-export.d.ts +3 -0
  714. package/ts/cjs/add-cement-do-not-export.d.ts.map +1 -0
  715. package/ts/cjs/add-cement-do-not-export.js +26 -0
  716. package/ts/cjs/add-cement-do-not-export.js.map +1 -0
  717. package/ts/cjs/app-context.d.ts.map +1 -1
  718. package/ts/cjs/app-context.js.map +1 -1
  719. package/ts/cjs/base-basic-sys-abstraction.test.js +21 -8
  720. package/ts/cjs/base-basic-sys-abstraction.test.js.map +1 -1
  721. package/ts/cjs/base-sys-abstraction.d.ts +4 -1
  722. package/ts/cjs/base-sys-abstraction.d.ts.map +1 -1
  723. package/ts/cjs/base-sys-abstraction.js +9 -8
  724. package/ts/cjs/base-sys-abstraction.js.map +1 -1
  725. package/ts/cjs/bin2text.d.ts.map +1 -1
  726. package/ts/cjs/bin2text.js.map +1 -1
  727. package/ts/cjs/cf-env/cf-basic-sys-abstraction.d.ts +15 -0
  728. package/ts/cjs/cf-env/cf-basic-sys-abstraction.d.ts.map +1 -0
  729. package/ts/cjs/cf-env/cf-basic-sys-abstraction.js +74 -0
  730. package/ts/cjs/cf-env/cf-basic-sys-abstraction.js.map +1 -0
  731. package/ts/cjs/cf-env/cf-env-actions.d.ts +17 -0
  732. package/ts/cjs/cf-env/cf-env-actions.d.ts.map +1 -0
  733. package/ts/cjs/cf-env/cf-env-actions.js +59 -0
  734. package/ts/cjs/cf-env/cf-env-actions.js.map +1 -0
  735. package/ts/cjs/cf-env/index.d.ts.map +1 -0
  736. package/ts/cjs/cf-env/index.js.map +1 -0
  737. package/ts/cjs/cli/generate-version-ts-cmd.d.ts +3 -0
  738. package/ts/cjs/cli/generate-version-ts-cmd.d.ts.map +1 -0
  739. package/ts/cjs/cli/generate-version-ts-cmd.js +79 -0
  740. package/ts/cjs/cli/generate-version-ts-cmd.js.map +1 -0
  741. package/ts/cjs/cli/main.js +8 -3
  742. package/ts/cjs/cli/main.js.map +1 -1
  743. package/ts/cjs/cli/patch-version-cmd.d.ts +0 -4
  744. package/ts/cjs/cli/patch-version-cmd.d.ts.map +1 -1
  745. package/ts/cjs/cli/patch-version-cmd.js +3 -226
  746. package/ts/cjs/cli/patch-version-cmd.js.map +1 -1
  747. package/ts/cjs/cli/prepare-pubdir-cmd.d.ts +4 -0
  748. package/ts/cjs/cli/prepare-pubdir-cmd.d.ts.map +1 -0
  749. package/ts/cjs/cli/prepare-pubdir-cmd.js +150 -0
  750. package/ts/cjs/cli/prepare-pubdir-cmd.js.map +1 -0
  751. package/ts/cjs/cli/publish-tags-cmd.d.ts +3 -0
  752. package/ts/cjs/cli/publish-tags-cmd.d.ts.map +1 -0
  753. package/ts/cjs/cli/publish-tags-cmd.js +97 -0
  754. package/ts/cjs/cli/publish-tags-cmd.js.map +1 -0
  755. package/ts/cjs/cli/setup-deno-json-cmd.d.ts +3 -0
  756. package/ts/cjs/cli/setup-deno-json-cmd.d.ts.map +1 -0
  757. package/ts/cjs/cli/setup-deno-json-cmd.js +77 -0
  758. package/ts/cjs/cli/setup-deno-json-cmd.js.map +1 -0
  759. package/ts/cjs/cli/utils.d.ts +6 -0
  760. package/ts/cjs/cli/utils.d.ts.map +1 -0
  761. package/ts/cjs/cli/utils.js +93 -0
  762. package/ts/cjs/cli/utils.js.map +1 -0
  763. package/ts/cjs/coerce-binary.d.ts +2 -0
  764. package/ts/cjs/coerce-binary.d.ts.map +1 -1
  765. package/ts/cjs/coerce-binary.js +10 -2
  766. package/ts/cjs/coerce-binary.js.map +1 -1
  767. package/ts/cjs/crypto.d.ts.map +1 -1
  768. package/ts/cjs/crypto.js.map +1 -1
  769. package/ts/cjs/deno-env/deno-basic-sys-abstraction.d.ts +13 -0
  770. package/ts/cjs/deno-env/deno-basic-sys-abstraction.d.ts.map +1 -0
  771. package/ts/cjs/deno-env/deno-basic-sys-abstraction.js +40 -0
  772. package/ts/cjs/deno-env/deno-basic-sys-abstraction.js.map +1 -0
  773. package/ts/cjs/deno-env/deno-env-actions.d.ts.map +1 -0
  774. package/ts/cjs/deno-env/deno-env-actions.js +44 -0
  775. package/ts/cjs/deno-env/deno-env-actions.js.map +1 -0
  776. package/ts/cjs/deno-env/index.d.ts +3 -0
  777. package/ts/cjs/deno-env/index.d.ts.map +1 -0
  778. package/ts/cjs/deno-env/index.js +19 -0
  779. package/ts/cjs/deno-env/index.js.map +1 -0
  780. package/ts/cjs/deno-fs/deno-basic-sys-abstraction.d.ts +11 -0
  781. package/ts/cjs/deno-fs/deno-basic-sys-abstraction.d.ts.map +1 -0
  782. package/ts/cjs/deno-fs/deno-basic-sys-abstraction.js +37 -0
  783. package/ts/cjs/deno-fs/deno-basic-sys-abstraction.js.map +1 -0
  784. package/ts/cjs/deno-fs/deno-env-actions.d.ts +23 -0
  785. package/ts/cjs/deno-fs/deno-env-actions.d.ts.map +1 -0
  786. package/ts/cjs/deno-fs/deno-env-actions.js +43 -0
  787. package/ts/cjs/deno-fs/deno-env-actions.js.map +1 -0
  788. package/ts/cjs/deno-fs/deno-file-service.d.ts +16 -0
  789. package/ts/cjs/deno-fs/deno-file-service.d.ts.map +1 -0
  790. package/ts/cjs/deno-fs/deno-file-service.js +103 -0
  791. package/ts/cjs/deno-fs/deno-file-service.js.map +1 -0
  792. package/ts/cjs/deno-fs/deno-sys-abstraction.d.ts +18 -0
  793. package/ts/cjs/deno-fs/deno-sys-abstraction.d.ts.map +1 -0
  794. package/ts/cjs/deno-fs/deno-sys-abstraction.js +103 -0
  795. package/ts/cjs/deno-fs/deno-sys-abstraction.js.map +1 -0
  796. package/ts/cjs/deno-fs/index.d.ts +5 -0
  797. package/ts/cjs/deno-fs/index.d.ts.map +1 -0
  798. package/ts/cjs/deno-fs/index.js +21 -0
  799. package/ts/cjs/deno-fs/index.js.map +1 -0
  800. package/ts/cjs/future.d.ts +4 -2
  801. package/ts/cjs/future.d.ts.map +1 -1
  802. package/ts/cjs/future.js +5 -1
  803. package/ts/cjs/future.js.map +1 -1
  804. package/ts/cjs/future.test.js +9 -0
  805. package/ts/cjs/future.test.js.map +1 -1
  806. package/ts/cjs/http_header.d.ts +10 -4
  807. package/ts/cjs/http_header.d.ts.map +1 -1
  808. package/ts/cjs/http_header.js +72 -45
  809. package/ts/cjs/http_header.js.map +1 -1
  810. package/ts/cjs/http_header.test.js +44 -0
  811. package/ts/cjs/http_header.test.js.map +1 -1
  812. package/ts/cjs/import-meta-env.commonjs.d.ts +10 -2
  813. package/ts/cjs/import-meta-env.commonjs.d.ts.map +1 -1
  814. package/ts/cjs/import-meta-env.commonjs.js +22 -2
  815. package/ts/cjs/import-meta-env.commonjs.js.map +1 -1
  816. package/ts/cjs/index.d.ts +19 -1
  817. package/ts/cjs/index.d.ts.map +1 -1
  818. package/ts/cjs/index.js +19 -24
  819. package/ts/cjs/index.js.map +1 -1
  820. package/ts/cjs/is-json.d.ts.map +1 -1
  821. package/ts/cjs/is-json.js.map +1 -1
  822. package/ts/cjs/is-promise.d.ts +1 -1
  823. package/ts/cjs/is-promise.d.ts.map +1 -1
  824. package/ts/cjs/is-promise.js.map +1 -1
  825. package/ts/cjs/keyed-ng.d.ts +52 -0
  826. package/ts/cjs/keyed-ng.d.ts.map +1 -0
  827. package/ts/cjs/keyed-ng.js +94 -0
  828. package/ts/cjs/keyed-ng.js.map +1 -0
  829. package/ts/cjs/keyed-ng.test.d.ts +2 -0
  830. package/ts/cjs/keyed-ng.test.d.ts.map +1 -0
  831. package/ts/cjs/keyed-ng.test.js +151 -0
  832. package/ts/cjs/keyed-ng.test.js.map +1 -0
  833. package/ts/cjs/log-level-impl.d.ts +2 -1
  834. package/ts/cjs/log-level-impl.d.ts.map +1 -1
  835. package/ts/cjs/log-level-impl.js +4 -4
  836. package/ts/cjs/log-level-impl.js.map +1 -1
  837. package/ts/cjs/logger-impl.d.ts +3 -4
  838. package/ts/cjs/logger-impl.d.ts.map +1 -1
  839. package/ts/cjs/logger-impl.js +12 -45
  840. package/ts/cjs/logger-impl.js.map +1 -1
  841. package/ts/cjs/logger.d.ts +1 -16
  842. package/ts/cjs/logger.d.ts.map +1 -1
  843. package/ts/cjs/logger.js +26 -42
  844. package/ts/cjs/logger.js.map +1 -1
  845. package/ts/cjs/logger.test.js +11 -7
  846. package/ts/cjs/logger.test.js.map +1 -1
  847. package/ts/cjs/lru-map-set.d.ts +4 -1
  848. package/ts/cjs/lru-map-set.d.ts.map +1 -1
  849. package/ts/cjs/lru-map-set.js +2 -1
  850. package/ts/cjs/lru-map-set.js.map +1 -1
  851. package/ts/cjs/mutable-url.js +7 -7
  852. package/ts/cjs/mutable-url.js.map +1 -1
  853. package/ts/cjs/mutable-url.test.js +221 -220
  854. package/ts/cjs/mutable-url.test.js.map +1 -1
  855. package/ts/cjs/node-env/index.d.ts +3 -0
  856. package/ts/cjs/node-env/index.d.ts.map +1 -0
  857. package/ts/cjs/node-env/index.js +19 -0
  858. package/ts/cjs/node-env/index.js.map +1 -0
  859. package/ts/cjs/node-env/node-basic-sys-abstraction.d.ts +26 -0
  860. package/ts/cjs/node-env/node-basic-sys-abstraction.d.ts.map +1 -0
  861. package/ts/cjs/node-env/node-basic-sys-abstraction.js +52 -0
  862. package/ts/cjs/node-env/node-basic-sys-abstraction.js.map +1 -0
  863. package/ts/cjs/node-env/node-env-actions.d.ts +15 -0
  864. package/ts/cjs/node-env/node-env-actions.d.ts.map +1 -0
  865. package/ts/cjs/node-env/node-env-actions.js +43 -0
  866. package/ts/cjs/node-env/node-env-actions.js.map +1 -0
  867. package/ts/cjs/node-fs/get-iface-adr.d.ts.map +1 -0
  868. package/ts/cjs/node-fs/get-iface-adr.js.map +1 -0
  869. package/ts/cjs/node-fs/index.d.ts.map +1 -0
  870. package/ts/cjs/node-fs/index.js.map +1 -0
  871. package/ts/cjs/node-fs/mock-file-service.d.ts +11 -0
  872. package/ts/cjs/node-fs/mock-file-service.d.ts.map +1 -0
  873. package/ts/cjs/node-fs/mock-file-service.js +35 -0
  874. package/ts/cjs/node-fs/mock-file-service.js.map +1 -0
  875. package/ts/cjs/node-fs/mock-file-service.test.d.ts.map +1 -0
  876. package/ts/cjs/node-fs/mock-file-service.test.js +66 -0
  877. package/ts/cjs/node-fs/mock-file-service.test.js.map +1 -0
  878. package/ts/cjs/node-fs/node-file-service.d.ts +16 -0
  879. package/ts/cjs/node-fs/node-file-service.d.ts.map +1 -0
  880. package/ts/cjs/node-fs/node-file-service.js +80 -0
  881. package/ts/cjs/node-fs/node-file-service.js.map +1 -0
  882. package/ts/cjs/node-fs/node-sys-abstraction.d.ts +18 -0
  883. package/ts/cjs/node-fs/node-sys-abstraction.d.ts.map +1 -0
  884. package/ts/cjs/node-fs/node-sys-abstraction.js +104 -0
  885. package/ts/cjs/node-fs/node-sys-abstraction.js.map +1 -0
  886. package/ts/cjs/node-fs/node-sys-abstraction.test.d.ts.map +1 -0
  887. package/ts/cjs/node-fs/node-sys-abstraction.test.js.map +1 -0
  888. package/ts/cjs/on-func.d.ts +15 -0
  889. package/ts/cjs/on-func.d.ts.map +1 -0
  890. package/ts/cjs/on-func.js +58 -0
  891. package/ts/cjs/on-func.js.map +1 -0
  892. package/ts/cjs/on-func.test.d.ts +27 -0
  893. package/ts/cjs/on-func.test.d.ts.map +1 -0
  894. package/ts/cjs/on-func.test.js +97 -0
  895. package/ts/cjs/on-func.test.js.map +1 -0
  896. package/ts/cjs/option.d.ts.map +1 -1
  897. package/ts/cjs/option.js.map +1 -1
  898. package/ts/cjs/path-ops.test.js.map +1 -1
  899. package/ts/cjs/poller.d.ts +51 -0
  900. package/ts/cjs/poller.d.ts.map +1 -0
  901. package/ts/cjs/poller.js +150 -0
  902. package/ts/cjs/poller.js.map +1 -0
  903. package/ts/cjs/poller.test.d.ts +2 -0
  904. package/ts/cjs/poller.test.d.ts.map +1 -0
  905. package/ts/cjs/poller.test.js +164 -0
  906. package/ts/cjs/poller.test.js.map +1 -0
  907. package/ts/cjs/promise-sleep.d.ts +29 -0
  908. package/ts/cjs/promise-sleep.d.ts.map +1 -0
  909. package/ts/cjs/promise-sleep.js +33 -0
  910. package/ts/cjs/promise-sleep.js.map +1 -0
  911. package/ts/cjs/promise-sleep.test.d.ts +2 -0
  912. package/ts/cjs/promise-sleep.test.d.ts.map +1 -0
  913. package/ts/cjs/promise-sleep.test.js +64 -0
  914. package/ts/cjs/promise-sleep.test.js.map +1 -0
  915. package/ts/cjs/resolve-once.d.ts +60 -44
  916. package/ts/cjs/resolve-once.d.ts.map +1 -1
  917. package/ts/cjs/resolve-once.js +228 -113
  918. package/ts/cjs/resolve-once.js.map +1 -1
  919. package/ts/cjs/resolve-once.test.js +281 -47
  920. package/ts/cjs/resolve-once.test.js.map +1 -1
  921. package/ts/cjs/result.d.ts +3 -3
  922. package/ts/cjs/result.d.ts.map +1 -1
  923. package/ts/cjs/result.js.map +1 -1
  924. package/ts/cjs/runtime.d.ts.map +1 -1
  925. package/ts/cjs/runtime.js.map +1 -1
  926. package/ts/cjs/sys-env.d.ts +4 -2
  927. package/ts/cjs/sys-env.d.ts.map +1 -1
  928. package/ts/cjs/sys-env.js +23 -15
  929. package/ts/cjs/sys-env.js.map +1 -1
  930. package/ts/cjs/sys-env.test.js +5 -5
  931. package/ts/cjs/sys-env.test.js.map +1 -1
  932. package/ts/cjs/test/log-write-stream.d.ts +1 -2
  933. package/ts/cjs/test/log-write-stream.d.ts.map +1 -1
  934. package/ts/cjs/test/log-write-stream.js +4 -6
  935. package/ts/cjs/test/log-write-stream.js.map +1 -1
  936. package/ts/cjs/test/mock-logger.d.ts +1 -2
  937. package/ts/cjs/test/mock-logger.d.ts.map +1 -1
  938. package/ts/cjs/test/mock-logger.js +3 -4
  939. package/ts/cjs/test/mock-logger.js.map +1 -1
  940. package/ts/cjs/timeouted.d.ts +60 -0
  941. package/ts/cjs/timeouted.d.ts.map +1 -0
  942. package/ts/cjs/timeouted.js +154 -0
  943. package/ts/cjs/timeouted.js.map +1 -0
  944. package/ts/cjs/timeouted.test.d.ts +2 -0
  945. package/ts/cjs/timeouted.test.d.ts.map +1 -0
  946. package/ts/cjs/timeouted.test.js +759 -0
  947. package/ts/cjs/timeouted.test.js.map +1 -0
  948. package/ts/cjs/tracer.d.ts.map +1 -1
  949. package/ts/cjs/tracer.js.map +1 -1
  950. package/ts/cjs/txt-en-decoder.d.ts +1 -1
  951. package/ts/cjs/txt-en-decoder.d.ts.map +1 -1
  952. package/ts/cjs/txt-en-decoder.js +2 -5
  953. package/ts/cjs/txt-en-decoder.js.map +1 -1
  954. package/ts/cjs/types.d.ts +30 -0
  955. package/ts/cjs/types.d.ts.map +1 -1
  956. package/ts/cjs/types.js +26 -1
  957. package/ts/cjs/types.js.map +1 -1
  958. package/ts/cjs/uri.d.ts +2 -3
  959. package/ts/cjs/uri.d.ts.map +1 -1
  960. package/ts/cjs/uri.js +11 -12
  961. package/ts/cjs/uri.js.map +1 -1
  962. package/ts/cjs/utils/coerce-uint8.d.ts +1 -1
  963. package/ts/cjs/utils/coerce-uint8.d.ts.map +1 -1
  964. package/ts/cjs/utils/coerce-uint8.js +9 -9
  965. package/ts/cjs/utils/coerce-uint8.js.map +1 -1
  966. package/ts/cjs/utils/console-write-stream.d.ts.map +1 -1
  967. package/ts/cjs/utils/console-write-stream.js.map +1 -1
  968. package/ts/cjs/utils/consume.d.ts.map +1 -1
  969. package/ts/cjs/utils/consume.js +2 -2
  970. package/ts/cjs/utils/consume.js.map +1 -1
  971. package/ts/cjs/utils/consume.test.js.map +1 -1
  972. package/ts/cjs/utils/fanout-write-stream.d.ts.map +1 -1
  973. package/ts/cjs/utils/fanout-write-stream.js.map +1 -1
  974. package/ts/cjs/utils/get-params-result.d.ts +1 -2
  975. package/ts/cjs/utils/get-params-result.d.ts.map +1 -1
  976. package/ts/cjs/utils/get-params-result.js +4 -5
  977. package/ts/cjs/utils/get-params-result.js.map +1 -1
  978. package/ts/cjs/utils/rebuffer.d.ts.map +1 -1
  979. package/ts/cjs/utils/rebuffer.js.map +1 -1
  980. package/ts/cjs/utils/rebuffer.test.js +7 -7
  981. package/ts/cjs/utils/rebuffer.test.js.map +1 -1
  982. package/ts/cjs/utils/relative-path.d.ts.map +1 -1
  983. package/ts/cjs/utils/relative-path.js.map +1 -1
  984. package/ts/cjs/utils/sorted-object.d.ts +4 -3
  985. package/ts/cjs/utils/sorted-object.d.ts.map +1 -1
  986. package/ts/cjs/utils/sorted-object.js +7 -6
  987. package/ts/cjs/utils/sorted-object.js.map +1 -1
  988. package/ts/cjs/utils/sorted-object.test.d.ts +2 -0
  989. package/ts/cjs/utils/sorted-object.test.d.ts.map +1 -0
  990. package/ts/cjs/utils/sorted-object.test.js +22 -0
  991. package/ts/cjs/utils/sorted-object.test.js.map +1 -0
  992. package/ts/cjs/utils/stream-map.d.ts.map +1 -1
  993. package/ts/cjs/utils/stream-map.js.map +1 -1
  994. package/ts/cjs/utils/stream-map.test.js +8 -8
  995. package/ts/cjs/utils/stream-map.test.js.map +1 -1
  996. package/ts/cjs/utils/stream2string.d.ts.map +1 -1
  997. package/ts/cjs/utils/stream2string.js.map +1 -1
  998. package/ts/cjs/utils/stream2string.test.js +3 -3
  999. package/ts/cjs/utils/stream2string.test.js.map +1 -1
  1000. package/ts/cjs/utils/string2stream.d.ts.map +1 -1
  1001. package/ts/cjs/utils/string2stream.js.map +1 -1
  1002. package/ts/cjs/utils/string2stream.test.js +4 -3
  1003. package/ts/cjs/utils/string2stream.test.js.map +1 -1
  1004. package/ts/cjs/utils/stripper.d.ts.map +1 -1
  1005. package/ts/cjs/utils/stripper.js.map +1 -1
  1006. package/ts/cjs/utils/to-sorted.d.ts +16 -0
  1007. package/ts/cjs/utils/to-sorted.d.ts.map +1 -0
  1008. package/ts/cjs/utils/to-sorted.js +74 -0
  1009. package/ts/cjs/utils/to-sorted.js.map +1 -0
  1010. package/ts/cjs/utils/to-sorted.test.d.ts +2 -0
  1011. package/ts/cjs/utils/to-sorted.test.d.ts.map +1 -0
  1012. package/ts/cjs/utils/to-sorted.test.js +229 -0
  1013. package/ts/cjs/utils/to-sorted.test.js.map +1 -0
  1014. package/ts/cjs/utils/uint8array-equal.d.ts.map +1 -1
  1015. package/ts/cjs/utils/uint8array-equal.js.map +1 -1
  1016. package/ts/cjs/version.js +1 -1
  1017. package/ts/cjs/web-env/index.d.ts +3 -0
  1018. package/ts/cjs/web-env/index.d.ts.map +1 -0
  1019. package/ts/cjs/web-env/index.js +19 -0
  1020. package/ts/cjs/web-env/index.js.map +1 -0
  1021. package/ts/cjs/web-env/web-basic-sys-abstraction.d.ts +4 -0
  1022. package/ts/cjs/web-env/web-basic-sys-abstraction.d.ts.map +1 -0
  1023. package/ts/cjs/web-env/web-basic-sys-abstraction.js +52 -0
  1024. package/ts/cjs/web-env/web-basic-sys-abstraction.js.map +1 -0
  1025. package/ts/cjs/web-env/web-env-actions.d.ts +14 -0
  1026. package/ts/cjs/web-env/web-env-actions.d.ts.map +1 -0
  1027. package/ts/cjs/web-env/web-env-actions.js +40 -0
  1028. package/ts/cjs/web-env/web-env-actions.js.map +1 -0
  1029. package/ts/esm/add-cement-do-not-export.d.ts +3 -0
  1030. package/ts/esm/add-cement-do-not-export.d.ts.map +1 -0
  1031. package/ts/esm/add-cement-do-not-export.js +23 -0
  1032. package/ts/esm/add-cement-do-not-export.js.map +1 -0
  1033. package/ts/esm/app-context.d.ts.map +1 -1
  1034. package/ts/esm/app-context.js.map +1 -1
  1035. package/ts/esm/base-basic-sys-abstraction.test.js +21 -8
  1036. package/ts/esm/base-basic-sys-abstraction.test.js.map +1 -1
  1037. package/ts/esm/base-sys-abstraction.d.ts +4 -1
  1038. package/ts/esm/base-sys-abstraction.d.ts.map +1 -1
  1039. package/ts/esm/base-sys-abstraction.js +9 -8
  1040. package/ts/esm/base-sys-abstraction.js.map +1 -1
  1041. package/ts/esm/bin2text.d.ts.map +1 -1
  1042. package/ts/esm/bin2text.js.map +1 -1
  1043. package/ts/esm/cf-env/cf-basic-sys-abstraction.d.ts +15 -0
  1044. package/ts/esm/cf-env/cf-basic-sys-abstraction.d.ts.map +1 -0
  1045. package/ts/esm/cf-env/cf-basic-sys-abstraction.js +69 -0
  1046. package/ts/esm/cf-env/cf-basic-sys-abstraction.js.map +1 -0
  1047. package/ts/esm/cf-env/cf-env-actions.d.ts +17 -0
  1048. package/ts/esm/cf-env/cf-env-actions.d.ts.map +1 -0
  1049. package/ts/esm/cf-env/cf-env-actions.js +55 -0
  1050. package/ts/esm/cf-env/cf-env-actions.js.map +1 -0
  1051. package/ts/esm/cf-env/index.d.ts.map +1 -0
  1052. package/ts/esm/cf-env/index.js.map +1 -0
  1053. package/ts/esm/cli/generate-version-ts-cmd.d.ts +3 -0
  1054. package/ts/esm/cli/generate-version-ts-cmd.d.ts.map +1 -0
  1055. package/ts/esm/cli/generate-version-ts-cmd.js +43 -0
  1056. package/ts/esm/cli/generate-version-ts-cmd.js.map +1 -0
  1057. package/ts/esm/cli/main.js +6 -1
  1058. package/ts/esm/cli/main.js.map +1 -1
  1059. package/ts/esm/cli/patch-version-cmd.d.ts +0 -4
  1060. package/ts/esm/cli/patch-version-cmd.d.ts.map +1 -1
  1061. package/ts/esm/cli/patch-version-cmd.js +1 -220
  1062. package/ts/esm/cli/patch-version-cmd.js.map +1 -1
  1063. package/ts/esm/cli/prepare-pubdir-cmd.d.ts +4 -0
  1064. package/ts/esm/cli/prepare-pubdir-cmd.d.ts.map +1 -0
  1065. package/ts/esm/cli/prepare-pubdir-cmd.js +113 -0
  1066. package/ts/esm/cli/prepare-pubdir-cmd.js.map +1 -0
  1067. package/ts/esm/cli/publish-tags-cmd.d.ts +3 -0
  1068. package/ts/esm/cli/publish-tags-cmd.d.ts.map +1 -0
  1069. package/ts/esm/cli/publish-tags-cmd.js +61 -0
  1070. package/ts/esm/cli/publish-tags-cmd.js.map +1 -0
  1071. package/ts/esm/cli/setup-deno-json-cmd.d.ts +3 -0
  1072. package/ts/esm/cli/setup-deno-json-cmd.d.ts.map +1 -0
  1073. package/ts/esm/cli/setup-deno-json-cmd.js +41 -0
  1074. package/ts/esm/cli/setup-deno-json-cmd.js.map +1 -0
  1075. package/ts/esm/cli/utils.d.ts +6 -0
  1076. package/ts/esm/cli/utils.d.ts.map +1 -0
  1077. package/ts/esm/cli/utils.js +54 -0
  1078. package/ts/esm/cli/utils.js.map +1 -0
  1079. package/ts/esm/coerce-binary.d.ts +2 -0
  1080. package/ts/esm/coerce-binary.d.ts.map +1 -1
  1081. package/ts/esm/coerce-binary.js +8 -2
  1082. package/ts/esm/coerce-binary.js.map +1 -1
  1083. package/ts/esm/crypto.d.ts.map +1 -1
  1084. package/ts/esm/crypto.js.map +1 -1
  1085. package/ts/esm/deno-env/deno-basic-sys-abstraction.d.ts +13 -0
  1086. package/ts/esm/deno-env/deno-basic-sys-abstraction.d.ts.map +1 -0
  1087. package/ts/esm/deno-env/deno-basic-sys-abstraction.js +35 -0
  1088. package/ts/esm/deno-env/deno-basic-sys-abstraction.js.map +1 -0
  1089. package/ts/esm/deno-env/deno-env-actions.d.ts.map +1 -0
  1090. package/ts/esm/deno-env/deno-env-actions.js +40 -0
  1091. package/ts/esm/deno-env/deno-env-actions.js.map +1 -0
  1092. package/ts/esm/deno-env/index.d.ts +3 -0
  1093. package/ts/esm/deno-env/index.d.ts.map +1 -0
  1094. package/ts/esm/deno-env/index.js +3 -0
  1095. package/ts/esm/deno-env/index.js.map +1 -0
  1096. package/ts/esm/deno-fs/deno-basic-sys-abstraction.d.ts +11 -0
  1097. package/ts/esm/deno-fs/deno-basic-sys-abstraction.d.ts.map +1 -0
  1098. package/ts/esm/deno-fs/deno-basic-sys-abstraction.js +32 -0
  1099. package/ts/esm/deno-fs/deno-basic-sys-abstraction.js.map +1 -0
  1100. package/ts/esm/deno-fs/deno-env-actions.d.ts +23 -0
  1101. package/ts/esm/deno-fs/deno-env-actions.d.ts.map +1 -0
  1102. package/ts/esm/deno-fs/deno-env-actions.js +39 -0
  1103. package/ts/esm/deno-fs/deno-env-actions.js.map +1 -0
  1104. package/ts/esm/deno-fs/deno-file-service.d.ts +16 -0
  1105. package/ts/esm/deno-fs/deno-file-service.d.ts.map +1 -0
  1106. package/ts/esm/deno-fs/deno-file-service.js +66 -0
  1107. package/ts/esm/deno-fs/deno-file-service.js.map +1 -0
  1108. package/ts/esm/deno-fs/deno-sys-abstraction.d.ts +18 -0
  1109. package/ts/esm/deno-fs/deno-sys-abstraction.d.ts.map +1 -0
  1110. package/ts/esm/deno-fs/deno-sys-abstraction.js +97 -0
  1111. package/ts/esm/deno-fs/deno-sys-abstraction.js.map +1 -0
  1112. package/ts/esm/deno-fs/index.d.ts +5 -0
  1113. package/ts/esm/deno-fs/index.d.ts.map +1 -0
  1114. package/ts/esm/deno-fs/index.js +5 -0
  1115. package/ts/esm/deno-fs/index.js.map +1 -0
  1116. package/ts/esm/future.d.ts +4 -2
  1117. package/ts/esm/future.d.ts.map +1 -1
  1118. package/ts/esm/future.js +5 -1
  1119. package/ts/esm/future.js.map +1 -1
  1120. package/ts/esm/future.test.js +9 -0
  1121. package/ts/esm/future.test.js.map +1 -1
  1122. package/ts/esm/http_header.d.ts +10 -4
  1123. package/ts/esm/http_header.d.ts.map +1 -1
  1124. package/ts/esm/http_header.js +72 -45
  1125. package/ts/esm/http_header.js.map +1 -1
  1126. package/ts/esm/http_header.test.js +44 -0
  1127. package/ts/esm/http_header.test.js.map +1 -1
  1128. package/ts/esm/import-meta-env.module.d.ts +12 -2
  1129. package/ts/esm/import-meta-env.module.d.ts.map +1 -1
  1130. package/ts/esm/import-meta-env.module.js +4 -13
  1131. package/ts/esm/import-meta-env.module.js.map +1 -1
  1132. package/ts/esm/index.d.ts +19 -1
  1133. package/ts/esm/index.d.ts.map +1 -1
  1134. package/ts/esm/index.js +19 -1
  1135. package/ts/esm/index.js.map +1 -1
  1136. package/ts/esm/is-json.d.ts.map +1 -1
  1137. package/ts/esm/is-json.js.map +1 -1
  1138. package/ts/esm/is-promise.d.ts +1 -1
  1139. package/ts/esm/is-promise.d.ts.map +1 -1
  1140. package/ts/esm/is-promise.js.map +1 -1
  1141. package/ts/esm/keyed-ng.d.ts +52 -0
  1142. package/ts/esm/keyed-ng.d.ts.map +1 -0
  1143. package/ts/esm/keyed-ng.js +90 -0
  1144. package/ts/esm/keyed-ng.js.map +1 -0
  1145. package/ts/esm/keyed-ng.test.d.ts +2 -0
  1146. package/ts/esm/keyed-ng.test.d.ts.map +1 -0
  1147. package/ts/esm/keyed-ng.test.js +149 -0
  1148. package/ts/esm/keyed-ng.test.js.map +1 -0
  1149. package/ts/esm/log-level-impl.d.ts +2 -1
  1150. package/ts/esm/log-level-impl.d.ts.map +1 -1
  1151. package/ts/esm/log-level-impl.js +1 -1
  1152. package/ts/esm/log-level-impl.js.map +1 -1
  1153. package/ts/esm/logger-impl.d.ts +3 -4
  1154. package/ts/esm/logger-impl.d.ts.map +1 -1
  1155. package/ts/esm/logger-impl.js +5 -8
  1156. package/ts/esm/logger-impl.js.map +1 -1
  1157. package/ts/esm/logger.d.ts +1 -16
  1158. package/ts/esm/logger.d.ts.map +1 -1
  1159. package/ts/esm/logger.js +11 -25
  1160. package/ts/esm/logger.js.map +1 -1
  1161. package/ts/esm/logger.test.js +12 -8
  1162. package/ts/esm/logger.test.js.map +1 -1
  1163. package/ts/esm/lru-map-set.d.ts +4 -1
  1164. package/ts/esm/lru-map-set.d.ts.map +1 -1
  1165. package/ts/esm/lru-map-set.js +2 -1
  1166. package/ts/esm/lru-map-set.js.map +1 -1
  1167. package/ts/esm/mutable-url.js +1 -1
  1168. package/ts/esm/mutable-url.js.map +1 -1
  1169. package/ts/esm/mutable-url.test.js +1 -0
  1170. package/ts/esm/mutable-url.test.js.map +1 -1
  1171. package/ts/esm/node-env/index.d.ts +3 -0
  1172. package/ts/esm/node-env/index.d.ts.map +1 -0
  1173. package/ts/esm/node-env/index.js +3 -0
  1174. package/ts/esm/node-env/index.js.map +1 -0
  1175. package/ts/esm/node-env/node-basic-sys-abstraction.d.ts +26 -0
  1176. package/ts/esm/node-env/node-basic-sys-abstraction.d.ts.map +1 -0
  1177. package/ts/esm/node-env/node-basic-sys-abstraction.js +47 -0
  1178. package/ts/esm/node-env/node-basic-sys-abstraction.js.map +1 -0
  1179. package/ts/esm/node-env/node-env-actions.d.ts +15 -0
  1180. package/ts/esm/node-env/node-env-actions.d.ts.map +1 -0
  1181. package/ts/esm/node-env/node-env-actions.js +39 -0
  1182. package/ts/esm/node-env/node-env-actions.js.map +1 -0
  1183. package/ts/esm/node-fs/get-iface-adr.d.ts.map +1 -0
  1184. package/ts/esm/node-fs/get-iface-adr.js.map +1 -0
  1185. package/ts/esm/node-fs/index.d.ts.map +1 -0
  1186. package/ts/esm/node-fs/index.js.map +1 -0
  1187. package/ts/esm/node-fs/mock-file-service.d.ts +11 -0
  1188. package/ts/esm/node-fs/mock-file-service.d.ts.map +1 -0
  1189. package/ts/esm/node-fs/mock-file-service.js +31 -0
  1190. package/ts/esm/node-fs/mock-file-service.js.map +1 -0
  1191. package/ts/esm/node-fs/mock-file-service.test.d.ts.map +1 -0
  1192. package/ts/esm/node-fs/mock-file-service.test.js +31 -0
  1193. package/ts/esm/node-fs/mock-file-service.test.js.map +1 -0
  1194. package/ts/esm/node-fs/node-file-service.d.ts +16 -0
  1195. package/ts/esm/node-fs/node-file-service.d.ts.map +1 -0
  1196. package/ts/esm/node-fs/node-file-service.js +73 -0
  1197. package/ts/esm/node-fs/node-file-service.js.map +1 -0
  1198. package/ts/esm/node-fs/node-sys-abstraction.d.ts +18 -0
  1199. package/ts/esm/node-fs/node-sys-abstraction.d.ts.map +1 -0
  1200. package/ts/esm/node-fs/node-sys-abstraction.js +95 -0
  1201. package/ts/esm/node-fs/node-sys-abstraction.js.map +1 -0
  1202. package/ts/esm/node-fs/node-sys-abstraction.test.d.ts.map +1 -0
  1203. package/ts/esm/node-fs/node-sys-abstraction.test.js.map +1 -0
  1204. package/ts/esm/on-func.d.ts +15 -0
  1205. package/ts/esm/on-func.d.ts.map +1 -0
  1206. package/ts/esm/on-func.js +54 -0
  1207. package/ts/esm/on-func.js.map +1 -0
  1208. package/ts/esm/on-func.test.d.ts +27 -0
  1209. package/ts/esm/on-func.test.d.ts.map +1 -0
  1210. package/ts/esm/on-func.test.js +95 -0
  1211. package/ts/esm/on-func.test.js.map +1 -0
  1212. package/ts/esm/option.d.ts.map +1 -1
  1213. package/ts/esm/option.js.map +1 -1
  1214. package/ts/esm/path-ops.test.js.map +1 -1
  1215. package/ts/esm/poller.d.ts +51 -0
  1216. package/ts/esm/poller.d.ts.map +1 -0
  1217. package/ts/esm/poller.js +146 -0
  1218. package/ts/esm/poller.js.map +1 -0
  1219. package/ts/esm/poller.test.d.ts +2 -0
  1220. package/ts/esm/poller.test.d.ts.map +1 -0
  1221. package/ts/esm/poller.test.js +162 -0
  1222. package/ts/esm/poller.test.js.map +1 -0
  1223. package/ts/esm/promise-sleep.d.ts +29 -0
  1224. package/ts/esm/promise-sleep.d.ts.map +1 -0
  1225. package/ts/esm/promise-sleep.js +30 -0
  1226. package/ts/esm/promise-sleep.js.map +1 -0
  1227. package/ts/esm/promise-sleep.test.d.ts +2 -0
  1228. package/ts/esm/promise-sleep.test.d.ts.map +1 -0
  1229. package/ts/esm/promise-sleep.test.js +62 -0
  1230. package/ts/esm/promise-sleep.test.js.map +1 -0
  1231. package/ts/esm/resolve-once.d.ts +60 -44
  1232. package/ts/esm/resolve-once.d.ts.map +1 -1
  1233. package/ts/esm/resolve-once.js +227 -111
  1234. package/ts/esm/resolve-once.js.map +1 -1
  1235. package/ts/esm/resolve-once.test.js +249 -48
  1236. package/ts/esm/resolve-once.test.js.map +1 -1
  1237. package/ts/esm/result.d.ts +3 -3
  1238. package/ts/esm/result.d.ts.map +1 -1
  1239. package/ts/esm/result.js.map +1 -1
  1240. package/ts/esm/runtime.d.ts.map +1 -1
  1241. package/ts/esm/runtime.js.map +1 -1
  1242. package/ts/esm/sys-env.d.ts +4 -2
  1243. package/ts/esm/sys-env.d.ts.map +1 -1
  1244. package/ts/esm/sys-env.js +19 -11
  1245. package/ts/esm/sys-env.js.map +1 -1
  1246. package/ts/esm/sys-env.test.js +2 -2
  1247. package/ts/esm/sys-env.test.js.map +1 -1
  1248. package/ts/esm/test/log-write-stream.d.ts +1 -2
  1249. package/ts/esm/test/log-write-stream.d.ts.map +1 -1
  1250. package/ts/esm/test/log-write-stream.js +1 -3
  1251. package/ts/esm/test/log-write-stream.js.map +1 -1
  1252. package/ts/esm/test/mock-logger.d.ts +1 -2
  1253. package/ts/esm/test/mock-logger.d.ts.map +1 -1
  1254. package/ts/esm/test/mock-logger.js +1 -2
  1255. package/ts/esm/test/mock-logger.js.map +1 -1
  1256. package/ts/esm/test/test-exit-handler.js +11 -4
  1257. package/ts/esm/test/test-exit-handler.js.map +1 -1
  1258. package/ts/esm/timeouted.d.ts +60 -0
  1259. package/ts/esm/timeouted.d.ts.map +1 -0
  1260. package/ts/esm/timeouted.js +144 -0
  1261. package/ts/esm/timeouted.js.map +1 -0
  1262. package/ts/esm/timeouted.test.d.ts +2 -0
  1263. package/ts/esm/timeouted.test.d.ts.map +1 -0
  1264. package/ts/esm/timeouted.test.js +724 -0
  1265. package/ts/esm/timeouted.test.js.map +1 -0
  1266. package/ts/esm/tracer.d.ts.map +1 -1
  1267. package/ts/esm/tracer.js.map +1 -1
  1268. package/ts/esm/txt-en-decoder.d.ts +1 -1
  1269. package/ts/esm/txt-en-decoder.d.ts.map +1 -1
  1270. package/ts/esm/txt-en-decoder.js +2 -5
  1271. package/ts/esm/txt-en-decoder.js.map +1 -1
  1272. package/ts/esm/types.d.ts +30 -0
  1273. package/ts/esm/types.d.ts.map +1 -1
  1274. package/ts/esm/types.js +24 -0
  1275. package/ts/esm/types.js.map +1 -1
  1276. package/ts/esm/uri.d.ts +2 -3
  1277. package/ts/esm/uri.d.ts.map +1 -1
  1278. package/ts/esm/uri.js +3 -4
  1279. package/ts/esm/uri.js.map +1 -1
  1280. package/ts/esm/utils/coerce-uint8.d.ts +1 -1
  1281. package/ts/esm/utils/coerce-uint8.d.ts.map +1 -1
  1282. package/ts/esm/utils/coerce-uint8.js +1 -1
  1283. package/ts/esm/utils/coerce-uint8.js.map +1 -1
  1284. package/ts/esm/utils/console-write-stream.d.ts.map +1 -1
  1285. package/ts/esm/utils/console-write-stream.js.map +1 -1
  1286. package/ts/esm/utils/consume.d.ts.map +1 -1
  1287. package/ts/esm/utils/consume.js +1 -1
  1288. package/ts/esm/utils/consume.js.map +1 -1
  1289. package/ts/esm/utils/consume.test.js.map +1 -1
  1290. package/ts/esm/utils/fanout-write-stream.d.ts.map +1 -1
  1291. package/ts/esm/utils/fanout-write-stream.js.map +1 -1
  1292. package/ts/esm/utils/get-params-result.d.ts +1 -2
  1293. package/ts/esm/utils/get-params-result.d.ts.map +1 -1
  1294. package/ts/esm/utils/get-params-result.js +1 -2
  1295. package/ts/esm/utils/get-params-result.js.map +1 -1
  1296. package/ts/esm/utils/rebuffer.d.ts.map +1 -1
  1297. package/ts/esm/utils/rebuffer.js.map +1 -1
  1298. package/ts/esm/utils/rebuffer.test.js +7 -7
  1299. package/ts/esm/utils/rebuffer.test.js.map +1 -1
  1300. package/ts/esm/utils/relative-path.d.ts.map +1 -1
  1301. package/ts/esm/utils/relative-path.js.map +1 -1
  1302. package/ts/esm/utils/sorted-object.d.ts +4 -3
  1303. package/ts/esm/utils/sorted-object.d.ts.map +1 -1
  1304. package/ts/esm/utils/sorted-object.js +7 -6
  1305. package/ts/esm/utils/sorted-object.js.map +1 -1
  1306. package/ts/esm/utils/sorted-object.test.d.ts +2 -0
  1307. package/ts/esm/utils/sorted-object.test.d.ts.map +1 -0
  1308. package/ts/esm/utils/sorted-object.test.js +20 -0
  1309. package/ts/esm/utils/sorted-object.test.js.map +1 -0
  1310. package/ts/esm/utils/stream-map.d.ts.map +1 -1
  1311. package/ts/esm/utils/stream-map.js.map +1 -1
  1312. package/ts/esm/utils/stream-map.test.js +8 -8
  1313. package/ts/esm/utils/stream-map.test.js.map +1 -1
  1314. package/ts/esm/utils/stream2string.d.ts.map +1 -1
  1315. package/ts/esm/utils/stream2string.js.map +1 -1
  1316. package/ts/esm/utils/stream2string.test.js +1 -1
  1317. package/ts/esm/utils/stream2string.test.js.map +1 -1
  1318. package/ts/esm/utils/string2stream.d.ts.map +1 -1
  1319. package/ts/esm/utils/string2stream.js.map +1 -1
  1320. package/ts/esm/utils/string2stream.test.js +4 -3
  1321. package/ts/esm/utils/string2stream.test.js.map +1 -1
  1322. package/ts/esm/utils/stripper.d.ts.map +1 -1
  1323. package/ts/esm/utils/stripper.js.map +1 -1
  1324. package/ts/esm/utils/to-sorted.d.ts +16 -0
  1325. package/ts/esm/utils/to-sorted.d.ts.map +1 -0
  1326. package/ts/esm/utils/to-sorted.js +70 -0
  1327. package/ts/esm/utils/to-sorted.js.map +1 -0
  1328. package/ts/esm/utils/to-sorted.test.d.ts +2 -0
  1329. package/ts/esm/utils/to-sorted.test.d.ts.map +1 -0
  1330. package/ts/esm/utils/to-sorted.test.js +227 -0
  1331. package/ts/esm/utils/to-sorted.test.js.map +1 -0
  1332. package/ts/esm/utils/uint8array-equal.d.ts.map +1 -1
  1333. package/ts/esm/utils/uint8array-equal.js.map +1 -1
  1334. package/ts/esm/version.js +1 -1
  1335. package/ts/esm/web-env/index.d.ts +3 -0
  1336. package/ts/esm/web-env/index.d.ts.map +1 -0
  1337. package/ts/esm/web-env/index.js +3 -0
  1338. package/ts/esm/web-env/index.js.map +1 -0
  1339. package/ts/esm/web-env/web-basic-sys-abstraction.d.ts +4 -0
  1340. package/ts/esm/web-env/web-basic-sys-abstraction.d.ts.map +1 -0
  1341. package/ts/esm/web-env/web-basic-sys-abstraction.js +49 -0
  1342. package/ts/esm/web-env/web-basic-sys-abstraction.js.map +1 -0
  1343. package/ts/esm/web-env/web-env-actions.d.ts +14 -0
  1344. package/ts/esm/web-env/web-env-actions.d.ts.map +1 -0
  1345. package/ts/esm/web-env/web-env-actions.js +36 -0
  1346. package/ts/esm/web-env/web-env-actions.js.map +1 -0
  1347. package/tsconfig.json +25 -0
  1348. package/cjs/cf/cf-basic-sys-abstraction.cjs +0 -72
  1349. package/cjs/cf/cf-basic-sys-abstraction.cjs.map +0 -1
  1350. package/cjs/cf/cf-basic-sys-abstraction.d.ts +0 -14
  1351. package/cjs/cf/cf-basic-sys-abstraction.d.ts.map +0 -1
  1352. package/cjs/cf/cf-env-actions.cjs +0 -57
  1353. package/cjs/cf/cf-env-actions.cjs.map +0 -1
  1354. package/cjs/cf/cf-env-actions.d.ts +0 -16
  1355. package/cjs/cf/cf-env-actions.d.ts.map +0 -1
  1356. package/cjs/cf/index.cjs.map +0 -1
  1357. package/cjs/cf/index.d.ts.map +0 -1
  1358. package/cjs/deno/deno-basic-sys-abstraction.cjs +0 -40
  1359. package/cjs/deno/deno-basic-sys-abstraction.cjs.map +0 -1
  1360. package/cjs/deno/deno-basic-sys-abstraction.d.ts +0 -14
  1361. package/cjs/deno/deno-basic-sys-abstraction.d.ts.map +0 -1
  1362. package/cjs/deno/deno-env-actions.cjs +0 -44
  1363. package/cjs/deno/deno-env-actions.cjs.map +0 -1
  1364. package/cjs/deno/deno-env-actions.d.ts.map +0 -1
  1365. package/cjs/deno/deno-file-service.cjs +0 -104
  1366. package/cjs/deno/deno-file-service.cjs.map +0 -1
  1367. package/cjs/deno/deno-file-service.d.ts +0 -17
  1368. package/cjs/deno/deno-file-service.d.ts.map +0 -1
  1369. package/cjs/deno/deno-sys-abstraction.cjs +0 -103
  1370. package/cjs/deno/deno-sys-abstraction.cjs.map +0 -1
  1371. package/cjs/deno/deno-sys-abstraction.d.ts +0 -19
  1372. package/cjs/deno/deno-sys-abstraction.d.ts.map +0 -1
  1373. package/cjs/deno/index.cjs +0 -19
  1374. package/cjs/deno/index.cjs.map +0 -1
  1375. package/cjs/deno/index.d.ts +0 -3
  1376. package/cjs/deno/index.d.ts.map +0 -1
  1377. package/cjs/index.cjs.cjs +0 -69
  1378. package/cjs/index.cjs.cjs.map +0 -1
  1379. package/cjs/index.cjs.d.ts +0 -30
  1380. package/cjs/index.cjs.d.ts.map +0 -1
  1381. package/cjs/node/get-iface-adr.cjs.map +0 -1
  1382. package/cjs/node/get-iface-adr.d.ts.map +0 -1
  1383. package/cjs/node/index.cjs.map +0 -1
  1384. package/cjs/node/index.d.ts.map +0 -1
  1385. package/cjs/node/mock-file-service.cjs +0 -36
  1386. package/cjs/node/mock-file-service.cjs.map +0 -1
  1387. package/cjs/node/mock-file-service.d.ts +0 -11
  1388. package/cjs/node/mock-file-service.d.ts.map +0 -1
  1389. package/cjs/node/mock-file-service.test.cjs +0 -66
  1390. package/cjs/node/mock-file-service.test.cjs.map +0 -1
  1391. package/cjs/node/mock-file-service.test.d.ts.map +0 -1
  1392. package/cjs/node/node-basic-sys-abstraction.cjs +0 -50
  1393. package/cjs/node/node-basic-sys-abstraction.cjs.map +0 -1
  1394. package/cjs/node/node-basic-sys-abstraction.d.ts +0 -25
  1395. package/cjs/node/node-basic-sys-abstraction.d.ts.map +0 -1
  1396. package/cjs/node/node-env-actions.cjs +0 -43
  1397. package/cjs/node/node-env-actions.cjs.map +0 -1
  1398. package/cjs/node/node-env-actions.d.ts +0 -17
  1399. package/cjs/node/node-env-actions.d.ts.map +0 -1
  1400. package/cjs/node/node-file-service.cjs +0 -79
  1401. package/cjs/node/node-file-service.cjs.map +0 -1
  1402. package/cjs/node/node-file-service.d.ts +0 -16
  1403. package/cjs/node/node-file-service.d.ts.map +0 -1
  1404. package/cjs/node/node-sys-abstraction.cjs +0 -105
  1405. package/cjs/node/node-sys-abstraction.cjs.map +0 -1
  1406. package/cjs/node/node-sys-abstraction.d.ts +0 -19
  1407. package/cjs/node/node-sys-abstraction.d.ts.map +0 -1
  1408. package/cjs/node/node-sys-abstraction.test.cjs.map +0 -1
  1409. package/cjs/node/node-sys-abstraction.test.d.ts.map +0 -1
  1410. package/cjs/utils/index.cjs +0 -29
  1411. package/cjs/utils/index.cjs.map +0 -1
  1412. package/cjs/utils/index.d.ts +0 -13
  1413. package/cjs/utils/index.d.ts.map +0 -1
  1414. package/cjs/utils/sorted-objec.test.cjs +0 -22
  1415. package/cjs/utils/sorted-objec.test.cjs.map +0 -1
  1416. package/cjs/utils/sorted-objec.test.d.ts +0 -2
  1417. package/cjs/utils/sorted-objec.test.d.ts.map +0 -1
  1418. package/cjs/web/index.cjs +0 -18
  1419. package/cjs/web/index.cjs.map +0 -1
  1420. package/cjs/web/index.d.ts +0 -2
  1421. package/cjs/web/index.d.ts.map +0 -1
  1422. package/cjs/web/web-basic-sys-abstraction.cjs +0 -48
  1423. package/cjs/web/web-basic-sys-abstraction.cjs.map +0 -1
  1424. package/cjs/web/web-basic-sys-abstraction.d.ts +0 -4
  1425. package/cjs/web/web-basic-sys-abstraction.d.ts.map +0 -1
  1426. package/cjs/web/web-env-actions.cjs +0 -40
  1427. package/cjs/web/web-env-actions.cjs.map +0 -1
  1428. package/cjs/web/web-env-actions.d.ts +0 -14
  1429. package/cjs/web/web-env-actions.d.ts.map +0 -1
  1430. package/esm/cf/cf-basic-sys-abstraction.d.ts +0 -14
  1431. package/esm/cf/cf-basic-sys-abstraction.d.ts.map +0 -1
  1432. package/esm/cf/cf-basic-sys-abstraction.js +0 -67
  1433. package/esm/cf/cf-basic-sys-abstraction.js.map +0 -1
  1434. package/esm/cf/cf-env-actions.d.ts +0 -16
  1435. package/esm/cf/cf-env-actions.d.ts.map +0 -1
  1436. package/esm/cf/cf-env-actions.js +0 -53
  1437. package/esm/cf/cf-env-actions.js.map +0 -1
  1438. package/esm/cf/index.d.ts.map +0 -1
  1439. package/esm/cf/index.js.map +0 -1
  1440. package/esm/deno/deno-basic-sys-abstraction.d.ts +0 -14
  1441. package/esm/deno/deno-basic-sys-abstraction.d.ts.map +0 -1
  1442. package/esm/deno/deno-basic-sys-abstraction.js +0 -35
  1443. package/esm/deno/deno-basic-sys-abstraction.js.map +0 -1
  1444. package/esm/deno/deno-env-actions.d.ts.map +0 -1
  1445. package/esm/deno/deno-env-actions.js +0 -40
  1446. package/esm/deno/deno-env-actions.js.map +0 -1
  1447. package/esm/deno/deno-file-service.d.ts +0 -17
  1448. package/esm/deno/deno-file-service.d.ts.map +0 -1
  1449. package/esm/deno/deno-file-service.js +0 -67
  1450. package/esm/deno/deno-file-service.js.map +0 -1
  1451. package/esm/deno/deno-sys-abstraction.d.ts +0 -19
  1452. package/esm/deno/deno-sys-abstraction.d.ts.map +0 -1
  1453. package/esm/deno/deno-sys-abstraction.js +0 -97
  1454. package/esm/deno/deno-sys-abstraction.js.map +0 -1
  1455. package/esm/deno/index.d.ts +0 -3
  1456. package/esm/deno/index.d.ts.map +0 -1
  1457. package/esm/deno/index.js +0 -3
  1458. package/esm/deno/index.js.map +0 -1
  1459. package/esm/index.cjs.d.ts +0 -30
  1460. package/esm/index.cjs.d.ts.map +0 -1
  1461. package/esm/index.cjs.js +0 -30
  1462. package/esm/index.cjs.js.map +0 -1
  1463. package/esm/node/get-iface-adr.d.ts.map +0 -1
  1464. package/esm/node/get-iface-adr.js.map +0 -1
  1465. package/esm/node/index.d.ts.map +0 -1
  1466. package/esm/node/index.js.map +0 -1
  1467. package/esm/node/mock-file-service.d.ts +0 -11
  1468. package/esm/node/mock-file-service.d.ts.map +0 -1
  1469. package/esm/node/mock-file-service.js +0 -32
  1470. package/esm/node/mock-file-service.js.map +0 -1
  1471. package/esm/node/mock-file-service.test.d.ts.map +0 -1
  1472. package/esm/node/mock-file-service.test.js +0 -31
  1473. package/esm/node/mock-file-service.test.js.map +0 -1
  1474. package/esm/node/node-basic-sys-abstraction.d.ts +0 -25
  1475. package/esm/node/node-basic-sys-abstraction.d.ts.map +0 -1
  1476. package/esm/node/node-basic-sys-abstraction.js +0 -45
  1477. package/esm/node/node-basic-sys-abstraction.js.map +0 -1
  1478. package/esm/node/node-env-actions.d.ts +0 -17
  1479. package/esm/node/node-env-actions.d.ts.map +0 -1
  1480. package/esm/node/node-env-actions.js +0 -39
  1481. package/esm/node/node-env-actions.js.map +0 -1
  1482. package/esm/node/node-file-service.d.ts +0 -16
  1483. package/esm/node/node-file-service.d.ts.map +0 -1
  1484. package/esm/node/node-file-service.js +0 -72
  1485. package/esm/node/node-file-service.js.map +0 -1
  1486. package/esm/node/node-sys-abstraction.d.ts +0 -19
  1487. package/esm/node/node-sys-abstraction.d.ts.map +0 -1
  1488. package/esm/node/node-sys-abstraction.js +0 -96
  1489. package/esm/node/node-sys-abstraction.js.map +0 -1
  1490. package/esm/node/node-sys-abstraction.test.d.ts.map +0 -1
  1491. package/esm/node/node-sys-abstraction.test.js.map +0 -1
  1492. package/esm/utils/index.d.ts +0 -13
  1493. package/esm/utils/index.d.ts.map +0 -1
  1494. package/esm/utils/index.js +0 -13
  1495. package/esm/utils/index.js.map +0 -1
  1496. package/esm/utils/sorted-objec.test.d.ts +0 -2
  1497. package/esm/utils/sorted-objec.test.d.ts.map +0 -1
  1498. package/esm/utils/sorted-objec.test.js +0 -20
  1499. package/esm/utils/sorted-objec.test.js.map +0 -1
  1500. package/esm/web/index.d.ts +0 -2
  1501. package/esm/web/index.d.ts.map +0 -1
  1502. package/esm/web/index.js +0 -2
  1503. package/esm/web/index.js.map +0 -1
  1504. package/esm/web/web-basic-sys-abstraction.d.ts +0 -4
  1505. package/esm/web/web-basic-sys-abstraction.d.ts.map +0 -1
  1506. package/esm/web/web-basic-sys-abstraction.js +0 -45
  1507. package/esm/web/web-basic-sys-abstraction.js.map +0 -1
  1508. package/esm/web/web-env-actions.d.ts +0 -14
  1509. package/esm/web/web-env-actions.d.ts.map +0 -1
  1510. package/esm/web/web-env-actions.js +0 -36
  1511. package/esm/web/web-env-actions.js.map +0 -1
  1512. package/src/cf/cf-basic-sys-abstraction.ts +0 -79
  1513. package/src/cf/cf-env-actions.ts +0 -53
  1514. package/src/deno/deno-basic-sys-abstraction.ts +0 -41
  1515. package/src/deno/deno-env-actions.ts +0 -57
  1516. package/src/deno/deno-file-service.ts +0 -92
  1517. package/src/deno/deno-sys-abstraction.ts +0 -131
  1518. package/src/deno/index.ts +0 -2
  1519. package/src/index.cjs.ts +0 -34
  1520. package/src/node/mock-file-service.ts +0 -46
  1521. package/src/node/node-basic-sys-abstraction.ts +0 -59
  1522. package/src/node/node-env-actions.ts +0 -93
  1523. package/src/node/node-file-service.ts +0 -91
  1524. package/src/node/node-sys-abstraction.ts +0 -118
  1525. package/src/utils/index.ts +0 -12
  1526. package/src/web/index.ts +0 -1
  1527. package/src/web/web-basic-sys-abstraction.ts +0 -105
  1528. package/src/web/web-env-actions.ts +0 -41
  1529. package/ts/cjs/cf/cf-basic-sys-abstraction.d.ts +0 -14
  1530. package/ts/cjs/cf/cf-basic-sys-abstraction.d.ts.map +0 -1
  1531. package/ts/cjs/cf/cf-basic-sys-abstraction.js +0 -72
  1532. package/ts/cjs/cf/cf-basic-sys-abstraction.js.map +0 -1
  1533. package/ts/cjs/cf/cf-env-actions.d.ts +0 -16
  1534. package/ts/cjs/cf/cf-env-actions.d.ts.map +0 -1
  1535. package/ts/cjs/cf/cf-env-actions.js +0 -57
  1536. package/ts/cjs/cf/cf-env-actions.js.map +0 -1
  1537. package/ts/cjs/cf/index.d.ts.map +0 -1
  1538. package/ts/cjs/cf/index.js.map +0 -1
  1539. package/ts/cjs/deno/deno-basic-sys-abstraction.d.ts +0 -14
  1540. package/ts/cjs/deno/deno-basic-sys-abstraction.d.ts.map +0 -1
  1541. package/ts/cjs/deno/deno-basic-sys-abstraction.js +0 -40
  1542. package/ts/cjs/deno/deno-basic-sys-abstraction.js.map +0 -1
  1543. package/ts/cjs/deno/deno-env-actions.d.ts.map +0 -1
  1544. package/ts/cjs/deno/deno-env-actions.js +0 -44
  1545. package/ts/cjs/deno/deno-env-actions.js.map +0 -1
  1546. package/ts/cjs/deno/deno-file-service.d.ts +0 -17
  1547. package/ts/cjs/deno/deno-file-service.d.ts.map +0 -1
  1548. package/ts/cjs/deno/deno-file-service.js +0 -104
  1549. package/ts/cjs/deno/deno-file-service.js.map +0 -1
  1550. package/ts/cjs/deno/deno-sys-abstraction.d.ts +0 -19
  1551. package/ts/cjs/deno/deno-sys-abstraction.d.ts.map +0 -1
  1552. package/ts/cjs/deno/deno-sys-abstraction.js +0 -103
  1553. package/ts/cjs/deno/deno-sys-abstraction.js.map +0 -1
  1554. package/ts/cjs/deno/index.d.ts +0 -3
  1555. package/ts/cjs/deno/index.d.ts.map +0 -1
  1556. package/ts/cjs/deno/index.js +0 -19
  1557. package/ts/cjs/deno/index.js.map +0 -1
  1558. package/ts/cjs/index.cjs.d.ts +0 -30
  1559. package/ts/cjs/index.cjs.d.ts.map +0 -1
  1560. package/ts/cjs/index.cjs.js +0 -69
  1561. package/ts/cjs/index.cjs.js.map +0 -1
  1562. package/ts/cjs/node/get-iface-adr.d.ts.map +0 -1
  1563. package/ts/cjs/node/get-iface-adr.js.map +0 -1
  1564. package/ts/cjs/node/index.d.ts.map +0 -1
  1565. package/ts/cjs/node/index.js.map +0 -1
  1566. package/ts/cjs/node/mock-file-service.d.ts +0 -11
  1567. package/ts/cjs/node/mock-file-service.d.ts.map +0 -1
  1568. package/ts/cjs/node/mock-file-service.js +0 -36
  1569. package/ts/cjs/node/mock-file-service.js.map +0 -1
  1570. package/ts/cjs/node/mock-file-service.test.d.ts.map +0 -1
  1571. package/ts/cjs/node/mock-file-service.test.js +0 -66
  1572. package/ts/cjs/node/mock-file-service.test.js.map +0 -1
  1573. package/ts/cjs/node/node-basic-sys-abstraction.d.ts +0 -25
  1574. package/ts/cjs/node/node-basic-sys-abstraction.d.ts.map +0 -1
  1575. package/ts/cjs/node/node-basic-sys-abstraction.js +0 -50
  1576. package/ts/cjs/node/node-basic-sys-abstraction.js.map +0 -1
  1577. package/ts/cjs/node/node-env-actions.d.ts +0 -17
  1578. package/ts/cjs/node/node-env-actions.d.ts.map +0 -1
  1579. package/ts/cjs/node/node-env-actions.js +0 -43
  1580. package/ts/cjs/node/node-env-actions.js.map +0 -1
  1581. package/ts/cjs/node/node-file-service.d.ts +0 -16
  1582. package/ts/cjs/node/node-file-service.d.ts.map +0 -1
  1583. package/ts/cjs/node/node-file-service.js +0 -79
  1584. package/ts/cjs/node/node-file-service.js.map +0 -1
  1585. package/ts/cjs/node/node-sys-abstraction.d.ts +0 -19
  1586. package/ts/cjs/node/node-sys-abstraction.d.ts.map +0 -1
  1587. package/ts/cjs/node/node-sys-abstraction.js +0 -105
  1588. package/ts/cjs/node/node-sys-abstraction.js.map +0 -1
  1589. package/ts/cjs/node/node-sys-abstraction.test.d.ts.map +0 -1
  1590. package/ts/cjs/node/node-sys-abstraction.test.js.map +0 -1
  1591. package/ts/cjs/utils/index.d.ts +0 -13
  1592. package/ts/cjs/utils/index.d.ts.map +0 -1
  1593. package/ts/cjs/utils/index.js +0 -29
  1594. package/ts/cjs/utils/index.js.map +0 -1
  1595. package/ts/cjs/utils/sorted-objec.test.d.ts +0 -2
  1596. package/ts/cjs/utils/sorted-objec.test.d.ts.map +0 -1
  1597. package/ts/cjs/utils/sorted-objec.test.js +0 -22
  1598. package/ts/cjs/utils/sorted-objec.test.js.map +0 -1
  1599. package/ts/cjs/web/index.d.ts +0 -2
  1600. package/ts/cjs/web/index.d.ts.map +0 -1
  1601. package/ts/cjs/web/index.js +0 -18
  1602. package/ts/cjs/web/index.js.map +0 -1
  1603. package/ts/cjs/web/web-basic-sys-abstraction.d.ts +0 -4
  1604. package/ts/cjs/web/web-basic-sys-abstraction.d.ts.map +0 -1
  1605. package/ts/cjs/web/web-basic-sys-abstraction.js +0 -48
  1606. package/ts/cjs/web/web-basic-sys-abstraction.js.map +0 -1
  1607. package/ts/cjs/web/web-env-actions.d.ts +0 -14
  1608. package/ts/cjs/web/web-env-actions.d.ts.map +0 -1
  1609. package/ts/cjs/web/web-env-actions.js +0 -40
  1610. package/ts/cjs/web/web-env-actions.js.map +0 -1
  1611. package/ts/esm/cf/cf-basic-sys-abstraction.d.ts +0 -14
  1612. package/ts/esm/cf/cf-basic-sys-abstraction.d.ts.map +0 -1
  1613. package/ts/esm/cf/cf-basic-sys-abstraction.js +0 -67
  1614. package/ts/esm/cf/cf-basic-sys-abstraction.js.map +0 -1
  1615. package/ts/esm/cf/cf-env-actions.d.ts +0 -16
  1616. package/ts/esm/cf/cf-env-actions.d.ts.map +0 -1
  1617. package/ts/esm/cf/cf-env-actions.js +0 -53
  1618. package/ts/esm/cf/cf-env-actions.js.map +0 -1
  1619. package/ts/esm/cf/index.d.ts.map +0 -1
  1620. package/ts/esm/cf/index.js.map +0 -1
  1621. package/ts/esm/deno/deno-basic-sys-abstraction.d.ts +0 -14
  1622. package/ts/esm/deno/deno-basic-sys-abstraction.d.ts.map +0 -1
  1623. package/ts/esm/deno/deno-basic-sys-abstraction.js +0 -35
  1624. package/ts/esm/deno/deno-basic-sys-abstraction.js.map +0 -1
  1625. package/ts/esm/deno/deno-env-actions.d.ts.map +0 -1
  1626. package/ts/esm/deno/deno-env-actions.js +0 -40
  1627. package/ts/esm/deno/deno-env-actions.js.map +0 -1
  1628. package/ts/esm/deno/deno-file-service.d.ts +0 -17
  1629. package/ts/esm/deno/deno-file-service.d.ts.map +0 -1
  1630. package/ts/esm/deno/deno-file-service.js +0 -67
  1631. package/ts/esm/deno/deno-file-service.js.map +0 -1
  1632. package/ts/esm/deno/deno-sys-abstraction.d.ts +0 -19
  1633. package/ts/esm/deno/deno-sys-abstraction.d.ts.map +0 -1
  1634. package/ts/esm/deno/deno-sys-abstraction.js +0 -97
  1635. package/ts/esm/deno/deno-sys-abstraction.js.map +0 -1
  1636. package/ts/esm/deno/index.d.ts +0 -3
  1637. package/ts/esm/deno/index.d.ts.map +0 -1
  1638. package/ts/esm/deno/index.js +0 -3
  1639. package/ts/esm/deno/index.js.map +0 -1
  1640. package/ts/esm/index.cjs.d.ts +0 -30
  1641. package/ts/esm/index.cjs.d.ts.map +0 -1
  1642. package/ts/esm/index.cjs.js +0 -30
  1643. package/ts/esm/index.cjs.js.map +0 -1
  1644. package/ts/esm/node/get-iface-adr.d.ts.map +0 -1
  1645. package/ts/esm/node/get-iface-adr.js.map +0 -1
  1646. package/ts/esm/node/index.d.ts.map +0 -1
  1647. package/ts/esm/node/index.js.map +0 -1
  1648. package/ts/esm/node/mock-file-service.d.ts +0 -11
  1649. package/ts/esm/node/mock-file-service.d.ts.map +0 -1
  1650. package/ts/esm/node/mock-file-service.js +0 -32
  1651. package/ts/esm/node/mock-file-service.js.map +0 -1
  1652. package/ts/esm/node/mock-file-service.test.d.ts.map +0 -1
  1653. package/ts/esm/node/mock-file-service.test.js +0 -31
  1654. package/ts/esm/node/mock-file-service.test.js.map +0 -1
  1655. package/ts/esm/node/node-basic-sys-abstraction.d.ts +0 -25
  1656. package/ts/esm/node/node-basic-sys-abstraction.d.ts.map +0 -1
  1657. package/ts/esm/node/node-basic-sys-abstraction.js +0 -45
  1658. package/ts/esm/node/node-basic-sys-abstraction.js.map +0 -1
  1659. package/ts/esm/node/node-env-actions.d.ts +0 -17
  1660. package/ts/esm/node/node-env-actions.d.ts.map +0 -1
  1661. package/ts/esm/node/node-env-actions.js +0 -39
  1662. package/ts/esm/node/node-env-actions.js.map +0 -1
  1663. package/ts/esm/node/node-file-service.d.ts +0 -16
  1664. package/ts/esm/node/node-file-service.d.ts.map +0 -1
  1665. package/ts/esm/node/node-file-service.js +0 -72
  1666. package/ts/esm/node/node-file-service.js.map +0 -1
  1667. package/ts/esm/node/node-sys-abstraction.d.ts +0 -19
  1668. package/ts/esm/node/node-sys-abstraction.d.ts.map +0 -1
  1669. package/ts/esm/node/node-sys-abstraction.js +0 -96
  1670. package/ts/esm/node/node-sys-abstraction.js.map +0 -1
  1671. package/ts/esm/node/node-sys-abstraction.test.d.ts.map +0 -1
  1672. package/ts/esm/node/node-sys-abstraction.test.js.map +0 -1
  1673. package/ts/esm/utils/index.d.ts +0 -13
  1674. package/ts/esm/utils/index.d.ts.map +0 -1
  1675. package/ts/esm/utils/index.js +0 -13
  1676. package/ts/esm/utils/index.js.map +0 -1
  1677. package/ts/esm/utils/sorted-objec.test.d.ts +0 -2
  1678. package/ts/esm/utils/sorted-objec.test.d.ts.map +0 -1
  1679. package/ts/esm/utils/sorted-objec.test.js +0 -20
  1680. package/ts/esm/utils/sorted-objec.test.js.map +0 -1
  1681. package/ts/esm/web/index.d.ts +0 -2
  1682. package/ts/esm/web/index.d.ts.map +0 -1
  1683. package/ts/esm/web/index.js +0 -2
  1684. package/ts/esm/web/index.js.map +0 -1
  1685. package/ts/esm/web/web-basic-sys-abstraction.d.ts +0 -4
  1686. package/ts/esm/web/web-basic-sys-abstraction.d.ts.map +0 -1
  1687. package/ts/esm/web/web-basic-sys-abstraction.js +0 -45
  1688. package/ts/esm/web/web-basic-sys-abstraction.js.map +0 -1
  1689. package/ts/esm/web/web-env-actions.d.ts +0 -14
  1690. package/ts/esm/web/web-env-actions.d.ts.map +0 -1
  1691. package/ts/esm/web/web-env-actions.js +0 -36
  1692. package/ts/esm/web/web-env-actions.js.map +0 -1
  1693. /package/cjs/{cf → cf-env}/index.cjs +0 -0
  1694. /package/cjs/{cf → cf-env}/index.d.ts +0 -0
  1695. /package/cjs/{deno → deno-env}/deno-env-actions.d.ts +0 -0
  1696. /package/cjs/{node → node-fs}/get-iface-adr.cjs +0 -0
  1697. /package/cjs/{node → node-fs}/get-iface-adr.d.ts +0 -0
  1698. /package/cjs/{node → node-fs}/index.cjs +0 -0
  1699. /package/cjs/{node → node-fs}/index.d.ts +0 -0
  1700. /package/cjs/{node → node-fs}/mock-file-service.test.d.ts +0 -0
  1701. /package/cjs/{node → node-fs}/node-sys-abstraction.test.cjs +0 -0
  1702. /package/cjs/{node → node-fs}/node-sys-abstraction.test.d.ts +0 -0
  1703. /package/esm/{cf → cf-env}/index.d.ts +0 -0
  1704. /package/esm/{cf → cf-env}/index.js +0 -0
  1705. /package/esm/{deno → deno-env}/deno-env-actions.d.ts +0 -0
  1706. /package/esm/{node → node-fs}/get-iface-adr.d.ts +0 -0
  1707. /package/esm/{node → node-fs}/get-iface-adr.js +0 -0
  1708. /package/esm/{node → node-fs}/index.d.ts +0 -0
  1709. /package/esm/{node → node-fs}/index.js +0 -0
  1710. /package/esm/{node → node-fs}/mock-file-service.test.d.ts +0 -0
  1711. /package/esm/{node → node-fs}/node-sys-abstraction.test.d.ts +0 -0
  1712. /package/esm/{node → node-fs}/node-sys-abstraction.test.js +0 -0
  1713. /package/src/{cf → cf-env}/index.ts +0 -0
  1714. /package/src/{node → node-fs}/get-iface-adr.ts +0 -0
  1715. /package/src/{node → node-fs}/index.ts +0 -0
  1716. /package/ts/cjs/{cf → cf-env}/index.d.ts +0 -0
  1717. /package/ts/cjs/{cf → cf-env}/index.js +0 -0
  1718. /package/ts/cjs/{deno → deno-env}/deno-env-actions.d.ts +0 -0
  1719. /package/ts/cjs/{node → node-fs}/get-iface-adr.d.ts +0 -0
  1720. /package/ts/cjs/{node → node-fs}/get-iface-adr.js +0 -0
  1721. /package/ts/cjs/{node → node-fs}/index.d.ts +0 -0
  1722. /package/ts/cjs/{node → node-fs}/index.js +0 -0
  1723. /package/ts/cjs/{node → node-fs}/mock-file-service.test.d.ts +0 -0
  1724. /package/ts/cjs/{node → node-fs}/node-sys-abstraction.test.d.ts +0 -0
  1725. /package/ts/cjs/{node → node-fs}/node-sys-abstraction.test.js +0 -0
  1726. /package/ts/esm/{cf → cf-env}/index.d.ts +0 -0
  1727. /package/ts/esm/{cf → cf-env}/index.js +0 -0
  1728. /package/ts/esm/{deno → deno-env}/deno-env-actions.d.ts +0 -0
  1729. /package/ts/esm/{node → node-fs}/get-iface-adr.d.ts +0 -0
  1730. /package/ts/esm/{node → node-fs}/get-iface-adr.js +0 -0
  1731. /package/ts/esm/{node → node-fs}/index.d.ts +0 -0
  1732. /package/ts/esm/{node → node-fs}/index.js +0 -0
  1733. /package/ts/esm/{node → node-fs}/mock-file-service.test.d.ts +0 -0
  1734. /package/ts/esm/{node → node-fs}/node-sys-abstraction.test.d.ts +0 -0
  1735. /package/ts/esm/{node → node-fs}/node-sys-abstraction.test.js +0 -0
@@ -1,17 +1,59 @@
1
+ /**
2
+ * Utilities for executing functions once and caching results, with support for both
3
+ * synchronous and asynchronous operations, sequential execution, and keyed collections.
4
+ *
5
+ * ## Main Classes
6
+ *
7
+ * - **ResolveOnce**: Ensures a function executes only once, automatically handling sync/async
8
+ * - **ResolveSeq**: Executes functions sequentially, maintaining order even with concurrent calls
9
+ * - **Keyed**: Base class for managing keyed instances with LRU caching
10
+ * - **KeyedResolveOnce**: Map of ResolveOnce instances indexed by keys
11
+ * - **KeyedResolveSeq**: Map of ResolveSeq instances indexed by keys
12
+ * - **Lazy**: Function wrapper that executes once and caches the result
13
+ *
14
+ * @module resolve-once
15
+ */
16
+
1
17
  import { Future } from "./future.js";
2
- import { UnPromisify } from "./is-promise.js";
3
- import { isPromise } from "./is-promise.js";
4
- import { LRUMap, LRUParam, UnregFn } from "./lru-map-set.js";
18
+ import { UnPromisify, isPromise } from "./is-promise.js";
19
+ import { UnregFn } from "./lru-map-set.js";
5
20
  import { Result } from "./result.js";
6
21
  import { Option } from "./option.js";
22
+ import { KeyedIf, KeyedNg, KeyedNgItem, KeyedNgItemWithoutValue, KeyedNgOptions } from "./keyed-ng.js";
7
23
 
8
- // interface ResolveSeqItem<C, R extends NonPromise<X>, X = string | number | boolean | symbol | object> {
24
+ /**
25
+ * Internal item representing a queued function in a ResolveSeq sequence.
26
+ * @internal
27
+ */
9
28
  interface ResolveSeqItem<C, T, R> {
10
29
  readonly future: Future<T>;
11
30
  readonly fn: (c: C) => R;
12
31
  readonly id?: number;
13
32
  }
14
33
 
34
+ /**
35
+ * Executes functions sequentially, one at a time, ensuring order of execution.
36
+ *
37
+ * ResolveSeq maintains a queue of functions and executes them in order, waiting for each
38
+ * to complete before starting the next. This is useful when you need to ensure operations
39
+ * happen in a specific sequence, even when multiple operations are queued concurrently.
40
+ *
41
+ * @template T - The return type of the functions
42
+ * @template CTX - Optional context type passed to each function
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const seq = new ResolveSeq<number>();
47
+ *
48
+ * // Multiple calls are queued and executed in order
49
+ * const p1 = seq.add(() => asyncOperation1());
50
+ * const p2 = seq.add(() => asyncOperation2());
51
+ * const p3 = seq.add(() => asyncOperation3());
52
+ *
53
+ * // Operations execute sequentially: op1 -> op2 -> op3
54
+ * await Promise.all([p1, p2, p3]);
55
+ * ```
56
+ */
15
57
  export class ResolveSeq<T, CTX extends NonNullable<object> = object> {
16
58
  readonly ctx?: CTX;
17
59
  readonly _seqFutures: ResolveSeqItem<CTX, T, unknown>[] = [];
@@ -19,11 +61,21 @@ export class ResolveSeq<T, CTX extends NonNullable<object> = object> {
19
61
  constructor(ctx?: CTX) {
20
62
  this.ctx = ctx;
21
63
  }
64
+
65
+ /**
66
+ * Resets the sequence (currently a no-op).
67
+ */
22
68
  reset(): void {
23
69
  /* noop */
24
70
  }
25
71
 
26
72
  readonly _flushWaiting: Future<void>[] = [];
73
+
74
+ /**
75
+ * Returns a promise that resolves when all currently queued items complete.
76
+ *
77
+ * @returns A promise that resolves when the queue is empty
78
+ */
27
79
  flush(): Promise<void> {
28
80
  if (this._seqFutures.length > 0) {
29
81
  const waitForFlush = new Future<void>();
@@ -32,6 +84,11 @@ export class ResolveSeq<T, CTX extends NonNullable<object> = object> {
32
84
  }
33
85
  return Promise.resolve();
34
86
  }
87
+
88
+ /**
89
+ * Internal method to process items in the queue sequentially.
90
+ * @internal
91
+ */
35
92
  async _step(item?: ResolveSeqItem<CTX, T, Promise<T> | T>): Promise<void> {
36
93
  if (!item) {
37
94
  // done
@@ -55,6 +112,17 @@ export class ResolveSeq<T, CTX extends NonNullable<object> = object> {
55
112
  }
56
113
  return this._step(this._seqFutures[0] as ResolveSeqItem<CTX, T, Promise<T> | T>);
57
114
  }
115
+
116
+ /**
117
+ * Adds a function to the sequence queue for sequential execution.
118
+ *
119
+ * The function will be executed after all previously queued functions complete.
120
+ * Returns a promise that resolves with the function's result.
121
+ *
122
+ * @param fn - The function to execute
123
+ * @param id - Optional identifier for tracking
124
+ * @returns A promise that resolves with the function's result
125
+ */
58
126
  add<R extends Promise<T> | T>(fn: (c: CTX) => R, id?: number): R {
59
127
  const future = new Future<T>();
60
128
  this._seqFutures.push({ future, fn, id });
@@ -65,23 +133,34 @@ export class ResolveSeq<T, CTX extends NonNullable<object> = object> {
65
133
  }
66
134
  }
67
135
 
68
- // readonly _onceFutures: Future<T>[] = [];
69
- // _onceDone = false;
70
- // _onceOk = false;
71
- // _onceValue?: T;
72
- // _onceError?: Error;
73
- // _isPromise = false;
74
- // _inProgress?: Future<T>;
75
-
76
- // ResolveOnce
77
- // cases SyncMode, AsyncMode
78
-
136
+ /**
137
+ * Represents the current state of a resolve operation.
138
+ * - `initial`: Not yet started
139
+ * - `processed`: Completed
140
+ * - `waiting`: Waiting for async operation
141
+ * - `processing`: Currently executing
142
+ */
79
143
  type ResolveState = "initial" | "processed" | "waiting" | "processing";
80
144
 
81
- // export type VoidEqualUndefined<T> = T extends undefined ? void : T
145
+ /**
146
+ * Type helper that unwraps Promise types to their resolved value type.
147
+ *
148
+ * @template R - The type to unwrap
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * type A = ResultOnce<Promise<number>>; // Promise<number>
153
+ * type B = ResultOnce<string>; // string
154
+ * ```
155
+ */
82
156
  export type ResultOnce<R> = R extends Promise<infer T> ? Promise<T> : R;
83
157
 
84
- interface ResolveOnceIf<R, CTX = void> {
158
+ /**
159
+ * Interface defining the contract for ResolveOnce-like objects.
160
+ * @template R - The return type
161
+ * @template CTX - Optional context type
162
+ */
163
+ export interface ResolveOnceIf<R, CTX = void> {
85
164
  get ready(): boolean;
86
165
  get value(): UnPromisify<R> | undefined;
87
166
  get error(): Error | undefined;
@@ -91,70 +170,113 @@ interface ResolveOnceIf<R, CTX = void> {
91
170
  reset<R>(fn?: (c?: CTX) => R): ResultOnce<R>;
92
171
  }
93
172
 
173
+ /**
174
+ * Synchronous version of ResolveOnce for functions that return non-promise values.
175
+ *
176
+ * This class is used internally by ResolveOnce when it detects a synchronous function.
177
+ * It executes the function once and caches the result or error for subsequent calls.
178
+ *
179
+ * @template T - The return type
180
+ * @template CTX - Optional context type
181
+ * @internal
182
+ */
94
183
  export class SyncResolveOnce<T, CTX = void> {
95
- state: ResolveState = "initial";
96
-
97
184
  #value?: T;
98
185
  #error?: Error;
99
186
 
100
187
  readonly queueLength = 0;
101
188
 
189
+ readonly #state: StateInstance;
190
+ readonly #rOnce: ResolveOnce<T, CTX>;
191
+
192
+ constructor(rOnce: ResolveOnce<T, CTX>, state: StateInstance) {
193
+ this.#state = state;
194
+ this.#rOnce = rOnce;
195
+ }
196
+
197
+ /**
198
+ * Gets the cached value if available.
199
+ */
102
200
  get value(): T | undefined {
103
201
  return this.#value;
104
202
  }
105
203
 
204
+ /**
205
+ * Gets the cached error if one occurred.
206
+ */
106
207
  get error(): Error | undefined {
107
208
  return this.#error;
108
209
  }
109
210
 
211
+ /**
212
+ * Returns true if the function has been executed.
213
+ */
110
214
  get ready(): boolean {
111
- return this.state === "processed";
112
- }
113
-
114
- readonly #ctx?: CTX;
115
- constructor(ctx?: CTX) {
116
- this.#ctx = ctx;
215
+ return this.#state.isProcessed();
117
216
  }
118
217
 
218
+ /**
219
+ * Executes the function once and caches the result.
220
+ * Subsequent calls return the cached value without re-executing.
221
+ *
222
+ * @param fn - The function to execute
223
+ * @returns The result of the function
224
+ * @throws Error if the function returned a promise (use AsyncResolveOnce instead)
225
+ */
119
226
  resolve(fn: (ctx?: CTX) => T): T {
120
- if (this.state === "initial") {
121
- this.state = "processed";
227
+ if (this.#state.isProcessing()) {
122
228
  try {
123
- this.#value = fn(this.#ctx);
229
+ this.#value = fn(this.#rOnce._ctx);
124
230
  } catch (e) {
125
231
  this.#error = e as Error;
232
+ } finally {
233
+ this.#state.setProcessed();
234
+ this.#rOnce.setProcessed(this.#state);
126
235
  }
127
- if (isPromise(this.value)) {
236
+ if (isPromise(this.#value)) {
128
237
  throw new Error("SyncResolveOnce.once fn returned a promise");
129
238
  }
130
239
  }
131
240
  if (this.#error) {
132
241
  throw this.#error;
133
242
  }
134
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
135
243
  return this.#value as T;
136
244
  }
137
245
 
246
+ /**
247
+ * Resets the cached state, allowing the function to be executed again.
248
+ *
249
+ * @param fn - Optional function to execute immediately after reset
250
+ * @returns The result if fn provided, undefined otherwise
251
+ */
138
252
  reset(fn?: (c?: CTX) => T): T | undefined {
139
- this.state = "initial";
140
253
  this.#value = undefined;
141
254
  this.#error = undefined;
142
255
  if (fn) {
256
+ this.#state.setProcessing();
143
257
  return this.resolve(fn);
144
258
  }
145
259
  return undefined as T;
146
260
  }
147
261
  }
148
262
 
149
- class AsyncResolveItem<T> {
150
- readonly id = Math.random();
151
- #state: ResolveState = "initial";
263
+ /**
264
+ * Internal helper for AsyncResolveOnce that manages a single async resolution.
265
+ * Handles queuing of multiple concurrent requests for the same async operation.
266
+ * @internal
267
+ */
268
+ class AsyncResolveItem<T, CTX> {
269
+ readonly id: number = Math.random();
152
270
  readonly #toResolve: Promise<UnPromisify<T>>;
153
271
  #value: Option<UnPromisify<T>> = Option.None();
154
272
  #error?: Error;
273
+ readonly #state: StateInstance;
274
+ readonly #rOnce: ResolveOnce<T, CTX>;
155
275
 
156
- constructor(fn: Promise<UnPromisify<T>>) {
276
+ constructor(fn: Promise<UnPromisify<T>>, rOnce: ResolveOnce<T, CTX>, state: StateInstance) {
157
277
  this.#toResolve = fn;
278
+ this.#state = state;
279
+ this.#rOnce = rOnce;
158
280
  }
159
281
 
160
282
  get value(): UnPromisify<T> | undefined {
@@ -171,8 +293,11 @@ class AsyncResolveItem<T> {
171
293
  return this.#queue.length;
172
294
  }
173
295
 
296
+ /**
297
+ * Returns true if this item has completed and has no pending futures.
298
+ */
174
299
  isDisposable(): boolean {
175
- return this.#state === "processed" && this.#queue.length === 0;
300
+ return this.#state.isProcessed() && this.#queue.length === 0;
176
301
  }
177
302
 
178
303
  #resolveFuture(future?: Future<UnPromisify<T>>): void {
@@ -195,14 +320,15 @@ class AsyncResolveItem<T> {
195
320
  if (this.#value.IsSome()) {
196
321
  return Promise.resolve(this.#value.Unwrap());
197
322
  }
198
- throw new Error("AsyncResolveItem.#promiseResult impossible");
323
+ throw new Error(`AsyncResolveItem.#promiseResult impossible: ${this.#state.getResolveState()}`);
199
324
  }
200
325
 
326
+ /**
327
+ * Resolves the async operation, queuing the request if already in progress.
328
+ */
201
329
  resolve(): T {
202
- if (this.#state === "initial") {
203
- this.#state = "waiting";
330
+ if (this.#state.isWaiting()) {
204
331
  const future = new Future<UnPromisify<T>>();
205
- // console.log("asyncItem addQueue#initial", this.id, this.#queue.length);
206
332
  this.#queue.push(future);
207
333
  this.#toResolve
208
334
  .then((value) => {
@@ -212,38 +338,62 @@ class AsyncResolveItem<T> {
212
338
  this.#error = e as Error;
213
339
  })
214
340
  .finally(() => {
215
- this.#state = "processed";
341
+ this.#state.setProcessed();
342
+ this.#rOnce.setProcessed(this.#state);
216
343
  while (this.#queue.length > 0) {
217
344
  this.#resolveFuture(this.#queue.shift());
218
345
  }
219
346
  });
220
347
  return future.asPromise() as T;
221
348
  }
222
- if (this.#state === "processed") {
349
+
350
+ if (this.#state.isProcessed()) {
223
351
  return this.#promiseResult() as T;
224
352
  }
225
- if (this.#state === "waiting") {
226
- const future = new Future<UnPromisify<T>>();
227
- // console.log("asyncItem addQueue#waiting", this.id, this.#queue.length);
228
- this.#queue.push(future);
229
- return future.asPromise() as T;
230
- }
231
- throw new Error("AsyncResolveItem.resolve impossible");
353
+ // if (this.#state.isWaiting()) {
354
+ // const future = new Future<UnPromisify<T>>();
355
+ // this.#queue.push(future);
356
+ // return future.asPromise() as T;
357
+ // }
358
+ throw new Error(`AsyncResolveItem.resolve impossible: ${this.#state.getResolveState()}`);
232
359
  }
233
360
  }
234
361
 
235
- export class AsyncResolveOnce<T, CTX = void> {
236
- // readonly id = Math.random();
237
- state: ResolveState = "initial";
238
-
239
- readonly #queue: AsyncResolveItem<T>[] = [];
362
+ /**
363
+ * Asynchronous version of ResolveOnce for functions that return promises.
364
+ *
365
+ * This class is used internally by ResolveOnce when it detects an async function.
366
+ * It executes the async function once and caches the result for subsequent calls.
367
+ * Multiple concurrent calls while waiting will all receive the same promise result.
368
+ *
369
+ * @template T - The return type (Promise or value)
370
+ * @template CTX - Optional context type
371
+ * @internal
372
+ */
373
+
374
+ function isAsyncResolveOnce<T, CTX>(obj: SyncOrAsync<T, CTX>): obj is Option<AsyncResolveOnce<T, CTX>> {
375
+ return obj.IsSome() && obj.Unwrap() instanceof AsyncResolveOnce;
376
+ }
240
377
 
241
- readonly #ctx?: CTX;
242
- constructor(ctx?: CTX) {
243
- this.#ctx = ctx;
378
+ export class AsyncResolveOnce<T, CTX = void> {
379
+ // #state: ResolveState = "initial";
380
+ readonly #state: StateInstance;
381
+
382
+ readonly #queue: AsyncResolveItem<T, CTX>[];
383
+
384
+ readonly #rOnce: ResolveOnce<T, CTX>;
385
+ //readonly #ctx?: CTX;
386
+ constructor(rOnce: ResolveOnce<T, CTX>, state: StateInstance, prev: SyncOrAsync<T, CTX>) {
387
+ this.#state = state;
388
+ this.#rOnce = rOnce;
389
+ if (isAsyncResolveOnce(prev)) {
390
+ this.#queue = [...prev.unwrap().#queue];
391
+ } else {
392
+ this.#queue = [];
393
+ }
244
394
  }
245
395
 
246
- #active(): AsyncResolveItem<T> {
396
+ #active(): AsyncResolveItem<T, CTX> {
247
397
  const r = this.#queue[this.#queue.length - 1];
248
398
  if (!r) {
249
399
  throw new Error("AsyncResolveOnce.#active impossible");
@@ -251,33 +401,46 @@ export class AsyncResolveOnce<T, CTX = void> {
251
401
  return r;
252
402
  }
253
403
 
404
+ /**
405
+ * Returns the total number of queued futures across all items.
406
+ */
254
407
  get queueLength(): number {
255
408
  return this.#queue.reduce((acc, r) => acc + r.queuelength, this.#queue.length);
256
409
  }
257
410
 
258
- get ready(): boolean {
259
- return this.state !== "initial";
260
- }
411
+ /**
412
+ * Gets the cached resolved value if available.
413
+ */
261
414
  get value(): UnPromisify<T> | undefined {
262
- if (this.state === "initial") {
415
+ if (this.#state.isInitial()) {
263
416
  return undefined;
264
417
  }
265
418
  return this.#active().value;
266
419
  }
267
420
 
421
+ /**
422
+ * Gets the cached error if one occurred.
423
+ */
268
424
  get error(): Error | undefined {
269
- if (this.state === "initial") {
425
+ if (this.#state.isInitial()) {
270
426
  return undefined;
271
427
  }
272
428
  return this.#active().error;
273
429
  }
274
430
 
431
+ /**
432
+ * Executes the async function once and caches the result.
433
+ * Subsequent calls return the cached promise without re-executing.
434
+ *
435
+ * @param fn - The async function to execute
436
+ * @returns A promise that resolves to the function's result
437
+ */
275
438
  resolve(fn: (ctx?: CTX) => T): T {
276
- if (this.state === "initial") {
277
- this.state = "waiting";
439
+ if (this.#state.isProcessing()) {
440
+ this.#state.setWaiting();
278
441
  let promiseResult: Promise<UnPromisify<T>>;
279
442
  try {
280
- const couldBePromise = fn(this.#ctx);
443
+ const couldBePromise = fn(this.#rOnce._ctx);
281
444
  if (!isPromise(couldBePromise)) {
282
445
  promiseResult = Promise.resolve(couldBePromise as UnPromisify<T>);
283
446
  } else {
@@ -286,8 +449,7 @@ export class AsyncResolveOnce<T, CTX = void> {
286
449
  } catch (e) {
287
450
  promiseResult = Promise.reject(e as Error);
288
451
  }
289
- // console.log("asyncOnce addQueue#initial", this.id, this.#queue.length);
290
- this.#queue.push(new AsyncResolveItem(promiseResult));
452
+ this.#queue.push(new AsyncResolveItem<T, CTX>(promiseResult, this.#rOnce, this.#state));
291
453
  }
292
454
  // remove all disposable items
293
455
  this.#queue
@@ -300,8 +462,14 @@ export class AsyncResolveOnce<T, CTX = void> {
300
462
  return this.#active().resolve();
301
463
  }
302
464
 
465
+ /**
466
+ * Resets the cached state, allowing the function to be executed again.
467
+ *
468
+ * @param fn - Optional function to execute immediately after reset
469
+ * @returns The result if fn provided, undefined otherwise
470
+ */
303
471
  reset(fn?: (c?: CTX) => T): T {
304
- this.state = "initial";
472
+ this.#state.setProcessing();
305
473
  if (fn) {
306
474
  return this.resolve(fn);
307
475
  }
@@ -309,182 +477,590 @@ export class AsyncResolveOnce<T, CTX = void> {
309
477
  }
310
478
  }
311
479
 
312
- export class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
480
+ /**
481
+ * Ensures a function is executed only once, caching and returning the result for subsequent calls.
482
+ *
483
+ * ResolveOnce automatically detects whether the function returns a synchronous value or a Promise,
484
+ * and handles both cases appropriately. All subsequent calls will receive the same cached result.
485
+ * Supports optional context parameter and can be reset to allow re-execution.
486
+ *
487
+ * @template T - The return type of the function (can be synchronous or Promise)
488
+ * @template CTX - Optional context type passed to the function
489
+ *
490
+ * @example
491
+ * ```typescript
492
+ * const expensiveOp = new ResolveOnce<number>();
493
+ *
494
+ * // First call executes the function
495
+ * const result1 = expensiveOp.once(() => computeExpensiveValue());
496
+ *
497
+ * // Subsequent calls return cached result
498
+ * const result2 = expensiveOp.once(() => computeExpensiveValue()); // Not executed
499
+ *
500
+ * // Reset to allow re-execution
501
+ * expensiveOp.reset();
502
+ * ```
503
+ */
504
+
505
+ export interface ResolveOnceOpts {
506
+ readonly resetAfter?: number; // milliseconds after which to reset the cached value
507
+ readonly skipUnref?: boolean; // skip unref() on the reset timer
508
+ }
509
+
510
+ class StateInstance {
511
+ readonly id: number = Math.random();
313
512
  #state: ResolveState = "initial";
314
513
 
315
- #syncOrAsync: Option<SyncResolveOnce<never, CTX> | AsyncResolveOnce<never, CTX>> = Option.None();
514
+ // get state(): ResolveState {
515
+ // return this.#state;
516
+ // }
517
+ getResolveState(): ResolveState {
518
+ return this.#state;
519
+ }
316
520
 
317
- readonly #ctx?: CTX;
318
- constructor(ctx?: CTX) {
319
- this.#ctx = ctx;
521
+ isInitial(): boolean {
522
+ return this.#state === "initial";
523
+ }
524
+
525
+ isProcessed(): boolean {
526
+ return this.#state === "processed";
527
+ }
528
+ setProcessed(): void {
529
+ this.#state = "processed";
530
+ }
531
+
532
+ isProcessing(): boolean {
533
+ return this.#state === "processing";
534
+ }
535
+ setProcessing(): void {
536
+ this.#state = "processing";
537
+ }
538
+
539
+ isWaiting(): boolean {
540
+ return this.#state === "waiting";
541
+ }
542
+
543
+ setWaiting(): void {
544
+ this.#state = "waiting";
545
+ }
546
+
547
+ equals(other: StateInstance): boolean {
548
+ return this.id === other.id;
549
+ }
550
+ }
551
+
552
+ type SyncOrAsync<T, CTX> = Option<SyncResolveOnce<T, CTX> | AsyncResolveOnce<T, CTX>>;
553
+
554
+ export class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
555
+ #state = new StateInstance();
556
+
557
+ #syncOrAsync: SyncOrAsync<T, CTX> = Option.None();
558
+
559
+ readonly #opts: ResolveOnceOpts;
560
+ resetAfterTimer?: ReturnType<typeof setTimeout>;
561
+
562
+ readonly _ctx?: CTX;
563
+ constructor(ctx?: CTX, opts?: ResolveOnceOpts) {
564
+ this._ctx = ctx;
565
+ this.#opts = opts ?? {};
566
+ }
567
+
568
+ get state(): ResolveState {
569
+ return this.#state.getResolveState();
570
+ }
571
+
572
+ // activeState(state: StateInstance): StateInstance | undefined {
573
+ // if (this.#state.equals(state)) {
574
+ // return this.#state;
575
+ // }
576
+ // return undefined;
577
+ // }
578
+
579
+ setProcessed(state: StateInstance): void {
580
+ if (this.resetAfterTimer) {
581
+ clearTimeout(this.resetAfterTimer);
582
+ }
583
+ if (this.#state.equals(state)) {
584
+ this.#state.setProcessed();
585
+ if (typeof this.#opts.resetAfter === "number" && this.#opts.resetAfter > 0) {
586
+ this.resetAfterTimer = setTimeout(() => {
587
+ this.reset();
588
+ }, this.#opts.resetAfter);
589
+ if (!this.#opts.skipUnref) {
590
+ const hasUnref = this.resetAfterTimer as unknown as { unref?: () => void };
591
+ if (typeof hasUnref === "object" && typeof hasUnref.unref === "function") {
592
+ hasUnref.unref();
593
+ } else if (typeof globalThis.Deno === "object") {
594
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
595
+ globalThis.Deno.unrefTimer(this.resetAfterTimer as any);
596
+ }
597
+ }
598
+ }
599
+ }
320
600
  }
321
601
 
322
602
  get ready(): boolean {
323
- return this.#state !== "initial" && this.#syncOrAsync.Unwrap().ready;
603
+ return !this.#state.isInitial();
324
604
  }
325
605
 
326
606
  get value(): UnPromisify<T> | undefined {
327
- if (this.#state === "initial") {
607
+ if (this.#state.isInitial()) {
328
608
  return undefined;
329
609
  }
330
610
  return this.#syncOrAsync.Unwrap().value as UnPromisify<T>;
331
611
  }
332
612
 
333
613
  get queueLength(): number {
334
- if (this.#state === "initial") {
614
+ if (this.#state.isInitial()) {
335
615
  return 0;
336
616
  }
337
617
  return this.#syncOrAsync.Unwrap().queueLength;
338
618
  }
339
619
 
340
620
  get error(): Error | undefined {
341
- if (this.#state === "initial") {
621
+ if (this.#state.isInitial()) {
342
622
  return undefined;
343
623
  }
344
624
  return this.#syncOrAsync.Unwrap().error;
345
625
  }
346
626
 
347
- get state(): ResolveState {
348
- if (this.#state === "initial") {
349
- return "initial";
350
- }
351
- return this.#syncOrAsync.Unwrap().state;
352
- }
627
+ // get state(): ResolveState {
628
+ // return this.#state;
629
+ // }
630
+ // set state(value: ResolveState) {
631
+ // console.log(`ResolveOnce.state ${this.#state} -> ${value}`);
632
+ // if (value === "processed") {
633
+ // if (this.resetAfterTimer) {
634
+ // clearTimeout(this.resetAfterTimer);
635
+ // }
636
+ // if (typeof this.#opts.resetAfter === "number" && this.#opts.resetAfter > 0) {
637
+ // console.log("setting reset timer for", this.#opts.resetAfter);
638
+ // this.resetAfterTimer = setTimeout(() => {
639
+ // console.log("resetting after", this.#opts.resetAfter);
640
+ // this.reset();
641
+ // }, this.#opts.resetAfter);
642
+ // }
643
+ // }
644
+ // this.#state = value;
645
+ // }
353
646
 
354
- once<R>(fn: (c: CTX) => R): ResultOnce<R> {
647
+ once<R>(fn: (c: CTX, prev?: T) => R): ResultOnce<R> {
355
648
  let resultFn: (ctx: CTX) => R;
356
- if (this.#state === "initial") {
357
- this.#state = "processing";
649
+ if (this.#state.isInitial()) {
650
+ const state = this.#state;
358
651
  try {
359
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
360
- const isSyncOrAsync = fn(this.#ctx ?? ({} as CTX)) as R;
652
+ state.setProcessing();
653
+ let prev: T | undefined = undefined;
654
+ if (this.#syncOrAsync.IsSome()) {
655
+ prev = this.#syncOrAsync.Unwrap().value as T;
656
+ }
657
+ const isSyncOrAsync = fn(this._ctx ?? ({} as CTX), prev);
361
658
  if (isPromise(isSyncOrAsync)) {
362
- this.#syncOrAsync = Option.Some(new AsyncResolveOnce<never, CTX>(this.#ctx));
659
+ this.#syncOrAsync = Option.Some(new AsyncResolveOnce<T, CTX>(this, state, this.#syncOrAsync));
363
660
  } else {
364
- this.#syncOrAsync = Option.Some(new SyncResolveOnce<never, CTX>(this.#ctx));
661
+ this.#syncOrAsync = Option.Some(new SyncResolveOnce<T, CTX>(this, state));
365
662
  }
366
663
  resultFn = (): R => isSyncOrAsync;
367
664
  } catch (e) {
368
- this.#syncOrAsync = Option.Some(new SyncResolveOnce<never, CTX>(this.#ctx));
665
+ this.#syncOrAsync = Option.Some(new SyncResolveOnce<T, CTX>(this, state));
369
666
  resultFn = (): R => {
370
667
  throw e;
371
668
  };
372
- } finally {
373
- this.#state = "processed";
374
669
  }
375
670
  } else {
376
671
  resultFn = fn;
377
672
  }
378
673
  if (!this.#syncOrAsync) {
379
- throw new Error("ResolveOnce.once impossible");
674
+ throw new Error(`ResolveOnce.once impossible: state=${this.#state.getResolveState()}`);
380
675
  }
381
676
  return this.#syncOrAsync.Unwrap().resolve(resultFn as (c?: CTX) => never) as ResultOnce<R>;
382
677
  }
383
678
 
384
679
  reset<R>(fn?: (c: CTX) => R): ResultOnce<R> {
385
- if (this.#state === "initial") {
680
+ if (this.#state.isInitial()) {
681
+ if (!fn) {
682
+ return undefined as ResultOnce<R>;
683
+ }
386
684
  return this.once(fn as (c: CTX) => R);
387
685
  }
388
- if (this.#state === "processing") {
686
+ if (this.#state.isProcessing()) {
389
687
  // eslint-disable-next-line no-console
390
688
  console.warn("ResolveOnce.reset dropped was called while processing");
391
689
  return undefined as ResultOnce<R>;
392
690
  }
393
- return this.#syncOrAsync.Unwrap().reset(fn as (c?: CTX) => never) as ResultOnce<R>;
691
+ let ret = undefined as ResultOnce<R>;
692
+ this.#state = new StateInstance();
693
+ if (fn) {
694
+ ret = this.once(fn as (c: CTX) => R);
695
+ // ret = this.#syncOrAsync.Unwrap().reset(fn as (c?: CTX) => never) as ResultOnce<R>
696
+ }
697
+ return ret;
394
698
  }
395
699
  }
396
700
 
397
- export interface KeyedParam<K, V> {
398
- readonly lru: Partial<LRUParam<V, K>>;
701
+ // /**
702
+ // * Configuration parameters for Keyed instances.
703
+ // * @template K - The key type
704
+ // * @template V - The value type
705
+ // */
706
+ // export interface KeyedParam<K, V> {
707
+ // readonly lru: Partial<LRUParam<V, K>>;
708
+ // }
709
+
710
+ /**
711
+ * Represents a key-value pair where the value is wrapped in a Result.
712
+ * @template K - The key type
713
+ * @template V - The value type
714
+ */
715
+ export interface KeyItem<K, V> {
716
+ readonly key: K;
717
+ readonly value: Result<V>;
399
718
  }
400
719
 
401
- type AddKeyedParam<K, V, CTX extends NonNullable<object>> = KeyedParam<K, V> & { readonly ctx: CTX };
720
+ /**
721
+ * Configuration parameters for KeyedResolvOnce, excluding the createValue factory.
722
+ * @template K - The key type
723
+ * @template V - The value type
724
+ * @template CTX - The context type
725
+ */
726
+ export type AddKeyedParam<K, V, CTX extends NonNullable<object>> = Omit<KeyedNgOptions<K, V, CTX>, "createValue">;
727
+
728
+ /**
729
+ * Type helper that adds a key property to a context object.
730
+ * @template X - The context type
731
+ * @template K - The key type
732
+ */
733
+ export type WithKey<X extends NonNullable<object>, K> = X & { readonly key: K };
734
+
735
+ /**
736
+ * Type helper that adds an optional reset method to a value type.
737
+ * @template V - The value type
738
+ */
739
+ export type WithOptionalReset<V> = V & { readonly reset?: () => void };
740
+
741
+ /**
742
+ * Represents an item in a KeyedResolvOnce collection with its resolved result.
743
+ * @template K - The key type
744
+ * @template T - The value type
745
+ * @template CTX - The context type
746
+ */
747
+ export interface KeyedResolveOnceItem<K, T, CTX extends NonNullable<object>> {
748
+ /** The key associated with this item */
749
+ readonly key: K;
750
+ /** The resolved value wrapped in a Result (Ok or Err) */
751
+ readonly value: Result<T>;
752
+ /** The complete KeyedNgItem containing metadata */
753
+ readonly item: KeyedNgItem<K, ResolveOnce<WithOptionalReset<T>, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
754
+ }
402
755
 
403
- export class Keyed<T extends { reset: () => void }, K = string, CTX extends NonNullable<object> = object> {
404
- protected readonly _map: LRUMap<K, T>;
405
- // #lock = new ResolveSeq<T, K>();
406
- readonly #ctx: CTX;
756
+ /**
757
+ * Keyed collection of ResolveOnce instances.
758
+ *
759
+ * Manages a map of ResolveOnce instances indexed by keys, with optional LRU caching.
760
+ * Each key gets its own ResolveOnce instance that can be accessed and manipulated independently.
761
+ * Values can optionally have a reset() method for cleanup on deletion.
762
+ *
763
+ * @template T - The return type of the ResolveOnce instances (must include optional reset)
764
+ * @template K - The key type (defaults to string)
765
+ * @template CTX - Optional context type (defaults to empty object)
766
+ * @template PT - Plain type of T without reset (for internal use)
767
+ *
768
+ * @example
769
+ * ```typescript
770
+ * const cache = new KeyedResolvOnce<number, string>();
771
+ *
772
+ * // Each key gets its own ResolveOnce
773
+ * const result1 = cache.get('key1').once(() => expensiveCalc1());
774
+ * const result2 = cache.get('key2').once(() => expensiveCalc2());
775
+ *
776
+ * // Delete specific key
777
+ * cache.delete('key1');
778
+ *
779
+ * // Iterate over all resolved entries
780
+ * cache.forEach((item) => {
781
+ * console.log(item.key, item.value.Ok);
782
+ * });
783
+ * ```
784
+ *
785
+ * @example
786
+ * ```typescript
787
+ * // With custom key type and context
788
+ * interface UserKey { org: string; id: string; }
789
+ * interface UserContext { apiKey: string; }
790
+ *
791
+ * const users = new KeyedResolvOnce<User, UserKey, UserContext>({
792
+ * key2string: (key) => `${key.org}:${key.id}`,
793
+ * ctx: { apiKey: 'default' },
794
+ * lru: { max: 100 }
795
+ * });
796
+ *
797
+ * const user = users.get({ org: 'acme', id: '123' })
798
+ * .once(({ givenKey, ctx }) => fetchUser(givenKey, ctx));
799
+ * ```
800
+ */
801
+ export class KeyedResolvOnce<T extends WithOptionalReset<PT>, K = string, CTX extends NonNullable<object> = object, PT = T>
802
+ implements
803
+ Omit<
804
+ // KeyedIf<ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, WithOptionalReset<T>, K>
805
+ KeyedIf<
806
+ KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>,
807
+ ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>,
808
+ K,
809
+ CTX
810
+ >,
811
+ "entries" | "forEach" | "onSet" | "onDelete" | "values" | "setParam"
812
+ >
813
+ {
814
+ /** @internal */
815
+ readonly _keyed: KeyedNg<K, ResolveOnce<WithOptionalReset<T>, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
407
816
 
408
- readonly factory: (ctx: AddKey<CTX, K>) => T;
817
+ /**
818
+ * Creates a new KeyedResolvOnce instance.
819
+ *
820
+ * @param kp - Configuration options (key2string, ctx, lru)
821
+ */
822
+ constructor(kp: Partial<AddKeyedParam<K, T, CTX>> = {}) {
823
+ this._keyed = new KeyedNg({
824
+ createValue: (
825
+ item: KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>,
826
+ ): ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>> => {
827
+ return new ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>(
828
+ {
829
+ ...item,
830
+ ctx: kp.ctx ?? item.ctx,
831
+ },
832
+ {
833
+ resetAfter: kp.resetAfter,
834
+ },
835
+ );
836
+ },
837
+ key2string: kp.key2string,
838
+ ctx: kp.ctx as CTX,
839
+ lru: kp.lru,
840
+ });
841
+ }
409
842
 
410
- constructor(factory: (ctx: AddKey<CTX, K>) => T, ctx: Partial<AddKeyedParam<K, T, CTX>>) {
411
- this.#ctx = ctx.ctx || ({} as CTX);
412
- this.factory = factory;
413
- this._map = new LRUMap<K, T>(ctx?.lru ?? ({ maxEntries: -1 } as LRUParam<T, K>));
843
+ /**
844
+ * Returns all keys currently in the collection.
845
+ *
846
+ * @returns Array of all keys
847
+ */
848
+ keys(): K[] {
849
+ return this._keyed.keys();
414
850
  }
415
851
 
416
- onSet(fn: (key: K, value: T) => void): UnregFn {
417
- return this._map.onSet(fn);
852
+ /**
853
+ * Returns all resolved items with their values wrapped in Result.
854
+ *
855
+ * Only includes items that have been resolved (ready state).
856
+ * Each item contains the key, Result-wrapped value, and full item metadata.
857
+ *
858
+ * @returns Array of all resolved items
859
+ *
860
+ * @example
861
+ * ```typescript
862
+ * const items = cache.values();
863
+ * items.forEach(({ key, value }) => {
864
+ * if (value.Ok) {
865
+ * console.log(key, value.unwrap());
866
+ * } else {
867
+ * console.error(key, value.unwrapErr());
868
+ * }
869
+ * });
870
+ * ```
871
+ */
872
+ values(): KeyedResolveOnceItem<K, T, CTX>[] {
873
+ return this._keyed
874
+ .values()
875
+ .filter((i) => i.value.ready)
876
+ .map((item) => ({
877
+ key: item.givenKey,
878
+ value: item.value.error ? Result.Err<T>(item.value.error) : Result.Ok<T>(item.value.value as T),
879
+ item,
880
+ }));
418
881
  }
419
882
 
420
- onDelete(fn: (key: K, value: T) => void): UnregFn {
421
- return this._map.onDelete(fn);
883
+ /**
884
+ * Registers a callback that fires when a new ResolveOnce instance is created.
885
+ *
886
+ * @param fn - Callback receiving the key and ResolveOnce instance
887
+ * @returns Unregister function
888
+ */
889
+ onSet(fn: (key: K, value: ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>) => void): UnregFn {
890
+ return this._keyed.onSet((item) => {
891
+ fn(item.givenKey, item.value);
892
+ });
422
893
  }
423
894
 
424
- setParam(params: KeyedParam<K, T>): void {
425
- this._map.setParam(params.lru);
895
+ /**
896
+ * Registers a callback that fires when a ResolveOnce instance is deleted.
897
+ *
898
+ * @param fn - Callback receiving the key and ResolveOnce instance
899
+ * @returns Unregister function
900
+ */
901
+ onDelete(fn: (key: K, value: ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>) => void): UnregFn {
902
+ return this._keyed.onDelete((item) => {
903
+ fn(item.givenKey, item.value);
904
+ });
426
905
  }
427
906
 
428
- async asyncGet(key: () => Promise<K>): Promise<T> {
429
- return this.get(await key());
907
+ /**
908
+ * Updates the LRU parameters dynamically.
909
+ *
910
+ * @param params - New LRU parameters
911
+ */
912
+ setParam(params: Partial<AddKeyedParam<K, ResolveOnce<T, CTX>, CTX>>): void {
913
+ this._keyed.setParam({ lru: params.lru });
430
914
  }
431
915
 
432
- get(key: K | (() => K)): T {
433
- if (typeof key === "function") {
434
- key = (key as () => K)();
435
- }
436
- let keyed = this._map.get(key);
437
- if (!keyed) {
438
- keyed = this.factory({ ...this.#ctx, key: key });
439
- this._map.set(key, keyed);
440
- }
441
- return keyed;
916
+ /**
917
+ * Asynchronously gets or creates a ResolveOnce for a key resolved from a promise.
918
+ *
919
+ * @param key - Function returning a promise that resolves to the key
920
+ * @returns Promise resolving to the ResolveOnce instance
921
+ */
922
+ asyncGet(key: () => Promise<K>): Promise<ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>> {
923
+ return this._keyed.asyncGet(key);
442
924
  }
443
925
 
444
- has(key: K | (() => K)): boolean {
926
+ /**
927
+ * Gets or creates a ResolveOnce instance for the given key.
928
+ *
929
+ * This is the primary method for accessing ResolveOnce instances. Each unique
930
+ * key gets its own instance that persists across calls.
931
+ *
932
+ * @param key - The key or function returning the key
933
+ * @param ctx - Optional context override for this operation
934
+ * @returns The ResolveOnce instance for this key
935
+ *
936
+ * @example
937
+ * ```typescript
938
+ * const result = cache.get('myKey').once(({ refKey, givenKey, ctx }) => {
939
+ * return computeValue(givenKey, ctx);
940
+ * });
941
+ * ```
942
+ */
943
+ get(key: K | (() => K), ctx?: CTX): ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>> {
445
944
  if (typeof key === "function") {
446
945
  key = (key as () => K)();
447
946
  }
448
- return this._map.has(key);
947
+ return this._keyed.getItem(key, ctx).value;
449
948
  }
450
949
 
451
- // lock<R extends Promisable<T>>(fn: (map: LRUMap<K, T>) => R): Promise<UnPromisify<R>> {
452
- // return this.#lock.add(() => fn(this._map));
453
- // }
950
+ /**
951
+ * Gets or creates the complete KeyedNgItem for a key.
952
+ *
953
+ * Useful when you need access to the full item structure including metadata.
954
+ *
955
+ * @param key - The key to get
956
+ * @param ctx - Optional context override
957
+ * @returns The complete KeyedNgItem
958
+ */
959
+ getItem(key: K, ctx?: CTX): KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX> {
960
+ return this._keyed.getItem(key, ctx);
961
+ }
454
962
 
963
+ /**
964
+ * Checks if a key exists in the collection.
965
+ *
966
+ * @param key - The key or function returning the key
967
+ * @returns True if the key exists
968
+ */
969
+ has(key: K | (() => K)): boolean {
970
+ return this._keyed.has(key);
971
+ }
972
+
973
+ /**
974
+ * Deletes an entry from the collection.
975
+ *
976
+ * Triggers onDelete callbacks before removal.
977
+ *
978
+ * @param key - The key to delete
979
+ */
455
980
  delete(key: K): void {
456
- this._map.delete(key);
981
+ this._keyed.delete(key);
457
982
  }
458
983
 
984
+ /**
985
+ * Resets and removes an entry from the collection.
986
+ *
987
+ * Calls the optional reset() method on the value before deletion,
988
+ * allowing for cleanup operations.
989
+ *
990
+ * @param key - The key to reset and delete
991
+ */
459
992
  unget(key: K): void {
460
- const keyed = this._map.get(key);
461
- keyed?.reset();
462
- this._map.delete(key);
993
+ const item = this._keyed.getItem(key);
994
+ item.value.reset?.();
995
+ return this._keyed.delete(item.givenKey);
463
996
  }
464
997
 
998
+ /**
999
+ * Resets all entries by calling their optional reset() methods.
1000
+ *
1001
+ * Does not remove entries from the collection, only resets their state.
1002
+ * Useful for cleanup without losing the collection structure.
1003
+ */
465
1004
  reset(): void {
466
- this._map.forEach((keyed) => keyed.reset());
467
- this._map.clear();
1005
+ for (const v of this._keyed.values()) {
1006
+ v.value.reset?.();
1007
+ }
468
1008
  }
469
- }
470
-
471
- interface KeyItem<K, V> {
472
- readonly key: K;
473
- readonly value: Result<V>;
474
- }
475
1009
 
476
- export class KeyedResolvOnce<T, K = string, CTX extends NonNullable<object> = object> extends Keyed<
477
- ResolveOnce<T, AddKey<CTX, K>>,
478
- K,
479
- CTX
480
- > {
481
- constructor(kp: Partial<AddKeyedParam<K, ResolveOnce<T, CTX>, CTX>> = {}) {
482
- // need the upcast we add to ResolvOnce CTX the Key
483
- super((ctx) => new ResolveOnce<T, AddKey<CTX, K>>(ctx), kp as AddKeyedParam<K, ResolveOnce<T, AddKey<CTX, K>>, CTX>);
1010
+ /**
1011
+ * Iterates over all completed entries, yielding key-result pairs.
1012
+ *
1013
+ * Only yields entries that have been resolved (ready state).
1014
+ * Values are wrapped in Result to distinguish success from error.
1015
+ *
1016
+ * @param fn - Callback receiving KeyItem and index
1017
+ *
1018
+ * @example
1019
+ * ```typescript
1020
+ * cache.forEach((item, idx) => {
1021
+ * console.log(idx, item.key);
1022
+ * if (item.value.Ok) {
1023
+ * console.log('Success:', item.value.unwrap());
1024
+ * } else {
1025
+ * console.error('Error:', item.value.unwrapErr());
1026
+ * }
1027
+ * });
1028
+ * ```
1029
+ */
1030
+ forEach(fn: (ki: KeyItem<K, T>, idx: number) => void): void {
1031
+ for (const [item, idx] of this._keyed.entries()) {
1032
+ const v = item.value;
1033
+ const k = item.givenKey;
1034
+ if (!v.ready) {
1035
+ continue;
1036
+ }
1037
+ if (v.error) {
1038
+ fn({ key: k, value: Result.Err<T>(v.error) }, idx);
1039
+ } else {
1040
+ fn({ key: k, value: Result.Ok<T>(v.value as T) }, idx);
1041
+ }
1042
+ }
484
1043
  }
485
1044
 
486
- *entries(): IterableIterator<KeyItem<K, T>> {
487
- for (const [k, v] of this._map.entries()) {
1045
+ /**
1046
+ * Returns an iterable of all completed entries.
1047
+ *
1048
+ * Only yields entries that have been resolved. Values are wrapped in Result.
1049
+ *
1050
+ * @returns Iterable of KeyItem entries
1051
+ *
1052
+ * @example
1053
+ * ```typescript
1054
+ * for (const item of cache.entries()) {
1055
+ * console.log(item.key, item.value.Ok);
1056
+ * }
1057
+ * ```
1058
+ */
1059
+ *entries(): Iterable<KeyItem<K, T>> {
1060
+ /* this is not optimal, but sufficient for now */
1061
+ for (const [item] of this._keyed.entries()) {
1062
+ const v = item.value;
1063
+ const k = item.givenKey;
488
1064
  if (!v.ready) {
489
1065
  continue;
490
1066
  }
@@ -495,41 +1071,98 @@ export class KeyedResolvOnce<T, K = string, CTX extends NonNullable<object> = ob
495
1071
  }
496
1072
  }
497
1073
  }
1074
+ }
498
1075
 
1076
+ /**
1077
+ * Keyed collection of ResolveSeq instances.
1078
+ *
1079
+ * Manages a map of ResolveSeq instances indexed by keys, with optional LRU caching.
1080
+ * Each key gets its own ResolveSeq instance for sequential execution of operations.
1081
+ *
1082
+ * @template VALUEType - The return type of the ResolveSeq instances
1083
+ * @template KEYType - The key type
1084
+ * @template CTX - Optional context type
1085
+ *
1086
+ * @example
1087
+ * ```typescript
1088
+ * const sequences = new KeyedResolvSeq<number, string>();
1089
+ *
1090
+ * // Each key gets its own sequential executor
1091
+ * sequences.get('user1').add(() => updateUser1());
1092
+ * sequences.get('user2').add(() => updateUser2());
1093
+ * ```
1094
+ */
1095
+ export class KeyedResolvSeq<
1096
+ VALUEType extends NonNullable<unknown>,
1097
+ KEYType = string,
1098
+ CTX extends NonNullable<object> = object,
1099
+ > extends KeyedNg<KEYType, ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>>, CTX> {
499
1100
  /**
1101
+ * Creates a new KeyedResolvSeq instance.
500
1102
  *
501
- * @returns The values of the resolved keys
1103
+ * @param kp - Configuration options (key2string, ctx, lru)
502
1104
  */
503
- values(): KeyItem<K, T>[] {
504
- return Array.from(this.entries());
505
- }
506
- }
507
-
508
- type AddKey<X extends NonNullable<object>, K> = X & { key: K };
509
- type WithCTX<K, T, CTX extends NonNullable<object>> = KeyedParam<K, ResolveSeq<T, AddKey<CTX, K>>> & { readonly ctx: CTX };
510
-
511
- export class KeyedResolvSeq<T extends NonNullable<unknown>, K = string, CTX extends NonNullable<object> = object> extends Keyed<
512
- ResolveSeq<T, AddKey<CTX, K>>,
513
- K,
514
- CTX
515
- > {
516
- constructor(kp: Partial<WithCTX<K, T, CTX>> = {}) {
517
- super((ctx) => new ResolveSeq<T, AddKey<CTX, K>>(ctx), kp);
1105
+ constructor(kp: Partial<Omit<KeyedNgOptions<KEYType, VALUEType, CTX>, "createValue">> = {}) {
1106
+ super({
1107
+ createValue: (
1108
+ item: KeyedNgItem<KEYType, ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>>, CTX>,
1109
+ ): ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>> => {
1110
+ return new ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>>({
1111
+ ...item,
1112
+ ctx: kp.ctx ?? item.ctx,
1113
+ });
1114
+ },
1115
+ key2string: kp.key2string,
1116
+ ctx: kp.ctx as CTX,
1117
+ lru: kp.lru,
1118
+ });
518
1119
  }
519
1120
  }
520
1121
 
1122
+ /**
1123
+ * Internal helper class for the Lazy function.
1124
+ * @internal
1125
+ */
521
1126
  class LazyContainer<T> {
522
- readonly resolveOnce = new ResolveOnce<T>();
1127
+ readonly resolveOnce: ResolveOnce<T>;
523
1128
 
1129
+ constructor(opts?: ResolveOnceOpts) {
1130
+ this.resolveOnce = new ResolveOnce<T>(undefined, opts);
1131
+ }
524
1132
  call<Args extends readonly unknown[], Return>(fn: (...args: Args) => Return): () => Return {
525
1133
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any
526
1134
  return (...args: Args) => this.resolveOnce.once(() => fn(...args) as any) as unknown as Return;
527
1135
  }
528
1136
  }
529
1137
 
530
- // T extends (...args: infer P) => any
531
- // export function Lazy<R extends (...args: infer P) => infer X >(fn: R): (...args: P) =>infer
532
- export function Lazy<Args extends readonly unknown[], Return>(fn: (...args: Args) => Return): (...args: Args) => Return {
533
- const lazy = new LazyContainer<Return>();
1138
+ /**
1139
+ * Creates a lazy-evaluated version of a function that executes only once and caches the result.
1140
+ *
1141
+ * The returned function will execute the original function on first call and return
1142
+ * the cached result for all subsequent calls, regardless of arguments. This is useful
1143
+ * for expensive computations or resource initialization.
1144
+ *
1145
+ * @template Args - The argument types of the function
1146
+ * @template Return - The return type of the function
1147
+ * @param fn - The function to make lazy
1148
+ * @returns A wrapped function that executes once and caches the result
1149
+ *
1150
+ * @example
1151
+ * ```typescript
1152
+ * const getConfig = Lazy(() => {
1153
+ * console.log('Loading config...');
1154
+ * return { apiKey: 'secret' };
1155
+ * });
1156
+ *
1157
+ * getConfig(); // Logs "Loading config..." and returns config
1158
+ * getConfig(); // Returns cached config without logging
1159
+ * ```
1160
+ */
1161
+
1162
+ export function Lazy<Args extends readonly unknown[], Return>(
1163
+ fn: (...args: Args) => Return,
1164
+ opts?: ResolveOnceOpts,
1165
+ ): (...args: Args) => Return {
1166
+ const lazy = new LazyContainer<Return>(opts);
534
1167
  return lazy.call(fn);
535
1168
  }