@graphrefly/graphrefly 0.22.0 → 0.23.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/{chunk-RHI3GHZW.js → chunk-263BEJJO.js} +3 -3
- package/dist/{chunk-44HD4BTA.js → chunk-2GQLMQVJ.js} +3 -3
- package/dist/chunk-32N5A454.js +36 -0
- package/dist/chunk-32N5A454.js.map +1 -0
- package/dist/{chunk-IR3KMOLX.js → chunk-CWYPA63G.js} +3 -383
- package/dist/chunk-CWYPA63G.js.map +1 -0
- package/dist/{chunk-TH6COGOP.js → chunk-HVBX5KIW.js} +2 -2
- package/dist/chunk-JFONSPNF.js +391 -0
- package/dist/chunk-JFONSPNF.js.map +1 -0
- package/dist/{chunk-QA3RP5NH.js → chunk-NZMBRXQV.js} +101 -5
- package/dist/chunk-NZMBRXQV.js.map +1 -0
- package/dist/{chunk-MQBQOFDS.js → chunk-PNUZM7PC.js} +12 -31
- package/dist/chunk-PNUZM7PC.js.map +1 -0
- package/dist/{chunk-EQUZ5NLD.js → chunk-PX6PDUJ5.js} +11 -16
- package/dist/chunk-PX6PDUJ5.js.map +1 -0
- package/dist/{chunk-NXC35KC5.js → chunk-XRFJJ2IU.js} +3 -3
- package/dist/{chunk-BLD3IFYF.js → chunk-XTLYW4FR.js} +9 -7
- package/dist/{chunk-BLD3IFYF.js.map → chunk-XTLYW4FR.js.map} +1 -1
- package/dist/compat/nestjs/index.cjs +100 -4
- package/dist/compat/nestjs/index.cjs.map +1 -1
- package/dist/compat/nestjs/index.d.cts +6 -6
- package/dist/compat/nestjs/index.d.ts +6 -6
- package/dist/compat/nestjs/index.js +9 -7
- package/dist/core/index.cjs +100 -4
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +3 -3
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js +3 -3
- package/dist/extra/index.cjs +100 -4
- package/dist/extra/index.cjs.map +1 -1
- package/dist/extra/index.d.cts +4 -4
- package/dist/extra/index.d.ts +4 -4
- package/dist/extra/index.js +9 -7
- package/dist/graph/index.cjs +100 -4
- package/dist/graph/index.cjs.map +1 -1
- package/dist/graph/index.d.cts +5 -5
- package/dist/graph/index.d.ts +5 -5
- package/dist/graph/index.js +4 -4
- package/dist/{graph-ab1yPwIB.d.cts → graph-BtdSRHUc.d.cts} +3 -3
- package/dist/{graph-DFr0diXB.d.ts → graph-CEO2FkLY.d.ts} +3 -3
- package/dist/{index-BvWfZCTt.d.cts → index-B0tfuXwV.d.cts} +3 -3
- package/dist/{index-Dy04P4W3.d.cts → index-BFGjXbiP.d.cts} +2 -2
- package/dist/{index-DrJq9B1T.d.cts → index-BPlWVAKY.d.cts} +3 -3
- package/dist/{index-C9z6rU9P.d.cts → index-BUj3ASVe.d.cts} +25 -7
- package/dist/{index-DLE1Sp-L.d.cts → index-C59uSJAH.d.cts} +2 -2
- package/dist/{index-DsGxLfwL.d.ts → index-CkElcUY6.d.ts} +2 -2
- package/dist/{index-HdJx_BjO.d.ts → index-DSPc5rkv.d.ts} +25 -7
- package/dist/{index-D36MAQ3f.d.ts → index-DgscL7v0.d.ts} +3 -3
- package/dist/{index-BbYZma8G.d.ts → index-RXN94sHK.d.ts} +3 -3
- package/dist/{index-BHm3Ba5q.d.ts → index-jEtF4N7L.d.ts} +2 -2
- package/dist/index.cjs +109 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -15
- package/dist/index.d.ts +15 -15
- package/dist/index.js +26 -22
- package/dist/index.js.map +1 -1
- package/dist/{meta-n3FoVWML.d.ts → meta-3QjzotRv.d.ts} +1 -1
- package/dist/{meta--fr9sxRM.d.cts → meta-B-Lbs4-O.d.cts} +1 -1
- package/dist/{node-C5UD5MGq.d.cts → node-C7PD3sn9.d.cts} +42 -0
- package/dist/{node-C5UD5MGq.d.ts → node-C7PD3sn9.d.ts} +42 -0
- package/dist/{observable-CQRBtEbq.d.ts → observable-EyO-moQY.d.ts} +1 -1
- package/dist/{observable-DWydVy5b.d.cts → observable-axpzv1K2.d.cts} +1 -1
- package/dist/patterns/reactive-layout/index.cjs +214 -117
- package/dist/patterns/reactive-layout/index.cjs.map +1 -1
- package/dist/patterns/reactive-layout/index.d.cts +5 -5
- package/dist/patterns/reactive-layout/index.d.ts +5 -5
- package/dist/patterns/reactive-layout/index.js +6 -4
- package/dist/{storage-C9fZfMfM.d.ts → storage-CHT5WE9m.d.ts} +1 -1
- package/dist/{storage-Bew05Xy6.d.cts → storage-DIgAr7M_.d.cts} +1 -1
- package/package.json +2 -1
- package/dist/chunk-EQUZ5NLD.js.map +0 -1
- package/dist/chunk-IR3KMOLX.js.map +0 -1
- package/dist/chunk-MQBQOFDS.js.map +0 -1
- package/dist/chunk-QA3RP5NH.js.map +0 -1
- /package/dist/{chunk-RHI3GHZW.js.map → chunk-263BEJJO.js.map} +0 -0
- /package/dist/{chunk-44HD4BTA.js.map → chunk-2GQLMQVJ.js.map} +0 -0
- /package/dist/{chunk-TH6COGOP.js.map → chunk-HVBX5KIW.js.map} +0 -0
- /package/dist/{chunk-NXC35KC5.js.map → chunk-XRFJJ2IU.js.map} +0 -0
package/dist/graph/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { E as ENVELOPE_VERSION, a as EvictedSubgraphInfo, b as EvictionPolicy, G as GraphCodec, J as JsonCodec, L as LazyGraphCodec, O as SIZEOF_OVERHEAD, S as SIZEOF_SYMBOL, W as WALEntry, c as createDagCborCodec, d as createDagCborZstdCodec, e as decodeEnvelope, f as encodeEnvelope, r as registerBuiltinCodecs, g as replayWAL, s as sizeof } from '../index-
|
|
2
|
-
export { D as DescribeFilter, e as GRAPH_META_SEGMENT, G as Graph, f as GraphActorOptions, b as GraphAttachStorageOptions, g as GraphCheckpointRecord, h as GraphDescribeOptions, i as GraphDescribeOutput, j as GraphDiagramDirection, k as GraphDiagramOptions, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, r as GraphPersistSnapshot, d as GraphProfileOptions, c as GraphProfileResult, s as GraphVersionChange, t as GraphWALDiff, N as NodeProfile, O as ObserveDetail, u as ObserveEvent, v as ObserveOptions, w as ObserveResult, x as ObserveTheme, y as ObserveThemeName, R as ReachableDirection, z as ReachableOptions, T as TraceEntry, A as diffForWAL, B as graphProfile, C as reachable } from '../graph-
|
|
3
|
-
import '../node-
|
|
4
|
-
import '../meta
|
|
5
|
-
import '../storage-
|
|
1
|
+
export { E as ENVELOPE_VERSION, a as EvictedSubgraphInfo, b as EvictionPolicy, G as GraphCodec, J as JsonCodec, L as LazyGraphCodec, O as SIZEOF_OVERHEAD, S as SIZEOF_SYMBOL, W as WALEntry, c as createDagCborCodec, d as createDagCborZstdCodec, e as decodeEnvelope, f as encodeEnvelope, r as registerBuiltinCodecs, g as replayWAL, s as sizeof } from '../index-BFGjXbiP.cjs';
|
|
2
|
+
export { D as DescribeFilter, e as GRAPH_META_SEGMENT, G as Graph, f as GraphActorOptions, b as GraphAttachStorageOptions, g as GraphCheckpointRecord, h as GraphDescribeOptions, i as GraphDescribeOutput, j as GraphDiagramDirection, k as GraphDiagramOptions, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, r as GraphPersistSnapshot, d as GraphProfileOptions, c as GraphProfileResult, s as GraphVersionChange, t as GraphWALDiff, N as NodeProfile, O as ObserveDetail, u as ObserveEvent, v as ObserveOptions, w as ObserveResult, x as ObserveTheme, y as ObserveThemeName, R as ReachableDirection, z as ReachableOptions, T as TraceEntry, A as diffForWAL, B as graphProfile, C as reachable } from '../graph-BtdSRHUc.cjs';
|
|
3
|
+
import '../node-C7PD3sn9.cjs';
|
|
4
|
+
import '../meta-B-Lbs4-O.cjs';
|
|
5
|
+
import '../storage-DIgAr7M_.cjs';
|
package/dist/graph/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { E as ENVELOPE_VERSION, a as EvictedSubgraphInfo, b as EvictionPolicy, G as GraphCodec, J as JsonCodec, L as LazyGraphCodec, O as SIZEOF_OVERHEAD, S as SIZEOF_SYMBOL, W as WALEntry, c as createDagCborCodec, d as createDagCborZstdCodec, e as decodeEnvelope, f as encodeEnvelope, r as registerBuiltinCodecs, g as replayWAL, s as sizeof } from '../index-
|
|
2
|
-
export { D as DescribeFilter, e as GRAPH_META_SEGMENT, G as Graph, f as GraphActorOptions, b as GraphAttachStorageOptions, g as GraphCheckpointRecord, h as GraphDescribeOptions, i as GraphDescribeOutput, j as GraphDiagramDirection, k as GraphDiagramOptions, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, r as GraphPersistSnapshot, d as GraphProfileOptions, c as GraphProfileResult, s as GraphVersionChange, t as GraphWALDiff, N as NodeProfile, O as ObserveDetail, u as ObserveEvent, v as ObserveOptions, w as ObserveResult, x as ObserveTheme, y as ObserveThemeName, R as ReachableDirection, z as ReachableOptions, T as TraceEntry, A as diffForWAL, B as graphProfile, C as reachable } from '../graph-
|
|
3
|
-
import '../node-
|
|
4
|
-
import '../meta-
|
|
5
|
-
import '../storage-
|
|
1
|
+
export { E as ENVELOPE_VERSION, a as EvictedSubgraphInfo, b as EvictionPolicy, G as GraphCodec, J as JsonCodec, L as LazyGraphCodec, O as SIZEOF_OVERHEAD, S as SIZEOF_SYMBOL, W as WALEntry, c as createDagCborCodec, d as createDagCborZstdCodec, e as decodeEnvelope, f as encodeEnvelope, r as registerBuiltinCodecs, g as replayWAL, s as sizeof } from '../index-CkElcUY6.js';
|
|
2
|
+
export { D as DescribeFilter, e as GRAPH_META_SEGMENT, G as Graph, f as GraphActorOptions, b as GraphAttachStorageOptions, g as GraphCheckpointRecord, h as GraphDescribeOptions, i as GraphDescribeOutput, j as GraphDiagramDirection, k as GraphDiagramOptions, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, r as GraphPersistSnapshot, d as GraphProfileOptions, c as GraphProfileResult, s as GraphVersionChange, t as GraphWALDiff, N as NodeProfile, O as ObserveDetail, u as ObserveEvent, v as ObserveOptions, w as ObserveResult, x as ObserveTheme, y as ObserveThemeName, R as ReachableDirection, z as ReachableOptions, T as TraceEntry, A as diffForWAL, B as graphProfile, C as reachable } from '../graph-CEO2FkLY.js';
|
|
3
|
+
import '../node-C7PD3sn9.js';
|
|
4
|
+
import '../meta-3QjzotRv.js';
|
|
5
|
+
import '../storage-CHT5WE9m.js';
|
package/dist/graph/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-2GQLMQVJ.js";
|
|
2
2
|
import {
|
|
3
3
|
GRAPH_META_SEGMENT,
|
|
4
4
|
Graph,
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
graphProfile,
|
|
9
9
|
reachable,
|
|
10
10
|
sizeof
|
|
11
|
-
} from "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
} from "../chunk-XRFJJ2IU.js";
|
|
12
|
+
import "../chunk-HVBX5KIW.js";
|
|
13
13
|
import "../chunk-7TAQJHQV.js";
|
|
14
14
|
import {
|
|
15
15
|
ENVELOPE_VERSION,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
encodeEnvelope,
|
|
21
21
|
registerBuiltinCodecs,
|
|
22
22
|
replayWAL
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-NZMBRXQV.js";
|
|
24
24
|
export {
|
|
25
25
|
ENVELOPE_VERSION,
|
|
26
26
|
GRAPH_META_SEGMENT,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { k as GraphReFlyConfig, a6 as VersioningLevel, N as Node, A as Actor, t as Messages, K as NodeSink } from './node-
|
|
2
|
-
import { b as DescribeNodeOutput, D as DescribeDetail, a as DescribeField } from './meta
|
|
3
|
-
import { a as StorageTier, S as StorageHandle } from './storage-
|
|
1
|
+
import { k as GraphReFlyConfig, a6 as VersioningLevel, N as Node, A as Actor, t as Messages, K as NodeSink } from './node-C7PD3sn9.cjs';
|
|
2
|
+
import { b as DescribeNodeOutput, D as DescribeDetail, a as DescribeField } from './meta-B-Lbs4-O.cjs';
|
|
3
|
+
import { a as StorageTier, S as StorageHandle } from './storage-DIgAr7M_.cjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Graph profiling and inspection utilities.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { k as GraphReFlyConfig, a6 as VersioningLevel, N as Node, A as Actor, t as Messages, K as NodeSink } from './node-
|
|
2
|
-
import { b as DescribeNodeOutput, D as DescribeDetail, a as DescribeField } from './meta-
|
|
3
|
-
import { a as StorageTier, S as StorageHandle } from './storage-
|
|
1
|
+
import { k as GraphReFlyConfig, a6 as VersioningLevel, N as Node, A as Actor, t as Messages, K as NodeSink } from './node-C7PD3sn9.js';
|
|
2
|
+
import { b as DescribeNodeOutput, D as DescribeDetail, a as DescribeField } from './meta-3QjzotRv.js';
|
|
3
|
+
import { a as StorageTier, S as StorageHandle } from './storage-CHT5WE9m.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Graph profiling and inspection utilities.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as NodeOptions, N as Node, M as Message, t as Messages, a6 as VersioningLevel } from './node-
|
|
2
|
-
import { a as StorageTier, I as IndexedDbStorageSpec, S as StorageHandle, d as dictStorage, f as fileStorage, b as fromIDBRequest, c as fromIDBTransaction, i as indexedDbStorage, m as memoryStorage, s as sqliteStorage } from './storage-
|
|
3
|
-
import { T as ToObservableOptions, t as toObservable } from './observable-
|
|
1
|
+
import { a as NodeOptions, N as Node, M as Message, t as Messages, a6 as VersioningLevel } from './node-C7PD3sn9.cjs';
|
|
2
|
+
import { a as StorageTier, I as IndexedDbStorageSpec, S as StorageHandle, d as dictStorage, f as fileStorage, b as fromIDBRequest, c as fromIDBTransaction, i as indexedDbStorage, m as memoryStorage, s as sqliteStorage } from './storage-DIgAr7M_.cjs';
|
|
3
|
+
import { T as ToObservableOptions, t as toObservable } from './observable-axpzv1K2.cjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* External-register helpers — the common `register({emit, error, complete})`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { k as GraphReFlyConfig } from './node-
|
|
2
|
-
import { r as GraphPersistSnapshot, g as GraphCheckpointRecord, D as DescribeFilter, e as GRAPH_META_SEGMENT, G as Graph, f as GraphActorOptions, b as GraphAttachStorageOptions, h as GraphDescribeOptions, i as GraphDescribeOutput, j as GraphDiagramDirection, k as GraphDiagramOptions, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, d as GraphProfileOptions, c as GraphProfileResult, s as GraphVersionChange, t as GraphWALDiff, N as NodeProfile, O as ObserveDetail, u as ObserveEvent, v as ObserveOptions, w as ObserveResult, x as ObserveTheme, y as ObserveThemeName, R as ReachableDirection, z as ReachableOptions, T as TraceEntry, A as diffForWAL, B as graphProfile, C as reachable } from './graph-
|
|
1
|
+
import { k as GraphReFlyConfig } from './node-C7PD3sn9.cjs';
|
|
2
|
+
import { r as GraphPersistSnapshot, g as GraphCheckpointRecord, D as DescribeFilter, e as GRAPH_META_SEGMENT, G as Graph, f as GraphActorOptions, b as GraphAttachStorageOptions, h as GraphDescribeOptions, i as GraphDescribeOutput, j as GraphDiagramDirection, k as GraphDiagramOptions, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, d as GraphProfileOptions, c as GraphProfileResult, s as GraphVersionChange, t as GraphWALDiff, N as NodeProfile, O as ObserveDetail, u as ObserveEvent, v as ObserveOptions, w as ObserveResult, x as ObserveTheme, y as ObserveThemeName, R as ReachableDirection, z as ReachableOptions, T as TraceEntry, A as diffForWAL, B as graphProfile, C as reachable } from './graph-BtdSRHUc.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Approximate in-memory size estimation for arbitrary JS values.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { T as ToObservableOptions, t as toObservable } from './observable-
|
|
1
|
+
import { T as ToObservableOptions, t as toObservable } from './observable-axpzv1K2.cjs';
|
|
2
2
|
import { OnModuleInit, OnModuleDestroy, ExecutionContext, CanActivate, DynamicModule } from '@nestjs/common';
|
|
3
3
|
import { ModuleRef } from '@nestjs/core';
|
|
4
|
-
import { G as Graph, a as GraphOptions, r as GraphPersistSnapshot } from './graph-
|
|
5
|
-
import { A as Actor, N as Node } from './node-
|
|
4
|
+
import { G as Graph, a as GraphOptions, r as GraphPersistSnapshot } from './graph-BtdSRHUc.cjs';
|
|
5
|
+
import { A as Actor, N as Node } from './node-C7PD3sn9.cjs';
|
|
6
6
|
|
|
7
7
|
/** Class constructor key for decorator registries and Nest `ModuleRef.get()`. */
|
|
8
8
|
type DecoratorHostConstructor = abstract new (...args: unknown[]) => unknown;
|
|
@@ -1,28 +1,46 @@
|
|
|
1
|
-
import { t as Messages, a as NodeOptions, F as FnCtx, N as Node, b as NodeActions, x as NodeFnCleanup, A as Actor, C as COMPLETE, c as COMPLETE_MSG, d as COMPLETE_ONLY_BATCH, D as DATA, e as DEFAULT_ACTOR, f as DIRTY, g as DIRTY_MSG, h as DIRTY_ONLY_BATCH, i as DepRecord, E as ERROR, G as GlobalInspectorEvent, j as GlobalInspectorHook, k as GraphReFlyConfig, l as GuardAction, m as GuardDenied, n as GuardDeniedDetails, H as HashFn, I as INVALIDATE, o as INVALIDATE_MSG, p as INVALIDATE_ONLY_BATCH, M as Message, q as MessageContext, r as MessageTypeRegistration, s as MessageTypeRegistrationInput, u as NodeCtx, v as NodeDescribeKind, w as NodeFn, y as NodeGuard, z as NodeImpl, B as NodeInspectorHook, J as NodeInspectorHookEvent, K as NodeSink, L as NodeStatus, O as NodeTransportOptions, P as NodeVersionInfo, Q as OnMessageHandler, R as OnSubscribeHandler, S as PAUSE, T as PolicyAllow, U as PolicyDeny, V as PolicyRuleData, W as RESOLVED, X as RESOLVED_MSG, Y as RESOLVED_ONLY_BATCH, Z as RESUME, _ as START, $ as START_MSG, a0 as SubscribeContext, a1 as TEARDOWN, a2 as TEARDOWN_MSG, a3 as TEARDOWN_ONLY_BATCH, a4 as V0, a5 as V1, a6 as VersioningLevel, a7 as VersioningOptions, a8 as accessHintForGuard, a9 as advanceVersion, aa as configure, ab as createVersioning, ac as defaultConfig, ad as defaultHash, ae as isV1, af as node, ag as normalizeActor, ah as policy, ai as policyFromRules, aj as registerBuiltins } from './node-
|
|
2
|
-
import { D as DescribeDetail, a as DescribeField, b as DescribeNodeOutput, r as resolveDescribeFields } from './meta
|
|
1
|
+
import { t as Messages, a as NodeOptions, F as FnCtx, N as Node, b as NodeActions, x as NodeFnCleanup, A as Actor, C as COMPLETE, c as COMPLETE_MSG, d as COMPLETE_ONLY_BATCH, D as DATA, e as DEFAULT_ACTOR, f as DIRTY, g as DIRTY_MSG, h as DIRTY_ONLY_BATCH, i as DepRecord, E as ERROR, G as GlobalInspectorEvent, j as GlobalInspectorHook, k as GraphReFlyConfig, l as GuardAction, m as GuardDenied, n as GuardDeniedDetails, H as HashFn, I as INVALIDATE, o as INVALIDATE_MSG, p as INVALIDATE_ONLY_BATCH, M as Message, q as MessageContext, r as MessageTypeRegistration, s as MessageTypeRegistrationInput, u as NodeCtx, v as NodeDescribeKind, w as NodeFn, y as NodeGuard, z as NodeImpl, B as NodeInspectorHook, J as NodeInspectorHookEvent, K as NodeSink, L as NodeStatus, O as NodeTransportOptions, P as NodeVersionInfo, Q as OnMessageHandler, R as OnSubscribeHandler, S as PAUSE, T as PolicyAllow, U as PolicyDeny, V as PolicyRuleData, W as RESOLVED, X as RESOLVED_MSG, Y as RESOLVED_ONLY_BATCH, Z as RESUME, _ as START, $ as START_MSG, a0 as SubscribeContext, a1 as TEARDOWN, a2 as TEARDOWN_MSG, a3 as TEARDOWN_ONLY_BATCH, a4 as V0, a5 as V1, a6 as VersioningLevel, a7 as VersioningOptions, a8 as accessHintForGuard, a9 as advanceVersion, aa as configure, ab as createVersioning, ac as defaultConfig, ad as defaultHash, ae as isV1, af as node, ag as normalizeActor, ah as policy, ai as policyFromRules, aj as registerBuiltins } from './node-C7PD3sn9.cjs';
|
|
2
|
+
import { D as DescribeDetail, a as DescribeField, b as DescribeNodeOutput, r as resolveDescribeFields } from './meta-B-Lbs4-O.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Batch deferral for tier-3+ messages
|
|
5
|
+
* Batch deferral for tier-3+ messages, plus per-node emit coalescing inside
|
|
6
|
+
* explicit `batch()` scopes.
|
|
6
7
|
*
|
|
7
8
|
* §1.3.7 — Inside a batch, tier 0–2 signals propagate immediately. Tier 3
|
|
8
9
|
* (DATA/RESOLVED), tier 4 (COMPLETE/ERROR), and tier 5 (TEARDOWN) are queued
|
|
9
10
|
* and drained in ascending phase order after the outermost `batch()` callback
|
|
10
11
|
* returns.
|
|
11
12
|
*
|
|
13
|
+
* **Per-node emit coalescing (Bug 2 fix, 2026-04-17).** Inside an explicit
|
|
14
|
+
* `batch()` scope, consecutive emissions from the same node accumulate in
|
|
15
|
+
* `NodeImpl._batchPendingMessages` instead of each producing a separate
|
|
16
|
+
* downstream wave. At batch end, each node flushes its accumulated messages
|
|
17
|
+
* as ONE multi-message `downWithBatch` call — K `.emit()`s to the same
|
|
18
|
+
* source collapse to K DIRTYs in one tier-1 sink call + K DATAs in one
|
|
19
|
+
* tier-3 sink call. Downstream nodes' fns run once per wave with the full
|
|
20
|
+
* `batchData` (dep's `dataBatch` accumulates all K values, fn sees
|
|
21
|
+
* `[[v1, v2, ..., vK]]`). Resolves the K+1 fan-in over-fire.
|
|
22
|
+
*
|
|
23
|
+
* Outside batch — and during drain (where `flushInProgress` is true but
|
|
24
|
+
* `batchDepth` is 0) — coalescing does NOT apply: each emit goes through
|
|
25
|
+
* its own `downWithBatch` call and produces its own wave.
|
|
26
|
+
*
|
|
12
27
|
* **Phase vocabulary:**
|
|
13
28
|
* - Phase 1 = tiers 0–2 — immediate, never queued.
|
|
14
29
|
* - Phase 2 = tier 3 — {@link drainPhase2}. Value settlements.
|
|
15
30
|
* - Phase 3 = tier 4 — {@link drainPhase3}. Terminal signals.
|
|
16
31
|
* - Phase 4 = tier 5 — {@link drainPhase4}. TEARDOWN (unified deferral).
|
|
17
32
|
*
|
|
18
|
-
* Drain rule:
|
|
19
|
-
*
|
|
20
|
-
*
|
|
33
|
+
* Drain rule: fire any pending flush hooks first, then the lowest non-empty
|
|
34
|
+
* phase. Re-enqueues during drain (and hooks registered by reentrant batches
|
|
35
|
+
* inside subscriber callbacks) bump the loop back to the top so newly-added
|
|
36
|
+
* hooks and closures get processed.
|
|
21
37
|
*
|
|
22
38
|
* **Pre-sorted input invariant.** `downWithBatch` assumes `messages` is
|
|
23
39
|
* already sorted in ascending tier order (produced by `_frameBatch` in
|
|
24
40
|
* `node.ts`). The walker exploits monotonicity for a single O(n) pass and
|
|
25
|
-
* slices at phase boundaries without re-sorting.
|
|
41
|
+
* slices at phase boundaries without re-sorting. Flushed multi-emit batches
|
|
42
|
+
* re-run `_frameBatch` to restore monotonicity (the per-emit framings
|
|
43
|
+
* accumulate in interleaved order: `[DIRTY, DATA, DIRTY, DATA, ...]`).
|
|
26
44
|
*/
|
|
27
45
|
|
|
28
46
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { N as Node } from './node-
|
|
2
|
-
import { G as Graph } from './graph-
|
|
1
|
+
import { N as Node } from './node-C7PD3sn9.cjs';
|
|
2
|
+
import { G as Graph } from './graph-BtdSRHUc.cjs';
|
|
3
3
|
|
|
4
4
|
/** Pluggable measurement backend. */
|
|
5
5
|
interface MeasurementAdapter {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { k as GraphReFlyConfig } from './node-
|
|
2
|
-
import { r as GraphPersistSnapshot, g as GraphCheckpointRecord, D as DescribeFilter, e as GRAPH_META_SEGMENT, G as Graph, f as GraphActorOptions, b as GraphAttachStorageOptions, h as GraphDescribeOptions, i as GraphDescribeOutput, j as GraphDiagramDirection, k as GraphDiagramOptions, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, d as GraphProfileOptions, c as GraphProfileResult, s as GraphVersionChange, t as GraphWALDiff, N as NodeProfile, O as ObserveDetail, u as ObserveEvent, v as ObserveOptions, w as ObserveResult, x as ObserveTheme, y as ObserveThemeName, R as ReachableDirection, z as ReachableOptions, T as TraceEntry, A as diffForWAL, B as graphProfile, C as reachable } from './graph-
|
|
1
|
+
import { k as GraphReFlyConfig } from './node-C7PD3sn9.js';
|
|
2
|
+
import { r as GraphPersistSnapshot, g as GraphCheckpointRecord, D as DescribeFilter, e as GRAPH_META_SEGMENT, G as Graph, f as GraphActorOptions, b as GraphAttachStorageOptions, h as GraphDescribeOptions, i as GraphDescribeOutput, j as GraphDiagramDirection, k as GraphDiagramOptions, l as GraphDiffChange, m as GraphDiffResult, n as GraphFactoryContext, o as GraphNodeFactory, p as GraphObserveAll, q as GraphObserveOne, a as GraphOptions, d as GraphProfileOptions, c as GraphProfileResult, s as GraphVersionChange, t as GraphWALDiff, N as NodeProfile, O as ObserveDetail, u as ObserveEvent, v as ObserveOptions, w as ObserveResult, x as ObserveTheme, y as ObserveThemeName, R as ReachableDirection, z as ReachableOptions, T as TraceEntry, A as diffForWAL, B as graphProfile, C as reachable } from './graph-CEO2FkLY.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Approximate in-memory size estimation for arbitrary JS values.
|
|
@@ -1,28 +1,46 @@
|
|
|
1
|
-
import { t as Messages, a as NodeOptions, F as FnCtx, N as Node, b as NodeActions, x as NodeFnCleanup, A as Actor, C as COMPLETE, c as COMPLETE_MSG, d as COMPLETE_ONLY_BATCH, D as DATA, e as DEFAULT_ACTOR, f as DIRTY, g as DIRTY_MSG, h as DIRTY_ONLY_BATCH, i as DepRecord, E as ERROR, G as GlobalInspectorEvent, j as GlobalInspectorHook, k as GraphReFlyConfig, l as GuardAction, m as GuardDenied, n as GuardDeniedDetails, H as HashFn, I as INVALIDATE, o as INVALIDATE_MSG, p as INVALIDATE_ONLY_BATCH, M as Message, q as MessageContext, r as MessageTypeRegistration, s as MessageTypeRegistrationInput, u as NodeCtx, v as NodeDescribeKind, w as NodeFn, y as NodeGuard, z as NodeImpl, B as NodeInspectorHook, J as NodeInspectorHookEvent, K as NodeSink, L as NodeStatus, O as NodeTransportOptions, P as NodeVersionInfo, Q as OnMessageHandler, R as OnSubscribeHandler, S as PAUSE, T as PolicyAllow, U as PolicyDeny, V as PolicyRuleData, W as RESOLVED, X as RESOLVED_MSG, Y as RESOLVED_ONLY_BATCH, Z as RESUME, _ as START, $ as START_MSG, a0 as SubscribeContext, a1 as TEARDOWN, a2 as TEARDOWN_MSG, a3 as TEARDOWN_ONLY_BATCH, a4 as V0, a5 as V1, a6 as VersioningLevel, a7 as VersioningOptions, a8 as accessHintForGuard, a9 as advanceVersion, aa as configure, ab as createVersioning, ac as defaultConfig, ad as defaultHash, ae as isV1, af as node, ag as normalizeActor, ah as policy, ai as policyFromRules, aj as registerBuiltins } from './node-
|
|
2
|
-
import { D as DescribeDetail, a as DescribeField, b as DescribeNodeOutput, r as resolveDescribeFields } from './meta-
|
|
1
|
+
import { t as Messages, a as NodeOptions, F as FnCtx, N as Node, b as NodeActions, x as NodeFnCleanup, A as Actor, C as COMPLETE, c as COMPLETE_MSG, d as COMPLETE_ONLY_BATCH, D as DATA, e as DEFAULT_ACTOR, f as DIRTY, g as DIRTY_MSG, h as DIRTY_ONLY_BATCH, i as DepRecord, E as ERROR, G as GlobalInspectorEvent, j as GlobalInspectorHook, k as GraphReFlyConfig, l as GuardAction, m as GuardDenied, n as GuardDeniedDetails, H as HashFn, I as INVALIDATE, o as INVALIDATE_MSG, p as INVALIDATE_ONLY_BATCH, M as Message, q as MessageContext, r as MessageTypeRegistration, s as MessageTypeRegistrationInput, u as NodeCtx, v as NodeDescribeKind, w as NodeFn, y as NodeGuard, z as NodeImpl, B as NodeInspectorHook, J as NodeInspectorHookEvent, K as NodeSink, L as NodeStatus, O as NodeTransportOptions, P as NodeVersionInfo, Q as OnMessageHandler, R as OnSubscribeHandler, S as PAUSE, T as PolicyAllow, U as PolicyDeny, V as PolicyRuleData, W as RESOLVED, X as RESOLVED_MSG, Y as RESOLVED_ONLY_BATCH, Z as RESUME, _ as START, $ as START_MSG, a0 as SubscribeContext, a1 as TEARDOWN, a2 as TEARDOWN_MSG, a3 as TEARDOWN_ONLY_BATCH, a4 as V0, a5 as V1, a6 as VersioningLevel, a7 as VersioningOptions, a8 as accessHintForGuard, a9 as advanceVersion, aa as configure, ab as createVersioning, ac as defaultConfig, ad as defaultHash, ae as isV1, af as node, ag as normalizeActor, ah as policy, ai as policyFromRules, aj as registerBuiltins } from './node-C7PD3sn9.js';
|
|
2
|
+
import { D as DescribeDetail, a as DescribeField, b as DescribeNodeOutput, r as resolveDescribeFields } from './meta-3QjzotRv.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Batch deferral for tier-3+ messages
|
|
5
|
+
* Batch deferral for tier-3+ messages, plus per-node emit coalescing inside
|
|
6
|
+
* explicit `batch()` scopes.
|
|
6
7
|
*
|
|
7
8
|
* §1.3.7 — Inside a batch, tier 0–2 signals propagate immediately. Tier 3
|
|
8
9
|
* (DATA/RESOLVED), tier 4 (COMPLETE/ERROR), and tier 5 (TEARDOWN) are queued
|
|
9
10
|
* and drained in ascending phase order after the outermost `batch()` callback
|
|
10
11
|
* returns.
|
|
11
12
|
*
|
|
13
|
+
* **Per-node emit coalescing (Bug 2 fix, 2026-04-17).** Inside an explicit
|
|
14
|
+
* `batch()` scope, consecutive emissions from the same node accumulate in
|
|
15
|
+
* `NodeImpl._batchPendingMessages` instead of each producing a separate
|
|
16
|
+
* downstream wave. At batch end, each node flushes its accumulated messages
|
|
17
|
+
* as ONE multi-message `downWithBatch` call — K `.emit()`s to the same
|
|
18
|
+
* source collapse to K DIRTYs in one tier-1 sink call + K DATAs in one
|
|
19
|
+
* tier-3 sink call. Downstream nodes' fns run once per wave with the full
|
|
20
|
+
* `batchData` (dep's `dataBatch` accumulates all K values, fn sees
|
|
21
|
+
* `[[v1, v2, ..., vK]]`). Resolves the K+1 fan-in over-fire.
|
|
22
|
+
*
|
|
23
|
+
* Outside batch — and during drain (where `flushInProgress` is true but
|
|
24
|
+
* `batchDepth` is 0) — coalescing does NOT apply: each emit goes through
|
|
25
|
+
* its own `downWithBatch` call and produces its own wave.
|
|
26
|
+
*
|
|
12
27
|
* **Phase vocabulary:**
|
|
13
28
|
* - Phase 1 = tiers 0–2 — immediate, never queued.
|
|
14
29
|
* - Phase 2 = tier 3 — {@link drainPhase2}. Value settlements.
|
|
15
30
|
* - Phase 3 = tier 4 — {@link drainPhase3}. Terminal signals.
|
|
16
31
|
* - Phase 4 = tier 5 — {@link drainPhase4}. TEARDOWN (unified deferral).
|
|
17
32
|
*
|
|
18
|
-
* Drain rule:
|
|
19
|
-
*
|
|
20
|
-
*
|
|
33
|
+
* Drain rule: fire any pending flush hooks first, then the lowest non-empty
|
|
34
|
+
* phase. Re-enqueues during drain (and hooks registered by reentrant batches
|
|
35
|
+
* inside subscriber callbacks) bump the loop back to the top so newly-added
|
|
36
|
+
* hooks and closures get processed.
|
|
21
37
|
*
|
|
22
38
|
* **Pre-sorted input invariant.** `downWithBatch` assumes `messages` is
|
|
23
39
|
* already sorted in ascending tier order (produced by `_frameBatch` in
|
|
24
40
|
* `node.ts`). The walker exploits monotonicity for a single O(n) pass and
|
|
25
|
-
* slices at phase boundaries without re-sorting.
|
|
41
|
+
* slices at phase boundaries without re-sorting. Flushed multi-emit batches
|
|
42
|
+
* re-run `_frameBatch` to restore monotonicity (the per-emit framings
|
|
43
|
+
* accumulate in interleaved order: `[DIRTY, DATA, DIRTY, DATA, ...]`).
|
|
26
44
|
*/
|
|
27
45
|
|
|
28
46
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { T as ToObservableOptions, t as toObservable } from './observable-
|
|
1
|
+
import { T as ToObservableOptions, t as toObservable } from './observable-EyO-moQY.js';
|
|
2
2
|
import { OnModuleInit, OnModuleDestroy, ExecutionContext, CanActivate, DynamicModule } from '@nestjs/common';
|
|
3
3
|
import { ModuleRef } from '@nestjs/core';
|
|
4
|
-
import { G as Graph, a as GraphOptions, r as GraphPersistSnapshot } from './graph-
|
|
5
|
-
import { A as Actor, N as Node } from './node-
|
|
4
|
+
import { G as Graph, a as GraphOptions, r as GraphPersistSnapshot } from './graph-CEO2FkLY.js';
|
|
5
|
+
import { A as Actor, N as Node } from './node-C7PD3sn9.js';
|
|
6
6
|
|
|
7
7
|
/** Class constructor key for decorator registries and Nest `ModuleRef.get()`. */
|
|
8
8
|
type DecoratorHostConstructor = abstract new (...args: unknown[]) => unknown;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as NodeOptions, N as Node, M as Message, t as Messages, a6 as VersioningLevel } from './node-
|
|
2
|
-
import { a as StorageTier, I as IndexedDbStorageSpec, S as StorageHandle, d as dictStorage, f as fileStorage, b as fromIDBRequest, c as fromIDBTransaction, i as indexedDbStorage, m as memoryStorage, s as sqliteStorage } from './storage-
|
|
3
|
-
import { T as ToObservableOptions, t as toObservable } from './observable-
|
|
1
|
+
import { a as NodeOptions, N as Node, M as Message, t as Messages, a6 as VersioningLevel } from './node-C7PD3sn9.js';
|
|
2
|
+
import { a as StorageTier, I as IndexedDbStorageSpec, S as StorageHandle, d as dictStorage, f as fileStorage, b as fromIDBRequest, c as fromIDBTransaction, i as indexedDbStorage, m as memoryStorage, s as sqliteStorage } from './storage-CHT5WE9m.js';
|
|
3
|
+
import { T as ToObservableOptions, t as toObservable } from './observable-EyO-moQY.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* External-register helpers — the common `register({emit, error, complete})`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { N as Node } from './node-
|
|
2
|
-
import { G as Graph } from './graph-
|
|
1
|
+
import { N as Node } from './node-C7PD3sn9.js';
|
|
2
|
+
import { G as Graph } from './graph-CEO2FkLY.js';
|
|
3
3
|
|
|
4
4
|
/** Pluggable measurement backend. */
|
|
5
5
|
interface MeasurementAdapter {
|
package/dist/index.cjs
CHANGED
|
@@ -544,9 +544,20 @@ var flushInProgress = false;
|
|
|
544
544
|
var drainPhase2 = [];
|
|
545
545
|
var drainPhase3 = [];
|
|
546
546
|
var drainPhase4 = [];
|
|
547
|
+
var flushHooks = [];
|
|
547
548
|
function isBatching() {
|
|
548
549
|
return batchDepth > 0 || flushInProgress;
|
|
549
550
|
}
|
|
551
|
+
function isExplicitlyBatching() {
|
|
552
|
+
return batchDepth > 0;
|
|
553
|
+
}
|
|
554
|
+
function registerBatchFlushHook(hook) {
|
|
555
|
+
if (batchDepth > 0) {
|
|
556
|
+
flushHooks.push(hook);
|
|
557
|
+
} else {
|
|
558
|
+
hook();
|
|
559
|
+
}
|
|
560
|
+
}
|
|
550
561
|
function batch(fn) {
|
|
551
562
|
batchDepth += 1;
|
|
552
563
|
let threw = false;
|
|
@@ -560,6 +571,13 @@ function batch(fn) {
|
|
|
560
571
|
if (batchDepth === 0) {
|
|
561
572
|
if (threw) {
|
|
562
573
|
if (!flushInProgress) {
|
|
574
|
+
const hooks = flushHooks.splice(0);
|
|
575
|
+
for (const h of hooks) {
|
|
576
|
+
try {
|
|
577
|
+
h();
|
|
578
|
+
} catch {
|
|
579
|
+
}
|
|
580
|
+
}
|
|
563
581
|
drainPhase2.length = 0;
|
|
564
582
|
drainPhase3.length = 0;
|
|
565
583
|
drainPhase4.length = 0;
|
|
@@ -576,7 +594,18 @@ function drainPending() {
|
|
|
576
594
|
const errors = [];
|
|
577
595
|
let iterations = 0;
|
|
578
596
|
try {
|
|
579
|
-
while (drainPhase2.length > 0 || drainPhase3.length > 0 || drainPhase4.length > 0) {
|
|
597
|
+
while (drainPhase2.length > 0 || drainPhase3.length > 0 || drainPhase4.length > 0 || ownsFlush && flushHooks.length > 0) {
|
|
598
|
+
if (ownsFlush && flushHooks.length > 0) {
|
|
599
|
+
const hooks = flushHooks.splice(0);
|
|
600
|
+
for (const h of hooks) {
|
|
601
|
+
try {
|
|
602
|
+
h();
|
|
603
|
+
} catch (e) {
|
|
604
|
+
errors.push(e);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
continue;
|
|
608
|
+
}
|
|
580
609
|
iterations += 1;
|
|
581
610
|
if (iterations > MAX_DRAIN_ITERATIONS) {
|
|
582
611
|
drainPhase2.length = 0;
|
|
@@ -1266,6 +1295,22 @@ var NodeImpl = class _NodeImpl {
|
|
|
1266
1295
|
* treats `0` as "wave settled" — O(1) check for full dep settlement.
|
|
1267
1296
|
*/
|
|
1268
1297
|
_dirtyDepCount = 0;
|
|
1298
|
+
// --- Per-batch emit accumulator (Bug 2: K+1 fan-in fix) ---
|
|
1299
|
+
/**
|
|
1300
|
+
* Inside an explicit `batch(() => ...)` scope, every `_emit` accumulates
|
|
1301
|
+
* its already-framed messages here instead of dispatching synchronously.
|
|
1302
|
+
* At batch end, `_flushBatchPending` runs (registered via
|
|
1303
|
+
* `registerBatchFlushHook`) and delivers the whole accumulated batch as
|
|
1304
|
+
* one `downWithBatch` call — collapsing what would otherwise be K
|
|
1305
|
+
* separate sink invocations into one. This is the fix for the diamond
|
|
1306
|
+
* fan-in K+1 over-fire.
|
|
1307
|
+
*
|
|
1308
|
+
* `null` outside batch (or after flush). Only ever appended to within
|
|
1309
|
+
* a single explicit batch lifetime; reset to `null` on flush. State
|
|
1310
|
+
* updates (cache, version, status) still happen per-emit via
|
|
1311
|
+
* `_updateState` — only the downstream delivery is coalesced.
|
|
1312
|
+
*/
|
|
1313
|
+
_batchPendingMessages = null;
|
|
1269
1314
|
// --- PAUSE/RESUME lock tracking (C0) ---
|
|
1270
1315
|
/**
|
|
1271
1316
|
* Set of active pause locks held against this node. Every `[PAUSE, lockId]`
|
|
@@ -1643,7 +1688,10 @@ var NodeImpl = class _NodeImpl {
|
|
|
1643
1688
|
dep.unsub = noopUnsub;
|
|
1644
1689
|
dep.unsub = dep.node.subscribe((msgs) => {
|
|
1645
1690
|
if (dep.unsub === null) return;
|
|
1691
|
+
const tierOf = this._config.tierOf;
|
|
1692
|
+
let sawSettlement = false;
|
|
1646
1693
|
for (const m of msgs) {
|
|
1694
|
+
if (tierOf(m[0]) >= 3) sawSettlement = true;
|
|
1647
1695
|
this._config.onMessage(
|
|
1648
1696
|
this,
|
|
1649
1697
|
m,
|
|
@@ -1651,6 +1699,7 @@ var NodeImpl = class _NodeImpl {
|
|
|
1651
1699
|
this._actions
|
|
1652
1700
|
);
|
|
1653
1701
|
}
|
|
1702
|
+
if (sawSettlement) this._maybeRunFnOnSettlement();
|
|
1654
1703
|
});
|
|
1655
1704
|
subscribedCount++;
|
|
1656
1705
|
}
|
|
@@ -1705,7 +1754,10 @@ var NodeImpl = class _NodeImpl {
|
|
|
1705
1754
|
try {
|
|
1706
1755
|
record.unsub = depNode.subscribe((msgs) => {
|
|
1707
1756
|
if (record.unsub === null) return;
|
|
1757
|
+
const tierOf = this._config.tierOf;
|
|
1758
|
+
let sawSettlement = false;
|
|
1708
1759
|
for (const m of msgs) {
|
|
1760
|
+
if (tierOf(m[0]) >= 3) sawSettlement = true;
|
|
1709
1761
|
this._config.onMessage(
|
|
1710
1762
|
this,
|
|
1711
1763
|
m,
|
|
@@ -1713,6 +1765,7 @@ var NodeImpl = class _NodeImpl {
|
|
|
1713
1765
|
this._actions
|
|
1714
1766
|
);
|
|
1715
1767
|
}
|
|
1768
|
+
if (sawSettlement) this._maybeRunFnOnSettlement();
|
|
1716
1769
|
});
|
|
1717
1770
|
} catch (err) {
|
|
1718
1771
|
record.unsub = null;
|
|
@@ -1834,7 +1887,6 @@ var NodeImpl = class _NodeImpl {
|
|
|
1834
1887
|
}
|
|
1835
1888
|
return;
|
|
1836
1889
|
}
|
|
1837
|
-
this._maybeRunFnOnSettlement();
|
|
1838
1890
|
}
|
|
1839
1891
|
// --- Centralized dep-state transitions (A3 settlement counters) ---
|
|
1840
1892
|
//
|
|
@@ -2206,10 +2258,10 @@ var NodeImpl = class _NodeImpl {
|
|
|
2206
2258
|
}
|
|
2207
2259
|
}
|
|
2208
2260
|
if (immediate.length > 0) {
|
|
2209
|
-
|
|
2261
|
+
this._dispatchOrAccumulate(immediate);
|
|
2210
2262
|
}
|
|
2211
2263
|
} else {
|
|
2212
|
-
|
|
2264
|
+
this._dispatchOrAccumulate(finalMessages);
|
|
2213
2265
|
}
|
|
2214
2266
|
}
|
|
2215
2267
|
if (equalsError != null) {
|
|
@@ -2332,6 +2384,50 @@ var NodeImpl = class _NodeImpl {
|
|
|
2332
2384
|
const snapshot = [...this._sinks];
|
|
2333
2385
|
for (const sink of snapshot) sink(messages);
|
|
2334
2386
|
};
|
|
2387
|
+
/**
|
|
2388
|
+
* @internal Dispatch entry point that respects the per-batch emit
|
|
2389
|
+
* accumulator (Bug 2). Inside an explicit `batch()` scope, append to
|
|
2390
|
+
* `_batchPendingMessages` and register a flush hook on first append.
|
|
2391
|
+
* Outside batch — or during a drain (where `flushInProgress` is true
|
|
2392
|
+
* but `batchDepth` is 0) — dispatch synchronously through `downWithBatch`.
|
|
2393
|
+
*
|
|
2394
|
+
* Per-emit state updates (`_frameBatch`, `_updateState`) have already
|
|
2395
|
+
* happened by the time we reach here; only the **downstream delivery**
|
|
2396
|
+
* is coalesced. Cache, version, and status are visible mid-batch on
|
|
2397
|
+
* the emitting node itself.
|
|
2398
|
+
*/
|
|
2399
|
+
_dispatchOrAccumulate(messages) {
|
|
2400
|
+
if (isExplicitlyBatching()) {
|
|
2401
|
+
if (this._batchPendingMessages === null) {
|
|
2402
|
+
this._batchPendingMessages = [];
|
|
2403
|
+
registerBatchFlushHook(() => this._flushBatchPending());
|
|
2404
|
+
}
|
|
2405
|
+
for (const m of messages) this._batchPendingMessages.push(m);
|
|
2406
|
+
return;
|
|
2407
|
+
}
|
|
2408
|
+
downWithBatch(this._deliverToSinks, messages, this._config.tierOf);
|
|
2409
|
+
}
|
|
2410
|
+
/**
|
|
2411
|
+
* @internal Flushes the accumulated batch through `downWithBatch` and
|
|
2412
|
+
* clears the pending state. Idempotent — safe to call when pending is
|
|
2413
|
+
* already null or empty (e.g. on a `batch()` throw, where the hook
|
|
2414
|
+
* fires for cleanup but the drainPhase queues are wiped after).
|
|
2415
|
+
*
|
|
2416
|
+
* Critical: the accumulated batch is interleaved per-emit framings like
|
|
2417
|
+
* `[DIRTY, DATA(1), DIRTY, DATA(2)]` — non-monotone tier order. We must
|
|
2418
|
+
* re-frame to sort by tier before handing to `downWithBatch`, which
|
|
2419
|
+
* assumes pre-sorted input. `_frameBatch` also handles the synthetic
|
|
2420
|
+
* DIRTY prepend rule (no-op here — `hasDirty` is true since each
|
|
2421
|
+
* accumulated emit already carries its own DIRTY prefix).
|
|
2422
|
+
*/
|
|
2423
|
+
_flushBatchPending() {
|
|
2424
|
+
const pending = this._batchPendingMessages;
|
|
2425
|
+
if (pending === null) return;
|
|
2426
|
+
this._batchPendingMessages = null;
|
|
2427
|
+
if (pending.length === 0) return;
|
|
2428
|
+
const framed = this._frameBatch(pending);
|
|
2429
|
+
downWithBatch(this._deliverToSinks, framed, this._config.tierOf);
|
|
2430
|
+
}
|
|
2335
2431
|
};
|
|
2336
2432
|
var isNodeArray = (value) => Array.isArray(value);
|
|
2337
2433
|
var isNodeOptionsObject = (value) => typeof value === "object" && value != null && !Array.isArray(value);
|
|
@@ -7182,6 +7278,10 @@ __export(graph_exports, {
|
|
|
7182
7278
|
});
|
|
7183
7279
|
|
|
7184
7280
|
// src/patterns/_internal.ts
|
|
7281
|
+
function emitToMeta(metaNode, value) {
|
|
7282
|
+
if (metaNode == null) return;
|
|
7283
|
+
downWithBatch((msgs) => metaNode.down(msgs), [[DATA, value]], defaultConfig.tierOf);
|
|
7284
|
+
}
|
|
7185
7285
|
function tryIncrementBounded(counter, cap) {
|
|
7186
7286
|
const cur = counter.cache ?? 0;
|
|
7187
7287
|
if (cur >= cap) return false;
|
|
@@ -18324,13 +18424,9 @@ function reactiveLayout(opts) {
|
|
|
18324
18424
|
const hitRate = lookups === 0 ? 1 : measureStats.hits / lookups;
|
|
18325
18425
|
const meta = segmentsNode.meta;
|
|
18326
18426
|
if (meta) {
|
|
18327
|
-
|
|
18328
|
-
|
|
18329
|
-
|
|
18330
|
-
const tierOf = defaultConfig.tierOf;
|
|
18331
|
-
downWithBatch((msgs) => meta["cache-hit-rate"]?.down(msgs), [[DATA, hr]], tierOf);
|
|
18332
|
-
downWithBatch((msgs) => meta["segment-count"]?.down(msgs), [[DATA, len]], tierOf);
|
|
18333
|
-
downWithBatch((msgs) => meta["layout-time-ns"]?.down(msgs), [[DATA, el]], tierOf);
|
|
18427
|
+
emitToMeta(meta["cache-hit-rate"], hitRate);
|
|
18428
|
+
emitToMeta(meta["segment-count"], result.length);
|
|
18429
|
+
emitToMeta(meta["layout-time-ns"], elapsed);
|
|
18334
18430
|
}
|
|
18335
18431
|
actions.emit(result);
|
|
18336
18432
|
return () => {
|
|
@@ -21659,9 +21755,8 @@ function reactiveBlockLayout(opts) {
|
|
|
21659
21755
|
const elapsed = monotonicNs() - t0;
|
|
21660
21756
|
const meta = measuredBlocksNode.meta;
|
|
21661
21757
|
if (meta) {
|
|
21662
|
-
|
|
21663
|
-
|
|
21664
|
-
downWithBatch((msgs) => meta["layout-time-ns"]?.down(msgs), [[DATA, elapsed]], tierOf);
|
|
21758
|
+
emitToMeta(meta["block-count"], result.length);
|
|
21759
|
+
emitToMeta(meta["layout-time-ns"], elapsed);
|
|
21665
21760
|
}
|
|
21666
21761
|
actions.emit(result);
|
|
21667
21762
|
return () => {
|