@foxford/den 1.0.2 → 2.1.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 { x as Definition, q as LayerDefinition } from './types-COwVwgzE.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 };
@@ -0,0 +1,74 @@
1
+ import { x as Definition, q as LayerDefinition } from './types-COwVwgzE.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 };
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-MDEWHqM7.cjs';
2
+ export { D as DefineSlotOptions, S as SlotDefinition, d as defineSlot } from './define-slot-BKvArA02.cjs';
3
+ export { u as DefineRepositoryOptions, v as DefineServiceOptions, w as DefineViewModelOptions, x as Definition, B as RepositoryDefinition, H as ServiceDefinition, I as SlotEntry, J as SlotRegistry, K as SlotRegistryToken, V as ViewModelDefinition } from './types-COwVwgzE.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-Ca62_YCy.js';
2
+ export { D as DefineSlotOptions, S as SlotDefinition, d as defineSlot } from './define-slot-Dil8Kr1A.js';
3
+ export { u as DefineRepositoryOptions, v as DefineServiceOptions, w as DefineViewModelOptions, x as Definition, B as RepositoryDefinition, H as ServiceDefinition, I as SlotEntry, J as SlotRegistry, K as SlotRegistryToken, V as ViewModelDefinition } from './types-COwVwgzE.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,28 +589,6 @@ function defineGuard(token, options) {
584
589
  };
585
590
  }
586
591
 
587
- // src/define-app.ts
588
- function defineApp(token, options = {}) {
589
- var _a, _b, _c;
590
- const eager = (_a = options.eager) != null ? _a : [];
591
- const lazy = (_b = options.lazy) != null ? _b : [];
592
- const guards = (_c = options.guards) != null ? _c : [];
593
- const config = { eager, guards, lazy };
594
- return {
595
- __meta: { eager, guards, lazy, requires: [] },
596
- __type: "app",
597
- /**
598
- * Регистрирует AppConfig как value в IoC-контейнере.
599
- * Позволяет runtime получать конфигурацию приложения через контейнер.
600
- * @param container - Контейнер для регистрации
601
- */
602
- register(container) {
603
- container.bind(token).toValue(config);
604
- },
605
- token
606
- };
607
- }
608
-
609
592
  // src/define-extension.ts
610
593
 
