@foxford/den 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapter.cjs +3 -2
- package/adapter.d.cts +1 -1
- package/adapter.d.ts +1 -1
- package/adapter.js +2 -1
- package/{chunk-4FPCRHSM.cjs → chunk-5DJZZML5.cjs} +15 -35
- package/chunk-A6ZPAM6Z.cjs +26 -0
- package/chunk-C7BM4DGX.cjs +18 -0
- package/chunk-HJO26HIQ.js +41 -0
- package/chunk-LJE7K7VD.cjs +35 -0
- package/chunk-TCYGDT2A.js +35 -0
- package/chunk-TPBI6TOU.js +26 -0
- package/{chunk-E7HG2NXO.js → chunk-WBHHHICS.js} +0 -22
- package/{chunk-S5KTWI6P.js → chunk-WRQC6BVJ.js} +9 -29
- package/chunk-XHYR3SGG.cjs +41 -0
- package/define-repository-DZg34Tb3.d.ts +83 -0
- package/define-repository-OpMj-Q9O.d.cts +83 -0
- package/define-slot-ESU7FR9O.d.ts +74 -0
- package/define-slot-RfgqKa6n.d.cts +74 -0
- package/define.cjs +6 -3
- package/define.d.cts +3 -2
- package/define.d.ts +3 -2
- package/define.js +7 -4
- package/index.cjs +32 -25
- package/index.d.cts +11 -10
- package/index.d.ts +11 -10
- package/index.js +14 -7
- package/island/index.cjs +137 -0
- package/island/index.d.cts +158 -0
- package/island/index.d.ts +158 -0
- package/island/index.js +137 -0
- package/package.json +26 -10
- package/types-Deyolj1-.d.cts +802 -0
- package/types-Deyolj1-.d.ts +802 -0
- package/view-adapter-CL0vZ-rv.d.ts +110 -0
- package/view-adapter-vwO-7b1t.d.cts +110 -0
- package/chunk-NRE6DV6O.cjs +0 -40
- package/define-slot--HM6B232.d.ts +0 -500
- package/define-slot-es1K6_-L.d.cts +0 -500
- package/types-B4Arep3V.d.cts +0 -415
- package/types-B4Arep3V.d.ts +0 -415
|
@@ -0,0 +1,802 @@
|
|
|
1
|
+
import { Token, Container, TokensToTypes } from '@foxford/ioc';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Интерфейс для объектов с жизненным циклом страницы.
|
|
5
|
+
* Реализуется сервисами и ViewModel, чтобы Core мог управлять их lifecycle.
|
|
6
|
+
*/
|
|
7
|
+
interface Activatable {
|
|
8
|
+
/**
|
|
9
|
+
* Вызывается при активации страницы (SSR и клиент).
|
|
10
|
+
* @param params - Параметры маршрута (например, { id: '42' })
|
|
11
|
+
*/
|
|
12
|
+
activate(params: Record<string, string>): void | Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Вызывается только на клиенте после hydration (опционально).
|
|
15
|
+
* @param params - Параметры маршрута
|
|
16
|
+
*/
|
|
17
|
+
activateClient?(params: Record<string, string>): void | Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Вызывается при уходе со страницы (опционально).
|
|
20
|
+
*/
|
|
21
|
+
deactivate?(): void | Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Базовый интерфейс для всех define*-определений.
|
|
26
|
+
* Содержит токен IoC и метод регистрации в контейнере.
|
|
27
|
+
* @template T - Тип регистрируемой зависимости
|
|
28
|
+
*/
|
|
29
|
+
interface Definition<T> {
|
|
30
|
+
/** Токен IoC для регистрации зависимости */
|
|
31
|
+
readonly token: Token<T>;
|
|
32
|
+
/**
|
|
33
|
+
* Регистрирует определение в IoC-контейнере.
|
|
34
|
+
* @param container - Контейнер для регистрации
|
|
35
|
+
*/
|
|
36
|
+
register(container: Container): void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* ServiceDefinition — результат вызова defineService.
|
|
40
|
+
* Описывает сервис с lifecycle-хуками activate/deactivate.
|
|
41
|
+
* @template T - Тип сервиса
|
|
42
|
+
* @template Deps - Кортеж токенов зависимостей
|
|
43
|
+
*/
|
|
44
|
+
interface ServiceDefinition<T, Deps extends readonly Token<unknown>[]> extends Definition<T> {
|
|
45
|
+
/** Дискриминатор типа */
|
|
46
|
+
readonly __type: 'service';
|
|
47
|
+
/** Метаданные определения */
|
|
48
|
+
readonly __meta: {
|
|
49
|
+
/** Токены зависимостей, используемых сервисом */
|
|
50
|
+
readonly requires: Deps;
|
|
51
|
+
/**
|
|
52
|
+
* Скоуп жизненного цикла сервиса.
|
|
53
|
+
* - `'app'` — синглтон на время жизни приложения (по умолчанию)
|
|
54
|
+
* - `'request'` — на сервере создаётся per HTTP-request, на клиенте — app-scope
|
|
55
|
+
*/
|
|
56
|
+
readonly scope: 'app' | 'request';
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* ViewModelDefinition — результат вызова defineViewModel.
|
|
61
|
+
* Proxy для прямого импорта VM из view-компонентов.
|
|
62
|
+
* Поддерживает deferred resolution — контейнер не нужен на момент import.
|
|
63
|
+
* @template T - Тип ViewModel
|
|
64
|
+
* @template Deps - Кортеж токенов зависимостей
|
|
65
|
+
*/
|
|
66
|
+
interface ViewModelDefinition<T, Deps extends readonly Token<unknown>[]> extends Definition<T> {
|
|
67
|
+
/** Дискриминатор типа */
|
|
68
|
+
readonly __type: 'view-model';
|
|
69
|
+
/** Метаданные определения */
|
|
70
|
+
readonly __meta: {
|
|
71
|
+
/** Токены зависимостей, используемых VM */
|
|
72
|
+
readonly requires: Deps;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Резолвит VM из глобального IoC-контейнера.
|
|
76
|
+
* Deferred resolution — вызывайте когда контейнер уже инициализирован.
|
|
77
|
+
* Используется в view-компонентах вместо явного вызова container.resolve.
|
|
78
|
+
* @returns Экземпляр VM или Promise с экземпляром
|
|
79
|
+
*/
|
|
80
|
+
resolve(): T | Promise<T>;
|
|
81
|
+
/**
|
|
82
|
+
* Псевдоним для resolve(). Резолвит VM из глобального IoC-контейнера.
|
|
83
|
+
* @returns Экземпляр VM или Promise с экземпляром
|
|
84
|
+
*/
|
|
85
|
+
use(): T | Promise<T>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* GuardDefinition — результат вызова defineGuard.
|
|
89
|
+
* Совместим с Guard interface и guardRunner.runGuards().
|
|
90
|
+
*/
|
|
91
|
+
interface GuardDefinition extends Definition<Guard> {
|
|
92
|
+
/** Дискриминатор типа */
|
|
93
|
+
readonly __type: 'guard';
|
|
94
|
+
/** Метаданные определения */
|
|
95
|
+
readonly __meta: {
|
|
96
|
+
/** Токены зависимостей guard (пустой массив для инлайн-определений) */
|
|
97
|
+
readonly requires: readonly Token<unknown>[];
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** Опции для defineService */
|
|
101
|
+
interface DefineServiceOptions<Deps extends readonly Token<unknown>[], T = unknown> {
|
|
102
|
+
/** Список токенов зависимостей (опционально) */
|
|
103
|
+
readonly requires?: Deps;
|
|
104
|
+
/**
|
|
105
|
+
* Скоуп жизненного цикла сервиса.
|
|
106
|
+
* - `'app'` — синглтон на время жизни приложения (по умолчанию)
|
|
107
|
+
* - `'request'` — на сервере создаётся per HTTP-request, на клиенте — app-scope
|
|
108
|
+
*/
|
|
109
|
+
readonly scope?: 'app' | 'request';
|
|
110
|
+
/**
|
|
111
|
+
* Фабрика для создания экземпляра сервиса.
|
|
112
|
+
* Когда передана — регистрирует возвращаемый объект напрямую (без Activatable-обёртки).
|
|
113
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
114
|
+
* @returns Экземпляр сервиса
|
|
115
|
+
*/
|
|
116
|
+
create?: (deps: TokensToTypes<Deps>) => T;
|
|
117
|
+
/**
|
|
118
|
+
* Вызывается при активации страницы.
|
|
119
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
120
|
+
* @param params - Параметры маршрута
|
|
121
|
+
*/
|
|
122
|
+
activate?: (deps: TokensToTypes<Deps>, params: Record<string, string>) => void | Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Вызывается при деактивации страницы (опционально).
|
|
125
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
126
|
+
*/
|
|
127
|
+
deactivate?: (deps: TokensToTypes<Deps>) => void | Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Возвращает сериализуемое состояние сервиса для SSR-передачи на клиент (опционально).
|
|
130
|
+
* Наличие serialize/deserialize включает участие сервиса в StateRegistry контейнера.
|
|
131
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
132
|
+
* @returns Plain-объект/значение, сериализуемое в JSON
|
|
133
|
+
*/
|
|
134
|
+
serialize?: (deps: TokensToTypes<Deps>) => unknown;
|
|
135
|
+
/**
|
|
136
|
+
* Восстанавливает состояние сервиса из данных, сериализованных на сервере (опционально).
|
|
137
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
138
|
+
* @param data - Данные, полученные из serialize при SSR
|
|
139
|
+
*/
|
|
140
|
+
deserialize?: (deps: TokensToTypes<Deps>, data: unknown) => void;
|
|
141
|
+
}
|
|
142
|
+
/** Опции для defineViewModel */
|
|
143
|
+
interface DefineViewModelOptions<Deps extends readonly Token<unknown>[], T> {
|
|
144
|
+
/** Список токенов зависимостей (опционально) */
|
|
145
|
+
readonly requires?: Deps;
|
|
146
|
+
/**
|
|
147
|
+
* Фабрика для создания экземпляра VM.
|
|
148
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
149
|
+
* @param cachedState - Закэшированный стейт из toJSON() при предыдущем визите (undefined при первом)
|
|
150
|
+
* @returns Экземпляр ViewModel
|
|
151
|
+
*/
|
|
152
|
+
create: (deps: TokensToTypes<Deps>, cachedState?: unknown) => T;
|
|
153
|
+
}
|
|
154
|
+
/** Опции для defineGuard */
|
|
155
|
+
interface DefineGuardOptions<Deps extends readonly Token<unknown>[] = readonly []> {
|
|
156
|
+
/** Список токенов зависимостей (опционально) */
|
|
157
|
+
readonly requires?: Deps;
|
|
158
|
+
/**
|
|
159
|
+
* Фабрика для создания экземпляра Guard с инъекцией зависимостей.
|
|
160
|
+
* Когда передана вместе с requires — создаёт Guard через конструктор с инъектированными зависимостями.
|
|
161
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
162
|
+
* @returns Экземпляр Guard
|
|
163
|
+
*/
|
|
164
|
+
create?: (deps: TokensToTypes<Deps>) => Guard;
|
|
165
|
+
/**
|
|
166
|
+
* Инлайн-реализация проверки доступа (используется когда create не передана).
|
|
167
|
+
* @param params - Параметры маршрута
|
|
168
|
+
* @returns Результат проверки или Promise с результатом
|
|
169
|
+
*/
|
|
170
|
+
check?: (params: Record<string, string>) => GuardResult | Promise<GuardResult>;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Конфигурация приложения, регистрируемая в IoC-контейнере.
|
|
174
|
+
*/
|
|
175
|
+
interface HostConfig {
|
|
176
|
+
/** Сервисы, инициализируемые немедленно при старте */
|
|
177
|
+
readonly eager: readonly Token<unknown>[];
|
|
178
|
+
/** Сервисы, инициализируемые лениво (по требованию) */
|
|
179
|
+
readonly lazy: readonly Token<unknown>[];
|
|
180
|
+
/** Глобальные guards, применяемые ко всем страницам */
|
|
181
|
+
readonly guards: readonly Token<Guard>[];
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* HostDefinition — результат вызова defineHost.
|
|
185
|
+
* Декларирует конфигурацию приложения: eager/lazy сервисы, глобальные guards.
|
|
186
|
+
*/
|
|
187
|
+
interface HostDefinition extends Definition<HostConfig> {
|
|
188
|
+
/** Дискриминатор типа */
|
|
189
|
+
readonly __type: 'host';
|
|
190
|
+
/** Метаданные определения */
|
|
191
|
+
readonly __meta: {
|
|
192
|
+
/** Приложение не имеет requires-зависимостей */
|
|
193
|
+
readonly requires: readonly [];
|
|
194
|
+
/** Eager-сервисы */
|
|
195
|
+
readonly eager: readonly Token<unknown>[];
|
|
196
|
+
/** Lazy-сервисы */
|
|
197
|
+
readonly lazy: readonly Token<unknown>[];
|
|
198
|
+
/** Глобальные guards */
|
|
199
|
+
readonly guards: readonly Token<Guard>[];
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* RepositoryDefinition — результат вызова defineRepository.
|
|
204
|
+
* Описывает репозиторий уровня данных с IoC-биндингом.
|
|
205
|
+
* @template T - Тип репозитория
|
|
206
|
+
* @template Deps - Кортеж токенов зависимостей
|
|
207
|
+
*/
|
|
208
|
+
interface RepositoryDefinition<T, Deps extends readonly Token<unknown>[]> extends Definition<T> {
|
|
209
|
+
/** Дискриминатор типа */
|
|
210
|
+
readonly __type: 'repository';
|
|
211
|
+
/** Метаданные определения */
|
|
212
|
+
readonly __meta: {
|
|
213
|
+
/** Токены зависимостей, используемых репозиторием */
|
|
214
|
+
readonly requires: Deps;
|
|
215
|
+
/**
|
|
216
|
+
* Скоуп жизненного цикла репозитория.
|
|
217
|
+
* - `'app'` — синглтон на время жизни приложения (по умолчанию)
|
|
218
|
+
* - `'request'` — на сервере создаётся per HTTP-request, на клиенте — app-scope
|
|
219
|
+
*/
|
|
220
|
+
readonly scope: 'app' | 'request';
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/** Опции для defineHost */
|
|
224
|
+
interface DefineHostOptions {
|
|
225
|
+
/** Сервисы, инициализируемые немедленно при старте приложения */
|
|
226
|
+
readonly eager?: readonly Token<unknown>[];
|
|
227
|
+
/** Сервисы, инициализируемые лениво (по требованию) */
|
|
228
|
+
readonly lazy?: readonly Token<unknown>[];
|
|
229
|
+
/** Глобальные guards, применяемые ко всем страницам */
|
|
230
|
+
readonly guards?: readonly Token<Guard>[];
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Опции для defineRepository
|
|
234
|
+
* @template Deps - Кортеж токенов зависимостей
|
|
235
|
+
* @template T - Тип репозитория
|
|
236
|
+
*/
|
|
237
|
+
interface DefineRepositoryOptions<Deps extends readonly Token<unknown>[], T> {
|
|
238
|
+
/** Список токенов зависимостей (опционально) */
|
|
239
|
+
readonly requires?: Deps;
|
|
240
|
+
/**
|
|
241
|
+
* Скоуп жизненного цикла репозитория.
|
|
242
|
+
* - `'app'` — синглтон на время жизни приложения (по умолчанию)
|
|
243
|
+
* - `'request'` — на сервере создаётся per HTTP-request, на клиенте — app-scope
|
|
244
|
+
*/
|
|
245
|
+
readonly scope?: 'app' | 'request';
|
|
246
|
+
/**
|
|
247
|
+
* Фабрика для создания экземпляра репозитория.
|
|
248
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
249
|
+
* @returns Экземпляр репозитория
|
|
250
|
+
*/
|
|
251
|
+
create: (deps: TokensToTypes<Deps>) => T;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* ActionGuard — перехватчик вызова метода Service.
|
|
255
|
+
* Позволяет вставить проверку (2FA, подтверждение) перед выполнением операции.
|
|
256
|
+
*/
|
|
257
|
+
interface ActionGuard {
|
|
258
|
+
/**
|
|
259
|
+
* Перехватывает вызов операции.
|
|
260
|
+
* @param next - Функция продолжения (оборачиваемая операция)
|
|
261
|
+
* @returns Промис с результатом операции
|
|
262
|
+
*/
|
|
263
|
+
intercept<T>(next: () => Promise<T>): Promise<T>;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* ActionGuardDefinition — результат вызова defineActionGuard.
|
|
267
|
+
* Регистрирует перехватчик вызовов метода Service в IoC.
|
|
268
|
+
* @template Deps - Кортеж токенов зависимостей
|
|
269
|
+
*/
|
|
270
|
+
interface ActionGuardDefinition<Deps extends readonly Token<unknown>[]> extends Definition<ActionGuard> {
|
|
271
|
+
/** Дискриминатор типа */
|
|
272
|
+
readonly __type: 'action-guard';
|
|
273
|
+
/** Метаданные определения */
|
|
274
|
+
readonly __meta: {
|
|
275
|
+
/** Токены зависимостей перехватчика */
|
|
276
|
+
readonly requires: Deps;
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/** Опции для defineActionGuard */
|
|
280
|
+
interface DefineActionGuardOptions<Deps extends readonly Token<unknown>[]> {
|
|
281
|
+
/** Список токенов зависимостей (опционально) */
|
|
282
|
+
readonly requires?: Deps;
|
|
283
|
+
/**
|
|
284
|
+
* Реализация перехвата: получает зависимости и функцию продолжения.
|
|
285
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
286
|
+
* @param next - Оборачиваемая операция
|
|
287
|
+
* @returns Промис с результатом операции
|
|
288
|
+
*/
|
|
289
|
+
intercept: (deps: TokensToTypes<Deps>, next: () => Promise<unknown>) => Promise<unknown>;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Конфигурация расширения (Extension), регистрируемая в IoC-контейнере.
|
|
293
|
+
* Extension — app-scope модуль с lifecycle (модалки, онбординг, очереди).
|
|
294
|
+
*/
|
|
295
|
+
interface ExtensionConfig {
|
|
296
|
+
/** Сигнатура поля для различения от других конфигов */
|
|
297
|
+
readonly __extensionConfig: true;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* ExtensionDefinition — результат вызова defineExtension.
|
|
301
|
+
* Регистрирует app-scope Activatable с lifecycle в IoC.
|
|
302
|
+
* @template Deps - Кортеж токенов зависимостей
|
|
303
|
+
*/
|
|
304
|
+
interface ExtensionDefinition<Deps extends readonly Token<unknown>[]> extends Definition<ExtensionConfig> {
|
|
305
|
+
/** Дискриминатор типа */
|
|
306
|
+
readonly __type: 'extension';
|
|
307
|
+
/** Метаданные определения */
|
|
308
|
+
readonly __meta: {
|
|
309
|
+
/** Токены зависимостей расширения */
|
|
310
|
+
readonly requires: Deps;
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
/** Опции для defineExtension */
|
|
314
|
+
interface DefineExtensionOptions<Deps extends readonly Token<unknown>[]> {
|
|
315
|
+
/** Список токенов зависимостей (опционально) */
|
|
316
|
+
readonly requires?: Deps;
|
|
317
|
+
/**
|
|
318
|
+
* Вызывается при активации расширения (загрузка приложения).
|
|
319
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
320
|
+
*/
|
|
321
|
+
activate?: (deps: TokensToTypes<Deps>) => void | Promise<void>;
|
|
322
|
+
/**
|
|
323
|
+
* Вызывается при деактивации расширения (выгрузка приложения).
|
|
324
|
+
* @param deps - Разрешённые зависимости в порядке, соответствующем requires
|
|
325
|
+
*/
|
|
326
|
+
deactivate?: (deps: TokensToTypes<Deps>) => void | Promise<void>;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Конфигурация layout, регистрируемая в IoC-контейнере.
|
|
330
|
+
*/
|
|
331
|
+
interface LayoutConfig {
|
|
332
|
+
/** Токены ViewModel, привязанных к layout */
|
|
333
|
+
readonly viewModels: readonly Token<unknown>[];
|
|
334
|
+
/** Именованные слоты layout: имя → токен */
|
|
335
|
+
readonly slots: Record<string, Token<unknown>>;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* LayoutDefinition — результат вызова defineLayout.
|
|
339
|
+
* Декларирует layout с lifecycle и привязкой ViewModel.
|
|
340
|
+
*/
|
|
341
|
+
interface LayoutDefinition extends Definition<LayoutConfig> {
|
|
342
|
+
/** Дискриминатор типа */
|
|
343
|
+
readonly __type: 'layout';
|
|
344
|
+
/** Метаданные определения */
|
|
345
|
+
readonly __meta: {
|
|
346
|
+
/** Layout не имеет requires-зависимостей */
|
|
347
|
+
readonly requires: readonly [];
|
|
348
|
+
/** Токены ViewModel */
|
|
349
|
+
readonly viewModels: readonly Token<unknown>[];
|
|
350
|
+
/** Слоты layout */
|
|
351
|
+
readonly slots: Record<string, Token<unknown>>;
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
/** Опции для defineLayout */
|
|
355
|
+
interface DefineLayoutOptions {
|
|
356
|
+
/** Токены ViewModel, привязанных к layout */
|
|
357
|
+
readonly viewModels?: readonly Token<unknown>[];
|
|
358
|
+
/** Именованные слоты layout: имя → токен */
|
|
359
|
+
readonly slots?: Record<string, Token<unknown>>;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Конфигурация конфигурационного слоя (Layer).
|
|
363
|
+
* Описывает view-адаптер для смены фреймворка рендеринга.
|
|
364
|
+
*/
|
|
365
|
+
interface LayerConfig {
|
|
366
|
+
/** Имя слоя (например, 'view') */
|
|
367
|
+
readonly name: string;
|
|
368
|
+
/** Адаптер view-фреймворка (react, vue и т.д.) */
|
|
369
|
+
readonly adapter: unknown;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* LayerDefinition — результат вызова defineLayer.
|
|
373
|
+
* Описывает конфигурационный слой для view-фреймворка.
|
|
374
|
+
*
|
|
375
|
+
* Единственный конструктор — `defineLayer`. Руками этот тип не собирают, поэтому добавление
|
|
376
|
+
* обязательных полей сюда потребителей не ломает, а инварианты (например «config всегда есть»)
|
|
377
|
+
* держит фабрика, а не соглашение на месте использования.
|
|
378
|
+
*/
|
|
379
|
+
interface LayerDefinition extends Definition<LayerConfig> {
|
|
380
|
+
/** Дискриминатор типа */
|
|
381
|
+
readonly __type: 'layer';
|
|
382
|
+
/**
|
|
383
|
+
* Конфиг слоя — доступен и без контейнера.
|
|
384
|
+
*
|
|
385
|
+
* Нужен потому, что адаптер спрашивают в двух разных положениях: изнутри острова, где
|
|
386
|
+
* контейнер уже есть (резолв по токену), и снаружи, когда по дескриптору только собираются
|
|
387
|
+
* СОЗДАТЬ остров и контейнера ещё нет. Второму пути читать нечего, кроме самого дескриптора.
|
|
388
|
+
*/
|
|
389
|
+
readonly config: LayerConfig;
|
|
390
|
+
/** Метаданные определения */
|
|
391
|
+
readonly __meta: {
|
|
392
|
+
/** Layer не имеет requires-зависимостей */
|
|
393
|
+
readonly requires: readonly [];
|
|
394
|
+
/** Имя слоя */
|
|
395
|
+
readonly name: string;
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
/** Опции для defineLayer */
|
|
399
|
+
interface DefineLayerOptions {
|
|
400
|
+
/** Имя слоя (например, 'view') */
|
|
401
|
+
readonly name: string;
|
|
402
|
+
/** Адаптер view-фреймворка */
|
|
403
|
+
readonly adapter: unknown;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Запись слота в реестре: имя + непрозрачная ссылка на view.
|
|
408
|
+
*
|
|
409
|
+
* `view` намеренно `unknown` — ядро не знает, что это компонент React/Vue/…: рендерит
|
|
410
|
+
* его view-адаптер. Так слот host-агностичен.
|
|
411
|
+
*/
|
|
412
|
+
interface SlotEntry {
|
|
413
|
+
/** Имя слота — по нему оркестратор решает, чем его заполнить. */
|
|
414
|
+
name: string;
|
|
415
|
+
/** Непрозрачная ссылка на view слота (компонент view-фреймворка). */
|
|
416
|
+
view: unknown;
|
|
417
|
+
/**
|
|
418
|
+
* View-слой ЭТОГО слота, если приложение переопределило его при `defineSlot`.
|
|
419
|
+
* Пусто — слот рисуется адаптером острова, в который попал.
|
|
420
|
+
*/
|
|
421
|
+
viewLayer?: LayerDefinition;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Per-container реестр слотов.
|
|
425
|
+
*
|
|
426
|
+
* `defineSlot(...).register(container)` кладёт слот сюда; оркестратор (например
|
|
427
|
+
* федерация core-app) резолвит реестр из контейнера и перечисляет все зарегистрированные
|
|
428
|
+
* слоты — без сканирования исходников, чистый DI. Живёт столько же, сколько контейнер.
|
|
429
|
+
*/
|
|
430
|
+
declare class SlotRegistry {
|
|
431
|
+
/** Слоты по имени. Повторная регистрация с тем же именем перезаписывает. */
|
|
432
|
+
private readonly slots;
|
|
433
|
+
/**
|
|
434
|
+
* Регистрирует слот.
|
|
435
|
+
* @param entry - Запись слота (имя + непрозрачный view)
|
|
436
|
+
*/
|
|
437
|
+
add(entry: SlotEntry): void;
|
|
438
|
+
/**
|
|
439
|
+
* Возвращает слот по имени.
|
|
440
|
+
* @param name - Имя слота
|
|
441
|
+
*/
|
|
442
|
+
get(name: string): SlotEntry | undefined;
|
|
443
|
+
/**
|
|
444
|
+
* Возвращает все зарегистрированные слоты.
|
|
445
|
+
*/
|
|
446
|
+
all(): readonly SlotEntry[];
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Кэш сериализованных стейтов страниц.
|
|
451
|
+
* Используется для восстановления состояния при возврате на ранее посещённую страницу.
|
|
452
|
+
* Реализует LRU-стратегию с ограничением по количеству записей.
|
|
453
|
+
*/
|
|
454
|
+
declare class StateCache {
|
|
455
|
+
private cache;
|
|
456
|
+
private readonly maxSize;
|
|
457
|
+
/**
|
|
458
|
+
* @param maxSize - Максимальное количество кэшированных страниц (по умолчанию 10)
|
|
459
|
+
*/
|
|
460
|
+
constructor(maxSize?: number);
|
|
461
|
+
/**
|
|
462
|
+
* Сохраняет сериализованный стейт страницы.
|
|
463
|
+
* @param routeId - Идентификатор маршрута
|
|
464
|
+
* @param state - Сериализованный стейт (результат toJSON() от VM)
|
|
465
|
+
*/
|
|
466
|
+
set(routeId: string, state: Record<string, unknown>): void;
|
|
467
|
+
/**
|
|
468
|
+
* Возвращает закэшированный стейт страницы или undefined.
|
|
469
|
+
* @param routeId - Идентификатор маршрута
|
|
470
|
+
*/
|
|
471
|
+
get(routeId: string): Record<string, unknown> | undefined;
|
|
472
|
+
/**
|
|
473
|
+
* Удаляет кэш для страницы.
|
|
474
|
+
* @param routeId - Идентификатор маршрута
|
|
475
|
+
*/
|
|
476
|
+
delete(routeId: string): void;
|
|
477
|
+
/** Очищает весь кэш. */
|
|
478
|
+
clear(): void;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* Участник сериализации состояния — сервис, объявивший serialize/deserialize.
|
|
483
|
+
* Методы замкнуты на разрешённые зависимости сервиса и на его экземпляр,
|
|
484
|
+
* поэтому сериализатору не нужно повторно резолвить токены.
|
|
485
|
+
*/
|
|
486
|
+
interface StateParticipant {
|
|
487
|
+
/** Возвращает сериализуемое состояние (если сервис объявил serialize). */
|
|
488
|
+
toJSON?(): unknown;
|
|
489
|
+
/** Восстанавливает состояние из данных (если сервис объявил deserialize). */
|
|
490
|
+
fromJSON?(data: unknown): void;
|
|
491
|
+
/** Активирует сервис при входе на страницу (lifecycle-хук activate). */
|
|
492
|
+
activate?(params: Record<string, string>): void | Promise<void>;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Реестр участников сериализации в рамках одного контейнера.
|
|
496
|
+
*
|
|
497
|
+
* Живёт ровно столько, сколько контейнер (page/request), в который он забинжен
|
|
498
|
+
* контейнер-менеджером. Уничтожается вместе с контейнером через dispose — поэтому
|
|
499
|
+
* ссылки на страничные сервисы не утекают в app-scope, в отличие от прежнего
|
|
500
|
+
* app-scope Map в StateSerializerImpl.
|
|
501
|
+
*/
|
|
502
|
+
declare class StateRegistry {
|
|
503
|
+
/** Участники: стабильный ключ (token.description) → участник. */
|
|
504
|
+
private readonly participants;
|
|
505
|
+
/**
|
|
506
|
+
* Регистрирует участника сериализации.
|
|
507
|
+
* Повторная регистрация с тем же ключом перезаписывает предыдущего.
|
|
508
|
+
* @param key - Стабильный ключ (обычно token.description)
|
|
509
|
+
* @param participant - Участник с хуками toJSON/fromJSON/activate
|
|
510
|
+
*/
|
|
511
|
+
add(key: string, participant: StateParticipant): void;
|
|
512
|
+
/**
|
|
513
|
+
* Возвращает всех зарегистрированных участников (ключ → участник).
|
|
514
|
+
*/
|
|
515
|
+
all(): ReadonlyMap<string, StateParticipant>;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Контекст HTTP-запроса — заголовки и cookies, переданные сервером.
|
|
520
|
+
* На клиенте содержит пустые объекты.
|
|
521
|
+
*/
|
|
522
|
+
interface RequestContext {
|
|
523
|
+
/** HTTP-заголовки запроса (в нижнем регистре) */
|
|
524
|
+
headers: Record<string, string>;
|
|
525
|
+
/** Распарсенные cookies из заголовка Cookie */
|
|
526
|
+
cookies: Record<string, string>;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Результат проверки guard.
|
|
530
|
+
* - `{ allowed: true }` — переход разрешён
|
|
531
|
+
* - `{ allowed: false, redirect: string }` — переход запрещён, перенаправить по redirect
|
|
532
|
+
*/
|
|
533
|
+
type GuardResult = {
|
|
534
|
+
allowed: true;
|
|
535
|
+
} | {
|
|
536
|
+
allowed: false;
|
|
537
|
+
redirect: string;
|
|
538
|
+
};
|
|
539
|
+
/**
|
|
540
|
+
* Guard — функция проверки доступа к странице.
|
|
541
|
+
* Вызывается до активации страницы.
|
|
542
|
+
*/
|
|
543
|
+
interface Guard {
|
|
544
|
+
/**
|
|
545
|
+
* Проверяет доступ к маршруту.
|
|
546
|
+
* @param params - Параметры маршрута
|
|
547
|
+
* @returns Результат проверки
|
|
548
|
+
*/
|
|
549
|
+
check(params: Record<string, string>): GuardResult | Promise<GuardResult>;
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Запись в истории навигации.
|
|
553
|
+
*/
|
|
554
|
+
interface NavigationEntry {
|
|
555
|
+
/** Маршрут, с которого произошёл переход */
|
|
556
|
+
from: string | null;
|
|
557
|
+
/** Маршрут, на который произошёл переход */
|
|
558
|
+
to: string;
|
|
559
|
+
/** Параметры маршрута назначения */
|
|
560
|
+
params: Record<string, string>;
|
|
561
|
+
/** Временная метка перехода (ms) */
|
|
562
|
+
timestamp: number;
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Менеджер дочерних контейнеров для страниц и запросов.
|
|
566
|
+
*/
|
|
567
|
+
interface ContainerManager {
|
|
568
|
+
/**
|
|
569
|
+
* Возвращает app-контейнер (синглтон).
|
|
570
|
+
*/
|
|
571
|
+
getAppContainer(): Container;
|
|
572
|
+
/**
|
|
573
|
+
* Возвращает существующий дочерний контейнер страницы или undefined.
|
|
574
|
+
* @param routeId - Идентификатор маршрута
|
|
575
|
+
*/
|
|
576
|
+
getPageContainer(routeId: string): Container | undefined;
|
|
577
|
+
/**
|
|
578
|
+
* Создаёт дочерний контейнер для страницы.
|
|
579
|
+
* Если контейнер для данного routeId уже существует, возвращает его.
|
|
580
|
+
* @param routeId - Идентификатор маршрута
|
|
581
|
+
*/
|
|
582
|
+
createPageContainer(routeId: string): Container;
|
|
583
|
+
/**
|
|
584
|
+
* Уничтожает дочерний контейнер страницы и освобождает ресурсы.
|
|
585
|
+
* @param routeId - Идентификатор маршрута
|
|
586
|
+
*/
|
|
587
|
+
destroyPageContainer(routeId: string): Promise<void>;
|
|
588
|
+
/**
|
|
589
|
+
* Создаёт дочерний контейнер для HTTP-запроса с забинженным RequestContext.
|
|
590
|
+
* Если контейнер для данного requestId уже существует, возвращает существующий.
|
|
591
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
592
|
+
* @param context - Контекст запроса (заголовки и cookies)
|
|
593
|
+
*/
|
|
594
|
+
createRequestContainer(requestId: string, context: RequestContext): Container;
|
|
595
|
+
/**
|
|
596
|
+
* Возвращает существующий контейнер запроса или undefined.
|
|
597
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
598
|
+
*/
|
|
599
|
+
getRequestContainer(requestId: string): Container | undefined;
|
|
600
|
+
/**
|
|
601
|
+
* Уничтожает контейнер запроса и освобождает ресурсы.
|
|
602
|
+
* Если контейнер не найден — no-op.
|
|
603
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
604
|
+
*/
|
|
605
|
+
destroyRequestContainer(requestId: string): Promise<void>;
|
|
606
|
+
/**
|
|
607
|
+
* Создаёт page container для SSR как дочерний от заданного родителя (обычно request container).
|
|
608
|
+
* Отслеживается менеджером — может быть уничтожен через destroySsrPageContainer после рендера.
|
|
609
|
+
* Если контейнер для данного requestId уже существует, возвращает существующий.
|
|
610
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
611
|
+
* @param parent - Родительский контейнер
|
|
612
|
+
*/
|
|
613
|
+
createSsrPageContainer(requestId: string, parent: Container): Container;
|
|
614
|
+
/**
|
|
615
|
+
* Уничтожает SSR page container и освобождает ресурсы (Disposable VM, сервисы).
|
|
616
|
+
* Вызывается в onAfterRenderHtml после завершения SSR-рендера.
|
|
617
|
+
* Если контейнер не найден — no-op.
|
|
618
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
619
|
+
*/
|
|
620
|
+
destroySsrPageContainer(requestId: string): Promise<void>;
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Запускатель guards для страниц.
|
|
624
|
+
*/
|
|
625
|
+
interface GuardRunner {
|
|
626
|
+
/**
|
|
627
|
+
* Параллельно выполняет все guards и возвращает их результаты.
|
|
628
|
+
* Если передан container — guards резолвятся из него (request-scope).
|
|
629
|
+
* Без container — guards резолвятся из app-контейнера (поведение по умолчанию).
|
|
630
|
+
* @param tokens - Токены guards
|
|
631
|
+
* @param params - Параметры маршрута
|
|
632
|
+
* @param container - Опциональный контейнер для резолвинга guards (например, request container)
|
|
633
|
+
*/
|
|
634
|
+
runGuards(tokens: Token<Guard>[], params: Record<string, string>, container?: Container): Promise<GuardResult[]>;
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Объект, поддерживающий освобождение ресурсов.
|
|
638
|
+
* Возвращается методами регистрации для отмены подписки.
|
|
639
|
+
*/
|
|
640
|
+
interface Disposable {
|
|
641
|
+
/** Освобождает ресурсы и отменяет регистрацию. */
|
|
642
|
+
dispose(): void;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Перехватчик навигации — вызывается перед каждым переходом (leave guard).
|
|
646
|
+
*/
|
|
647
|
+
interface NavigationInterceptor {
|
|
648
|
+
/**
|
|
649
|
+
* Проверяет, разрешён ли переход.
|
|
650
|
+
* @param from - Текущий маршрут (откуда), null при первом переходе
|
|
651
|
+
* @param to - Целевой маршрут (куда)
|
|
652
|
+
* @returns Объект с результатом проверки
|
|
653
|
+
*/
|
|
654
|
+
beforeNavigate(from: string | null, to: string): Promise<{
|
|
655
|
+
allow: boolean;
|
|
656
|
+
reason?: string;
|
|
657
|
+
}>;
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Результат проверки leave guards.
|
|
661
|
+
* - `{ allow: true }` — переход разрешён
|
|
662
|
+
* - `{ allow: false, reason? }` — переход заблокирован
|
|
663
|
+
*/
|
|
664
|
+
type LeaveGuardResult = {
|
|
665
|
+
allow: true;
|
|
666
|
+
} | {
|
|
667
|
+
allow: false;
|
|
668
|
+
reason?: string;
|
|
669
|
+
};
|
|
670
|
+
/**
|
|
671
|
+
* Менеджер навигации — хранит историю переходов и оповещает подписчиков.
|
|
672
|
+
*/
|
|
673
|
+
interface NavigationManager {
|
|
674
|
+
/** История переходов (не изменяется снаружи) */
|
|
675
|
+
readonly history: NavigationEntry[];
|
|
676
|
+
/** Текущая запись навигации */
|
|
677
|
+
current: NavigationEntry | null;
|
|
678
|
+
/**
|
|
679
|
+
* Подписывается на событие навигации.
|
|
680
|
+
* @param handler - Обработчик события
|
|
681
|
+
* @returns Функция отписки
|
|
682
|
+
*/
|
|
683
|
+
onNavigate(handler: (entry: NavigationEntry) => void): () => void;
|
|
684
|
+
/**
|
|
685
|
+
* Записывает переход и оповещает подписчиков.
|
|
686
|
+
* @param from - Маршрут отправления
|
|
687
|
+
* @param to - Маршрут назначения
|
|
688
|
+
* @param params - Параметры маршрута
|
|
689
|
+
*/
|
|
690
|
+
recordNavigation(from: string | null, to: string, params: Record<string, string>): void;
|
|
691
|
+
/**
|
|
692
|
+
* Проверяет актуальность текущего состояния (stub: всегда true).
|
|
693
|
+
*/
|
|
694
|
+
checkFreshness(): Promise<boolean>;
|
|
695
|
+
/**
|
|
696
|
+
* Инициализирует обработчики браузерных событий навигации (только на клиенте).
|
|
697
|
+
*/
|
|
698
|
+
initClientListeners(): void;
|
|
699
|
+
/**
|
|
700
|
+
* Регистрирует interceptor для перехвата навигации (leave guard).
|
|
701
|
+
* @param handler - Перехватчик навигации
|
|
702
|
+
* @returns Disposable для отмены регистрации
|
|
703
|
+
*/
|
|
704
|
+
intercept(handler: NavigationInterceptor): Disposable;
|
|
705
|
+
/**
|
|
706
|
+
* Запускает все зарегистрированные leave guards последовательно.
|
|
707
|
+
* При первом заблокированном — возвращает `{ allow: false, reason? }`.
|
|
708
|
+
* @param from - Маршрут отправления
|
|
709
|
+
* @param to - Маршрут назначения
|
|
710
|
+
* @returns Результат проверки
|
|
711
|
+
*/
|
|
712
|
+
runLeaveGuards(from: string | null, to: string): Promise<LeaveGuardResult>;
|
|
713
|
+
}
|
|
714
|
+
/**
|
|
715
|
+
* Сериализатор состояния для SSR.
|
|
716
|
+
* Протокол: plain objects.
|
|
717
|
+
*
|
|
718
|
+
* Не хранит состояние сам — работает поверх StateRegistry конкретного контейнера
|
|
719
|
+
* (page/request). Участники сериализации регистрируются в реестр контейнера через
|
|
720
|
+
* defineService({ serialize, deserialize }) при создании экземпляра сервиса, поэтому
|
|
721
|
+
* их время жизни ограничено контейнером и утечки в app-scope не происходит.
|
|
722
|
+
*/
|
|
723
|
+
interface StateSerializer {
|
|
724
|
+
/**
|
|
725
|
+
* Сериализует состояние участников из StateRegistry контейнера в plain object.
|
|
726
|
+
* Ключ записи — token.description сервиса.
|
|
727
|
+
* @param container - Контейнер, из реестра которого извлекаются данные
|
|
728
|
+
*/
|
|
729
|
+
serialize(container: Container): Record<string, unknown>;
|
|
730
|
+
/**
|
|
731
|
+
* Восстанавливает состояние участников из plain object в контейнер.
|
|
732
|
+
* Вызывает deserialize только у тех участников, чей ключ есть в state.
|
|
733
|
+
* @param container - Целевой контейнер
|
|
734
|
+
* @param state - Сериализованное состояние
|
|
735
|
+
*/
|
|
736
|
+
hydrate(container: Container, state: Record<string, unknown>): void;
|
|
737
|
+
/**
|
|
738
|
+
* Вызывает activate(params) на всех участниках реестра контейнера параллельно.
|
|
739
|
+
* Используется в Vike-хуках для активации страничных сервисов при входе на страницу.
|
|
740
|
+
* @param container - Контейнер, участники которого активируются
|
|
741
|
+
* @param params - Параметры маршрута (например, { id: '42' })
|
|
742
|
+
*/
|
|
743
|
+
activateAll(container: Container, params: Record<string, string>): Promise<void>;
|
|
744
|
+
}
|
|
745
|
+
/**
|
|
746
|
+
* Основной объект Core Runtime.
|
|
747
|
+
* Создаётся фабрикой createCore и предоставляет доступ ко всем менеджерам.
|
|
748
|
+
*/
|
|
749
|
+
interface Core {
|
|
750
|
+
/** App-контейнер (IoC) */
|
|
751
|
+
container: Container;
|
|
752
|
+
/** Менеджер контейнеров страниц */
|
|
753
|
+
containerManager: ContainerManager;
|
|
754
|
+
/** Запускатель guards */
|
|
755
|
+
guardRunner: GuardRunner;
|
|
756
|
+
/** Менеджер навигации */
|
|
757
|
+
navigationManager: NavigationManager;
|
|
758
|
+
/** Кэш стейтов страниц для state persistence при back-навигации */
|
|
759
|
+
stateCache: StateCache;
|
|
760
|
+
/** Сериализатор состояния */
|
|
761
|
+
stateSerializer: StateSerializer;
|
|
762
|
+
}
|
|
763
|
+
/**
|
|
764
|
+
* Токен для регистрации ContainerManager в IoC-контейнере.
|
|
765
|
+
*/
|
|
766
|
+
declare const ContainerManagerToken: Token<ContainerManager>;
|
|
767
|
+
/**
|
|
768
|
+
* Токен для регистрации GuardRunner в IoC-контейнере.
|
|
769
|
+
*/
|
|
770
|
+
declare const GuardRunnerToken: Token<GuardRunner>;
|
|
771
|
+
/**
|
|
772
|
+
* Токен для регистрации NavigationManager в IoC-контейнере.
|
|
773
|
+
*/
|
|
774
|
+
declare const NavigationManagerToken: Token<NavigationManager>;
|
|
775
|
+
/**
|
|
776
|
+
* Токен для регистрации StateSerializer в IoC-контейнере.
|
|
777
|
+
*/
|
|
778
|
+
declare const StateSerializerToken: Token<StateSerializer>;
|
|
779
|
+
/**
|
|
780
|
+
* Токен per-container реестра участников сериализации.
|
|
781
|
+
* Свежий StateRegistry биндится контейнер-менеджером в каждый page/request-контейнер
|
|
782
|
+
* и уничтожается вместе с ним.
|
|
783
|
+
*/
|
|
784
|
+
declare const StateRegistryToken: Token<StateRegistry>;
|
|
785
|
+
/**
|
|
786
|
+
* Токен per-container реестра слотов.
|
|
787
|
+
* `defineSlot(...).register(container)` кладёт слот сюда (get-or-create), оркестратор
|
|
788
|
+
* резолвит реестр и перечисляет зарегистрированные слоты.
|
|
789
|
+
*/
|
|
790
|
+
declare const SlotRegistryToken: Token<SlotRegistry>;
|
|
791
|
+
/**
|
|
792
|
+
* Токен для регистрации Activatable-объектов в контейнере.
|
|
793
|
+
*/
|
|
794
|
+
declare const ActivatableToken: Token<Activatable>;
|
|
795
|
+
/**
|
|
796
|
+
* Токен для доступа к RequestContext из IoC-контейнера.
|
|
797
|
+
* На сервере содержит headers/cookies текущего HTTP-запроса.
|
|
798
|
+
* На клиенте — пустые объекты.
|
|
799
|
+
*/
|
|
800
|
+
declare const RequestContextToken: Token<RequestContext>;
|
|
801
|
+
|
|
802
|
+
export { type ActionGuard as A, GuardRunnerToken as B, type Core as C, type Disposable as D, type ExtensionConfig as E, NavigationManagerToken as F, type GuardRunner as G, type HostConfig as H, type RepositoryDefinition as I, RequestContextToken as J, type ServiceDefinition as K, type LeaveGuardResult as L, type SlotEntry as M, type NavigationManager as N, SlotRegistry as O, SlotRegistryToken as P, StateCache as Q, type RequestContext as R, type StateSerializer as S, type StateParticipant as T, StateRegistry as U, StateRegistryToken as V, StateSerializerToken as W, type ViewModelDefinition as X, type ContainerManager as a, type Guard as b, type GuardResult as c, type NavigationEntry as d, type NavigationInterceptor as e, type DefineGuardOptions as f, type GuardDefinition as g, type DefineHostOptions as h, type HostDefinition as i, type DefineExtensionOptions as j, type ExtensionDefinition as k, type DefineActionGuardOptions as l, type ActionGuardDefinition as m, type LayoutConfig as n, type DefineLayoutOptions as o, type LayoutDefinition as p, type LayerConfig as q, type DefineLayerOptions as r, type LayerDefinition as s, type Activatable as t, ActivatableToken as u, ContainerManagerToken as v, type DefineRepositoryOptions as w, type DefineServiceOptions as x, type DefineViewModelOptions as y, type Definition as z };
|