@foxford/den 3.0.0 → 3.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.
@@ -1,71 +1,6 @@
1
- import { S as SlotDefinition } from './define-slot-BKvArA02.cjs';
2
- import { q as LayerDefinition, x as Definition, o as LayerConfig } from './types-COwVwgzE.cjs';
3
- import { Token, Container } from '@foxford/ioc';
4
-
5
- /**
6
- * Дескриптор острова — что ядру нужно, чтобы остров прожил свой цикл.
7
- *
8
- * `view` типизирован как `unknown` по той же причине, что и в `defineSlot`: остров не
9
- * прибит к React. Ядро собирает контейнер, гидрирует VM и ведёт учёт, ни разу не заглянув
10
- * во view; красит его view-адаптер (`ViewAdapter.createIsland`), и он же знает, дерево
11
- * какого фреймворка перед ним.
12
- *
13
- * Дескрипторы страниц у хостов (`PageDescriptor` в `@foxford/den-vike` и `@foxford/den-next`)
14
- * шире: у каждого своя часть про оркестрацию — `load`, `routes`, `provides`/`requires`,
15
- * вклад в документ. Сводить их в один тип нечем, оркестраторы у хостов разные. Общее
16
- * ровно это, и структурная типизация делает остальное: дескриптор хоста подходит сюда как есть.
17
- */
18
- interface IslandDescriptor {
19
- /**
20
- * Имя мини-приложения (`market-app`).
21
- *
22
- * Работает дважды: корень именованного иерархического логгера (ядро биндит по нему
23
- * scope-логгер в контейнер острова, поэтому регистрация единиц логируется под именем
24
- * приложения) и пространство имён для адресов его слотов (см. `slotAddress`). Из-за
25
- * второго оно обязательное: без него у мест приложения не было бы адреса.
26
- */
27
- name: string;
28
- /** Непрозрачная ссылка на view острова (компонент view-фреймворка). */
29
- view: unknown;
30
- /**
31
- * View-слой — чем остров рисовать: `defineLayer(ViewLayerToken, { adapter: reactAdapter() })`.
32
- *
33
- * Обязателен, и дефолта нет ни у ядра, ни у хоста: фреймворк за приложение не выбирают.
34
- * Слой регистрируется в контейнере острова, поэтому слоты внутри по умолчанию рисуются
35
- * им же; слот перекрывает выбор своим `viewLayer`.
36
- */
37
- viewLayer: LayerDefinition;
38
- /**
39
- * Data/Business единицы (repository/service). Регистрируются в контейнере острова.
40
- * Не должны импортировать VM.
41
- */
42
- units: ReadonlyArray<Definition<unknown>>;
43
- /**
44
- * VM-единицы: регистрируются только в острове — оркестратор их не читает, состояние
45
- * ездит через denState.
46
- */
47
- viewModels?: ReadonlyArray<Definition<unknown>>;
48
- /**
49
- * Единицы, которые обязаны жить с загрузки, а не с первого резолва.
50
- *
51
- * Регистрация ленива по природе: не спросили — не создали. Обычно это то, что нужно, но
52
- * сервису, который сам на что-то подписывается или греет кэш, ждать первого потребителя
53
- * незачем. Токены — из тех же `units`.
54
- *
55
- * Поднимаются при МОНТИРОВАНИИ острова, а не при сборке контейнера: контейнер строится и на
56
- * сервере, а сервер живёт один рендер — открытая там WS-подписка это не «eager», а утечка.
57
- * Серверное состояние приложения считает активация VM.
58
- */
59
- eager?: ReadonlyArray<Token<unknown>>;
60
- /**
61
- * Места расширения приложения: ключ — локальное имя слота, значение — `defineSlot`.
62
- *
63
- * Карта, а не массив, потому что имя даёт хозяин места: адрес получается `app:key`
64
- * (см. `slotAddress`), занять чужое пространство имён нечем, а руками писать префикс
65
- * не нужно. Единицы слотов регистрируются в контейнере острова вместе с его собственными.
66
- */
67
- slots?: Readonly<Record<string, SlotDefinition>>;
68
- }
1
+ import { I as IslandDescriptor } from './descriptor-DZDNH7R5.js';
2
+ import { q as LayerDefinition, o as LayerConfig } from './types-COwVwgzE.js';
3
+ import { Container, Token } from '@foxford/ioc';
69
4
 
