@pravosleva/reactive-engine 2.7.2 → 3.0.0-alpha.1

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.
Files changed (43) hide show
  1. package/dist/core/core.d.ts +92 -203
  2. package/dist/core/core.d.ts.map +1 -1
  3. package/dist/core/core.global.d.ts +64 -8
  4. package/dist/core/core.global.d.ts.map +1 -1
  5. package/dist/core/core.logger.d.ts +2 -0
  6. package/dist/core/core.logger.d.ts.map +1 -1
  7. package/dist/core/core.method.reactive.d.ts +2 -4
  8. package/dist/core/core.method.reactive.d.ts.map +1 -1
  9. package/dist/core/core.method.resource.d.ts +3 -11
  10. package/dist/core/core.method.resource.d.ts.map +1 -1
  11. package/dist/core/types.d.ts +1 -0
  12. package/dist/core/types.d.ts.map +1 -1
  13. package/dist/core.global.mjs +31 -4
  14. package/dist/core.global.mjs.map +1 -1
  15. package/dist/core.logger.mjs +49 -2
  16. package/dist/core.logger.mjs.map +1 -1
  17. package/dist/core.method.reactive.mjs +73 -30
  18. package/dist/core.method.reactive.mjs.map +1 -1
  19. package/dist/core.method.resource.mjs +122 -138
  20. package/dist/core.method.resource.mjs.map +1 -1
  21. package/dist/core.mjs +406 -150
  22. package/dist/core.mjs.map +1 -1
  23. package/dist/index.mjs +12 -12
  24. package/dist/index2.mjs +5 -5
  25. package/dist/react/hooks/useReactiveSubscription.mjs +13 -13
  26. package/dist/react/hooks/useReactiveSubscription.mjs.map +1 -1
  27. package/dist/react/hooks/useReactiveValue.d.ts +0 -4
  28. package/dist/react/hooks/useReactiveValue.d.ts.map +1 -1
  29. package/dist/react/hooks/useReactiveValue.mjs +24 -9
  30. package/dist/react/hooks/useReactiveValue.mjs.map +1 -1
  31. package/dist/reactive-engine.umd.js +2 -2
  32. package/dist/reactive-engine.umd.js.map +1 -1
  33. package/package.json +1 -1
  34. package/dist/core.method.computed.mjs +0 -167
  35. package/dist/core.method.computed.mjs.map +0 -1
  36. package/dist/core.method.effect.mjs +0 -120
  37. package/dist/core.method.effect.mjs.map +0 -1
  38. package/dist/core.method.signal.mjs +0 -106
  39. package/dist/core.method.signal.mjs.map +0 -1
  40. package/dist/core.method.untrack.mjs +0 -14
  41. package/dist/core.method.untrack.mjs.map +0 -1
  42. package/dist/utils/getExtractedValues.mjs +0 -24
  43. package/dist/utils/getExtractedValues.mjs.map +0 -1
