@foxford/den 1.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/README.mdx +9 -0
- package/adapter.cjs +43 -0
- package/adapter.d.cts +73 -0
- package/adapter.d.ts +73 -0
- package/adapter.mjs +17 -0
- package/define-slot--HM6B232.d.ts +500 -0
- package/define-slot-es1K6_-L.d.cts +500 -0
- package/define.cjs +282 -0
- package/define.d.cts +26 -0
- package/define.d.ts +26 -0
- package/define.mjs +247 -0
- package/index.cjs +1027 -0
- package/index.d.cts +386 -0
- package/index.d.ts +386 -0
- package/index.mjs +975 -0
- package/package.json +67 -0
- package/types-B4Arep3V.d.cts +415 -0
- package/types-B4Arep3V.d.ts +415 -0
package/index.d.cts
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
import { C as Core, a as ContainerManager, R as RequestContext, G as GuardRunner, b as Guard, c as GuardResult, N as NavigationManager, d as NavigationEntry, e as NavigationInterceptor, D as Disposable, L as LeaveGuardResult, S as StateSerializer } from './types-B4Arep3V.cjs';
|
|
2
|
+
export { A as Activatable, f as ActivatableToken, g as ContainerManagerToken, h as GuardRunnerToken, i as NavigationManagerToken, j as RequestContextToken, k as SlotEntry, l as SlotRegistry, m as SlotRegistryToken, n as StateCache, o as StateParticipant, p as StateRegistry, q as StateRegistryToken, r as StateSerializerToken } from './types-B4Arep3V.cjs';
|
|
3
|
+
import { Container, Token } from '@foxford/ioc';
|
|
4
|
+
import { DefinitionResolver } from './adapter.cjs';
|
|
5
|
+
import { D as DefineGuardOptions, G as GuardDefinition, A as AppConfig, a as DefineAppOptions, b as AppDefinition, E as ExtensionConfig, c as DefineExtensionOptions, d as ExtensionDefinition, e as ActionGuard, f as DefineActionGuardOptions, g as ActionGuardDefinition, L as LayoutConfig, h as DefineLayoutOptions, i as LayoutDefinition, j as LayerConfig, k as DefineLayerOptions, l as LayerDefinition } from './define-slot-es1K6_-L.cjs';
|
|
6
|
+
export { m as DefineRepositoryOptions, n as DefineServiceOptions, o as DefineSlotOptions, p as DefineViewModelOptions, q as Definition, R as RepositoryDefinition, S as ServiceDefinition, r as SlotDefinition, V as ViewModelDefinition, s as defineRepository, t as defineService, u as defineSlot, v as defineViewModel } from './define-slot-es1K6_-L.cjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Опции для создания Core Runtime.
|
|
10
|
+
*/
|
|
11
|
+
interface CreateCoreOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Внешний app-контейнер (опционально).
|
|
14
|
+
* Если не передан, создаётся новый Container.
|
|
15
|
+
*/
|
|
16
|
+
container?: Container;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Создаёт экземпляр Core Runtime.
|
|
20
|
+
* Инициализирует app-контейнер, все менеджеры и регистрирует их в IoC.
|
|
21
|
+
* @param options - Опции создания
|
|
22
|
+
* @returns Объект Core со всеми менеджерами
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const core = createCore()
|
|
26
|
+
* core.navigationManager.recordNavigation(null, '/home', {})
|
|
27
|
+
* const pageContainer = core.containerManager.createPageContainer('/home')
|
|
28
|
+
*/
|
|
29
|
+
declare function createCore(options?: CreateCoreOptions): Core;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Реализация ContainerManager.
|
|
33
|
+
* Управляет иерархией контейнеров: одним app-контейнером, дочерними контейнерами страниц
|
|
34
|
+
* и per-request контейнерами для SSR.
|
|
35
|
+
*/
|
|
36
|
+
declare class ContainerManagerImpl implements ContainerManager {
|
|
37
|
+
/** App-контейнер (корневой синглтон) */
|
|
38
|
+
private readonly appContainer;
|
|
39
|
+
/** Map дочерних контейнеров страниц: routeId → Container */
|
|
40
|
+
private readonly pageContainers;
|
|
41
|
+
/** Map контейнеров запросов: requestId → Container */
|
|
42
|
+
private readonly requestContainers;
|
|
43
|
+
/** Map SSR page контейнеров: requestId → Container (child от request container) */
|
|
44
|
+
private readonly ssrPageContainers;
|
|
45
|
+
/**
|
|
46
|
+
* @param appContainer - Корневой app-контейнер
|
|
47
|
+
*/
|
|
48
|
+
constructor(appContainer: Container);
|
|
49
|
+
/**
|
|
50
|
+
* Возвращает app-контейнер (синглтон).
|
|
51
|
+
*/
|
|
52
|
+
getAppContainer(): Container;
|
|
53
|
+
/**
|
|
54
|
+
* Возвращает существующий дочерний контейнер страницы или undefined.
|
|
55
|
+
* @param routeId - Идентификатор маршрута
|
|
56
|
+
*/
|
|
57
|
+
getPageContainer(routeId: string): Container | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Создаёт дочерний контейнер для страницы.
|
|
60
|
+
* Если контейнер для данного routeId уже существует, возвращает существующий.
|
|
61
|
+
* @param routeId - Идентификатор маршрута
|
|
62
|
+
*/
|
|
63
|
+
createPageContainer(routeId: string): Container;
|
|
64
|
+
/**
|
|
65
|
+
* Уничтожает дочерний контейнер страницы и освобождает его ресурсы.
|
|
66
|
+
* Если контейнер не найден — no-op.
|
|
67
|
+
* @param routeId - Идентификатор маршрута
|
|
68
|
+
*/
|
|
69
|
+
destroyPageContainer(routeId: string): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Создаёт дочерний контейнер для HTTP-запроса с забинженным RequestContext.
|
|
72
|
+
* Если контейнер для данного requestId уже существует, возвращает существующий.
|
|
73
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
74
|
+
* @param context - Контекст запроса (заголовки и cookies)
|
|
75
|
+
*/
|
|
76
|
+
createRequestContainer(requestId: string, context: RequestContext): Container;
|
|
77
|
+
/**
|
|
78
|
+
* Возвращает существующий контейнер запроса или undefined.
|
|
79
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
80
|
+
*/
|
|
81
|
+
getRequestContainer(requestId: string): Container | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Уничтожает контейнер запроса и освобождает ресурсы.
|
|
84
|
+
* Если контейнер не найден — no-op.
|
|
85
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
86
|
+
*/
|
|
87
|
+
destroyRequestContainer(requestId: string): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Создаёт page container для SSR как дочерний от заданного родителя.
|
|
90
|
+
* Отслеживается менеджером — может быть уничтожен через destroySsrPageContainer.
|
|
91
|
+
* Если контейнер для данного requestId уже существует, возвращает существующий.
|
|
92
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
93
|
+
* @param parent - Родительский контейнер (обычно request container)
|
|
94
|
+
*/
|
|
95
|
+
createSsrPageContainer(requestId: string, parent: Container): Container;
|
|
96
|
+
/**
|
|
97
|
+
* Уничтожает SSR page container и освобождает ресурсы (Disposable VM, сервисы).
|
|
98
|
+
* Вызывается в onAfterRenderHtml после завершения SSR-рендера.
|
|
99
|
+
* Если контейнер не найден — no-op.
|
|
100
|
+
* @param requestId - Уникальный идентификатор запроса
|
|
101
|
+
*/
|
|
102
|
+
destroySsrPageContainer(requestId: string): Promise<void>;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Реализация GuardRunner.
|
|
107
|
+
* Параллельно выполняет guards из app-контейнера и возвращает их результаты.
|
|
108
|
+
*/
|
|
109
|
+
declare class GuardRunnerImpl implements GuardRunner {
|
|
110
|
+
/** App-контейнер для резолвинга guards */
|
|
111
|
+
private readonly container;
|
|
112
|
+
/**
|
|
113
|
+
* @param container - App-контейнер, из которого резолвятся guards
|
|
114
|
+
*/
|
|
115
|
+
constructor(container: Container);
|
|
116
|
+
/**
|
|
117
|
+
* Параллельно выполняет все guards и возвращает их результаты.
|
|
118
|
+
* Если передан container — guards резолвятся из него (например, request-scope container).
|
|
119
|
+
* Без container — guards резолвятся из app-контейнера.
|
|
120
|
+
* @param tokens - Токены guards
|
|
121
|
+
* @param params - Параметры маршрута
|
|
122
|
+
* @param container - Опциональный контейнер для резолвинга guards
|
|
123
|
+
*/
|
|
124
|
+
runGuards(tokens: Token<Guard>[], params: Record<string, string>, container?: Container): Promise<GuardResult[]>;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Реализация NavigationManager.
|
|
129
|
+
* Хранит историю переходов, оповещает подписчиков, управляет leave guards
|
|
130
|
+
* и инициализирует браузерные listeners.
|
|
131
|
+
*/
|
|
132
|
+
declare class NavigationManagerImpl implements NavigationManager {
|
|
133
|
+
/** Стек истории навигации */
|
|
134
|
+
private readonly _history;
|
|
135
|
+
/** Текущая запись навигации */
|
|
136
|
+
current: NavigationEntry | null;
|
|
137
|
+
/** Список обработчиков навигации */
|
|
138
|
+
private readonly handlers;
|
|
139
|
+
/** Список зарегистрированных interceptors (leave guards) */
|
|
140
|
+
private readonly interceptors;
|
|
141
|
+
/** Функция очистки popstate listener (только на клиенте) */
|
|
142
|
+
private removePopstateListener;
|
|
143
|
+
/** Функция очистки beforeunload listener (только на клиенте) */
|
|
144
|
+
private removeBeforeunloadListener;
|
|
145
|
+
/** Функция очистки click listener (только на клиенте) */
|
|
146
|
+
private removeClickListener;
|
|
147
|
+
/**
|
|
148
|
+
* История переходов (только для чтения снаружи).
|
|
149
|
+
*/
|
|
150
|
+
get history(): NavigationEntry[];
|
|
151
|
+
/**
|
|
152
|
+
* Подписывается на событие навигации.
|
|
153
|
+
* @param handler - Обработчик события
|
|
154
|
+
* @returns Функция отписки
|
|
155
|
+
*/
|
|
156
|
+
onNavigate(handler: (entry: NavigationEntry) => void): () => void;
|
|
157
|
+
/**
|
|
158
|
+
* Записывает переход в историю и оповещает подписчиков.
|
|
159
|
+
* @param from - Маршрут отправления (null — начало сессии)
|
|
160
|
+
* @param to - Маршрут назначения
|
|
161
|
+
* @param params - Параметры маршрута
|
|
162
|
+
*/
|
|
163
|
+
recordNavigation(from: string | null, to: string, params: Record<string, string>): void;
|
|
164
|
+
/**
|
|
165
|
+
* Проверяет актуальность текущего состояния.
|
|
166
|
+
* Состояние считается актуальным если история и текущий элемент согласованы.
|
|
167
|
+
*/
|
|
168
|
+
checkFreshness(): Promise<boolean>;
|
|
169
|
+
/**
|
|
170
|
+
* Регистрирует interceptor для перехвата навигации (leave guard).
|
|
171
|
+
* @param handler - Перехватчик навигации
|
|
172
|
+
* @returns Disposable для отмены регистрации
|
|
173
|
+
*/
|
|
174
|
+
intercept(handler: NavigationInterceptor): Disposable;
|
|
175
|
+
/**
|
|
176
|
+
* Запускает все зарегистрированные leave guards последовательно.
|
|
177
|
+
* При первом заблокированном возвращает `{ allow: false, reason? }`.
|
|
178
|
+
* @param from - Маршрут отправления
|
|
179
|
+
* @param to - Маршрут назначения
|
|
180
|
+
* @returns Результат проверки
|
|
181
|
+
*/
|
|
182
|
+
runLeaveGuards(from: string | null, to: string): Promise<LeaveGuardResult>;
|
|
183
|
+
/**
|
|
184
|
+
* Инициализирует обработчики браузерных событий навигации.
|
|
185
|
+
* Обрабатывает: popstate (с rollback при blocked), beforeunload,
|
|
186
|
+
* делегирование кликов по <a>-элементам.
|
|
187
|
+
* SSR-safe: все browser API за проверкой typeof window.
|
|
188
|
+
* Вызывать только на клиенте.
|
|
189
|
+
*/
|
|
190
|
+
initClientListeners(): void;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Реализация StateSerializer.
|
|
195
|
+
* Не хранит состояние — читает участников из StateRegistry конкретного контейнера.
|
|
196
|
+
* Протокол: plain objects.
|
|
197
|
+
*/
|
|
198
|
+
declare class StateSerializerImpl implements StateSerializer {
|
|
199
|
+
/**
|
|
200
|
+
* Достаёт StateRegistry из контейнера, если он там забинжен.
|
|
201
|
+
* Реестр биндится как toValue (Singleton), поэтому resolve синхронен; на всякий
|
|
202
|
+
* случай отсекаем Promise-ветку, чтобы контракт serialize/hydrate оставался синхронным.
|
|
203
|
+
*
|
|
204
|
+
* Не использует this: сериализатор stateless (состояние живёт в контейнере), но
|
|
205
|
+
* остаётся классом ради биндинга по StateSerializerToken в IoC.
|
|
206
|
+
* @param container - Контейнер, из которого берётся реестр
|
|
207
|
+
*/
|
|
208
|
+
private getRegistry;
|
|
209
|
+
/**
|
|
210
|
+
* Сериализует состояние участников контейнера в plain object.
|
|
211
|
+
* Включает только тех, кто объявил serialize (участник имеет toJSON).
|
|
212
|
+
* @param container - Контейнер, из реестра которого извлекаются данные
|
|
213
|
+
*/
|
|
214
|
+
serialize(container: Container): Record<string, unknown>;
|
|
215
|
+
/**
|
|
216
|
+
* Восстанавливает состояние участников контейнера из plain object.
|
|
217
|
+
* Вызывает fromJSON только у тех, чей ключ присутствует в state и кто объявил deserialize.
|
|
218
|
+
* @param container - Целевой контейнер
|
|
219
|
+
* @param state - Сериализованное состояние
|
|
220
|
+
*/
|
|
221
|
+
hydrate(container: Container, state: Record<string, unknown>): void;
|
|
222
|
+
/**
|
|
223
|
+
* Вызывает activate(params) на всех участниках реестра контейнера параллельно.
|
|
224
|
+
* @param container - Контейнер, участники которого активируются
|
|
225
|
+
* @param params - Параметры маршрута
|
|
226
|
+
*/
|
|
227
|
+
activateAll(container: Container, params: Record<string, string>): Promise<void>;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Дефолтная стратегия резолва `define*` — async/global (режим Vike).
|
|
232
|
+
*
|
|
233
|
+
* Это «дефолтный резолвер-адаптер»: `den` ставит его сайд-эффектом при загрузке
|
|
234
|
+
* (см. `index.ts`), поэтому Vike-консьюмеры получают рабочий `.use()` без явной
|
|
235
|
+
* инициализации. Next-адаптер переопределяет стратегию через `installResolver()`.
|
|
236
|
+
*
|
|
237
|
+
* Резолвит из глобального IoC-контейнера с подъёмом по parent-chain
|
|
238
|
+
* (page-container → app-container). Если токен не найден нигде (page-scope VM
|
|
239
|
+
* при навигации до создания нового контейнера) — возвращает pending `Promise`,
|
|
240
|
+
* и view рендерит `null`, пока контейнер не появится.
|
|
241
|
+
*/
|
|
242
|
+
declare const defaultGlobalResolver: DefinitionResolver;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Определяет Guard с IoC-биндингом.
|
|
246
|
+
* Поддерживает два режима:
|
|
247
|
+
* - С create + requires: создаёт Guard-класс с инъецированными зависимостями (IoC-паттерн).
|
|
248
|
+
* - Только check: регистрирует инлайн Guard как value (без зависимостей).
|
|
249
|
+
*
|
|
250
|
+
* @template Deps - Кортеж токенов зависимостей (по умолчанию пустой)
|
|
251
|
+
* @param token - Токен для регистрации Guard в IoC
|
|
252
|
+
* @param options - Опции: requires, create, check
|
|
253
|
+
* @returns GuardDefinition с методом register(container)
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* // С инъекцией зависимостей через класс
|
|
257
|
+
* const authGuard = defineGuard(AuthGuardToken, {
|
|
258
|
+
* requires: [AuthServiceToken] as const,
|
|
259
|
+
* create: ([authService]) => new AuthGuard(authService),
|
|
260
|
+
* })
|
|
261
|
+
* authGuard.register(appContainer)
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* // Инлайн-реализация без зависимостей
|
|
265
|
+
* const devGuard = defineGuard(DevGuardToken, {
|
|
266
|
+
* check: (_params) => ({ allowed: process.env.NODE_ENV !== 'production' }),
|
|
267
|
+
* })
|
|
268
|
+
* devGuard.register(appContainer)
|
|
269
|
+
*/
|
|
270
|
+
declare function defineGuard<Deps extends readonly Token<unknown>[] = readonly []>(token: Token<Guard>, options: DefineGuardOptions<Deps>): GuardDefinition;
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Определяет конфигурацию приложения с декларативным списком сервисов и guards.
|
|
274
|
+
* Заменяет ручной вызов setupContainer() — декларирует, какие сервисы запускаются
|
|
275
|
+
* при старте (eager), какие — лениво (lazy), и какие guards применяются глобально.
|
|
276
|
+
* Регистрирует AppConfig-значение в IoC-контейнере.
|
|
277
|
+
*
|
|
278
|
+
* @param token - Токен для регистрации AppConfig в IoC
|
|
279
|
+
* @param options - Опции: eager, lazy, guards
|
|
280
|
+
* @returns AppDefinition с методом register(container)
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* // app/app.ts
|
|
284
|
+
* export const app = defineApp(AppToken, {
|
|
285
|
+
* eager: [AuthServiceToken, NotificationServiceToken],
|
|
286
|
+
* lazy: [CartServiceToken],
|
|
287
|
+
* guards: [GlobalAuthGuardToken],
|
|
288
|
+
* })
|
|
289
|
+
* app.register(appContainer)
|
|
290
|
+
*/
|
|
291
|
+
declare function defineApp(token: Token<AppConfig>, options?: DefineAppOptions): AppDefinition;
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Определяет app-scope расширение с lifecycle-хуками activate/deactivate.
|
|
295
|
+
* Extension — модуль с собственным lifecycle, живущий в скоупе приложения
|
|
296
|
+
* (модалки, онбординг, системы очередей, cookie consent и т.д.).
|
|
297
|
+
* Регистрирует Activatable-обёртку в IoC-контейнере.
|
|
298
|
+
*
|
|
299
|
+
* @template Deps - Кортеж токенов зависимостей (по умолчанию пустой кортеж)
|
|
300
|
+
* @param token - Токен для регистрации ExtensionConfig в IoC
|
|
301
|
+
* @param options - Опции: requires, activate, deactivate
|
|
302
|
+
* @returns ExtensionDefinition с методом register(container)
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* // extensions/onboarding/extension.ts
|
|
306
|
+
* export const onboardingExtension = defineExtension(OnboardingExtensionToken, {
|
|
307
|
+
* requires: [OnboardingServiceToken] as const,
|
|
308
|
+
* activate: ([service]) => service.checkAndStart(),
|
|
309
|
+
* deactivate: ([service]) => service.reset(),
|
|
310
|
+
* })
|
|
311
|
+
* onboardingExtension.register(appContainer)
|
|
312
|
+
*/
|
|
313
|
+
declare function defineExtension<Deps extends readonly Token<unknown>[] = readonly []>(token: Token<ExtensionConfig>, options?: DefineExtensionOptions<Deps>): ExtensionDefinition<Deps>;
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Определяет перехватчик вызова метода Service с IoC-биндингом.
|
|
317
|
+
* Используется для вставки проверки перед выполнением операции:
|
|
318
|
+
* 2FA, подтверждение действия, rate-limiting и т.д.
|
|
319
|
+
* Резолвит зависимости через IoC и регистрирует ActionGuard как Singleton.
|
|
320
|
+
*
|
|
321
|
+
* @template Deps - Кортеж токенов зависимостей (по умолчанию пустой кортеж)
|
|
322
|
+
* @param token - Токен для регистрации ActionGuard в IoC
|
|
323
|
+
* @param options - Опции: requires, intercept
|
|
324
|
+
* @returns ActionGuardDefinition с методом register(container)
|
|
325
|
+
*
|
|
326
|
+
* @example
|
|
327
|
+
* // domains/auth/2fa.action-guard.ts
|
|
328
|
+
* export const twoFaGuard = defineActionGuard(TwoFaGuardToken, {
|
|
329
|
+
* requires: [TwoFaServiceToken] as const,
|
|
330
|
+
* intercept: async ([twoFaService], next) => {
|
|
331
|
+
* await twoFaService.verify()
|
|
332
|
+
* return next()
|
|
333
|
+
* },
|
|
334
|
+
* })
|
|
335
|
+
* twoFaGuard.register(appContainer)
|
|
336
|
+
*
|
|
337
|
+
* // Использование в сервисе:
|
|
338
|
+
* const paymentService = defineService(PaymentToken, {
|
|
339
|
+
* requires: [TwoFaGuardToken] as const,
|
|
340
|
+
* create: ([twoFaGuard]) => ({
|
|
341
|
+
* processPayment: () => twoFaGuard.intercept(() => doPayment()),
|
|
342
|
+
* }),
|
|
343
|
+
* })
|
|
344
|
+
*/
|
|
345
|
+
declare function defineActionGuard<Deps extends readonly Token<unknown>[] = readonly []>(token: Token<ActionGuard>, options: DefineActionGuardOptions<Deps>): ActionGuardDefinition<Deps>;
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Определяет layout с декларативной привязкой ViewModel и slots.
|
|
349
|
+
* Регистрирует LayoutConfig-значение в IoC-контейнере.
|
|
350
|
+
* Layout является персистентной оболочкой приложения (header, sidebar, footer),
|
|
351
|
+
* которая не пересоздаётся при навигации между страницами.
|
|
352
|
+
*
|
|
353
|
+
* @param token - Токен для регистрации LayoutConfig в IoC
|
|
354
|
+
* @param options - Опции: viewModels, slots
|
|
355
|
+
* @returns LayoutDefinition с методом register(container)
|
|
356
|
+
*
|
|
357
|
+
* @example
|
|
358
|
+
* // layouts/default/layout.ts
|
|
359
|
+
* export const defaultLayout = defineLayout(DefaultLayoutToken, {
|
|
360
|
+
* viewModels: [HeaderVmToken, FooterVmToken],
|
|
361
|
+
* slots: { sidebar: SidebarToken },
|
|
362
|
+
* })
|
|
363
|
+
* defaultLayout.register(appContainer)
|
|
364
|
+
*/
|
|
365
|
+
declare function defineLayout(token: Token<LayoutConfig>, options?: DefineLayoutOptions): LayoutDefinition;
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Определяет конфигурационный слой view-фреймворка.
|
|
369
|
+
* Позволяет сменить view-адаптер (React, Vue, Qwik) без изменения бизнес-логики.
|
|
370
|
+
* Регистрирует LayerConfig-значение в IoC-контейнере.
|
|
371
|
+
*
|
|
372
|
+
* @param token - Токен для регистрации LayerConfig в IoC
|
|
373
|
+
* @param options - Опции: name (имя слоя), adapter (адаптер фреймворка)
|
|
374
|
+
* @returns LayerDefinition с методом register(container)
|
|
375
|
+
*
|
|
376
|
+
* @example
|
|
377
|
+
* // app/layers/view.layer.ts
|
|
378
|
+
* export const viewLayer = defineLayer(ViewLayerToken, {
|
|
379
|
+
* name: 'view',
|
|
380
|
+
* adapter: reactAdapter(),
|
|
381
|
+
* })
|
|
382
|
+
* viewLayer.register(appContainer)
|
|
383
|
+
*/
|
|
384
|
+
declare function defineLayer(token: Token<LayerConfig>, options: DefineLayerOptions): LayerDefinition;
|
|
385
|
+
|
|
386
|
+
export { ActionGuard, ActionGuardDefinition, AppConfig, AppDefinition, ContainerManager, ContainerManagerImpl, Core, type CreateCoreOptions, DefineActionGuardOptions, DefineAppOptions, DefineExtensionOptions, DefineGuardOptions, DefineLayerOptions, DefineLayoutOptions, Disposable, ExtensionConfig, ExtensionDefinition, Guard, GuardDefinition, GuardResult, GuardRunner, GuardRunnerImpl, LayerConfig, LayerDefinition, LayoutConfig, LayoutDefinition, LeaveGuardResult, NavigationEntry, NavigationInterceptor, NavigationManager, NavigationManagerImpl, RequestContext, StateSerializer, StateSerializerImpl, createCore, defaultGlobalResolver, defineActionGuard, defineApp, defineExtension, defineGuard, defineLayer, defineLayout };
|