@graphrefly/graphrefly 0.47.2 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base/composition/index.cjs +4 -3
- package/dist/base/composition/index.cjs.map +1 -1
- package/dist/base/composition/index.d.cts +14 -5
- package/dist/base/composition/index.d.ts +14 -5
- package/dist/base/composition/index.js +8 -8
- package/dist/base/index.cjs +152 -78
- package/dist/base/index.cjs.map +1 -1
- package/dist/base/index.d.cts +2 -2
- package/dist/base/index.d.ts +2 -2
- package/dist/base/index.js +75 -70
- package/dist/base/io/index.cjs +31 -17
- package/dist/base/io/index.cjs.map +1 -1
- package/dist/base/io/index.d.cts +32 -5
- package/dist/base/io/index.d.ts +32 -5
- package/dist/base/io/index.js +1 -1
- package/dist/base/mutation/index.cjs +21 -0
- package/dist/base/mutation/index.cjs.map +1 -1
- package/dist/base/mutation/index.d.cts +23 -1
- package/dist/base/mutation/index.d.ts +23 -1
- package/dist/base/mutation/index.js +3 -1
- package/dist/base/sources/browser/index.cjs +5 -3
- package/dist/base/sources/browser/index.cjs.map +1 -1
- package/dist/base/sources/browser/index.d.cts +20 -2
- package/dist/base/sources/browser/index.d.ts +20 -2
- package/dist/base/sources/browser/index.js +5 -3
- package/dist/base/sources/browser/index.js.map +1 -1
- package/dist/base/sources/event/index.cjs +28 -0
- package/dist/base/sources/event/index.cjs.map +1 -1
- package/dist/base/sources/event/index.d.cts +67 -3
- package/dist/base/sources/event/index.d.ts +67 -3
- package/dist/base/sources/event/index.js +4 -1
- package/dist/base/sources/index.cjs +75 -37
- package/dist/base/sources/index.cjs.map +1 -1
- package/dist/base/sources/index.d.cts +1 -1
- package/dist/base/sources/index.d.ts +1 -1
- package/dist/base/sources/index.js +5 -2
- package/dist/{chunk-R6ZCSXKX.js → chunk-23MAWVOJ.js} +3 -3
- package/dist/{chunk-MS3WPRJR.js → chunk-3REMCHSS.js} +6 -6
- package/dist/chunk-3REMCHSS.js.map +1 -0
- package/dist/{chunk-CEVNQ74M.js → chunk-3YGXPUHW.js} +2 -2
- package/dist/{chunk-CEVNQ74M.js.map → chunk-3YGXPUHW.js.map} +1 -1
- package/dist/{chunk-6ZLCPUXS.js → chunk-46X2EFQH.js} +15 -4
- package/dist/chunk-46X2EFQH.js.map +1 -0
- package/dist/{chunk-NY2PYHNC.js → chunk-5UY3PNFY.js} +12 -5
- package/dist/chunk-5UY3PNFY.js.map +1 -0
- package/dist/{chunk-FQSQONOU.js → chunk-65OM4XLQ.js} +49 -3
- package/dist/chunk-65OM4XLQ.js.map +1 -0
- package/dist/{chunk-3PSLNJDU.js → chunk-6DQYBIHW.js} +314 -49
- package/dist/chunk-6DQYBIHW.js.map +1 -0
- package/dist/{chunk-LDCSZ72P.js → chunk-6YBER5UP.js} +3 -3
- package/dist/{chunk-LDCSZ72P.js.map → chunk-6YBER5UP.js.map} +1 -1
- package/dist/{chunk-3O3NKZJW.js → chunk-7T7WLEPM.js} +24 -3
- package/dist/chunk-7T7WLEPM.js.map +1 -0
- package/dist/{chunk-PKPO3JTZ.js → chunk-AQAKDE7F.js} +29 -11
- package/dist/chunk-AQAKDE7F.js.map +1 -0
- package/dist/{chunk-6MRSX3YK.js → chunk-B5Y5GPD5.js} +2 -2
- package/dist/{chunk-BXGZFGZ4.js → chunk-C5QD5DQX.js} +22 -1
- package/dist/chunk-C5QD5DQX.js.map +1 -0
- package/dist/{chunk-4XCHZRUJ.js → chunk-D5YGR4TP.js} +58 -7
- package/dist/chunk-D5YGR4TP.js.map +1 -0
- package/dist/{chunk-NPRP3MCV.js → chunk-DHDCOOJU.js} +2 -2
- package/dist/chunk-DHDCOOJU.js.map +1 -0
- package/dist/{chunk-VP3TIUDF.js → chunk-DVTDF5OI.js} +2 -2
- package/dist/{chunk-OXD5LFQP.js → chunk-G7H6PN7P.js} +2 -2
- package/dist/{chunk-EL5VHUGK.js → chunk-GGKHHG5Y.js} +32 -18
- package/dist/chunk-GGKHHG5Y.js.map +1 -0
- package/dist/{chunk-446I4EGD.js → chunk-J5TBZFBD.js} +2 -2
- package/dist/{chunk-7AVQIGF6.js → chunk-K4ZYJ4EM.js} +554 -460
- package/dist/chunk-K4ZYJ4EM.js.map +1 -0
- package/dist/{chunk-QFE5BQH7.js → chunk-LTSI7ULC.js} +2 -2
- package/dist/{chunk-5GVURVIG.js → chunk-MMHGYX44.js} +12 -2
- package/dist/{chunk-5GVURVIG.js.map → chunk-MMHGYX44.js.map} +1 -1
- package/dist/{chunk-KRFGO5QH.js → chunk-MQMTRKY3.js} +118 -43
- package/dist/chunk-MQMTRKY3.js.map +1 -0
- package/dist/{chunk-42FQ27MQ.js → chunk-MTODGQBR.js} +44 -179
- package/dist/chunk-MTODGQBR.js.map +1 -0
- package/dist/{chunk-FVINAAKA.js → chunk-NBK6QQMG.js} +14 -13
- package/dist/{chunk-FVINAAKA.js.map → chunk-NBK6QQMG.js.map} +1 -1
- package/dist/{chunk-KNU73RZW.js → chunk-NSA5K5G2.js} +2 -2
- package/dist/{chunk-MLTPJMH6.js → chunk-QQYULEZL.js} +2 -2
- package/dist/chunk-QSW4DFKE.js +31 -0
- package/dist/chunk-QSW4DFKE.js.map +1 -0
- package/dist/{chunk-VAZXUK6G.js → chunk-SUNCHMML.js} +2 -2
- package/dist/{chunk-EP4WVQLX.js → chunk-T2U6N3FV.js} +6 -6
- package/dist/{chunk-T7SP3EYR.js → chunk-T5URUIIY.js} +33 -24
- package/dist/chunk-T5URUIIY.js.map +1 -0
- package/dist/{chunk-VNXAF2KE.js → chunk-TPTZZV25.js} +6 -6
- package/dist/chunk-TPTZZV25.js.map +1 -0
- package/dist/{chunk-IOJDYUA7.js → chunk-V46JWFGV.js} +6 -5
- package/dist/chunk-V46JWFGV.js.map +1 -0
- package/dist/{chunk-WGDEBIP4.js → chunk-X6ESZDR6.js} +5 -6
- package/dist/chunk-X6ESZDR6.js.map +1 -0
- package/dist/{chunk-N65E26UL.js → chunk-XEWV254I.js} +2 -2
- package/dist/{chunk-N65E26UL.js.map → chunk-XEWV254I.js.map} +1 -1
- package/dist/{chunk-PTWADEH3.js → chunk-YBJVKMTM.js} +34 -14
- package/dist/chunk-YBJVKMTM.js.map +1 -0
- package/dist/{chunk-DDTS7F5O.js → chunk-ZW32BPXV.js} +12 -3
- package/dist/chunk-ZW32BPXV.js.map +1 -0
- package/dist/compat/index.cjs +51 -4
- package/dist/compat/index.cjs.map +1 -1
- package/dist/compat/index.d.cts +1 -1
- package/dist/compat/index.d.ts +1 -1
- package/dist/compat/index.js +6 -6
- package/dist/compat/nestjs/index.cjs +51 -4
- package/dist/compat/nestjs/index.cjs.map +1 -1
- package/dist/compat/nestjs/index.d.cts +1 -1
- package/dist/compat/nestjs/index.d.ts +1 -1
- package/dist/compat/nestjs/index.js +3 -3
- package/dist/{fallback-Bx46zqky.d.cts → fallback-BROR6ZhO.d.cts} +1 -1
- package/dist/{fallback-pIWW8A2d.d.ts → fallback-DO80aM_3.d.ts} +1 -1
- package/dist/{index-B_p8tnvf.d.cts → index-D1z3XcF9.d.cts} +1 -0
- package/dist/{index-_HDSmPyp.d.ts → index-DZ6yua0Q.d.ts} +1 -0
- package/dist/index.cjs +2215 -1676
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +169 -146
- package/dist/index.js.map +1 -1
- package/dist/presets/ai/index.cjs +46 -0
- package/dist/presets/ai/index.cjs.map +1 -1
- package/dist/presets/ai/index.js +12 -12
- package/dist/presets/harness/index.cjs +130 -18
- package/dist/presets/harness/index.cjs.map +1 -1
- package/dist/presets/harness/index.d.cts +15 -5
- package/dist/presets/harness/index.d.ts +15 -5
- package/dist/presets/harness/index.js +22 -22
- package/dist/presets/index.cjs +222 -53
- package/dist/presets/index.cjs.map +1 -1
- package/dist/presets/index.d.cts +2 -2
- package/dist/presets/index.d.ts +2 -2
- package/dist/presets/index.js +45 -45
- package/dist/presets/inspect/index.cjs +63 -14
- package/dist/presets/inspect/index.cjs.map +1 -1
- package/dist/presets/inspect/index.d.cts +1 -1
- package/dist/presets/inspect/index.d.ts +1 -1
- package/dist/presets/inspect/index.js +6 -6
- package/dist/presets/resilience/index.cjs +29 -21
- package/dist/presets/resilience/index.cjs.map +1 -1
- package/dist/presets/resilience/index.d.cts +12 -8
- package/dist/presets/resilience/index.d.ts +12 -8
- package/dist/presets/resilience/index.js +3 -3
- package/dist/{rate-limiter-DpVbSYdH.d.cts → rate-limiter-DC26FM8J.d.cts} +10 -1
- package/dist/{rate-limiter-CEALq4N1.d.ts → rate-limiter-DyWpwpQP.d.ts} +10 -1
- package/dist/{reactive-layout-fswlBUvX.d.ts → reactive-layout-BBBWH0V_.d.cts} +85 -4
- package/dist/{reactive-layout-fswlBUvX.d.cts → reactive-layout-BBBWH0V_.d.ts} +85 -4
- package/dist/solutions/index.cjs +168 -47
- package/dist/solutions/index.cjs.map +1 -1
- package/dist/solutions/index.d.cts +2 -2
- package/dist/solutions/index.d.ts +2 -2
- package/dist/solutions/index.js +28 -28
- package/dist/{spawnable-5mDY501F.d.cts → spawnable-B2IlW60f.d.cts} +23 -2
- package/dist/{spawnable-D3lR0oQu.d.ts → spawnable-tttFz2Nh.d.ts} +23 -2
- package/dist/testing/index.cjs +94 -0
- package/dist/testing/index.cjs.map +1 -0
- package/dist/testing/index.d.cts +59 -0
- package/dist/testing/index.d.ts +59 -0
- package/dist/testing/index.js +73 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/utils/ai/browser.cjs.map +1 -1
- package/dist/utils/ai/browser.d.cts +2 -2
- package/dist/utils/ai/browser.d.ts +2 -2
- package/dist/utils/ai/browser.js +6 -6
- package/dist/utils/ai/browser.js.map +1 -1
- package/dist/utils/ai/index.cjs +250 -166
- package/dist/utils/ai/index.cjs.map +1 -1
- package/dist/utils/ai/index.d.cts +108 -12
- package/dist/utils/ai/index.d.ts +108 -12
- package/dist/utils/ai/index.js +21 -19
- package/dist/utils/ai/node.cjs.map +1 -1
- package/dist/utils/ai/node.d.cts +5 -5
- package/dist/utils/ai/node.d.ts +5 -5
- package/dist/utils/ai/node.js +2 -2
- package/dist/utils/ai/node.js.map +1 -1
- package/dist/utils/cqrs/index.cjs +29 -3
- package/dist/utils/cqrs/index.cjs.map +1 -1
- package/dist/utils/cqrs/index.d.cts +12 -7
- package/dist/utils/cqrs/index.d.ts +12 -7
- package/dist/utils/cqrs/index.js +2 -2
- package/dist/utils/demo-shell/index.cjs +45 -19
- package/dist/utils/demo-shell/index.cjs.map +1 -1
- package/dist/utils/demo-shell/index.d.cts +1 -1
- package/dist/utils/demo-shell/index.d.ts +1 -1
- package/dist/utils/demo-shell/index.js +2 -2
- package/dist/utils/domain-templates/index.cjs.map +1 -1
- package/dist/utils/domain-templates/index.js +3 -3
- package/dist/utils/graphspec/index.cjs.map +1 -1
- package/dist/utils/graphspec/index.js +3 -3
- package/dist/utils/index.cjs +1642 -1225
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +7 -7
- package/dist/utils/index.d.ts +7 -7
- package/dist/utils/index.js +72 -54
- package/dist/utils/inspect/index.cjs +52 -4
- package/dist/utils/inspect/index.cjs.map +1 -1
- package/dist/utils/inspect/index.d.cts +32 -3
- package/dist/utils/inspect/index.d.ts +32 -3
- package/dist/utils/inspect/index.js +4 -4
- package/dist/utils/job-queue/index.cjs +46 -9
- package/dist/utils/job-queue/index.cjs.map +1 -1
- package/dist/utils/job-queue/index.d.cts +33 -3
- package/dist/utils/job-queue/index.d.ts +33 -3
- package/dist/utils/job-queue/index.js +2 -2
- package/dist/utils/memory/index.cjs +556 -462
- package/dist/utils/memory/index.cjs.map +1 -1
- package/dist/utils/memory/index.d.cts +203 -24
- package/dist/utils/memory/index.d.ts +203 -24
- package/dist/utils/memory/index.js +10 -2
- package/dist/utils/messaging/index.cjs.map +1 -1
- package/dist/utils/messaging/index.d.cts +4 -3
- package/dist/utils/messaging/index.d.ts +4 -3
- package/dist/utils/messaging/index.js +2 -2
- package/dist/utils/orchestration/index.cjs +9 -0
- package/dist/utils/orchestration/index.cjs.map +1 -1
- package/dist/utils/orchestration/index.js +3 -3
- package/dist/utils/process/index.cjs +32 -2
- package/dist/utils/process/index.cjs.map +1 -1
- package/dist/utils/process/index.d.cts +4 -3
- package/dist/utils/process/index.d.ts +4 -3
- package/dist/utils/process/index.js +2 -2
- package/dist/utils/reactive-layout/index.cjs +184 -55
- package/dist/utils/reactive-layout/index.cjs.map +1 -1
- package/dist/utils/reactive-layout/index.d.cts +128 -3
- package/dist/utils/reactive-layout/index.d.ts +128 -3
- package/dist/utils/reactive-layout/index.js +16 -8
- package/dist/utils/reduction/index.cjs.map +1 -1
- package/dist/utils/reduction/index.js +2 -2
- package/dist/utils/resilience/index.cjs +29 -20
- package/dist/utils/resilience/index.cjs.map +1 -1
- package/dist/utils/resilience/index.d.cts +1 -1
- package/dist/utils/resilience/index.d.ts +1 -1
- package/dist/utils/resilience/index.js +2 -2
- package/dist/utils/surface/index.cjs.map +1 -1
- package/dist/utils/surface/index.js +4 -4
- package/package.json +15 -3
- package/dist/chunk-3O3NKZJW.js.map +0 -1
- package/dist/chunk-3PSLNJDU.js.map +0 -1
- package/dist/chunk-42FQ27MQ.js.map +0 -1
- package/dist/chunk-4XCHZRUJ.js.map +0 -1
- package/dist/chunk-6ZLCPUXS.js.map +0 -1
- package/dist/chunk-7AVQIGF6.js.map +0 -1
- package/dist/chunk-BXGZFGZ4.js.map +0 -1
- package/dist/chunk-DDTS7F5O.js.map +0 -1
- package/dist/chunk-EL5VHUGK.js.map +0 -1
- package/dist/chunk-FQSQONOU.js.map +0 -1
- package/dist/chunk-IOJDYUA7.js.map +0 -1
- package/dist/chunk-KRFGO5QH.js.map +0 -1
- package/dist/chunk-MS3WPRJR.js.map +0 -1
- package/dist/chunk-NPRP3MCV.js.map +0 -1
- package/dist/chunk-NY2PYHNC.js.map +0 -1
- package/dist/chunk-PKPO3JTZ.js.map +0 -1
- package/dist/chunk-PTWADEH3.js.map +0 -1
- package/dist/chunk-T7SP3EYR.js.map +0 -1
- package/dist/chunk-VNXAF2KE.js.map +0 -1
- package/dist/chunk-W2BOPXTI.js +0 -1
- package/dist/chunk-W2BOPXTI.js.map +0 -1
- package/dist/chunk-WGDEBIP4.js.map +0 -1
- /package/dist/{chunk-R6ZCSXKX.js.map → chunk-23MAWVOJ.js.map} +0 -0
- /package/dist/{chunk-6MRSX3YK.js.map → chunk-B5Y5GPD5.js.map} +0 -0
- /package/dist/{chunk-VP3TIUDF.js.map → chunk-DVTDF5OI.js.map} +0 -0
- /package/dist/{chunk-OXD5LFQP.js.map → chunk-G7H6PN7P.js.map} +0 -0
- /package/dist/{chunk-446I4EGD.js.map → chunk-J5TBZFBD.js.map} +0 -0
- /package/dist/{chunk-QFE5BQH7.js.map → chunk-LTSI7ULC.js.map} +0 -0
- /package/dist/{chunk-KNU73RZW.js.map → chunk-NSA5K5G2.js.map} +0 -0
- /package/dist/{chunk-MLTPJMH6.js.map → chunk-QQYULEZL.js.map} +0 -0
- /package/dist/{chunk-VAZXUK6G.js.map → chunk-SUNCHMML.js.map} +0 -0
- /package/dist/{chunk-EP4WVQLX.js.map → chunk-T2U6N3FV.js.map} +0 -0
|
@@ -419,11 +419,20 @@ declare function singleFromAny<K, T>(factory: (key: K) => NodeInput<T>, opts?: S
|
|
|
419
419
|
/**
|
|
420
420
|
* Reactive variant: returns a bound callable that hands out `Node<T>` values.
|
|
421
421
|
* All concurrent callers with the same key during an in-flight source share
|
|
422
|
-
* the same Node.
|
|
423
|
-
*
|
|
424
|
-
*
|
|
425
|
-
*
|
|
426
|
-
*
|
|
422
|
+
* the same Node. The cache entry is evicted (so the next call re-invokes
|
|
423
|
+
* `factory`) when the underlying source either:
|
|
424
|
+
*
|
|
425
|
+
* - **terminally settles** — `ERROR` or `COMPLETE`; or
|
|
426
|
+
* - **tears down** — `TEARDOWN` (M8 fix). A DATA-only source (e.g. a
|
|
427
|
+
* long-lived `state(...)`) never emits `ERROR`/`COMPLETE`, so without
|
|
428
|
+
* the TEARDOWN arm a destroyed shared Node — plus this watcher
|
|
429
|
+
* subscription — would be pinned in the `inFlight` Map forever. Evicting
|
|
430
|
+
* on TEARDOWN bounds the entry's lifetime to the Node's own lifetime.
|
|
431
|
+
*
|
|
432
|
+
* DATA is NOT an eviction trigger — callers subscribing after the first
|
|
433
|
+
* DATA still receive the shared Node (and push-on-subscribe per the spec's
|
|
434
|
+
* cached-DATA contract). The Node stays shared while alive (the dedup
|
|
435
|
+
* contract); only its death (terminal or teardown) releases the entry.
|
|
427
436
|
*
|
|
428
437
|
* Use when downstream wants reactive subscription (not a one-shot Promise).
|
|
429
438
|
*
|
|
@@ -419,11 +419,20 @@ declare function singleFromAny<K, T>(factory: (key: K) => NodeInput<T>, opts?: S
|
|
|
419
419
|
/**
|
|
420
420
|
* Reactive variant: returns a bound callable that hands out `Node<T>` values.
|
|
421
421
|
* All concurrent callers with the same key during an in-flight source share
|
|
422
|
-
* the same Node.
|
|
423
|
-
*
|
|
424
|
-
*
|
|
425
|
-
*
|
|
426
|
-
*
|
|
422
|
+
* the same Node. The cache entry is evicted (so the next call re-invokes
|
|
423
|
+
* `factory`) when the underlying source either:
|
|
424
|
+
*
|
|
425
|
+
* - **terminally settles** — `ERROR` or `COMPLETE`; or
|
|
426
|
+
* - **tears down** — `TEARDOWN` (M8 fix). A DATA-only source (e.g. a
|
|
427
|
+
* long-lived `state(...)`) never emits `ERROR`/`COMPLETE`, so without
|
|
428
|
+
* the TEARDOWN arm a destroyed shared Node — plus this watcher
|
|
429
|
+
* subscription — would be pinned in the `inFlight` Map forever. Evicting
|
|
430
|
+
* on TEARDOWN bounds the entry's lifetime to the Node's own lifetime.
|
|
431
|
+
*
|
|
432
|
+
* DATA is NOT an eviction trigger — callers subscribing after the first
|
|
433
|
+
* DATA still receive the shared Node (and push-on-subscribe per the spec's
|
|
434
|
+
* cached-DATA contract). The Node stays shared while alive (the dedup
|
|
435
|
+
* contract); only its death (terminal or teardown) releases the entry.
|
|
427
436
|
*
|
|
428
437
|
* Use when downstream wants reactive subscription (not a one-shot Promise).
|
|
429
438
|
*
|
|
@@ -4,7 +4,11 @@ import {
|
|
|
4
4
|
pubsub,
|
|
5
5
|
selector,
|
|
6
6
|
verifiable
|
|
7
|
-
} from "../../chunk-
|
|
7
|
+
} from "../../chunk-J5TBZFBD.js";
|
|
8
|
+
import {
|
|
9
|
+
externalBundle,
|
|
10
|
+
externalProducer
|
|
11
|
+
} from "../../chunk-VLDRAMP7.js";
|
|
8
12
|
import {
|
|
9
13
|
createWatermarkController,
|
|
10
14
|
toObservable
|
|
@@ -12,16 +16,12 @@ import {
|
|
|
12
16
|
import {
|
|
13
17
|
singleFromAny,
|
|
14
18
|
singleNodeFromAny
|
|
15
|
-
} from "../../chunk-
|
|
19
|
+
} from "../../chunk-V46JWFGV.js";
|
|
16
20
|
import {
|
|
17
21
|
distill
|
|
18
|
-
} from "../../chunk-
|
|
19
|
-
import "../../chunk-
|
|
22
|
+
} from "../../chunk-G7H6PN7P.js";
|
|
23
|
+
import "../../chunk-MMHGYX44.js";
|
|
20
24
|
import "../../chunk-N6MNJNHB.js";
|
|
21
|
-
import {
|
|
22
|
-
externalBundle,
|
|
23
|
-
externalProducer
|
|
24
|
-
} from "../../chunk-VLDRAMP7.js";
|
|
25
25
|
import "../../chunk-AZDQPQ3V.js";
|
|
26
26
|
export {
|
|
27
27
|
NativePubSubBackend,
|
package/dist/base/index.cjs
CHANGED
|
@@ -389,6 +389,7 @@ __export(base_exports, {
|
|
|
389
389
|
fromPrisma: () => fromPrisma,
|
|
390
390
|
fromPrometheus: () => fromPrometheus,
|
|
391
391
|
fromPulsar: () => fromPulsar,
|
|
392
|
+
fromPushNotification: () => fromPushNotification,
|
|
392
393
|
fromRabbitMQ: () => fromRabbitMQ,
|
|
393
394
|
fromRedisStream: () => fromRedisStream,
|
|
394
395
|
fromSSE: () => fromSSE,
|
|
@@ -420,6 +421,7 @@ __export(base_exports, {
|
|
|
420
421
|
parseSyslog: () => parseSyslog,
|
|
421
422
|
pubsub: () => pubsub,
|
|
422
423
|
reactiveCounter: () => reactiveCounter,
|
|
424
|
+
readonlyAuditLog: () => readonlyAuditLog,
|
|
423
425
|
registerCursor: () => registerCursor,
|
|
424
426
|
registerCursorMap: () => registerCursorMap,
|
|
425
427
|
replay: () => replay,
|
|
@@ -598,8 +600,18 @@ function toArray(source, opts) {
|
|
|
598
600
|
},
|
|
599
601
|
{
|
|
600
602
|
describeKind: "derived",
|
|
603
|
+
...opts,
|
|
604
|
+
// Operator-required flags spread AFTER user `opts` so a caller
|
|
605
|
+
// cannot accidentally override them (QA F2 spread-order fix,
|
|
606
|
+
// DS-2.7.A `/qa` 2026-05-20 — matches the
|
|
607
|
+
// `reduce`/`scan`/`take`/`last` substrate pattern). Spec §2.7
|
|
608
|
+
// R2.7.1 (DS-2.7.A): Reduce-class shape — fn must fire on
|
|
609
|
+
// upstream COMPLETE to emit the accumulated array (or `[]` for an
|
|
610
|
+
// empty source) followed by its own `[[COMPLETE]]`. Required
|
|
611
|
+
// because `completeWhenDepsComplete: false` means auto-COMPLETE
|
|
612
|
+
// is OFF; without the opt-in `toArray(empty())` never completes.
|
|
601
613
|
completeWhenDepsComplete: false,
|
|
602
|
-
|
|
614
|
+
terminalAsRealInput: true
|
|
603
615
|
}
|
|
604
616
|
);
|
|
605
617
|
}
|
|
@@ -633,8 +645,8 @@ var shareReplay = replay;
|
|
|
633
645
|
function isNodeLike(value) {
|
|
634
646
|
return typeof value === "object" && value !== null && "cache" in value && typeof value.subscribe === "function";
|
|
635
647
|
}
|
|
636
|
-
function keepalive(
|
|
637
|
-
|
|
648
|
+
function keepalive(node33) {
|
|
649
|
+
node33.subscribe(() => void 0);
|
|
638
650
|
}
|
|
639
651
|
function mapFromSnapshot(snapshot) {
|
|
640
652
|
if (snapshot instanceof Map) return snapshot;
|
|
@@ -1078,10 +1090,10 @@ function makeInterop(onSubscribe) {
|
|
|
1078
1090
|
};
|
|
1079
1091
|
return obs;
|
|
1080
1092
|
}
|
|
1081
|
-
function toObservable(
|
|
1093
|
+
function toObservable(node33, options) {
|
|
1082
1094
|
if (options?.raw) {
|
|
1083
1095
|
return makeInterop((observer) => {
|
|
1084
|
-
return
|
|
1096
|
+
return node33.subscribe((msgs) => {
|
|
1085
1097
|
if (observer.closed) return;
|
|
1086
1098
|
observer.next?.(msgs);
|
|
1087
1099
|
for (const m of msgs) {
|
|
@@ -1098,7 +1110,7 @@ function toObservable(node32, options) {
|
|
|
1098
1110
|
});
|
|
1099
1111
|
}
|
|
1100
1112
|
return makeInterop((observer) => {
|
|
1101
|
-
return
|
|
1113
|
+
return node33.subscribe((msgs) => {
|
|
1102
1114
|
for (const m of msgs) {
|
|
1103
1115
|
if (observer.closed) return;
|
|
1104
1116
|
if (m[0] === import_core6.DATA) {
|
|
@@ -1502,18 +1514,19 @@ function singleNodeFromAny(factory, opts = {}) {
|
|
|
1502
1514
|
const k = keyFn(key);
|
|
1503
1515
|
const existing = inFlight.get(k);
|
|
1504
1516
|
if (existing) return existing;
|
|
1505
|
-
const
|
|
1506
|
-
inFlight.set(k,
|
|
1507
|
-
|
|
1517
|
+
const node33 = (0, import_extra5.fromAny)(factory(key));
|
|
1518
|
+
inFlight.set(k, node33);
|
|
1519
|
+
let unsub;
|
|
1520
|
+
unsub = node33.subscribe((msgs) => {
|
|
1508
1521
|
for (const m of msgs) {
|
|
1509
|
-
if (m[0] === import_core11.ERROR || m[0] === import_core11.COMPLETE) {
|
|
1510
|
-
if (inFlight.get(k) ===
|
|
1511
|
-
unsub();
|
|
1522
|
+
if (m[0] === import_core11.ERROR || m[0] === import_core11.COMPLETE || m[0] === import_core11.TEARDOWN) {
|
|
1523
|
+
if (inFlight.get(k) === node33) inFlight.delete(k);
|
|
1524
|
+
unsub?.();
|
|
1512
1525
|
return;
|
|
1513
1526
|
}
|
|
1514
1527
|
}
|
|
1515
1528
|
});
|
|
1516
|
-
return
|
|
1529
|
+
return node33;
|
|
1517
1530
|
};
|
|
1518
1531
|
}
|
|
1519
1532
|
|
|
@@ -1565,7 +1578,12 @@ function verifiable(source, verifyFn, opts) {
|
|
|
1565
1578
|
// src/base/io/checkpoint.ts
|
|
1566
1579
|
var import_core13 = require("@graphrefly/pure-ts/core");
|
|
1567
1580
|
function checkpointToS3(graph, client, bucket, opts) {
|
|
1568
|
-
const {
|
|
1581
|
+
const {
|
|
1582
|
+
prefix = "checkpoints/",
|
|
1583
|
+
debounceMs = 500,
|
|
1584
|
+
compactEvery = 10,
|
|
1585
|
+
onError = (err) => console.error(`checkpointToS3(${bucket}): checkpoint persistence failed`, err)
|
|
1586
|
+
} = opts ?? {};
|
|
1569
1587
|
const tier = {
|
|
1570
1588
|
name: `s3:${bucket}`,
|
|
1571
1589
|
debounceMs,
|
|
@@ -1577,7 +1595,7 @@ function checkpointToS3(graph, client, bucket, opts) {
|
|
|
1577
1595
|
try {
|
|
1578
1596
|
body = JSON.stringify(record);
|
|
1579
1597
|
} catch (err) {
|
|
1580
|
-
onError
|
|
1598
|
+
onError(err);
|
|
1581
1599
|
return;
|
|
1582
1600
|
}
|
|
1583
1601
|
void client.putObject({
|
|
@@ -1585,13 +1603,13 @@ function checkpointToS3(graph, client, bucket, opts) {
|
|
|
1585
1603
|
Key: s3Key,
|
|
1586
1604
|
Body: body,
|
|
1587
1605
|
ContentType: "application/json"
|
|
1588
|
-
}).catch((err) => onError
|
|
1606
|
+
}).catch((err) => onError(err));
|
|
1589
1607
|
}
|
|
1590
1608
|
// S3 tier is write-only here — one object per checkpoint timestamp,
|
|
1591
1609
|
// no canonical "latest" key for load.
|
|
1592
1610
|
};
|
|
1593
1611
|
return graph.attachSnapshotStorage([{ snapshot: tier }], {
|
|
1594
|
-
onError: (err) => onError
|
|
1612
|
+
onError: (err) => onError(err)
|
|
1595
1613
|
});
|
|
1596
1614
|
}
|
|
1597
1615
|
function checkpointToRedis(graph, client, opts) {
|
|
@@ -1599,7 +1617,7 @@ function checkpointToRedis(graph, client, opts) {
|
|
|
1599
1617
|
prefix = "graphrefly:checkpoint:",
|
|
1600
1618
|
debounceMs = 500,
|
|
1601
1619
|
compactEvery = 10,
|
|
1602
|
-
onError
|
|
1620
|
+
onError = (err) => console.error(`checkpointToRedis(${graph.name}): checkpoint persistence failed`, err)
|
|
1603
1621
|
} = opts ?? {};
|
|
1604
1622
|
const redisKey = `${prefix}${graph.name}`;
|
|
1605
1623
|
const tier = {
|
|
@@ -1611,23 +1629,24 @@ function checkpointToRedis(graph, client, opts) {
|
|
|
1611
1629
|
try {
|
|
1612
1630
|
body = JSON.stringify(record);
|
|
1613
1631
|
} catch (err) {
|
|
1614
|
-
onError
|
|
1632
|
+
onError(err);
|
|
1615
1633
|
return;
|
|
1616
1634
|
}
|
|
1617
|
-
void client.set(redisKey, body).catch((err) => onError
|
|
1635
|
+
void client.set(redisKey, body).catch((err) => onError(err));
|
|
1618
1636
|
},
|
|
1619
1637
|
async load() {
|
|
1620
1638
|
const raw = await client.get(redisKey);
|
|
1621
1639
|
if (raw == null) return void 0;
|
|
1622
1640
|
try {
|
|
1623
1641
|
return JSON.parse(raw);
|
|
1624
|
-
} catch {
|
|
1642
|
+
} catch (err) {
|
|
1643
|
+
onError(err);
|
|
1625
1644
|
return void 0;
|
|
1626
1645
|
}
|
|
1627
1646
|
}
|
|
1628
1647
|
};
|
|
1629
1648
|
return graph.attachSnapshotStorage([{ snapshot: tier }], {
|
|
1630
|
-
onError: (err) => onError
|
|
1649
|
+
onError: (err) => onError(err)
|
|
1631
1650
|
});
|
|
1632
1651
|
}
|
|
1633
1652
|
|
|
@@ -2093,7 +2112,21 @@ function reactiveSink(source, config) {
|
|
|
2093
2112
|
}
|
|
2094
2113
|
return run();
|
|
2095
2114
|
};
|
|
2096
|
-
|
|
2115
|
+
let maxBuf = Number.POSITIVE_INFINITY;
|
|
2116
|
+
if (backpressure) {
|
|
2117
|
+
const mb = backpressure.maxBuffer;
|
|
2118
|
+
if (mb === void 0) {
|
|
2119
|
+
throw new RangeError(
|
|
2120
|
+
"reactiveSink: backpressure requires explicit maxBuffer (use Infinity to opt in to unbounded)"
|
|
2121
|
+
);
|
|
2122
|
+
}
|
|
2123
|
+
if (mb !== Number.POSITIVE_INFINITY && (!Number.isInteger(mb) || mb < 1)) {
|
|
2124
|
+
throw new RangeError(
|
|
2125
|
+
"reactiveSink: backpressure.maxBuffer must be a positive integer (or Infinity for unbounded)"
|
|
2126
|
+
);
|
|
2127
|
+
}
|
|
2128
|
+
maxBuf = mb;
|
|
2129
|
+
}
|
|
2097
2130
|
const buffer = new BackpressureBuffer(maxBuf);
|
|
2098
2131
|
let flushTimer;
|
|
2099
2132
|
let disposed = false;
|
|
@@ -4559,13 +4592,7 @@ function toWebSocket(source, socket, opts) {
|
|
|
4559
4592
|
return handle;
|
|
4560
4593
|
}
|
|
4561
4594
|
function fromWebSocketReconnect(factory, opts) {
|
|
4562
|
-
const {
|
|
4563
|
-
parse,
|
|
4564
|
-
maxRetries,
|
|
4565
|
-
backoff = "exponential",
|
|
4566
|
-
closeOnTeardown = true,
|
|
4567
|
-
...rest
|
|
4568
|
-
} = opts ?? {};
|
|
4595
|
+
const { parse, maxRetries, backoff = "exponential", closeOnTeardown = true, ...rest } = opts;
|
|
4569
4596
|
return retry(
|
|
4570
4597
|
() => fromWebSocket(factory(), {
|
|
4571
4598
|
parse,
|
|
@@ -4620,6 +4647,26 @@ function createAuditLog(opts) {
|
|
|
4620
4647
|
}
|
|
4621
4648
|
return log;
|
|
4622
4649
|
}
|
|
4650
|
+
function readonlyAuditLog(log) {
|
|
4651
|
+
return Object.freeze({
|
|
4652
|
+
get entries() {
|
|
4653
|
+
return log.entries;
|
|
4654
|
+
},
|
|
4655
|
+
get size() {
|
|
4656
|
+
return log.size;
|
|
4657
|
+
},
|
|
4658
|
+
get lastValue() {
|
|
4659
|
+
return log.lastValue;
|
|
4660
|
+
},
|
|
4661
|
+
get mutationLog() {
|
|
4662
|
+
return log.mutationLog;
|
|
4663
|
+
},
|
|
4664
|
+
at: log.at.bind(log),
|
|
4665
|
+
withLatest: log.withLatest.bind(log),
|
|
4666
|
+
view: log.view.bind(log),
|
|
4667
|
+
scan: log.scan.bind(log)
|
|
4668
|
+
});
|
|
4669
|
+
}
|
|
4623
4670
|
function deepFreeze(value) {
|
|
4624
4671
|
if (value === null || typeof value !== "object" || Object.isFrozen(value)) return value;
|
|
4625
4672
|
for (const k of Object.keys(value)) {
|
|
@@ -5918,6 +5965,33 @@ function fromCron(expr, opts) {
|
|
|
5918
5965
|
);
|
|
5919
5966
|
}
|
|
5920
5967
|
|
|
5968
|
+
// src/base/sources/event/push.ts
|
|
5969
|
+
var import_core41 = require("@graphrefly/pure-ts/core");
|
|
5970
|
+
function sourceOpts5(opts) {
|
|
5971
|
+
return { describeKind: "producer", ...opts };
|
|
5972
|
+
}
|
|
5973
|
+
function fromPushNotification(register, opts) {
|
|
5974
|
+
if (typeof register !== "function") {
|
|
5975
|
+
throw new TypeError(
|
|
5976
|
+
"fromPushNotification: a (deliver) => unsubscribe registration function is required"
|
|
5977
|
+
);
|
|
5978
|
+
}
|
|
5979
|
+
return (0, import_core41.node)((_data, a) => {
|
|
5980
|
+
let done = false;
|
|
5981
|
+
const deliver = (payload) => {
|
|
5982
|
+
if (done) return;
|
|
5983
|
+
a.emit(payload);
|
|
5984
|
+
};
|
|
5985
|
+
const unsubscribe = register(deliver);
|
|
5986
|
+
return {
|
|
5987
|
+
onDeactivation: () => {
|
|
5988
|
+
done = true;
|
|
5989
|
+
if (typeof unsubscribe === "function") unsubscribe();
|
|
5990
|
+
}
|
|
5991
|
+
};
|
|
5992
|
+
}, sourceOpts5(opts));
|
|
5993
|
+
}
|
|
5994
|
+
|
|
5921
5995
|
// src/base/utils/decay.ts
|
|
5922
5996
|
var DEFAULT_DECAY_RATE = Math.LN2 / (7 * 86400);
|
|
5923
5997
|
function decay(baseScore, ageSeconds, ratePerSecond, minScore = 0) {
|
|
@@ -5929,26 +6003,26 @@ function decay(baseScore, ageSeconds, ratePerSecond, minScore = 0) {
|
|
|
5929
6003
|
}
|
|
5930
6004
|
|
|
5931
6005
|
// src/base/worker/bridge.ts
|
|
5932
|
-
var
|
|
6006
|
+
var import_core43 = require("@graphrefly/pure-ts/core");
|
|
5933
6007
|
var import_extra11 = require("@graphrefly/pure-ts/extra");
|
|
5934
6008
|
|
|
5935
6009
|
// src/base/worker/protocol.ts
|
|
5936
|
-
var
|
|
6010
|
+
var import_core42 = require("@graphrefly/pure-ts/core");
|
|
5937
6011
|
var signalToNameMap = /* @__PURE__ */ new Map([
|
|
5938
|
-
[
|
|
5939
|
-
[
|
|
5940
|
-
[
|
|
5941
|
-
[
|
|
5942
|
-
[
|
|
5943
|
-
[
|
|
6012
|
+
[import_core42.INVALIDATE, "INVALIDATE"],
|
|
6013
|
+
[import_core42.PAUSE, "PAUSE"],
|
|
6014
|
+
[import_core42.RESUME, "RESUME"],
|
|
6015
|
+
[import_core42.TEARDOWN, "TEARDOWN"],
|
|
6016
|
+
[import_core42.COMPLETE, "COMPLETE"],
|
|
6017
|
+
[import_core42.ERROR, "ERROR"]
|
|
5944
6018
|
]);
|
|
5945
6019
|
var nameToSignalMap = /* @__PURE__ */ new Map([
|
|
5946
|
-
["INVALIDATE",
|
|
5947
|
-
["PAUSE",
|
|
5948
|
-
["RESUME",
|
|
5949
|
-
["TEARDOWN",
|
|
5950
|
-
["COMPLETE",
|
|
5951
|
-
["ERROR",
|
|
6020
|
+
["INVALIDATE", import_core42.INVALIDATE],
|
|
6021
|
+
["PAUSE", import_core42.PAUSE],
|
|
6022
|
+
["RESUME", import_core42.RESUME],
|
|
6023
|
+
["TEARDOWN", import_core42.TEARDOWN],
|
|
6024
|
+
["COMPLETE", import_core42.COMPLETE],
|
|
6025
|
+
["ERROR", import_core42.ERROR]
|
|
5952
6026
|
]);
|
|
5953
6027
|
function signalToName(s) {
|
|
5954
6028
|
const known = signalToNameMap.get(s);
|
|
@@ -6060,24 +6134,24 @@ function workerBridge(target, opts) {
|
|
|
6060
6134
|
const exposeEntries = Object.entries(opts.expose ?? {});
|
|
6061
6135
|
const importNames = opts.import ?? [];
|
|
6062
6136
|
const transferFns = opts.transfer ?? {};
|
|
6063
|
-
const statusNode = (0,
|
|
6137
|
+
const statusNode = (0, import_core43.node)([], {
|
|
6064
6138
|
initial: "connecting",
|
|
6065
6139
|
name: `${bridgeName}::meta::status`
|
|
6066
6140
|
});
|
|
6067
|
-
const errorNode = (0,
|
|
6141
|
+
const errorNode = (0, import_core43.node)([], {
|
|
6068
6142
|
initial: null,
|
|
6069
6143
|
name: `${bridgeName}::meta::error`
|
|
6070
6144
|
});
|
|
6071
6145
|
const proxyNodes = /* @__PURE__ */ new Map();
|
|
6072
6146
|
const lastSeenImportVersions = /* @__PURE__ */ new Map();
|
|
6073
6147
|
for (const name of importNames) {
|
|
6074
|
-
const proxy = (0,
|
|
6148
|
+
const proxy = (0, import_core43.node)([], { initial: void 0, name: `${bridgeName}::${name}` });
|
|
6075
6149
|
proxyNodes.set(name, proxy);
|
|
6076
6150
|
}
|
|
6077
6151
|
let effectUnsub;
|
|
6078
6152
|
if (exposeEntries.length > 0) {
|
|
6079
6153
|
const exposedNodes = exposeEntries.map(([, n]) => n);
|
|
6080
|
-
const aggregated = (0,
|
|
6154
|
+
const aggregated = (0, import_core43.node)(
|
|
6081
6155
|
exposedNodes,
|
|
6082
6156
|
(data, a) => {
|
|
6083
6157
|
const updates = {};
|
|
@@ -6099,7 +6173,7 @@ function workerBridge(target, opts) {
|
|
|
6099
6173
|
// the same time).
|
|
6100
6174
|
{ name: `${bridgeName}::aggregated`, partial: true }
|
|
6101
6175
|
);
|
|
6102
|
-
const effectNode = (0,
|
|
6176
|
+
const effectNode = (0, import_core43.node)(
|
|
6103
6177
|
[aggregated],
|
|
6104
6178
|
(batchData, _actions, ctx) => {
|
|
6105
6179
|
const batch0 = batchData[0];
|
|
@@ -6122,7 +6196,7 @@ function workerBridge(target, opts) {
|
|
|
6122
6196
|
try {
|
|
6123
6197
|
transport.post(msg, transferList.length > 0 ? transferList : void 0);
|
|
6124
6198
|
} catch (err) {
|
|
6125
|
-
errorNode.down([[
|
|
6199
|
+
errorNode.down([[import_core43.DATA, err instanceof Error ? err : new Error(String(err))]]);
|
|
6126
6200
|
}
|
|
6127
6201
|
return void 0;
|
|
6128
6202
|
},
|
|
@@ -6140,13 +6214,13 @@ function workerBridge(target, opts) {
|
|
|
6140
6214
|
// The handshake deadline auto-cancels via the reactive race
|
|
6141
6215
|
// (`statusNode → "connected"` wins) — no explicit clearTimeout.
|
|
6142
6216
|
case "r": {
|
|
6143
|
-
(0,
|
|
6217
|
+
(0, import_core43.batch)(() => {
|
|
6144
6218
|
for (const [name, value] of Object.entries(msg.stores)) {
|
|
6145
6219
|
const proxy = proxyNodes.get(name);
|
|
6146
|
-
if (proxy) proxy.down([[
|
|
6220
|
+
if (proxy) proxy.down([[import_core43.DATA, value]]);
|
|
6147
6221
|
}
|
|
6148
6222
|
});
|
|
6149
|
-
statusNode.down([[
|
|
6223
|
+
statusNode.down([[import_core43.DATA, "connected"]]);
|
|
6150
6224
|
const initValues = {};
|
|
6151
6225
|
for (const [name, n] of exposeEntries) {
|
|
6152
6226
|
initValues[name] = n.cache;
|
|
@@ -6157,12 +6231,12 @@ function workerBridge(target, opts) {
|
|
|
6157
6231
|
// Single value update from worker
|
|
6158
6232
|
case "v": {
|
|
6159
6233
|
const proxy = proxyNodes.get(msg.s);
|
|
6160
|
-
if (proxy) proxy.down([[
|
|
6234
|
+
if (proxy) proxy.down([[import_core43.DATA, msg.d]]);
|
|
6161
6235
|
break;
|
|
6162
6236
|
}
|
|
6163
6237
|
// Batch value update from worker
|
|
6164
6238
|
case "b": {
|
|
6165
|
-
(0,
|
|
6239
|
+
(0, import_core43.batch)(() => {
|
|
6166
6240
|
for (const [name, value] of Object.entries(msg.u)) {
|
|
6167
6241
|
const incomingVersion = msg.v?.[name];
|
|
6168
6242
|
if (incomingVersion != null) {
|
|
@@ -6171,7 +6245,7 @@ function workerBridge(target, opts) {
|
|
|
6171
6245
|
lastSeenImportVersions.set(name, incomingVersion);
|
|
6172
6246
|
}
|
|
6173
6247
|
const proxy = proxyNodes.get(name);
|
|
6174
|
-
if (proxy) proxy.down([[
|
|
6248
|
+
if (proxy) proxy.down([[import_core43.DATA, value]]);
|
|
6175
6249
|
}
|
|
6176
6250
|
});
|
|
6177
6251
|
break;
|
|
@@ -6179,7 +6253,7 @@ function workerBridge(target, opts) {
|
|
|
6179
6253
|
// Error from worker node
|
|
6180
6254
|
case "e": {
|
|
6181
6255
|
const proxy = proxyNodes.get(msg.s);
|
|
6182
|
-
if (proxy) proxy.down([[
|
|
6256
|
+
if (proxy) proxy.down([[import_core43.ERROR, deserializeError(msg.err)]]);
|
|
6183
6257
|
break;
|
|
6184
6258
|
}
|
|
6185
6259
|
// Lifecycle signal from worker
|
|
@@ -6200,9 +6274,9 @@ function workerBridge(target, opts) {
|
|
|
6200
6274
|
if (destroyed) return;
|
|
6201
6275
|
for (const m of msgs) {
|
|
6202
6276
|
const type = m[0];
|
|
6203
|
-
if (type ===
|
|
6204
|
-
if (
|
|
6205
|
-
if (type ===
|
|
6277
|
+
if (type === import_core43.DATA) continue;
|
|
6278
|
+
if (import_core43.defaultConfig.isLocalOnly(type)) continue;
|
|
6279
|
+
if (type === import_core43.ERROR) {
|
|
6206
6280
|
transport.post({
|
|
6207
6281
|
t: "e",
|
|
6208
6282
|
s: name,
|
|
@@ -6232,8 +6306,8 @@ function workerBridge(target, opts) {
|
|
|
6232
6306
|
);
|
|
6233
6307
|
handshakeUnsub = race$.subscribe((msgs) => {
|
|
6234
6308
|
for (const m of msgs) {
|
|
6235
|
-
if (m[0] ===
|
|
6236
|
-
errorNode.down([[
|
|
6309
|
+
if (m[0] === import_core43.DATA && m[1] === "timeout") {
|
|
6310
|
+
errorNode.down([[import_core43.DATA, new Error("Worker bridge handshake timeout")]]);
|
|
6237
6311
|
destroy();
|
|
6238
6312
|
}
|
|
6239
6313
|
}
|
|
@@ -6246,13 +6320,13 @@ function workerBridge(target, opts) {
|
|
|
6246
6320
|
transport.post({
|
|
6247
6321
|
t: "s",
|
|
6248
6322
|
s: "*",
|
|
6249
|
-
sig: signalToName(
|
|
6323
|
+
sig: signalToName(import_core43.TEARDOWN)
|
|
6250
6324
|
});
|
|
6251
6325
|
if (effectUnsub) effectUnsub();
|
|
6252
6326
|
for (const unsub of exposeUnsubs) unsub();
|
|
6253
6327
|
exposeUnsubs.length = 0;
|
|
6254
6328
|
unlisten();
|
|
6255
|
-
statusNode.down([[
|
|
6329
|
+
statusNode.down([[import_core43.DATA, "closed"]]);
|
|
6256
6330
|
lastSeenImportVersions.clear();
|
|
6257
6331
|
proxyNodes.clear();
|
|
6258
6332
|
}
|
|
@@ -6267,7 +6341,7 @@ function workerBridge(target, opts) {
|
|
|
6267
6341
|
}
|
|
6268
6342
|
|
|
6269
6343
|
// src/base/worker/self.ts
|
|
6270
|
-
var
|
|
6344
|
+
var import_core44 = require("@graphrefly/pure-ts/core");
|
|
6271
6345
|
function isTransport2(t) {
|
|
6272
6346
|
return typeof t === "object" && t !== null && typeof t.post === "function" && typeof t.listen === "function";
|
|
6273
6347
|
}
|
|
@@ -6279,7 +6353,7 @@ function workerSelf(target, opts) {
|
|
|
6279
6353
|
const lastSeenImportVersions = /* @__PURE__ */ new Map();
|
|
6280
6354
|
const importedObj = {};
|
|
6281
6355
|
for (const name of importNames) {
|
|
6282
|
-
const s = (0,
|
|
6356
|
+
const s = (0, import_core44.node)([], { initial: void 0, name: `worker::${name}` });
|
|
6283
6357
|
proxyNodes.set(name, s);
|
|
6284
6358
|
importedObj[name] = s;
|
|
6285
6359
|
}
|
|
@@ -6289,7 +6363,7 @@ function workerSelf(target, opts) {
|
|
|
6289
6363
|
let destroyed = false;
|
|
6290
6364
|
if (exposeEntries.length > 0) {
|
|
6291
6365
|
const nodes = exposeEntries.map(([, n]) => n);
|
|
6292
|
-
const aggregated = (0,
|
|
6366
|
+
const aggregated = (0, import_core44.node)(
|
|
6293
6367
|
nodes,
|
|
6294
6368
|
(data, a) => {
|
|
6295
6369
|
const updates = {};
|
|
@@ -6309,7 +6383,7 @@ function workerSelf(target, opts) {
|
|
|
6309
6383
|
// any-dep-settles waves (deps deliver asynchronously).
|
|
6310
6384
|
{ name: "workerSelf::aggregated", partial: true }
|
|
6311
6385
|
);
|
|
6312
|
-
const effectNode = (0,
|
|
6386
|
+
const effectNode = (0, import_core44.node)(
|
|
6313
6387
|
[aggregated],
|
|
6314
6388
|
(batchData, _actions, ctx) => {
|
|
6315
6389
|
const batch0 = batchData[0];
|
|
@@ -6347,9 +6421,9 @@ function workerSelf(target, opts) {
|
|
|
6347
6421
|
if (destroyed) return;
|
|
6348
6422
|
for (const m of msgs) {
|
|
6349
6423
|
const type = m[0];
|
|
6350
|
-
if (type ===
|
|
6351
|
-
if (
|
|
6352
|
-
if (type ===
|
|
6424
|
+
if (type === import_core44.DATA) continue;
|
|
6425
|
+
if (import_core44.defaultConfig.isLocalOnly(type)) continue;
|
|
6426
|
+
if (type === import_core44.ERROR) {
|
|
6353
6427
|
transport.post({
|
|
6354
6428
|
t: "e",
|
|
6355
6429
|
s: name,
|
|
@@ -6373,10 +6447,10 @@ function workerSelf(target, opts) {
|
|
|
6373
6447
|
switch (msg.t) {
|
|
6374
6448
|
// Init from main — set proxy node values
|
|
6375
6449
|
case "i": {
|
|
6376
|
-
(0,
|
|
6450
|
+
(0, import_core44.batch)(() => {
|
|
6377
6451
|
for (const [name, value] of Object.entries(msg.stores)) {
|
|
6378
6452
|
const proxy = proxyNodes.get(name);
|
|
6379
|
-
if (proxy) proxy.down([[
|
|
6453
|
+
if (proxy) proxy.down([[import_core44.DATA, value]]);
|
|
6380
6454
|
}
|
|
6381
6455
|
});
|
|
6382
6456
|
break;
|
|
@@ -6384,12 +6458,12 @@ function workerSelf(target, opts) {
|
|
|
6384
6458
|
// Single value update from main
|
|
6385
6459
|
case "v": {
|
|
6386
6460
|
const proxy = proxyNodes.get(msg.s);
|
|
6387
|
-
if (proxy) proxy.down([[
|
|
6461
|
+
if (proxy) proxy.down([[import_core44.DATA, msg.d]]);
|
|
6388
6462
|
break;
|
|
6389
6463
|
}
|
|
6390
6464
|
// Batch value update from main
|
|
6391
6465
|
case "b": {
|
|
6392
|
-
(0,
|
|
6466
|
+
(0, import_core44.batch)(() => {
|
|
6393
6467
|
for (const [name, value] of Object.entries(msg.u)) {
|
|
6394
6468
|
const incomingVersion = msg.v?.[name];
|
|
6395
6469
|
if (incomingVersion != null) {
|
|
@@ -6398,7 +6472,7 @@ function workerSelf(target, opts) {
|
|
|
6398
6472
|
lastSeenImportVersions.set(name, incomingVersion);
|
|
6399
6473
|
}
|
|
6400
6474
|
const proxy = proxyNodes.get(name);
|
|
6401
|
-
if (proxy) proxy.down([[
|
|
6475
|
+
if (proxy) proxy.down([[import_core44.DATA, value]]);
|
|
6402
6476
|
}
|
|
6403
6477
|
});
|
|
6404
6478
|
break;
|
|
@@ -6406,14 +6480,14 @@ function workerSelf(target, opts) {
|
|
|
6406
6480
|
// Error from main node
|
|
6407
6481
|
case "e": {
|
|
6408
6482
|
const proxy = proxyNodes.get(msg.s);
|
|
6409
|
-
if (proxy) proxy.down([[
|
|
6483
|
+
if (proxy) proxy.down([[import_core44.ERROR, deserializeError(msg.err)]]);
|
|
6410
6484
|
break;
|
|
6411
6485
|
}
|
|
6412
6486
|
// Lifecycle signal from main
|
|
6413
6487
|
case "s": {
|
|
6414
6488
|
const sig = nameToSignal(msg.sig);
|
|
6415
6489
|
if (!sig) break;
|
|
6416
|
-
if (sig ===
|
|
6490
|
+
if (sig === import_core44.TEARDOWN && msg.s === "*") {
|
|
6417
6491
|
destroy();
|
|
6418
6492
|
return;
|
|
6419
6493
|
}
|