@raphy-js/raph 1.0.0-dev.2
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/LICENSE +202 -0
- package/ReadMe.md +153 -0
- package/dist/api/Raph.d.ts +228 -0
- package/dist/api/errors.d.ts +20 -0
- package/dist/api/public.d.ts +22 -0
- package/dist/api/types.d.ts +25 -0
- package/dist/debug/api/Raph.cjs +1 -0
- package/dist/debug/api/Raph.js +419 -0
- package/dist/debug/api/errors.cjs +1 -0
- package/dist/debug/api/errors.js +14 -0
- package/dist/debug/api/public.cjs +1 -0
- package/dist/debug/api/public.js +40 -0
- package/dist/debug/api/types.cjs +1 -0
- package/dist/debug/api/types.js +1 -0
- package/dist/debug/path/AdapterPathStore.cjs +1 -0
- package/dist/debug/path/AdapterPathStore.js +133 -0
- package/dist/debug/path/DerivedRegistry.cjs +1 -0
- package/dist/debug/path/DerivedRegistry.js +157 -0
- package/dist/debug/path/MetaController.cjs +1 -0
- package/dist/debug/path/MetaController.js +214 -0
- package/dist/debug/path/PathEventHub.cjs +1 -0
- package/dist/debug/path/PathEventHub.js +148 -0
- package/dist/debug/path/PathStore.cjs +1 -0
- package/dist/debug/path/PathStore.js +326 -0
- package/dist/debug/path/RaphDerivedHandle.cjs +1 -0
- package/dist/debug/path/RaphDerivedHandle.js +125 -0
- package/dist/debug/path/RaphKernel.cjs +1 -0
- package/dist/debug/path/RaphKernel.js +636 -0
- package/dist/debug/path/RaphMeta.cjs +1 -0
- package/dist/debug/path/RaphMeta.js +68 -0
- package/dist/debug/path/RaphMetaStore.cjs +1 -0
- package/dist/debug/path/RaphMetaStore.js +184 -0
- package/dist/debug/path/data-adapter.cjs +1 -0
- package/dist/debug/path/data-adapter.js +356 -0
- package/dist/debug/path/data-draft.cjs +1 -0
- package/dist/debug/path/data-draft.js +71 -0
- package/dist/debug/path/data-path.cjs +1 -0
- package/dist/debug/path/data-path.js +423 -0
- package/dist/debug/path/derived-collection.cjs +1 -0
- package/dist/debug/path/derived-collection.js +179 -0
- package/dist/debug/path/derived-strategies.cjs +1 -0
- package/dist/debug/path/derived-strategies.js +20 -0
- package/dist/debug/path/meta.types.cjs +1 -0
- package/dist/debug/path/meta.types.js +1 -0
- package/dist/debug/path/path-router.cjs +1 -0
- package/dist/debug/path/path-router.js +86 -0
- package/dist/debug/path/path.types.cjs +1 -0
- package/dist/debug/path/path.types.js +1 -0
- package/dist/debug/path/public.cjs +1 -0
- package/dist/debug/path/public.js +18 -0
- package/dist/debug/path/segment-key.cjs +1 -0
- package/dist/debug/path/segment-key.js +12 -0
- package/dist/debug/reactivity/engine.cjs +1 -0
- package/dist/debug/reactivity/engine.js +1133 -0
- package/dist/debug/reactivity/scope.cjs +1 -0
- package/dist/debug/reactivity/scope.js +274 -0
- package/dist/debug/reactivity/types.cjs +1 -0
- package/dist/debug/reactivity/types.js +1 -0
- package/dist/debug/reactivity/watch.cjs +1 -0
- package/dist/debug/reactivity/watch.js +64 -0
- package/dist/debug/runtime/PathHandle.cjs +1 -0
- package/dist/debug/runtime/PathHandle.js +139 -0
- package/dist/debug/runtime/RaphDebug.cjs +1 -0
- package/dist/debug/runtime/RaphDebug.js +15 -0
- package/dist/debug/runtime/RaphFrameLoop.cjs +1 -0
- package/dist/debug/runtime/RaphFrameLoop.js +106 -0
- package/dist/debug/runtime/RaphNode.cjs +1 -0
- package/dist/debug/runtime/RaphNode.js +143 -0
- package/dist/debug/runtime/RaphPhasePipeline.cjs +1 -0
- package/dist/debug/runtime/RaphPhasePipeline.js +526 -0
- package/dist/debug/runtime/RaphRuntime.cjs +1 -0
- package/dist/debug/runtime/RaphRuntime.js +700 -0
- package/dist/debug/runtime/RaphScope.cjs +1 -0
- package/dist/debug/runtime/RaphScope.js +64 -0
- package/dist/debug/runtime/RuntimeReactivity.cjs +1 -0
- package/dist/debug/runtime/RuntimeReactivity.js +154 -0
- package/dist/debug/runtime/RuntimeWatch.cjs +1 -0
- package/dist/debug/runtime/RuntimeWatch.js +71 -0
- package/dist/debug/runtime/disposal.cjs +1 -0
- package/dist/debug/runtime/disposal.js +9 -0
- package/dist/debug/runtime/errors.cjs +1 -0
- package/dist/debug/runtime/errors.js +12 -0
- package/dist/debug/runtime/parent-graph.cjs +1 -0
- package/dist/debug/runtime/parent-graph.js +10 -0
- package/dist/debug/runtime/phase.types.cjs +1 -0
- package/dist/debug/runtime/phase.types.js +8 -0
- package/dist/debug/runtime/public.cjs +1 -0
- package/dist/debug/runtime/public.js +18 -0
- package/dist/debug/runtime/runtime-reactivity.types.cjs +1 -0
- package/dist/debug/runtime/runtime-reactivity.types.js +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.js +40 -0
- package/dist/path/AdapterPathStore.d.ts +45 -0
- package/dist/path/DerivedRegistry.d.ts +67 -0
- package/dist/path/MetaController.d.ts +85 -0
- package/dist/path/PathEventHub.d.ts +48 -0
- package/dist/path/PathStore.d.ts +51 -0
- package/dist/path/RaphDerivedHandle.d.ts +97 -0
- package/dist/path/RaphKernel.d.ts +166 -0
- package/dist/path/RaphMeta.d.ts +45 -0
- package/dist/path/RaphMetaStore.d.ts +45 -0
- package/dist/path/data-adapter.d.ts +78 -0
- package/dist/path/data-draft.d.ts +4 -0
- package/dist/path/data-path.d.ts +97 -0
- package/dist/path/derived-collection.d.ts +30 -0
- package/dist/path/derived-strategies.d.ts +15 -0
- package/dist/path/meta.types.d.ts +33 -0
- package/dist/path/path-router.d.ts +21 -0
- package/dist/path/path.types.d.ts +26 -0
- package/dist/path/public.d.ts +14 -0
- package/dist/path/segment-key.d.ts +2 -0
- package/dist/path.cjs +1 -0
- package/dist/path.js +18 -0
- package/dist/raph.cjs +1 -0
- package/dist/raph.js +40 -0
- package/dist/reactivity/engine.d.ts +379 -0
- package/dist/reactivity/scope.d.ts +146 -0
- package/dist/reactivity/types.d.ts +150 -0
- package/dist/reactivity/watch.d.ts +15 -0
- package/dist/reactivity.cjs +1 -0
- package/dist/reactivity.js +14 -0
- package/dist/runtime/PathHandle.d.ts +72 -0
- package/dist/runtime/RaphDebug.d.ts +32 -0
- package/dist/runtime/RaphFrameLoop.d.ts +51 -0
- package/dist/runtime/RaphNode.d.ts +68 -0
- package/dist/runtime/RaphPhasePipeline.d.ts +133 -0
- package/dist/runtime/RaphRuntime.d.ts +285 -0
- package/dist/runtime/RaphScope.d.ts +50 -0
- package/dist/runtime/RuntimeReactivity.d.ts +40 -0
- package/dist/runtime/RuntimeWatch.d.ts +28 -0
- package/dist/runtime/disposal.d.ts +1 -0
- package/dist/runtime/errors.d.ts +16 -0
- package/dist/runtime/parent-graph.d.ts +5 -0
- package/dist/runtime/phase.types.d.ts +49 -0
- package/dist/runtime/public.d.ts +13 -0
- package/dist/runtime/runtime-reactivity.types.d.ts +9 -0
- package/dist/runtime.cjs +1 -0
- package/dist/runtime.js +18 -0
- package/package.json +109 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { DataPathDef } from '../path/path.types';
|
|
2
|
+
import { RaphKernel } from '../path/RaphKernel';
|
|
3
|
+
import { Disposer, EffectTask } from '../reactivity/types';
|
|
4
|
+
import { RaphFrameContext, RaphObserveDataOptions, RaphPhase, RaphPhaseMode, RaphSchedulerMode, RaphTrackOptions } from './phase.types';
|
|
5
|
+
import { RaphNode } from './RaphNode';
|
|
6
|
+
/**
|
|
7
|
+
* Ленивый Runtime-owned pipeline поверх Kernel path batches.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RaphPhasePipeline {
|
|
10
|
+
private readonly _kernel;
|
|
11
|
+
private readonly _root;
|
|
12
|
+
private readonly _scheduler;
|
|
13
|
+
private readonly _runUntracked;
|
|
14
|
+
private readonly _deferSync;
|
|
15
|
+
private _observerRouter;
|
|
16
|
+
private _phaseRouter;
|
|
17
|
+
private _observers;
|
|
18
|
+
private _stopKernel;
|
|
19
|
+
private _phases;
|
|
20
|
+
private _phaseByName;
|
|
21
|
+
private _pending;
|
|
22
|
+
private _tasks;
|
|
23
|
+
private _phaseBindings;
|
|
24
|
+
private _taskSequence;
|
|
25
|
+
private _scheduled;
|
|
26
|
+
private _scheduleToken;
|
|
27
|
+
private _frameHandle;
|
|
28
|
+
private _frameHandleKind;
|
|
29
|
+
private _configurationLocked;
|
|
30
|
+
private _running;
|
|
31
|
+
private _disposed;
|
|
32
|
+
private _firstFrameAt;
|
|
33
|
+
private _lastFrameAt;
|
|
34
|
+
private _frameNumber;
|
|
35
|
+
private _frame;
|
|
36
|
+
/**
|
|
37
|
+
* Создаёт phase pipeline для runtime и его root node.
|
|
38
|
+
*/
|
|
39
|
+
constructor(_kernel: RaphKernel, _root: RaphNode, _scheduler: RaphSchedulerMode, _runUntracked: <T>(operation: () => T) => T, _deferSync?: () => boolean);
|
|
40
|
+
/**
|
|
41
|
+
* Возвращает последний frame context pipeline.
|
|
42
|
+
*/
|
|
43
|
+
get frame(): RaphFrameContext;
|
|
44
|
+
/**
|
|
45
|
+
* Возвращает текущее упорядоченное определение phases.
|
|
46
|
+
*/
|
|
47
|
+
get phases(): readonly RaphPhase[];
|
|
48
|
+
/**
|
|
49
|
+
* Заменяет полное определение phase pipeline до его первого выполнения.
|
|
50
|
+
*/
|
|
51
|
+
definePhases(phases: readonly RaphPhase[]): void;
|
|
52
|
+
/**
|
|
53
|
+
* Добавляет phase до первого выполнения pipeline.
|
|
54
|
+
*/
|
|
55
|
+
addPhase(phase: RaphPhase): void;
|
|
56
|
+
/**
|
|
57
|
+
* Удаляет пользовательские phases до первого выполнения pipeline.
|
|
58
|
+
*/
|
|
59
|
+
clearPhases(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Возвращает phase либо отклоняет неизвестное имя.
|
|
62
|
+
*/
|
|
63
|
+
requirePhase(name: string): void;
|
|
64
|
+
/**
|
|
65
|
+
* Фиксирует phase definitions перед синхронным выполнением вне flush.
|
|
66
|
+
*/
|
|
67
|
+
lockConfiguration(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Удерживает определение фазы для idle registrations вне data observer/effect.
|
|
70
|
+
*/
|
|
71
|
+
retainPhase(name: string): Disposer;
|
|
72
|
+
/**
|
|
73
|
+
* Возвращает scheduler mode указанной phase.
|
|
74
|
+
*/
|
|
75
|
+
phaseMode(name: string): RaphPhaseMode;
|
|
76
|
+
/**
|
|
77
|
+
* Связывает реактивный effect с phase scheduler.
|
|
78
|
+
*/
|
|
79
|
+
registerEffect(name: string): Disposer;
|
|
80
|
+
/**
|
|
81
|
+
* Один раз связывает watcher с task и callback.
|
|
82
|
+
* Повторные invalidations используют ту же task без hot-path поиска node и phase.
|
|
83
|
+
*/
|
|
84
|
+
bindEffect(phase: string, priority: number, run: () => void, node?: RaphNode): EffectTask;
|
|
85
|
+
/**
|
|
86
|
+
* Ставит уже зарегистрированный effect в очередь его phase.
|
|
87
|
+
*/
|
|
88
|
+
queueEffect(phase: string, priority: number, run: () => void, schedule?: boolean): Disposer;
|
|
89
|
+
/**
|
|
90
|
+
* Запрашивает выполнение pipeline согласно scheduler mode.
|
|
91
|
+
*/
|
|
92
|
+
request(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Ставит frame-driven обход всего дерева в очередь даже без reactive effect.
|
|
95
|
+
*/
|
|
96
|
+
requestAlwaysPhases(): void;
|
|
97
|
+
/**
|
|
98
|
+
* Регистрирует path observer в phase pipeline.
|
|
99
|
+
*/
|
|
100
|
+
observeData(node: RaphNode, masks: DataPathDef | readonly DataPathDef[], options: RaphObserveDataOptions): Disposer;
|
|
101
|
+
/**
|
|
102
|
+
* Регистрирует tracked executor указанной phase.
|
|
103
|
+
*/
|
|
104
|
+
track(node: RaphNode, masks: DataPathDef | readonly DataPathDef[], options: RaphTrackOptions): Disposer;
|
|
105
|
+
/**
|
|
106
|
+
* Помечает node и зависимых владельцев как требующих выполнения.
|
|
107
|
+
*/
|
|
108
|
+
invalidate(node: RaphNode, phase: string): void;
|
|
109
|
+
/**
|
|
110
|
+
* Синхронно выполняет все готовые очереди pipeline.
|
|
111
|
+
*/
|
|
112
|
+
flush(): void;
|
|
113
|
+
/**
|
|
114
|
+
* Останавливает scheduler и удаляет observers, tasks и phase definitions.
|
|
115
|
+
*/
|
|
116
|
+
dispose(): void;
|
|
117
|
+
/**
|
|
118
|
+
* Показывает наличие запланированной или выполняемой работы pipeline.
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
_debugPending(): boolean;
|
|
122
|
+
private _addObserver;
|
|
123
|
+
private _ensureKernelWatch;
|
|
124
|
+
private _assertRetainedPhases;
|
|
125
|
+
private _receive;
|
|
126
|
+
private _queue;
|
|
127
|
+
private _schedule;
|
|
128
|
+
private _cancelScheduled;
|
|
129
|
+
private _nextFrame;
|
|
130
|
+
private _hasPending;
|
|
131
|
+
private _expandContexts;
|
|
132
|
+
private _assertAlive;
|
|
133
|
+
}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { DataPathDef, PathEvents, PathOptions } from '../path/path.types';
|
|
2
|
+
import { DerivedOptions, RaphDerivedHandle } from '../path/RaphDerivedHandle';
|
|
3
|
+
import { RaphKernelRoot, RaphKernel } from '../path/RaphKernel';
|
|
4
|
+
import { Disposer, ReadonlySignal, Signal, WatchOptions, WatchSource, WatchValue, WritableComputedOptions } from '../reactivity/types';
|
|
5
|
+
import { DepGraph } from './parent-graph';
|
|
6
|
+
import { FrameLoopLease, RaphEffectOptions, RaphObserveDataOptions, RaphPhase, RaphSchedulerMode, RaphTrackOptions } from './phase.types';
|
|
7
|
+
import { RaphRuntimeDebug } from './RaphDebug';
|
|
8
|
+
import { NodeOptions, RaphNode } from './RaphNode';
|
|
9
|
+
import { RaphMeta } from '../path/RaphMeta';
|
|
10
|
+
import { PathHandle } from './PathHandle';
|
|
11
|
+
import { RaphScope } from './RaphScope';
|
|
12
|
+
import { RuntimeReactivity } from './RuntimeReactivity';
|
|
13
|
+
export interface RaphRuntimeOptions {
|
|
14
|
+
readonly id?: string;
|
|
15
|
+
readonly kernel?: RaphKernel;
|
|
16
|
+
readonly enforceActions?: boolean;
|
|
17
|
+
readonly scheduler?: RaphSchedulerMode;
|
|
18
|
+
}
|
|
19
|
+
export interface RaphRuntimeConfiguration {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly kernel: RaphKernel;
|
|
22
|
+
readonly enforceActions: boolean;
|
|
23
|
+
readonly scheduler: RaphSchedulerMode;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Один изолированный signal execution-plane поверх собственного или shared Kernel.
|
|
27
|
+
*/
|
|
28
|
+
export declare class RaphRuntime {
|
|
29
|
+
private static _runtimeCounter;
|
|
30
|
+
readonly configuration: RaphRuntimeConfiguration;
|
|
31
|
+
readonly rootScope: RaphScope;
|
|
32
|
+
readonly root: RaphNode;
|
|
33
|
+
private readonly _reactivity;
|
|
34
|
+
private readonly _signalLifecycle;
|
|
35
|
+
private _pathHandles;
|
|
36
|
+
private _meta;
|
|
37
|
+
private _phases;
|
|
38
|
+
private _frameLoop;
|
|
39
|
+
private _frameRevision;
|
|
40
|
+
private _frameRevisionValue;
|
|
41
|
+
private _debug;
|
|
42
|
+
private _parentGraph;
|
|
43
|
+
private readonly _owners;
|
|
44
|
+
private _transactionDepth;
|
|
45
|
+
private _mutationDepth;
|
|
46
|
+
private _kernelTransactionDepth;
|
|
47
|
+
private _actionDepth;
|
|
48
|
+
private _executionRequested;
|
|
49
|
+
private _disposed;
|
|
50
|
+
private readonly _disposedListeners;
|
|
51
|
+
/**
|
|
52
|
+
* Создаёт изолированный execution graph поверх собственного или shared Kernel.
|
|
53
|
+
*/
|
|
54
|
+
constructor(options?: RaphRuntimeOptions);
|
|
55
|
+
/**
|
|
56
|
+
* Возвращает внутренний runtime reactivity adapter.
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
_getReactivity(): RuntimeReactivity;
|
|
60
|
+
/**
|
|
61
|
+
* Возвращает стабильный идентификатор runtime.
|
|
62
|
+
*/
|
|
63
|
+
get id(): string;
|
|
64
|
+
/**
|
|
65
|
+
* Возвращает data/meta Kernel этого runtime.
|
|
66
|
+
*/
|
|
67
|
+
get kernel(): RaphKernel;
|
|
68
|
+
/**
|
|
69
|
+
* Возвращает лениво созданный runtime-owned metadata facade.
|
|
70
|
+
*/
|
|
71
|
+
get meta(): RaphMeta;
|
|
72
|
+
/**
|
|
73
|
+
* Показывает, освобождён ли runtime.
|
|
74
|
+
*/
|
|
75
|
+
get disposed(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Возвращает лениво созданное read-only представление ownership graph.
|
|
78
|
+
*/
|
|
79
|
+
get graph(): DepGraph;
|
|
80
|
+
/**
|
|
81
|
+
* Показывает, удерживается ли автоматический frame-loop.
|
|
82
|
+
*/
|
|
83
|
+
get loopEnabled(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Возвращает последний frame context runtime pipeline.
|
|
86
|
+
*/
|
|
87
|
+
get frame(): Readonly<{
|
|
88
|
+
now: number;
|
|
89
|
+
delta: number;
|
|
90
|
+
elapsed: number;
|
|
91
|
+
frame: number;
|
|
92
|
+
}>;
|
|
93
|
+
/**
|
|
94
|
+
* Возвращает текущее определение runtime phases.
|
|
95
|
+
*/
|
|
96
|
+
get phases(): readonly RaphPhase[];
|
|
97
|
+
/**
|
|
98
|
+
* Формирует диагностический снимок materialized derived registry.
|
|
99
|
+
*/
|
|
100
|
+
getDerivedSnapshot(): ReturnType<RaphKernel['getDerivedSnapshot']>;
|
|
101
|
+
/**
|
|
102
|
+
* Возвращает лениво созданную read-only диагностику runtime и ownership tree.
|
|
103
|
+
*/
|
|
104
|
+
get debug(): RaphRuntimeDebug;
|
|
105
|
+
/**
|
|
106
|
+
* Создаёт writable signal, принадлежащий указанному owner.
|
|
107
|
+
*/
|
|
108
|
+
signal<T>(value: T, owner?: RaphScope): Signal<T>;
|
|
109
|
+
/**
|
|
110
|
+
* Создаёт computed, принадлежащий указанному owner.
|
|
111
|
+
*/
|
|
112
|
+
computed<T>(getter: () => T, owner?: RaphScope): ReadonlySignal<T>;
|
|
113
|
+
computed<T>(options: WritableComputedOptions<T>, owner?: RaphScope): Signal<T>;
|
|
114
|
+
/**
|
|
115
|
+
* Создаёт реактивный effect и регистрирует его lifecycle у owner.
|
|
116
|
+
*/
|
|
117
|
+
effect(callback: () => void | Disposer, owner?: RaphScope): Disposer;
|
|
118
|
+
effect(phase: string, callback: () => void | Disposer, options?: RaphEffectOptions, owner?: RaphScope): Disposer;
|
|
119
|
+
/**
|
|
120
|
+
* Подписывает runtime owner на path- либо signal-изменения.
|
|
121
|
+
*/
|
|
122
|
+
watch(masks: DataPathDef | readonly DataPathDef[], callback: (payload: PathEvents) => void | Disposer, options?: WatchOptions, owner?: RaphScope): Disposer;
|
|
123
|
+
watch<S extends WatchSource | readonly WatchSource[]>(source: S, callback: (value: WatchValue<S>, previous: WatchValue<S> | undefined) => void | Disposer, options?: WatchOptions, owner?: RaphScope): Disposer;
|
|
124
|
+
/**
|
|
125
|
+
* Возвращает кешируемый runtime-owned handle canonical path.
|
|
126
|
+
*/
|
|
127
|
+
path<T>(path: DataPathDef, options?: PathOptions): PathHandle<T>;
|
|
128
|
+
/**
|
|
129
|
+
* Возвращает весь path-root Kernel с обычным tracking чтения.
|
|
130
|
+
*/
|
|
131
|
+
get<T = RaphKernelRoot>(): T | undefined;
|
|
132
|
+
/**
|
|
133
|
+
* Возвращает значение Kernel по пути с runtime lifecycle checks.
|
|
134
|
+
*/
|
|
135
|
+
get<T = unknown>(path: DataPathDef, options?: PathOptions): T | undefined;
|
|
136
|
+
/**
|
|
137
|
+
* Читает весь path-root Kernel без регистрации реактивной зависимости.
|
|
138
|
+
*/
|
|
139
|
+
peek<T = RaphKernelRoot>(): T | undefined;
|
|
140
|
+
/**
|
|
141
|
+
* Читает значение Kernel без регистрации реактивной зависимости.
|
|
142
|
+
*/
|
|
143
|
+
peek<T = unknown>(path: DataPathDef, options?: PathOptions): T | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* Проверяет наличие значения Kernel по пути.
|
|
146
|
+
*/
|
|
147
|
+
has(path: DataPathDef, options?: PathOptions): boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Записывает значение Kernel внутри runtime write policy.
|
|
150
|
+
*/
|
|
151
|
+
set<T>(path: DataPathDef, value: T, options?: PathOptions): void;
|
|
152
|
+
/**
|
|
153
|
+
* Объединяет значение Kernel внутри runtime write policy.
|
|
154
|
+
*/
|
|
155
|
+
merge(path: DataPathDef, value: unknown, options?: PathOptions): void;
|
|
156
|
+
/**
|
|
157
|
+
* Удаляет значение Kernel внутри runtime write policy.
|
|
158
|
+
*/
|
|
159
|
+
delete(path: DataPathDef, options?: PathOptions): void;
|
|
160
|
+
/**
|
|
161
|
+
* Выполняет операцию в общей синхронной transaction boundary.
|
|
162
|
+
*/
|
|
163
|
+
transaction<T>(operation: () => T): T;
|
|
164
|
+
/**
|
|
165
|
+
* Создаёт именованную action boundary для разрешённых записей.
|
|
166
|
+
*/
|
|
167
|
+
action<Args extends unknown[], Result>(name: string, operation: (...args: Args) => Result, owner?: RaphScope): (...args: Args) => Result;
|
|
168
|
+
/**
|
|
169
|
+
* Выполняет операцию внутри action boundary.
|
|
170
|
+
*/
|
|
171
|
+
runInAction<T>(_name: string, operation: () => T): T;
|
|
172
|
+
/**
|
|
173
|
+
* Выполняет операцию без регистрации реактивных зависимостей.
|
|
174
|
+
*/
|
|
175
|
+
untracked<T>(operation: () => T): T;
|
|
176
|
+
/**
|
|
177
|
+
* Создаёт дочерний lifecycle scope.
|
|
178
|
+
*/
|
|
179
|
+
scope(id: string): RaphScope;
|
|
180
|
+
/**
|
|
181
|
+
* Создаёт дочерний execution node.
|
|
182
|
+
*/
|
|
183
|
+
node<TApi>(options: NodeOptions, setup: (node: RaphNode) => TApi): RaphNode<TApi>;
|
|
184
|
+
/**
|
|
185
|
+
* Находит принадлежащий runtime node по id для диагностики.
|
|
186
|
+
*/
|
|
187
|
+
getNode(id: string): RaphNode | undefined;
|
|
188
|
+
/**
|
|
189
|
+
* Заменяет полное определение phase pipeline до его первого выполнения.
|
|
190
|
+
*/
|
|
191
|
+
definePhases(phases: readonly RaphPhase[]): void;
|
|
192
|
+
/**
|
|
193
|
+
* Добавляет phase до первого выполнения pipeline.
|
|
194
|
+
*/
|
|
195
|
+
addPhase(phase: RaphPhase): void;
|
|
196
|
+
/**
|
|
197
|
+
* Удаляет пользовательские phases до первого выполнения pipeline.
|
|
198
|
+
*/
|
|
199
|
+
clearPhases(): void;
|
|
200
|
+
/**
|
|
201
|
+
* Регистрирует path observer в phase pipeline.
|
|
202
|
+
*/
|
|
203
|
+
observeData(node: RaphNode, masks: DataPathDef | readonly DataPathDef[], options: RaphObserveDataOptions): Disposer;
|
|
204
|
+
/**
|
|
205
|
+
* Регистрирует tracked executor указанной phase.
|
|
206
|
+
*/
|
|
207
|
+
track(node: RaphNode, masks: DataPathDef | readonly DataPathDef[], options?: RaphTrackOptions): Disposer;
|
|
208
|
+
/**
|
|
209
|
+
* Помечает node для выполнения в pipeline.
|
|
210
|
+
*/
|
|
211
|
+
invalidateNode(node: RaphNode, phase: string): void;
|
|
212
|
+
/**
|
|
213
|
+
* Синхронно выполняет все готовые очереди pipeline.
|
|
214
|
+
*/
|
|
215
|
+
flush(): void;
|
|
216
|
+
/**
|
|
217
|
+
* Получает lease автоматического frame-loop.
|
|
218
|
+
*/
|
|
219
|
+
acquireLoop(owner: string): FrameLoopLease;
|
|
220
|
+
/**
|
|
221
|
+
* Запускает manual lease автоматического frame-loop.
|
|
222
|
+
*/
|
|
223
|
+
startLoop(): void;
|
|
224
|
+
/**
|
|
225
|
+
* Останавливает manual lease автоматического frame-loop.
|
|
226
|
+
*/
|
|
227
|
+
stopLoop(): void;
|
|
228
|
+
/**
|
|
229
|
+
* Создаёт управляемое derived-представление source path в target path.
|
|
230
|
+
*/
|
|
231
|
+
derive<TSource, TTarget>(options: DerivedOptions<TSource, TTarget>): RaphDerivedHandle<TSource, TTarget>;
|
|
232
|
+
/**
|
|
233
|
+
* Освобождает execution graph и отсоединяет runtime от shared Kernel.
|
|
234
|
+
*/
|
|
235
|
+
dispose(): void;
|
|
236
|
+
/**
|
|
237
|
+
* Регистрирует listener освобождения runtime.
|
|
238
|
+
* @internal
|
|
239
|
+
*/
|
|
240
|
+
_onDisposed(listener: () => void): Disposer;
|
|
241
|
+
private _watchPath;
|
|
242
|
+
private _createDebugSnapshot;
|
|
243
|
+
private _watchMeta;
|
|
244
|
+
private _watchMetaInPhase;
|
|
245
|
+
private _releasePathHandle;
|
|
246
|
+
private get _execution();
|
|
247
|
+
private get _clock();
|
|
248
|
+
private _tickFrameLoop;
|
|
249
|
+
private _attachWritableComputed;
|
|
250
|
+
private _own;
|
|
251
|
+
/**
|
|
252
|
+
* Регистрирует lifecycle owner в runtime registry.
|
|
253
|
+
* @internal
|
|
254
|
+
*/
|
|
255
|
+
_registerOwner(owner: RaphScope): void;
|
|
256
|
+
/**
|
|
257
|
+
* Удаляет lifecycle owner из runtime registry.
|
|
258
|
+
* @internal
|
|
259
|
+
*/
|
|
260
|
+
_unregisterOwner(owner: RaphScope): void;
|
|
261
|
+
/**
|
|
262
|
+
* Проверяет, что owner принадлежит этому живому runtime.
|
|
263
|
+
* @internal
|
|
264
|
+
*/
|
|
265
|
+
_assertOwnerRuntime(owner: RaphScope): void;
|
|
266
|
+
private _runTracked;
|
|
267
|
+
private _runUntracked;
|
|
268
|
+
private _runWrite;
|
|
269
|
+
private _requestExecution;
|
|
270
|
+
/**
|
|
271
|
+
* Открывает shared Kernel transaction для runtime.
|
|
272
|
+
* @internal
|
|
273
|
+
*/
|
|
274
|
+
_beginKernelTransaction(): void;
|
|
275
|
+
/**
|
|
276
|
+
* Закрывает shared Kernel transaction и запускает отложенное выполнение.
|
|
277
|
+
* @internal
|
|
278
|
+
*/
|
|
279
|
+
_endKernelTransaction(): void;
|
|
280
|
+
private _assertTrackedRead;
|
|
281
|
+
private _assertWriteAllowed;
|
|
282
|
+
private _throwCrossRuntime;
|
|
283
|
+
private _throwDisposed;
|
|
284
|
+
private _assertAlive;
|
|
285
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Disposer, ReadonlySignal, Signal, WatchOptions, WatchSource, WatchValue, WritableComputedOptions } from '../reactivity/types';
|
|
2
|
+
import { RaphEffectOptions } from './phase.types';
|
|
3
|
+
import { RaphRuntime } from './RaphRuntime';
|
|
4
|
+
import { ScopeNode } from '../reactivity/scope';
|
|
5
|
+
/**
|
|
6
|
+
* Владеет группой runtime-ресурсов без участия в дереве исполнения.
|
|
7
|
+
*/
|
|
8
|
+
export declare class RaphScope extends ScopeNode {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly runtime: RaphRuntime;
|
|
11
|
+
/**
|
|
12
|
+
* Создаёт lifecycle scope внутри указанного runtime.
|
|
13
|
+
*/
|
|
14
|
+
constructor(id: string, runtime: RaphRuntime);
|
|
15
|
+
/**
|
|
16
|
+
* Создаёт writable signal, принадлежащий указанному owner.
|
|
17
|
+
*/
|
|
18
|
+
signal<T>(value: T): Signal<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Создаёт computed, принадлежащий указанному owner.
|
|
21
|
+
*/
|
|
22
|
+
computed<T>(getter: () => T): ReadonlySignal<T>;
|
|
23
|
+
computed<T>(options: WritableComputedOptions<T>): Signal<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Создаёт реактивный effect и регистрирует его lifecycle у owner.
|
|
26
|
+
*/
|
|
27
|
+
effect(callback: () => void | Disposer): Disposer;
|
|
28
|
+
effect(phase: string, callback: () => void | Disposer, options?: RaphEffectOptions): Disposer;
|
|
29
|
+
/**
|
|
30
|
+
* Подписывает callback и привязывает disposer к lifecycle scope.
|
|
31
|
+
*/
|
|
32
|
+
watch<S extends WatchSource | readonly WatchSource[]>(source: S, callback: (value: WatchValue<S>, previous: WatchValue<S> | undefined) => void | Disposer, options?: WatchOptions): Disposer;
|
|
33
|
+
/**
|
|
34
|
+
* Создаёт action, выполнение которой привязано к lifecycle scope.
|
|
35
|
+
*/
|
|
36
|
+
action<Args extends unknown[], Result>(name: string, operation: (...args: Args) => Result): (...args: Args) => Result;
|
|
37
|
+
/**
|
|
38
|
+
* Выполняет runtime cleanup после освобождения scope.
|
|
39
|
+
*/
|
|
40
|
+
protected _afterDispose(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Возвращает диагностическое сообщение для освобождённого scope.
|
|
43
|
+
*/
|
|
44
|
+
protected _disposalMessage(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Запрещает операции после начала освобождения scope.
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
_assertAlive(): void;
|
|
50
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ScopeNode } from '../reactivity/scope';
|
|
2
|
+
import { ReadonlySignal, Signal } from '../reactivity/types';
|
|
3
|
+
import { RaphEffectInitialMode } from './phase.types';
|
|
4
|
+
import { RuntimeEffectBinding, RuntimeSignalLifecycle } from './runtime-reactivity.types';
|
|
5
|
+
import { RaphReactivity } from '../reactivity/engine';
|
|
6
|
+
/**
|
|
7
|
+
* Внутренний policy adapter, наследующий реактивные алгоритмы без дублирования.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RuntimeReactivity extends RaphReactivity {
|
|
10
|
+
private readonly _lifecycle;
|
|
11
|
+
private readonly _bindings;
|
|
12
|
+
/**
|
|
13
|
+
* Создаёт policy adapter реактивного графа для одного runtime.
|
|
14
|
+
*/
|
|
15
|
+
constructor(_lifecycle: RuntimeSignalLifecycle);
|
|
16
|
+
/**
|
|
17
|
+
* Создаёт временную registration boundary для runtime effect.
|
|
18
|
+
*/
|
|
19
|
+
withEffectBinding<T>(binding: RuntimeEffectBinding | undefined, initial: RaphEffectInitialMode, operation: () => T): T;
|
|
20
|
+
/**
|
|
21
|
+
* Выполняет untracked-операцию, сохраняя runtime owner context.
|
|
22
|
+
*/
|
|
23
|
+
untrackedWithOwner<T>(operation: () => T): T;
|
|
24
|
+
/**
|
|
25
|
+
* Возвращает owner текущего синхронного реактивного контекста.
|
|
26
|
+
*/
|
|
27
|
+
getActiveOwner(): object | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Выполняет операцию с указанным active owner.
|
|
30
|
+
*/
|
|
31
|
+
runWithOwner<T>(lifecycle: RuntimeSignalLifecycle | undefined, operation: () => T): T;
|
|
32
|
+
/**
|
|
33
|
+
* Создаёт owned signal с runtime lifecycle policy.
|
|
34
|
+
*/
|
|
35
|
+
signalForOwner<T>(initialValue: T, owner?: ScopeNode): Signal<T>;
|
|
36
|
+
/**
|
|
37
|
+
* Создаёт owned computed с runtime lifecycle policy.
|
|
38
|
+
*/
|
|
39
|
+
computedForOwner<T>(getter: () => T, owner?: ScopeNode): ReadonlySignal<T>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Disposer } from '../reactivity/types';
|
|
2
|
+
/**
|
|
3
|
+
* Хранит общий callback/cleanup lifecycle Runtime-watch без знания источника
|
|
4
|
+
* событий. Регистрация в Kernel и фазовая доставка остаются у Runtime.
|
|
5
|
+
*/
|
|
6
|
+
export declare class RuntimeWatch {
|
|
7
|
+
private readonly _runUntracked;
|
|
8
|
+
private _cleanup;
|
|
9
|
+
private _stopped;
|
|
10
|
+
/**
|
|
11
|
+
* Создаёт runtime-owned watch с явным lifecycle остановки.
|
|
12
|
+
*/
|
|
13
|
+
constructor(_runUntracked: <T>(operation: () => T) => T);
|
|
14
|
+
/**
|
|
15
|
+
* Показывает, остановлен ли watch.
|
|
16
|
+
*/
|
|
17
|
+
get stopped(): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Освобождает предыдущий результат callback и выполняет новую доставку.
|
|
20
|
+
* Ошибка cleanup не лишает живой watcher текущего события.
|
|
21
|
+
*/
|
|
22
|
+
deliver(callback: () => void | Disposer): void;
|
|
23
|
+
/**
|
|
24
|
+
* Останавливает внешнюю регистрацию и cleanup callback, сохраняя обе ошибки.
|
|
25
|
+
*/
|
|
26
|
+
stop(stopSource?: Disposer): void;
|
|
27
|
+
private _attempt;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function throwDisposalErrors(errors: unknown[], message?: string): void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RaphError } from '../api/errors';
|
|
2
|
+
/**
|
|
3
|
+
* Сообщает о записи вне action при включённом enforceActions.
|
|
4
|
+
*/
|
|
5
|
+
export declare class RaphActionError extends RaphError {
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Сообщает об обращении к уже освобождённому runtime-owner.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RaphDisposedError extends RaphError {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Сообщает о попытке связать owners из разных runtimes.
|
|
14
|
+
*/
|
|
15
|
+
export declare class RaphCrossRuntimeError extends RaphError {
|
|
16
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DataPathDef, PathEvent } from '../path/path.types';
|
|
2
|
+
import { RaphNode } from './RaphNode';
|
|
3
|
+
export declare const RaphSchedulerType: Readonly<{
|
|
4
|
+
readonly AnimationFrame: "animationFrame";
|
|
5
|
+
readonly Microtask: "microtask";
|
|
6
|
+
readonly Sync: "sync";
|
|
7
|
+
}>;
|
|
8
|
+
export type RaphSchedulerMode = typeof RaphSchedulerType[keyof typeof RaphSchedulerType];
|
|
9
|
+
export type RaphPhaseTraversal = 'dirty-only' | 'dirty-and-down' | 'dirty-and-up' | 'all';
|
|
10
|
+
export type RaphPhaseMode = 'dirty' | 'always';
|
|
11
|
+
export type RaphEffectInitialMode = 'scheduled' | 'sync';
|
|
12
|
+
export interface FrameLoopLease {
|
|
13
|
+
readonly owner: string;
|
|
14
|
+
release: () => void;
|
|
15
|
+
}
|
|
16
|
+
export interface RaphFrameContext {
|
|
17
|
+
readonly now: number;
|
|
18
|
+
readonly delta: number;
|
|
19
|
+
readonly elapsed: number;
|
|
20
|
+
readonly frame: number;
|
|
21
|
+
}
|
|
22
|
+
export interface RaphPhaseContext {
|
|
23
|
+
readonly phase: string;
|
|
24
|
+
readonly node: RaphNode<any>;
|
|
25
|
+
readonly frame: RaphFrameContext;
|
|
26
|
+
readonly events: readonly PathEvent[];
|
|
27
|
+
}
|
|
28
|
+
export interface RaphPhase {
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly traversal: RaphPhaseTraversal;
|
|
31
|
+
readonly mode?: RaphPhaseMode;
|
|
32
|
+
readonly routes?: readonly DataPathDef[];
|
|
33
|
+
readonly nodes?: (node: RaphNode<any>) => boolean;
|
|
34
|
+
readonly each?: (context: RaphPhaseContext) => void;
|
|
35
|
+
readonly all?: (contexts: readonly RaphPhaseContext[]) => void;
|
|
36
|
+
}
|
|
37
|
+
export interface RaphEffectOptions {
|
|
38
|
+
readonly initial?: RaphEffectInitialMode;
|
|
39
|
+
readonly priority?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface RaphObserveDataOptions {
|
|
42
|
+
readonly phase: string;
|
|
43
|
+
readonly vars?: Readonly<Record<string, unknown>>;
|
|
44
|
+
readonly wildcardDynamic?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface RaphTrackOptions {
|
|
47
|
+
readonly vars?: Readonly<Record<string, unknown>>;
|
|
48
|
+
readonly wildcardDynamic?: boolean;
|
|
49
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { RaphActionError, RaphCrossRuntimeError, RaphDisposedError, } from './errors';
|
|
2
|
+
export { parentGraph } from './parent-graph';
|
|
3
|
+
export type { DepGraph } from './parent-graph';
|
|
4
|
+
export { PathHandle } from './PathHandle';
|
|
5
|
+
export { RaphSchedulerType } from './phase.types';
|
|
6
|
+
export type { RaphPhaseContext as PhaseExecutorContext } from './phase.types';
|
|
7
|
+
export type { FrameLoopLease, RaphEffectInitialMode, RaphEffectOptions, RaphFrameContext, RaphObserveDataOptions, RaphPhase, RaphPhaseContext, RaphPhaseMode, RaphPhaseTraversal, RaphSchedulerMode, RaphTrackOptions, } from './phase.types';
|
|
8
|
+
export type { RaphDebugFrameLoopSnapshot, RaphDebugOwnerSnapshot, RaphDebugSnapshot, RaphRuntimeDebug, } from './RaphDebug';
|
|
9
|
+
export { RaphNode } from './RaphNode';
|
|
10
|
+
export type { NodeOptions } from './RaphNode';
|
|
11
|
+
export { RaphRuntime } from './RaphRuntime';
|
|
12
|
+
export type { RaphRuntimeConfiguration, RaphRuntimeOptions, } from './RaphRuntime';
|
|
13
|
+
export { RaphScope } from './RaphScope';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EffectTask } from '../reactivity/types';
|
|
2
|
+
export interface RuntimeSignalLifecycle {
|
|
3
|
+
owner: object | undefined;
|
|
4
|
+
assertWriteAllowed?: () => void;
|
|
5
|
+
runWrite?: <T>(operation: () => T) => T;
|
|
6
|
+
throwDisposed: () => never;
|
|
7
|
+
throwCrossRuntime: (owner: object) => never;
|
|
8
|
+
}
|
|
9
|
+
export type RuntimeEffectBinding = (run: () => void) => EffectTask;
|
package/dist/runtime.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./debug/runtime/errors.cjs"),r=require("./debug/runtime/parent-graph.cjs"),t=require("./debug/runtime/PathHandle.cjs"),p=require("./debug/runtime/phase.types.cjs"),a=require("./debug/runtime/RaphNode.cjs"),u=require("./debug/runtime/RaphRuntime.cjs"),o=require("./debug/runtime/RaphScope.cjs");exports.RaphActionError=e.RaphActionError;exports.RaphCrossRuntimeError=e.RaphCrossRuntimeError;exports.RaphDisposedError=e.RaphDisposedError;exports.parentGraph=r.parentGraph;exports.PathHandle=t.PathHandle;exports.RaphSchedulerType=p.RaphSchedulerType;exports.RaphNode=a.RaphNode;exports.RaphRuntime=u.RaphRuntime;exports.RaphScope=o.RaphScope;
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RaphActionError as p, RaphCrossRuntimeError as e, RaphDisposedError as t } from "./debug/runtime/errors.js";
|
|
2
|
+
import { parentGraph as h } from "./debug/runtime/parent-graph.js";
|
|
3
|
+
import { PathHandle as R } from "./debug/runtime/PathHandle.js";
|
|
4
|
+
import { RaphSchedulerType as x } from "./debug/runtime/phase.types.js";
|
|
5
|
+
import { RaphNode as d } from "./debug/runtime/RaphNode.js";
|
|
6
|
+
import { RaphRuntime as s } from "./debug/runtime/RaphRuntime.js";
|
|
7
|
+
import { RaphScope as u } from "./debug/runtime/RaphScope.js";
|
|
8
|
+
export {
|
|
9
|
+
R as PathHandle,
|
|
10
|
+
p as RaphActionError,
|
|
11
|
+
e as RaphCrossRuntimeError,
|
|
12
|
+
t as RaphDisposedError,
|
|
13
|
+
d as RaphNode,
|
|
14
|
+
s as RaphRuntime,
|
|
15
|
+
x as RaphSchedulerType,
|
|
16
|
+
u as RaphScope,
|
|
17
|
+
h as parentGraph
|
|
18
|
+
};
|