70
5
  /** Что приложение отдало серверным рендером. */
71
6
  interface ServerRenderResult {
@@ -185,4 +120,4 @@ declare function viewAdapterOf(layer: ViewLayerDefinition): ViewAdapter;
185
120
  */
186
121
  declare function resolveViewAdapter(container: Container): ViewAdapter;
187
122
 
188
- export { type IslandDescriptor as I, type RenderIslandOptions as R, type ServerRender as S, type ViewAdapter as V, type ViewLayerDefinition as a, ViewLayerToken as b, type RenderTree as c, type ServerRenderResult as d, resolveViewAdapter as r, viewAdapterOf as v };
123
+ export { type RenderIslandOptions as R, type ServerRender as S, type ViewAdapter as V, type ViewLayerDefinition as a, ViewLayerToken as b, type RenderTree as c, type ServerRenderResult as d, resolveViewAdapter as r, viewAdapterOf as v };
@@ -1,71 +1,6 @@
1
- import { S as SlotDefinition } from './define-slot-Dil8Kr1A.js';
2
- import { q as LayerDefinition, x as Definition, o as LayerConfig } from './types-COwVwgzE.js';
3
- import { Token, Container } from '@foxford/ioc';
4
-
5
- /**
6
- * Дескриптор острова — что ядру нужно, чтобы остров прожил свой цикл.
7
- *
8
- * `view` типизирован как `unknown` по той же причине, что и в `defineSlot`: остров не
9
- * прибит к React. Ядро собирает контейнер, гидрирует VM и ведёт учёт, ни разу не заглянув
10
- * во view; красит его view-адаптер (`ViewAdapter.createIsland`), и он же знает, дерево
11
- * какого фреймворка перед ним.
12
- *
13
- * Дескрипторы страниц у хостов (`PageDescriptor` в `@foxford/den-vike` и `@foxford/den-next`)
14
- * шире: у каждого своя часть про оркестрацию — `load`, `routes`, `provides`/`requires`,
15
- * вклад в документ. Сводить их в один тип нечем, оркестраторы у хостов разные. Общее
16
- * ровно это, и структурная типизация делает остальное: дескриптор хоста подходит сюда как есть.
17
- */
18
- interface IslandDescriptor {
19
- /**
20
- * Имя мини-приложения (`market-app`).
21
- *
22
- * Работает дважды: корень именованного иерархического логгера (ядро биндит по нему
23
- * scope-логгер в контейнер острова, поэтому регистрация единиц логируется под именем
24
- * приложения) и пространство имён для адресов его слотов (см. `slotAddress`). Из-за
25
- * второго оно обязательное: без него у мест приложения не было бы адреса.
26
- */
27
- name: string;
28
- /** Непрозрачная ссылка на view острова (компонент view-фреймворка). */
29
- view: unknown;
30
- /**
31
- * View-слой — чем остров рисовать: `defineLayer(ViewLayerToken, { adapter: reactAdapter() })`.
32
- *
33
- * Обязателен, и дефолта нет ни у ядра, ни у хоста: фреймворк за приложение не выбирают.
34
- * Слой регистрируется в контейнере острова, поэтому слоты внутри по умолчанию рисуются
35
- * им же; слот перекрывает выбор своим `viewLayer`.
36
- */
37
- viewLayer: LayerDefinition;
38
- /**
39
- * Data/Business единицы (repository/service). Регистрируются в контейнере острова.
40
- * Не должны импортировать VM.
41
- */
42
- units: ReadonlyArray<Definition<unknown>>;
43
- /**
44
- * VM-единицы: регистрируются только в острове — оркестратор их не читает, состояние
45
- * ездит через denState.
46
- */
47
- viewModels?: ReadonlyArray<Definition<unknown>>;
48
- /**
49
- * Единицы, которые обязаны жить с загрузки, а не с первого резолва.
50
- *
51
- * Регистрация ленива по природе: не спросили — не создали. Обычно это то, что нужно, но
52
- * сервису, который сам на что-то подписывается или греет кэш, ждать первого потребителя
53
- * незачем. Токены — из тех же `units`.
54
- *
55
- * Поднимаются при МОНТИРОВАНИИ острова, а не при сборке контейнера: контейнер строится и на
56
- * сервере, а сервер живёт один рендер — открытая там WS-подписка это не «eager», а утечка.
57
- * Серверное состояние приложения считает активация VM.
58
- */
59
- eager?: ReadonlyArray<Token<unknown>>;
60
- /**
61
- * Места расширения приложения: ключ — локальное имя слота, значение — `defineSlot`.
62
- *
63
- * Карта, а не массив, потому что имя даёт хозяин места: адрес получается `app:key`
64
- * (см. `slotAddress`), занять чужое пространство имён нечем, а руками писать префикс
65
- * не нужно. Единицы слотов регистрируются в контейнере острова вместе с его собственными.
66
- */
67
- slots?: Readonly<Record<string, SlotDefinition>>;
68
- }
1
+ import { I as IslandDescriptor } from './descriptor-h0JE9jFx.cjs';
2
+ import { q as LayerDefinition, o as LayerConfig } from './types-COwVwgzE.cjs';
3
+ import { Container, Token } from '@foxford/ioc';
69
4
 
70
5
  /** Что приложение отдало серверным рендером. */
71
6
  interface ServerRenderResult {
@@ -185,4 +120,4 @@ declare function viewAdapterOf(layer: ViewLayerDefinition): ViewAdapter;
185
120
  */
186
121
  declare function resolveViewAdapter(container: Container): ViewAdapter;
187
122
 
188
- export { type IslandDescriptor as I, type RenderIslandOptions as R, type ServerRender as S, type ViewAdapter as V, type ViewLayerDefinition as a, ViewLayerToken as b, type RenderTree as c, type ServerRenderResult as d, resolveViewAdapter as r, viewAdapterOf as v };
123
+ export { type RenderIslandOptions as R, type ServerRender as S, type ViewAdapter as V, type ViewLayerDefinition as a, ViewLayerToken as b, type RenderTree as c, type ServerRenderResult as d, resolveViewAdapter as r, viewAdapterOf as v };
@@ -1,26 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/logger.ts
2
- var _ioc = require('@foxford/ioc');
3
- var _logger = require('@foxford/logger');
4
- var logger = _logger.log.getLogger("@foxford/den");
5
- var LoggerToken = _ioc.createToken.call(void 0, "den:Logger");
6
- function scopeLogger(container) {
7
- if (container.has(LoggerToken)) {
8
- const resolved = container.resolve(LoggerToken);
9
- if (!(resolved instanceof Promise)) {
10
- return resolved;
11
- }
12
- }
13
- return logger;
14
- }
15
- function unitLogger(container, name) {
16
- var _a;
17
- const base = scopeLogger(container);
18
- return (_a = base.getLogger(name)) != null ? _a : base;
19
- }
20
-
21
-
22
-
23
-
24
-
25
-
26
- exports.logger = logger; exports.LoggerToken = LoggerToken; exports.scopeLogger = scopeLogger; exports.unitLogger = unitLogger;
package/chunk-TPBI6TOU.js DELETED
@@ -1,26 +0,0 @@
1
- // src/logger.ts
2
- import { createToken } from "@foxford/ioc";
3
- import { log } from "@foxford/logger";
4
- var logger = log.getLogger("@foxford/den");
5
- var LoggerToken = createToken("den:Logger");
6
- function scopeLogger(container) {
7
- if (container.has(LoggerToken)) {
8
- const resolved = container.resolve(LoggerToken);
9
- if (!(resolved instanceof Promise)) {
10
- return resolved;
11
- }
12
- }
13
- return logger;
14
- }
15
- function unitLogger(container, name) {
16
- var _a;
17
- const base = scopeLogger(container);
18
- return (_a = base.getLogger(name)) != null ? _a : base;
19
- }
20
-
21
- export {
22
- logger,
23
- LoggerToken,
24
- scopeLogger,
25
- unitLogger
26
- };