611
594
  function defineExtension(token, options = {}) {
@@ -694,6 +677,7 @@ function defineLayer(token, options) {
694
677
  return {
695
678
  __meta: { name, requires: [] },
696
679
  __type: "layer",
680
+ config,
697
681
  /**
698
682
  * Регистрирует LayerConfig как value в IoC-контейнере.
699
683
  * Runtime использует конфиг для инициализации view-адаптера.
@@ -733,4 +717,4 @@ function defineLayer(token, options) {
733
717
 
734
718
 
735
719
 
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;
720
+ 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.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, E as ExtensionConfig, h as DefineExtensionOptions, i as ExtensionDefinition, A as ActionGuard, j as DefineActionGuardOptions, k as ActionGuardDefinition, l as LayoutConfig, m as DefineLayoutOptions, n as LayoutDefinition, o as LayerConfig, p as DefineLayerOptions, q as LayerDefinition } from './types-COwVwgzE.cjs';
2
+ export { r as Activatable, s as ActivatableToken, t as ContainerManagerToken, u as DefineRepositoryOptions, v as DefineServiceOptions, w as DefineViewModelOptions, x as Definition, y as GuardRunnerToken, z as NavigationManagerToken, B as RepositoryDefinition, F as RequestContextToken, H as ServiceDefinition, I as SlotEntry, J as SlotRegistry, K as SlotRegistryToken, M as StateCache, O as StateParticipant, P as StateRegistry, Q as StateRegistryToken, T as StateSerializerToken, V as ViewModelDefinition } from './types-COwVwgzE.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-MDEWHqM7.cjs';
6
+ export { D as DefineSlotOptions, S as SlotDefinition, d as defineSlot } from './define-slot-BKvArA02.cjs';
7
+ export { V as ViewAdapter, a as ViewLayerDefinition, b as ViewLayerToken } from './view-adapter-zbHBVVqR.cjs';
7
8
 
8
9
  /**
9
10
  * Опции для создания Core Runtime.
@@ -269,27 +270,6 @@ declare const defaultGlobalResolver: DefinitionResolver;
269
270
  */
270
271
  declare function defineGuard<Deps extends readonly Token<unknown>[] = readonly []>(token: Token<Guard>, options: DefineGuardOptions<Deps>): GuardDefinition;
271
272
 
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
273
  /**
294
274
  * Определяет app-scope расширение с lifecycle-хуками activate/deactivate.
295
275
  * Extension — модуль с собственным lifecycle, живущий в скоупе приложения
@@ -383,4 +363,4 @@ declare function defineLayout(token: Token<LayoutConfig>, options?: DefineLayout
383
363
  */
384
364
  declare function defineLayer(token: Token<LayerConfig>, options: DefineLayerOptions): LayerDefinition;
385
365
 
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 };
366
+ export { ActionGuard, ActionGuardDefinition, ContainerManager, ContainerManagerImpl, Core, type CreateCoreOptions, DefineActionGuardOptions, 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, defineExtension, defineGuard, 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, E as ExtensionConfig, h as DefineExtensionOptions, i as ExtensionDefinition, A as ActionGuard, j as DefineActionGuardOptions, k as ActionGuardDefinition, l as LayoutConfig, m as DefineLayoutOptions, n as LayoutDefinition, o as LayerConfig, p as DefineLayerOptions, q as LayerDefinition } from './types-COwVwgzE.js';
2
+ export { r as Activatable, s as ActivatableToken, t as ContainerManagerToken, u as DefineRepositoryOptions, v as DefineServiceOptions, w as DefineViewModelOptions, x as Definition, y as GuardRunnerToken, z as NavigationManagerToken, B as RepositoryDefinition, F as RequestContextToken, H as ServiceDefinition, I as SlotEntry, J as SlotRegistry, K as SlotRegistryToken, M as StateCache, O as StateParticipant, P as StateRegistry, Q as StateRegistryToken, T as StateSerializerToken, V as ViewModelDefinition } from './types-COwVwgzE.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-Ca62_YCy.js';
6
+ export { D as DefineSlotOptions, S as SlotDefinition, d as defineSlot } from './define-slot-Dil8Kr1A.js';
7
+ export { V as ViewAdapter, a as ViewLayerDefinition, b as ViewLayerToken } from './view-adapter-CSPKr2xy.js';
7
8
 
8
9
  /**
9
10
  * Опции для создания Core Runtime.
@@ -269,27 +270,6 @@ declare const defaultGlobalResolver: DefinitionResolver;
269
270
  */
270
271
  declare function defineGuard<Deps extends readonly Token<unknown>[] = readonly []>(token: Token<Guard>, options: DefineGuardOptions<Deps>): GuardDefinition;
271
272
 
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
273
  /**
294
274
  * Определяет app-scope расширение с lifecycle-хуками activate/deactivate.
295
275
  * Extension — модуль с собственным lifecycle, живущий в скоупе приложения
@@ -383,4 +363,4 @@ declare function defineLayout(token: Token<LayoutConfig>, options?: DefineLayout
383
363
  */
384
364
  declare function defineLayer(token: Token<LayerConfig>, options: DefineLayerOptions): LayerDefinition;
385
365
 
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 };
366
+ export { ActionGuard, ActionGuardDefinition, ContainerManager, ContainerManagerImpl, Core, type CreateCoreOptions, DefineActionGuardOptions, 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, defineExtension, defineGuard, 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,28 +589,6 @@ function defineGuard(token, options) {
584
589
  };
585
590
  }
586
591
 
587
- // src/define-app.ts
588
- function defineApp(token, options = {}) {
589
- var _a, _b, _c;
590
- const eager = (_a = options.eager) != null ? _a : [];
591
- const lazy = (_b = options.lazy) != null ? _b : [];
592
- const guards = (_c = options.guards) != null ? _c : [];
593
- const config = { eager, guards, lazy };
594
- return {
595
- __meta: { eager, guards, lazy, requires: [] },
596
- __type: "app",
597
- /**
598
- * Регистрирует AppConfig как value в IoC-контейнере.
599
- * Позволяет runtime получать конфигурацию приложения через контейнер.
600
- * @param container - Контейнер для регистрации
601
- */
602
- register(container) {
603
- container.bind(token).toValue(config);
604
- },
605
- token
606
- };
607
- }
608
-
609
592
  // src/define-extension.ts
610
593
  import { inject as inject2, Lifecycle as Lifecycle2 } from "@foxford/ioc";
611
594
  function defineExtension(token, options = {}) {
@@ -694,6 +677,7 @@ function defineLayer(token, options) {
694
677
  return {
695
678
  __meta: { name, requires: [] },
696
679
  __type: "layer",
680
+ config,
697
681
  /**
698
682
  * Регистрирует LayerConfig как value в IoC-контейнере.
699
683
  * Runtime использует конфиг для инициализации view-адаптера.
@@ -721,10 +705,10 @@ export {
721
705
  StateRegistryToken,
722
706
  StateSerializerImpl,
723
707
  StateSerializerToken,
708
+ ViewLayerToken,
724
709
  createCore,
725
710
  defaultGlobalResolver,
726
711
  defineActionGuard,
727
- defineApp,
728
712
  defineExtension,
729
713
  defineGuard,
730
714
  defineLayer,