@raphy-js/raph 1.0.0-dev.2 → 1.0.1-dev.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1096 -0
- package/dist/api/Raph.d.ts +59 -190
- package/dist/api/RaphFacadeSession.d.ts +90 -0
- package/dist/api/RaphReactivityInstance.d.ts +72 -0
- package/dist/api/errors.d.ts +9 -4
- package/dist/api/types.d.ts +162 -17
- package/dist/core-CClhT8WR.js +1044 -0
- package/dist/core-cPQWYD4K.cjs +1 -0
- package/dist/debug/api/Raph.cjs +1 -1
- package/dist/debug/api/Raph.js +368 -367
- package/dist/debug/api/RaphFacadeSession.cjs +1 -0
- package/dist/debug/api/RaphFacadeSession.js +302 -0
- package/dist/debug/api/RaphReactivityInstance.cjs +1 -0
- package/dist/debug/api/RaphReactivityInstance.js +146 -0
- package/dist/debug/api/errors.cjs +1 -1
- package/dist/debug/api/errors.js +10 -7
- package/dist/debug/path/DataPath.cjs +1 -0
- package/dist/debug/path/DataPath.js +390 -0
- package/dist/debug/path/PathRouter.cjs +1 -0
- package/dist/debug/path/PathRouter.js +80 -0
- package/dist/debug/path/RaphKernel.cjs +1 -1
- package/dist/debug/path/RaphKernel.js +316 -236
- package/dist/debug/path/data-path.utils.cjs +1 -0
- package/dist/debug/path/data-path.utils.js +56 -0
- package/dist/debug/path/derived/DerivedRegistry.cjs +1 -0
- package/dist/debug/path/derived/DerivedRegistry.js +143 -0
- package/dist/debug/path/derived/RaphDerivedHandle.cjs +1 -0
- package/dist/debug/path/{RaphDerivedHandle.js → derived/RaphDerivedHandle.js} +19 -22
- package/dist/debug/path/derived/derived-collection.utils.cjs +1 -0
- package/dist/debug/path/{derived-collection.js → derived/derived-collection.utils.js} +71 -71
- package/dist/debug/path/derived/derived-strategy.types.cjs +1 -0
- package/dist/debug/path/derived/derived-strategy.types.js +1 -0
- package/dist/debug/path/meta/MetaController.cjs +1 -0
- package/dist/debug/path/{MetaController.js → meta/MetaController.js} +58 -66
- package/dist/debug/path/meta/RaphMeta.cjs +1 -0
- package/dist/debug/path/meta/RaphMeta.js +62 -0
- package/dist/debug/path/meta/RaphMetaStore.cjs +1 -0
- package/dist/debug/path/{RaphMetaStore.js → meta/RaphMetaStore.js} +24 -30
- package/dist/debug/path/meta/meta.types.cjs +1 -0
- package/dist/debug/path/meta/meta.types.js +1 -0
- package/dist/debug/path/storage/AdapterPathStore.cjs +1 -0
- package/dist/debug/path/storage/AdapterPathStore.js +128 -0
- package/dist/debug/path/storage/DefaultDataAdapter.cjs +1 -0
- package/dist/debug/path/{data-adapter.js → storage/DefaultDataAdapter.js} +47 -57
- package/dist/debug/path/storage/PathEventHub.cjs +1 -0
- package/dist/debug/path/storage/PathEventHub.js +161 -0
- package/dist/debug/path/storage/PathStore.cjs +1 -0
- package/dist/debug/path/{PathStore.js → storage/PathStore.js} +88 -98
- package/dist/debug/path/storage/createDataDraft.cjs +1 -0
- package/dist/debug/path/{data-draft.js → storage/createDataDraft.js} +24 -28
- package/dist/debug/path/storage/data-adapter.types.cjs +1 -0
- package/dist/debug/path/storage/data-adapter.types.js +1 -0
- package/dist/debug/reactivity/disposal.cjs +1 -0
- package/dist/debug/reactivity/disposal.js +32 -0
- package/dist/debug/reactivity/engine.cjs +1 -1
- package/dist/debug/reactivity/engine.js +888 -321
- package/dist/debug/reactivity/reactive-object.cjs +1 -0
- package/dist/debug/reactivity/reactive-object.js +265 -0
- package/dist/debug/reactivity/scope.cjs +1 -1
- package/dist/debug/reactivity/scope.js +221 -117
- package/dist/debug/reactivity/watch.cjs +1 -1
- package/dist/debug/reactivity/watch.js +1 -1
- package/dist/debug/runtime/RaphRuntime.cjs +1 -1
- package/dist/debug/runtime/RaphRuntime.js +1134 -502
- package/dist/debug/runtime/diagnostics/RaphDebug.cjs +1 -0
- package/dist/debug/runtime/diagnostics/RaphDebug.js +287 -0
- package/dist/debug/runtime/errors.cjs +1 -1
- package/dist/debug/runtime/errors.js +6 -3
- package/dist/debug/runtime/ownership/RaphEffectScope.cjs +1 -0
- package/dist/debug/runtime/ownership/RaphEffectScope.js +304 -0
- package/dist/debug/runtime/ownership/RaphNode.cjs +1 -0
- package/dist/debug/runtime/ownership/RaphNode.js +665 -0
- package/dist/debug/runtime/ownership/RaphScope.cjs +1 -0
- package/dist/debug/runtime/ownership/RaphScope.js +236 -0
- package/dist/debug/runtime/ownership/parent-graph.types.cjs +1 -0
- package/dist/debug/runtime/ownership/parent-graph.types.js +1 -0
- package/dist/debug/runtime/phases/RaphFrameLoop.cjs +1 -0
- package/dist/debug/runtime/{RaphFrameLoop.js → phases/RaphFrameLoop.js} +13 -17
- package/dist/debug/runtime/phases/RaphPhasePipeline.cjs +1 -0
- package/dist/debug/runtime/phases/RaphPhasePipeline.js +848 -0
- package/dist/debug/runtime/phases/RaphPhaseTaskRecord.cjs +1 -0
- package/dist/debug/runtime/phases/RaphPhaseTaskRecord.js +176 -0
- package/dist/debug/runtime/phases/RaphPhaseWatch.cjs +1 -0
- package/dist/debug/runtime/phases/RaphPhaseWatch.js +20 -0
- package/dist/debug/runtime/phases/orderPhaseTasks.cjs +1 -0
- package/dist/debug/runtime/phases/orderPhaseTasks.js +59 -0
- package/dist/debug/runtime/reactivity/PathHandle.cjs +1 -0
- package/dist/debug/runtime/reactivity/PathHandle.js +165 -0
- package/dist/debug/runtime/reactivity/RaphMetaSource.cjs +1 -0
- package/dist/debug/runtime/reactivity/RaphMetaSource.js +108 -0
- package/dist/debug/runtime/reactivity/RaphSelector.cjs +1 -0
- package/dist/debug/runtime/reactivity/RaphSelector.js +503 -0
- package/dist/debug/runtime/reactivity/RaphWorkGraph.cjs +1 -0
- package/dist/debug/runtime/reactivity/RaphWorkGraph.js +1157 -0
- package/dist/debug/runtime/reactivity/RuntimeReactivity.cjs +1 -0
- package/dist/debug/runtime/reactivity/RuntimeReactivity.js +550 -0
- package/dist/debug/runtime/reactivity/RuntimeWatch.cjs +1 -0
- package/dist/debug/runtime/reactivity/RuntimeWatch.js +77 -0
- package/dist/debug/runtime/reactivity/disposal-sweep.utils.cjs +1 -0
- package/dist/debug/runtime/reactivity/disposal-sweep.utils.js +42 -0
- package/dist/debug/runtime/reactivity/runtime-reactivity.types.cjs +1 -0
- package/dist/debug/runtime/reactivity/runtime-reactivity.types.js +1 -0
- package/dist/entrypoints/machine-testing.d.ts +2 -0
- package/dist/entrypoints/machine.d.ts +5 -0
- package/dist/entrypoints/path.d.ts +14 -0
- package/dist/entrypoints/reactivity.d.ts +1 -0
- package/dist/entrypoints/runtime.d.ts +18 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +46 -38
- package/dist/machine/compiler.d.ts +71 -0
- package/dist/machine/core.d.ts +50 -0
- package/dist/machine/persistence.d.ts +5 -0
- package/dist/machine/runtime.d.ts +4 -0
- package/dist/machine/testing.d.ts +43 -0
- package/dist/machine/types.d.ts +155 -0
- package/dist/machine-testing.cjs +1 -0
- package/dist/machine-testing.js +188 -0
- package/dist/machine.cjs +1 -0
- package/dist/machine.js +822 -0
- package/dist/main.d.ts +20 -0
- package/dist/path/{data-path.d.ts → DataPath.d.ts} +16 -40
- package/dist/path/{path-router.d.ts → PathRouter.d.ts} +1 -1
- package/dist/path/RaphKernel.d.ts +37 -10
- package/dist/path/data-path.types.d.ts +34 -0
- package/dist/path/data-path.utils.d.ts +9 -0
- package/dist/path/{DerivedRegistry.d.ts → derived/DerivedRegistry.d.ts} +2 -2
- package/dist/path/{RaphDerivedHandle.d.ts → derived/RaphDerivedHandle.d.ts} +3 -3
- package/dist/path/derived/derived-collection.types.d.ts +12 -0
- package/dist/path/{derived-collection.d.ts → derived/derived-collection.utils.d.ts} +3 -13
- package/dist/path/{derived-strategies.d.ts → derived/derived-strategy.types.d.ts} +0 -3
- package/dist/path/derived/derived-strategy.utils.d.ts +4 -0
- package/dist/path/{MetaController.d.ts → meta/MetaController.d.ts} +4 -4
- package/dist/path/{RaphMeta.d.ts → meta/RaphMeta.d.ts} +2 -2
- package/dist/path/{RaphMetaStore.d.ts → meta/RaphMetaStore.d.ts} +1 -1
- package/dist/path/{meta.types.d.ts → meta/meta.types.d.ts} +2 -4
- package/dist/path/path.types.d.ts +3 -2
- package/dist/path/{segment-key.d.ts → pathSegmentKey.d.ts} +1 -1
- package/dist/path/{AdapterPathStore.d.ts → storage/AdapterPathStore.d.ts} +4 -4
- package/dist/path/{data-adapter.d.ts → storage/DefaultDataAdapter.d.ts} +2 -17
- package/dist/path/storage/PathEventHub.d.ts +62 -0
- package/dist/path/{PathStore.d.ts → storage/PathStore.d.ts} +7 -7
- package/dist/path/storage/data-adapter.types.d.ts +17 -0
- package/dist/path.cjs +1 -1
- package/dist/path.js +16 -16
- package/dist/raph.cjs +1 -1
- package/dist/raph.js +46 -38
- package/dist/reactivity/disposal.d.ts +14 -0
- package/dist/reactivity/engine.d.ts +193 -6
- package/dist/reactivity/reactive-object.d.ts +36 -0
- package/dist/reactivity/scope.d.ts +108 -30
- package/dist/reactivity/types.d.ts +25 -0
- package/dist/reactivity.cjs +1 -1
- package/dist/reactivity.js +12 -12
- package/dist/runtime/RaphRuntime.d.ts +319 -160
- package/dist/runtime/diagnostics/RaphDebug.d.ts +239 -0
- package/dist/runtime/errors.d.ts +5 -0
- package/dist/runtime/ownership/RaphEffectScope.d.ts +98 -0
- package/dist/runtime/ownership/RaphNode.d.ts +310 -0
- package/dist/runtime/ownership/RaphScope.d.ts +168 -0
- package/dist/runtime/{parent-graph.d.ts → ownership/parent-graph.types.d.ts} +0 -1
- package/dist/runtime/ownership/parentGraph.d.ts +3 -0
- package/dist/runtime/phases/RaphPhasePipeline.d.ts +253 -0
- package/dist/runtime/phases/RaphPhaseTaskRecord.d.ts +195 -0
- package/dist/runtime/phases/RaphPhaseWatch.d.ts +22 -0
- package/dist/runtime/phases/orderPhaseTasks.d.ts +6 -0
- package/dist/runtime/phases/phase.types.d.ts +171 -0
- package/dist/runtime/{PathHandle.d.ts → reactivity/PathHandle.d.ts} +14 -6
- package/dist/runtime/reactivity/RaphMetaSource.d.ts +32 -0
- package/dist/runtime/reactivity/RaphSelector.d.ts +338 -0
- package/dist/runtime/reactivity/RaphWorkGraph.d.ts +309 -0
- package/dist/runtime/reactivity/RuntimeReactivity.d.ts +293 -0
- package/dist/runtime/{RuntimeWatch.d.ts → reactivity/RuntimeWatch.d.ts} +12 -6
- package/dist/runtime/reactivity/disposal-sweep.utils.d.ts +19 -0
- package/dist/runtime/reactivity/runtime-reactivity.types.d.ts +56 -0
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.js +21 -16
- package/package.json +76 -35
- package/ReadMe.md +0 -153
- package/dist/api/public.d.ts +0 -22
- package/dist/debug/api/public.cjs +0 -1
- package/dist/debug/api/public.js +0 -40
- package/dist/debug/path/AdapterPathStore.cjs +0 -1
- package/dist/debug/path/AdapterPathStore.js +0 -133
- package/dist/debug/path/DerivedRegistry.cjs +0 -1
- package/dist/debug/path/DerivedRegistry.js +0 -157
- package/dist/debug/path/MetaController.cjs +0 -1
- package/dist/debug/path/PathEventHub.cjs +0 -1
- package/dist/debug/path/PathEventHub.js +0 -148
- package/dist/debug/path/PathStore.cjs +0 -1
- package/dist/debug/path/RaphDerivedHandle.cjs +0 -1
- package/dist/debug/path/RaphMeta.cjs +0 -1
- package/dist/debug/path/RaphMeta.js +0 -68
- package/dist/debug/path/RaphMetaStore.cjs +0 -1
- package/dist/debug/path/data-adapter.cjs +0 -1
- package/dist/debug/path/data-draft.cjs +0 -1
- package/dist/debug/path/data-path.cjs +0 -1
- package/dist/debug/path/data-path.js +0 -423
- package/dist/debug/path/derived-collection.cjs +0 -1
- package/dist/debug/path/path-router.cjs +0 -1
- package/dist/debug/path/path-router.js +0 -86
- package/dist/debug/path/public.cjs +0 -1
- package/dist/debug/path/public.js +0 -18
- package/dist/debug/runtime/PathHandle.cjs +0 -1
- package/dist/debug/runtime/PathHandle.js +0 -139
- package/dist/debug/runtime/RaphDebug.cjs +0 -1
- package/dist/debug/runtime/RaphDebug.js +0 -15
- package/dist/debug/runtime/RaphFrameLoop.cjs +0 -1
- package/dist/debug/runtime/RaphNode.cjs +0 -1
- package/dist/debug/runtime/RaphNode.js +0 -143
- package/dist/debug/runtime/RaphPhasePipeline.cjs +0 -1
- package/dist/debug/runtime/RaphPhasePipeline.js +0 -526
- package/dist/debug/runtime/RaphScope.cjs +0 -1
- package/dist/debug/runtime/RaphScope.js +0 -64
- package/dist/debug/runtime/RuntimeReactivity.cjs +0 -1
- package/dist/debug/runtime/RuntimeReactivity.js +0 -154
- package/dist/debug/runtime/RuntimeWatch.cjs +0 -1
- package/dist/debug/runtime/RuntimeWatch.js +0 -71
- package/dist/debug/runtime/public.cjs +0 -1
- package/dist/debug/runtime/public.js +0 -18
- package/dist/path/PathEventHub.d.ts +0 -48
- package/dist/path/public.d.ts +0 -14
- package/dist/runtime/RaphDebug.d.ts +0 -32
- package/dist/runtime/RaphNode.d.ts +0 -68
- package/dist/runtime/RaphPhasePipeline.d.ts +0 -133
- package/dist/runtime/RaphScope.d.ts +0 -50
- package/dist/runtime/RuntimeReactivity.d.ts +0 -40
- package/dist/runtime/phase.types.d.ts +0 -49
- package/dist/runtime/public.d.ts +0 -13
- package/dist/runtime/runtime-reactivity.types.d.ts +0 -9
- /package/dist/debug/path/{meta.types.cjs → data-path.types.cjs} +0 -0
- /package/dist/debug/path/{meta.types.js → data-path.types.js} +0 -0
- /package/dist/debug/{runtime/runtime-reactivity.types.cjs → path/derived/derived-collection.types.cjs} +0 -0
- /package/dist/debug/{runtime/runtime-reactivity.types.js → path/derived/derived-collection.types.js} +0 -0
- /package/dist/debug/path/{derived-strategies.cjs → derived/derived-strategy.utils.cjs} +0 -0
- /package/dist/debug/path/{derived-strategies.js → derived/derived-strategy.utils.js} +0 -0
- /package/dist/debug/path/{segment-key.cjs → pathSegmentKey.cjs} +0 -0
- /package/dist/debug/path/{segment-key.js → pathSegmentKey.js} +0 -0
- /package/dist/debug/runtime/{parent-graph.cjs → ownership/parentGraph.cjs} +0 -0
- /package/dist/debug/runtime/{parent-graph.js → ownership/parentGraph.js} +0 -0
- /package/dist/debug/runtime/{disposal.cjs → ownership/throwDisposalErrors.cjs} +0 -0
- /package/dist/debug/runtime/{disposal.js → ownership/throwDisposalErrors.js} +0 -0
- /package/dist/debug/runtime/{phase.types.cjs → phases/phase.types.cjs} +0 -0
- /package/dist/debug/runtime/{phase.types.js → phases/phase.types.js} +0 -0
- /package/dist/path/{data-draft.d.ts → storage/createDataDraft.d.ts} +0 -0
- /package/dist/runtime/{disposal.d.ts → ownership/throwDisposalErrors.d.ts} +0 -0
- /package/dist/runtime/{RaphFrameLoop.d.ts → phases/RaphFrameLoop.d.ts} +0 -0
package/dist/raph.js
CHANGED
|
@@ -1,40 +1,48 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { RaphSchedulerType as
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
1
|
+
import { RaphCapabilityError as e, RaphConfigurationError as p, RaphDefaultInstanceError as a, RaphError as t, RaphFacadeDisposedError as h } from "./debug/api/errors.js";
|
|
2
|
+
import { Raph as R } from "./debug/api/Raph.js";
|
|
3
|
+
import { RaphReactivityInstance as x } from "./debug/api/RaphReactivityInstance.js";
|
|
4
|
+
import { RaphActionError as n, RaphCrossRuntimeError as s, RaphDisposedError as c, RaphPhaseProcessError as l } from "./debug/runtime/errors.js";
|
|
5
|
+
import { parentGraph as E } from "./debug/runtime/ownership/parentGraph.js";
|
|
6
|
+
import { RaphEffectScope as u } from "./debug/runtime/ownership/RaphEffectScope.js";
|
|
7
|
+
import { RaphNode as P } from "./debug/runtime/ownership/RaphNode.js";
|
|
8
|
+
import { RaphScope as C } from "./debug/runtime/ownership/RaphScope.js";
|
|
9
|
+
import { orderPhaseTasks as S } from "./debug/runtime/phases/orderPhaseTasks.js";
|
|
10
|
+
import { RaphSchedulerType as g } from "./debug/runtime/phases/phase.types.js";
|
|
11
|
+
import { RaphRuntime as B } from "./debug/runtime/RaphRuntime.js";
|
|
12
|
+
import { PathHandle as I } from "./debug/runtime/reactivity/PathHandle.js";
|
|
13
|
+
import { DataPath as k } from "./debug/path/DataPath.js";
|
|
14
|
+
import { collectionByKey as G, filterByKey as M, full as N } from "./debug/path/derived/derived-strategy.utils.js";
|
|
15
|
+
import { RaphDerivedHandle as j, RaphDerivedTargetWriteError as q } from "./debug/path/derived/RaphDerivedHandle.js";
|
|
16
|
+
import { RaphMeta as z } from "./debug/path/meta/RaphMeta.js";
|
|
17
|
+
import { RaphKernel as L } from "./debug/path/RaphKernel.js";
|
|
18
|
+
import { DefaultDataAdapter as Q } from "./debug/path/storage/DefaultDataAdapter.js";
|
|
16
19
|
export {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
20
|
+
k as DataPath,
|
|
21
|
+
Q as DefaultDataAdapter,
|
|
22
|
+
I as PathHandle,
|
|
23
|
+
R as Raph,
|
|
24
|
+
n as RaphActionError,
|
|
25
|
+
e as RaphCapabilityError,
|
|
26
|
+
p as RaphConfigurationError,
|
|
27
|
+
s as RaphCrossRuntimeError,
|
|
28
|
+
a as RaphDefaultInstanceError,
|
|
29
|
+
j as RaphDerivedHandle,
|
|
30
|
+
q as RaphDerivedTargetWriteError,
|
|
31
|
+
c as RaphDisposedError,
|
|
32
|
+
u as RaphEffectScope,
|
|
33
|
+
t as RaphError,
|
|
34
|
+
h as RaphFacadeDisposedError,
|
|
35
|
+
L as RaphKernel,
|
|
36
|
+
z as RaphMeta,
|
|
37
|
+
P as RaphNode,
|
|
38
|
+
l as RaphPhaseProcessError,
|
|
39
|
+
x as RaphReactivityInstance,
|
|
40
|
+
B as RaphRuntime,
|
|
41
|
+
g as RaphSchedulerType,
|
|
42
|
+
C as RaphScope,
|
|
43
|
+
G as collectionByKey,
|
|
44
|
+
M as filterByKey,
|
|
45
|
+
N as full,
|
|
46
|
+
S as orderPhaseTasks,
|
|
47
|
+
E as parentGraph
|
|
40
48
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Failure of one completed disposal call; never thrown as a wrapper. @internal */
|
|
2
|
+
export interface DisposalFailure {
|
|
3
|
+
readonly error: unknown;
|
|
4
|
+
readonly hasUnrouted: boolean;
|
|
5
|
+
readonly completed?: {
|
|
6
|
+
readonly error: unknown;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/** An authored callback or a non-resource disposal stage failed. @internal */
|
|
10
|
+
export declare function unroutedDisposalFailure(error: unknown): DisposalFailure;
|
|
11
|
+
/** Combines only errors collected by this framework operation, without inspecting payloads. @internal */
|
|
12
|
+
export declare function combineDisposalFailures(failures: readonly DisposalFailure[] | undefined, message: string): DisposalFailure | undefined;
|
|
13
|
+
/** Public disposal exposes only the original raw payload. @internal */
|
|
14
|
+
export declare function throwDisposalFailure(failure: DisposalFailure | undefined): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComputedAccessHandle, Disposer, EffectCallback, EffectFactory, OwnedSource, ReactivityOptions, ReadonlySignal, Signal, SignalAccess, WatchCallback, WatchOptions, WatchSource, WritableComputedOptions } from './types';
|
|
1
|
+
import { ComputedAccessHandle, Disposer, EffectCallback, EffectFactory, EffectTask, OwnedSource, OwnedSourceHooks, ReactiveNode, ReactivityOptions, ReadonlySignal, Signal, SignalAccess, WatchCallback, WatchOptions, WatchSource, WritableComputedOptions } from './types';
|
|
2
2
|
import { ScopeNode } from './scope';
|
|
3
3
|
export { ScopeNode } from './scope';
|
|
4
4
|
export type { Disposer, EffectCallback, EffectScheduler, EffectTask, ReactivityOptions, ReadonlySignal, Signal, WatchCallback, WatchOptions, WatchSource, WatchValue, WritableComputedOptions, } from './types';
|
|
@@ -9,12 +9,14 @@ export type { Disposer, EffectCallback, EffectScheduler, EffectTask, ReactivityO
|
|
|
9
9
|
* синхронного движка не проверяет внешнюю политику на каждом эффекте.
|
|
10
10
|
*/
|
|
11
11
|
export declare class RaphReactivity {
|
|
12
|
+
private readonly adaptiveDependencyIndex;
|
|
12
13
|
private activeSub;
|
|
13
14
|
private batchDepth;
|
|
14
15
|
private effectReadIndex;
|
|
15
16
|
private effectWriteIndex;
|
|
16
17
|
private invalidationDepth;
|
|
17
18
|
private dependencyDepth;
|
|
19
|
+
private checkingDepth;
|
|
18
20
|
private flushingEffects;
|
|
19
21
|
private readonly effectQueue;
|
|
20
22
|
private readonly invalidationStack;
|
|
@@ -41,6 +43,11 @@ export declare class RaphReactivity {
|
|
|
41
43
|
* а peek() выполняет чтение с временно отключённым отслеживанием.
|
|
42
44
|
*/
|
|
43
45
|
signal<T>(initialValue: T): Signal<T>;
|
|
46
|
+
/**
|
|
47
|
+
* Возвращает стабильный глубокий Proxy для plain object или array.
|
|
48
|
+
* Object context и per-property sources создаются лениво внутри этого engine.
|
|
49
|
+
*/
|
|
50
|
+
reactive<T extends object>(value: T): T;
|
|
44
51
|
/**
|
|
45
52
|
* - `(1)` Создаёт ленивое вычисляемое значение только для чтения;
|
|
46
53
|
* - `(2)` Создаёт writable computed, сохраняя исходную функцию setter;
|
|
@@ -85,6 +92,8 @@ export declare class RaphReactivity {
|
|
|
85
92
|
* Поля внешней задачи и окончательной очистки добавляются только при необходимости.
|
|
86
93
|
*/
|
|
87
94
|
private allocateGraphRecord;
|
|
95
|
+
/** Creates a narrow Proxy adapter over the existing intrusive graph. */
|
|
96
|
+
private createReactivePropertySourceBridge;
|
|
88
97
|
/**
|
|
89
98
|
* Материализует signal в графе при первом отслеживаемом чтении
|
|
90
99
|
* и связывает его с активным потребителем.
|
|
@@ -119,8 +128,9 @@ export declare class RaphReactivity {
|
|
|
119
128
|
private writeSignalValue;
|
|
120
129
|
/**
|
|
121
130
|
* Возвращает кеш либо синхронно актуализирует вычисляемое значение.
|
|
122
|
-
* Неуспешное вычисление не считается значением.
|
|
123
|
-
*
|
|
131
|
+
* Неуспешное вычисление не считается значением. Ошибка getter сохраняет связь
|
|
132
|
+
* с активным потребителем для восстановления. Повторное чтение во время
|
|
133
|
+
* первого сбора зависимостей отклоняется до регистрации связи и чтения кеша.
|
|
124
134
|
*/
|
|
125
135
|
private readComputedValue;
|
|
126
136
|
/**
|
|
@@ -175,7 +185,7 @@ export declare class RaphReactivity {
|
|
|
175
185
|
/**
|
|
176
186
|
* Удаляет непрочитанный хвост зависимостей завершившегося запуска.
|
|
177
187
|
* trackedTail обозначает границу прочитанного префикса, а не неизменный конец списка.
|
|
178
|
-
*
|
|
188
|
+
* Ошибка cleanup не прерывает освобождение оставшегося хвоста зависимостей.
|
|
179
189
|
*/
|
|
180
190
|
private pruneUnreadDependencies;
|
|
181
191
|
/**
|
|
@@ -184,6 +194,10 @@ export declare class RaphReactivity {
|
|
|
184
194
|
* Также исправляет курсор поиска, если он указывал на удаляемую связь.
|
|
185
195
|
*/
|
|
186
196
|
private detachSubLink;
|
|
197
|
+
/** Завершает удаление producer-связи без вызова source cleanup. */
|
|
198
|
+
private unlinkSubLink;
|
|
199
|
+
/** Connects Runtime ownership metadata only for edges whose producer opted in. */
|
|
200
|
+
private attachDependencyCleanup;
|
|
187
201
|
/**
|
|
188
202
|
* Отсоединяет owned-источник сразу с обеих сторон каждой связи.
|
|
189
203
|
* Вызывается на границе lifetime, а не при обычных чтениях и записях.
|
|
@@ -207,6 +221,7 @@ export declare class RaphReactivity {
|
|
|
207
221
|
* не выполняет. Непосредственное и потенциальное изменения отмечает разными флагами.
|
|
208
222
|
*/
|
|
209
223
|
private propagateInvalidation;
|
|
224
|
+
private markActiveChecks;
|
|
210
225
|
/**
|
|
211
226
|
* Помечает работающего потребителя, только если затронута уже прочитанная связь.
|
|
212
227
|
* Связи за trackedTail принадлежат прошлому запуску и не означают повторную invalidation.
|
|
@@ -227,6 +242,8 @@ export declare class RaphReactivity {
|
|
|
227
242
|
* Неверное значение в кеш не записывается.
|
|
228
243
|
*/
|
|
229
244
|
private recomputeValue;
|
|
245
|
+
/** Сохраняет первичную ошибку и отдельные ошибки cleanup при восстановлении. */
|
|
246
|
+
private failComputedValue;
|
|
230
247
|
/**
|
|
231
248
|
* Восстанавливает связи и состояния после неудачного getter.
|
|
232
249
|
* Отдельная функция удерживает обработку исключений вне обычной части пересчёта.
|
|
@@ -240,6 +257,8 @@ export declare class RaphReactivity {
|
|
|
240
257
|
* узлов текущего прохода; порядок успешного обхода не меняется.
|
|
241
258
|
*/
|
|
242
259
|
private refreshDependencies;
|
|
260
|
+
/** Settles every direct dependency so a cancelled external delivery can be re-armed. */
|
|
261
|
+
private settleCancelledDependencies;
|
|
243
262
|
/**
|
|
244
263
|
* Выполняет исходный итеративный обход зависимостей без обработки ошибок внутри цикла.
|
|
245
264
|
* Перед пользовательским вычислением публикует активную высоту стека; оболочка
|
|
@@ -278,6 +297,7 @@ export declare class RaphReactivity {
|
|
|
278
297
|
* Ошибка одного элемента не оставляет необработанные записи со старым SCHEDULED.
|
|
279
298
|
*/
|
|
280
299
|
private flushExternalEffects;
|
|
300
|
+
private markRecoveryDependencies;
|
|
281
301
|
/**
|
|
282
302
|
* Завершает очередь после первой ошибки, собирая последующие причины сбоя.
|
|
283
303
|
* Вызывается только на ошибочном пути; успешный проход не создаёт массив ошибок
|
|
@@ -290,6 +310,7 @@ export declare class RaphReactivity {
|
|
|
290
310
|
* чтобы последующая запись могла снова запросить выполнение.
|
|
291
311
|
*/
|
|
292
312
|
private requestEffectTask;
|
|
313
|
+
private scheduleEffectTask;
|
|
293
314
|
/**
|
|
294
315
|
* Окончательно останавливает эффект и освобождает все принадлежащие ему ресурсы.
|
|
295
316
|
* Сначала делает узел неактивным и отсоединяет связи, затем отменяет задачу,
|
|
@@ -339,13 +360,13 @@ export declare class RaphReactivity {
|
|
|
339
360
|
*
|
|
340
361
|
* @internal
|
|
341
362
|
*/
|
|
342
|
-
_ownedSignal<T>(initialValue: T): OwnedSource<Signal<T>>;
|
|
363
|
+
_ownedSignal<T>(initialValue: T, sourceHooks?: OwnedSourceHooks): OwnedSource<Signal<T>>;
|
|
343
364
|
/**
|
|
344
365
|
* Создаёт ленивый computed с финализатором исходящих и входящих связей.
|
|
345
366
|
* Финализатор работает и до первого вычисления, не материализуя узел ради очистки.
|
|
346
367
|
* @internal
|
|
347
368
|
*/
|
|
348
|
-
_ownedComputed<T>(fn: () => T): OwnedSource<ReadonlySignal<T>>;
|
|
369
|
+
_ownedComputed<T>(fn: () => T, sourceHooks?: OwnedSourceHooks): OwnedSource<ReadonlySignal<T>>;
|
|
349
370
|
/**
|
|
350
371
|
* Открывает вложенную синхронную границу группировки.
|
|
351
372
|
* Внутренний вызывающий код обязан выполнить соответствующий endBatch().
|
|
@@ -368,8 +389,174 @@ export declare class RaphReactivity {
|
|
|
368
389
|
* @internal
|
|
369
390
|
*/
|
|
370
391
|
_isFlushingEffects(): boolean;
|
|
392
|
+
/**
|
|
393
|
+
* Создаёт запись графа для эффекта с внешним планированием и подключает его
|
|
394
|
+
* постоянную задачу. Запуск ещё не запрошен: вызывающий слой сохраняет запись
|
|
395
|
+
* и затем вызывает _requestTaskEffect(). Запись, созданная во время работы
|
|
396
|
+
* другого эффекта, становится его вложенным ресурсом.
|
|
397
|
+
* @internal
|
|
398
|
+
*/
|
|
399
|
+
_allocateTaskEffect(fn: EffectCallback, task: EffectTask): ReactiveNode;
|
|
400
|
+
/**
|
|
401
|
+
* Запрашивает первый запуск эффекта с задачей. При `schedule` задача получает
|
|
402
|
+
* schedule(), как на пути scheduler bind; без него вызывающий слой уже сам
|
|
403
|
+
* поставил задачу в очередь, и запись только помечается запланированной.
|
|
404
|
+
* Если метод бросает исключение, запись освобождает вызывающий слой.
|
|
405
|
+
* @internal
|
|
406
|
+
*/
|
|
407
|
+
_requestTaskEffect(node: ReactiveNode, schedule: boolean): void;
|
|
408
|
+
/**
|
|
409
|
+
* Открывает одну доставку эффекта с задачей. Возвращает false для устаревшей
|
|
410
|
+
* доставки: запись остановлена или запуск больше не запланирован.
|
|
411
|
+
* @internal
|
|
412
|
+
*/
|
|
413
|
+
_beginTaskEffectRun(node: ReactiveNode): boolean;
|
|
414
|
+
/**
|
|
415
|
+
* Выполняет доставку, открытую через _beginTaskEffectRun(), вне активного
|
|
416
|
+
* потребителя и затем обрабатывает очередь эффектов, в том числе после
|
|
417
|
+
* неудачного запуска; при двух сбоях передаёт обе причины.
|
|
418
|
+
* @internal
|
|
419
|
+
*/
|
|
420
|
+
_finishTaskEffectRun(node: ReactiveNode): void;
|
|
421
|
+
/**
|
|
422
|
+
* Гасит ожидающую доставку, от которой отказывается задача. Вызывающий слой
|
|
423
|
+
* не должен отменять доставку до первого запуска: зависимости до него ещё не
|
|
424
|
+
* собраны. Возвращает false, если запись уже остановлена.
|
|
425
|
+
* @internal
|
|
426
|
+
*/
|
|
427
|
+
_cancelTaskEffect(node: ReactiveNode): boolean;
|
|
428
|
+
/**
|
|
429
|
+
* Делает следующую доставку исполняемой и снова планирует задачу. Нужен,
|
|
430
|
+
* когда invalidation пришла после снимка текущей доставки: её запуск
|
|
431
|
+
* расходует предыдущее dirty-состояние.
|
|
432
|
+
* @internal
|
|
433
|
+
*/
|
|
434
|
+
_rearmTaskEffect(node: ReactiveNode): void;
|
|
435
|
+
/**
|
|
436
|
+
* Окончательно останавливает эффект с задачей. Engine один раз вызывает
|
|
437
|
+
* task.dispose() изнутри, поэтому задача может направлять собственное
|
|
438
|
+
* освобождение через этот метод.
|
|
439
|
+
* @internal
|
|
440
|
+
*/
|
|
441
|
+
_disposeTaskEffect(node: ReactiveNode): void;
|
|
442
|
+
/**
|
|
443
|
+
* Материализует signal для активного потребителя и связывает их. Без
|
|
444
|
+
* потребителя возвращает undefined: signal остаётся значением у вызывающего
|
|
445
|
+
* слоя. После материализации значением владеет запись.
|
|
446
|
+
* @internal
|
|
447
|
+
*/
|
|
448
|
+
_trackSignalNode<T>(value: T, sourceHooks: OwnedSourceHooks): ReactiveNode<T> | undefined;
|
|
449
|
+
/**
|
|
450
|
+
* Читает материализованный signal и регистрирует зависимость активного
|
|
451
|
+
* потребителя.
|
|
452
|
+
* @internal
|
|
453
|
+
*/
|
|
454
|
+
_readSignalNode<T>(node: ReactiveNode<T>): T;
|
|
455
|
+
/**
|
|
456
|
+
* Читает материализованный signal без подписки текущего потребителя;
|
|
457
|
+
* pending-значение фиксируется так же, как при обычном чтении.
|
|
458
|
+
* @internal
|
|
459
|
+
*/
|
|
460
|
+
_peekSignalNode<T>(node: ReactiveNode<T>): T;
|
|
461
|
+
/**
|
|
462
|
+
* Возвращает значение, которое увидит следующее чтение: pending-значение
|
|
463
|
+
* незавершённой группировки либо зафиксированное. Ничего не фиксирует.
|
|
464
|
+
* @internal
|
|
465
|
+
*/
|
|
466
|
+
_visibleSignalValue<T>(node: ReactiveNode<T>): T;
|
|
467
|
+
/**
|
|
468
|
+
* Записывает значение материализованного signal с обычной семантикой batch.
|
|
469
|
+
* @internal
|
|
470
|
+
*/
|
|
471
|
+
_writeSignalNode<T>(node: ReactiveNode<T>, value: T): void;
|
|
472
|
+
/**
|
|
473
|
+
* Сообщает, есть ли у материализованного signal потребители в графе.
|
|
474
|
+
* @internal
|
|
475
|
+
*/
|
|
476
|
+
_signalNodeHasSubscribers(node: ReactiveNode): boolean;
|
|
477
|
+
/**
|
|
478
|
+
* Отсоединяет материализованный signal от потребителей и освобождает его
|
|
479
|
+
* значения. Значения освобождаются и при сбое отсоединения. Поля pending
|
|
480
|
+
* сбрасываются, только если запись их получала: запись без группировок не
|
|
481
|
+
* меняет набор своих полей при освобождении.
|
|
482
|
+
* @internal
|
|
483
|
+
*/
|
|
484
|
+
_releaseSignalNode(node: ReactiveNode): void;
|
|
485
|
+
/**
|
|
486
|
+
* Ищет среди текущих потребителей записи первого, чьего владельца принимает
|
|
487
|
+
* accept, и возвращает этого владельца. Владелец потребителя определяется
|
|
488
|
+
* так же, как при привязке ребра через onDependency: у computed это
|
|
489
|
+
* dependencyOwner его source hooks, у эффекта — dependencyOwner его задачи.
|
|
490
|
+
* Потребители без владельца пропускаются. Обход идёт в порядке списка
|
|
491
|
+
* потребителей, ничего не выделяет и не меняет граф; accept не должен менять
|
|
492
|
+
* связи этой записи.
|
|
493
|
+
* @param node Материализованная запись производителя.
|
|
494
|
+
* @param accept Проверка владельца потребителя; context передаётся ей без closure.
|
|
495
|
+
* @param context Произвольное значение вызывающего слоя для accept.
|
|
496
|
+
* @internal
|
|
497
|
+
*/
|
|
498
|
+
_findSubscriberOwner<Context>(node: ReactiveNode, accept: (owner: object, context: Context) => boolean, context: Context): object | undefined;
|
|
499
|
+
/**
|
|
500
|
+
* Возвращает владельца активного потребителя: того, кому engine привязал бы
|
|
501
|
+
* ребро следующего отслеживаемого чтения. Владелец определяется так же, как
|
|
502
|
+
* в _findSubscriberOwner(). Без активного потребителя и у потребителя без
|
|
503
|
+
* владельца результат undefined. Метод ничего не выделяет и не меняет граф.
|
|
504
|
+
*
|
|
505
|
+
* Вызывающий слой проверяет по этому владельцу допустимость чтения, когда
|
|
506
|
+
* его собственный контекст снят, а потребитель engine остался активным.
|
|
507
|
+
* @internal
|
|
508
|
+
*/
|
|
509
|
+
_activeSubscriberOwner(): object | undefined;
|
|
510
|
+
/**
|
|
511
|
+
* Увеличивает счётчик материализованного signal и уведомляет его
|
|
512
|
+
* потребителей. Без потребителей ничего не пишет и возвращает false.
|
|
513
|
+
*
|
|
514
|
+
* Сдвиг — обычная запись signal. Вне группировки она прямая: счётчик
|
|
515
|
+
* фиксируется сразу, а потребитель становится обязательным к пересчёту, в
|
|
516
|
+
* том числе тот, кто ждал только проверки зависимостей или стоит на стеке
|
|
517
|
+
* идущей проверки. Внутри группировки и у записи с ещё не прочитанным
|
|
518
|
+
* отложенным сдвигом запись откладывается до первого чтения, как любая запись
|
|
519
|
+
* внутри batch().
|
|
520
|
+
*
|
|
521
|
+
* Потребитель, который выполняется в момент прямого сдвига, получает его по
|
|
522
|
+
* общему правилу записи во время запуска: у записи не остаётся отложенного
|
|
523
|
+
* сдвига, который позже подтвердил бы ему изменение.
|
|
524
|
+
*
|
|
525
|
+
* Очередь эффектов обрабатывается на выходе, если группировки нет: отложенная
|
|
526
|
+
* запись сама её не обрабатывает, а потребитель, которого она поставила в
|
|
527
|
+
* очередь, не должен ждать следующей записи.
|
|
528
|
+
* @internal
|
|
529
|
+
*/
|
|
530
|
+
_bumpSignalNode(node: ReactiveNode<number>): boolean;
|
|
531
|
+
/**
|
|
532
|
+
* Создаёт запись-счётчик для активного потребителя и связывает их; без
|
|
533
|
+
* потребителя возвращает undefined. Счётчик начинается с нуля и сдвигается
|
|
534
|
+
* через _bumpSignalNode().
|
|
535
|
+
*
|
|
536
|
+
* Счётчик — производитель без собственных зависимостей. Граф читает у него
|
|
537
|
+
* то же, что у записи signal в роли производителя: признаки, список
|
|
538
|
+
* потребителей, отсутствие getter, значение и source hooks. Полей списка
|
|
539
|
+
* зависимостей у записи нет, а hooks лежат в ней самой: счётчик стоит одной
|
|
540
|
+
* аллокации из шести полей, а запись signal с hooks — двух. Поля отложенной
|
|
541
|
+
* записи появляются у счётчика с первым сдвигом.
|
|
542
|
+
* @internal
|
|
543
|
+
*/
|
|
544
|
+
_trackCounterNode(sourceHooks: OwnedSourceHooks): ReactiveNode<number> | undefined;
|
|
545
|
+
/**
|
|
546
|
+
* Возвращает постоянную задачу активного потребителя. Engine делает запись
|
|
547
|
+
* эффекта активным потребителем непосредственно перед вызовом её тела,
|
|
548
|
+
* поэтому первое обращение из тела возвращает задачу именно этого эффекта,
|
|
549
|
+
* какие бы доставки ни выполнил cleanup его прошлого запуска.
|
|
550
|
+
*
|
|
551
|
+
* Без активного потребителя и у потребителя без задачи — computed либо
|
|
552
|
+
* эффекта, созданного без внешнего планирования, — результат undefined.
|
|
553
|
+
* Метод ничего не выделяет и не меняет граф.
|
|
554
|
+
* @internal
|
|
555
|
+
*/
|
|
556
|
+
_activeEffectTask(): EffectTask | undefined;
|
|
371
557
|
}
|
|
372
558
|
export declare const signal: RaphReactivity['signal'];
|
|
559
|
+
export declare const reactive: RaphReactivity['reactive'];
|
|
373
560
|
export declare function computed<T>(getter: () => T): ReadonlySignal<T>;
|
|
374
561
|
export declare function computed<T>(options: WritableComputedOptions<T>): Signal<T>;
|
|
375
562
|
export declare const effect: RaphReactivity['effect'];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opaque per-property producer used by the reactive-object adapter.
|
|
3
|
+
* The concrete record belongs to RaphReactivity's existing intrusive graph.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export type ReactivePropertySource = object;
|
|
7
|
+
/**
|
|
8
|
+
* The only bridge between Proxy bookkeeping and the reactive graph internals.
|
|
9
|
+
* It deliberately exposes operations instead of graph fields or subclass hooks.
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export interface ReactivePropertySourceBridge {
|
|
13
|
+
readonly batch: <T>(operation: () => T) => T;
|
|
14
|
+
readonly create: () => ReactivePropertySource;
|
|
15
|
+
readonly isTracking: () => boolean;
|
|
16
|
+
readonly track: (source: ReactivePropertySource) => void;
|
|
17
|
+
readonly trigger: (source: ReactivePropertySource) => void;
|
|
18
|
+
}
|
|
19
|
+
/** Runtime policy installed for one RuntimeReactivity instance. @internal */
|
|
20
|
+
export interface ReactiveObjectPolicy {
|
|
21
|
+
readonly owner?: object;
|
|
22
|
+
readonly assertRead?: () => void;
|
|
23
|
+
readonly assertWrite?: () => void;
|
|
24
|
+
readonly runWrite?: <T>(operation: () => T) => T;
|
|
25
|
+
readonly throwForeign?: (owner: object | undefined) => never;
|
|
26
|
+
}
|
|
27
|
+
/** Associates Runtime lifecycle policy with an engine without widening its public class API. @internal */
|
|
28
|
+
export declare function configureReactiveObjectPolicy(engine: object, policy: ReactiveObjectPolicy): void;
|
|
29
|
+
/** Releases a Runtime-owned context while retained proxies become inert handles. @internal */
|
|
30
|
+
export declare function disposeReactiveObjectContext(engine: object, disposedPolicy?: ReactiveObjectPolicy): void;
|
|
31
|
+
/**
|
|
32
|
+
* Returns one stable Proxy per raw object inside one RaphReactivity instance.
|
|
33
|
+
* The context and both WeakMaps are allocated only after the first call.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare function reactiveObject<T extends object>(engine: object, value: T, createBridge: () => ReactivePropertySourceBridge): T;
|
|
@@ -1,13 +1,26 @@
|
|
|
1
|
+
import { DisposalFailure } from './disposal';
|
|
1
2
|
import { RaphReactivity } from './engine';
|
|
2
3
|
import { Disposer, EffectCallback, OwnedResource, OwnedSource, ReadonlySignal, ScopeChildren, ScopeLink, Signal, SourceFinalizer, WatchCallback, WatchOptions, WatchSource, WritableComputedOptions } from './types';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* через владельца. Класс не является узлом графа зависимостей.
|
|
5
|
+
* Запись источника в списке владельца: сама хранит связь с соседом и сама
|
|
6
|
+
* освобождает источник, поэтому владельцу не нужна отдельная коллекция.
|
|
7
|
+
* @internal
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
10
|
-
|
|
9
|
+
export interface OwnedSourceEntry {
|
|
10
|
+
_previousSource: OwnedSourceEntry | undefined;
|
|
11
|
+
_finalizeSource: () => boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Общая основа владельцев: список ресурсов, список источников и признаки
|
|
15
|
+
* lifetime лежат в самом владельце. ScopeNode добавляет standalone API,
|
|
16
|
+
* RaphScope — Runtime API; отдельного объекта-хранилища у владельца нет.
|
|
17
|
+
*
|
|
18
|
+
* Поля объявлены через `declare` и присваиваются в constructor в одном
|
|
19
|
+
* порядке: все владельцы одного класса получают один hidden class, а сборка с
|
|
20
|
+
* любым target не превращает объявления в вызовы field-helper.
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export declare abstract class ScopeOwner implements ScopeChildren<OwnedResource> {
|
|
11
24
|
/**
|
|
12
25
|
* Первый зарегистрированный ресурс; не является ребёнком execution-дерева.
|
|
13
26
|
* @internal
|
|
@@ -19,14 +32,11 @@ export declare class ScopeNode {
|
|
|
19
32
|
*/
|
|
20
33
|
scopeLastChild: OwnedResource | undefined;
|
|
21
34
|
private _resourceCount;
|
|
22
|
-
private
|
|
35
|
+
private _lastSource;
|
|
36
|
+
private _sourceCount;
|
|
23
37
|
protected _disposed: boolean;
|
|
24
38
|
protected _disposing: boolean;
|
|
25
|
-
|
|
26
|
-
* Связывает владельца с реактивным экземпляром без создания нового графа.
|
|
27
|
-
* @param reactivity Экземпляр, в котором создаются owned-ресурсы.
|
|
28
|
-
*/
|
|
29
|
-
constructor(reactivity: RaphReactivity);
|
|
39
|
+
constructor();
|
|
30
40
|
/**
|
|
31
41
|
* Показывает, началось ли окончательное освобождение владельца.
|
|
32
42
|
*/
|
|
@@ -35,6 +45,88 @@ export declare class ScopeNode {
|
|
|
35
45
|
* Разрешает регистрацию и доступ только до начала освобождения.
|
|
36
46
|
*/
|
|
37
47
|
get active(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Возвращает число ещё не освобождённых записей ресурсов.
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
_debugResourceCount(): number;
|
|
53
|
+
/**
|
|
54
|
+
* Возвращает число зарегистрированных источников; после начала их
|
|
55
|
+
* финализации владелец источников не числит.
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
_debugSourceCount(): number;
|
|
59
|
+
/**
|
|
60
|
+
* Возвращает последний зарегистрированный источник: с него по связям
|
|
61
|
+
* `_previousSource` обходится список источников владельца от нового к
|
|
62
|
+
* старому. С началом финализации владелец источников не числит, и метод
|
|
63
|
+
* возвращает undefined. Обход не должен регистрировать и освобождать
|
|
64
|
+
* источники этого владельца.
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
_lastOwnedSource(): OwnedSourceEntry | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Вынимает запись ресурса из списка владельца и уменьшает счётчик. Запись
|
|
70
|
+
* вызывает метод из своего dispose() до пользовательского cleanup, иначе
|
|
71
|
+
* освобождение владельца не продвинется по списку. Повторный вызов и запись
|
|
72
|
+
* другого владельца безопасно игнорируются.
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
_releaseRecord(entry: OwnedResource): void;
|
|
76
|
+
/**
|
|
77
|
+
* Ставит cleanup в конец списка ресурсов и возвращает его однократный stop.
|
|
78
|
+
* Lifetime не проверяет: это делает вызывающий метод владельца.
|
|
79
|
+
*
|
|
80
|
+
* Stop захватывает только запись, а не владельца: снятая запись теряет ссылку
|
|
81
|
+
* на владельца, поэтому удержанный stop не удерживает ни его, ни соседние
|
|
82
|
+
* записи.
|
|
83
|
+
*/
|
|
84
|
+
protected _ownCleanup(cleanup: Disposer): Disposer;
|
|
85
|
+
/** Registers a framework cleanup; the public stop still exposes only raw failure. */
|
|
86
|
+
protected _ownCompleted(cleanup: () => DisposalFailure | undefined): Disposer;
|
|
87
|
+
/**
|
|
88
|
+
* Ставит готовую запись ресурса в конец списка без обёртки и closure: запись
|
|
89
|
+
* сама является элементом списка владельца. Её dispose() обязан сначала
|
|
90
|
+
* вызвать _releaseRecord(), иначе освобождение владельца не продвинется по
|
|
91
|
+
* списку. Предусловие: запись не состоит в другом списке.
|
|
92
|
+
* Lifetime не проверяет: это делает вызывающий метод владельца.
|
|
93
|
+
*/
|
|
94
|
+
protected _ownRecord(entry: OwnedResource): void;
|
|
95
|
+
/**
|
|
96
|
+
* Ставит функцию-финализатор источника в список источников владельца.
|
|
97
|
+
* Lifetime не проверяет: это делает вызывающий метод владельца.
|
|
98
|
+
*/
|
|
99
|
+
protected _ownSourceFinalizer(finalizer: SourceFinalizer): void;
|
|
100
|
+
/**
|
|
101
|
+
* Ставит готовую запись источника в список источников владельца без обёртки:
|
|
102
|
+
* источник сам является элементом списка и сам освобождает себя через
|
|
103
|
+
* _finalizeSource(). Предусловие: запись не состоит в другом списке.
|
|
104
|
+
* Lifetime не проверяет: это делает вызывающий метод владельца.
|
|
105
|
+
*/
|
|
106
|
+
protected _ownSourceEntry(entry: OwnedSourceEntry): void;
|
|
107
|
+
/**
|
|
108
|
+
* Освобождает ресурсы в обратном порядке регистрации, затем финализирует
|
|
109
|
+
* источники. Сбой одной записи не останавливает остальные; массив ошибок
|
|
110
|
+
* создаётся только при первой ошибке.
|
|
111
|
+
*/
|
|
112
|
+
protected _releaseOwned(): DisposalFailure[] | undefined;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Универсальный владелец ресурсов без фаз, путей и зависимости от Runtime.
|
|
116
|
+
* Хранит ресурсы в двусвязном списке и освобождает их в обратном порядке.
|
|
117
|
+
* Проверки lifetime выполняют только owned handles; свободные signal() не проходят
|
|
118
|
+
* через владельца. Класс не является узлом графа зависимостей.
|
|
119
|
+
*/
|
|
120
|
+
export declare class ScopeNode extends ScopeOwner {
|
|
121
|
+
/**
|
|
122
|
+
* Экземпляр, в котором создаются owned-ресурсы.
|
|
123
|
+
*/
|
|
124
|
+
readonly reactivity: RaphReactivity;
|
|
125
|
+
/**
|
|
126
|
+
* Связывает владельца с реактивным экземпляром без создания нового графа.
|
|
127
|
+
* @param reactivity Экземпляр, в котором создаются owned-ресурсы.
|
|
128
|
+
*/
|
|
129
|
+
constructor(reactivity: RaphReactivity);
|
|
38
130
|
/**
|
|
39
131
|
* Создаёт owned signal и регистрирует его финализатор.
|
|
40
132
|
* Все методы возвращённого handle проверяют, что владелец ещё активен.
|
|
@@ -62,16 +154,6 @@ export declare class ScopeNode {
|
|
|
62
154
|
* Если владелец уже неактивен, выполняет cleanup сразу и возвращает пустой disposer.
|
|
63
155
|
*/
|
|
64
156
|
own(disposer: Disposer): Disposer;
|
|
65
|
-
/**
|
|
66
|
-
* Возвращает число ещё не освобождённых записей ресурсов.
|
|
67
|
-
* @internal
|
|
68
|
-
*/
|
|
69
|
-
_debugResourceCount(): number;
|
|
70
|
-
/**
|
|
71
|
-
* Возвращает число зарегистрированных финализаторов источников.
|
|
72
|
-
* @internal
|
|
73
|
-
*/
|
|
74
|
-
_debugSourceCount(): number;
|
|
75
157
|
/**
|
|
76
158
|
* Освобождает ресурсы в обратном порядке, затем финализирует источники.
|
|
77
159
|
* Повторный вызов безопасен. Ошибки cleanup и завершающего hook собираются
|
|
@@ -100,6 +182,8 @@ export declare class ScopeNode {
|
|
|
100
182
|
/**
|
|
101
183
|
* Добавляет финализатор источника. Возвращённый им false означает повторную попытку
|
|
102
184
|
* после прогресса других финализаторов, а не успешное освобождение.
|
|
185
|
+
* Каждая регистрация — отдельный источник: одинаковые финализаторы владелец
|
|
186
|
+
* не объединяет, и функция, переданная дважды, будет вызвана дважды.
|
|
103
187
|
* @internal
|
|
104
188
|
*/
|
|
105
189
|
_ownSource(finalizer: SourceFinalizer): void;
|
|
@@ -118,17 +202,11 @@ export declare class ScopeNode {
|
|
|
118
202
|
* Возвращает сообщение для AggregateError при нескольких ошибках освобождения.
|
|
119
203
|
*/
|
|
120
204
|
protected _disposalMessage(): string;
|
|
121
|
-
/**
|
|
122
|
-
* Освобождает источники в обратном порядке регистрации с повторными попытками.
|
|
123
|
-
* Если в проходе не было прогресса, прекращает обход, сохраняя существующий контракт.
|
|
124
|
-
* Исключение одного финализатора не блокирует остальные.
|
|
125
|
-
*/
|
|
126
|
-
private _finalizeSources;
|
|
127
205
|
}
|
|
128
206
|
/**
|
|
129
207
|
* Добавляет дочерний ресурс в конец списка владельца без отдельной обёртки связей.
|
|
130
|
-
* Предусловие: ребёнок ещё не находится в другом списке.
|
|
131
|
-
*
|
|
208
|
+
* Предусловие: ребёнок ещё не находится в другом списке. Используется записями
|
|
209
|
+
* вложенных эффектов; владельцы ведут свой список ресурсов сами.
|
|
132
210
|
* @internal
|
|
133
211
|
*/
|
|
134
212
|
export declare function appendScopeChild<T extends ScopeLink<T>>(parent: ScopeChildren<T>, child: T): void;
|