@adviser/cement 0.5.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/base-basic-sys-abstraction.test.cjs +12 -13
- package/cjs/base-basic-sys-abstraction.test.cjs.map +1 -1
- package/cjs/bin2text.test.cjs +15 -14
- package/cjs/bin2text.test.cjs.map +1 -1
- package/cjs/coerce-binary.test.cjs +16 -15
- package/cjs/coerce-binary.test.cjs.map +1 -1
- package/cjs/crypto.test.cjs +9 -8
- package/cjs/crypto.test.cjs.map +1 -1
- package/cjs/future.test.cjs +12 -11
- package/cjs/future.test.cjs.map +1 -1
- package/cjs/http_header.test.cjs +13 -13
- package/cjs/http_header.test.cjs.map +1 -1
- package/cjs/index.cjs +3 -0
- package/cjs/index.cjs.map +1 -1
- package/cjs/index.d.ts +3 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/is-json.test.cjs +59 -58
- package/cjs/is-json.test.cjs.map +1 -1
- package/cjs/is-promise.test.cjs +19 -19
- package/cjs/is-promise.test.cjs.map +1 -1
- package/cjs/json-en-decoder.test.cjs +13 -12
- package/cjs/json-en-decoder.test.cjs.map +1 -1
- package/cjs/keyed-ng.test.cjs +21 -21
- package/cjs/keyed-ng.test.cjs.map +1 -1
- package/cjs/logger.test.cjs +178 -179
- package/cjs/logger.test.cjs.map +1 -1
- package/cjs/lru-map-set.test.cjs +67 -66
- package/cjs/lru-map-set.test.cjs.map +1 -1
- package/cjs/mutable-url.test.cjs +44 -44
- package/cjs/mutable-url.test.cjs.map +1 -1
- package/cjs/node-fs/mock-file-service.test.cjs +7 -6
- package/cjs/node-fs/mock-file-service.test.cjs.map +1 -1
- package/cjs/node-fs/node-sys-abstraction.test.cjs +13 -12
- package/cjs/node-fs/node-sys-abstraction.test.cjs.map +1 -1
- package/cjs/on-func.test.cjs +42 -43
- package/cjs/on-func.test.cjs.map +1 -1
- package/cjs/on-func.test.d.ts.map +1 -1
- package/cjs/option.cjs +2 -2
- package/cjs/option.cjs.map +1 -1
- package/cjs/option.d.ts +1 -1
- package/cjs/option.d.ts.map +1 -1
- package/cjs/path-ops.test.cjs +40 -39
- package/cjs/path-ops.test.cjs.map +1 -1
- package/cjs/poller.test.cjs +51 -51
- package/cjs/poller.test.cjs.map +1 -1
- package/cjs/promise-sleep.test.cjs +35 -34
- package/cjs/promise-sleep.test.cjs.map +1 -1
- package/cjs/resolve-once.cjs.map +1 -1
- package/cjs/resolve-once.d.ts +3 -6
- package/cjs/resolve-once.d.ts.map +1 -1
- package/cjs/resolve-once.test.cjs +301 -296
- package/cjs/resolve-once.test.cjs.map +1 -1
- package/cjs/result.test.cjs +68 -44
- package/cjs/result.test.cjs.map +1 -1
- package/cjs/sys-env.test.cjs +67 -66
- package/cjs/sys-env.test.cjs.map +1 -1
- package/cjs/test/mock-logger.test.cjs +14 -13
- package/cjs/test/mock-logger.test.cjs.map +1 -1
- package/cjs/timeouted.test.cjs +313 -313
- package/cjs/timeouted.test.cjs.map +1 -1
- package/cjs/tracer.test.cjs +32 -31
- package/cjs/tracer.test.cjs.map +1 -1
- package/cjs/txt-en-decoder.test.cjs +31 -31
- package/cjs/txt-en-decoder.test.cjs.map +1 -1
- package/cjs/uri.test.cjs +239 -239
- package/cjs/uri.test.cjs.map +1 -1
- package/cjs/utils/consume.test.cjs +22 -22
- package/cjs/utils/consume.test.cjs.map +1 -1
- package/cjs/utils/rebuffer.test.cjs +40 -39
- package/cjs/utils/rebuffer.test.cjs.map +1 -1
- package/cjs/utils/relative-path.test.cjs +125 -124
- package/cjs/utils/relative-path.test.cjs.map +1 -1
- package/cjs/utils/sorted-object.test.cjs +8 -7
- package/cjs/utils/sorted-object.test.cjs.map +1 -1
- package/cjs/utils/stream-map.test.cjs +32 -31
- package/cjs/utils/stream-map.test.cjs.map +1 -1
- package/cjs/utils/stream2string.test.cjs +5 -5
- package/cjs/utils/stream2string.test.cjs.map +1 -1
- package/cjs/utils/string2stream.test.cjs +5 -5
- package/cjs/utils/string2stream.test.cjs.map +1 -1
- package/cjs/utils/stripper.test.cjs +21 -20
- package/cjs/utils/stripper.test.cjs.map +1 -1
- package/cjs/utils/to-sorted.test.cjs +27 -27
- package/cjs/utils/to-sorted.test.cjs.map +1 -1
- package/cjs/version.cjs +1 -1
- package/cjs/wait-for-value.cjs +49 -0
- package/cjs/wait-for-value.cjs.map +1 -0
- package/cjs/wait-for-value.d.ts +13 -0
- package/cjs/wait-for-value.d.ts.map +1 -0
- package/cjs/wait-for-value.test.cjs +86 -0
- package/cjs/wait-for-value.test.cjs.map +1 -0
- package/cjs/wait-for-value.test.d.ts +2 -0
- package/cjs/wait-for-value.test.d.ts.map +1 -0
- package/deno.json +1 -1
- package/esm/base-basic-sys-abstraction.test.js +1 -2
- package/esm/base-basic-sys-abstraction.test.js.map +1 -1
- package/esm/bin2text.test.js +2 -1
- package/esm/bin2text.test.js.map +1 -1
- package/esm/coerce-binary.test.js +1 -0
- package/esm/coerce-binary.test.js.map +1 -1
- package/esm/crypto.test.js +2 -1
- package/esm/crypto.test.js.map +1 -1
- package/esm/future.test.js +1 -0
- package/esm/future.test.js.map +1 -1
- package/esm/http_header.test.js +1 -1
- package/esm/http_header.test.js.map +1 -1
- package/esm/index.d.ts +3 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +3 -0
- package/esm/index.js.map +1 -1
- package/esm/is-json.test.js +2 -1
- package/esm/is-json.test.js.map +1 -1
- package/esm/is-promise.test.js +2 -2
- package/esm/is-promise.test.js.map +1 -1
- package/esm/json-en-decoder.test.js +2 -1
- package/esm/json-en-decoder.test.js.map +1 -1
- package/esm/keyed-ng.test.js +2 -2
- package/esm/keyed-ng.test.js.map +1 -1
- package/esm/load-asset.test.js +2 -3
- package/esm/load-asset.test.js.map +1 -1
- package/esm/logger.test.js +2 -3
- package/esm/logger.test.js.map +1 -1
- package/esm/lru-map-set.test.js +1 -0
- package/esm/lru-map-set.test.js.map +1 -1
- package/esm/mutable-url.test.js +1 -1
- package/esm/mutable-url.test.js.map +1 -1
- package/esm/node-fs/mock-file-service.test.js +1 -0
- package/esm/node-fs/mock-file-service.test.js.map +1 -1
- package/esm/node-fs/node-sys-abstraction.test.js +1 -0
- package/esm/node-fs/node-sys-abstraction.test.js.map +1 -1
- package/esm/on-func.test.d.ts.map +1 -1
- package/esm/on-func.test.js +2 -3
- package/esm/on-func.test.js.map +1 -1
- package/esm/option.d.ts +1 -1
- package/esm/option.d.ts.map +1 -1
- package/esm/option.js +2 -2
- package/esm/option.js.map +1 -1
- package/esm/path-ops.test.js +2 -1
- package/esm/path-ops.test.js.map +1 -1
- package/esm/poller.test.js +2 -2
- package/esm/poller.test.js.map +1 -1
- package/esm/promise-sleep.test.js +2 -1
- package/esm/promise-sleep.test.js.map +1 -1
- package/esm/resolve-once.d.ts +3 -6
- package/esm/resolve-once.d.ts.map +1 -1
- package/esm/resolve-once.js.map +1 -1
- package/esm/resolve-once.test.js +9 -4
- package/esm/resolve-once.test.js.map +1 -1
- package/esm/result.test.js +25 -1
- package/esm/result.test.js.map +1 -1
- package/esm/sys-env.test.js +1 -0
- package/esm/sys-env.test.js.map +1 -1
- package/esm/test/mock-logger.test.js +1 -0
- package/esm/test/mock-logger.test.js.map +1 -1
- package/esm/timeouted.test.js +2 -2
- package/esm/timeouted.test.js.map +1 -1
- package/esm/tracer.test.js +1 -0
- package/esm/tracer.test.js.map +1 -1
- package/esm/txt-en-decoder.test.js +2 -2
- package/esm/txt-en-decoder.test.js.map +1 -1
- package/esm/uri.test.js +2 -2
- package/esm/uri.test.js.map +1 -1
- package/esm/utils/consume.test.js +2 -2
- package/esm/utils/consume.test.js.map +1 -1
- package/esm/utils/rebuffer.test.js +2 -1
- package/esm/utils/rebuffer.test.js.map +1 -1
- package/esm/utils/relative-path.test.js +2 -1
- package/esm/utils/relative-path.test.js.map +1 -1
- package/esm/utils/sorted-object.test.js +2 -1
- package/esm/utils/sorted-object.test.js.map +1 -1
- package/esm/utils/stream-map.test.js +2 -1
- package/esm/utils/stream-map.test.js.map +1 -1
- package/esm/utils/stream2string.test.js +2 -2
- package/esm/utils/stream2string.test.js.map +1 -1
- package/esm/utils/string2stream.test.js +2 -2
- package/esm/utils/string2stream.test.js.map +1 -1
- package/esm/utils/stripper.test.js +2 -1
- package/esm/utils/stripper.test.js.map +1 -1
- package/esm/utils/to-sorted.test.js +2 -2
- package/esm/utils/to-sorted.test.js.map +1 -1
- package/esm/version.js +1 -1
- package/esm/wait-for-value.d.ts +13 -0
- package/esm/wait-for-value.d.ts.map +1 -0
- package/esm/wait-for-value.js +45 -0
- package/esm/wait-for-value.js.map +1 -0
- package/esm/wait-for-value.test.d.ts +2 -0
- package/esm/wait-for-value.test.d.ts.map +1 -0
- package/esm/wait-for-value.test.js +84 -0
- package/esm/wait-for-value.test.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/option.ts +2 -2
- package/src/resolve-once.ts +11 -60
- package/src/wait-for-value.ts +111 -0
- package/ts/cjs/base-basic-sys-abstraction.test.js +12 -13
- package/ts/cjs/base-basic-sys-abstraction.test.js.map +1 -1
- package/ts/cjs/bin2text.test.js +15 -14
- package/ts/cjs/bin2text.test.js.map +1 -1
- package/ts/cjs/coerce-binary.test.js +16 -15
- package/ts/cjs/coerce-binary.test.js.map +1 -1
- package/ts/cjs/crypto.test.js +9 -8
- package/ts/cjs/crypto.test.js.map +1 -1
- package/ts/cjs/future.test.js +12 -11
- package/ts/cjs/future.test.js.map +1 -1
- package/ts/cjs/http_header.test.js +13 -13
- package/ts/cjs/http_header.test.js.map +1 -1
- package/ts/cjs/index.d.ts +3 -0
- package/ts/cjs/index.d.ts.map +1 -1
- package/ts/cjs/index.js +3 -0
- package/ts/cjs/index.js.map +1 -1
- package/ts/cjs/is-json.test.js +59 -58
- package/ts/cjs/is-json.test.js.map +1 -1
- package/ts/cjs/is-promise.test.js +19 -19
- package/ts/cjs/is-promise.test.js.map +1 -1
- package/ts/cjs/json-en-decoder.test.js +13 -12
- package/ts/cjs/json-en-decoder.test.js.map +1 -1
- package/ts/cjs/keyed-ng.test.js +21 -21
- package/ts/cjs/keyed-ng.test.js.map +1 -1
- package/ts/cjs/logger.test.js +178 -179
- package/ts/cjs/logger.test.js.map +1 -1
- package/ts/cjs/lru-map-set.test.js +67 -66
- package/ts/cjs/lru-map-set.test.js.map +1 -1
- package/ts/cjs/mutable-url.test.js +44 -44
- package/ts/cjs/mutable-url.test.js.map +1 -1
- package/ts/cjs/node-fs/mock-file-service.test.js +7 -6
- package/ts/cjs/node-fs/mock-file-service.test.js.map +1 -1
- package/ts/cjs/node-fs/node-sys-abstraction.test.js +13 -12
- package/ts/cjs/node-fs/node-sys-abstraction.test.js.map +1 -1
- package/ts/cjs/on-func.test.d.ts.map +1 -1
- package/ts/cjs/on-func.test.js +42 -43
- package/ts/cjs/on-func.test.js.map +1 -1
- package/ts/cjs/option.d.ts +1 -1
- package/ts/cjs/option.d.ts.map +1 -1
- package/ts/cjs/option.js +2 -2
- package/ts/cjs/option.js.map +1 -1
- package/ts/cjs/path-ops.test.js +40 -39
- package/ts/cjs/path-ops.test.js.map +1 -1
- package/ts/cjs/poller.test.js +51 -51
- package/ts/cjs/poller.test.js.map +1 -1
- package/ts/cjs/promise-sleep.test.js +35 -34
- package/ts/cjs/promise-sleep.test.js.map +1 -1
- package/ts/cjs/resolve-once.d.ts +3 -6
- package/ts/cjs/resolve-once.d.ts.map +1 -1
- package/ts/cjs/resolve-once.js.map +1 -1
- package/ts/cjs/resolve-once.test.js +301 -296
- package/ts/cjs/resolve-once.test.js.map +1 -1
- package/ts/cjs/result.test.js +68 -44
- package/ts/cjs/result.test.js.map +1 -1
- package/ts/cjs/sys-env.test.js +67 -66
- package/ts/cjs/sys-env.test.js.map +1 -1
- package/ts/cjs/test/mock-logger.test.js +14 -13
- package/ts/cjs/test/mock-logger.test.js.map +1 -1
- package/ts/cjs/timeouted.test.js +313 -313
- package/ts/cjs/timeouted.test.js.map +1 -1
- package/ts/cjs/tracer.test.js +32 -31
- package/ts/cjs/tracer.test.js.map +1 -1
- package/ts/cjs/txt-en-decoder.test.js +31 -31
- package/ts/cjs/txt-en-decoder.test.js.map +1 -1
- package/ts/cjs/uri.test.js +239 -239
- package/ts/cjs/uri.test.js.map +1 -1
- package/ts/cjs/utils/consume.test.js +22 -22
- package/ts/cjs/utils/consume.test.js.map +1 -1
- package/ts/cjs/utils/rebuffer.test.js +40 -39
- package/ts/cjs/utils/rebuffer.test.js.map +1 -1
- package/ts/cjs/utils/relative-path.test.js +125 -124
- package/ts/cjs/utils/relative-path.test.js.map +1 -1
- package/ts/cjs/utils/sorted-object.test.js +8 -7
- package/ts/cjs/utils/sorted-object.test.js.map +1 -1
- package/ts/cjs/utils/stream-map.test.js +32 -31
- package/ts/cjs/utils/stream-map.test.js.map +1 -1
- package/ts/cjs/utils/stream2string.test.js +5 -5
- package/ts/cjs/utils/stream2string.test.js.map +1 -1
- package/ts/cjs/utils/string2stream.test.js +5 -5
- package/ts/cjs/utils/string2stream.test.js.map +1 -1
- package/ts/cjs/utils/stripper.test.js +21 -20
- package/ts/cjs/utils/stripper.test.js.map +1 -1
- package/ts/cjs/utils/to-sorted.test.js +27 -27
- package/ts/cjs/utils/to-sorted.test.js.map +1 -1
- package/ts/cjs/version.js +1 -1
- package/ts/cjs/wait-for-value.d.ts +13 -0
- package/ts/cjs/wait-for-value.d.ts.map +1 -0
- package/ts/cjs/wait-for-value.js +49 -0
- package/ts/cjs/wait-for-value.js.map +1 -0
- package/ts/cjs/wait-for-value.test.d.ts +2 -0
- package/ts/cjs/wait-for-value.test.d.ts.map +1 -0
- package/ts/cjs/wait-for-value.test.js +86 -0
- package/ts/cjs/wait-for-value.test.js.map +1 -0
- package/ts/esm/base-basic-sys-abstraction.test.js +1 -2
- package/ts/esm/base-basic-sys-abstraction.test.js.map +1 -1
- package/ts/esm/bin2text.test.js +2 -1
- package/ts/esm/bin2text.test.js.map +1 -1
- package/ts/esm/coerce-binary.test.js +1 -0
- package/ts/esm/coerce-binary.test.js.map +1 -1
- package/ts/esm/crypto.test.js +2 -1
- package/ts/esm/crypto.test.js.map +1 -1
- package/ts/esm/future.test.js +1 -0
- package/ts/esm/future.test.js.map +1 -1
- package/ts/esm/http_header.test.js +1 -1
- package/ts/esm/http_header.test.js.map +1 -1
- package/ts/esm/index.d.ts +3 -0
- package/ts/esm/index.d.ts.map +1 -1
- package/ts/esm/index.js +3 -0
- package/ts/esm/index.js.map +1 -1
- package/ts/esm/is-json.test.js +2 -1
- package/ts/esm/is-json.test.js.map +1 -1
- package/ts/esm/is-promise.test.js +2 -2
- package/ts/esm/is-promise.test.js.map +1 -1
- package/ts/esm/json-en-decoder.test.js +2 -1
- package/ts/esm/json-en-decoder.test.js.map +1 -1
- package/ts/esm/keyed-ng.test.js +2 -2
- package/ts/esm/keyed-ng.test.js.map +1 -1
- package/ts/esm/load-asset.test.js +2 -3
- package/ts/esm/load-asset.test.js.map +1 -1
- package/ts/esm/logger.test.js +2 -3
- package/ts/esm/logger.test.js.map +1 -1
- package/ts/esm/lru-map-set.test.js +1 -0
- package/ts/esm/lru-map-set.test.js.map +1 -1
- package/ts/esm/mutable-url.test.js +1 -1
- package/ts/esm/mutable-url.test.js.map +1 -1
- package/ts/esm/node-fs/mock-file-service.test.js +1 -0
- package/ts/esm/node-fs/mock-file-service.test.js.map +1 -1
- package/ts/esm/node-fs/node-sys-abstraction.test.js +1 -0
- package/ts/esm/node-fs/node-sys-abstraction.test.js.map +1 -1
- package/ts/esm/on-func.test.d.ts.map +1 -1
- package/ts/esm/on-func.test.js +2 -3
- package/ts/esm/on-func.test.js.map +1 -1
- package/ts/esm/option.d.ts +1 -1
- package/ts/esm/option.d.ts.map +1 -1
- package/ts/esm/option.js +2 -2
- package/ts/esm/option.js.map +1 -1
- package/ts/esm/path-ops.test.js +2 -1
- package/ts/esm/path-ops.test.js.map +1 -1
- package/ts/esm/poller.test.js +2 -2
- package/ts/esm/poller.test.js.map +1 -1
- package/ts/esm/promise-sleep.test.js +2 -1
- package/ts/esm/promise-sleep.test.js.map +1 -1
- package/ts/esm/resolve-once.d.ts +3 -6
- package/ts/esm/resolve-once.d.ts.map +1 -1
- package/ts/esm/resolve-once.js.map +1 -1
- package/ts/esm/resolve-once.test.js +9 -4
- package/ts/esm/resolve-once.test.js.map +1 -1
- package/ts/esm/result.test.js +25 -1
- package/ts/esm/result.test.js.map +1 -1
- package/ts/esm/sys-env.test.js +1 -0
- package/ts/esm/sys-env.test.js.map +1 -1
- package/ts/esm/test/mock-logger.test.js +1 -0
- package/ts/esm/test/mock-logger.test.js.map +1 -1
- package/ts/esm/timeouted.test.js +2 -2
- package/ts/esm/timeouted.test.js.map +1 -1
- package/ts/esm/tracer.test.js +1 -0
- package/ts/esm/tracer.test.js.map +1 -1
- package/ts/esm/txt-en-decoder.test.js +2 -2
- package/ts/esm/txt-en-decoder.test.js.map +1 -1
- package/ts/esm/uri.test.js +2 -2
- package/ts/esm/uri.test.js.map +1 -1
- package/ts/esm/utils/consume.test.js +2 -2
- package/ts/esm/utils/consume.test.js.map +1 -1
- package/ts/esm/utils/rebuffer.test.js +2 -1
- package/ts/esm/utils/rebuffer.test.js.map +1 -1
- package/ts/esm/utils/relative-path.test.js +2 -1
- package/ts/esm/utils/relative-path.test.js.map +1 -1
- package/ts/esm/utils/sorted-object.test.js +2 -1
- package/ts/esm/utils/sorted-object.test.js.map +1 -1
- package/ts/esm/utils/stream-map.test.js +2 -1
- package/ts/esm/utils/stream-map.test.js.map +1 -1
- package/ts/esm/utils/stream2string.test.js +2 -2
- package/ts/esm/utils/stream2string.test.js.map +1 -1
- package/ts/esm/utils/string2stream.test.js +2 -2
- package/ts/esm/utils/string2stream.test.js.map +1 -1
- package/ts/esm/utils/stripper.test.js +2 -1
- package/ts/esm/utils/stripper.test.js.map +1 -1
- package/ts/esm/utils/to-sorted.test.js +2 -2
- package/ts/esm/utils/to-sorted.test.js.map +1 -1
- package/ts/esm/version.js +1 -1
- package/ts/esm/wait-for-value.d.ts +13 -0
- package/ts/esm/wait-for-value.d.ts.map +1 -0
- package/ts/esm/wait-for-value.js +45 -0
- package/ts/esm/wait-for-value.js.map +1 -0
- package/ts/esm/wait-for-value.test.d.ts +2 -0
- package/ts/esm/wait-for-value.test.d.ts.map +1 -0
- package/ts/esm/wait-for-value.test.js +84 -0
- package/ts/esm/wait-for-value.test.js.map +1 -0
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Future } from "./future.js";
|
|
2
|
+
import { Option } from "./option.js";
|
|
3
|
+
import { ResolveOnce } from "./resolve-once.js";
|
|
4
|
+
export class WaitingForValue {
|
|
5
|
+
#value;
|
|
6
|
+
#waitFuture;
|
|
7
|
+
#waitValue;
|
|
8
|
+
constructor(opts = {}) {
|
|
9
|
+
this.init(opts.presetValue);
|
|
10
|
+
}
|
|
11
|
+
init(presetValue = Option.None()) {
|
|
12
|
+
this.#value = presetValue;
|
|
13
|
+
if (this.#value.IsSome()) {
|
|
14
|
+
return this.setValue(this.#value);
|
|
15
|
+
}
|
|
16
|
+
const myFuture = (this.#waitFuture = new Future());
|
|
17
|
+
const resolveOnce = new ResolveOnce();
|
|
18
|
+
this.#waitValue = () => resolveOnce.once(async () => myFuture.asPromise());
|
|
19
|
+
}
|
|
20
|
+
setValue(value) {
|
|
21
|
+
if (value.IsNone()) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
switch (true) {
|
|
25
|
+
case this.#value.IsNone():
|
|
26
|
+
this.#value = value;
|
|
27
|
+
this.#waitFuture?.resolve(value.unwrap());
|
|
28
|
+
break;
|
|
29
|
+
case this.#value.IsSome(): {
|
|
30
|
+
this.#value = value;
|
|
31
|
+
this.#waitFuture = undefined;
|
|
32
|
+
const resolveOnce = new ResolveOnce();
|
|
33
|
+
this.#waitValue = () => resolveOnce.once(() => Promise.resolve(value.unwrap()));
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
waitValue() {
|
|
39
|
+
return this.#waitValue();
|
|
40
|
+
}
|
|
41
|
+
value() {
|
|
42
|
+
return this.#value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=wait-for-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-for-value.js","sourceRoot":"","sources":["../../../src/wait-for-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkChD,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAa;IACnB,WAAW,CAAa;IACxB,UAAU,CAAoB;IAO9B,YAAY,IAAI,GAA4B,EAAE,EAAE;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAAA,CAC7B;IASD,IAAI,CAAC,WAAW,GAAc,MAAM,CAAC,IAAI,EAAE,EAAQ;QACjD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,EAAK,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAUD,QAAQ,CAAC,KAAgB,EAAQ;QAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAK,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,GAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5F,MAAM;YACR,CAAC;QACH,CAAC;IAAA,CACF;IAUD,SAAS,GAAe;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAAA,CAC1B;IAED,KAAK,GAAc;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IAAA,CACpB;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-for-value.test.d.ts","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { WaitingForValue, sleep, Option } from "@adviser/cement";
|
|
2
|
+
import { it, vi, expect } from "vitest";
|
|
3
|
+
it("waitFor void", async () => {
|
|
4
|
+
const wfv = new WaitingForValue();
|
|
5
|
+
const size = 10;
|
|
6
|
+
for (let i = 0; i < size; i++) {
|
|
7
|
+
const promiseWaits = Promise.all(Array(size)
|
|
8
|
+
.fill(0)
|
|
9
|
+
.map(() => wfv.waitValue()));
|
|
10
|
+
const results = vi.fn();
|
|
11
|
+
void promiseWaits.then(results);
|
|
12
|
+
await sleep(10);
|
|
13
|
+
expect(results).not.toHaveBeenCalled();
|
|
14
|
+
wfv.setValue(Option.None());
|
|
15
|
+
await sleep(10);
|
|
16
|
+
expect(results).not.toHaveBeenCalled();
|
|
17
|
+
wfv.setValue(Option.Some(undefined));
|
|
18
|
+
await sleep(10);
|
|
19
|
+
await promiseWaits;
|
|
20
|
+
expect(results).toHaveBeenCalledTimes(1);
|
|
21
|
+
expect(results).toHaveBeenCalledWith(Array(size).fill(undefined));
|
|
22
|
+
wfv.setValue(Option.Some(42));
|
|
23
|
+
const promiseWaits2 = Promise.all(Array(size)
|
|
24
|
+
.fill(0)
|
|
25
|
+
.map(() => wfv.waitValue())).then(results);
|
|
26
|
+
await sleep(10);
|
|
27
|
+
await promiseWaits2;
|
|
28
|
+
expect(results).toHaveBeenCalledTimes(2);
|
|
29
|
+
expect(results.mock.calls).toEqual([[Array(size).fill(undefined)], [Array(size).fill(42)]]);
|
|
30
|
+
wfv.init();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
it("waitFor object", async () => {
|
|
34
|
+
const wfv = new WaitingForValue();
|
|
35
|
+
const size = 10;
|
|
36
|
+
for (let i = 0; i < size; i++) {
|
|
37
|
+
const promiseWaits = Promise.all(Array(size)
|
|
38
|
+
.fill(0)
|
|
39
|
+
.map(() => wfv.waitValue()));
|
|
40
|
+
const results = vi.fn();
|
|
41
|
+
void promiseWaits.then(results);
|
|
42
|
+
await sleep(10);
|
|
43
|
+
expect(results).not.toHaveBeenCalled();
|
|
44
|
+
wfv.setValue(Option.None());
|
|
45
|
+
await sleep(10);
|
|
46
|
+
expect(results).not.toHaveBeenCalled();
|
|
47
|
+
wfv.setValue(Option.Some({ value: 0 }));
|
|
48
|
+
await sleep(10);
|
|
49
|
+
await promiseWaits;
|
|
50
|
+
expect(results).toHaveBeenCalledTimes(1);
|
|
51
|
+
expect(results).toHaveBeenCalledWith(Array(size).fill({ value: 0 }));
|
|
52
|
+
wfv.setValue(Option.Some({ value: 42 }));
|
|
53
|
+
const promiseWaits2 = Promise.all(Array(size)
|
|
54
|
+
.fill(0)
|
|
55
|
+
.map(() => wfv.waitValue())).then(results);
|
|
56
|
+
await sleep(10);
|
|
57
|
+
await promiseWaits2;
|
|
58
|
+
expect(results).toHaveBeenCalledTimes(2);
|
|
59
|
+
expect(results.mock.calls).toEqual([[Array(size).fill({ value: 0 })], [Array(size).fill({ value: 42 })]]);
|
|
60
|
+
wfv.init();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
it("waitFor preset value", async () => {
|
|
64
|
+
const wfv = new WaitingForValue({ presetValue: Option.Some(7) });
|
|
65
|
+
const size = 10;
|
|
66
|
+
const promiseWaits = Promise.all(Array(size)
|
|
67
|
+
.fill(0)
|
|
68
|
+
.map(() => wfv.waitValue()));
|
|
69
|
+
const results = vi.fn();
|
|
70
|
+
void promiseWaits.then(results);
|
|
71
|
+
await sleep(10);
|
|
72
|
+
await promiseWaits;
|
|
73
|
+
expect(results).toHaveBeenCalledTimes(1);
|
|
74
|
+
expect(results).toHaveBeenCalledWith(Array(size).fill(7));
|
|
75
|
+
wfv.setValue(Option.Some(42));
|
|
76
|
+
const promiseWaits2 = Promise.all(Array(size)
|
|
77
|
+
.fill(0)
|
|
78
|
+
.map(() => wfv.waitValue())).then(results);
|
|
79
|
+
await sleep(10);
|
|
80
|
+
await promiseWaits2;
|
|
81
|
+
expect(results).toHaveBeenCalledTimes(2);
|
|
82
|
+
expect(results.mock.calls).toEqual([[Array(size).fill(7)], [Array(size).fill(42)]]);
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=wait-for-value.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-for-value.test.js","sourceRoot":"","sources":["../../../src/wait-for-value.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -50,5 +50,8 @@ export * from "./utils/uint8array-equal.js";
|
|
|
50
50
|
export * from "./utils/coerce-uint8.js";
|
|
51
51
|
export * from "./utils/consume.js";
|
|
52
52
|
export * from "./utils/to-sorted.js";
|
|
53
|
+
export * from "./utils/relative-path.js";
|
|
53
54
|
|
|
54
55
|
export * from "./node-env/index.js";
|
|
56
|
+
export * from "./wait-for-value.js";
|
|
57
|
+
export * from "./is-json.js";
|
package/src/option.ts
CHANGED
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
28
|
export abstract class Option<T> {
|
|
29
|
-
static Some<T>(
|
|
30
|
-
return new Some(
|
|
29
|
+
static Some<T = void>(...args: T[]): Option<T> {
|
|
30
|
+
return args.length >= 1 ? new Some<T>(args[0]) : new Some<T>(undefined as unknown as T);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
static None<T>(): Option<T> {
|
package/src/resolve-once.ts
CHANGED
|
@@ -269,22 +269,6 @@ export class SyncResolveOnce<T, CTX> implements SyncOrAsyncIf<T> {
|
|
|
269
269
|
}
|
|
270
270
|
return this.#value as ResultOnce<RET>;
|
|
271
271
|
}
|
|
272
|
-
|
|
273
|
-
// /**
|
|
274
|
-
// * Resets the cached state, allowing the function to be executed again.
|
|
275
|
-
// *
|
|
276
|
-
// * @param fn - Optional function to execute immediately after reset
|
|
277
|
-
// * @returns The result if fn provided, undefined otherwise
|
|
278
|
-
// */
|
|
279
|
-
// reset(fn?: () => RET): T | undefined {
|
|
280
|
-
// this.#value = undefined;
|
|
281
|
-
// this.#error = undefined;
|
|
282
|
-
// if (fn) {
|
|
283
|
-
// this.#state.setProcessing();
|
|
284
|
-
// return this.resolve(fn);
|
|
285
|
-
// }
|
|
286
|
-
// return undefined as T;
|
|
287
|
-
// }
|
|
288
272
|
}
|
|
289
273
|
|
|
290
274
|
/**
|
|
@@ -488,20 +472,6 @@ export class AsyncResolveOnce<T, CTX> implements SyncOrAsyncIf<T> {
|
|
|
488
472
|
|
|
489
473
|
return this.#active().resolve(fn);
|
|
490
474
|
}
|
|
491
|
-
|
|
492
|
-
// /**
|
|
493
|
-
// * Resets the cached state, allowing the function to be executed again.
|
|
494
|
-
// *
|
|
495
|
-
// * @param fn - Optional function to execute immediately after reset
|
|
496
|
-
// * @returns The result if fn provided, undefined otherwise
|
|
497
|
-
// */
|
|
498
|
-
// reset(fn?: () => ResultOnce<T>): T {
|
|
499
|
-
// this.#state.setProcessing();
|
|
500
|
-
// if (fn) {
|
|
501
|
-
// return this.resolve(fn);
|
|
502
|
-
// }
|
|
503
|
-
// return undefined as T;
|
|
504
|
-
// }
|
|
505
475
|
}
|
|
506
476
|
|
|
507
477
|
/**
|
|
@@ -687,36 +657,12 @@ export class ResolveOnce<T, CTX = void> implements ResolveOnceIf<T, CTX> {
|
|
|
687
657
|
return this.#syncOrAsync.Unwrap().error;
|
|
688
658
|
}
|
|
689
659
|
|
|
690
|
-
// get state(): ResolveState {
|
|
691
|
-
// return this.#state;
|
|
692
|
-
// }
|
|
693
|
-
// set state(value: ResolveState) {
|
|
694
|
-
// console.log(`ResolveOnce.state ${this.#state} -> ${value}`);
|
|
695
|
-
// if (value === "processed") {
|
|
696
|
-
// if (this.resetAfterTimer) {
|
|
697
|
-
// clearTimeout(this.resetAfterTimer);
|
|
698
|
-
// }
|
|
699
|
-
// if (typeof this.#opts.resetAfter === "number" && this.#opts.resetAfter > 0) {
|
|
700
|
-
// console.log("setting reset timer for", this.#opts.resetAfter);
|
|
701
|
-
// this.resetAfterTimer = setTimeout(() => {
|
|
702
|
-
// console.log("resetting after", this.#opts.resetAfter);
|
|
703
|
-
// this.reset();
|
|
704
|
-
// }, this.#opts.resetAfter);
|
|
705
|
-
// }
|
|
706
|
-
// }
|
|
707
|
-
// this.#state = value;
|
|
708
|
-
// }
|
|
709
|
-
|
|
710
660
|
once<RET extends T | Promise<T>>(fn: (arg: OnceActionArg<T, CTX>) => RET): ResultOnce<RET> {
|
|
711
661
|
let resultFn: () => RET;
|
|
712
662
|
if (this.#state.isInitial()) {
|
|
713
663
|
const state = this.#state;
|
|
714
664
|
try {
|
|
715
665
|
state.setProcessing();
|
|
716
|
-
// let prev: T | undefined = undefined;
|
|
717
|
-
// if (this.#syncOrAsync.IsSome()) {
|
|
718
|
-
// prev = this.#syncOrAsync.Unwrap().value as T;
|
|
719
|
-
// }
|
|
720
666
|
const isSyncOrAsync = fn(this._onceArg);
|
|
721
667
|
if (isPromise(isSyncOrAsync)) {
|
|
722
668
|
this.#syncOrAsync = Option.Some(new AsyncResolveOnce<T, CTX>(this, state, this.#syncOrAsync));
|
|
@@ -806,11 +752,14 @@ export type AddKeyedParam<K, V, CTX extends NonNullable<object>> = Omit<KeyedNgO
|
|
|
806
752
|
*/
|
|
807
753
|
export type WithKey<X extends NonNullable<object>, K> = X & { readonly key: K };
|
|
808
754
|
|
|
755
|
+
// interface ResetFunc {
|
|
756
|
+
// reset(): void;
|
|
757
|
+
// }
|
|
809
758
|
/**
|
|
810
759
|
* Type helper that adds an optional reset method to a value type.
|
|
811
760
|
* @template V - The value type
|
|
812
761
|
*/
|
|
813
|
-
export type WithOptionalReset<V> = V
|
|
762
|
+
// export type WithOptionalReset<V> = V extends ResetFunc ? V & ResetFunc : V;
|
|
814
763
|
|
|
815
764
|
/**
|
|
816
765
|
* Represents an item in a KeyedResolvOnce collection with its resolved result.
|
|
@@ -824,7 +773,7 @@ export interface KeyedResolveOnceItem<K, T, CTX extends NonNullable<object>> {
|
|
|
824
773
|
/** The resolved value wrapped in a Result (Ok or Err) */
|
|
825
774
|
readonly value: Result<T>;
|
|
826
775
|
/** The complete KeyedNgItem containing metadata */
|
|
827
|
-
readonly item: KeyedNgItem<K, ResolveOnce<
|
|
776
|
+
readonly item: KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
|
|
828
777
|
}
|
|
829
778
|
|
|
830
779
|
/**
|
|
@@ -873,10 +822,12 @@ export interface KeyedResolveOnceItem<K, T, CTX extends NonNullable<object>> {
|
|
|
873
822
|
* ```
|
|
874
823
|
*/
|
|
875
824
|
export class KeyedResolvOnce<
|
|
876
|
-
T
|
|
825
|
+
T,
|
|
826
|
+
//export type WithOptionalReset<V> = V extends ResetFunc ? V & ResetFunc : V;
|
|
827
|
+
// WithOptionalReset<PT>,
|
|
877
828
|
K = string,
|
|
878
829
|
CTX extends NonNullable<object> = object,
|
|
879
|
-
PT =
|
|
830
|
+
// PT = unknown,
|
|
880
831
|
> implements Omit<
|
|
881
832
|
// KeyedIf<ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, WithOptionalReset<T>, K>
|
|
882
833
|
KeyedIf<
|
|
@@ -888,7 +839,7 @@ export class KeyedResolvOnce<
|
|
|
888
839
|
"entries" | "forEach" | "onSet" | "onDelete" | "values" | "setParam"
|
|
889
840
|
> {
|
|
890
841
|
/** @internal */
|
|
891
|
-
readonly _keyed: KeyedNg<K, ResolveOnce<
|
|
842
|
+
readonly _keyed: KeyedNg<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>;
|
|
892
843
|
|
|
893
844
|
/**
|
|
894
845
|
* Creates a new KeyedResolvOnce instance.
|
|
@@ -896,7 +847,7 @@ export class KeyedResolvOnce<
|
|
|
896
847
|
* @param kp - Configuration options (key2string, ctx, lru)
|
|
897
848
|
*/
|
|
898
849
|
constructor(kp: Partial<AddKeyedParam<K, T, CTX>> = {}) {
|
|
899
|
-
this._keyed = new KeyedNg({
|
|
850
|
+
this._keyed = new KeyedNg<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>({
|
|
900
851
|
createValue: (
|
|
901
852
|
item: KeyedNgItem<K, ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>>, CTX>,
|
|
902
853
|
): ResolveOnce<T, KeyedNgItemWithoutValue<K, CTX>> => {
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Future } from "./future.js";
|
|
2
|
+
import { Option } from "./option.js";
|
|
3
|
+
import { ResolveOnce } from "./resolve-once.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Configuration options for WaitingForValue.
|
|
7
|
+
*/
|
|
8
|
+
export interface WaitingForValueProps<T> {
|
|
9
|
+
/**
|
|
10
|
+
* Optional preset value to initialize the WaitingForValue with.
|
|
11
|
+
* If provided and Some, the value is immediately available.
|
|
12
|
+
*/
|
|
13
|
+
readonly presetValue?: Option<T>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A utility for managing a value that may not be immediately available.
|
|
18
|
+
* Allows multiple callers to await the same value efficiently, with all
|
|
19
|
+
* waiters resolved when the value becomes available.
|
|
20
|
+
*
|
|
21
|
+
* @template T - The type of value being waited for
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const waiting = new WaitingForValue<string>();
|
|
26
|
+
*
|
|
27
|
+
* // Multiple callers can await the value
|
|
28
|
+
* const promise1 = waiting.waitValue();
|
|
29
|
+
* const promise2 = waiting.waitValue();
|
|
30
|
+
*
|
|
31
|
+
* // Set the value - all waiters are resolved
|
|
32
|
+
* waiting.setValue(Option.Some("hello"));
|
|
33
|
+
*
|
|
34
|
+
* // Both promises resolve to "hello"
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export class WaitingForValue<T = void> {
|
|
38
|
+
#value!: Option<T>;
|
|
39
|
+
#waitFuture?: Future<T>;
|
|
40
|
+
#waitValue!: () => Promise<T>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new WaitingForValue instance.
|
|
44
|
+
*
|
|
45
|
+
* @param opts - Configuration options
|
|
46
|
+
*/
|
|
47
|
+
constructor(opts: WaitingForValueProps<T> = {}) {
|
|
48
|
+
this.init(opts.presetValue);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Initializes or reinitializes the WaitingForValue with an optional preset value.
|
|
53
|
+
* If a preset value is provided and is Some, the value is immediately available.
|
|
54
|
+
* Otherwise, sets up the waiting mechanism for future value resolution.
|
|
55
|
+
*
|
|
56
|
+
* @param presetValue - Optional initial value
|
|
57
|
+
*/
|
|
58
|
+
init(presetValue: Option<T> = Option.None()): void {
|
|
59
|
+
this.#value = presetValue;
|
|
60
|
+
if (this.#value.IsSome()) {
|
|
61
|
+
return this.setValue(this.#value);
|
|
62
|
+
}
|
|
63
|
+
const myFuture = (this.#waitFuture = new Future<T>());
|
|
64
|
+
const resolveOnce = new ResolveOnce<T>();
|
|
65
|
+
this.#waitValue = (): Promise<T> => resolveOnce.once(async () => myFuture.asPromise());
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Sets the value and resolves all pending waiters.
|
|
70
|
+
* If called when no value exists, resolves the waiting Future.
|
|
71
|
+
* If called when a value already exists, updates the value and resets the waiting mechanism.
|
|
72
|
+
* Does nothing if the provided value is None.
|
|
73
|
+
*
|
|
74
|
+
* @param value - The value to set (wrapped in Option)
|
|
75
|
+
*/
|
|
76
|
+
setValue(value: Option<T>): void {
|
|
77
|
+
if (value.IsNone()) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
switch (true) {
|
|
81
|
+
case this.#value.IsNone():
|
|
82
|
+
// need to resolve waiters
|
|
83
|
+
this.#value = value;
|
|
84
|
+
this.#waitFuture?.resolve(value.unwrap());
|
|
85
|
+
break;
|
|
86
|
+
case this.#value.IsSome(): {
|
|
87
|
+
this.#value = value;
|
|
88
|
+
this.#waitFuture = undefined;
|
|
89
|
+
const resolveOnce = new ResolveOnce<T>();
|
|
90
|
+
this.#waitValue = (): Promise<T> => resolveOnce.once(() => Promise.resolve(value.unwrap()));
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Returns a promise that resolves when the value becomes available.
|
|
98
|
+
* If the value is already set, returns a promise that resolves immediately.
|
|
99
|
+
* Multiple calls to this method are safe and efficient - all callers share
|
|
100
|
+
* the same resolution logic thanks to ResolveOnce.
|
|
101
|
+
*
|
|
102
|
+
* @returns A promise that resolves to the value
|
|
103
|
+
*/
|
|
104
|
+
waitValue(): Promise<T> {
|
|
105
|
+
return this.#waitValue();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
value(): Option<T> {
|
|
109
|
+
return this.#value;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -2,32 +2,31 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const index_js_1 = require("./web-env/index.js");
|
|
4
4
|
const index_js_2 = require("./cf-env/index.js");
|
|
5
|
-
const runtime_js_1 = require("./runtime.js");
|
|
6
|
-
const sys_abstraction_js_1 = require("./sys-abstraction.js");
|
|
7
5
|
const index_js_3 = require("./node-env/index.js");
|
|
8
6
|
const index_js_4 = require("./deno-env/index.js");
|
|
9
7
|
const vitest_1 = require("vitest");
|
|
8
|
+
const cement_1 = require("@adviser/cement");
|
|
10
9
|
const add_cement_do_not_export_js_1 = require("./add-cement-do-not-export.js");
|
|
11
10
|
const abstractions = [];
|
|
12
|
-
if ((0,
|
|
11
|
+
if ((0, cement_1.runtimeFn)().isCFWorker) {
|
|
13
12
|
abstractions.push({
|
|
14
13
|
name: "CFSysAbstraction",
|
|
15
14
|
fn: (a) => (0, index_js_2.CFBasicSysAbstraction)((0, add_cement_do_not_export_js_1.addCement)(a)),
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
|
-
if ((0,
|
|
17
|
+
if ((0, cement_1.runtimeFn)().isNodeIsh) {
|
|
19
18
|
abstractions.push({
|
|
20
19
|
name: "NodeSysAbstraction",
|
|
21
20
|
fn: (a) => (0, index_js_3.NodeBasicSysAbstraction)((0, add_cement_do_not_export_js_1.addCement)(a)),
|
|
22
21
|
});
|
|
23
22
|
}
|
|
24
|
-
if ((0,
|
|
23
|
+
if ((0, cement_1.runtimeFn)().isDeno) {
|
|
25
24
|
abstractions.push({
|
|
26
25
|
name: "DenoSysAbstraction",
|
|
27
26
|
fn: (a) => (0, index_js_4.DenoBasicSysAbstraction)((0, add_cement_do_not_export_js_1.addCement)(a)),
|
|
28
27
|
});
|
|
29
28
|
}
|
|
30
|
-
if ((0,
|
|
29
|
+
if ((0, cement_1.runtimeFn)().isBrowser) {
|
|
31
30
|
abstractions.push({
|
|
32
31
|
name: "WebSysAbstraction",
|
|
33
32
|
fn: (a) => (0, index_js_1.WebBasicSysAbstraction)((0, add_cement_do_not_export_js_1.addCement)(a)),
|
|
@@ -42,20 +41,20 @@ for (const abstraction of abstractions) {
|
|
|
42
41
|
(0, vitest_1.expect)(id1).not.toEqual(id2);
|
|
43
42
|
});
|
|
44
43
|
(0, vitest_1.it)("IdService explict UUID", () => {
|
|
45
|
-
const sys = abstraction.fn({ IdMode:
|
|
44
|
+
const sys = abstraction.fn({ IdMode: cement_1.IDMode.UUID });
|
|
46
45
|
const id1 = sys.NextId();
|
|
47
46
|
const id2 = sys.NextId();
|
|
48
47
|
(0, vitest_1.expect)(id1).not.toEqual(id2);
|
|
49
48
|
});
|
|
50
49
|
(0, vitest_1.it)("IdService const", () => {
|
|
51
|
-
const sys = abstraction.fn({ IdMode:
|
|
50
|
+
const sys = abstraction.fn({ IdMode: cement_1.IDMode.CONST });
|
|
52
51
|
const id1 = sys.NextId();
|
|
53
52
|
const id2 = sys.NextId();
|
|
54
53
|
(0, vitest_1.expect)(id1).toEqual(id2);
|
|
55
54
|
});
|
|
56
55
|
(0, vitest_1.it)("IdService set", () => {
|
|
57
56
|
for (let i = 0; i < 10; i++) {
|
|
58
|
-
const sys = abstraction.fn({ IdMode:
|
|
57
|
+
const sys = abstraction.fn({ IdMode: cement_1.IDMode.STEP });
|
|
59
58
|
const id1 = sys.NextId();
|
|
60
59
|
const id2 = sys.NextId();
|
|
61
60
|
(0, vitest_1.expect)(id1).toEqual("STEPId-0");
|
|
@@ -69,25 +68,25 @@ for (const abstraction of abstractions) {
|
|
|
69
68
|
(0, vitest_1.expect)(sys.Time().TimeSince(start)).toBeGreaterThan(90);
|
|
70
69
|
});
|
|
71
70
|
(0, vitest_1.it)("time sleep const", async () => {
|
|
72
|
-
const sys = abstraction.fn({ TimeMode:
|
|
71
|
+
const sys = abstraction.fn({ TimeMode: cement_1.TimeMode.REAL });
|
|
73
72
|
const start = new Date();
|
|
74
73
|
await sys.Time().Sleep(100);
|
|
75
74
|
const end = new Date();
|
|
76
75
|
(0, vitest_1.expect)(end.getTime() - start.getTime()).toBeGreaterThan(90);
|
|
77
76
|
});
|
|
78
77
|
(0, vitest_1.it)("time sleep step", async () => {
|
|
79
|
-
const sys = abstraction.fn({ TimeMode:
|
|
78
|
+
const sys = abstraction.fn({ TimeMode: cement_1.TimeMode.STEP });
|
|
80
79
|
const start = sys.Time().Now();
|
|
81
80
|
await sys.Time().Sleep(86400500);
|
|
82
81
|
(0, vitest_1.expect)(sys.Time().Now().getTime() - start.getTime()).toEqual(86401500);
|
|
83
82
|
});
|
|
84
83
|
(0, vitest_1.it)("const random", () => {
|
|
85
|
-
const sys = abstraction.fn({ RandomMode:
|
|
84
|
+
const sys = abstraction.fn({ RandomMode: cement_1.RandomMode.CONST });
|
|
86
85
|
(0, vitest_1.expect)(sys.Random0ToValue(10)).toEqual(5);
|
|
87
86
|
(0, vitest_1.expect)(sys.Random0ToValue(10)).toEqual(5);
|
|
88
87
|
});
|
|
89
88
|
(0, vitest_1.it)("step random", () => {
|
|
90
|
-
const sys = abstraction.fn({ RandomMode:
|
|
89
|
+
const sys = abstraction.fn({ RandomMode: cement_1.RandomMode.STEP });
|
|
91
90
|
(0, vitest_1.expect)(sys.Random0ToValue(10000)).toEqual(1);
|
|
92
91
|
(0, vitest_1.expect)(sys.Random0ToValue(10000)).toEqual(2);
|
|
93
92
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-basic-sys-abstraction.test.js","sourceRoot":"","sources":["../../../src/base-basic-sys-abstraction.test.ts"],"names":[],"mappings":";;AAAA,iDAA4D;AAC5D,gDAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"base-basic-sys-abstraction.test.js","sourceRoot":"","sources":["../../../src/base-basic-sys-abstraction.test.ts"],"names":[],"mappings":"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"}
|
package/ts/cjs/bin2text.test.js
CHANGED
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const cement_1 = require("@adviser/cement");
|
|
5
|
+
(0, vitest_1.it)("bin2hex empty", () => {
|
|
6
|
+
(0, vitest_1.expect)((0, cement_1.bin2string)(new Uint8Array())).toEqual("");
|
|
6
7
|
});
|
|
7
|
-
it("bin2hex one", () => {
|
|
8
|
-
expect((0,
|
|
8
|
+
(0, vitest_1.it)("bin2hex one", () => {
|
|
9
|
+
(0, vitest_1.expect)((0, cement_1.bin2string)(new Uint8Array([64]))).toBe("0000 40 @");
|
|
9
10
|
});
|
|
10
|
-
it("bin2hex 12", () => {
|
|
11
|
+
(0, vitest_1.it)("bin2hex 12", () => {
|
|
11
12
|
const collector = [];
|
|
12
|
-
(0,
|
|
13
|
+
(0, cement_1.bin2text)(new Uint8Array([1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc]), (line) => {
|
|
13
14
|
collector.push(line);
|
|
14
15
|
});
|
|
15
|
-
expect(collector).toEqual(["0000 01 02 03 04 04 05 06 07 08 09 0a 0b 0c ............."]);
|
|
16
|
+
(0, vitest_1.expect)(collector).toEqual(["0000 01 02 03 04 04 05 06 07 08 09 0a 0b 0c ............."]);
|
|
16
17
|
});
|
|
17
|
-
it("bin2hex cut", () => {
|
|
18
|
+
(0, vitest_1.it)("bin2hex cut", () => {
|
|
18
19
|
const collector = [];
|
|
19
|
-
(0,
|
|
20
|
+
(0, cement_1.bin2text)(new Uint8Array(new Array(255).fill(1).map((_, i) => i)), (line) => {
|
|
20
21
|
collector.push(line);
|
|
21
22
|
}, 52);
|
|
22
|
-
expect(collector).toEqual([
|
|
23
|
+
(0, vitest_1.expect)(collector).toEqual([
|
|
23
24
|
"0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",
|
|
24
25
|
"0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",
|
|
25
26
|
"0020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !\"#$%&'()*+,-./",
|
|
26
27
|
"00f0>>f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ...............",
|
|
27
28
|
]);
|
|
28
29
|
});
|
|
29
|
-
it("bin2hex long", () => {
|
|
30
|
+
(0, vitest_1.it)("bin2hex long", () => {
|
|
30
31
|
const collector = [];
|
|
31
|
-
(0,
|
|
32
|
+
(0, cement_1.bin2text)(new Uint8Array(new Array(256).fill(1).map((_, i) => i % 0xff)), (line) => {
|
|
32
33
|
collector.push(line);
|
|
33
34
|
});
|
|
34
|
-
expect(collector).toEqual([
|
|
35
|
+
(0, vitest_1.expect)(collector).toEqual([
|
|
35
36
|
"0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................",
|
|
36
37
|
"0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................",
|
|
37
38
|
"0020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !\"#$%&'()*+,-./",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin2text.test.js","sourceRoot":"","sources":["../../../src/bin2text.test.ts"],"names":[],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"bin2text.test.js","sourceRoot":"","sources":["../../../src/bin2text.test.ts"],"names":[],"mappings":";;AAAA,mCAAoC;AACpC,4CAAuD;AAEvD,IAAA,WAAE,EAAC,eAAe,EAAE,GAAG,EAAE,CAAC;IACxB,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAAA,CAClD,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,aAAa,EAAE,GAAG,EAAE,CAAC;IACtB,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;AAAA,CAC1G,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,YAAY,EAAE,GAAG,EAAE,CAAC;IACrB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,iBAAQ,EAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAChF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,CAAC,CAAC;IACH,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC;AAAA,CACpG,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,aAAa,EAAE,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,iBAAQ,EACN,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACvD,CAAC,IAAI,EAAE,EAAE,CAAC;QACR,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,EACD,EAAE,CACH,CAAC;IACF,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QACxB,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;KACxE,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,IAAA,WAAE,EAAC,cAAc,EAAE,GAAG,EAAE,CAAC;IACvB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAA,iBAAQ,EAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACjF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACtB,CAAC,CAAC;IACH,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QACxB,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;KACzE,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}
|