@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.
@@ -0,0 +1,74 @@
1
+ import { z as Definition, s as LayerDefinition } from './types-Deyolj1-.js';
2
+ import { Container } from '@foxford/ioc';
3
+
4
+ /**
5
+ * Дескриптор слота — host-агностичен: непрозрачный `view` + опциональные `units`.
6
+ *
7
+ * `view` типизирован как `unknown` — ядро не знает про React/Vue: рендерит его view-адаптер.
8
+ *
9
+ * Имени у слота НЕТ: его выдаёт тот, кто слот к себе взял, ключом в карте `slots` своего
10
+ * дескриптора. Так адрес места принадлежит хозяину места, а не пакету, который написал для
11
+ * него view, и занять чужое пространство имён нечем — префикс не в руках объявляющего.
12
+ */
13
+ interface SlotDefinition {
14
+ /** Дискриминатор типа. */
15
+ readonly __type: 'slot';
16
+ /** Непрозрачная ссылка на view слота (компонент view-фреймворка). */
17
+ readonly view?: unknown;
18
+ /** Data/Business единицы слота (изолированная секция). */
19
+ readonly units: readonly Definition<unknown>[];
20
+ /** View-слой слота, если он переопределён (см. {@link DefineSlotOptions.viewLayer}). */
21
+ readonly viewLayer?: LayerDefinition;
22
+ /**
23
+ * Регистрирует единицы слота и кладёт сам слот в `SlotRegistry` контейнера.
24
+ * @param container - Контейнер (острова/страницы/запроса)
25
+ * @param name - Имя слота в этом контейнере — ключ из карты `slots` дескриптора
26
+ */
27
+ register(container: Container, name: string): void;
28
+ }
29
+ /** Опции `defineSlot`. */
30
+ interface DefineSlotOptions {
31
+ /**
32
+ * Непрозрачная ссылка на view слота. Необязательна: чистое место под чужой контент
33
+ * своего содержимого не имеет.
34
+ */
35
+ view?: unknown;
36
+ /** Data/Business единицы слота (по умолчанию пусто). */
37
+ units?: readonly Definition<unknown>[];
38
+ /**
39
+ * Переопределение view-слоя ДЛЯ ЭТОГО слота: `defineLayer(ViewLayerToken, { adapter })`.
40
+ *
41
+ * По умолчанию слот рисуется адаптером острова, в который попал, — так слот из чужого
42
+ * пакета встаёт в любое приложение. Указывать стоит там, где слот написан на другом
43
+ * фреймворке, чем принимающий остров.
44
+ */
45
+ viewLayer?: LayerDefinition;
46
+ }
47
+ /**
48
+ * Объявляет слот — самостоятельную `define*`-единицу расширения.
49
+ *
50
+ * `register(container, name)` регистрирует `units` и добавляет `{ name, view }` в
51
+ * `SlotRegistry` контейнера (get-or-create). Реестр живёт в контейнере ОСТРОВА, поэтому
52
+ * имена в нём локальные и с соседними приложениями не пересекаются; глобальный адрес для
53
+ * `mountsInto` собирается из имени приложения (см. `slotAddress` в `@foxford/den/island`).
54
+ *
55
+ * Рендерит слот view-адаптер — по умолчанию тот же, что у принимающего острова; свой
56
+ * адаптер слот получает через `viewLayer`.
57
+ *
58
+ * @param options - Непрозрачный `view`, опциональные `units` и `viewLayer`
59
+ * @returns Дескриптор `SlotDefinition`
60
+ *
61
+ * @example
62
+ * // приложение объявляет место у себя — имя даёт ключ в карте `slots`
63
+ * export default defineApp({
64
+ * name: 'market-app',
65
+ * slots: { aside: defineSlot({ view: AsideView }) },
66
+ * })
67
+ *
68
+ * @example
69
+ * // любой пакет — экспортит слот-юнит, не зная, куда он смонтируется и как будет назван
70
+ * export const chatSlot = defineSlot({ view: ChatView, units: [chatRepository] })
71
+ */
72
+ declare function defineSlot({ view, units, viewLayer }?: DefineSlotOptions): SlotDefinition;
73
+
74
+ export { type DefineSlotOptions as D, type SlotDefinition as S, defineSlot as d };
@@ -0,0 +1,74 @@
1
+ import { z as Definition, s as LayerDefinition } from './types-Deyolj1-.cjs';
2
+ import { Container } from '@foxford/ioc';
3
+
4
+ /**
5
+ * Дескриптор слота — host-агностичен: непрозрачный `view` + опциональные `units`.
6
+ *
7
+ * `view` типизирован как `unknown` — ядро не знает про React/Vue: рендерит его view-адаптер.
8
+ *
9
+ * Имени у слота НЕТ: его выдаёт тот, кто слот к себе взял, ключом в карте `slots` своего
10
+ * дескриптора. Так адрес места принадлежит хозяину места, а не пакету, который написал для
11
+ * него view, и занять чужое пространство имён нечем — префикс не в руках объявляющего.
12
+ */
13
+ interface SlotDefinition {
14
+ /** Дискриминатор типа. */
15
+ readonly __type: 'slot';
16
+ /** Непрозрачная ссылка на view слота (компонент view-фреймворка). */
17
+ readonly view?: unknown;
18
+ /** Data/Business единицы слота (изолированная секция). */
19
+ readonly units: readonly Definition<unknown>[];
20
+ /** View-слой слота, если он переопределён (см. {@link DefineSlotOptions.viewLayer}). */
21
+ readonly viewLayer?: LayerDefinition;
22
+ /**
23
+ * Регистрирует единицы слота и кладёт сам слот в `SlotRegistry` контейнера.
24
+ * @param container - Контейнер (острова/страницы/запроса)
25
+ * @param name - Имя слота в этом контейнере — ключ из карты `slots` дескриптора
26
+ */
27
+ register(container: Container, name: string): void;
28
+ }
29
+ /** Опции `defineSlot`. */
30
+ interface DefineSlotOptions {
31
+ /**
32
+ * Непрозрачная ссылка на view слота. Необязательна: чистое место под чужой контент
33
+ * своего содержимого не имеет.
34
+ */
35
+ view?: unknown;
36
+ /** Data/Business единицы слота (по умолчанию пусто). */
37
+ units?: readonly Definition<unknown>[];
38
+ /**
39
+ * Переопределение view-слоя ДЛЯ ЭТОГО слота: `defineLayer(ViewLayerToken, { adapter })`.
40
+ *
41
+ * По умолчанию слот рисуется адаптером острова, в который попал, — так слот из чужого
42
+ * пакета встаёт в любое приложение. Указывать стоит там, где слот написан на другом
43
+ * фреймворке, чем принимающий остров.
44
+ */
45
+ viewLayer?: LayerDefinition;
46
+ }
47
+ /**
48
+ * Объявляет слот — самостоятельную `define*`-единицу расширения.
49
+ *
50
+ * `register(container, name)` регистрирует `units` и добавляет `{ name, view }` в
51
+ * `SlotRegistry` контейнера (get-or-create). Реестр живёт в контейнере ОСТРОВА, поэтому
52
+ * имена в нём локальные и с соседними приложениями не пересекаются; глобальный адрес для
53
+ * `mountsInto` собирается из имени приложения (см. `slotAddress` в `@foxford/den/island`).
54
+ *
55
+ * Рендерит слот view-адаптер — по умолчанию тот же, что у принимающего острова; свой
56
+ * адаптер слот получает через `viewLayer`.
57
+ *
58
+ * @param options - Непрозрачный `view`, опциональные `units` и `viewLayer`
59
+ * @returns Дескриптор `SlotDefinition`
60
+ *
61
+ * @example
62
+ * // приложение объявляет место у себя — имя даёт ключ в карте `slots`
63
+ * export default defineApp({
64
+ * name: 'market-app',
65
+ * slots: { aside: defineSlot({ view: AsideView }) },
66
+ * })
67
+ *
68
+ * @example
69
+ * // любой пакет — экспортит слот-юнит, не зная, куда он смонтируется и как будет назван
70
+ * export const chatSlot = defineSlot({ view: ChatView, units: [chatRepository] })
71
+ */
72
+ declare function defineSlot({ view, units, viewLayer }?: DefineSlotOptions): SlotDefinition;
73
+
74
+ export { type DefineSlotOptions as D, type SlotDefinition as S, defineSlot as d };
package/define.cjs CHANGED
@@ -5,12 +5,14 @@
5
5
 
