@adviser/cement 0.5.0 → 0.5.1
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.
- package/README.md +168 -23
- package/cjs/add-cement-do-not-export.cjs +26 -0
- package/cjs/add-cement-do-not-export.cjs.map +1 -0
- package/cjs/add-cement-do-not-export.d.ts +3 -0
- package/cjs/add-cement-do-not-export.d.ts.map +1 -0
- package/cjs/app-context.cjs.map +1 -1
- package/cjs/app-context.d.ts.map +1 -1
- package/cjs/base-basic-sys-abstraction.test.cjs +21 -8
- package/cjs/base-basic-sys-abstraction.test.cjs.map +1 -1
- package/cjs/base-sys-abstraction.cjs +9 -8
- package/cjs/base-sys-abstraction.cjs.map +1 -1
- package/cjs/base-sys-abstraction.d.ts +4 -1
- package/cjs/base-sys-abstraction.d.ts.map +1 -1
- package/cjs/bin2text.cjs.map +1 -1
- package/cjs/bin2text.d.ts.map +1 -1
- package/cjs/cf-env/cf-basic-sys-abstraction.cjs +74 -0
- package/cjs/cf-env/cf-basic-sys-abstraction.cjs.map +1 -0
- package/cjs/cf-env/cf-basic-sys-abstraction.d.ts +15 -0
- package/cjs/cf-env/cf-basic-sys-abstraction.d.ts.map +1 -0
- package/cjs/cf-env/cf-env-actions.cjs +59 -0
- package/cjs/cf-env/cf-env-actions.cjs.map +1 -0
- package/cjs/cf-env/cf-env-actions.d.ts +17 -0
- package/cjs/cf-env/cf-env-actions.d.ts.map +1 -0
- package/cjs/cf-env/index.cjs.map +1 -0
- package/cjs/cf-env/index.d.ts.map +1 -0
- package/cjs/cli/generate-version-ts-cmd.cjs +79 -0
- package/cjs/cli/generate-version-ts-cmd.cjs.map +1 -0
- package/cjs/cli/generate-version-ts-cmd.d.ts +3 -0
- package/cjs/cli/generate-version-ts-cmd.d.ts.map +1 -0
- package/cjs/cli/main.cjs +8 -3
- package/cjs/cli/main.cjs.map +1 -1
- package/cjs/cli/patch-version-cmd.cjs +3 -226
- package/cjs/cli/patch-version-cmd.cjs.map +1 -1
- package/cjs/cli/patch-version-cmd.d.ts +0 -4
- package/cjs/cli/patch-version-cmd.d.ts.map +1 -1
- package/cjs/cli/prepare-pubdir-cmd.cjs +150 -0
- package/cjs/cli/prepare-pubdir-cmd.cjs.map +1 -0
- package/cjs/cli/prepare-pubdir-cmd.d.ts +4 -0
- package/cjs/cli/prepare-pubdir-cmd.d.ts.map +1 -0
- package/cjs/cli/publish-tags-cmd.cjs +97 -0
- package/cjs/cli/publish-tags-cmd.cjs.map +1 -0
- package/cjs/cli/publish-tags-cmd.d.ts +3 -0
- package/cjs/cli/publish-tags-cmd.d.ts.map +1 -0
- package/cjs/cli/setup-deno-json-cmd.cjs +77 -0
- package/cjs/cli/setup-deno-json-cmd.cjs.map +1 -0
- package/cjs/cli/setup-deno-json-cmd.d.ts +3 -0
- package/cjs/cli/setup-deno-json-cmd.d.ts.map +1 -0
- package/cjs/cli/utils.cjs +93 -0
- package/cjs/cli/utils.cjs.map +1 -0
- package/cjs/cli/utils.d.ts +6 -0
- package/cjs/cli/utils.d.ts.map +1 -0
- package/cjs/coerce-binary.cjs +10 -2
- package/cjs/coerce-binary.cjs.map +1 -1
- package/cjs/coerce-binary.d.ts +2 -0
- package/cjs/coerce-binary.d.ts.map +1 -1
- package/cjs/crypto.cjs.map +1 -1
- package/cjs/crypto.d.ts.map +1 -1
- package/cjs/deno-env/deno-basic-sys-abstraction.cjs +40 -0
- package/cjs/deno-env/deno-basic-sys-abstraction.cjs.map +1 -0
- package/cjs/deno-env/deno-basic-sys-abstraction.d.ts +13 -0
- package/cjs/deno-env/deno-basic-sys-abstraction.d.ts.map +1 -0
- package/cjs/deno-env/deno-env-actions.cjs +44 -0
- package/cjs/deno-env/deno-env-actions.cjs.map +1 -0
- package/cjs/deno-env/deno-env-actions.d.ts.map +1 -0
- package/cjs/deno-env/index.cjs +19 -0
- package/cjs/deno-env/index.cjs.map +1 -0
- package/cjs/deno-env/index.d.ts +3 -0
- package/cjs/deno-env/index.d.ts.map +1 -0
- package/cjs/deno-fs/deno-basic-sys-abstraction.cjs +37 -0
- package/cjs/deno-fs/deno-basic-sys-abstraction.cjs.map +1 -0
- package/cjs/deno-fs/deno-basic-sys-abstraction.d.ts +11 -0
- package/cjs/deno-fs/deno-basic-sys-abstraction.d.ts.map +1 -0
- package/cjs/deno-fs/deno-env-actions.cjs +43 -0
- package/cjs/deno-fs/deno-env-actions.cjs.map +1 -0
- package/cjs/deno-fs/deno-env-actions.d.ts +23 -0
- package/cjs/deno-fs/deno-env-actions.d.ts.map +1 -0
- package/cjs/deno-fs/deno-file-service.cjs +103 -0
- package/cjs/deno-fs/deno-file-service.cjs.map +1 -0
- package/cjs/deno-fs/deno-file-service.d.ts +16 -0
- package/cjs/deno-fs/deno-file-service.d.ts.map +1 -0
- package/cjs/deno-fs/deno-sys-abstraction.cjs +103 -0
- package/cjs/deno-fs/deno-sys-abstraction.cjs.map +1 -0
- package/cjs/deno-fs/deno-sys-abstraction.d.ts +18 -0
- package/cjs/deno-fs/deno-sys-abstraction.d.ts.map +1 -0
- package/cjs/deno-fs/index.cjs +21 -0
- package/cjs/deno-fs/index.cjs.map +1 -0
- package/cjs/deno-fs/index.d.ts +5 -0
- package/cjs/deno-fs/index.d.ts.map +1 -0
- package/cjs/future.cjs +5 -1
- package/cjs/future.cjs.map +1 -1
- package/cjs/future.d.ts +4 -2
- package/cjs/future.d.ts.map +1 -1
- package/cjs/future.test.cjs +9 -0
- package/cjs/future.test.cjs.map +1 -1
- package/cjs/http_header.cjs +72 -45
- package/cjs/http_header.cjs.map +1 -1
- package/cjs/http_header.d.ts +10 -4
- package/cjs/http_header.d.ts.map +1 -1
- package/cjs/http_header.test.cjs +44 -0
- package/cjs/http_header.test.cjs.map +1 -1
- package/cjs/import-meta-env.commonjs.cjs +22 -2
- package/cjs/import-meta-env.commonjs.cjs.map +1 -1
- package/cjs/import-meta-env.commonjs.d.ts +10 -2
- package/cjs/import-meta-env.commonjs.d.ts.map +1 -1
- package/cjs/index.cjs +19 -24
- package/cjs/index.cjs.map +1 -1
- package/cjs/index.d.ts +19 -1
- package/cjs/index.d.ts.map +1 -1
- package/cjs/is-json.cjs.map +1 -1
- package/cjs/is-json.d.ts.map +1 -1
- package/cjs/is-promise.cjs.map +1 -1
- package/cjs/is-promise.d.ts +1 -1
- package/cjs/is-promise.d.ts.map +1 -1
- package/cjs/keyed-ng.cjs +94 -0
- package/cjs/keyed-ng.cjs.map +1 -0
- package/cjs/keyed-ng.d.ts +52 -0
- package/cjs/keyed-ng.d.ts.map +1 -0
- package/cjs/keyed-ng.test.cjs +151 -0
- package/cjs/keyed-ng.test.cjs.map +1 -0
- package/cjs/keyed-ng.test.d.ts +2 -0
- package/cjs/keyed-ng.test.d.ts.map +1 -0
- package/cjs/log-level-impl.cjs +4 -4
- package/cjs/log-level-impl.cjs.map +1 -1
- package/cjs/log-level-impl.d.ts +2 -1
- package/cjs/log-level-impl.d.ts.map +1 -1
- package/cjs/logger-impl.cjs +12 -45
- package/cjs/logger-impl.cjs.map +1 -1
- package/cjs/logger-impl.d.ts +3 -4
- package/cjs/logger-impl.d.ts.map +1 -1
- package/cjs/logger.cjs +26 -42
- package/cjs/logger.cjs.map +1 -1
- package/cjs/logger.d.ts +1 -16
- package/cjs/logger.d.ts.map +1 -1
- package/cjs/logger.test.cjs +11 -7
- package/cjs/logger.test.cjs.map +1 -1
- package/cjs/lru-map-set.cjs +2 -1
- package/cjs/lru-map-set.cjs.map +1 -1
- package/cjs/lru-map-set.d.ts +4 -1
- package/cjs/lru-map-set.d.ts.map +1 -1
- package/cjs/mutable-url.cjs +7 -7
- package/cjs/mutable-url.cjs.map +1 -1
- package/cjs/mutable-url.test.cjs +221 -220
- package/cjs/mutable-url.test.cjs.map +1 -1
- package/cjs/node-env/index.cjs +19 -0
- package/cjs/node-env/index.cjs.map +1 -0
- package/cjs/node-env/index.d.ts +3 -0
- package/cjs/node-env/index.d.ts.map +1 -0
- package/cjs/node-env/node-basic-sys-abstraction.cjs +52 -0
- package/cjs/node-env/node-basic-sys-abstraction.cjs.map +1 -0
- package/cjs/node-env/node-basic-sys-abstraction.d.ts +26 -0
- package/cjs/node-env/node-basic-sys-abstraction.d.ts.map +1 -0
- package/cjs/node-env/node-env-actions.cjs +43 -0
- package/cjs/node-env/node-env-actions.cjs.map +1 -0
- package/cjs/node-env/node-env-actions.d.ts +15 -0
- package/cjs/node-env/node-env-actions.d.ts.map +1 -0
- package/cjs/node-fs/get-iface-adr.cjs.map +1 -0
- package/cjs/node-fs/get-iface-adr.d.ts.map +1 -0
- package/cjs/node-fs/index.cjs.map +1 -0
- package/cjs/node-fs/index.d.ts.map +1 -0
- package/cjs/node-fs/mock-file-service.cjs +35 -0
- package/cjs/node-fs/mock-file-service.cjs.map +1 -0
- package/cjs/node-fs/mock-file-service.d.ts +11 -0
- package/cjs/node-fs/mock-file-service.d.ts.map +1 -0
- package/cjs/node-fs/mock-file-service.test.cjs +66 -0
- package/cjs/node-fs/mock-file-service.test.cjs.map +1 -0
- package/cjs/node-fs/mock-file-service.test.d.ts.map +1 -0
- package/cjs/node-fs/node-file-service.cjs +80 -0
- package/cjs/node-fs/node-file-service.cjs.map +1 -0
- package/cjs/node-fs/node-file-service.d.ts +16 -0
- package/cjs/node-fs/node-file-service.d.ts.map +1 -0
- package/cjs/node-fs/node-sys-abstraction.cjs +104 -0
- package/cjs/node-fs/node-sys-abstraction.cjs.map +1 -0
- package/cjs/node-fs/node-sys-abstraction.d.ts +18 -0
- package/cjs/node-fs/node-sys-abstraction.d.ts.map +1 -0
- package/cjs/node-fs/node-sys-abstraction.test.cjs.map +1 -0
- package/cjs/node-fs/node-sys-abstraction.test.d.ts.map +1 -0
- package/cjs/on-func.cjs +58 -0
- package/cjs/on-func.cjs.map +1 -0
- package/cjs/on-func.d.ts +15 -0
- package/cjs/on-func.d.ts.map +1 -0
- package/cjs/on-func.test.cjs +97 -0
- package/cjs/on-func.test.cjs.map +1 -0
- package/cjs/on-func.test.d.ts +27 -0
- package/cjs/on-func.test.d.ts.map +1 -0
- package/cjs/option.cjs.map +1 -1
- package/cjs/option.d.ts.map +1 -1
- package/cjs/path-ops.test.cjs.map +1 -1
- package/cjs/poller.cjs +150 -0
- package/cjs/poller.cjs.map +1 -0
- package/cjs/poller.d.ts +51 -0
- package/cjs/poller.d.ts.map +1 -0
- package/cjs/poller.test.cjs +164 -0
- package/cjs/poller.test.cjs.map +1 -0
- package/cjs/poller.test.d.ts +2 -0
- package/cjs/poller.test.d.ts.map +1 -0
- package/cjs/promise-sleep.cjs +33 -0
- package/cjs/promise-sleep.cjs.map +1 -0
- package/cjs/promise-sleep.d.ts +29 -0
- package/cjs/promise-sleep.d.ts.map +1 -0
- package/cjs/promise-sleep.test.cjs +64 -0
- package/cjs/promise-sleep.test.cjs.map +1 -0
- package/cjs/promise-sleep.test.d.ts +2 -0
- package/cjs/promise-sleep.test.d.ts.map +1 -0
- package/cjs/resolve-once.cjs +219 -113
- package/cjs/resolve-once.cjs.map +1 -1
- package/cjs/resolve-once.d.ts +59 -44
- package/cjs/resolve-once.d.ts.map +1 -1
- package/cjs/resolve-once.test.cjs +226 -47
- package/cjs/resolve-once.test.cjs.map +1 -1
- package/cjs/result.cjs.map +1 -1
- package/cjs/result.d.ts +3 -3
- package/cjs/result.d.ts.map +1 -1
- package/cjs/runtime.cjs.map +1 -1
- package/cjs/runtime.d.ts.map +1 -1
- package/cjs/sys-env.cjs +23 -15
- package/cjs/sys-env.cjs.map +1 -1
- package/cjs/sys-env.d.ts +4 -2
- package/cjs/sys-env.d.ts.map +1 -1
- package/cjs/sys-env.test.cjs +5 -5
- package/cjs/sys-env.test.cjs.map +1 -1
- package/cjs/test/log-write-stream.cjs +4 -6
- package/cjs/test/log-write-stream.cjs.map +1 -1
- package/cjs/test/log-write-stream.d.ts +1 -2
- package/cjs/test/log-write-stream.d.ts.map +1 -1
- package/cjs/test/mock-logger.cjs +3 -4
- package/cjs/test/mock-logger.cjs.map +1 -1
- package/cjs/test/mock-logger.d.ts +1 -2
- package/cjs/test/mock-logger.d.ts.map +1 -1
- package/cjs/timeouted.cjs +154 -0
- package/cjs/timeouted.cjs.map +1 -0
- package/cjs/timeouted.d.ts +60 -0
- package/cjs/timeouted.d.ts.map +1 -0
- package/cjs/timeouted.test.cjs +759 -0
- package/cjs/timeouted.test.cjs.map +1 -0
- package/cjs/timeouted.test.d.ts +2 -0
- package/cjs/timeouted.test.d.ts.map +1 -0
- package/cjs/tracer.cjs.map +1 -1
- package/cjs/tracer.d.ts.map +1 -1
- package/cjs/txt-en-decoder.cjs +2 -5
- package/cjs/txt-en-decoder.cjs.map +1 -1
- package/cjs/txt-en-decoder.d.ts +1 -1
- package/cjs/txt-en-decoder.d.ts.map +1 -1
- package/cjs/types.cjs +26 -1
- package/cjs/types.cjs.map +1 -1
- package/cjs/types.d.ts +30 -0
- package/cjs/types.d.ts.map +1 -1
- package/cjs/uri.cjs +11 -12
- package/cjs/uri.cjs.map +1 -1
- package/cjs/uri.d.ts +2 -3
- package/cjs/uri.d.ts.map +1 -1
- package/cjs/utils/coerce-uint8.cjs +9 -9
- package/cjs/utils/coerce-uint8.cjs.map +1 -1
- package/cjs/utils/coerce-uint8.d.ts +1 -1
- package/cjs/utils/coerce-uint8.d.ts.map +1 -1
- package/cjs/utils/console-write-stream.cjs.map +1 -1
- package/cjs/utils/console-write-stream.d.ts.map +1 -1
- package/cjs/utils/consume.cjs +2 -2
- package/cjs/utils/consume.cjs.map +1 -1
- package/cjs/utils/consume.d.ts.map +1 -1
- package/cjs/utils/consume.test.cjs.map +1 -1
- package/cjs/utils/fanout-write-stream.cjs.map +1 -1
- package/cjs/utils/fanout-write-stream.d.ts.map +1 -1
- package/cjs/utils/get-params-result.cjs +4 -5
- package/cjs/utils/get-params-result.cjs.map +1 -1
- package/cjs/utils/get-params-result.d.ts +1 -2
- package/cjs/utils/get-params-result.d.ts.map +1 -1
- package/cjs/utils/rebuffer.cjs.map +1 -1
- package/cjs/utils/rebuffer.d.ts.map +1 -1
- package/cjs/utils/rebuffer.test.cjs +7 -7
- package/cjs/utils/rebuffer.test.cjs.map +1 -1
- package/cjs/utils/relative-path.cjs.map +1 -1
- package/cjs/utils/relative-path.d.ts.map +1 -1
- package/cjs/utils/sorted-object.cjs +7 -6
- package/cjs/utils/sorted-object.cjs.map +1 -1
- package/cjs/utils/sorted-object.d.ts +4 -3
- package/cjs/utils/sorted-object.d.ts.map +1 -1
- package/cjs/utils/sorted-object.test.cjs +22 -0
- package/cjs/utils/sorted-object.test.cjs.map +1 -0
- package/cjs/utils/sorted-object.test.d.ts +2 -0
- package/cjs/utils/sorted-object.test.d.ts.map +1 -0
- package/cjs/utils/stream-map.cjs.map +1 -1
- package/cjs/utils/stream-map.d.ts.map +1 -1
- package/cjs/utils/stream-map.test.cjs +8 -8
- package/cjs/utils/stream-map.test.cjs.map +1 -1
- package/cjs/utils/stream2string.cjs.map +1 -1
- package/cjs/utils/stream2string.d.ts.map +1 -1
- package/cjs/utils/stream2string.test.cjs +3 -3
- package/cjs/utils/stream2string.test.cjs.map +1 -1
- package/cjs/utils/string2stream.cjs.map +1 -1
- package/cjs/utils/string2stream.d.ts.map +1 -1
- package/cjs/utils/string2stream.test.cjs +4 -3
- package/cjs/utils/string2stream.test.cjs.map +1 -1
- package/cjs/utils/stripper.cjs.map +1 -1
- package/cjs/utils/stripper.d.ts.map +1 -1
- package/cjs/utils/to-sorted.cjs +74 -0
- package/cjs/utils/to-sorted.cjs.map +1 -0
- package/cjs/utils/to-sorted.d.ts +16 -0
- package/cjs/utils/to-sorted.d.ts.map +1 -0
- package/cjs/utils/to-sorted.test.cjs +229 -0
- package/cjs/utils/to-sorted.test.cjs.map +1 -0
- package/cjs/utils/to-sorted.test.d.ts +2 -0
- package/cjs/utils/to-sorted.test.d.ts.map +1 -0
- package/cjs/utils/uint8array-equal.cjs.map +1 -1
- package/cjs/utils/uint8array-equal.d.ts.map +1 -1
- package/cjs/version.cjs +1 -1
- package/cjs/web-env/index.cjs +19 -0
- package/cjs/web-env/index.cjs.map +1 -0
- package/cjs/web-env/index.d.ts +3 -0
- package/cjs/web-env/index.d.ts.map +1 -0
- package/cjs/web-env/web-basic-sys-abstraction.cjs +52 -0
- package/cjs/web-env/web-basic-sys-abstraction.cjs.map +1 -0
- package/cjs/web-env/web-basic-sys-abstraction.d.ts +4 -0
- package/cjs/web-env/web-basic-sys-abstraction.d.ts.map +1 -0
- package/cjs/web-env/web-env-actions.cjs +40 -0
- package/cjs/web-env/web-env-actions.cjs.map +1 -0
- package/cjs/web-env/web-env-actions.d.ts +14 -0
- package/cjs/web-env/web-env-actions.d.ts.map +1 -0
- package/deno.json +9 -11
- package/esm/add-cement-do-not-export.d.ts +3 -0
- package/esm/add-cement-do-not-export.d.ts.map +1 -0
- package/esm/add-cement-do-not-export.js +23 -0
- package/esm/add-cement-do-not-export.js.map +1 -0
- package/esm/app-context.d.ts.map +1 -1
- package/esm/app-context.js.map +1 -1
- package/esm/base-basic-sys-abstraction.test.js +21 -8
- package/esm/base-basic-sys-abstraction.test.js.map +1 -1
- package/esm/base-sys-abstraction.d.ts +4 -1
- package/esm/base-sys-abstraction.d.ts.map +1 -1
- package/esm/base-sys-abstraction.js +9 -8
- package/esm/base-sys-abstraction.js.map +1 -1
- package/esm/bin2text.d.ts.map +1 -1
- package/esm/bin2text.js.map +1 -1
- package/esm/cf-env/cf-basic-sys-abstraction.d.ts +15 -0
- package/esm/cf-env/cf-basic-sys-abstraction.d.ts.map +1 -0
- package/esm/cf-env/cf-basic-sys-abstraction.js +69 -0
- package/esm/cf-env/cf-basic-sys-abstraction.js.map +1 -0
- package/esm/cf-env/cf-env-actions.d.ts +17 -0
- package/esm/cf-env/cf-env-actions.d.ts.map +1 -0
- package/esm/cf-env/cf-env-actions.js +55 -0
- package/esm/cf-env/cf-env-actions.js.map +1 -0
- package/esm/cf-env/index.d.ts.map +1 -0
- package/esm/cf-env/index.js.map +1 -0
- package/esm/cli/generate-version-ts-cmd.d.ts +3 -0
- package/esm/cli/generate-version-ts-cmd.d.ts.map +1 -0
- package/esm/cli/generate-version-ts-cmd.js +43 -0
- package/esm/cli/generate-version-ts-cmd.js.map +1 -0
- package/esm/cli/main.js +6 -1
- package/esm/cli/main.js.map +1 -1
- package/esm/cli/patch-version-cmd.d.ts +0 -4
- package/esm/cli/patch-version-cmd.d.ts.map +1 -1
- package/esm/cli/patch-version-cmd.js +1 -220
- package/esm/cli/patch-version-cmd.js.map +1 -1
- package/esm/cli/prepare-pubdir-cmd.d.ts +4 -0
- package/esm/cli/prepare-pubdir-cmd.d.ts.map +1 -0
- package/esm/cli/prepare-pubdir-cmd.js +113 -0
- package/esm/cli/prepare-pubdir-cmd.js.map +1 -0
- package/esm/cli/publish-tags-cmd.d.ts +3 -0
- package/esm/cli/publish-tags-cmd.d.ts.map +1 -0
- package/esm/cli/publish-tags-cmd.js +61 -0
- package/esm/cli/publish-tags-cmd.js.map +1 -0
- package/esm/cli/setup-deno-json-cmd.d.ts +3 -0
- package/esm/cli/setup-deno-json-cmd.d.ts.map +1 -0
- package/esm/cli/setup-deno-json-cmd.js +41 -0
- package/esm/cli/setup-deno-json-cmd.js.map +1 -0
- package/esm/cli/utils.d.ts +6 -0
- package/esm/cli/utils.d.ts.map +1 -0
- package/esm/cli/utils.js +54 -0
- package/esm/cli/utils.js.map +1 -0
- package/esm/coerce-binary.d.ts +2 -0
- package/esm/coerce-binary.d.ts.map +1 -1
- package/esm/coerce-binary.js +8 -2
- package/esm/coerce-binary.js.map +1 -1
- package/esm/crypto.d.ts.map +1 -1
- package/esm/crypto.js.map +1 -1
- package/esm/deno-env/deno-basic-sys-abstraction.d.ts +13 -0
- package/esm/deno-env/deno-basic-sys-abstraction.d.ts.map +1 -0
- package/esm/deno-env/deno-basic-sys-abstraction.js +35 -0
- package/esm/deno-env/deno-basic-sys-abstraction.js.map +1 -0
- package/esm/deno-env/deno-env-actions.d.ts.map +1 -0
- package/esm/deno-env/deno-env-actions.js +40 -0
- package/esm/deno-env/deno-env-actions.js.map +1 -0
- package/esm/deno-env/index.d.ts +3 -0
- package/esm/deno-env/index.d.ts.map +1 -0
- package/esm/deno-env/index.js +3 -0
- package/esm/deno-env/index.js.map +1 -0
- package/esm/deno-fs/deno-basic-sys-abstraction.d.ts +11 -0
- package/esm/deno-fs/deno-basic-sys-abstraction.d.ts.map +1 -0
- package/esm/deno-fs/deno-basic-sys-abstraction.js +32 -0
- package/esm/deno-fs/deno-basic-sys-abstraction.js.map +1 -0
- package/esm/deno-fs/deno-env-actions.d.ts +23 -0
- package/esm/deno-fs/deno-env-actions.d.ts.map +1 -0
- package/esm/deno-fs/deno-env-actions.js +39 -0
- package/esm/deno-fs/deno-env-actions.js.map +1 -0
- package/esm/deno-fs/deno-file-service.d.ts +16 -0
- package/esm/deno-fs/deno-file-service.d.ts.map +1 -0
- package/esm/deno-fs/deno-file-service.js +66 -0
- package/esm/deno-fs/deno-file-service.js.map +1 -0
- package/esm/deno-fs/deno-sys-abstraction.d.ts +18 -0
- package/esm/deno-fs/deno-sys-abstraction.d.ts.map +1 -0
- package/esm/deno-fs/deno-sys-abstraction.js +97 -0
- package/esm/deno-fs/deno-sys-abstraction.js.map +1 -0
- package/esm/deno-fs/index.d.ts +5 -0
- package/esm/deno-fs/index.d.ts.map +1 -0
- package/esm/deno-fs/index.js +5 -0
- package/esm/deno-fs/index.js.map +1 -0
- package/esm/future.d.ts +4 -2
- package/esm/future.d.ts.map +1 -1
- package/esm/future.js +5 -1
- package/esm/future.js.map +1 -1
- package/esm/future.test.js +9 -0
- package/esm/future.test.js.map +1 -1
- package/esm/http_header.d.ts +10 -4
- package/esm/http_header.d.ts.map +1 -1
- package/esm/http_header.js +72 -45
- package/esm/http_header.js.map +1 -1
- package/esm/http_header.test.js +44 -0
- package/esm/http_header.test.js.map +1 -1
- package/esm/import-meta-env.module.d.ts +12 -2
- package/esm/import-meta-env.module.d.ts.map +1 -1
- package/esm/import-meta-env.module.js +4 -13
- package/esm/import-meta-env.module.js.map +1 -1
- package/esm/index.d.ts +19 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +19 -1
- package/esm/index.js.map +1 -1
- package/esm/is-json.d.ts.map +1 -1
- package/esm/is-json.js.map +1 -1
- package/esm/is-promise.d.ts +1 -1
- package/esm/is-promise.d.ts.map +1 -1
- package/esm/is-promise.js.map +1 -1
- package/esm/keyed-ng.d.ts +52 -0
- package/esm/keyed-ng.d.ts.map +1 -0
- package/esm/keyed-ng.js +90 -0
- package/esm/keyed-ng.js.map +1 -0
- package/esm/keyed-ng.test.d.ts +2 -0
- package/esm/keyed-ng.test.d.ts.map +1 -0
- package/esm/keyed-ng.test.js +149 -0
- package/esm/keyed-ng.test.js.map +1 -0
- package/esm/log-level-impl.d.ts +2 -1
- package/esm/log-level-impl.d.ts.map +1 -1
- package/esm/log-level-impl.js +1 -1
- package/esm/log-level-impl.js.map +1 -1
- package/esm/logger-impl.d.ts +3 -4
- package/esm/logger-impl.d.ts.map +1 -1
- package/esm/logger-impl.js +5 -8
- package/esm/logger-impl.js.map +1 -1
- package/esm/logger.d.ts +1 -16
- package/esm/logger.d.ts.map +1 -1
- package/esm/logger.js +11 -25
- package/esm/logger.js.map +1 -1
- package/esm/logger.test.js +12 -8
- package/esm/logger.test.js.map +1 -1
- package/esm/lru-map-set.d.ts +4 -1
- package/esm/lru-map-set.d.ts.map +1 -1
- package/esm/lru-map-set.js +2 -1
- package/esm/lru-map-set.js.map +1 -1
- package/esm/mutable-url.js +1 -1
- package/esm/mutable-url.js.map +1 -1
- package/esm/mutable-url.test.js +1 -0
- package/esm/mutable-url.test.js.map +1 -1
- package/esm/node-env/index.d.ts +3 -0
- package/esm/node-env/index.d.ts.map +1 -0
- package/esm/node-env/index.js +3 -0
- package/esm/node-env/index.js.map +1 -0
- package/esm/node-env/node-basic-sys-abstraction.d.ts +26 -0
- package/esm/node-env/node-basic-sys-abstraction.d.ts.map +1 -0
- package/esm/node-env/node-basic-sys-abstraction.js +47 -0
- package/esm/node-env/node-basic-sys-abstraction.js.map +1 -0
- package/esm/node-env/node-env-actions.d.ts +15 -0
- package/esm/node-env/node-env-actions.d.ts.map +1 -0
- package/esm/node-env/node-env-actions.js +39 -0
- package/esm/node-env/node-env-actions.js.map +1 -0
- package/esm/node-fs/get-iface-adr.d.ts.map +1 -0
- package/esm/node-fs/get-iface-adr.js.map +1 -0
- package/esm/node-fs/index.d.ts.map +1 -0
- package/esm/node-fs/index.js.map +1 -0
- package/esm/node-fs/mock-file-service.d.ts +11 -0
- package/esm/node-fs/mock-file-service.d.ts.map +1 -0
- package/esm/node-fs/mock-file-service.js +31 -0
- package/esm/node-fs/mock-file-service.js.map +1 -0
- package/esm/node-fs/mock-file-service.test.d.ts.map +1 -0
- package/esm/node-fs/mock-file-service.test.js +31 -0
- package/esm/node-fs/mock-file-service.test.js.map +1 -0
- package/esm/node-fs/node-file-service.d.ts +16 -0
- package/esm/node-fs/node-file-service.d.ts.map +1 -0
- package/esm/node-fs/node-file-service.js +73 -0
- package/esm/node-fs/node-file-service.js.map +1 -0
- package/esm/node-fs/node-sys-abstraction.d.ts +18 -0
- package/esm/node-fs/node-sys-abstraction.d.ts.map +1 -0
- package/esm/node-fs/node-sys-abstraction.js +95 -0
- package/esm/node-fs/node-sys-abstraction.js.map +1 -0
- package/esm/node-fs/node-sys-abstraction.test.d.ts.map +1 -0
- package/esm/node-fs/node-sys-abstraction.test.js.map +1 -0
- package/esm/on-func.d.ts +15 -0
- package/esm/on-func.d.ts.map +1 -0
- package/esm/on-func.js +54 -0
- package/esm/on-func.js.map +1 -0
- package/esm/on-func.test.d.ts +27 -0
- package/esm/on-func.test.d.ts.map +1 -0
- package/esm/on-func.test.js +95 -0
- package/esm/on-func.test.js.map +1 -0
- package/esm/option.d.ts.map +1 -1
- package/esm/option.js.map +1 -1
- package/esm/path-ops.test.js.map +1 -1
- package/esm/poller.d.ts +51 -0
- package/esm/poller.d.ts.map +1 -0
- package/esm/poller.js +146 -0
- package/esm/poller.js.map +1 -0
- package/esm/poller.test.d.ts +2 -0
- package/esm/poller.test.d.ts.map +1 -0
- package/esm/poller.test.js +162 -0
- package/esm/poller.test.js.map +1 -0
- package/esm/promise-sleep.d.ts +29 -0
- package/esm/promise-sleep.d.ts.map +1 -0
- package/esm/promise-sleep.js +30 -0
- package/esm/promise-sleep.js.map +1 -0
- package/esm/promise-sleep.test.d.ts +2 -0
- package/esm/promise-sleep.test.d.ts.map +1 -0
- package/esm/promise-sleep.test.js +62 -0
- package/esm/promise-sleep.test.js.map +1 -0
- package/esm/resolve-once.d.ts +59 -44
- package/esm/resolve-once.d.ts.map +1 -1
- package/esm/resolve-once.js +218 -111
- package/esm/resolve-once.js.map +1 -1
- package/esm/resolve-once.test.js +226 -47
- package/esm/resolve-once.test.js.map +1 -1
- package/esm/result.d.ts +3 -3
- package/esm/result.d.ts.map +1 -1
- package/esm/result.js.map +1 -1
- package/esm/runtime.d.ts.map +1 -1
- package/esm/runtime.js.map +1 -1
- package/esm/sys-env.d.ts +4 -2
- package/esm/sys-env.d.ts.map +1 -1
- package/esm/sys-env.js +19 -11
- package/esm/sys-env.js.map +1 -1
- package/esm/sys-env.test.js +2 -2
- package/esm/sys-env.test.js.map +1 -1
- package/esm/test/log-write-stream.d.ts +1 -2
- package/esm/test/log-write-stream.d.ts.map +1 -1
- package/esm/test/log-write-stream.js +1 -3
- package/esm/test/log-write-stream.js.map +1 -1
- package/esm/test/mock-logger.d.ts +1 -2
- package/esm/test/mock-logger.d.ts.map +1 -1
- package/esm/test/mock-logger.js +1 -2
- package/esm/test/mock-logger.js.map +1 -1
- package/esm/test/test-exit-handler.js +11 -4
- package/esm/test/test-exit-handler.js.map +1 -1
- package/esm/timeouted.d.ts +60 -0
- package/esm/timeouted.d.ts.map +1 -0
- package/esm/timeouted.js +144 -0
- package/esm/timeouted.js.map +1 -0
- package/esm/timeouted.test.d.ts +2 -0
- package/esm/timeouted.test.d.ts.map +1 -0
- package/esm/timeouted.test.js +724 -0
- package/esm/timeouted.test.js.map +1 -0
- package/esm/tracer.d.ts.map +1 -1
- package/esm/tracer.js.map +1 -1
- package/esm/txt-en-decoder.d.ts +1 -1
- package/esm/txt-en-decoder.d.ts.map +1 -1
- package/esm/txt-en-decoder.js +2 -5
- package/esm/txt-en-decoder.js.map +1 -1
- package/esm/types.d.ts +30 -0
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js +24 -0
- package/esm/types.js.map +1 -1
- package/esm/uri.d.ts +2 -3
- package/esm/uri.d.ts.map +1 -1
- package/esm/uri.js +3 -4
- package/esm/uri.js.map +1 -1
- package/esm/utils/coerce-uint8.d.ts +1 -1
- package/esm/utils/coerce-uint8.d.ts.map +1 -1
- package/esm/utils/coerce-uint8.js +1 -1
- package/esm/utils/coerce-uint8.js.map +1 -1
- package/esm/utils/console-write-stream.d.ts.map +1 -1
- package/esm/utils/console-write-stream.js.map +1 -1
- package/esm/utils/consume.d.ts.map +1 -1
- package/esm/utils/consume.js +1 -1
- package/esm/utils/consume.js.map +1 -1
- package/esm/utils/consume.test.js.map +1 -1
- package/esm/utils/fanout-write-stream.d.ts.map +1 -1
- package/esm/utils/fanout-write-stream.js.map +1 -1
- package/esm/utils/get-params-result.d.ts +1 -2
- package/esm/utils/get-params-result.d.ts.map +1 -1
- package/esm/utils/get-params-result.js +1 -2
- package/esm/utils/get-params-result.js.map +1 -1
- package/esm/utils/rebuffer.d.ts.map +1 -1
- package/esm/utils/rebuffer.js.map +1 -1
- package/esm/utils/rebuffer.test.js +7 -7
- package/esm/utils/rebuffer.test.js.map +1 -1
- package/esm/utils/relative-path.d.ts.map +1 -1
- package/esm/utils/relative-path.js.map +1 -1
- package/esm/utils/sorted-object.d.ts +4 -3
- package/esm/utils/sorted-object.d.ts.map +1 -1
- package/esm/utils/sorted-object.js +7 -6
- package/esm/utils/sorted-object.js.map +1 -1
- package/esm/utils/sorted-object.test.d.ts +2 -0
- package/esm/utils/sorted-object.test.d.ts.map +1 -0
- package/esm/utils/sorted-object.test.js +20 -0
- package/esm/utils/sorted-object.test.js.map +1 -0
- package/esm/utils/stream-map.d.ts.map +1 -1
- package/esm/utils/stream-map.js.map +1 -1
- package/esm/utils/stream-map.test.js +8 -8
- package/esm/utils/stream-map.test.js.map +1 -1
- package/esm/utils/stream2string.d.ts.map +1 -1
- package/esm/utils/stream2string.js.map +1 -1
- package/esm/utils/stream2string.test.js +1 -1
- package/esm/utils/stream2string.test.js.map +1 -1
- package/esm/utils/string2stream.d.ts.map +1 -1
- package/esm/utils/string2stream.js.map +1 -1
- package/esm/utils/string2stream.test.js +4 -3
- package/esm/utils/string2stream.test.js.map +1 -1
- package/esm/utils/stripper.d.ts.map +1 -1
- package/esm/utils/stripper.js.map +1 -1
- package/esm/utils/to-sorted.d.ts +16 -0
- package/esm/utils/to-sorted.d.ts.map +1 -0
- package/esm/utils/to-sorted.js +70 -0
- package/esm/utils/to-sorted.js.map +1 -0
- package/esm/utils/to-sorted.test.d.ts +2 -0
- package/esm/utils/to-sorted.test.d.ts.map +1 -0
- package/esm/utils/to-sorted.test.js +227 -0
- package/esm/utils/to-sorted.test.js.map +1 -0
- package/esm/utils/uint8array-equal.d.ts.map +1 -1
- package/esm/utils/uint8array-equal.js.map +1 -1
- package/esm/version.js +1 -1
- package/esm/web-env/index.d.ts +3 -0
- package/esm/web-env/index.d.ts.map +1 -0
- package/esm/web-env/index.js +3 -0
- package/esm/web-env/index.js.map +1 -0
- package/esm/web-env/web-basic-sys-abstraction.d.ts +4 -0
- package/esm/web-env/web-basic-sys-abstraction.d.ts.map +1 -0
- package/esm/web-env/web-basic-sys-abstraction.js +49 -0
- package/esm/web-env/web-basic-sys-abstraction.js.map +1 -0
- package/esm/web-env/web-env-actions.d.ts +14 -0
- package/esm/web-env/web-env-actions.d.ts.map +1 -0
- package/esm/web-env/web-env-actions.js +36 -0
- package/esm/web-env/web-env-actions.js.map +1 -0
- package/package.json +62 -56
- package/src/add-cement-do-not-export.ts +29 -0
- package/src/app-context.ts +111 -5
- package/src/base-sys-abstraction.ts +261 -9
- package/src/bin2text.ts +37 -0
- package/src/cf-env/cf-basic-sys-abstraction.ts +85 -0
- package/src/cf-env/cf-env-actions.ts +55 -0
- package/src/cli/generate-version-ts-cmd.ts +43 -0
- package/src/cli/main.ts +6 -1
- package/src/cli/patch-version-cmd.ts +1 -289
- package/src/cli/prepare-pubdir-cmd.ts +156 -0
- package/src/cli/publish-tags-cmd.ts +70 -0
- package/src/cli/run.sh +10 -1
- package/src/cli/setup-deno-json-cmd.ts +51 -0
- package/src/cli/utils.ts +70 -0
- package/src/coerce-binary.ts +51 -2
- package/src/crypto.ts +35 -1
- package/src/deno-env/deno-basic-sys-abstraction.ts +45 -0
- package/src/deno-env/deno-env-actions.ts +57 -0
- package/src/deno-env/index.ts +2 -0
- package/src/deno-fs/deno-basic-sys-abstraction.ts +45 -0
- package/src/deno-fs/deno-env-actions.ts +56 -0
- package/src/deno-fs/deno-file-service.ts +91 -0
- package/src/deno-fs/deno-sys-abstraction.ts +130 -0
- package/src/deno-fs/index.ts +4 -0
- package/src/future.ts +53 -2
- package/src/http_header.ts +357 -53
- package/src/import-meta-env.commonjs.ts +21 -3
- package/src/import-meta-env.module.ts +5 -14
- package/src/index.ts +22 -4
- package/src/is-json.ts +21 -0
- package/src/is-promise.ts +28 -2
- package/src/keyed-ng.ts +631 -0
- package/src/log-level-impl.ts +2 -1
- package/src/logger-impl.ts +5 -16
- package/src/logger.ts +10 -31
- package/src/lru-map-set.ts +53 -5
- package/src/mutable-url.ts +1 -1
- package/src/node-env/index.ts +2 -0
- package/src/node-env/node-basic-sys-abstraction.ts +66 -0
- package/src/node-env/node-env-actions.ts +46 -0
- package/src/node-fs/mock-file-service.ts +45 -0
- package/src/node-fs/node-file-service.ts +92 -0
- package/src/node-fs/node-sys-abstraction.ts +116 -0
- package/src/on-func.ts +115 -0
- package/src/option.ts +27 -0
- package/src/poller.ts +269 -0
- package/src/promise-sleep.ts +101 -0
- package/src/resolve-once.ts +799 -176
- package/src/result.ts +54 -4
- package/src/runtime.ts +75 -2
- package/src/sys-env.ts +85 -18
- package/src/test/log-write-stream.ts +1 -3
- package/src/test/mock-logger.ts +1 -4
- package/src/timeouted.ts +355 -0
- package/src/tracer.ts +42 -1
- package/src/txt-en-decoder.ts +3 -6
- package/src/types.ts +46 -0
- package/src/uri.ts +79 -9
- package/src/utils/coerce-uint8.ts +61 -1
- package/src/utils/console-write-stream.ts +34 -0
- package/src/utils/consume.ts +107 -1
- package/src/utils/fanout-write-stream.ts +45 -0
- package/src/utils/get-params-result.ts +38 -2
- package/src/utils/rebuffer.ts +42 -0
- package/src/utils/relative-path.ts +108 -0
- package/src/utils/sorted-object.ts +59 -6
- package/src/utils/stream-map.ts +90 -0
- package/src/utils/stream2string.ts +35 -0
- package/src/utils/string2stream.ts +30 -0
- package/src/utils/stripper.ts +34 -0
- package/src/utils/to-sorted.ts +118 -0
- package/src/utils/uint8array-equal.ts +20 -0
- package/src/web-env/index.ts +2 -0
- package/src/web-env/web-basic-sys-abstraction.ts +56 -0
- package/src/web-env/web-env-actions.ts +41 -0
- package/ts/cjs/add-cement-do-not-export.d.ts +3 -0
- package/ts/cjs/add-cement-do-not-export.d.ts.map +1 -0
- package/ts/cjs/add-cement-do-not-export.js +26 -0
- package/ts/cjs/add-cement-do-not-export.js.map +1 -0
- package/ts/cjs/app-context.d.ts.map +1 -1
- package/ts/cjs/app-context.js.map +1 -1
- package/ts/cjs/base-basic-sys-abstraction.test.js +21 -8
- package/ts/cjs/base-basic-sys-abstraction.test.js.map +1 -1
- package/ts/cjs/base-sys-abstraction.d.ts +4 -1
- package/ts/cjs/base-sys-abstraction.d.ts.map +1 -1
- package/ts/cjs/base-sys-abstraction.js +9 -8
- package/ts/cjs/base-sys-abstraction.js.map +1 -1
- package/ts/cjs/bin2text.d.ts.map +1 -1
- package/ts/cjs/bin2text.js.map +1 -1
- package/ts/cjs/cf-env/cf-basic-sys-abstraction.d.ts +15 -0
- package/ts/cjs/cf-env/cf-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/cjs/cf-env/cf-basic-sys-abstraction.js +74 -0
- package/ts/cjs/cf-env/cf-basic-sys-abstraction.js.map +1 -0
- package/ts/cjs/cf-env/cf-env-actions.d.ts +17 -0
- package/ts/cjs/cf-env/cf-env-actions.d.ts.map +1 -0
- package/ts/cjs/cf-env/cf-env-actions.js +59 -0
- package/ts/cjs/cf-env/cf-env-actions.js.map +1 -0
- package/ts/cjs/cf-env/index.d.ts.map +1 -0
- package/ts/cjs/cf-env/index.js.map +1 -0
- package/ts/cjs/cli/generate-version-ts-cmd.d.ts +3 -0
- package/ts/cjs/cli/generate-version-ts-cmd.d.ts.map +1 -0
- package/ts/cjs/cli/generate-version-ts-cmd.js +79 -0
- package/ts/cjs/cli/generate-version-ts-cmd.js.map +1 -0
- package/ts/cjs/cli/main.js +8 -3
- package/ts/cjs/cli/main.js.map +1 -1
- package/ts/cjs/cli/patch-version-cmd.d.ts +0 -4
- package/ts/cjs/cli/patch-version-cmd.d.ts.map +1 -1
- package/ts/cjs/cli/patch-version-cmd.js +3 -226
- package/ts/cjs/cli/patch-version-cmd.js.map +1 -1
- package/ts/cjs/cli/prepare-pubdir-cmd.d.ts +4 -0
- package/ts/cjs/cli/prepare-pubdir-cmd.d.ts.map +1 -0
- package/ts/cjs/cli/prepare-pubdir-cmd.js +150 -0
- package/ts/cjs/cli/prepare-pubdir-cmd.js.map +1 -0
- package/ts/cjs/cli/publish-tags-cmd.d.ts +3 -0
- package/ts/cjs/cli/publish-tags-cmd.d.ts.map +1 -0
- package/ts/cjs/cli/publish-tags-cmd.js +97 -0
- package/ts/cjs/cli/publish-tags-cmd.js.map +1 -0
- package/ts/cjs/cli/setup-deno-json-cmd.d.ts +3 -0
- package/ts/cjs/cli/setup-deno-json-cmd.d.ts.map +1 -0
- package/ts/cjs/cli/setup-deno-json-cmd.js +77 -0
- package/ts/cjs/cli/setup-deno-json-cmd.js.map +1 -0
- package/ts/cjs/cli/utils.d.ts +6 -0
- package/ts/cjs/cli/utils.d.ts.map +1 -0
- package/ts/cjs/cli/utils.js +93 -0
- package/ts/cjs/cli/utils.js.map +1 -0
- package/ts/cjs/coerce-binary.d.ts +2 -0
- package/ts/cjs/coerce-binary.d.ts.map +1 -1
- package/ts/cjs/coerce-binary.js +10 -2
- package/ts/cjs/coerce-binary.js.map +1 -1
- package/ts/cjs/crypto.d.ts.map +1 -1
- package/ts/cjs/crypto.js.map +1 -1
- package/ts/cjs/deno-env/deno-basic-sys-abstraction.d.ts +13 -0
- package/ts/cjs/deno-env/deno-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/cjs/deno-env/deno-basic-sys-abstraction.js +40 -0
- package/ts/cjs/deno-env/deno-basic-sys-abstraction.js.map +1 -0
- package/ts/cjs/deno-env/deno-env-actions.d.ts.map +1 -0
- package/ts/cjs/deno-env/deno-env-actions.js +44 -0
- package/ts/cjs/deno-env/deno-env-actions.js.map +1 -0
- package/ts/cjs/deno-env/index.d.ts +3 -0
- package/ts/cjs/deno-env/index.d.ts.map +1 -0
- package/ts/cjs/deno-env/index.js +19 -0
- package/ts/cjs/deno-env/index.js.map +1 -0
- package/ts/cjs/deno-fs/deno-basic-sys-abstraction.d.ts +11 -0
- package/ts/cjs/deno-fs/deno-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/cjs/deno-fs/deno-basic-sys-abstraction.js +37 -0
- package/ts/cjs/deno-fs/deno-basic-sys-abstraction.js.map +1 -0
- package/ts/cjs/deno-fs/deno-env-actions.d.ts +23 -0
- package/ts/cjs/deno-fs/deno-env-actions.d.ts.map +1 -0
- package/ts/cjs/deno-fs/deno-env-actions.js +43 -0
- package/ts/cjs/deno-fs/deno-env-actions.js.map +1 -0
- package/ts/cjs/deno-fs/deno-file-service.d.ts +16 -0
- package/ts/cjs/deno-fs/deno-file-service.d.ts.map +1 -0
- package/ts/cjs/deno-fs/deno-file-service.js +103 -0
- package/ts/cjs/deno-fs/deno-file-service.js.map +1 -0
- package/ts/cjs/deno-fs/deno-sys-abstraction.d.ts +18 -0
- package/ts/cjs/deno-fs/deno-sys-abstraction.d.ts.map +1 -0
- package/ts/cjs/deno-fs/deno-sys-abstraction.js +103 -0
- package/ts/cjs/deno-fs/deno-sys-abstraction.js.map +1 -0
- package/ts/cjs/deno-fs/index.d.ts +5 -0
- package/ts/cjs/deno-fs/index.d.ts.map +1 -0
- package/ts/cjs/deno-fs/index.js +21 -0
- package/ts/cjs/deno-fs/index.js.map +1 -0
- package/ts/cjs/future.d.ts +4 -2
- package/ts/cjs/future.d.ts.map +1 -1
- package/ts/cjs/future.js +5 -1
- package/ts/cjs/future.js.map +1 -1
- package/ts/cjs/future.test.js +9 -0
- package/ts/cjs/future.test.js.map +1 -1
- package/ts/cjs/http_header.d.ts +10 -4
- package/ts/cjs/http_header.d.ts.map +1 -1
- package/ts/cjs/http_header.js +72 -45
- package/ts/cjs/http_header.js.map +1 -1
- package/ts/cjs/http_header.test.js +44 -0
- package/ts/cjs/http_header.test.js.map +1 -1
- package/ts/cjs/import-meta-env.commonjs.d.ts +10 -2
- package/ts/cjs/import-meta-env.commonjs.d.ts.map +1 -1
- package/ts/cjs/import-meta-env.commonjs.js +22 -2
- package/ts/cjs/import-meta-env.commonjs.js.map +1 -1
- package/ts/cjs/index.d.ts +19 -1
- package/ts/cjs/index.d.ts.map +1 -1
- package/ts/cjs/index.js +19 -24
- package/ts/cjs/index.js.map +1 -1
- package/ts/cjs/is-json.d.ts.map +1 -1
- package/ts/cjs/is-json.js.map +1 -1
- package/ts/cjs/is-promise.d.ts +1 -1
- package/ts/cjs/is-promise.d.ts.map +1 -1
- package/ts/cjs/is-promise.js.map +1 -1
- package/ts/cjs/keyed-ng.d.ts +52 -0
- package/ts/cjs/keyed-ng.d.ts.map +1 -0
- package/ts/cjs/keyed-ng.js +94 -0
- package/ts/cjs/keyed-ng.js.map +1 -0
- package/ts/cjs/keyed-ng.test.d.ts +2 -0
- package/ts/cjs/keyed-ng.test.d.ts.map +1 -0
- package/ts/cjs/keyed-ng.test.js +151 -0
- package/ts/cjs/keyed-ng.test.js.map +1 -0
- package/ts/cjs/log-level-impl.d.ts +2 -1
- package/ts/cjs/log-level-impl.d.ts.map +1 -1
- package/ts/cjs/log-level-impl.js +4 -4
- package/ts/cjs/log-level-impl.js.map +1 -1
- package/ts/cjs/logger-impl.d.ts +3 -4
- package/ts/cjs/logger-impl.d.ts.map +1 -1
- package/ts/cjs/logger-impl.js +12 -45
- package/ts/cjs/logger-impl.js.map +1 -1
- package/ts/cjs/logger.d.ts +1 -16
- package/ts/cjs/logger.d.ts.map +1 -1
- package/ts/cjs/logger.js +26 -42
- package/ts/cjs/logger.js.map +1 -1
- package/ts/cjs/logger.test.js +11 -7
- package/ts/cjs/logger.test.js.map +1 -1
- package/ts/cjs/lru-map-set.d.ts +4 -1
- package/ts/cjs/lru-map-set.d.ts.map +1 -1
- package/ts/cjs/lru-map-set.js +2 -1
- package/ts/cjs/lru-map-set.js.map +1 -1
- package/ts/cjs/mutable-url.js +7 -7
- package/ts/cjs/mutable-url.js.map +1 -1
- package/ts/cjs/mutable-url.test.js +221 -220
- package/ts/cjs/mutable-url.test.js.map +1 -1
- package/ts/cjs/node-env/index.d.ts +3 -0
- package/ts/cjs/node-env/index.d.ts.map +1 -0
- package/ts/cjs/node-env/index.js +19 -0
- package/ts/cjs/node-env/index.js.map +1 -0
- package/ts/cjs/node-env/node-basic-sys-abstraction.d.ts +26 -0
- package/ts/cjs/node-env/node-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/cjs/node-env/node-basic-sys-abstraction.js +52 -0
- package/ts/cjs/node-env/node-basic-sys-abstraction.js.map +1 -0
- package/ts/cjs/node-env/node-env-actions.d.ts +15 -0
- package/ts/cjs/node-env/node-env-actions.d.ts.map +1 -0
- package/ts/cjs/node-env/node-env-actions.js +43 -0
- package/ts/cjs/node-env/node-env-actions.js.map +1 -0
- package/ts/cjs/node-fs/get-iface-adr.d.ts.map +1 -0
- package/ts/cjs/node-fs/get-iface-adr.js.map +1 -0
- package/ts/cjs/node-fs/index.d.ts.map +1 -0
- package/ts/cjs/node-fs/index.js.map +1 -0
- package/ts/cjs/node-fs/mock-file-service.d.ts +11 -0
- package/ts/cjs/node-fs/mock-file-service.d.ts.map +1 -0
- package/ts/cjs/node-fs/mock-file-service.js +35 -0
- package/ts/cjs/node-fs/mock-file-service.js.map +1 -0
- package/ts/cjs/node-fs/mock-file-service.test.d.ts.map +1 -0
- package/ts/cjs/node-fs/mock-file-service.test.js +66 -0
- package/ts/cjs/node-fs/mock-file-service.test.js.map +1 -0
- package/ts/cjs/node-fs/node-file-service.d.ts +16 -0
- package/ts/cjs/node-fs/node-file-service.d.ts.map +1 -0
- package/ts/cjs/node-fs/node-file-service.js +80 -0
- package/ts/cjs/node-fs/node-file-service.js.map +1 -0
- package/ts/cjs/node-fs/node-sys-abstraction.d.ts +18 -0
- package/ts/cjs/node-fs/node-sys-abstraction.d.ts.map +1 -0
- package/ts/cjs/node-fs/node-sys-abstraction.js +104 -0
- package/ts/cjs/node-fs/node-sys-abstraction.js.map +1 -0
- package/ts/cjs/node-fs/node-sys-abstraction.test.d.ts.map +1 -0
- package/ts/cjs/node-fs/node-sys-abstraction.test.js.map +1 -0
- package/ts/cjs/on-func.d.ts +15 -0
- package/ts/cjs/on-func.d.ts.map +1 -0
- package/ts/cjs/on-func.js +58 -0
- package/ts/cjs/on-func.js.map +1 -0
- package/ts/cjs/on-func.test.d.ts +27 -0
- package/ts/cjs/on-func.test.d.ts.map +1 -0
- package/ts/cjs/on-func.test.js +97 -0
- package/ts/cjs/on-func.test.js.map +1 -0
- package/ts/cjs/option.d.ts.map +1 -1
- package/ts/cjs/option.js.map +1 -1
- package/ts/cjs/path-ops.test.js.map +1 -1
- package/ts/cjs/poller.d.ts +51 -0
- package/ts/cjs/poller.d.ts.map +1 -0
- package/ts/cjs/poller.js +150 -0
- package/ts/cjs/poller.js.map +1 -0
- package/ts/cjs/poller.test.d.ts +2 -0
- package/ts/cjs/poller.test.d.ts.map +1 -0
- package/ts/cjs/poller.test.js +164 -0
- package/ts/cjs/poller.test.js.map +1 -0
- package/ts/cjs/promise-sleep.d.ts +29 -0
- package/ts/cjs/promise-sleep.d.ts.map +1 -0
- package/ts/cjs/promise-sleep.js +33 -0
- package/ts/cjs/promise-sleep.js.map +1 -0
- package/ts/cjs/promise-sleep.test.d.ts +2 -0
- package/ts/cjs/promise-sleep.test.d.ts.map +1 -0
- package/ts/cjs/promise-sleep.test.js +64 -0
- package/ts/cjs/promise-sleep.test.js.map +1 -0
- package/ts/cjs/resolve-once.d.ts +59 -44
- package/ts/cjs/resolve-once.d.ts.map +1 -1
- package/ts/cjs/resolve-once.js +219 -113
- package/ts/cjs/resolve-once.js.map +1 -1
- package/ts/cjs/resolve-once.test.js +226 -47
- package/ts/cjs/resolve-once.test.js.map +1 -1
- package/ts/cjs/result.d.ts +3 -3
- package/ts/cjs/result.d.ts.map +1 -1
- package/ts/cjs/result.js.map +1 -1
- package/ts/cjs/runtime.d.ts.map +1 -1
- package/ts/cjs/runtime.js.map +1 -1
- package/ts/cjs/sys-env.d.ts +4 -2
- package/ts/cjs/sys-env.d.ts.map +1 -1
- package/ts/cjs/sys-env.js +23 -15
- package/ts/cjs/sys-env.js.map +1 -1
- package/ts/cjs/sys-env.test.js +5 -5
- package/ts/cjs/sys-env.test.js.map +1 -1
- package/ts/cjs/test/log-write-stream.d.ts +1 -2
- package/ts/cjs/test/log-write-stream.d.ts.map +1 -1
- package/ts/cjs/test/log-write-stream.js +4 -6
- package/ts/cjs/test/log-write-stream.js.map +1 -1
- package/ts/cjs/test/mock-logger.d.ts +1 -2
- package/ts/cjs/test/mock-logger.d.ts.map +1 -1
- package/ts/cjs/test/mock-logger.js +3 -4
- package/ts/cjs/test/mock-logger.js.map +1 -1
- package/ts/cjs/timeouted.d.ts +60 -0
- package/ts/cjs/timeouted.d.ts.map +1 -0
- package/ts/cjs/timeouted.js +154 -0
- package/ts/cjs/timeouted.js.map +1 -0
- package/ts/cjs/timeouted.test.d.ts +2 -0
- package/ts/cjs/timeouted.test.d.ts.map +1 -0
- package/ts/cjs/timeouted.test.js +759 -0
- package/ts/cjs/timeouted.test.js.map +1 -0
- package/ts/cjs/tracer.d.ts.map +1 -1
- package/ts/cjs/tracer.js.map +1 -1
- package/ts/cjs/txt-en-decoder.d.ts +1 -1
- package/ts/cjs/txt-en-decoder.d.ts.map +1 -1
- package/ts/cjs/txt-en-decoder.js +2 -5
- package/ts/cjs/txt-en-decoder.js.map +1 -1
- package/ts/cjs/types.d.ts +30 -0
- package/ts/cjs/types.d.ts.map +1 -1
- package/ts/cjs/types.js +26 -1
- package/ts/cjs/types.js.map +1 -1
- package/ts/cjs/uri.d.ts +2 -3
- package/ts/cjs/uri.d.ts.map +1 -1
- package/ts/cjs/uri.js +11 -12
- package/ts/cjs/uri.js.map +1 -1
- package/ts/cjs/utils/coerce-uint8.d.ts +1 -1
- package/ts/cjs/utils/coerce-uint8.d.ts.map +1 -1
- package/ts/cjs/utils/coerce-uint8.js +9 -9
- package/ts/cjs/utils/coerce-uint8.js.map +1 -1
- package/ts/cjs/utils/console-write-stream.d.ts.map +1 -1
- package/ts/cjs/utils/console-write-stream.js.map +1 -1
- package/ts/cjs/utils/consume.d.ts.map +1 -1
- package/ts/cjs/utils/consume.js +2 -2
- package/ts/cjs/utils/consume.js.map +1 -1
- package/ts/cjs/utils/consume.test.js.map +1 -1
- package/ts/cjs/utils/fanout-write-stream.d.ts.map +1 -1
- package/ts/cjs/utils/fanout-write-stream.js.map +1 -1
- package/ts/cjs/utils/get-params-result.d.ts +1 -2
- package/ts/cjs/utils/get-params-result.d.ts.map +1 -1
- package/ts/cjs/utils/get-params-result.js +4 -5
- package/ts/cjs/utils/get-params-result.js.map +1 -1
- package/ts/cjs/utils/rebuffer.d.ts.map +1 -1
- package/ts/cjs/utils/rebuffer.js.map +1 -1
- package/ts/cjs/utils/rebuffer.test.js +7 -7
- package/ts/cjs/utils/rebuffer.test.js.map +1 -1
- package/ts/cjs/utils/relative-path.d.ts.map +1 -1
- package/ts/cjs/utils/relative-path.js.map +1 -1
- package/ts/cjs/utils/sorted-object.d.ts +4 -3
- package/ts/cjs/utils/sorted-object.d.ts.map +1 -1
- package/ts/cjs/utils/sorted-object.js +7 -6
- package/ts/cjs/utils/sorted-object.js.map +1 -1
- package/ts/cjs/utils/sorted-object.test.d.ts +2 -0
- package/ts/cjs/utils/sorted-object.test.d.ts.map +1 -0
- package/ts/cjs/utils/sorted-object.test.js +22 -0
- package/ts/cjs/utils/sorted-object.test.js.map +1 -0
- package/ts/cjs/utils/stream-map.d.ts.map +1 -1
- package/ts/cjs/utils/stream-map.js.map +1 -1
- package/ts/cjs/utils/stream-map.test.js +8 -8
- package/ts/cjs/utils/stream-map.test.js.map +1 -1
- package/ts/cjs/utils/stream2string.d.ts.map +1 -1
- package/ts/cjs/utils/stream2string.js.map +1 -1
- package/ts/cjs/utils/stream2string.test.js +3 -3
- package/ts/cjs/utils/stream2string.test.js.map +1 -1
- package/ts/cjs/utils/string2stream.d.ts.map +1 -1
- package/ts/cjs/utils/string2stream.js.map +1 -1
- package/ts/cjs/utils/string2stream.test.js +4 -3
- package/ts/cjs/utils/string2stream.test.js.map +1 -1
- package/ts/cjs/utils/stripper.d.ts.map +1 -1
- package/ts/cjs/utils/stripper.js.map +1 -1
- package/ts/cjs/utils/to-sorted.d.ts +16 -0
- package/ts/cjs/utils/to-sorted.d.ts.map +1 -0
- package/ts/cjs/utils/to-sorted.js +74 -0
- package/ts/cjs/utils/to-sorted.js.map +1 -0
- package/ts/cjs/utils/to-sorted.test.d.ts +2 -0
- package/ts/cjs/utils/to-sorted.test.d.ts.map +1 -0
- package/ts/cjs/utils/to-sorted.test.js +229 -0
- package/ts/cjs/utils/to-sorted.test.js.map +1 -0
- package/ts/cjs/utils/uint8array-equal.d.ts.map +1 -1
- package/ts/cjs/utils/uint8array-equal.js.map +1 -1
- package/ts/cjs/version.js +1 -1
- package/ts/cjs/web-env/index.d.ts +3 -0
- package/ts/cjs/web-env/index.d.ts.map +1 -0
- package/ts/cjs/web-env/index.js +19 -0
- package/ts/cjs/web-env/index.js.map +1 -0
- package/ts/cjs/web-env/web-basic-sys-abstraction.d.ts +4 -0
- package/ts/cjs/web-env/web-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/cjs/web-env/web-basic-sys-abstraction.js +52 -0
- package/ts/cjs/web-env/web-basic-sys-abstraction.js.map +1 -0
- package/ts/cjs/web-env/web-env-actions.d.ts +14 -0
- package/ts/cjs/web-env/web-env-actions.d.ts.map +1 -0
- package/ts/cjs/web-env/web-env-actions.js +40 -0
- package/ts/cjs/web-env/web-env-actions.js.map +1 -0
- package/ts/esm/add-cement-do-not-export.d.ts +3 -0
- package/ts/esm/add-cement-do-not-export.d.ts.map +1 -0
- package/ts/esm/add-cement-do-not-export.js +23 -0
- package/ts/esm/add-cement-do-not-export.js.map +1 -0
- package/ts/esm/app-context.d.ts.map +1 -1
- package/ts/esm/app-context.js.map +1 -1
- package/ts/esm/base-basic-sys-abstraction.test.js +21 -8
- package/ts/esm/base-basic-sys-abstraction.test.js.map +1 -1
- package/ts/esm/base-sys-abstraction.d.ts +4 -1
- package/ts/esm/base-sys-abstraction.d.ts.map +1 -1
- package/ts/esm/base-sys-abstraction.js +9 -8
- package/ts/esm/base-sys-abstraction.js.map +1 -1
- package/ts/esm/bin2text.d.ts.map +1 -1
- package/ts/esm/bin2text.js.map +1 -1
- package/ts/esm/cf-env/cf-basic-sys-abstraction.d.ts +15 -0
- package/ts/esm/cf-env/cf-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/esm/cf-env/cf-basic-sys-abstraction.js +69 -0
- package/ts/esm/cf-env/cf-basic-sys-abstraction.js.map +1 -0
- package/ts/esm/cf-env/cf-env-actions.d.ts +17 -0
- package/ts/esm/cf-env/cf-env-actions.d.ts.map +1 -0
- package/ts/esm/cf-env/cf-env-actions.js +55 -0
- package/ts/esm/cf-env/cf-env-actions.js.map +1 -0
- package/ts/esm/cf-env/index.d.ts.map +1 -0
- package/ts/esm/cf-env/index.js.map +1 -0
- package/ts/esm/cli/generate-version-ts-cmd.d.ts +3 -0
- package/ts/esm/cli/generate-version-ts-cmd.d.ts.map +1 -0
- package/ts/esm/cli/generate-version-ts-cmd.js +43 -0
- package/ts/esm/cli/generate-version-ts-cmd.js.map +1 -0
- package/ts/esm/cli/main.js +6 -1
- package/ts/esm/cli/main.js.map +1 -1
- package/ts/esm/cli/patch-version-cmd.d.ts +0 -4
- package/ts/esm/cli/patch-version-cmd.d.ts.map +1 -1
- package/ts/esm/cli/patch-version-cmd.js +1 -220
- package/ts/esm/cli/patch-version-cmd.js.map +1 -1
- package/ts/esm/cli/prepare-pubdir-cmd.d.ts +4 -0
- package/ts/esm/cli/prepare-pubdir-cmd.d.ts.map +1 -0
- package/ts/esm/cli/prepare-pubdir-cmd.js +113 -0
- package/ts/esm/cli/prepare-pubdir-cmd.js.map +1 -0
- package/ts/esm/cli/publish-tags-cmd.d.ts +3 -0
- package/ts/esm/cli/publish-tags-cmd.d.ts.map +1 -0
- package/ts/esm/cli/publish-tags-cmd.js +61 -0
- package/ts/esm/cli/publish-tags-cmd.js.map +1 -0
- package/ts/esm/cli/setup-deno-json-cmd.d.ts +3 -0
- package/ts/esm/cli/setup-deno-json-cmd.d.ts.map +1 -0
- package/ts/esm/cli/setup-deno-json-cmd.js +41 -0
- package/ts/esm/cli/setup-deno-json-cmd.js.map +1 -0
- package/ts/esm/cli/utils.d.ts +6 -0
- package/ts/esm/cli/utils.d.ts.map +1 -0
- package/ts/esm/cli/utils.js +54 -0
- package/ts/esm/cli/utils.js.map +1 -0
- package/ts/esm/coerce-binary.d.ts +2 -0
- package/ts/esm/coerce-binary.d.ts.map +1 -1
- package/ts/esm/coerce-binary.js +8 -2
- package/ts/esm/coerce-binary.js.map +1 -1
- package/ts/esm/crypto.d.ts.map +1 -1
- package/ts/esm/crypto.js.map +1 -1
- package/ts/esm/deno-env/deno-basic-sys-abstraction.d.ts +13 -0
- package/ts/esm/deno-env/deno-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/esm/deno-env/deno-basic-sys-abstraction.js +35 -0
- package/ts/esm/deno-env/deno-basic-sys-abstraction.js.map +1 -0
- package/ts/esm/deno-env/deno-env-actions.d.ts.map +1 -0
- package/ts/esm/deno-env/deno-env-actions.js +40 -0
- package/ts/esm/deno-env/deno-env-actions.js.map +1 -0
- package/ts/esm/deno-env/index.d.ts +3 -0
- package/ts/esm/deno-env/index.d.ts.map +1 -0
- package/ts/esm/deno-env/index.js +3 -0
- package/ts/esm/deno-env/index.js.map +1 -0
- package/ts/esm/deno-fs/deno-basic-sys-abstraction.d.ts +11 -0
- package/ts/esm/deno-fs/deno-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/esm/deno-fs/deno-basic-sys-abstraction.js +32 -0
- package/ts/esm/deno-fs/deno-basic-sys-abstraction.js.map +1 -0
- package/ts/esm/deno-fs/deno-env-actions.d.ts +23 -0
- package/ts/esm/deno-fs/deno-env-actions.d.ts.map +1 -0
- package/ts/esm/deno-fs/deno-env-actions.js +39 -0
- package/ts/esm/deno-fs/deno-env-actions.js.map +1 -0
- package/ts/esm/deno-fs/deno-file-service.d.ts +16 -0
- package/ts/esm/deno-fs/deno-file-service.d.ts.map +1 -0
- package/ts/esm/deno-fs/deno-file-service.js +66 -0
- package/ts/esm/deno-fs/deno-file-service.js.map +1 -0
- package/ts/esm/deno-fs/deno-sys-abstraction.d.ts +18 -0
- package/ts/esm/deno-fs/deno-sys-abstraction.d.ts.map +1 -0
- package/ts/esm/deno-fs/deno-sys-abstraction.js +97 -0
- package/ts/esm/deno-fs/deno-sys-abstraction.js.map +1 -0
- package/ts/esm/deno-fs/index.d.ts +5 -0
- package/ts/esm/deno-fs/index.d.ts.map +1 -0
- package/ts/esm/deno-fs/index.js +5 -0
- package/ts/esm/deno-fs/index.js.map +1 -0
- package/ts/esm/future.d.ts +4 -2
- package/ts/esm/future.d.ts.map +1 -1
- package/ts/esm/future.js +5 -1
- package/ts/esm/future.js.map +1 -1
- package/ts/esm/future.test.js +9 -0
- package/ts/esm/future.test.js.map +1 -1
- package/ts/esm/http_header.d.ts +10 -4
- package/ts/esm/http_header.d.ts.map +1 -1
- package/ts/esm/http_header.js +72 -45
- package/ts/esm/http_header.js.map +1 -1
- package/ts/esm/http_header.test.js +44 -0
- package/ts/esm/http_header.test.js.map +1 -1
- package/ts/esm/import-meta-env.module.d.ts +12 -2
- package/ts/esm/import-meta-env.module.d.ts.map +1 -1
- package/ts/esm/import-meta-env.module.js +4 -13
- package/ts/esm/import-meta-env.module.js.map +1 -1
- package/ts/esm/index.d.ts +19 -1
- package/ts/esm/index.d.ts.map +1 -1
- package/ts/esm/index.js +19 -1
- package/ts/esm/index.js.map +1 -1
- package/ts/esm/is-json.d.ts.map +1 -1
- package/ts/esm/is-json.js.map +1 -1
- package/ts/esm/is-promise.d.ts +1 -1
- package/ts/esm/is-promise.d.ts.map +1 -1
- package/ts/esm/is-promise.js.map +1 -1
- package/ts/esm/keyed-ng.d.ts +52 -0
- package/ts/esm/keyed-ng.d.ts.map +1 -0
- package/ts/esm/keyed-ng.js +90 -0
- package/ts/esm/keyed-ng.js.map +1 -0
- package/ts/esm/keyed-ng.test.d.ts +2 -0
- package/ts/esm/keyed-ng.test.d.ts.map +1 -0
- package/ts/esm/keyed-ng.test.js +149 -0
- package/ts/esm/keyed-ng.test.js.map +1 -0
- package/ts/esm/log-level-impl.d.ts +2 -1
- package/ts/esm/log-level-impl.d.ts.map +1 -1
- package/ts/esm/log-level-impl.js +1 -1
- package/ts/esm/log-level-impl.js.map +1 -1
- package/ts/esm/logger-impl.d.ts +3 -4
- package/ts/esm/logger-impl.d.ts.map +1 -1
- package/ts/esm/logger-impl.js +5 -8
- package/ts/esm/logger-impl.js.map +1 -1
- package/ts/esm/logger.d.ts +1 -16
- package/ts/esm/logger.d.ts.map +1 -1
- package/ts/esm/logger.js +11 -25
- package/ts/esm/logger.js.map +1 -1
- package/ts/esm/logger.test.js +12 -8
- package/ts/esm/logger.test.js.map +1 -1
- package/ts/esm/lru-map-set.d.ts +4 -1
- package/ts/esm/lru-map-set.d.ts.map +1 -1
- package/ts/esm/lru-map-set.js +2 -1
- package/ts/esm/lru-map-set.js.map +1 -1
- package/ts/esm/mutable-url.js +1 -1
- package/ts/esm/mutable-url.js.map +1 -1
- package/ts/esm/mutable-url.test.js +1 -0
- package/ts/esm/mutable-url.test.js.map +1 -1
- package/ts/esm/node-env/index.d.ts +3 -0
- package/ts/esm/node-env/index.d.ts.map +1 -0
- package/ts/esm/node-env/index.js +3 -0
- package/ts/esm/node-env/index.js.map +1 -0
- package/ts/esm/node-env/node-basic-sys-abstraction.d.ts +26 -0
- package/ts/esm/node-env/node-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/esm/node-env/node-basic-sys-abstraction.js +47 -0
- package/ts/esm/node-env/node-basic-sys-abstraction.js.map +1 -0
- package/ts/esm/node-env/node-env-actions.d.ts +15 -0
- package/ts/esm/node-env/node-env-actions.d.ts.map +1 -0
- package/ts/esm/node-env/node-env-actions.js +39 -0
- package/ts/esm/node-env/node-env-actions.js.map +1 -0
- package/ts/esm/node-fs/get-iface-adr.d.ts.map +1 -0
- package/ts/esm/node-fs/get-iface-adr.js.map +1 -0
- package/ts/esm/node-fs/index.d.ts.map +1 -0
- package/ts/esm/node-fs/index.js.map +1 -0
- package/ts/esm/node-fs/mock-file-service.d.ts +11 -0
- package/ts/esm/node-fs/mock-file-service.d.ts.map +1 -0
- package/ts/esm/node-fs/mock-file-service.js +31 -0
- package/ts/esm/node-fs/mock-file-service.js.map +1 -0
- package/ts/esm/node-fs/mock-file-service.test.d.ts.map +1 -0
- package/ts/esm/node-fs/mock-file-service.test.js +31 -0
- package/ts/esm/node-fs/mock-file-service.test.js.map +1 -0
- package/ts/esm/node-fs/node-file-service.d.ts +16 -0
- package/ts/esm/node-fs/node-file-service.d.ts.map +1 -0
- package/ts/esm/node-fs/node-file-service.js +73 -0
- package/ts/esm/node-fs/node-file-service.js.map +1 -0
- package/ts/esm/node-fs/node-sys-abstraction.d.ts +18 -0
- package/ts/esm/node-fs/node-sys-abstraction.d.ts.map +1 -0
- package/ts/esm/node-fs/node-sys-abstraction.js +95 -0
- package/ts/esm/node-fs/node-sys-abstraction.js.map +1 -0
- package/ts/esm/node-fs/node-sys-abstraction.test.d.ts.map +1 -0
- package/ts/esm/node-fs/node-sys-abstraction.test.js.map +1 -0
- package/ts/esm/on-func.d.ts +15 -0
- package/ts/esm/on-func.d.ts.map +1 -0
- package/ts/esm/on-func.js +54 -0
- package/ts/esm/on-func.js.map +1 -0
- package/ts/esm/on-func.test.d.ts +27 -0
- package/ts/esm/on-func.test.d.ts.map +1 -0
- package/ts/esm/on-func.test.js +95 -0
- package/ts/esm/on-func.test.js.map +1 -0
- package/ts/esm/option.d.ts.map +1 -1
- package/ts/esm/option.js.map +1 -1
- package/ts/esm/path-ops.test.js.map +1 -1
- package/ts/esm/poller.d.ts +51 -0
- package/ts/esm/poller.d.ts.map +1 -0
- package/ts/esm/poller.js +146 -0
- package/ts/esm/poller.js.map +1 -0
- package/ts/esm/poller.test.d.ts +2 -0
- package/ts/esm/poller.test.d.ts.map +1 -0
- package/ts/esm/poller.test.js +162 -0
- package/ts/esm/poller.test.js.map +1 -0
- package/ts/esm/promise-sleep.d.ts +29 -0
- package/ts/esm/promise-sleep.d.ts.map +1 -0
- package/ts/esm/promise-sleep.js +30 -0
- package/ts/esm/promise-sleep.js.map +1 -0
- package/ts/esm/promise-sleep.test.d.ts +2 -0
- package/ts/esm/promise-sleep.test.d.ts.map +1 -0
- package/ts/esm/promise-sleep.test.js +62 -0
- package/ts/esm/promise-sleep.test.js.map +1 -0
- package/ts/esm/resolve-once.d.ts +59 -44
- package/ts/esm/resolve-once.d.ts.map +1 -1
- package/ts/esm/resolve-once.js +218 -111
- package/ts/esm/resolve-once.js.map +1 -1
- package/ts/esm/resolve-once.test.js +226 -47
- package/ts/esm/resolve-once.test.js.map +1 -1
- package/ts/esm/result.d.ts +3 -3
- package/ts/esm/result.d.ts.map +1 -1
- package/ts/esm/result.js.map +1 -1
- package/ts/esm/runtime.d.ts.map +1 -1
- package/ts/esm/runtime.js.map +1 -1
- package/ts/esm/sys-env.d.ts +4 -2
- package/ts/esm/sys-env.d.ts.map +1 -1
- package/ts/esm/sys-env.js +19 -11
- package/ts/esm/sys-env.js.map +1 -1
- package/ts/esm/sys-env.test.js +2 -2
- package/ts/esm/sys-env.test.js.map +1 -1
- package/ts/esm/test/log-write-stream.d.ts +1 -2
- package/ts/esm/test/log-write-stream.d.ts.map +1 -1
- package/ts/esm/test/log-write-stream.js +1 -3
- package/ts/esm/test/log-write-stream.js.map +1 -1
- package/ts/esm/test/mock-logger.d.ts +1 -2
- package/ts/esm/test/mock-logger.d.ts.map +1 -1
- package/ts/esm/test/mock-logger.js +1 -2
- package/ts/esm/test/mock-logger.js.map +1 -1
- package/ts/esm/test/test-exit-handler.js +11 -4
- package/ts/esm/test/test-exit-handler.js.map +1 -1
- package/ts/esm/timeouted.d.ts +60 -0
- package/ts/esm/timeouted.d.ts.map +1 -0
- package/ts/esm/timeouted.js +144 -0
- package/ts/esm/timeouted.js.map +1 -0
- package/ts/esm/timeouted.test.d.ts +2 -0
- package/ts/esm/timeouted.test.d.ts.map +1 -0
- package/ts/esm/timeouted.test.js +724 -0
- package/ts/esm/timeouted.test.js.map +1 -0
- package/ts/esm/tracer.d.ts.map +1 -1
- package/ts/esm/tracer.js.map +1 -1
- package/ts/esm/txt-en-decoder.d.ts +1 -1
- package/ts/esm/txt-en-decoder.d.ts.map +1 -1
- package/ts/esm/txt-en-decoder.js +2 -5
- package/ts/esm/txt-en-decoder.js.map +1 -1
- package/ts/esm/types.d.ts +30 -0
- package/ts/esm/types.d.ts.map +1 -1
- package/ts/esm/types.js +24 -0
- package/ts/esm/types.js.map +1 -1
- package/ts/esm/uri.d.ts +2 -3
- package/ts/esm/uri.d.ts.map +1 -1
- package/ts/esm/uri.js +3 -4
- package/ts/esm/uri.js.map +1 -1
- package/ts/esm/utils/coerce-uint8.d.ts +1 -1
- package/ts/esm/utils/coerce-uint8.d.ts.map +1 -1
- package/ts/esm/utils/coerce-uint8.js +1 -1
- package/ts/esm/utils/coerce-uint8.js.map +1 -1
- package/ts/esm/utils/console-write-stream.d.ts.map +1 -1
- package/ts/esm/utils/console-write-stream.js.map +1 -1
- package/ts/esm/utils/consume.d.ts.map +1 -1
- package/ts/esm/utils/consume.js +1 -1
- package/ts/esm/utils/consume.js.map +1 -1
- package/ts/esm/utils/consume.test.js.map +1 -1
- package/ts/esm/utils/fanout-write-stream.d.ts.map +1 -1
- package/ts/esm/utils/fanout-write-stream.js.map +1 -1
- package/ts/esm/utils/get-params-result.d.ts +1 -2
- package/ts/esm/utils/get-params-result.d.ts.map +1 -1
- package/ts/esm/utils/get-params-result.js +1 -2
- package/ts/esm/utils/get-params-result.js.map +1 -1
- package/ts/esm/utils/rebuffer.d.ts.map +1 -1
- package/ts/esm/utils/rebuffer.js.map +1 -1
- package/ts/esm/utils/rebuffer.test.js +7 -7
- package/ts/esm/utils/rebuffer.test.js.map +1 -1
- package/ts/esm/utils/relative-path.d.ts.map +1 -1
- package/ts/esm/utils/relative-path.js.map +1 -1
- package/ts/esm/utils/sorted-object.d.ts +4 -3
- package/ts/esm/utils/sorted-object.d.ts.map +1 -1
- package/ts/esm/utils/sorted-object.js +7 -6
- package/ts/esm/utils/sorted-object.js.map +1 -1
- package/ts/esm/utils/sorted-object.test.d.ts +2 -0
- package/ts/esm/utils/sorted-object.test.d.ts.map +1 -0
- package/ts/esm/utils/sorted-object.test.js +20 -0
- package/ts/esm/utils/sorted-object.test.js.map +1 -0
- package/ts/esm/utils/stream-map.d.ts.map +1 -1
- package/ts/esm/utils/stream-map.js.map +1 -1
- package/ts/esm/utils/stream-map.test.js +8 -8
- package/ts/esm/utils/stream-map.test.js.map +1 -1
- package/ts/esm/utils/stream2string.d.ts.map +1 -1
- package/ts/esm/utils/stream2string.js.map +1 -1
- package/ts/esm/utils/stream2string.test.js +1 -1
- package/ts/esm/utils/stream2string.test.js.map +1 -1
- package/ts/esm/utils/string2stream.d.ts.map +1 -1
- package/ts/esm/utils/string2stream.js.map +1 -1
- package/ts/esm/utils/string2stream.test.js +4 -3
- package/ts/esm/utils/string2stream.test.js.map +1 -1
- package/ts/esm/utils/stripper.d.ts.map +1 -1
- package/ts/esm/utils/stripper.js.map +1 -1
- package/ts/esm/utils/to-sorted.d.ts +16 -0
- package/ts/esm/utils/to-sorted.d.ts.map +1 -0
- package/ts/esm/utils/to-sorted.js +70 -0
- package/ts/esm/utils/to-sorted.js.map +1 -0
- package/ts/esm/utils/to-sorted.test.d.ts +2 -0
- package/ts/esm/utils/to-sorted.test.d.ts.map +1 -0
- package/ts/esm/utils/to-sorted.test.js +227 -0
- package/ts/esm/utils/to-sorted.test.js.map +1 -0
- package/ts/esm/utils/uint8array-equal.d.ts.map +1 -1
- package/ts/esm/utils/uint8array-equal.js.map +1 -1
- package/ts/esm/version.js +1 -1
- package/ts/esm/web-env/index.d.ts +3 -0
- package/ts/esm/web-env/index.d.ts.map +1 -0
- package/ts/esm/web-env/index.js +3 -0
- package/ts/esm/web-env/index.js.map +1 -0
- package/ts/esm/web-env/web-basic-sys-abstraction.d.ts +4 -0
- package/ts/esm/web-env/web-basic-sys-abstraction.d.ts.map +1 -0
- package/ts/esm/web-env/web-basic-sys-abstraction.js +49 -0
- package/ts/esm/web-env/web-basic-sys-abstraction.js.map +1 -0
- package/ts/esm/web-env/web-env-actions.d.ts +14 -0
- package/ts/esm/web-env/web-env-actions.d.ts.map +1 -0
- package/ts/esm/web-env/web-env-actions.js +36 -0
- package/ts/esm/web-env/web-env-actions.js.map +1 -0
- package/tsconfig.json +25 -0
- package/cjs/cf/cf-basic-sys-abstraction.cjs +0 -72
- package/cjs/cf/cf-basic-sys-abstraction.cjs.map +0 -1
- package/cjs/cf/cf-basic-sys-abstraction.d.ts +0 -14
- package/cjs/cf/cf-basic-sys-abstraction.d.ts.map +0 -1
- package/cjs/cf/cf-env-actions.cjs +0 -57
- package/cjs/cf/cf-env-actions.cjs.map +0 -1
- package/cjs/cf/cf-env-actions.d.ts +0 -16
- package/cjs/cf/cf-env-actions.d.ts.map +0 -1
- package/cjs/cf/index.cjs.map +0 -1
- package/cjs/cf/index.d.ts.map +0 -1
- package/cjs/deno/deno-basic-sys-abstraction.cjs +0 -40
- package/cjs/deno/deno-basic-sys-abstraction.cjs.map +0 -1
- package/cjs/deno/deno-basic-sys-abstraction.d.ts +0 -14
- package/cjs/deno/deno-basic-sys-abstraction.d.ts.map +0 -1
- package/cjs/deno/deno-env-actions.cjs +0 -44
- package/cjs/deno/deno-env-actions.cjs.map +0 -1
- package/cjs/deno/deno-env-actions.d.ts.map +0 -1
- package/cjs/deno/deno-file-service.cjs +0 -104
- package/cjs/deno/deno-file-service.cjs.map +0 -1
- package/cjs/deno/deno-file-service.d.ts +0 -17
- package/cjs/deno/deno-file-service.d.ts.map +0 -1
- package/cjs/deno/deno-sys-abstraction.cjs +0 -103
- package/cjs/deno/deno-sys-abstraction.cjs.map +0 -1
- package/cjs/deno/deno-sys-abstraction.d.ts +0 -19
- package/cjs/deno/deno-sys-abstraction.d.ts.map +0 -1
- package/cjs/deno/index.cjs +0 -19
- package/cjs/deno/index.cjs.map +0 -1
- package/cjs/deno/index.d.ts +0 -3
- package/cjs/deno/index.d.ts.map +0 -1
- package/cjs/index.cjs.cjs +0 -69
- package/cjs/index.cjs.cjs.map +0 -1
- package/cjs/index.cjs.d.ts +0 -30
- package/cjs/index.cjs.d.ts.map +0 -1
- package/cjs/node/get-iface-adr.cjs.map +0 -1
- package/cjs/node/get-iface-adr.d.ts.map +0 -1
- package/cjs/node/index.cjs.map +0 -1
- package/cjs/node/index.d.ts.map +0 -1
- package/cjs/node/mock-file-service.cjs +0 -36
- package/cjs/node/mock-file-service.cjs.map +0 -1
- package/cjs/node/mock-file-service.d.ts +0 -11
- package/cjs/node/mock-file-service.d.ts.map +0 -1
- package/cjs/node/mock-file-service.test.cjs +0 -66
- package/cjs/node/mock-file-service.test.cjs.map +0 -1
- package/cjs/node/mock-file-service.test.d.ts.map +0 -1
- package/cjs/node/node-basic-sys-abstraction.cjs +0 -50
- package/cjs/node/node-basic-sys-abstraction.cjs.map +0 -1
- package/cjs/node/node-basic-sys-abstraction.d.ts +0 -25
- package/cjs/node/node-basic-sys-abstraction.d.ts.map +0 -1
- package/cjs/node/node-env-actions.cjs +0 -43
- package/cjs/node/node-env-actions.cjs.map +0 -1
- package/cjs/node/node-env-actions.d.ts +0 -17
- package/cjs/node/node-env-actions.d.ts.map +0 -1
- package/cjs/node/node-file-service.cjs +0 -79
- package/cjs/node/node-file-service.cjs.map +0 -1
- package/cjs/node/node-file-service.d.ts +0 -16
- package/cjs/node/node-file-service.d.ts.map +0 -1
- package/cjs/node/node-sys-abstraction.cjs +0 -105
- package/cjs/node/node-sys-abstraction.cjs.map +0 -1
- package/cjs/node/node-sys-abstraction.d.ts +0 -19
- package/cjs/node/node-sys-abstraction.d.ts.map +0 -1
- package/cjs/node/node-sys-abstraction.test.cjs.map +0 -1
- package/cjs/node/node-sys-abstraction.test.d.ts.map +0 -1
- package/cjs/utils/index.cjs +0 -29
- package/cjs/utils/index.cjs.map +0 -1
- package/cjs/utils/index.d.ts +0 -13
- package/cjs/utils/index.d.ts.map +0 -1
- package/cjs/utils/sorted-objec.test.cjs +0 -22
- package/cjs/utils/sorted-objec.test.cjs.map +0 -1
- package/cjs/utils/sorted-objec.test.d.ts +0 -2
- package/cjs/utils/sorted-objec.test.d.ts.map +0 -1
- package/cjs/web/index.cjs +0 -18
- package/cjs/web/index.cjs.map +0 -1
- package/cjs/web/index.d.ts +0 -2
- package/cjs/web/index.d.ts.map +0 -1
- package/cjs/web/web-basic-sys-abstraction.cjs +0 -48
- package/cjs/web/web-basic-sys-abstraction.cjs.map +0 -1
- package/cjs/web/web-basic-sys-abstraction.d.ts +0 -4
- package/cjs/web/web-basic-sys-abstraction.d.ts.map +0 -1
- package/cjs/web/web-env-actions.cjs +0 -40
- package/cjs/web/web-env-actions.cjs.map +0 -1
- package/cjs/web/web-env-actions.d.ts +0 -14
- package/cjs/web/web-env-actions.d.ts.map +0 -1
- package/esm/cf/cf-basic-sys-abstraction.d.ts +0 -14
- package/esm/cf/cf-basic-sys-abstraction.d.ts.map +0 -1
- package/esm/cf/cf-basic-sys-abstraction.js +0 -67
- package/esm/cf/cf-basic-sys-abstraction.js.map +0 -1
- package/esm/cf/cf-env-actions.d.ts +0 -16
- package/esm/cf/cf-env-actions.d.ts.map +0 -1
- package/esm/cf/cf-env-actions.js +0 -53
- package/esm/cf/cf-env-actions.js.map +0 -1
- package/esm/cf/index.d.ts.map +0 -1
- package/esm/cf/index.js.map +0 -1
- package/esm/deno/deno-basic-sys-abstraction.d.ts +0 -14
- package/esm/deno/deno-basic-sys-abstraction.d.ts.map +0 -1
- package/esm/deno/deno-basic-sys-abstraction.js +0 -35
- package/esm/deno/deno-basic-sys-abstraction.js.map +0 -1
- package/esm/deno/deno-env-actions.d.ts.map +0 -1
- package/esm/deno/deno-env-actions.js +0 -40
- package/esm/deno/deno-env-actions.js.map +0 -1
- package/esm/deno/deno-file-service.d.ts +0 -17
- package/esm/deno/deno-file-service.d.ts.map +0 -1
- package/esm/deno/deno-file-service.js +0 -67
- package/esm/deno/deno-file-service.js.map +0 -1
- package/esm/deno/deno-sys-abstraction.d.ts +0 -19
- package/esm/deno/deno-sys-abstraction.d.ts.map +0 -1
- package/esm/deno/deno-sys-abstraction.js +0 -97
- package/esm/deno/deno-sys-abstraction.js.map +0 -1
- package/esm/deno/index.d.ts +0 -3
- package/esm/deno/index.d.ts.map +0 -1
- package/esm/deno/index.js +0 -3
- package/esm/deno/index.js.map +0 -1
- package/esm/index.cjs.d.ts +0 -30
- package/esm/index.cjs.d.ts.map +0 -1
- package/esm/index.cjs.js +0 -30
- package/esm/index.cjs.js.map +0 -1
- package/esm/node/get-iface-adr.d.ts.map +0 -1
- package/esm/node/get-iface-adr.js.map +0 -1
- package/esm/node/index.d.ts.map +0 -1
- package/esm/node/index.js.map +0 -1
- package/esm/node/mock-file-service.d.ts +0 -11
- package/esm/node/mock-file-service.d.ts.map +0 -1
- package/esm/node/mock-file-service.js +0 -32
- package/esm/node/mock-file-service.js.map +0 -1
- package/esm/node/mock-file-service.test.d.ts.map +0 -1
- package/esm/node/mock-file-service.test.js +0 -31
- package/esm/node/mock-file-service.test.js.map +0 -1
- package/esm/node/node-basic-sys-abstraction.d.ts +0 -25
- package/esm/node/node-basic-sys-abstraction.d.ts.map +0 -1
- package/esm/node/node-basic-sys-abstraction.js +0 -45
- package/esm/node/node-basic-sys-abstraction.js.map +0 -1
- package/esm/node/node-env-actions.d.ts +0 -17
- package/esm/node/node-env-actions.d.ts.map +0 -1
- package/esm/node/node-env-actions.js +0 -39
- package/esm/node/node-env-actions.js.map +0 -1
- package/esm/node/node-file-service.d.ts +0 -16
- package/esm/node/node-file-service.d.ts.map +0 -1
- package/esm/node/node-file-service.js +0 -72
- package/esm/node/node-file-service.js.map +0 -1
- package/esm/node/node-sys-abstraction.d.ts +0 -19
- package/esm/node/node-sys-abstraction.d.ts.map +0 -1
- package/esm/node/node-sys-abstraction.js +0 -96
- package/esm/node/node-sys-abstraction.js.map +0 -1
- package/esm/node/node-sys-abstraction.test.d.ts.map +0 -1
- package/esm/node/node-sys-abstraction.test.js.map +0 -1
- package/esm/utils/index.d.ts +0 -13
- package/esm/utils/index.d.ts.map +0 -1
- package/esm/utils/index.js +0 -13
- package/esm/utils/index.js.map +0 -1
- package/esm/utils/sorted-objec.test.d.ts +0 -2
- package/esm/utils/sorted-objec.test.d.ts.map +0 -1
- package/esm/utils/sorted-objec.test.js +0 -20
- package/esm/utils/sorted-objec.test.js.map +0 -1
- package/esm/web/index.d.ts +0 -2
- package/esm/web/index.d.ts.map +0 -1
- package/esm/web/index.js +0 -2
- package/esm/web/index.js.map +0 -1
- package/esm/web/web-basic-sys-abstraction.d.ts +0 -4
- package/esm/web/web-basic-sys-abstraction.d.ts.map +0 -1
- package/esm/web/web-basic-sys-abstraction.js +0 -45
- package/esm/web/web-basic-sys-abstraction.js.map +0 -1
- package/esm/web/web-env-actions.d.ts +0 -14
- package/esm/web/web-env-actions.d.ts.map +0 -1
- package/esm/web/web-env-actions.js +0 -36
- package/esm/web/web-env-actions.js.map +0 -1
- package/src/cf/cf-basic-sys-abstraction.ts +0 -79
- package/src/cf/cf-env-actions.ts +0 -53
- package/src/deno/deno-basic-sys-abstraction.ts +0 -41
- package/src/deno/deno-env-actions.ts +0 -57
- package/src/deno/deno-file-service.ts +0 -92
- package/src/deno/deno-sys-abstraction.ts +0 -131
- package/src/deno/index.ts +0 -2
- package/src/index.cjs.ts +0 -34
- package/src/node/mock-file-service.ts +0 -46
- package/src/node/node-basic-sys-abstraction.ts +0 -59
- package/src/node/node-env-actions.ts +0 -93
- package/src/node/node-file-service.ts +0 -91
- package/src/node/node-sys-abstraction.ts +0 -118
- package/src/utils/index.ts +0 -12
- package/src/web/index.ts +0 -1
- package/src/web/web-basic-sys-abstraction.ts +0 -105
- package/src/web/web-env-actions.ts +0 -41
- package/ts/cjs/cf/cf-basic-sys-abstraction.d.ts +0 -14
- package/ts/cjs/cf/cf-basic-sys-abstraction.d.ts.map +0 -1
- package/ts/cjs/cf/cf-basic-sys-abstraction.js +0 -72
- package/ts/cjs/cf/cf-basic-sys-abstraction.js.map +0 -1
- package/ts/cjs/cf/cf-env-actions.d.ts +0 -16
- package/ts/cjs/cf/cf-env-actions.d.ts.map +0 -1
- package/ts/cjs/cf/cf-env-actions.js +0 -57
- package/ts/cjs/cf/cf-env-actions.js.map +0 -1
- package/ts/cjs/cf/index.d.ts.map +0 -1
- package/ts/cjs/cf/index.js.map +0 -1
- package/ts/cjs/deno/deno-basic-sys-abstraction.d.ts +0 -14
- package/ts/cjs/deno/deno-basic-sys-abstraction.d.ts.map +0 -1
- package/ts/cjs/deno/deno-basic-sys-abstraction.js +0 -40
- package/ts/cjs/deno/deno-basic-sys-abstraction.js.map +0 -1
- package/ts/cjs/deno/deno-env-actions.d.ts.map +0 -1
- package/ts/cjs/deno/deno-env-actions.js +0 -44
- package/ts/cjs/deno/deno-env-actions.js.map +0 -1
- package/ts/cjs/deno/deno-file-service.d.ts +0 -17
- package/ts/cjs/deno/deno-file-service.d.ts.map +0 -1
- package/ts/cjs/deno/deno-file-service.js +0 -104
- package/ts/cjs/deno/deno-file-service.js.map +0 -1
- package/ts/cjs/deno/deno-sys-abstraction.d.ts +0 -19
- package/ts/cjs/deno/deno-sys-abstraction.d.ts.map +0 -1
- package/ts/cjs/deno/deno-sys-abstraction.js +0 -103
- package/ts/cjs/deno/deno-sys-abstraction.js.map +0 -1
- package/ts/cjs/deno/index.d.ts +0 -3
- package/ts/cjs/deno/index.d.ts.map +0 -1
- package/ts/cjs/deno/index.js +0 -19
- package/ts/cjs/deno/index.js.map +0 -1
- package/ts/cjs/index.cjs.d.ts +0 -30
- package/ts/cjs/index.cjs.d.ts.map +0 -1
- package/ts/cjs/index.cjs.js +0 -69
- package/ts/cjs/index.cjs.js.map +0 -1
- package/ts/cjs/node/get-iface-adr.d.ts.map +0 -1
- package/ts/cjs/node/get-iface-adr.js.map +0 -1
- package/ts/cjs/node/index.d.ts.map +0 -1
- package/ts/cjs/node/index.js.map +0 -1
- package/ts/cjs/node/mock-file-service.d.ts +0 -11
- package/ts/cjs/node/mock-file-service.d.ts.map +0 -1
- package/ts/cjs/node/mock-file-service.js +0 -36
- package/ts/cjs/node/mock-file-service.js.map +0 -1
- package/ts/cjs/node/mock-file-service.test.d.ts.map +0 -1
- package/ts/cjs/node/mock-file-service.test.js +0 -66
- package/ts/cjs/node/mock-file-service.test.js.map +0 -1
- package/ts/cjs/node/node-basic-sys-abstraction.d.ts +0 -25
- package/ts/cjs/node/node-basic-sys-abstraction.d.ts.map +0 -1
- package/ts/cjs/node/node-basic-sys-abstraction.js +0 -50
- package/ts/cjs/node/node-basic-sys-abstraction.js.map +0 -1
- package/ts/cjs/node/node-env-actions.d.ts +0 -17
- package/ts/cjs/node/node-env-actions.d.ts.map +0 -1
- package/ts/cjs/node/node-env-actions.js +0 -43
- package/ts/cjs/node/node-env-actions.js.map +0 -1
- package/ts/cjs/node/node-file-service.d.ts +0 -16
- package/ts/cjs/node/node-file-service.d.ts.map +0 -1
- package/ts/cjs/node/node-file-service.js +0 -79
- package/ts/cjs/node/node-file-service.js.map +0 -1
- package/ts/cjs/node/node-sys-abstraction.d.ts +0 -19
- package/ts/cjs/node/node-sys-abstraction.d.ts.map +0 -1
- package/ts/cjs/node/node-sys-abstraction.js +0 -105
- package/ts/cjs/node/node-sys-abstraction.js.map +0 -1
- package/ts/cjs/node/node-sys-abstraction.test.d.ts.map +0 -1
- package/ts/cjs/node/node-sys-abstraction.test.js.map +0 -1
- package/ts/cjs/utils/index.d.ts +0 -13
- package/ts/cjs/utils/index.d.ts.map +0 -1
- package/ts/cjs/utils/index.js +0 -29
- package/ts/cjs/utils/index.js.map +0 -1
- package/ts/cjs/utils/sorted-objec.test.d.ts +0 -2
- package/ts/cjs/utils/sorted-objec.test.d.ts.map +0 -1
- package/ts/cjs/utils/sorted-objec.test.js +0 -22
- package/ts/cjs/utils/sorted-objec.test.js.map +0 -1
- package/ts/cjs/web/index.d.ts +0 -2
- package/ts/cjs/web/index.d.ts.map +0 -1
- package/ts/cjs/web/index.js +0 -18
- package/ts/cjs/web/index.js.map +0 -1
- package/ts/cjs/web/web-basic-sys-abstraction.d.ts +0 -4
- package/ts/cjs/web/web-basic-sys-abstraction.d.ts.map +0 -1
- package/ts/cjs/web/web-basic-sys-abstraction.js +0 -48
- package/ts/cjs/web/web-basic-sys-abstraction.js.map +0 -1
- package/ts/cjs/web/web-env-actions.d.ts +0 -14
- package/ts/cjs/web/web-env-actions.d.ts.map +0 -1
- package/ts/cjs/web/web-env-actions.js +0 -40
- package/ts/cjs/web/web-env-actions.js.map +0 -1
- package/ts/esm/cf/cf-basic-sys-abstraction.d.ts +0 -14
- package/ts/esm/cf/cf-basic-sys-abstraction.d.ts.map +0 -1
- package/ts/esm/cf/cf-basic-sys-abstraction.js +0 -67
- package/ts/esm/cf/cf-basic-sys-abstraction.js.map +0 -1
- package/ts/esm/cf/cf-env-actions.d.ts +0 -16
- package/ts/esm/cf/cf-env-actions.d.ts.map +0 -1
- package/ts/esm/cf/cf-env-actions.js +0 -53
- package/ts/esm/cf/cf-env-actions.js.map +0 -1
- package/ts/esm/cf/index.d.ts.map +0 -1
- package/ts/esm/cf/index.js.map +0 -1
- package/ts/esm/deno/deno-basic-sys-abstraction.d.ts +0 -14
- package/ts/esm/deno/deno-basic-sys-abstraction.d.ts.map +0 -1
- package/ts/esm/deno/deno-basic-sys-abstraction.js +0 -35
- package/ts/esm/deno/deno-basic-sys-abstraction.js.map +0 -1
- package/ts/esm/deno/deno-env-actions.d.ts.map +0 -1
- package/ts/esm/deno/deno-env-actions.js +0 -40
- package/ts/esm/deno/deno-env-actions.js.map +0 -1
- package/ts/esm/deno/deno-file-service.d.ts +0 -17
- package/ts/esm/deno/deno-file-service.d.ts.map +0 -1
- package/ts/esm/deno/deno-file-service.js +0 -67
- package/ts/esm/deno/deno-file-service.js.map +0 -1
- package/ts/esm/deno/deno-sys-abstraction.d.ts +0 -19
- package/ts/esm/deno/deno-sys-abstraction.d.ts.map +0 -1
- package/ts/esm/deno/deno-sys-abstraction.js +0 -97
- package/ts/esm/deno/deno-sys-abstraction.js.map +0 -1
- package/ts/esm/deno/index.d.ts +0 -3
- package/ts/esm/deno/index.d.ts.map +0 -1
- package/ts/esm/deno/index.js +0 -3
- package/ts/esm/deno/index.js.map +0 -1
- package/ts/esm/index.cjs.d.ts +0 -30
- package/ts/esm/index.cjs.d.ts.map +0 -1
- package/ts/esm/index.cjs.js +0 -30
- package/ts/esm/index.cjs.js.map +0 -1
- package/ts/esm/node/get-iface-adr.d.ts.map +0 -1
- package/ts/esm/node/get-iface-adr.js.map +0 -1
- package/ts/esm/node/index.d.ts.map +0 -1
- package/ts/esm/node/index.js.map +0 -1
- package/ts/esm/node/mock-file-service.d.ts +0 -11
- package/ts/esm/node/mock-file-service.d.ts.map +0 -1
- package/ts/esm/node/mock-file-service.js +0 -32
- package/ts/esm/node/mock-file-service.js.map +0 -1
- package/ts/esm/node/mock-file-service.test.d.ts.map +0 -1
- package/ts/esm/node/mock-file-service.test.js +0 -31
- package/ts/esm/node/mock-file-service.test.js.map +0 -1
- package/ts/esm/node/node-basic-sys-abstraction.d.ts +0 -25
- package/ts/esm/node/node-basic-sys-abstraction.d.ts.map +0 -1
- package/ts/esm/node/node-basic-sys-abstraction.js +0 -45
- package/ts/esm/node/node-basic-sys-abstraction.js.map +0 -1
- package/ts/esm/node/node-env-actions.d.ts +0 -17
- package/ts/esm/node/node-env-actions.d.ts.map +0 -1
- package/ts/esm/node/node-env-actions.js +0 -39
- package/ts/esm/node/node-env-actions.js.map +0 -1
- package/ts/esm/node/node-file-service.d.ts +0 -16
- package/ts/esm/node/node-file-service.d.ts.map +0 -1
- package/ts/esm/node/node-file-service.js +0 -72
- package/ts/esm/node/node-file-service.js.map +0 -1
- package/ts/esm/node/node-sys-abstraction.d.ts +0 -19
- package/ts/esm/node/node-sys-abstraction.d.ts.map +0 -1
- package/ts/esm/node/node-sys-abstraction.js +0 -96
- package/ts/esm/node/node-sys-abstraction.js.map +0 -1
- package/ts/esm/node/node-sys-abstraction.test.d.ts.map +0 -1
- package/ts/esm/node/node-sys-abstraction.test.js.map +0 -1
- package/ts/esm/utils/index.d.ts +0 -13
- package/ts/esm/utils/index.d.ts.map +0 -1
- package/ts/esm/utils/index.js +0 -13
- package/ts/esm/utils/index.js.map +0 -1
- package/ts/esm/utils/sorted-objec.test.d.ts +0 -2
- package/ts/esm/utils/sorted-objec.test.d.ts.map +0 -1
- package/ts/esm/utils/sorted-objec.test.js +0 -20
- package/ts/esm/utils/sorted-objec.test.js.map +0 -1
- package/ts/esm/web/index.d.ts +0 -2
- package/ts/esm/web/index.d.ts.map +0 -1
- package/ts/esm/web/index.js +0 -2
- package/ts/esm/web/index.js.map +0 -1
- package/ts/esm/web/web-basic-sys-abstraction.d.ts +0 -4
- package/ts/esm/web/web-basic-sys-abstraction.d.ts.map +0 -1
- package/ts/esm/web/web-basic-sys-abstraction.js +0 -45
- package/ts/esm/web/web-basic-sys-abstraction.js.map +0 -1
- package/ts/esm/web/web-env-actions.d.ts +0 -14
- package/ts/esm/web/web-env-actions.d.ts.map +0 -1
- package/ts/esm/web/web-env-actions.js +0 -36
- package/ts/esm/web/web-env-actions.js.map +0 -1
- /package/cjs/{cf → cf-env}/index.cjs +0 -0
- /package/cjs/{cf → cf-env}/index.d.ts +0 -0
- /package/cjs/{deno → deno-env}/deno-env-actions.d.ts +0 -0
- /package/cjs/{node → node-fs}/get-iface-adr.cjs +0 -0
- /package/cjs/{node → node-fs}/get-iface-adr.d.ts +0 -0
- /package/cjs/{node → node-fs}/index.cjs +0 -0
- /package/cjs/{node → node-fs}/index.d.ts +0 -0
- /package/cjs/{node → node-fs}/mock-file-service.test.d.ts +0 -0
- /package/cjs/{node → node-fs}/node-sys-abstraction.test.cjs +0 -0
- /package/cjs/{node → node-fs}/node-sys-abstraction.test.d.ts +0 -0
- /package/esm/{cf → cf-env}/index.d.ts +0 -0
- /package/esm/{cf → cf-env}/index.js +0 -0
- /package/esm/{deno → deno-env}/deno-env-actions.d.ts +0 -0
- /package/esm/{node → node-fs}/get-iface-adr.d.ts +0 -0
- /package/esm/{node → node-fs}/get-iface-adr.js +0 -0
- /package/esm/{node → node-fs}/index.d.ts +0 -0
- /package/esm/{node → node-fs}/index.js +0 -0
- /package/esm/{node → node-fs}/mock-file-service.test.d.ts +0 -0
- /package/esm/{node → node-fs}/node-sys-abstraction.test.d.ts +0 -0
- /package/esm/{node → node-fs}/node-sys-abstraction.test.js +0 -0
- /package/src/{cf → cf-env}/index.ts +0 -0
- /package/src/{node → node-fs}/get-iface-adr.ts +0 -0
- /package/src/{node → node-fs}/index.ts +0 -0
- /package/ts/cjs/{cf → cf-env}/index.d.ts +0 -0
- /package/ts/cjs/{cf → cf-env}/index.js +0 -0
- /package/ts/cjs/{deno → deno-env}/deno-env-actions.d.ts +0 -0
- /package/ts/cjs/{node → node-fs}/get-iface-adr.d.ts +0 -0
- /package/ts/cjs/{node → node-fs}/get-iface-adr.js +0 -0
- /package/ts/cjs/{node → node-fs}/index.d.ts +0 -0
- /package/ts/cjs/{node → node-fs}/index.js +0 -0
- /package/ts/cjs/{node → node-fs}/mock-file-service.test.d.ts +0 -0
- /package/ts/cjs/{node → node-fs}/node-sys-abstraction.test.d.ts +0 -0
- /package/ts/cjs/{node → node-fs}/node-sys-abstraction.test.js +0 -0
- /package/ts/esm/{cf → cf-env}/index.d.ts +0 -0
- /package/ts/esm/{cf → cf-env}/index.js +0 -0
- /package/ts/esm/{deno → deno-env}/deno-env-actions.d.ts +0 -0
- /package/ts/esm/{node → node-fs}/get-iface-adr.d.ts +0 -0
- /package/ts/esm/{node → node-fs}/get-iface-adr.js +0 -0
- /package/ts/esm/{node → node-fs}/index.d.ts +0 -0
- /package/ts/esm/{node → node-fs}/index.js +0 -0
- /package/ts/esm/{node → node-fs}/mock-file-service.test.d.ts +0 -0
- /package/ts/esm/{node → node-fs}/node-sys-abstraction.test.d.ts +0 -0
- /package/ts/esm/{node → node-fs}/node-sys-abstraction.test.js +0 -0
package/src/resolve-once.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
121
|
-
this.state = "processed";
|
|
227
|
+
if (this.#state.isProcessing()) {
|
|
122
228
|
try {
|
|
123
|
-
this.#value = fn(this.#
|
|
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
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
-
|
|
349
|
+
|
|
350
|
+
if (this.#state.isProcessed()) {
|
|
223
351
|
return this.#promiseResult() as T;
|
|
224
352
|
}
|
|
225
|
-
if (this.#state
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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
|
-
|
|
259
|
-
|
|
260
|
-
|
|
411
|
+
/**
|
|
412
|
+
* Gets the cached resolved value if available.
|
|
413
|
+
*/
|
|
261
414
|
get value(): UnPromisify<T> | undefined {
|
|
262
|
-
if (this.
|
|
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.
|
|
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.
|
|
277
|
-
this.
|
|
439
|
+
if (this.#state.isProcessing()) {
|
|
440
|
+
this.#state.setWaiting();
|
|
278
441
|
let promiseResult: Promise<UnPromisify<T>>;
|
|
279
442
|
try {
|
|
280
|
-
const couldBePromise = fn(this.#
|
|
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
|
-
|
|
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.
|
|
472
|
+
this.#state.setProcessing();
|
|
305
473
|
if (fn) {
|
|
306
474
|
return this.resolve(fn);
|
|
307
475
|
}
|
|
@@ -309,182 +477,580 @@ export class AsyncResolveOnce<T, CTX = void> {
|
|
|
309
477
|
}
|
|
310
478
|
}
|
|
311
479
|
|
|
312
|
-
|
|
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
|
+
}
|
|
508
|
+
|
|
509
|
+
class StateInstance {
|
|
510
|
+
readonly id: number = Math.random();
|
|
313
511
|
#state: ResolveState = "initial";
|
|
314
512
|
|
|
315
|
-
|
|
513
|
+
// get state(): ResolveState {
|
|
514
|
+
// return this.#state;
|
|
515
|
+
// }
|
|
516
|
+
getResolveState(): ResolveState {
|
|
517
|
+
return this.#state;
|
|
518
|
+
}
|
|
316
519
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
520
|
+
isInitial(): boolean {
|
|
521
|
+
return this.#state === "initial";
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
isProcessed(): boolean {
|
|
525
|
+
return this.#state === "processed";
|
|
526
|
+
}
|
|
527
|
+
setProcessed(): void {
|
|
528
|
+
this.#state = "processed";
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
isProcessing(): boolean {
|
|
532
|
+
return this.#state === "processing";
|
|
533
|
+
}
|
|
534
|
+
setProcessing(): void {
|
|
535
|
+
this.#state = "processing";
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
isWaiting(): boolean {
|
|
539
|
+
return this.#state === "waiting";
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
setWaiting(): void {
|
|
543
|
+
this.#state = "waiting";
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
equals(other: StateInstance): boolean {
|
|
547
|
+
return this.id === other.id;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
type SyncOrAsync<T, CTX> = Option<SyncResolveOnce<T, CTX> | AsyncResolveOnce<T, CTX>>;
|
|
552
|
+
|
|
553
|
+
export class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
|
|
554
|
+
#state = new StateInstance();
|
|
555
|
+
|
|
556
|
+
#syncOrAsync: SyncOrAsync<T, CTX> = Option.None();
|
|
557
|
+
|
|
558
|
+
readonly #opts: ResolveOnceOpts;
|
|
559
|
+
resetAfterTimer?: ReturnType<typeof setTimeout>;
|
|
560
|
+
|
|
561
|
+
readonly _ctx?: CTX;
|
|
562
|
+
constructor(ctx?: CTX, opts?: ResolveOnceOpts) {
|
|
563
|
+
this._ctx = ctx;
|
|
564
|
+
this.#opts = opts ?? {};
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
get state(): ResolveState {
|
|
568
|
+
return this.#state.getResolveState();
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// activeState(state: StateInstance): StateInstance | undefined {
|
|
572
|
+
// if (this.#state.equals(state)) {
|
|
573
|
+
// return this.#state;
|
|
574
|
+
// }
|
|
575
|
+
// return undefined;
|
|
576
|
+
// }
|
|
577
|
+
|
|
578
|
+
setProcessed(state: StateInstance): void {
|
|
579
|
+
if (this.resetAfterTimer) {
|
|
580
|
+
clearTimeout(this.resetAfterTimer);
|
|
581
|
+
}
|
|
582
|
+
if (this.#state.equals(state)) {
|
|
583
|
+
this.#state.setProcessed();
|
|
584
|
+
if (typeof this.#opts.resetAfter === "number" && this.#opts.resetAfter > 0) {
|
|
585
|
+
this.resetAfterTimer = setTimeout(() => {
|
|
586
|
+
this.reset();
|
|
587
|
+
}, this.#opts.resetAfter);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
320
590
|
}
|
|
321
591
|
|
|
322
592
|
get ready(): boolean {
|
|
323
|
-
return this.#state
|
|
593
|
+
return !this.#state.isInitial();
|
|
324
594
|
}
|
|
325
595
|
|
|
326
596
|
get value(): UnPromisify<T> | undefined {
|
|
327
|
-
if (this.#state
|
|
597
|
+
if (this.#state.isInitial()) {
|
|
328
598
|
return undefined;
|
|
329
599
|
}
|
|
330
600
|
return this.#syncOrAsync.Unwrap().value as UnPromisify<T>;
|
|
331
601
|
}
|
|
332
602
|
|
|
333
603
|
get queueLength(): number {
|
|
334
|
-
if (this.#state
|
|
604
|
+
if (this.#state.isInitial()) {
|
|
335
605
|
return 0;
|
|
336
606
|
}
|
|
337
607
|
return this.#syncOrAsync.Unwrap().queueLength;
|
|
338
608
|
}
|
|
339
609
|
|
|
340
610
|
get error(): Error | undefined {
|
|
341
|
-
if (this.#state
|
|
611
|
+
if (this.#state.isInitial()) {
|
|
342
612
|
return undefined;
|
|
343
613
|
}
|
|
344
614
|
return this.#syncOrAsync.Unwrap().error;
|
|
345
615
|
}
|
|
346
616
|
|
|
347
|
-
get state(): ResolveState {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
617
|
+
// get state(): ResolveState {
|
|
618
|
+
// return this.#state;
|
|
619
|
+
// }
|
|
620
|
+
// set state(value: ResolveState) {
|
|
621
|
+
// console.log(`ResolveOnce.state ${this.#state} -> ${value}`);
|
|
622
|
+
// if (value === "processed") {
|
|
623
|
+
// if (this.resetAfterTimer) {
|
|
624
|
+
// clearTimeout(this.resetAfterTimer);
|
|
625
|
+
// }
|
|
626
|
+
// if (typeof this.#opts.resetAfter === "number" && this.#opts.resetAfter > 0) {
|
|
627
|
+
// console.log("setting reset timer for", this.#opts.resetAfter);
|
|
628
|
+
// this.resetAfterTimer = setTimeout(() => {
|
|
629
|
+
// console.log("resetting after", this.#opts.resetAfter);
|
|
630
|
+
// this.reset();
|
|
631
|
+
// }, this.#opts.resetAfter);
|
|
632
|
+
// }
|
|
633
|
+
// }
|
|
634
|
+
// this.#state = value;
|
|
635
|
+
// }
|
|
353
636
|
|
|
354
|
-
once<R>(fn: (c: CTX) => R): ResultOnce<R> {
|
|
637
|
+
once<R>(fn: (c: CTX, prev?: T) => R): ResultOnce<R> {
|
|
355
638
|
let resultFn: (ctx: CTX) => R;
|
|
356
|
-
if (this.#state
|
|
357
|
-
|
|
639
|
+
if (this.#state.isInitial()) {
|
|
640
|
+
const state = this.#state;
|
|
358
641
|
try {
|
|
359
|
-
|
|
360
|
-
|
|
642
|
+
state.setProcessing();
|
|
643
|
+
let prev: T | undefined = undefined;
|
|
644
|
+
if (this.#syncOrAsync.IsSome()) {
|
|
645
|
+
prev = this.#syncOrAsync.Unwrap().value as T;
|
|
646
|
+
}
|
|
647
|
+
const isSyncOrAsync = fn(this._ctx ?? ({} as CTX), prev);
|
|
361
648
|
if (isPromise(isSyncOrAsync)) {
|
|
362
|
-
this.#syncOrAsync = Option.Some(new AsyncResolveOnce<
|
|
649
|
+
this.#syncOrAsync = Option.Some(new AsyncResolveOnce<T, CTX>(this, state, this.#syncOrAsync));
|
|
363
650
|
} else {
|
|
364
|
-
this.#syncOrAsync = Option.Some(new SyncResolveOnce<
|
|
651
|
+
this.#syncOrAsync = Option.Some(new SyncResolveOnce<T, CTX>(this, state));
|
|
365
652
|
}
|
|
366
653
|
resultFn = (): R => isSyncOrAsync;
|
|
367
654
|
} catch (e) {
|
|
368
|
-
this.#syncOrAsync = Option.Some(new SyncResolveOnce<
|
|
655
|
+
this.#syncOrAsync = Option.Some(new SyncResolveOnce<T, CTX>(this, state));
|
|
369
656
|
resultFn = (): R => {
|
|
370
657
|
throw e;
|
|
371
658
|
};
|
|
372
|
-
} finally {
|
|
373
|
-
this.#state = "processed";
|
|
374
659
|
}
|
|
375
660
|
} else {
|
|
376
661
|
resultFn = fn;
|
|
377
662
|
}
|
|
378
663
|
if (!this.#syncOrAsync) {
|
|
379
|
-
throw new Error(
|
|
664
|
+
throw new Error(`ResolveOnce.once impossible: state=${this.#state.getResolveState()}`);
|
|
380
665
|
}
|
|
381
666
|
return this.#syncOrAsync.Unwrap().resolve(resultFn as (c?: CTX) => never) as ResultOnce<R>;
|
|
382
667
|
}
|
|
383
668
|
|
|
384
669
|
reset<R>(fn?: (c: CTX) => R): ResultOnce<R> {
|
|
385
|
-
if (this.#state
|
|
670
|
+
if (this.#state.isInitial()) {
|
|
671
|
+
if (!fn) {
|
|
672
|
+
return undefined as ResultOnce<R>;
|
|
673
|
+
}
|
|
386
674
|
return this.once(fn as (c: CTX) => R);
|
|
387
675
|
}
|
|
388
|
-
if (this.#state
|
|
676
|
+
if (this.#state.isProcessing()) {
|
|
389
677
|
// eslint-disable-next-line no-console
|
|
390
678
|
console.warn("ResolveOnce.reset dropped was called while processing");
|
|
391
679
|
return undefined as ResultOnce<R>;
|
|
392
680
|
}
|
|
393
|
-
|
|
681
|
+
let ret = undefined as ResultOnce<R>;
|
|
682
|
+
this.#state = new StateInstance();
|
|
683
|
+
if (fn) {
|
|
684
|
+
ret = this.once(fn as (c: CTX) => R);
|
|
685
|
+
// ret = this.#syncOrAsync.Unwrap().reset(fn as (c?: CTX) => never) as ResultOnce<R>
|
|
686
|
+
}
|
|
687
|
+
return ret;
|
|
394
688
|
}
|
|
395
689
|
}
|
|
396
690
|
|
|
397
|
-
|
|
398
|
-
|
|
691
|
+
// /**
|
|
692
|
+
// * Configuration parameters for Keyed instances.
|
|
693
|
+
// * @template K - The key type
|
|
694
|
+
// * @template V - The value type
|
|
695
|
+
// */
|
|
696
|
+
// export interface KeyedParam<K, V> {
|
|
697
|
+
// readonly lru: Partial<LRUParam<V, K>>;
|
|
698
|
+
// }
|
|
699
|
+
|
|
700
|
+
/**
|
|
701
|
+
* Represents a key-value pair where the value is wrapped in a Result.
|
|
702
|
+
* @template K - The key type
|
|
703
|
+
* @template V - The value type
|
|
704
|
+
*/
|
|
705
|
+
export interface KeyItem<K, V> {
|
|
706
|
+
readonly key: K;
|
|
707
|
+
readonly value: Result<V>;
|
|
399
708
|
}
|
|
400
709
|
|
|
401
|
-
|
|
710
|
+
/**
|
|
711
|
+
* Configuration parameters for KeyedResolvOnce, excluding the createValue factory.
|
|
712
|
+
* @template K - The key type
|
|
713
|
+
* @template V - The value type
|
|
714
|
+
* @template CTX - The context type
|
|
715
|
+
*/
|
|
716
|
+
export type AddKeyedParam<K, V, CTX extends NonNullable<object>> = Omit<KeyedNgOptions<K, V, CTX>, "createValue">;
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* Type helper that adds a key property to a context object.
|
|
720
|
+
* @template X - The context type
|
|
721
|
+
* @template K - The key type
|
|
722
|
+
*/
|
|
723
|
+
export type WithKey<X extends NonNullable<object>, K> = X & { readonly key: K };
|
|
724
|
+
|
|
725
|
+
/**
|
|
726
|
+
* Type helper that adds an optional reset method to a value type.
|
|
727
|
+
* @template V - The value type
|
|
728
|
+
*/
|
|
729
|
+
export type WithOptionalReset<V> = V & { readonly reset?: () => void };
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* Represents an item in a KeyedResolvOnce collection with its resolved result.
|
|
733
|
+
* @template K - The key type
|
|
734
|
+
* @template T - The value type
|
|
735
|
+
* @template CTX - The context type
|
|
736
|
+
*/
|
|
737
|
+
export interface KeyedResolveOnceItem<K, T, CTX extends NonNullable<object>> {
|
|
738
|
+
/** The key associated with this item */
|
|
739
|
+
readonly key: K;
|
|
740
|
+
/** The resolved value wrapped in a Result (Ok or Err) */
|
|
741
|
+
readonly value: Result<T>;
|
|
742
|
+
/** The complete KeyedNgItem containing metadata */
|
|
743
|
+
readonly item: KeyedNgItem<K, ResolveOnce<WithOptionalReset<T>, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
|
|
744
|
+
}
|
|
402
745
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
746
|
+
/**
|
|
747
|
+
* Keyed collection of ResolveOnce instances.
|
|
748
|
+
*
|
|
749
|
+
* Manages a map of ResolveOnce instances indexed by keys, with optional LRU caching.
|
|
750
|
+
* Each key gets its own ResolveOnce instance that can be accessed and manipulated independently.
|
|
751
|
+
* Values can optionally have a reset() method for cleanup on deletion.
|
|
752
|
+
*
|
|
753
|
+
* @template T - The return type of the ResolveOnce instances (must include optional reset)
|
|
754
|
+
* @template K - The key type (defaults to string)
|
|
755
|
+
* @template CTX - Optional context type (defaults to empty object)
|
|
756
|
+
* @template PT - Plain type of T without reset (for internal use)
|
|
757
|
+
*
|
|
758
|
+
* @example
|
|
759
|
+
* ```typescript
|
|
760
|
+
* const cache = new KeyedResolvOnce<number, string>();
|
|
761
|
+
*
|
|
762
|
+
* // Each key gets its own ResolveOnce
|
|
763
|
+
* const result1 = cache.get('key1').once(() => expensiveCalc1());
|
|
764
|
+
* const result2 = cache.get('key2').once(() => expensiveCalc2());
|
|
765
|
+
*
|
|
766
|
+
* // Delete specific key
|
|
767
|
+
* cache.delete('key1');
|
|
768
|
+
*
|
|
769
|
+
* // Iterate over all resolved entries
|
|
770
|
+
* cache.forEach((item) => {
|
|
771
|
+
* console.log(item.key, item.value.Ok);
|
|
772
|
+
* });
|
|
773
|
+
* ```
|
|
774
|
+
*
|
|
775
|
+
* @example
|
|
776
|
+
* ```typescript
|
|
777
|
+
* // With custom key type and context
|
|
778
|
+
* interface UserKey { org: string; id: string; }
|
|
779
|
+
* interface UserContext { apiKey: string; }
|
|
780
|
+
*
|
|
781
|
+
* const users = new KeyedResolvOnce<User, UserKey, UserContext>({
|
|
782
|
+
* key2string: (key) => `${key.org}:${key.id}`,
|
|
783
|
+
* ctx: { apiKey: 'default' },
|
|
784
|
+
* lru: { max: 100 }
|
|
785
|
+
* });
|
|
786
|
+
*
|
|
787
|
+
* const user = users.get({ org: 'acme', id: '123' })
|
|
788
|
+
* .once(({ givenKey, ctx }) => fetchUser(givenKey, ctx));
|
|
789
|
+
* ```
|
|
790
|
+
*/
|
|
791
|
+
export class KeyedResolvOnce<T extends WithOptionalReset<PT>, K = string, CTX extends NonNullable<object> = object, PT = T>
|
|
792
|
+
implements
|
|
793
|
+
Omit<
|
|
794
|
+
// KeyedIf<ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, WithOptionalReset<T>, K>
|
|
795
|
+
KeyedIf<
|
|
796
|
+
KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>,
|
|
797
|
+
ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>,
|
|
798
|
+
K,
|
|
799
|
+
CTX
|
|
800
|
+
>,
|
|
801
|
+
"entries" | "forEach" | "onSet" | "onDelete" | "values" | "setParam"
|
|
802
|
+
>
|
|
803
|
+
{
|
|
804
|
+
/** @internal */
|
|
805
|
+
readonly _keyed: KeyedNg<K, ResolveOnce<WithOptionalReset<T>, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
|
|
407
806
|
|
|
408
|
-
|
|
807
|
+
/**
|
|
808
|
+
* Creates a new KeyedResolvOnce instance.
|
|
809
|
+
*
|
|
810
|
+
* @param kp - Configuration options (key2string, ctx, lru)
|
|
811
|
+
*/
|
|
812
|
+
constructor(kp: Partial<AddKeyedParam<K, T, CTX>> = {}) {
|
|
813
|
+
this._keyed = new KeyedNg({
|
|
814
|
+
createValue: (
|
|
815
|
+
item: KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>,
|
|
816
|
+
): ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>> => {
|
|
817
|
+
return new ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>(
|
|
818
|
+
{
|
|
819
|
+
...item,
|
|
820
|
+
ctx: kp.ctx ?? item.ctx,
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
resetAfter: kp.resetAfter,
|
|
824
|
+
},
|
|
825
|
+
);
|
|
826
|
+
},
|
|
827
|
+
key2string: kp.key2string,
|
|
828
|
+
ctx: kp.ctx as CTX,
|
|
829
|
+
lru: kp.lru,
|
|
830
|
+
});
|
|
831
|
+
}
|
|
409
832
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
833
|
+
/**
|
|
834
|
+
* Returns all keys currently in the collection.
|
|
835
|
+
*
|
|
836
|
+
* @returns Array of all keys
|
|
837
|
+
*/
|
|
838
|
+
keys(): K[] {
|
|
839
|
+
return this._keyed.keys();
|
|
414
840
|
}
|
|
415
841
|
|
|
416
|
-
|
|
417
|
-
|
|
842
|
+
/**
|
|
843
|
+
* Returns all resolved items with their values wrapped in Result.
|
|
844
|
+
*
|
|
845
|
+
* Only includes items that have been resolved (ready state).
|
|
846
|
+
* Each item contains the key, Result-wrapped value, and full item metadata.
|
|
847
|
+
*
|
|
848
|
+
* @returns Array of all resolved items
|
|
849
|
+
*
|
|
850
|
+
* @example
|
|
851
|
+
* ```typescript
|
|
852
|
+
* const items = cache.values();
|
|
853
|
+
* items.forEach(({ key, value }) => {
|
|
854
|
+
* if (value.Ok) {
|
|
855
|
+
* console.log(key, value.unwrap());
|
|
856
|
+
* } else {
|
|
857
|
+
* console.error(key, value.unwrapErr());
|
|
858
|
+
* }
|
|
859
|
+
* });
|
|
860
|
+
* ```
|
|
861
|
+
*/
|
|
862
|
+
values(): KeyedResolveOnceItem<K, T, CTX>[] {
|
|
863
|
+
return this._keyed
|
|
864
|
+
.values()
|
|
865
|
+
.filter((i) => i.value.ready)
|
|
866
|
+
.map((item) => ({
|
|
867
|
+
key: item.givenKey,
|
|
868
|
+
value: item.value.error ? Result.Err<T>(item.value.error) : Result.Ok<T>(item.value.value as T),
|
|
869
|
+
item,
|
|
870
|
+
}));
|
|
418
871
|
}
|
|
419
872
|
|
|
420
|
-
|
|
421
|
-
|
|
873
|
+
/**
|
|
874
|
+
* Registers a callback that fires when a new ResolveOnce instance is created.
|
|
875
|
+
*
|
|
876
|
+
* @param fn - Callback receiving the key and ResolveOnce instance
|
|
877
|
+
* @returns Unregister function
|
|
878
|
+
*/
|
|
879
|
+
onSet(fn: (key: K, value: ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>) => void): UnregFn {
|
|
880
|
+
return this._keyed.onSet((item) => {
|
|
881
|
+
fn(item.givenKey, item.value);
|
|
882
|
+
});
|
|
422
883
|
}
|
|
423
884
|
|
|
424
|
-
|
|
425
|
-
|
|
885
|
+
/**
|
|
886
|
+
* Registers a callback that fires when a ResolveOnce instance is deleted.
|
|
887
|
+
*
|
|
888
|
+
* @param fn - Callback receiving the key and ResolveOnce instance
|
|
889
|
+
* @returns Unregister function
|
|
890
|
+
*/
|
|
891
|
+
onDelete(fn: (key: K, value: ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>) => void): UnregFn {
|
|
892
|
+
return this._keyed.onDelete((item) => {
|
|
893
|
+
fn(item.givenKey, item.value);
|
|
894
|
+
});
|
|
426
895
|
}
|
|
427
896
|
|
|
428
|
-
|
|
429
|
-
|
|
897
|
+
/**
|
|
898
|
+
* Updates the LRU parameters dynamically.
|
|
899
|
+
*
|
|
900
|
+
* @param params - New LRU parameters
|
|
901
|
+
*/
|
|
902
|
+
setParam(params: Partial<AddKeyedParam<K, ResolveOnce<T, CTX>, CTX>>): void {
|
|
903
|
+
this._keyed.setParam({ lru: params.lru });
|
|
430
904
|
}
|
|
431
905
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
}
|
|
441
|
-
return keyed;
|
|
906
|
+
/**
|
|
907
|
+
* Asynchronously gets or creates a ResolveOnce for a key resolved from a promise.
|
|
908
|
+
*
|
|
909
|
+
* @param key - Function returning a promise that resolves to the key
|
|
910
|
+
* @returns Promise resolving to the ResolveOnce instance
|
|
911
|
+
*/
|
|
912
|
+
asyncGet(key: () => Promise<K>): Promise<ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>> {
|
|
913
|
+
return this._keyed.asyncGet(key);
|
|
442
914
|
}
|
|
443
915
|
|
|
444
|
-
|
|
916
|
+
/**
|
|
917
|
+
* Gets or creates a ResolveOnce instance for the given key.
|
|
918
|
+
*
|
|
919
|
+
* This is the primary method for accessing ResolveOnce instances. Each unique
|
|
920
|
+
* key gets its own instance that persists across calls.
|
|
921
|
+
*
|
|
922
|
+
* @param key - The key or function returning the key
|
|
923
|
+
* @param ctx - Optional context override for this operation
|
|
924
|
+
* @returns The ResolveOnce instance for this key
|
|
925
|
+
*
|
|
926
|
+
* @example
|
|
927
|
+
* ```typescript
|
|
928
|
+
* const result = cache.get('myKey').once(({ refKey, givenKey, ctx }) => {
|
|
929
|
+
* return computeValue(givenKey, ctx);
|
|
930
|
+
* });
|
|
931
|
+
* ```
|
|
932
|
+
*/
|
|
933
|
+
get(key: K | (() => K), ctx?: CTX): ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>> {
|
|
445
934
|
if (typeof key === "function") {
|
|
446
935
|
key = (key as () => K)();
|
|
447
936
|
}
|
|
448
|
-
return this.
|
|
937
|
+
return this._keyed.getItem(key, ctx).value;
|
|
449
938
|
}
|
|
450
939
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
940
|
+
/**
|
|
941
|
+
* Gets or creates the complete KeyedNgItem for a key.
|
|
942
|
+
*
|
|
943
|
+
* Useful when you need access to the full item structure including metadata.
|
|
944
|
+
*
|
|
945
|
+
* @param key - The key to get
|
|
946
|
+
* @param ctx - Optional context override
|
|
947
|
+
* @returns The complete KeyedNgItem
|
|
948
|
+
*/
|
|
949
|
+
getItem(key: K, ctx?: CTX): KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX> {
|
|
950
|
+
return this._keyed.getItem(key, ctx);
|
|
951
|
+
}
|
|
454
952
|
|
|
953
|
+
/**
|
|
954
|
+
* Checks if a key exists in the collection.
|
|
955
|
+
*
|
|
956
|
+
* @param key - The key or function returning the key
|
|
957
|
+
* @returns True if the key exists
|
|
958
|
+
*/
|
|
959
|
+
has(key: K | (() => K)): boolean {
|
|
960
|
+
return this._keyed.has(key);
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
/**
|
|
964
|
+
* Deletes an entry from the collection.
|
|
965
|
+
*
|
|
966
|
+
* Triggers onDelete callbacks before removal.
|
|
967
|
+
*
|
|
968
|
+
* @param key - The key to delete
|
|
969
|
+
*/
|
|
455
970
|
delete(key: K): void {
|
|
456
|
-
this.
|
|
971
|
+
this._keyed.delete(key);
|
|
457
972
|
}
|
|
458
973
|
|
|
974
|
+
/**
|
|
975
|
+
* Resets and removes an entry from the collection.
|
|
976
|
+
*
|
|
977
|
+
* Calls the optional reset() method on the value before deletion,
|
|
978
|
+
* allowing for cleanup operations.
|
|
979
|
+
*
|
|
980
|
+
* @param key - The key to reset and delete
|
|
981
|
+
*/
|
|
459
982
|
unget(key: K): void {
|
|
460
|
-
const
|
|
461
|
-
|
|
462
|
-
this.
|
|
983
|
+
const item = this._keyed.getItem(key);
|
|
984
|
+
item.value.reset?.();
|
|
985
|
+
return this._keyed.delete(item.givenKey);
|
|
463
986
|
}
|
|
464
987
|
|
|
988
|
+
/**
|
|
989
|
+
* Resets all entries by calling their optional reset() methods.
|
|
990
|
+
*
|
|
991
|
+
* Does not remove entries from the collection, only resets their state.
|
|
992
|
+
* Useful for cleanup without losing the collection structure.
|
|
993
|
+
*/
|
|
465
994
|
reset(): void {
|
|
466
|
-
|
|
467
|
-
|
|
995
|
+
for (const v of this._keyed.values()) {
|
|
996
|
+
v.value.reset?.();
|
|
997
|
+
}
|
|
468
998
|
}
|
|
469
|
-
}
|
|
470
999
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
1000
|
+
/**
|
|
1001
|
+
* Iterates over all completed entries, yielding key-result pairs.
|
|
1002
|
+
*
|
|
1003
|
+
* Only yields entries that have been resolved (ready state).
|
|
1004
|
+
* Values are wrapped in Result to distinguish success from error.
|
|
1005
|
+
*
|
|
1006
|
+
* @param fn - Callback receiving KeyItem and index
|
|
1007
|
+
*
|
|
1008
|
+
* @example
|
|
1009
|
+
* ```typescript
|
|
1010
|
+
* cache.forEach((item, idx) => {
|
|
1011
|
+
* console.log(idx, item.key);
|
|
1012
|
+
* if (item.value.Ok) {
|
|
1013
|
+
* console.log('Success:', item.value.unwrap());
|
|
1014
|
+
* } else {
|
|
1015
|
+
* console.error('Error:', item.value.unwrapErr());
|
|
1016
|
+
* }
|
|
1017
|
+
* });
|
|
1018
|
+
* ```
|
|
1019
|
+
*/
|
|
1020
|
+
forEach(fn: (ki: KeyItem<K, T>, idx: number) => void): void {
|
|
1021
|
+
for (const [item, idx] of this._keyed.entries()) {
|
|
1022
|
+
const v = item.value;
|
|
1023
|
+
const k = item.givenKey;
|
|
1024
|
+
if (!v.ready) {
|
|
1025
|
+
continue;
|
|
1026
|
+
}
|
|
1027
|
+
if (v.error) {
|
|
1028
|
+
fn({ key: k, value: Result.Err<T>(v.error) }, idx);
|
|
1029
|
+
} else {
|
|
1030
|
+
fn({ key: k, value: Result.Ok<T>(v.value as T) }, idx);
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
484
1033
|
}
|
|
485
1034
|
|
|
486
|
-
|
|
487
|
-
|
|
1035
|
+
/**
|
|
1036
|
+
* Returns an iterable of all completed entries.
|
|
1037
|
+
*
|
|
1038
|
+
* Only yields entries that have been resolved. Values are wrapped in Result.
|
|
1039
|
+
*
|
|
1040
|
+
* @returns Iterable of KeyItem entries
|
|
1041
|
+
*
|
|
1042
|
+
* @example
|
|
1043
|
+
* ```typescript
|
|
1044
|
+
* for (const item of cache.entries()) {
|
|
1045
|
+
* console.log(item.key, item.value.Ok);
|
|
1046
|
+
* }
|
|
1047
|
+
* ```
|
|
1048
|
+
*/
|
|
1049
|
+
*entries(): Iterable<KeyItem<K, T>> {
|
|
1050
|
+
/* this is not optimal, but sufficient for now */
|
|
1051
|
+
for (const [item] of this._keyed.entries()) {
|
|
1052
|
+
const v = item.value;
|
|
1053
|
+
const k = item.givenKey;
|
|
488
1054
|
if (!v.ready) {
|
|
489
1055
|
continue;
|
|
490
1056
|
}
|
|
@@ -495,41 +1061,98 @@ export class KeyedResolvOnce<T, K = string, CTX extends NonNullable<object> = ob
|
|
|
495
1061
|
}
|
|
496
1062
|
}
|
|
497
1063
|
}
|
|
1064
|
+
}
|
|
498
1065
|
|
|
1066
|
+
/**
|
|
1067
|
+
* Keyed collection of ResolveSeq instances.
|
|
1068
|
+
*
|
|
1069
|
+
* Manages a map of ResolveSeq instances indexed by keys, with optional LRU caching.
|
|
1070
|
+
* Each key gets its own ResolveSeq instance for sequential execution of operations.
|
|
1071
|
+
*
|
|
1072
|
+
* @template VALUEType - The return type of the ResolveSeq instances
|
|
1073
|
+
* @template KEYType - The key type
|
|
1074
|
+
* @template CTX - Optional context type
|
|
1075
|
+
*
|
|
1076
|
+
* @example
|
|
1077
|
+
* ```typescript
|
|
1078
|
+
* const sequences = new KeyedResolvSeq<number, string>();
|
|
1079
|
+
*
|
|
1080
|
+
* // Each key gets its own sequential executor
|
|
1081
|
+
* sequences.get('user1').add(() => updateUser1());
|
|
1082
|
+
* sequences.get('user2').add(() => updateUser2());
|
|
1083
|
+
* ```
|
|
1084
|
+
*/
|
|
1085
|
+
export class KeyedResolvSeq<
|
|
1086
|
+
VALUEType extends NonNullable<unknown>,
|
|
1087
|
+
KEYType = string,
|
|
1088
|
+
CTX extends NonNullable<object> = object,
|
|
1089
|
+
> extends KeyedNg<KEYType, ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>>, CTX> {
|
|
499
1090
|
/**
|
|
1091
|
+
* Creates a new KeyedResolvSeq instance.
|
|
500
1092
|
*
|
|
501
|
-
* @
|
|
1093
|
+
* @param kp - Configuration options (key2string, ctx, lru)
|
|
502
1094
|
*/
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
super((ctx) => new ResolveSeq<T, AddKey<CTX, K>>(ctx), kp);
|
|
1095
|
+
constructor(kp: Partial<Omit<KeyedNgOptions<KEYType, VALUEType, CTX>, "createValue">> = {}) {
|
|
1096
|
+
super({
|
|
1097
|
+
createValue: (
|
|
1098
|
+
item: KeyedNgItem<KEYType, ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>>, CTX>,
|
|
1099
|
+
): ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>> => {
|
|
1100
|
+
return new ResolveSeq<VALUEType, KeyedNgItemWithoutValue<KEYType, CTX>>({
|
|
1101
|
+
...item,
|
|
1102
|
+
ctx: kp.ctx ?? item.ctx,
|
|
1103
|
+
});
|
|
1104
|
+
},
|
|
1105
|
+
key2string: kp.key2string,
|
|
1106
|
+
ctx: kp.ctx as CTX,
|
|
1107
|
+
lru: kp.lru,
|
|
1108
|
+
});
|
|
518
1109
|
}
|
|
519
1110
|
}
|
|
520
1111
|
|
|
1112
|
+
/**
|
|
1113
|
+
* Internal helper class for the Lazy function.
|
|
1114
|
+
* @internal
|
|
1115
|
+
*/
|
|
521
1116
|
class LazyContainer<T> {
|
|
522
|
-
readonly resolveOnce
|
|
1117
|
+
readonly resolveOnce: ResolveOnce<T>;
|
|
523
1118
|
|
|
1119
|
+
constructor(opts?: ResolveOnceOpts) {
|
|
1120
|
+
this.resolveOnce = new ResolveOnce<T>(undefined, opts);
|
|
1121
|
+
}
|
|
524
1122
|
call<Args extends readonly unknown[], Return>(fn: (...args: Args) => Return): () => Return {
|
|
525
1123
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any
|
|
526
1124
|
return (...args: Args) => this.resolveOnce.once(() => fn(...args) as any) as unknown as Return;
|
|
527
1125
|
}
|
|
528
1126
|
}
|
|
529
1127
|
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
1128
|
+
/**
|
|
1129
|
+
* Creates a lazy-evaluated version of a function that executes only once and caches the result.
|
|
1130
|
+
*
|
|
1131
|
+
* The returned function will execute the original function on first call and return
|
|
1132
|
+
* the cached result for all subsequent calls, regardless of arguments. This is useful
|
|
1133
|
+
* for expensive computations or resource initialization.
|
|
1134
|
+
*
|
|
1135
|
+
* @template Args - The argument types of the function
|
|
1136
|
+
* @template Return - The return type of the function
|
|
1137
|
+
* @param fn - The function to make lazy
|
|
1138
|
+
* @returns A wrapped function that executes once and caches the result
|
|
1139
|
+
*
|
|
1140
|
+
* @example
|
|
1141
|
+
* ```typescript
|
|
1142
|
+
* const getConfig = Lazy(() => {
|
|
1143
|
+
* console.log('Loading config...');
|
|
1144
|
+
* return { apiKey: 'secret' };
|
|
1145
|
+
* });
|
|
1146
|
+
*
|
|
1147
|
+
* getConfig(); // Logs "Loading config..." and returns config
|
|
1148
|
+
* getConfig(); // Returns cached config without logging
|
|
1149
|
+
* ```
|
|
1150
|
+
*/
|
|
1151
|
+
|
|
1152
|
+
export function Lazy<Args extends readonly unknown[], Return>(
|
|
1153
|
+
fn: (...args: Args) => Return,
|
|
1154
|
+
opts?: ResolveOnceOpts,
|
|
1155
|
+
): (...args: Args) => Return {
|
|
1156
|
+
const lazy = new LazyContainer<Return>(opts);
|
|
534
1157
|
return lazy.call(fn);
|
|
535
1158
|
}
|