@foxford/den 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapter.cjs +8 -42
- package/adapter.d.cts +1 -1
- package/adapter.d.ts +1 -1
- package/adapter.js +5 -13
- package/chunk-5DJZZML5.cjs +224 -0
- package/chunk-A6ZPAM6Z.cjs +26 -0
- package/chunk-C7BM4DGX.cjs +18 -0
- package/chunk-HJO26HIQ.js +41 -0
- package/chunk-LJE7K7VD.cjs +35 -0
- package/chunk-TCYGDT2A.js +35 -0
- package/chunk-TPBI6TOU.js +26 -0
- package/chunk-WBHHHICS.js +18 -0
- package/chunk-WRQC6BVJ.js +224 -0
- package/chunk-XHYR3SGG.cjs +41 -0
- package/define-repository-DZg34Tb3.d.ts +83 -0
- package/define-repository-OpMj-Q9O.d.cts +83 -0
- package/define-slot-ESU7FR9O.d.ts +74 -0
- package/define-slot-RfgqKa6n.d.cts +74 -0
- package/define.cjs +15 -271
- package/define.d.cts +3 -2
- package/define.d.ts +3 -2
- package/define.js +15 -236
- package/index.cjs +88 -372
- package/index.d.cts +11 -10
- package/index.d.ts +11 -10
- package/index.js +39 -271
- package/island/index.cjs +137 -0
- package/island/index.d.cts +158 -0
- package/island/index.d.ts +158 -0
- package/island/index.js +137 -0
- package/package.json +27 -7
- package/types-Deyolj1-.d.cts +802 -0
- package/types-Deyolj1-.d.ts +802 -0
- package/view-adapter-CL0vZ-rv.d.ts +110 -0
- package/view-adapter-vwO-7b1t.d.cts +110 -0
- package/define-slot--HM6B232.d.ts +0 -500
- package/define-slot-es1K6_-L.d.cts +0 -500
- package/types-B4Arep3V.d.cts +0 -415
- package/types-B4Arep3V.d.ts +0 -415
package/index.cjs
CHANGED
|
@@ -1,85 +1,26 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var __async = (__this, __arguments, generator) => {
|
|
20
|
-
return new Promise((resolve, reject) => {
|
|
21
|
-
var fulfilled = (value) => {
|
|
22
|
-
try {
|
|
23
|
-
step(generator.next(value));
|
|
24
|
-
} catch (e) {
|
|
25
|
-
reject(e);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
var rejected = (value) => {
|
|
29
|
-
try {
|
|
30
|
-
step(generator.throw(value));
|
|
31
|
-
} catch (e) {
|
|
32
|
-
reject(e);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
36
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
37
|
-
});
|
|
38
|
-
};
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
39
7
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
StateSerializerImpl: () => StateSerializerImpl,
|
|
57
|
-
StateSerializerToken: () => StateSerializerToken,
|
|
58
|
-
createCore: () => createCore,
|
|
59
|
-
defaultGlobalResolver: () => defaultGlobalResolver,
|
|
60
|
-
defineActionGuard: () => defineActionGuard,
|
|
61
|
-
defineApp: () => defineApp,
|
|
62
|
-
defineExtension: () => defineExtension,
|
|
63
|
-
defineGuard: () => defineGuard,
|
|
64
|
-
defineLayer: () => defineLayer,
|
|
65
|
-
defineLayout: () => defineLayout,
|
|
66
|
-
defineRepository: () => defineRepository,
|
|
67
|
-
defineService: () => defineService,
|
|
68
|
-
defineSlot: () => defineSlot,
|
|
69
|
-
defineViewModel: () => defineViewModel
|
|
70
|
-
});
|
|
71
|
-
module.exports = __toCommonJS(src_exports);
|
|
72
|
-
|
|
73
|
-
// src/core/types.ts
|
|
74
|
-
var import_ioc = require("@foxford/ioc");
|
|
75
|
-
var ContainerManagerToken = (0, import_ioc.createToken)("core:ContainerManager");
|
|
76
|
-
var GuardRunnerToken = (0, import_ioc.createToken)("core:GuardRunner");
|
|
77
|
-
var NavigationManagerToken = (0, import_ioc.createToken)("core:NavigationManager");
|
|
78
|
-
var StateSerializerToken = (0, import_ioc.createToken)("core:StateSerializer");
|
|
79
|
-
var StateRegistryToken = (0, import_ioc.createToken)("core:StateRegistry");
|
|
80
|
-
var SlotRegistryToken = (0, import_ioc.createToken)("core:SlotRegistry");
|
|
81
|
-
var ActivatableToken = (0, import_ioc.createToken)("core:Activatable");
|
|
82
|
-
var RequestContextToken = (0, import_ioc.createToken)("core:RequestContext");
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunk5DJZZML5cjs = require('./chunk-5DJZZML5.cjs');
|
|
16
|
+
require('./chunk-C7BM4DGX.cjs');
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
var _chunkLJE7K7VDcjs = require('./chunk-LJE7K7VD.cjs');
|
|
20
|
+
require('./chunk-A6ZPAM6Z.cjs');
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var _chunkXHYR3SGGcjs = require('./chunk-XHYR3SGG.cjs');
|
|
83
24
|
|
|
84
25
|
// src/core/state-registry.ts
|
|
85
26
|
var StateRegistry = class {
|
|
@@ -142,7 +83,7 @@ var ContainerManagerImpl = class {
|
|
|
142
83
|
return existing;
|
|
143
84
|
}
|
|
144
85
|
const child = this.appContainer.createChild();
|
|
145
|
-
child.bind(StateRegistryToken).toValue(new StateRegistry());
|
|
86
|
+
child.bind(_chunk5DJZZML5cjs.StateRegistryToken).toValue(new StateRegistry());
|
|
146
87
|
this.pageContainers.set(routeId, child);
|
|
147
88
|
return child;
|
|
148
89
|
}
|
|
@@ -152,7 +93,7 @@ var ContainerManagerImpl = class {
|
|
|
152
93
|
* @param routeId - Идентификатор маршрута
|
|
153
94
|
*/
|
|
154
95
|
destroyPageContainer(routeId) {
|
|
155
|
-
return __async(this, null, function* () {
|
|
96
|
+
return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
|
|
156
97
|
const container = this.pageContainers.get(routeId);
|
|
157
98
|
if (container === void 0) {
|
|
158
99
|
return;
|
|
@@ -173,8 +114,8 @@ var ContainerManagerImpl = class {
|
|
|
173
114
|
return existing;
|
|
174
115
|
}
|
|
175
116
|
const child = this.appContainer.createChild();
|
|
176
|
-
child.bind(RequestContextToken).toValue(context);
|
|
177
|
-
child.bind(StateRegistryToken).toValue(new StateRegistry());
|
|
117
|
+
child.bind(_chunk5DJZZML5cjs.RequestContextToken).toValue(context);
|
|
118
|
+
child.bind(_chunk5DJZZML5cjs.StateRegistryToken).toValue(new StateRegistry());
|
|
178
119
|
this.requestContainers.set(requestId, child);
|
|
179
120
|
return child;
|
|
180
121
|
}
|
|
@@ -191,7 +132,7 @@ var ContainerManagerImpl = class {
|
|
|
191
132
|
* @param requestId - Уникальный идентификатор запроса
|
|
192
133
|
*/
|
|
193
134
|
destroyRequestContainer(requestId) {
|
|
194
|
-
return __async(this, null, function* () {
|
|
135
|
+
return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
|
|
195
136
|
const container = this.requestContainers.get(requestId);
|
|
196
137
|
if (container === void 0) {
|
|
197
138
|
return;
|
|
@@ -213,7 +154,7 @@ var ContainerManagerImpl = class {
|
|
|
213
154
|
return existing;
|
|
214
155
|
}
|
|
215
156
|
const child = parent.createChild();
|
|
216
|
-
child.bind(StateRegistryToken).toValue(new StateRegistry());
|
|
157
|
+
child.bind(_chunk5DJZZML5cjs.StateRegistryToken).toValue(new StateRegistry());
|
|
217
158
|
this.ssrPageContainers.set(requestId, child);
|
|
218
159
|
return child;
|
|
219
160
|
}
|
|
@@ -224,7 +165,7 @@ var ContainerManagerImpl = class {
|
|
|
224
165
|
* @param requestId - Уникальный идентификатор запроса
|
|
225
166
|
*/
|
|
226
167
|
destroySsrPageContainer(requestId) {
|
|
227
|
-
return __async(this, null, function* () {
|
|
168
|
+
return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
|
|
228
169
|
const container = this.ssrPageContainers.get(requestId);
|
|
229
170
|
if (container === void 0) {
|
|
230
171
|
return;
|
|
@@ -252,10 +193,10 @@ var GuardRunnerImpl = class {
|
|
|
252
193
|
* @param container - Опциональный контейнер для резолвинга guards
|
|
253
194
|
*/
|
|
254
195
|
runGuards(tokens, params, container) {
|
|
255
|
-
return __async(this, null, function* () {
|
|
196
|
+
return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
|
|
256
197
|
const resolveFrom = container != null ? container : this.container;
|
|
257
198
|
const results = yield Promise.all(
|
|
258
|
-
tokens.map((token) => __async(this, null, function* () {
|
|
199
|
+
tokens.map((token) => _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
|
|
259
200
|
const guard = yield resolveFrom.resolve(token);
|
|
260
201
|
return guard.check(params);
|
|
261
202
|
}))
|
|
@@ -344,7 +285,7 @@ var NavigationManagerImpl = class {
|
|
|
344
285
|
* Состояние считается актуальным если история и текущий элемент согласованы.
|
|
345
286
|
*/
|
|
346
287
|
checkFreshness() {
|
|
347
|
-
return __async(this, null, function* () {
|
|
288
|
+
return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
|
|
348
289
|
var _a;
|
|
349
290
|
const lastEntry = (_a = this._history.at(-1)) != null ? _a : null;
|
|
350
291
|
return lastEntry === this.current;
|
|
@@ -374,7 +315,7 @@ var NavigationManagerImpl = class {
|
|
|
374
315
|
* @returns Результат проверки
|
|
375
316
|
*/
|
|
376
317
|
runLeaveGuards(from, to) {
|
|
377
|
-
return __async(this, null, function* () {
|
|
318
|
+
return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
|
|
378
319
|
for (const interceptor of this.interceptors) {
|
|
379
320
|
const result = yield interceptor.beforeNavigate(from, to);
|
|
380
321
|
if (!result.allow) {
|
|
@@ -473,10 +414,10 @@ var StateSerializerImpl = class {
|
|
|
473
414
|
*/
|
|
474
415
|
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
475
416
|
getRegistry(container) {
|
|
476
|
-
if (!container.has(StateRegistryToken)) {
|
|
417
|
+
if (!container.has(_chunk5DJZZML5cjs.StateRegistryToken)) {
|
|
477
418
|
return void 0;
|
|
478
419
|
}
|
|
479
|
-
const resolved = container.resolve(StateRegistryToken);
|
|
420
|
+
const resolved = container.resolve(_chunk5DJZZML5cjs.StateRegistryToken);
|
|
480
421
|
return resolved instanceof Promise ? void 0 : resolved;
|
|
481
422
|
}
|
|
482
423
|
/**
|
|
@@ -520,7 +461,7 @@ var StateSerializerImpl = class {
|
|
|
520
461
|
* @param params - Параметры маршрута
|
|
521
462
|
*/
|
|
522
463
|
activateAll(container, params) {
|
|
523
|
-
return __async(this, null, function* () {
|
|
464
|
+
return _chunkXHYR3SGGcjs.__async.call(void 0, this, null, function* () {
|
|
524
465
|
const registry = this.getRegistry(container);
|
|
525
466
|
if (registry === void 0) {
|
|
526
467
|
return;
|
|
@@ -533,34 +474,6 @@ var StateSerializerImpl = class {
|
|
|
533
474
|
}
|
|
534
475
|
};
|
|
535
476
|
|
|
536
|
-
// src/core/slot-registry.ts
|
|
537
|
-
var SlotRegistry = class {
|
|
538
|
-
constructor() {
|
|
539
|
-
/** Слоты по имени. Повторная регистрация с тем же именем перезаписывает. */
|
|
540
|
-
this.slots = /* @__PURE__ */ new Map();
|
|
541
|
-
}
|
|
542
|
-
/**
|
|
543
|
-
* Регистрирует слот.
|
|
544
|
-
* @param entry - Запись слота (имя + непрозрачный view)
|
|
545
|
-
*/
|
|
546
|
-
add(entry) {
|
|
547
|
-
this.slots.set(entry.name, entry);
|
|
548
|
-
}
|
|
549
|
-
/**
|
|
550
|
-
* Возвращает слот по имени.
|
|
551
|
-
* @param name - Имя слота
|
|
552
|
-
*/
|
|
553
|
-
get(name) {
|
|
554
|
-
return this.slots.get(name);
|
|
555
|
-
}
|
|
556
|
-
/**
|
|
557
|
-
* Возвращает все зарегистрированные слоты.
|
|
558
|
-
*/
|
|
559
|
-
all() {
|
|
560
|
-
return [...this.slots.values()];
|
|
561
|
-
}
|
|
562
|
-
};
|
|
563
|
-
|
|
564
477
|
// src/core/state-cache.ts
|
|
565
478
|
var StateCache = class {
|
|
566
479
|
/**
|
|
@@ -609,19 +522,19 @@ var StateCache = class {
|
|
|
609
522
|
};
|
|
610
523
|
|
|
611
524
|
// src/core/create-core.ts
|
|
612
|
-
var
|
|
525
|
+
var _ioc = require('@foxford/ioc');
|
|
613
526
|
function createCore(options = {}) {
|
|
614
527
|
var _a;
|
|
615
|
-
const container = (_a = options.container) != null ? _a : new
|
|
528
|
+
const container = (_a = options.container) != null ? _a : new (0, _ioc.Container)();
|
|
616
529
|
const containerManager = new ContainerManagerImpl(container);
|
|
617
530
|
const guardRunner = new GuardRunnerImpl(container);
|
|
618
531
|
const navigationManager = new NavigationManagerImpl();
|
|
619
532
|
const stateSerializer = new StateSerializerImpl();
|
|
620
533
|
const stateCache = new StateCache();
|
|
621
|
-
container.bind(ContainerManagerToken).toValue(containerManager);
|
|
622
|
-
container.bind(GuardRunnerToken).toValue(guardRunner);
|
|
623
|
-
container.bind(NavigationManagerToken).toValue(navigationManager);
|
|
624
|
-
container.bind(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);
|
|
625
538
|
return {
|
|
626
539
|
container,
|
|
627
540
|
containerManager,
|
|
@@ -633,10 +546,10 @@ function createCore(options = {}) {
|
|
|
633
546
|
}
|
|
634
547
|
|
|
635
548
|
// src/core/default-resolver.ts
|
|
636
|
-
|
|
549
|
+
|
|
637
550
|
var defaultGlobalResolver = (token) => {
|
|
638
551
|
var _a;
|
|
639
|
-
let container = (0,
|
|
552
|
+
let container = _ioc.getGlobalContainer.call(void 0, );
|
|
640
553
|
while (container) {
|
|
641
554
|
if (container.has(token)) {
|
|
642
555
|
return container.resolve(token);
|
|
@@ -649,156 +562,8 @@ var defaultGlobalResolver = (token) => {
|
|
|
649
562
|
});
|
|
650
563
|
};
|
|
651
564
|
|
|
652
|
-
// src/define-service.ts
|
|
653
|
-
var import_ioc5 = require("@foxford/ioc");
|
|
654
|
-
|
|
655
|
-
// src/logger.ts
|
|
656
|
-
var import_ioc4 = require("@foxford/ioc");
|
|
657
|
-
var import_logger = require("@foxford/logger");
|
|
658
|
-
var logger = import_logger.log.getLogger("@foxford/den");
|
|
659
|
-
var LoggerToken = (0, import_ioc4.createToken)("den:Logger");
|
|
660
|
-
function scopeLogger(container) {
|
|
661
|
-
if (container.has(LoggerToken)) {
|
|
662
|
-
const resolved = container.resolve(LoggerToken);
|
|
663
|
-
if (!(resolved instanceof Promise)) {
|
|
664
|
-
return resolved;
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
return logger;
|
|
668
|
-
}
|
|
669
|
-
function unitLogger(container, name) {
|
|
670
|
-
var _a;
|
|
671
|
-
const base = scopeLogger(container);
|
|
672
|
-
return (_a = base.getLogger(name)) != null ? _a : base;
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
// src/define-service.ts
|
|
676
|
-
function defineService(token, options) {
|
|
677
|
-
const { requires, create, activate, deactivate, serialize, deserialize, scope } = options;
|
|
678
|
-
const requireTokens = requires != null ? requires : [];
|
|
679
|
-
const participatesInState = serialize !== void 0 || deserialize !== void 0;
|
|
680
|
-
return {
|
|
681
|
-
__meta: { requires: requireTokens, scope: scope != null ? scope : "app" },
|
|
682
|
-
__type: "service",
|
|
683
|
-
/**
|
|
684
|
-
* Регистрирует сервис в IoC-контейнере как Singleton.
|
|
685
|
-
* Если передана create — биндит экземпляр класса напрямую.
|
|
686
|
-
* Иначе — биндит Activatable-обёртку с хуками lifecycle.
|
|
687
|
-
* Если объявлены serialize/deserialize — при создании экземпляра сервис
|
|
688
|
-
* регистрируется участником в StateRegistry этого контейнера.
|
|
689
|
-
* @param container - Контейнер для регистрации
|
|
690
|
-
*/
|
|
691
|
-
register(container) {
|
|
692
|
-
const unitLog = unitLogger(container, token.description);
|
|
693
|
-
const factory = (0, import_ioc5.inject)(requireTokens, (...args) => {
|
|
694
|
-
unitLog.debug(`\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 (${create ? "\u0444\u0430\u0431\u0440\u0438\u043A\u0430" : "lifecycle-\u043E\u0431\u0451\u0440\u0442\u043A\u0430"})`);
|
|
695
|
-
let instance;
|
|
696
|
-
if (create) {
|
|
697
|
-
instance = create(args);
|
|
698
|
-
} else {
|
|
699
|
-
const service = {
|
|
700
|
-
activate(params) {
|
|
701
|
-
return activate == null ? void 0 : activate(args, params);
|
|
702
|
-
},
|
|
703
|
-
deactivate() {
|
|
704
|
-
return deactivate == null ? void 0 : deactivate(args);
|
|
705
|
-
}
|
|
706
|
-
};
|
|
707
|
-
instance = service;
|
|
708
|
-
}
|
|
709
|
-
if (participatesInState) {
|
|
710
|
-
unitLog.debug("\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u043E\u043C StateRegistry (serialize/deserialize)");
|
|
711
|
-
registerStateParticipant(container, token, instance, args, serialize, deserialize);
|
|
712
|
-
}
|
|
713
|
-
return instance;
|
|
714
|
-
});
|
|
715
|
-
container.bind(token).toFactory(factory, { lifecycle: import_ioc5.Lifecycle.Singleton });
|
|
716
|
-
unitLog.debug(`\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0441\u0435\u0440\u0432\u0438\u0441\u0430 (scope=${scope != null ? scope : "app"}, requires=${requireTokens.length})`);
|
|
717
|
-
},
|
|
718
|
-
token
|
|
719
|
-
};
|
|
720
|
-
}
|
|
721
|
-
function registerStateParticipant(container, token, instance, deps, serialize, deserialize) {
|
|
722
|
-
if (!container.has(StateRegistryToken)) {
|
|
723
|
-
return;
|
|
724
|
-
}
|
|
725
|
-
const resolved = container.resolve(StateRegistryToken);
|
|
726
|
-
if (resolved instanceof Promise) {
|
|
727
|
-
return;
|
|
728
|
-
}
|
|
729
|
-
;
|
|
730
|
-
resolved.add(token.description, {
|
|
731
|
-
activate: (params) => {
|
|
732
|
-
var _a;
|
|
733
|
-
return (_a = instance.activate) == null ? void 0 : _a.call(instance, params);
|
|
734
|
-
},
|
|
735
|
-
fromJSON: deserialize ? (data) => deserialize(deps, data) : void 0,
|
|
736
|
-
toJSON: serialize ? () => serialize(deps) : void 0
|
|
737
|
-
});
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
// src/define-view-model.ts
|
|
741
|
-
var import_ioc6 = require("@foxford/ioc");
|
|
742
|
-
|
|
743
|
-
// src/adapter.ts
|
|
744
|
-
var activeResolver = null;
|
|
745
|
-
function resolveDefinition(token) {
|
|
746
|
-
if (activeResolver === null) {
|
|
747
|
-
throw new Error(
|
|
748
|
-
`den/adapter: \u0440\u0435\u0437\u043E\u043B\u0432\u0435\u0440 \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0434\u043B\u044F \xAB${token.description}\xBB \u2014 \u043D\u0438 \u043E\u0434\u0438\u043D host-\u0430\u0434\u0430\u043F\u0442\u0435\u0440 \u043D\u0435 \u0432\u044B\u0437\u0432\u0430\u043B installResolver()`
|
|
749
|
-
);
|
|
750
|
-
}
|
|
751
|
-
return activeResolver(token);
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
// src/define-view-model.ts
|
|
755
|
-
function defineViewModel(token, options) {
|
|
756
|
-
const { requires, create } = options;
|
|
757
|
-
const requireTokens = requires != null ? requires : [];
|
|
758
|
-
return {
|
|
759
|
-
__meta: { requires: requireTokens },
|
|
760
|
-
__type: "view-model",
|
|
761
|
-
/**
|
|
762
|
-
* Регистрирует VM в IoC-контейнере как Singleton.
|
|
763
|
-
* Зависимости из requires резолвятся автоматически через inject.
|
|
764
|
-
* @param container - Контейнер для регистрации
|
|
765
|
-
*/
|
|
766
|
-
register(container) {
|
|
767
|
-
const unitLog = unitLogger(container, token.description);
|
|
768
|
-
const factory = (0, import_ioc6.inject)(requireTokens, (...args) => {
|
|
769
|
-
unitLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 view-model");
|
|
770
|
-
return create(args);
|
|
771
|
-
});
|
|
772
|
-
container.bind(token).toFactory(factory, { lifecycle: import_ioc6.Lifecycle.Singleton });
|
|
773
|
-
unitLog.debug(`\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F view-model (requires=${requireTokens.length})`);
|
|
774
|
-
},
|
|
775
|
-
/**
|
|
776
|
-
* Резолвит VM через стратегию активного host-адаптера.
|
|
777
|
-
* Вызывайте когда контейнер уже инициализирован (в render-контексте).
|
|
778
|
-
*
|
|
779
|
-
* Дескриптор не знает, откуда берётся инстанс — стратегию ставит адаптер
|
|
780
|
-
* через `installResolver()` (см. `@foxford/den/adapter`):
|
|
781
|
-
* - Vike (дефолт) — async/global: подъём по parent-chain, pending Promise при промахе;
|
|
782
|
-
* - Next — sync/island: контейнер острова из React-контекста.
|
|
783
|
-
*
|
|
784
|
-
* @returns Экземпляр VM или Promise с экземпляром
|
|
785
|
-
*/
|
|
786
|
-
resolve() {
|
|
787
|
-
return resolveDefinition(token);
|
|
788
|
-
},
|
|
789
|
-
token,
|
|
790
|
-
/**
|
|
791
|
-
* Псевдоним для resolve(). Резолвит VM через стратегию активного адаптера.
|
|
792
|
-
* @returns Экземпляр VM или Promise с экземпляром
|
|
793
|
-
*/
|
|
794
|
-
use() {
|
|
795
|
-
return this.resolve();
|
|
796
|
-
}
|
|
797
|
-
};
|
|
798
|
-
}
|
|
799
|
-
|
|
800
565
|
// src/define-guard.ts
|
|
801
|
-
|
|
566
|
+
|
|
802
567
|
function defineGuard(token, options) {
|
|
803
568
|
const { requires, create, check } = options;
|
|
804
569
|
const requireTokens = requires != null ? requires : [];
|
|
@@ -813,8 +578,8 @@ function defineGuard(token, options) {
|
|
|
813
578
|
*/
|
|
814
579
|
register(container) {
|
|
815
580
|
if (create) {
|
|
816
|
-
const factory = (0,
|
|
817
|
-
container.bind(token).toFactory(factory, { lifecycle:
|
|
581
|
+
const factory = _ioc.inject.call(void 0, requireTokens, (...args) => create(args));
|
|
582
|
+
container.bind(token).toFactory(factory, { lifecycle: _ioc.Lifecycle.Singleton });
|
|
818
583
|
} else if (check) {
|
|
819
584
|
const guard = { check };
|
|
820
585
|
container.bind(token).toValue(guard);
|
|
@@ -824,34 +589,8 @@ function defineGuard(token, options) {
|
|
|
824
589
|
};
|
|
825
590
|
}
|
|
826
591
|
|
|
827
|
-
// src/define-
|
|
828
|
-
|
|
829
|
-
function defineRepository(token, options) {
|
|
830
|
-
const { requires, create, scope } = options;
|
|
831
|
-
const requireTokens = requires != null ? requires : [];
|
|
832
|
-
return {
|
|
833
|
-
__meta: { requires: requireTokens, scope: scope != null ? scope : "app" },
|
|
834
|
-
__type: "repository",
|
|
835
|
-
/**
|
|
836
|
-
* Регистрирует репозиторий в IoC-контейнере как Singleton.
|
|
837
|
-
* Зависимости из requires резолвятся автоматически через inject.
|
|
838
|
-
* @param container - Контейнер для регистрации
|
|
839
|
-
*/
|
|
840
|
-
register(container) {
|
|
841
|
-
const unitLog = unitLogger(container, token.description);
|
|
842
|
-
const factory = (0, import_ioc8.inject)(requireTokens, (...args) => {
|
|
843
|
-
unitLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u044F");
|
|
844
|
-
return create(args);
|
|
845
|
-
});
|
|
846
|
-
container.bind(token).toFactory(factory, { lifecycle: import_ioc8.Lifecycle.Singleton });
|
|
847
|
-
unitLog.debug(`\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u044F (scope=${scope != null ? scope : "app"}, requires=${requireTokens.length})`);
|
|
848
|
-
},
|
|
849
|
-
token
|
|
850
|
-
};
|
|
851
|
-
}
|
|
852
|
-
|
|
853
|
-
// src/define-app.ts
|
|
854
|
-
function defineApp(token, options = {}) {
|
|
592
|
+
// src/define-host.ts
|
|
593
|
+
function defineHost(token, options = {}) {
|
|
855
594
|
var _a, _b, _c;
|
|
856
595
|
const eager = (_a = options.eager) != null ? _a : [];
|
|
857
596
|
const lazy = (_b = options.lazy) != null ? _b : [];
|
|
@@ -859,9 +598,9 @@ function defineApp(token, options = {}) {
|
|
|
859
598
|
const config = { eager, guards, lazy };
|
|
860
599
|
return {
|
|
861
600
|
__meta: { eager, guards, lazy, requires: [] },
|
|
862
|
-
__type: "
|
|
601
|
+
__type: "host",
|
|
863
602
|
/**
|
|
864
|
-
* Регистрирует
|
|
603
|
+
* Регистрирует HostConfig как value в IoC-контейнере.
|
|
865
604
|
* Позволяет runtime получать конфигурацию приложения через контейнер.
|
|
866
605
|
* @param container - Контейнер для регистрации
|
|
867
606
|
*/
|
|
@@ -873,7 +612,7 @@ function defineApp(token, options = {}) {
|
|
|
873
612
|
}
|
|
874
613
|
|
|
875
614
|
// src/define-extension.ts
|
|
876
|
-
|
|
615
|
+
|
|
877
616
|
function defineExtension(token, options = {}) {
|
|
878
617
|
const { requires, activate, deactivate } = options;
|
|
879
618
|
const requireTokens = requires != null ? requires : [];
|
|
@@ -886,7 +625,7 @@ function defineExtension(token, options = {}) {
|
|
|
886
625
|
* @param container - Контейнер для регистрации
|
|
887
626
|
*/
|
|
888
627
|
register(container) {
|
|
889
|
-
const factory = (0,
|
|
628
|
+
const factory = _ioc.inject.call(void 0, requireTokens, (...args) => {
|
|
890
629
|
const config = {
|
|
891
630
|
__extensionConfig: true,
|
|
892
631
|
activate() {
|
|
@@ -898,14 +637,14 @@ function defineExtension(token, options = {}) {
|
|
|
898
637
|
};
|
|
899
638
|
return config;
|
|
900
639
|
});
|
|
901
|
-
container.bind(token).toFactory(factory, { lifecycle:
|
|
640
|
+
container.bind(token).toFactory(factory, { lifecycle: _ioc.Lifecycle.Singleton });
|
|
902
641
|
},
|
|
903
642
|
token
|
|
904
643
|
};
|
|
905
644
|
}
|
|
906
645
|
|
|
907
646
|
// src/define-action-guard.ts
|
|
908
|
-
|
|
647
|
+
|
|
909
648
|
function defineActionGuard(token, options) {
|
|
910
649
|
const { requires, intercept } = options;
|
|
911
650
|
const requireTokens = requires != null ? requires : [];
|
|
@@ -918,7 +657,7 @@ function defineActionGuard(token, options) {
|
|
|
918
657
|
* @param container - Контейнер для регистрации
|
|
919
658
|
*/
|
|
920
659
|
register(container) {
|
|
921
|
-
const factory = (0,
|
|
660
|
+
const factory = _ioc.inject.call(void 0, requireTokens, (...args) => {
|
|
922
661
|
const guard = {
|
|
923
662
|
intercept(next) {
|
|
924
663
|
return intercept(args, next);
|
|
@@ -926,7 +665,7 @@ function defineActionGuard(token, options) {
|
|
|
926
665
|
};
|
|
927
666
|
return guard;
|
|
928
667
|
});
|
|
929
|
-
container.bind(token).toFactory(factory, { lifecycle:
|
|
668
|
+
container.bind(token).toFactory(factory, { lifecycle: _ioc.Lifecycle.Singleton });
|
|
930
669
|
},
|
|
931
670
|
token
|
|
932
671
|
};
|
|
@@ -953,30 +692,6 @@ function defineLayout(token, options = {}) {
|
|
|
953
692
|
};
|
|
954
693
|
}
|
|
955
694
|
|
|
956
|
-
// src/define-slot.ts
|
|
957
|
-
function defineSlot({ name, view, units = [] }) {
|
|
958
|
-
return {
|
|
959
|
-
__type: "slot",
|
|
960
|
-
name,
|
|
961
|
-
register(container) {
|
|
962
|
-
const slotLog = unitLogger(container, `slot:${name}`);
|
|
963
|
-
for (const unit of units) {
|
|
964
|
-
unit.register(container);
|
|
965
|
-
}
|
|
966
|
-
const registry = container.has(SlotRegistryToken) ? container.resolve(SlotRegistryToken) : (() => {
|
|
967
|
-
const created = new SlotRegistry();
|
|
968
|
-
container.bind(SlotRegistryToken).toValue(created);
|
|
969
|
-
slotLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D SlotRegistry \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430");
|
|
970
|
-
return created;
|
|
971
|
-
})();
|
|
972
|
-
registry.add({ name, view });
|
|
973
|
-
slotLog.debug(`\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0441\u043B\u043E\u0442\u0430 (units=${units.length})`);
|
|
974
|
-
},
|
|
975
|
-
units,
|
|
976
|
-
view
|
|
977
|
-
};
|
|
978
|
-
}
|
|
979
|
-
|
|
980
695
|
// src/define-layer.ts
|
|
981
696
|
function defineLayer(token, options) {
|
|
982
697
|
const { name, adapter } = options;
|
|
@@ -984,6 +699,7 @@ function defineLayer(token, options) {
|
|
|
984
699
|
return {
|
|
985
700
|
__meta: { name, requires: [] },
|
|
986
701
|
__type: "layer",
|
|
702
|
+
config,
|
|
987
703
|
/**
|
|
988
704
|
* Регистрирует LayerConfig как value в IoC-контейнере.
|
|
989
705
|
* Runtime использует конфиг для инициализации view-адаптера.
|
|
@@ -995,33 +711,33 @@ function defineLayer(token, options) {
|
|
|
995
711
|
token
|
|
996
712
|
};
|
|
997
713
|
}
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
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;
|