6
6
 
7
7
 
8
+ var _chunk5DJZZML5cjs = require('./chunk-5DJZZML5.cjs');
9
+ require('./chunk-C7BM4DGX.cjs');
8
10
 
9
11
 
10
12
 
11
- var _chunk4FPCRHSMcjs = require('./chunk-4FPCRHSM.cjs');
12
- require('./chunk-NRE6DV6O.cjs');
13
13
 
14
+ var _chunkA6ZPAM6Zcjs = require('./chunk-A6ZPAM6Z.cjs');
15
+ require('./chunk-XHYR3SGG.cjs');
14
16
 
15
17
 
16
18
 
@@ -20,4 +22,5 @@ require('./chunk-NRE6DV6O.cjs');
20
22
 
21
23
 
22
24
 
23
- exports.LoggerToken = _chunk4FPCRHSMcjs.LoggerToken; exports.SlotRegistry = _chunk4FPCRHSMcjs.SlotRegistry; exports.SlotRegistryToken = _chunk4FPCRHSMcjs.SlotRegistryToken; exports.defineRepository = _chunk4FPCRHSMcjs.defineRepository; exports.defineService = _chunk4FPCRHSMcjs.defineService; exports.defineSlot = _chunk4FPCRHSMcjs.defineSlot; exports.defineViewModel = _chunk4FPCRHSMcjs.defineViewModel; exports.logger = _chunk4FPCRHSMcjs.logger; exports.scopeLogger = _chunk4FPCRHSMcjs.scopeLogger;
25
+
26
+ exports.LoggerToken = _chunkA6ZPAM6Zcjs.LoggerToken; exports.SlotRegistry = _chunk5DJZZML5cjs.SlotRegistry; exports.SlotRegistryToken = _chunk5DJZZML5cjs.SlotRegistryToken; exports.defineRepository = _chunk5DJZZML5cjs.defineRepository; exports.defineService = _chunk5DJZZML5cjs.defineService; exports.defineSlot = _chunk5DJZZML5cjs.defineSlot; exports.defineViewModel = _chunk5DJZZML5cjs.defineViewModel; exports.logger = _chunkA6ZPAM6Zcjs.logger; exports.scopeLogger = _chunkA6ZPAM6Zcjs.scopeLogger;
package/define.d.cts CHANGED
@@ -1,5 +1,6 @@
1
- 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';
2
- export { k as SlotEntry, l as SlotRegistry, m as SlotRegistryToken } from './types-B4Arep3V.cjs';
1
+ export { d as defineRepository, a as defineService, b as defineViewModel } from './define-repository-OpMj-Q9O.cjs';
2
+ export { D as DefineSlotOptions, S as SlotDefinition, d as defineSlot } from './define-slot-RfgqKa6n.cjs';
3
+ export { w as DefineRepositoryOptions, x as DefineServiceOptions, y as DefineViewModelOptions, z as Definition, I as RepositoryDefinition, K as ServiceDefinition, M as SlotEntry, O as SlotRegistry, P as SlotRegistryToken, X as ViewModelDefinition } from './types-Deyolj1-.cjs';
3
4
  import { Token, Container } from '@foxford/ioc';