@@ -1,221 +1,110 @@
1
- import { Signal, Computed, EngineLoggerOptions, LogEventType, CleanupFn, SignalOptions, ResourceOptions, Resource } from './types';
2
- type Constructor<T> = new (...args: any[]) => T;
3
- type Factory<T> = (engine: any) => T;
4
- type InjectionToken<T> = Constructor<T> | Factory<T> | symbol | string;
5
- export declare function queueLog(type: LogEventType, label: string, details?: {
6
- from?: unknown;
7
- to?: unknown;
8
- payload?: unknown;
9
- }): void;
10
- export declare function flushLogs(): void;
1
+ import { CleanupFn, EffectFn, Signal, Computed, SignalOptions, EngineLoggerOptions, LogEventType, Token, Factory, Resource, ResourceOptions } from './types';
2
+ export type NodeState = 0 | 1 | 2;
3
+ export declare class NodeLink {
4
+ source: ReactiveNode | null;
5
+ target: ReactiveNode | null;
6
+ nextSubscriber: NodeLink | null;
7
+ prevSubscriber: NodeLink | null;
8
+ nextDependency: NodeLink | null;
9
+ prevDependency: NodeLink | null;
10
+ version: number;
11
+ clear(): void;
12
+ }
13
+ export declare class LinkPool {
14
+ private static pool;
15
+ private static size;
16
+ private static maxPoolSize;
17
+ static acquire(source: ReactiveNode, target: ReactiveNode): NodeLink;
18
+ static release(link: NodeLink): void;
19
+ }
20
+ export declare class ReactiveNode {
21
+ id: string;
22
+ type: 'signal' | 'computed' | 'effect';
23
+ version: number;
24
+ state: NodeState;
25
+ depth: number;
26
+ subscribersHead: NodeLink | null;
27
+ subscribersTail: NodeLink | null;
28
+ dependenciesHead: NodeLink | null;
29
+ dependenciesTail: NodeLink | null;
30
+ depsCursor: NodeLink | null;
31
+ _value: any;
32
+ _prevValue: any;
33
+ fn: (() => any) | null;
34
+ cleanups: Set<CleanupFn>;
35
+ isDisposed: boolean;
36
+ ownedEffects: Set<ReactiveNode>;
37
+ wrapper: any;
38
+ engine: ReactiveEngineCore | null;
39
+ constructor(type: 'signal' | 'computed' | 'effect', id: string, initialValue?: any);
40
+ get subscribers(): Set<ReactiveNode>;
41
+ get dependencies(): Set<ReactiveNode>;
42
+ }
43
+ export declare class EffectScheduler {
44
+ private buckets;
45
+ private maxDepth;
46
+ schedule(node: ReactiveNode): void;
47
+ clearAll(): void;
48
+ flush(engine: ReactiveEngineCore): void;
49
+ }
11
50
  export declare class ReactiveEngineCore {
12
- protected frameworkPrefix: string;
13
- logger: EngineLoggerOptions;
14
- epoch: number;
15
- activeConsumer: any;
51
+ activeConsumer: ReactiveNode | null;
16
52
  batchDepth: number;
17
- subscriberId: number;
18
- pendingEffects: Array<Set<any> | undefined>;
19
- maxPendingDepth: number;
53
+ batchedSignals: ReactiveNode[];
54
+ batchInitialValues: Map<ReactiveNode, {
55
+ value: any;
56
+ version: number;
57
+ }>;
20
58
  computedCache: WeakMap<Function, any>;
59
+ logger: EngineLoggerOptions;
60
+ proxyCache: WeakMap<object, any>;
61
+ proxyTargets: WeakSet<object>;
62
+ reactiveSignals: WeakMap<object, Map<string | symbol, any>>;
63
+ private scheduler;
64
+ private currentOwner;
65
+ private effectIdCounter;
21
66
  private diRegistry;
22
67
  private diCache;
23
- private proxyCache;
24
- private proxyTargets;
25
- private reactiveSignals;
26
68
  private cycleDetectionStack;
27
- batchedSignals: Set<any>;
28
- activeOwner: any;
29
- activeCleanupNode: any;
30
- pendingCleanups: Set<() => void>;
31
- queueCleanup(cleanup: () => void): void;
32
69
  constructor(options?: {
33
70
  logger?: EngineLoggerOptions;
34
71
  });
35
- scheduleEffect(effect: any): void;
36
- queueLog(type: LogEventType, label: string, details?: {
37
- from?: unknown;
38
- to?: unknown;
39
- payload?: unknown;
72
+ log(params: {
73
+ type: LogEventType;
74
+ label: string;
75
+ details?: {
76
+ from?: unknown;
77
+ to?: unknown;
78
+ payload?: unknown;
79
+ };
80
+ isInternalCoreSignal?: boolean;
40
81
  }): void;
41
- batch<T>(fn: () => T): T;
42
- flushEffects(): void;
43
- log(params: any): void;
44
- /**
45
- * Создает новый реактивный сигнал с заданным начальным значением и опциями.
46
- *
47
- * @template T Тип значения сигнала.
48
- * @param initialValue Начальное значение сигнала.
49
- * @param optionsOrName Конфигурационные параметры сигнала или его имя.
50
- * @param optionsOrName.name Уникальное текстовое имя сигнала для отладки и вывода в транзакционный логгер.
51
- * @param optionsOrName.validate Пользовательская функция валидации значения, возвращающая true/false или строку ошибки.
52
- *
53
- * @method signal
54
- * @memberof ReactiveEngine
55
- *
56
- * @example
57
- * // Пример 1: Чистый TypeScript (Базовый)
58
- * const engine = new ReactiveEngineCore();
59
- * const counter = engine.signal(0, { name: 'counter' });
60
- * console.log(counter.value); // 0
61
- * counter.value = 1;
62
- * console.log(counter.value); // 1
63
- *
64
- * @example
65
- * // Пример 2: Чистый TypeScript (Продвинутый с валидацией)
66
- * interface User { id: number; name: string; }
67
- * const engine = new ReactiveEngineCore();
68
- * const userSignal = engine.signal<User>({ id: 1, name: 'John Doe' }, {
69
- * name: 'user',
70
- * validate: (user) => user.id > 0 && typeof user.name === 'string'
71
- * });
72
- * userSignal.value = { id: -1, name: 'Jane Doe' }; // Ошибка валидации
73
- *
74
- * @example
75
- * // Пример 3: Интеграция с React (через DI контейнер)
76
- * interface User { id: number; name: string; }
77
- * class UserService {
78
- * constructor(engine: ReactiveEngineCore) {
79
- * this.mySignal = engine.signal<User>({ id: 1, name: 'John Doe' }, { name: 'userSignal' });
80
- * }
81
- *
82
- * mySignal: Signal<User>;
83
- * }
84
- *
85
- * const engine = new ReactiveEngineCore();
86
- * engine.provide(UserService, UserService);
87
- * const logic = engine.inject(UserService);
88
- *
89
- * function MyComponent() {
90
- * const user = useReactiveValue(logic.mySignal);
91
- * return <div>{user.name}</div>;
92
- * }
93
- */
94
82
  signal<T>(initialValue: T, optionsOrName?: string | SignalOptions<T>): Signal<T>;
95
- /**
96
- * Создает новое вычисляемое свойство (Computed) на основе чистой функции.
97
- *
98
- * @template T Тип значения, возвращаемого вычисляемым свойством.
99
- * @param fn Чистая функция-вычислитель, которая определяет логику вычисления значения.
100
- * @param signalName Опциональное имя сигнала для отладки и вывода в транзакционный логгер.
101
- *
102
- * @method computed
103
- * @memberof ReactiveEngine
104
- *
105
- * @example
106
- * // Пример 1: Чистый TypeScript (Базовый)
107
- * const engine = new ReactiveEngineCore();
108
- * const counter = engine.signal(0, { name: 'counter' });
109
- * const doubleCounter = engine.computed(() => counter.value * 2);
110
- * console.log(doubleCounter.value); // 0
111
- * counter.value = 1;
112
- * console.log(doubleCounter.value); // 2
113
- *
114
- * @example
115
- * // Пример 2: Чистый TypeScript (Продвинутый с цепочкой зависимостей)
116
- * interface User { id: number; name: string; }
117
- * const engine = new ReactiveEngineCore();
118
- * const userSignal = engine.signal<User>({ id: 1, name: 'John Doe' }, { name: 'user' });
119
- * const userNameLength = engine.computed(() => userSignal.value.name.length);
120
- * const hasLongName = engine.computed(() => userNameLength.value > 5);
121
- *
122
- * console.log(hasLongName.value); // false
123
- * userSignal.value = { id: 1, name: 'Johnathan' };
124
- * console.log(userNameLength.value); // 9
125
- * console.log(hasLongName.value); // true
126
- *
127
- * @example
128
- * // Пример 3: Интеграция с React (через DI контейнер)
129
- * interface User { id: number; name: string; }
130
- * class UserService {
131
- * constructor(engine: ReactiveEngineCore) {
132
- * this.userSignal = engine.signal<User>({ id: 1, name: 'John Doe' }, { name: 'userSignal' });
133
- * this.userNameLength = engine.computed(() => this.userSignal.value.name.length);
134
- * }
135
- *
136
- * userSignal: Signal<User>;
137
- * userNameLength: Computed<number>;
138
- * }
139
- *
140
- * const engine = new ReactiveEngineCore();
141
- * engine.provide(UserService, UserService);
142
- * const logic = engine.inject(UserService);
143
- *
144
- * function MyComponent() {
145
- * const hasLongName = engine.use(logic.userNameLength);
146
- * return <div>{hasLongName ? 'Long name' : 'Short name'}</div>;
147
- * }
148
- */
83
+ notifySubscribers(node: ReactiveNode, state: NodeState): void;
149
84
  computed<T>(fn: () => T, signalName?: string): Computed<T>;
150
- effect(fn: () => void | CleanupFn, effectName?: string): () => void;
151
- untrack<T>(fn: () => T): T;
152
- reactive<T extends object>(target: T, name?: string): T;
153
- provide<T>(token: InjectionToken<T>, valueOrFactory: T | Factory<T>): void;
154
- inject<T>(token: InjectionToken<T>): T;
155
- delay(ms: number, signal: AbortSignal): Promise<void>;
156
- /**
157
- * Создает умную реактивную декларативную обертку над асинхронными операциями
158
- * с автоматическим подавлением Race Conditions и встроенным методом .destroy().
159
- *
160
- * @template T Тип данных, возвращаемых фетчером после успешного выполнения.
161
- * @template S Тип реактивной зависимости (source).
162
- * @param fetcher Асинхронная функция, выполняющая запрос и возвращающая данные типа T.
163
- * @param source Реактивный сигнал или примитив, предоставляющий источник данных для фетчера.
164
- * @param optionsOrName Конфигурационные опции ресурса или его имя.
165
- * @param optionsOrName.name Имя ресурса.
166
- * @param optionsOrName.resetDataOnSourceChange Флаг, указывающий, следует ли сбрасывать данные при изменении источника.
167
- * @param optionsOrName.validateBeforeFetch Функция валидации источника перед выполнением фетча.
168
- * @param optionsOrName.responseValidate Функция валидации ответа после выполнения фетча.
169
- * @param optionsOrName.timeout Максимальное время ожидания запроса в миллисекундах.
170
- * @param optionsOrName.retryCount Количество попыток повторного выполнения запроса в случае ошибки.
171
- *
172
- * @example
173
- * // Пример 1: Чистый TypeScript (Базовый)
174
- * interface User { id: number; name: string; }
175
- * interface ApiResponse<T> { ok: boolean; message?: string; data: T; }
176
- * const engine = new ReactiveEngineCore();
177
- * const userSignal = engine.signal<User>({ id: 1, name: 'John Doe' });
178
- * const fetchUser = async (source: User, signal: AbortSignal): Promise<ApiResponse<User>> => {
179
- * // Реализация фетча пользователя
180
- * };
181
- * const userResource = engine.resource(fetchUser, { value: userSignal.value }, { name: 'userResource' });
182
- *
183
- * @example
184
- * // Пример 2: Чистый TypeScript (Продвинутый)
185
- * interface User { id: number; name: string; }
186
- * interface ApiResponse<T> { ok: boolean; message?: string; data: T; }
187
- * const engine = new ReactiveEngineCore();
188
- * const userSignal = engine.signal<User>({ id: 1, name: 'John Doe' });
189
- * const fetchUser = async (source: User, signal: AbortSignal): Promise<ApiResponse<User>> => {
190
- * // Реализация фетча пользователя с использованием AbortSignal и timeout
191
- * };
192
- * const userResource = engine.resource(fetchUser, { value: userSignal.value }, {
193
- * name: 'userResource',
194
- * timeout: 5000,
195
- * retryCount: 3,
196
- * });
197
- *
198
- * @example
199
- * // Пример 3: Интеграция с React (через DI контейнер)
200
- * interface User { id: number; name: string; }
201
- * interface ApiResponse<T> { ok: boolean; message?: string; data: T; }
202
- * class UserService {
203
- * constructor(engine: ReactiveEngineCore) {
204
- * const userSignal = engine.signal<User>({ id: 1, name: 'John Doe' });
205
- * this.myResource = engine.resource(fetchUser, { value: userSignal.value }, { name: 'userResource' });
206
- * }
207
- *
208
- * myResource: Resource<ApiResponse<User>>;
209
- * }
210
- *
211
- * const engine = new ReactiveEngineCore();
212
- * engine.provide(UserService, UserService);
213
- * const logic = engine.inject(UserService);
214
- * const state = useReactiveValue(logic.myResource);
215
- */
85
+ effect(fn: EffectFn, effectName?: string): () => void;
216
86
  resource<T, S = void>(fetcher: (source: S, signal: AbortSignal) => Promise<T>, source?: {
217
87
  value: S;
218
88
  }, optionsOrName?: string | ResourceOptions<T, S>): Resource<T>;
89
+ batch<T>(fn: () => T): T;
90
+ private resetCleanState;
91
+ untrack<T>(fn: () => T): T;
92
+ flushEffects(): void;
93
+ trackNode(source: ReactiveNode, target: ReactiveNode): void;
94
+ private insertLinkBeforeCursor;
95
+ private endTracking;
96
+ unlinkDependencies(target: ReactiveNode, cascadeOrphans?: boolean): void;
97
+ checkNeedsUpdate(node: ReactiveNode): boolean;
98
+ evaluateComputed(node: ReactiveNode): void;
99
+ private executeCleanups;
100
+ runEffectNode(node: ReactiveNode): void;
101
+ disposeNode(node: ReactiveNode): void;
102
+ reactive<T extends object>(target: T, name?: string): T;
103
+ delay(ms: number, signal: AbortSignal): Promise<void>;
104
+ provide<T>(token: Token<T>, valueOrFactory: T | Factory<T>): void;
105
+ inject<T>(token: Token<T>): T;
219
106
  }
107
+ export declare let currentEngineInstance: ReactiveEngineCore;
108
+ export declare function resetGlobalReactiveEngine(): void;
220
109
  export { ReactiveEngineCore as ReactiveEngine, ReactiveEngineCore as ReactiveEngineAutomatic };
221
110
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core/core.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,68 @@
1
- export declare const signal: <T>(initialValue: T, options?: any) => import('./types').Signal<T>;
2
- export declare const computed: <T>(fn: () => T, name?: string) => import('./types').Computed<T>;
3
- export declare const effect: (fn: () => any, name?: string) => () => void;
4
- export declare const batch: <T>(fn: () => T) => T;
5
- export declare const untrack: <T>(fn: () => T) => T;
1
+ import { Computed, EffectFn, Signal, Token, Factory } from './types';
6
2
  /**
7
- * ⚡ ХУК ДЛЯ БЕНЧМАРКОВ И ТЕСТОВЫХ СРЕД:
8
- * Позволяет атомарно уничтожить старый граф реактивности и начать с чистого листа,
9
- * полностью исключая утечки памяти и пересечение эпох между тест-кейсами.
3
+ * Создает новый реактивный сигнал в рамках текущей глобальной эпохи.
4
+ *
5
+ * @template T Тип значения, хранящегося внутри сигнала.
6
+ * @param initialValue Начальное состояние сигнала.
7
+ * @param optionsOrName Строковое имя или конфигурационный объект для отладки.
8
+ */
9
+ export declare function signal<T>(initialValue: T, optionsOrName?: string | {
10
+ name?: string;
11
+ }): Signal<T>;
12
+ /**
13
+ * Создает декларативное вычисляемое свойство (Computed) в рамках текущей глобальной эпохи.
14
+ * Полностью мемоизирует результат вычисления и использует ленивую pull-модель на NodeLink-связях.
15
+ *
16
+ * @template T Тип возвращаемого функцией значения.
17
+ * @param fn Чистая функция-вычислитель.
18
+ * @param signalName Опциональное имя для логирования и отладки графа.
19
+ */
20
+ export declare function computed<T>(fn: () => T, signalName?: string): Computed<T>;
21
+ /**
22
+ * Регистрирует сайд-эффект в планировщике текущей глобальной эпохи.
23
+ * Синхронно запускает первый проход вычисления для сбора реактивных зависимостей.
24
+ *
25
+ * @param fn Функция эффекта, которая может возвращать деструктор (колбэк очистки).
26
+ * @param effectName Опциональное имя эффекта для трассировки и изоляции.
27
+ * @returns Функция полного императивного разрыва связей и уничтожения (unsub/dispose).
28
+ */
29
+ export declare function effect(fn: EffectFn, effectName?: string): () => void;
30
+ /**
31
+ * Группирует последовательные мутации сигналов в единую атомарную транзакцию.
32
+ * Откладывает флуш и выполнение эффектов до выхода из самого внешнего макро-батча.
33
+ *
34
+ * @template T Тип возвращаемого транзакционной функцией значения.
35
+ * @param fn Функция, выполняющая пакетное обновление стейта.
36
+ */
37
+ export declare function batch<T>(fn: () => T): T;
38
+ /**
39
+ * Временно замораживает автоматический трекинг зависимостей текущего потребителя.
40
+ * Позволяет безопасно читать реактивные узлы внутри эффектов без создания циклов и лишних ребер.
41
+ *
42
+ * @template T Тип возвращаемого значения.
43
+ * @param fn Контекстная функция чтения.
44
+ */
45
+ export declare function untrack<T>(fn: () => T): T;
46
+ /**
47
+ * Бескомпромиссно сжигает текущую глобальную реактивную эпоху.
48
+ * Инициализирует новое изолированное ядро графа, гарантируя, что старые компоненты
49
+ * и кэши вычислений не протекут в новые тестовые раны или жизненные циклы приложения.
10
50
  */
11
51
  export declare function resetGlobalReactiveEngine(): void;
52
+ /**
53
+ * Регистрирует зависимость или фабрику в DI-контейнере текущей глобальной эпохи.
54
+ *
55
+ * @template T Тип регистрируемого значения.
56
+ * @param token Уникальный ключ токена (строка, символ или класс).
57
+ * @param valueOrFactory Значение или ленивая фабричная функция.
58
+ */
59
+ export declare function provide<T>(token: Token<T>, valueOrFactory: T | Factory<T>): void;
60
+ /**
61
+ * Извлекает или лениво инициализирует зависимость из DI-контейнера текущей глобальной эпохи.
62
+ * Гарантирует защиту от циклических ссылок в графе сервисов.
63
+ *
64
+ * @template T Тип извлекаемой зависимости.
65
+ * @param token Уникальный ключ токена.
66
+ */
67
+ export declare function inject<T>(token: Token<T>): T;
12
68
  //# sourceMappingURL=core.global.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.global.d.ts","sourceRoot":"","sources":["../../src/core/core.global.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,cAAc,CAAC,EAAE,UAAU,GAAG,gCAA+C,CAAA;AACvG,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,OAAO,MAAM,kCAAoC,CAAA;AAC1F,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,GAAG,EAAE,OAAO,MAAM,eAAkC,CAAA;AACrF,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,IAAI,MAAM,CAAC,KAAG,CAA2B,CAAA;AAClE,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,IAAI,MAAM,CAAC,KAAG,CAA6B,CAAA;AAEtE;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD"}
1
+ {"version":3,"file":"core.global.d.ts","sourceRoot":"","sources":["../../src/core/core.global.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEpE;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,EACtB,YAAY,EAAE,CAAC,EACf,aAAa,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC,MAAM,CAAC,CAAC,CAAC,CAKX;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAKzE;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAKpE;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAKvC;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAKzC;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAKhF;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAK5C"}
@@ -4,6 +4,8 @@ interface LogDetails {
4
4
  to?: unknown;
5
5
  payload?: unknown;
6
6
  }
7
+ export declare function queueLog(type: LogEventType, label: string, details?: LogDetails): void;
8
+ export declare function flushLogs(): void;
7
9
  export declare class ReactiveDebounceLogger {
8
10
  private static churnTracker;
9
11
  private static readonly TIME_WINDOW_MS;
@@ -1 +1 @@
1
- {"version":3,"file":"core.logger.d.ts","sourceRoot":"","sources":["../../src/core/core.logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,YAAY,CAA8B;IAEzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAO;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAI;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAI;IAEpD,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;WA4CnB,UAAU,CACtB,YAAY,EAAE,GAAG,EACjB,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAAE;CAqCtG"}
1
+ {"version":3,"file":"core.logger.d.ts","sourceRoot":"","sources":["../../src/core/core.logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiC,MAAM,SAAS,CAAA;AAErE,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0BD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAatF;AAED,wBAAgB,SAAS,IAAI,IAAI,CA8BhC;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,YAAY,CAA8B;IAEzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAO;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAI;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAI;IAEpD,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;WA8BnB,UAAU,CACtB,YAAY,EAAE,GAAG,EACjB,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAAE;CAiCtG"}
@@ -1,5 +1,3 @@
1
- /**
2
- * * Изолированная фабрика глубоких реактивных Proxy-объектов графа.
3
- */
4
- export declare function createReactive<T extends object>(engine: any, target: T, name?: string): T;
1
+ import { ReactiveEngineCore } from './core';
2
+ export declare function createReactive<T extends object>(engine: ReactiveEngineCore, target: T, name?: string): T;
5
3
  //# sourceMappingURL=core.method.reactive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.method.reactive.d.ts","sourceRoot":"","sources":["../../src/core/core.method.reactive.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAC7C,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,CAAC,EACT,IAAI,CAAC,EAAE,MAAM,GACZ,CAAC,CA4FH"}
1
+ {"version":3,"file":"core.method.reactive.d.ts","sourceRoot":"","sources":["../../src/core/core.method.reactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAEhD,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAC7C,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,CAAC,EACT,IAAI,CAAC,EAAE,MAAM,GACZ,CAAC,CA+JH"}
@@ -1,14 +1,6 @@
1
- import { EngineLoggerOptions, Resource, ResourceOptions, Signal } from './types';
2
- interface IReactiveEngine {
3
- signal<V>(initialValue: V, optionsOrName?: any): Signal<V>;
4
- effect(fn: () => any, name?: string): () => void;
5
- untrack<V>(fn: () => V): V;
6
- log(params: any): void;
7
- delay(ms: number, signal: AbortSignal): Promise<void>;
8
- logger: EngineLoggerOptions;
9
- }
10
- export declare function createResource<T, S = void>(engine: IReactiveEngine, fetcher: (source: S, signal: AbortSignal) => Promise<T>, source?: {
1
+ import { ReactiveEngineCore } from './core';
2
+ import { Resource, ResourceOptions } from './types';
3
+ export declare function createResource<T, S = void>(engine: ReactiveEngineCore, fetcher: (source: S, signal: AbortSignal) => Promise<T>, source?: {
11
4
  value: S;
12
5
  }, optionsOrName?: string | ResourceOptions<T, S>): Resource<T>;
13
- export {};
14
6
  //# sourceMappingURL=core.method.resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.method.resource.d.ts","sourceRoot":"","sources":["../../src/core/core.method.resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAiB,MAAM,EAAE,MAAM,SAAS,CAAA;AAG/F,UAAU,eAAe;IACvB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IACjD,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,EAAE,mBAAmB,CAAA;CAC5B;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EACxC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACvD,MAAM,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,EACrB,aAAa,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7C,QAAQ,CAAC,CAAC,CAAC,CAuQb"}
1
+ {"version":3,"file":"core.method.resource.d.ts","sourceRoot":"","sources":["../../src/core/core.method.resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAA4B,MAAM,SAAS,CAAA;AAElF,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EACxC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACvD,MAAM,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,EACrB,aAAa,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7C,QAAQ,CAAC,CAAC,CAAC,CAsOb"}
@@ -75,6 +75,7 @@ export interface IEffect {
75
75
  export interface SignalOptions<T> {
76
76
  name?: string;
77
77
  validate?: (value: T) => boolean | string;
78
+ isInternalCoreSignal?: boolean;
78
79
  }
79
80
  export interface ResourceState<T> {
80
81
  data: T | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,37 @@
1
- import { ReactiveEngine as e } from "./core.mjs";
1
+ import { currentEngineInstance as e, resetGlobalReactiveEngine as t } from "./core.mjs";
2
2
  //#region src/core/core.global.ts
3
- var t = new e({ logger: { isEnabled: !1 } }), n = (e, n) => t.signal(e, n), r = (e, n) => t.computed(e, n), i = (e, n) => t.effect(e, n), a = (e) => t.batch(e), o = (e) => t.untrack(e);
3
+ function n(t, n) {
4
+ if (!e) throw Error("[Reactive Engine v3] Global engine instance is not initialized.");
5
+ return e.signal(t, n);
6
+ }
7
+ function r(t, n) {
8
+ if (!e) throw Error("[Reactive Engine v3] Global engine instance is not initialized.");
9
+ return e.computed(t, n);
10
+ }
11
+ function i(t, n) {
12
+ if (!e) throw Error("[Reactive Engine v3] Global engine instance is not initialized.");
13
+ return e.effect(t, n);
14
+ }
15
+ function a(t) {
16
+ if (!e) throw Error("[Reactive Engine v3] Global engine instance is not initialized.");
17
+ return e.batch(t);
18
+ }
19
+ function o(t) {
20
+ if (!e) throw Error("[Reactive Engine v3] Global engine instance is not initialized.");
21
+ return e.untrack(t);
22
+ }
4
23
  function s() {
5
- t = new e({ logger: { isEnabled: !1 } });
24
+ t();
25
+ }
26
+ function c(t, n) {
27
+ if (!e) throw Error("[Reactive Engine v3] Global engine instance is not initialized.");
28
+ e.provide(t, n);
29
+ }
30
+ function l(t) {
31
+ if (!e) throw Error("[Reactive Engine v3] Global engine instance is not initialized.");
32
+ return e.inject(t);
6
33
  }
7
34
  //#endregion
8
- export { a as batch, r as computed, i as effect, s as resetGlobalReactiveEngine, n as signal, o as untrack };
35
+ export { a as batch, r as computed, i as effect, l as inject, c as provide, s as resetGlobalReactiveEngine, n as signal, o as untrack };
9
36
 
10
37
  //# sourceMappingURL=core.global.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.global.mjs","names":[],"sources":["../src/core/core.global.ts"],"sourcesContent":["import { ReactiveEngineCore } from './core'\n\n// Единый глобальный инстанс по умолчанию\nlet globalEngine = new ReactiveEngineCore({ logger: { isEnabled: false } })\n\nexport const signal = <T>(initialValue: T, options?: any) => globalEngine.signal(initialValue, options)\nexport const computed = <T>(fn: () => T, name?: string) => globalEngine.computed(fn, name)\nexport const effect = (fn: () => any, name?: string) => globalEngine.effect(fn, name)\nexport const batch = <T>(fn: () => T): T => globalEngine.batch(fn)\nexport const untrack = <T>(fn: () => T): T => globalEngine.untrack(fn)\n\n/**\n * ⚡ ХУК ДЛЯ БЕНЧМАРКОВ И ТЕСТОВЫХ СРЕД:\n * Позволяет атомарно уничтожить старый граф реактивности и начать с чистого листа,\n * полностью исключая утечки памяти и пересечение эпох между тест-кейсами.\n */\nexport function resetGlobalReactiveEngine(): void {\n // Старый инстанс со всеми WeakMap и StringCache уходит в Garbage Collector\n globalEngine = new ReactiveEngineCore({ logger: { isEnabled: false } })\n}\n"],"mappings":";;AAGA,IAAI,IAAe,IAAI,EAAmB,EAAE,QAAQ,EAAE,WAAW,GAAM,EAAE,CAAC,GAE7D,KAAa,GAAiB,MAAkB,EAAa,OAAO,GAAc,CAAO,GACzF,KAAe,GAAa,MAAkB,EAAa,SAAS,GAAI,CAAI,GAC5E,KAAU,GAAe,MAAkB,EAAa,OAAO,GAAI,CAAI,GACvE,KAAY,MAAmB,EAAa,MAAM,CAAE,GACpD,KAAc,MAAmB,EAAa,QAAQ,CAAE;AAOrE,SAAgB,IAAkC;CAEhD,IAAe,IAAI,EAAmB,EAAE,QAAQ,EAAE,WAAW,GAAM,EAAE,CAAC;AACxE"}
1
+ {"version":3,"file":"core.global.mjs","names":[],"sources":["../src/core/core.global.ts"],"sourcesContent":["import {\n // ReactiveEngineCore,\n currentEngineInstance,\n resetGlobalReactiveEngine as resetEngineInstance,\n} from './core'\nimport { Computed, EffectFn, Signal, Token, Factory } from './types'\n\n/**\n * Создает новый реактивный сигнал в рамках текущей глобальной эпохи.\n *\n * @template T Тип значения, хранящегося внутри сигнала.\n * @param initialValue Начальное состояние сигнала.\n * @param optionsOrName Строковое имя или конфигурационный объект для отладки.\n */\nexport function signal<T>(\n initialValue: T,\n optionsOrName?: string | { name?: string }\n): Signal<T> {\n if (!currentEngineInstance) {\n throw new Error('[Reactive Engine v3] Global engine instance is not initialized.')\n }\n return currentEngineInstance.signal<T>(initialValue, optionsOrName)\n}\n\n/**\n * Создает декларативное вычисляемое свойство (Computed) в рамках текущей глобальной эпохи.\n * Полностью мемоизирует результат вычисления и использует ленивую pull-модель на NodeLink-связях.\n *\n * @template T Тип возвращаемого функцией значения.\n * @param fn Чистая функция-вычислитель.\n * @param signalName Опциональное имя для логирования и отладки графа.\n */\nexport function computed<T>(fn: () => T, signalName?: string): Computed<T> {\n if (!currentEngineInstance) {\n throw new Error('[Reactive Engine v3] Global engine instance is not initialized.')\n }\n return currentEngineInstance.computed<T>(fn, signalName)\n}\n\n/**\n * Регистрирует сайд-эффект в планировщике текущей глобальной эпохи.\n * Синхронно запускает первый проход вычисления для сбора реактивных зависимостей.\n *\n * @param fn Функция эффекта, которая может возвращать деструктор (колбэк очистки).\n * @param effectName Опциональное имя эффекта для трассировки и изоляции.\n * @returns Функция полного императивного разрыва связей и уничтожения (unsub/dispose).\n */\nexport function effect(fn: EffectFn, effectName?: string): () => void {\n if (!currentEngineInstance) {\n throw new Error('[Reactive Engine v3] Global engine instance is not initialized.')\n }\n return currentEngineInstance.effect(fn, effectName)\n}\n\n/**\n * Группирует последовательные мутации сигналов в единую атомарную транзакцию.\n * Откладывает флуш и выполнение эффектов до выхода из самого внешнего макро-батча.\n *\n * @template T Тип возвращаемого транзакционной функцией значения.\n * @param fn Функция, выполняющая пакетное обновление стейта.\n */\nexport function batch<T>(fn: () => T): T {\n if (!currentEngineInstance) {\n throw new Error('[Reactive Engine v3] Global engine instance is not initialized.')\n }\n return currentEngineInstance.batch<T>(fn)\n}\n\n/**\n * Временно замораживает автоматический трекинг зависимостей текущего потребителя.\n * Позволяет безопасно читать реактивные узлы внутри эффектов без создания циклов и лишних ребер.\n *\n * @template T Тип возвращаемого значения.\n * @param fn Контекстная функция чтения.\n */\nexport function untrack<T>(fn: () => T): T {\n if (!currentEngineInstance) {\n throw new Error('[Reactive Engine v3] Global engine instance is not initialized.')\n }\n return currentEngineInstance.untrack<T>(fn)\n}\n\n/**\n * Бескомпромиссно сжигает текущую глобальную реактивную эпоху.\n * Инициализирует новое изолированное ядро графа, гарантируя, что старые компоненты\n * и кэши вычислений не протекут в новые тестовые раны или жизненные циклы приложения.\n */\nexport function resetGlobalReactiveEngine(): void {\n resetEngineInstance()\n}\n\n/**\n * Регистрирует зависимость или фабрику в DI-контейнере текущей глобальной эпохи.\n *\n * @template T Тип регистрируемого значения.\n * @param token Уникальный ключ токена (строка, символ или класс).\n * @param valueOrFactory Значение или ленивая фабричная функция.\n */\nexport function provide<T>(token: Token<T>, valueOrFactory: T | Factory<T>): void {\n if (!currentEngineInstance) {\n throw new Error('[Reactive Engine v3] Global engine instance is not initialized.')\n }\n currentEngineInstance.provide<T>(token, valueOrFactory)\n}\n\n/**\n * Извлекает или лениво инициализирует зависимость из DI-контейнера текущей глобальной эпохи.\n * Гарантирует защиту от циклических ссылок в графе сервисов.\n *\n * @template T Тип извлекаемой зависимости.\n * @param token Уникальный ключ токена.\n */\nexport function inject<T>(token: Token<T>): T {\n if (!currentEngineInstance) {\n throw new Error('[Reactive Engine v3] Global engine instance is not initialized.')\n }\n return currentEngineInstance.inject<T>(token)\n}\n"],"mappings":";;AAcA,SAAgB,EACd,GACA,GACW;CACX,IAAI,CAAC,GACH,MAAU,MAAM,iEAAiE;CAEnF,OAAO,EAAsB,OAAU,GAAc,CAAa;AACpE;AAUA,SAAgB,EAAY,GAAa,GAAkC;CACzE,IAAI,CAAC,GACH,MAAU,MAAM,iEAAiE;CAEnF,OAAO,EAAsB,SAAY,GAAI,CAAU;AACzD;AAUA,SAAgB,EAAO,GAAc,GAAiC;CACpE,IAAI,CAAC,GACH,MAAU,MAAM,iEAAiE;CAEnF,OAAO,EAAsB,OAAO,GAAI,CAAU;AACpD;AASA,SAAgB,EAAS,GAAgB;CACvC,IAAI,CAAC,GACH,MAAU,MAAM,iEAAiE;CAEnF,OAAO,EAAsB,MAAS,CAAE;AAC1C;AASA,SAAgB,EAAW,GAAgB;CACzC,IAAI,CAAC,GACH,MAAU,MAAM,iEAAiE;CAEnF,OAAO,EAAsB,QAAW,CAAE;AAC5C;AAOA,SAAgB,IAAkC;CAChD,EAAoB;AACtB;AASA,SAAgB,EAAW,GAAiB,GAAsC;CAChF,IAAI,CAAC,GACH,MAAU,MAAM,iEAAiE;CAEnF,EAAsB,QAAW,GAAO,CAAc;AACxD;AASA,SAAgB,EAAU,GAAoB;CAC5C,IAAI,CAAC,GACH,MAAU,MAAM,iEAAiE;CAEnF,OAAO,EAAsB,OAAU,CAAK;AAC9C"}