4
5
  import { HierarchicalLogger } from '@foxford/logger';
5
6
 
package/define.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- 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--HM6B232.js';
2
- export { k as SlotEntry, l as SlotRegistry, m as SlotRegistryToken } from './types-B4Arep3V.js';
1
+ export { d as defineRepository, a as defineService, b as defineViewModel } from './define-repository-DZg34Tb3.js';
2
+ export { D as DefineSlotOptions, S as SlotDefinition, d as defineSlot } from './define-slot-ESU7FR9O.js';
3
+ export { w as DefineRepositoryOptions, x as DefineServiceOptions, y as DefineViewModelOptions, z as Definition, I as RepositoryDefinition, K as ServiceDefinition, M as SlotEntry, O as SlotRegistry, P as SlotRegistryToken, X as ViewModelDefinition } from './types-Deyolj1-.js';
3
4
  import { Token, Container } from '@foxford/ioc';
4
5
  import { HierarchicalLogger } from '@foxford/logger';
5
6
 
package/define.js CHANGED
@@ -1,15 +1,18 @@
1
1
  import {
2
- LoggerToken,
3
2
  SlotRegistry,
4
3
  SlotRegistryToken,
5
4
  defineRepository,
6
5
  defineService,
7
6
  defineSlot,
8
- defineViewModel,
7
+ defineViewModel
8
+ } from "./chunk-WRQC6BVJ.js";
9
+ import "./chunk-WBHHHICS.js";
10
+ import {
11
+ LoggerToken,
9
12
  logger,
10
13
  scopeLogger
11
- } from "./chunk-S5KTWI6P.js";
12
- import "./chunk-E7HG2NXO.js";
14
+ } from "./chunk-TPBI6TOU.js";
15
+ import "./chunk-HJO26HIQ.js";
13
16
  export {
14
17
  LoggerToken,
15
18
  SlotRegistry,
package/index.cjs CHANGED
@@ -12,10 +12,15 @@
12
12
 
13
13
 
14
14
 
15
- var _chunk4FPCRHSMcjs = require('./chunk-4FPCRHSM.cjs');
15
+ var _chunk5DJZZML5cjs = require('./chunk-5DJZZML5.cjs');
16
+ require('./chunk-C7BM4DGX.cjs');
16
17
 
17
18
 
18
- var _chunkNRE6DV6Ocjs = require('./chunk-NRE6DV6O.cjs');
19
+ var _chunkLJE7K7VDcjs = require('./chunk-LJE7K7VD.cjs');
20
+ require('./chunk-A6ZPAM6Z.cjs');
21
+
22
+
23
+ var _chunkXHYR3SGGcjs = require('./chunk-XHYR3SGG.cjs');
19
24
 
20
25
  // src/core/state-registry.ts
21
26
  var StateRegistry = class {
@@ -78,7 +83,7 @@ var ContainerManagerImpl = class {
78
83
  return existing;
79
84
  }
80
85
  const child = this.appContainer.createChild();
81
- child.bind(_chunk4FPCRHSMcjs.StateRegistryToken).toValue(new StateRegistry());
86
+ child.bind(_chunk5DJZZML5cjs.StateRegistryToken).toValue(new StateRegistry());
82
87
  this.pageContainers.set(routeId, child);
83
88
  return child;
84
89
  }
@@ -88,7 +93,7 @@ var ContainerManagerImpl = class {
88
93
  * @param routeId - Идентификатор маршрута
89
94
  */
90
95
  destroyPageContainer(routeId) {
91
- return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
96
+ return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
92
97
  const container = this.pageContainers.get(routeId);
93
98
  if (container === void 0) {
94
99
  return;
@@ -109,8 +114,8 @@ var ContainerManagerImpl = class {
109
114
  return existing;
110
115
  }
111
116
  const child = this.appContainer.createChild();
112
- child.bind(_chunk4FPCRHSMcjs.RequestContextToken).toValue(context);
113
- child.bind(_chunk4FPCRHSMcjs.StateRegistryToken).toValue(new StateRegistry());
117
+ child.bind(_chunk5DJZZML5cjs.RequestContextToken).toValue(context);
118
+ child.bind(_chunk5DJZZML5cjs.StateRegistryToken).toValue(new StateRegistry());
114
119
  this.requestContainers.set(requestId, child);
115
120
  return child;
116
121
  }
@@ -127,7 +132,7 @@ var ContainerManagerImpl = class {
127
132
  * @param requestId - Уникальный идентификатор запроса
128
133
  */
129
134
  destroyRequestContainer(requestId) {
130
- return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
135
+ return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
131
136
  const container = this.requestContainers.get(requestId);
132
137
  if (container === void 0) {
133
138
  return;
@@ -149,7 +154,7 @@ var ContainerManagerImpl = class {
149
154
  return existing;
150
155
  }
151
156
  const child = parent.createChild();
152
- child.bind(_chunk4FPCRHSMcjs.StateRegistryToken).toValue(new StateRegistry());
157
+ child.bind(_chunk5DJZZML5cjs.StateRegistryToken).toValue(new StateRegistry());
153
158
  this.ssrPageContainers.set(requestId, child);
154
159
  return child;
155
160
  }
@@ -160,7 +165,7 @@ var ContainerManagerImpl = class {
160
165
  * @param requestId - Уникальный идентификатор запроса
161
166
  */
162
167
  destroySsrPageContainer(requestId) {
163
- return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
168
+ return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
164
169
  const container = this.ssrPageContainers.get(requestId);
165
170
  if (container === void 0) {
166
171
  return;
@@ -188,10 +193,10 @@ var GuardRunnerImpl = class {
188
193
  * @param container - Опциональный контейнер для резолвинга guards
189
194
  */
190
195
  runGuards(tokens, params, container) {
191
- return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
196
+ return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
192
197
  const resolveFrom = container != null ? container : this.container;
193
198
  const results = yield Promise.all(
194
- tokens.map((token) => _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
199
+ tokens.map((token) => _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
195
200
  const guard = yield resolveFrom.resolve(token);
196
201
  return guard.check(params);
197
202
  }))
@@ -280,7 +285,7 @@ var NavigationManagerImpl = class {
280
285
  * Состояние считается актуальным если история и текущий элемент согласованы.
281
286
  */
282
287
  checkFreshness() {
283
- return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
288
+ return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
284
289
  var _a;
285
290
  const lastEntry = (_a = this._history.at(-1)) != null ? _a : null;
286
291
  return lastEntry === this.current;
@@ -310,7 +315,7 @@ var NavigationManagerImpl = class {
310
315
  * @returns Результат проверки
311
316
  */
312
317
  runLeaveGuards(from, to) {
313
- return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
318
+ return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
314
319
  for (const interceptor of this.interceptors) {
315
320
  const result = yield interceptor.beforeNavigate(from, to);
316
321
  if (!result.allow) {
@@ -409,10 +414,10 @@ var StateSerializerImpl = class {
409
414
  */
410
415
  // eslint-disable-next-line @typescript-eslint/class-methods-use-this
411
416
  getRegistry(container) {
412
- if (!container.has(_chunk4FPCRHSMcjs.StateRegistryToken)) {
417
+ if (!container.has(_chunk5DJZZML5cjs.StateRegistryToken)) {
413
418
  return void 0;
414
419
  }
415
- const resolved = container.resolve(_chunk4FPCRHSMcjs.StateRegistryToken);
420
+ const resolved = container.resolve(_chunk5DJZZML5cjs.StateRegistryToken);
416
421
  return resolved instanceof Promise ? void 0 : resolved;
417
422
  }
418
423
  /**
@@ -456,7 +461,7 @@ var StateSerializerImpl = class {
456
461
  * @param params - Параметры маршрута
457
462
  */
458
463
  activateAll(container, params) {
459
- return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
464
+ return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
460
465
  const registry = this.getRegistry(container);
461
466
  if (registry === void 0) {
462
467
  return;
@@ -526,10 +531,10 @@ function createCore(options = {}) {
526
531
  const navigationManager = new NavigationManagerImpl();
527
532
  const stateSerializer = new StateSerializerImpl();
528
533
  const stateCache = new StateCache();
529
- container.bind(_chunk4FPCRHSMcjs.ContainerManagerToken).toValue(containerManager);
530
- container.bind(_chunk4FPCRHSMcjs.GuardRunnerToken).toValue(guardRunner);
531
- container.bind(_chunk4FPCRHSMcjs.NavigationManagerToken).toValue(navigationManager);
532
- container.bind(_chunk4FPCRHSMcjs.StateSerializerToken).toValue(stateSerializer);
534
+ container.bind(_chunk5DJZZML5cjs.ContainerManagerToken).toValue(containerManager);
535
+ container.bind(_chunk5DJZZML5cjs.GuardRunnerToken).toValue(guardRunner);
536
+ container.bind(_chunk5DJZZML5cjs.NavigationManagerToken).toValue(navigationManager);
537
+ container.bind(_chunk5DJZZML5cjs.StateSerializerToken).toValue(stateSerializer);
533
538
  return {
534
539
  container,
535
540
  containerManager,
@@ -584,8 +589,8 @@ function defineGuard(token, options) {
584
589
  };
585
590
  }
586
591
 
587
- // src/define-app.ts
588
- function defineApp(token, options = {}) {
592
+ // src/define-host.ts
593
+ function defineHost(token, options = {}) {
589
594
  var _a, _b, _c;
590
595
  const eager = (_a = options.eager) != null ? _a : [];
591
596
  const lazy = (_b = options.lazy) != null ? _b : [];
@@ -593,9 +598,9 @@ function defineApp(token, options = {}) {
593
598
  const config = { eager, guards, lazy };
594
599
  return {
595
600
  __meta: { eager, guards, lazy, requires: [] },
596
- __type: "app",
601
+ __type: "host",
597
602
  /**
598
- * Регистрирует AppConfig как value в IoC-контейнере.
603
+ * Регистрирует HostConfig как value в IoC-контейнере.
599
604
  * Позволяет runtime получать конфигурацию приложения через контейнер.
600
605
  * @param container - Контейнер для регистрации
601
606
  */
@@ -694,6 +699,7 @@ function defineLayer(token, options) {
694
699
  return {
695
700
  __meta: { name, requires: [] },
696
701
  __type: "layer",
702
+ config,
697
703
  /**
698
704
  * Регистрирует LayerConfig как value в IoC-контейнере.
699
705
  * Runtime использует конфиг для инициализации view-адаптера.
@@ -733,4 +739,5 @@ function defineLayer(token, options) {
733
739
 
734
740
 
735
741
 
736
- exports.ActivatableToken = _chunk4FPCRHSMcjs.ActivatableToken; exports.ContainerManagerImpl = ContainerManagerImpl; exports.ContainerManagerToken = _chunk4FPCRHSMcjs.ContainerManagerToken; exports.GuardRunnerImpl = GuardRunnerImpl; exports.GuardRunnerToken = _chunk4FPCRHSMcjs.GuardRunnerToken; exports.NavigationManagerImpl = NavigationManagerImpl; exports.NavigationManagerToken = _chunk4FPCRHSMcjs.NavigationManagerToken; exports.RequestContextToken = _chunk4FPCRHSMcjs.RequestContextToken; exports.SlotRegistry = _chunk4FPCRHSMcjs.SlotRegistry; exports.SlotRegistryToken = _chunk4FPCRHSMcjs.SlotRegistryToken; exports.StateCache = StateCache; exports.StateRegistry = StateRegistry; exports.StateRegistryToken = _chunk4FPCRHSMcjs.StateRegistryToken; exports.StateSerializerImpl = StateSerializerImpl; exports.StateSerializerToken = _chunk4FPCRHSMcjs.StateSerializerToken; exports.createCore = createCore; exports.defaultGlobalResolver = defaultGlobalResolver; exports.defineActionGuard = defineActionGuard; exports.defineApp = defineApp; exports.defineExtension = defineExtension; exports.defineGuard = defineGuard; exports.defineLayer = defineLayer; exports.defineLayout = defineLayout; exports.defineRepository = _chunk4FPCRHSMcjs.defineRepository; exports.defineService = _chunk4FPCRHSMcjs.defineService; exports.defineSlot = _chunk4FPCRHSMcjs.defineSlot; exports.defineViewModel = _chunk4FPCRHSMcjs.defineViewModel;
742
+
743
+ exports.ActivatableToken = _chunk5DJZZML5cjs.ActivatableToken; exports.ContainerManagerImpl = ContainerManagerImpl; exports.ContainerManagerToken = _chunk5DJZZML5cjs.ContainerManagerToken; exports.GuardRunnerImpl = GuardRunnerImpl; exports.GuardRunnerToken = _chunk5DJZZML5cjs.GuardRunnerToken; exports.NavigationManagerImpl = NavigationManagerImpl; exports.NavigationManagerToken = _chunk5DJZZML5cjs.NavigationManagerToken; exports.RequestContextToken = _chunk5DJZZML5cjs.RequestContextToken; exports.SlotRegistry = _chunk5DJZZML5cjs.SlotRegistry; exports.SlotRegistryToken = _chunk5DJZZML5cjs.SlotRegistryToken; exports.StateCache = StateCache; exports.StateRegistry = StateRegistry; exports.StateRegistryToken = _chunk5DJZZML5cjs.StateRegistryToken; exports.StateSerializerImpl = StateSerializerImpl; exports.StateSerializerToken = _chunk5DJZZML5cjs.StateSerializerToken; exports.ViewLayerToken = _chunkLJE7K7VDcjs.ViewLayerToken; exports.createCore = createCore; exports.defaultGlobalResolver = defaultGlobalResolver; exports.defineActionGuard = defineActionGuard; exports.defineExtension = defineExtension; exports.defineGuard = defineGuard; exports.defineHost = defineHost; exports.defineLayer = defineLayer; exports.defineLayout = defineLayout; exports.defineRepository = _chunk5DJZZML5cjs.defineRepository; exports.defineService = _chunk5DJZZML5cjs.defineService; exports.defineSlot = _chunk5DJZZML5cjs.defineSlot; exports.defineViewModel = _chunk5DJZZML5cjs.defineViewModel;
package/index.d.cts CHANGED
@@ -1,9 +1,10 @@
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';
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, f as DefineGuardOptions, g as GuardDefinition, H as HostConfig, h as DefineHostOptions, i as HostDefinition, E as ExtensionConfig, j as DefineExtensionOptions, k as ExtensionDefinition, A as ActionGuard, l as DefineActionGuardOptions, m as ActionGuardDefinition, n as LayoutConfig, o as DefineLayoutOptions, p as LayoutDefinition, q as LayerConfig, r as DefineLayerOptions, s as LayerDefinition } from './types-Deyolj1-.cjs';
2
+ export { t as Activatable, u as ActivatableToken, v as ContainerManagerToken, w as DefineRepositoryOptions, x as DefineServiceOptions, y as DefineViewModelOptions, z as Definition, B as GuardRunnerToken, F as NavigationManagerToken, I as RepositoryDefinition, J as RequestContextToken, K as ServiceDefinition, M as SlotEntry, O as SlotRegistry, P as SlotRegistryToken, Q as StateCache, T as StateParticipant, U as StateRegistry, V as StateRegistryToken, W as StateSerializerToken, X as ViewModelDefinition } from './types-Deyolj1-.cjs';
3
3
  import { Container, Token } from '@foxford/ioc';
4
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';
5
+ export { d as defineRepository, a as defineService, b as defineViewModel } from './define-repository-OpMj-Q9O.cjs';
6
+ export { D as DefineSlotOptions, S as SlotDefinition, d as defineSlot } from './define-slot-RfgqKa6n.cjs';
7
+ export { V as ViewAdapter, a as ViewLayerDefinition, b as ViewLayerToken } from './view-adapter-vwO-7b1t.cjs';
7
8
 
8
9
  /**
9
10
  * Опции для создания Core Runtime.
@@ -273,22 +274,22 @@ declare function defineGuard<Deps extends readonly Token<unknown>[] = readonly [
273
274
  * Определяет конфигурацию приложения с декларативным списком сервисов и guards.
274
275
  * Заменяет ручной вызов setupContainer() — декларирует, какие сервисы запускаются
275
276
  * при старте (eager), какие — лениво (lazy), и какие guards применяются глобально.
276
- * Регистрирует AppConfig-значение в IoC-контейнере.
277
+ * Регистрирует HostConfig-значение в IoC-контейнере.
277
278
  *
278
- * @param token - Токен для регистрации AppConfig в IoC
279
+ * @param token - Токен для регистрации HostConfig в IoC
279
280
  * @param options - Опции: eager, lazy, guards
280
- * @returns AppDefinition с методом register(container)
281
+ * @returns HostDefinition с методом register(container)
281
282
  *
282
283
  * @example
283
284
  * // app/app.ts
284
- * export const app = defineApp(AppToken, {
285
+ * export const app = defineHost(AppToken, {
285
286
  * eager: [AuthServiceToken, NotificationServiceToken],
286
287
  * lazy: [CartServiceToken],
287
288
  * guards: [GlobalAuthGuardToken],
288
289
  * })
289
290
  * app.register(appContainer)
290
291
  */
291
- declare function defineApp(token: Token<AppConfig>, options?: DefineAppOptions): AppDefinition;
292
+ declare function defineHost(token: Token<HostConfig>, options?: DefineHostOptions): HostDefinition;
292
293
 
293
294
  /**
294
295
  * Определяет app-scope расширение с lifecycle-хуками activate/deactivate.
@@ -383,4 +384,4 @@ declare function defineLayout(token: Token<LayoutConfig>, options?: DefineLayout
383
384
  */
384
385
  declare function defineLayer(token: Token<LayerConfig>, options: DefineLayerOptions): LayerDefinition;
385
386
 
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 };
387
+ export { ActionGuard, ActionGuardDefinition, ContainerManager, ContainerManagerImpl, Core, type CreateCoreOptions, DefineActionGuardOptions, DefineExtensionOptions, DefineGuardOptions, DefineHostOptions, DefineLayerOptions, DefineLayoutOptions, Disposable, ExtensionConfig, ExtensionDefinition, Guard, GuardDefinition, GuardResult, GuardRunner, GuardRunnerImpl, HostConfig, HostDefinition, LayerConfig, LayerDefinition, LayoutConfig, LayoutDefinition, LeaveGuardResult, NavigationEntry, NavigationInterceptor, NavigationManager, NavigationManagerImpl, RequestContext, StateSerializer, StateSerializerImpl, createCore, defaultGlobalResolver, defineActionGuard, defineExtension, defineGuard, defineHost, defineLayer, defineLayout };
package/index.d.ts CHANGED
@@ -1,9 +1,10 @@
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.js';
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.js';
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, f as DefineGuardOptions, g as GuardDefinition, H as HostConfig, h as DefineHostOptions, i as HostDefinition, E as ExtensionConfig, j as DefineExtensionOptions, k as ExtensionDefinition, A as ActionGuard, l as DefineActionGuardOptions, m as ActionGuardDefinition, n as LayoutConfig, o as DefineLayoutOptions, p as LayoutDefinition, q as LayerConfig, r as DefineLayerOptions, s as LayerDefinition } from './types-Deyolj1-.js';
2
+ export { t as Activatable, u as ActivatableToken, v as ContainerManagerToken, w as DefineRepositoryOptions, x as DefineServiceOptions, y as DefineViewModelOptions, z as Definition, B as GuardRunnerToken, F as NavigationManagerToken, I as RepositoryDefinition, J as RequestContextToken, K as ServiceDefinition, M as SlotEntry, O as SlotRegistry, P as SlotRegistryToken, Q as StateCache, T as StateParticipant, U as StateRegistry, V as StateRegistryToken, W as StateSerializerToken, X as ViewModelDefinition } from './types-Deyolj1-.js';
3
3
  import { Container, Token } from '@foxford/ioc';
4
4
  import { DefinitionResolver } from './adapter.js';
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--HM6B232.js';
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--HM6B232.js';
5
+ export { d as defineRepository, a as defineService, b as defineViewModel } from './define-repository-DZg34Tb3.js';
6
+ export { D as DefineSlotOptions, S as SlotDefinition, d as defineSlot } from './define-slot-ESU7FR9O.js';
7
+ export { V as ViewAdapter, a as ViewLayerDefinition, b as ViewLayerToken } from './view-adapter-CL0vZ-rv.js';
7
8
 
8
9
  /**
9
10
  * Опции для создания Core Runtime.
@@ -273,22 +274,22 @@ declare function defineGuard<Deps extends readonly Token<unknown>[] = readonly [
273
274
  * Определяет конфигурацию приложения с декларативным списком сервисов и guards.
274
275
  * Заменяет ручной вызов setupContainer() — декларирует, какие сервисы запускаются
275
276
  * при старте (eager), какие — лениво (lazy), и какие guards применяются глобально.
276
- * Регистрирует AppConfig-значение в IoC-контейнере.
277
+ * Регистрирует HostConfig-значение в IoC-контейнере.
277
278
  *
278
- * @param token - Токен для регистрации AppConfig в IoC
279
+ * @param token - Токен для регистрации HostConfig в IoC
279
280
  * @param options - Опции: eager, lazy, guards
280
- * @returns AppDefinition с методом register(container)
281
+ * @returns HostDefinition с методом register(container)
281
282
  *
282
283
  * @example
283
284
  * // app/app.ts
284
- * export const app = defineApp(AppToken, {
285
+ * export const app = defineHost(AppToken, {
285
286
  * eager: [AuthServiceToken, NotificationServiceToken],
286
287
  * lazy: [CartServiceToken],
287
288
  * guards: [GlobalAuthGuardToken],
288
289
  * })
289
290
  * app.register(appContainer)
290
291
  */
291
- declare function defineApp(token: Token<AppConfig>, options?: DefineAppOptions): AppDefinition;
292
+ declare function defineHost(token: Token<HostConfig>, options?: DefineHostOptions): HostDefinition;
292
293
 
293
294
  /**
294
295
  * Определяет app-scope расширение с lifecycle-хуками activate/deactivate.
@@ -383,4 +384,4 @@ declare function defineLayout(token: Token<LayoutConfig>, options?: DefineLayout
383
384
  */
384
385
  declare function defineLayer(token: Token<LayerConfig>, options: DefineLayerOptions): LayerDefinition;
385
386
 
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 };
387
+ export { ActionGuard, ActionGuardDefinition, ContainerManager, ContainerManagerImpl, Core, type CreateCoreOptions, DefineActionGuardOptions, DefineExtensionOptions, DefineGuardOptions, DefineHostOptions, DefineLayerOptions, DefineLayoutOptions, Disposable, ExtensionConfig, ExtensionDefinition, Guard, GuardDefinition, GuardResult, GuardRunner, GuardRunnerImpl, HostConfig, HostDefinition, LayerConfig, LayerDefinition, LayoutConfig, LayoutDefinition, LeaveGuardResult, NavigationEntry, NavigationInterceptor, NavigationManager, NavigationManagerImpl, RequestContext, StateSerializer, StateSerializerImpl, createCore, defaultGlobalResolver, defineActionGuard, defineExtension, defineGuard, defineHost, defineLayer, defineLayout };
package/index.js CHANGED
@@ -12,10 +12,15 @@ import {
12
12
  defineService,
13
13
  defineSlot,
14
14
  defineViewModel
15
- } from "./chunk-S5KTWI6P.js";
15
+ } from "./chunk-WRQC6BVJ.js";
16
+ import "./chunk-WBHHHICS.js";
17
+ import {
18
+ ViewLayerToken
19
+ } from "./chunk-TCYGDT2A.js";
20
+ import "./chunk-TPBI6TOU.js";
16
21
  import {
17
22
  __async
18
- } from "./chunk-E7HG2NXO.js";
23
+ } from "./chunk-HJO26HIQ.js";
19
24
 
20
25
  // src/core/state-registry.ts
21
26
  var StateRegistry = class {
@@ -584,8 +589,8 @@ function defineGuard(token, options) {
584
589
  };
585
590
  }
586
591
 
587
- // src/define-app.ts
588
- function defineApp(token, options = {}) {
592
+ // src/define-host.ts
593
+ function defineHost(token, options = {}) {
589
594
  var _a, _b, _c;
590
595
  const eager = (_a = options.eager) != null ? _a : [];
591
596
  const lazy = (_b = options.lazy) != null ? _b : [];
@@ -593,9 +598,9 @@ function defineApp(token, options = {}) {
593
598
  const config = { eager, guards, lazy };
594
599
  return {
595
600
  __meta: { eager, guards, lazy, requires: [] },
596
- __type: "app",
601
+ __type: "host",
597
602
  /**
598
- * Регистрирует AppConfig как value в IoC-контейнере.
603
+ * Регистрирует HostConfig как value в IoC-контейнере.
599
604
  * Позволяет runtime получать конфигурацию приложения через контейнер.
600
605
  * @param container - Контейнер для регистрации
601
606
  */
@@ -694,6 +699,7 @@ function defineLayer(token, options) {
694
699
  return {
695
700
  __meta: { name, requires: [] },
696
701
  __type: "layer",
702
+ config,
697
703
  /**
698
704
  * Регистрирует LayerConfig как value в IoC-контейнере.
699
705
  * Runtime использует конфиг для инициализации view-адаптера.
@@ -721,12 +727,13 @@ export {
721
727
  StateRegistryToken,
722
728
  StateSerializerImpl,
723
729
  StateSerializerToken,
730
+ ViewLayerToken,
724
731
  createCore,
725
732
  defaultGlobalResolver,
726
733
  defineActionGuard,
727
- defineApp,
728
734
  defineExtension,
729
735
  defineGuard,
736
+ defineHost,
730
737
  defineLayer,
731
738
  defineLayout,
732
739
  defineRepository,