@foxford/den 1.0.0 → 1.0.2
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 +7 -42
- package/adapter.js +8 -0
- package/chunk-4FPCRHSM.cjs +244 -0
- package/{adapter.mjs → chunk-E7HG2NXO.js} +23 -0
- package/chunk-NRE6DV6O.cjs +40 -0
- package/{define.mjs → chunk-S5KTWI6P.js} +74 -77
- package/define.cjs +12 -271
- package/define.js +23 -0
- package/index.cjs +76 -367
- package/{index.mjs → index.js} +27 -266
- package/package.json +15 -11
package/index.cjs
CHANGED
|
@@ -1,85 +1,21 @@
|
|
|
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
|
-
// src/index.ts
|
|
41
|
-
var src_exports = {};
|
|
42
|
-
__export(src_exports, {
|
|
43
|
-
ActivatableToken: () => ActivatableToken,
|
|
44
|
-
ContainerManagerImpl: () => ContainerManagerImpl,
|
|
45
|
-
ContainerManagerToken: () => ContainerManagerToken,
|
|
46
|
-
GuardRunnerImpl: () => GuardRunnerImpl,
|
|
47
|
-
GuardRunnerToken: () => GuardRunnerToken,
|
|
48
|
-
NavigationManagerImpl: () => NavigationManagerImpl,
|
|
49
|
-
NavigationManagerToken: () => NavigationManagerToken,
|
|
50
|
-
RequestContextToken: () => RequestContextToken,
|
|
51
|
-
SlotRegistry: () => SlotRegistry,
|
|
52
|
-
SlotRegistryToken: () => SlotRegistryToken,
|
|
53
|
-
StateCache: () => StateCache,
|
|
54
|
-
StateRegistry: () => StateRegistry,
|
|
55
|
-
StateRegistryToken: () => StateRegistryToken,
|
|
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
8
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
var
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
var
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunk4FPCRHSMcjs = require('./chunk-4FPCRHSM.cjs');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _chunkNRE6DV6Ocjs = require('./chunk-NRE6DV6O.cjs');
|
|
83
19
|
|
|
84
20
|
// src/core/state-registry.ts
|
|
85
21
|
var StateRegistry = class {
|
|
@@ -142,7 +78,7 @@ var ContainerManagerImpl = class {
|
|
|
142
78
|
return existing;
|
|
143
79
|
}
|
|
144
80
|
const child = this.appContainer.createChild();
|
|
145
|
-
child.bind(StateRegistryToken).toValue(new StateRegistry());
|
|
81
|
+
child.bind(_chunk4FPCRHSMcjs.StateRegistryToken).toValue(new StateRegistry());
|
|
146
82
|
this.pageContainers.set(routeId, child);
|
|
147
83
|
return child;
|
|
148
84
|
}
|
|
@@ -152,7 +88,7 @@ var ContainerManagerImpl = class {
|
|
|
152
88
|
* @param routeId - Идентификатор маршрута
|
|
153
89
|
*/
|
|
154
90
|
destroyPageContainer(routeId) {
|
|
155
|
-
return __async(this, null, function* () {
|
|
91
|
+
return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
|
|
156
92
|
const container = this.pageContainers.get(routeId);
|
|
157
93
|
if (container === void 0) {
|
|
158
94
|
return;
|
|
@@ -173,8 +109,8 @@ var ContainerManagerImpl = class {
|
|
|
173
109
|
return existing;
|
|
174
110
|
}
|
|
175
111
|
const child = this.appContainer.createChild();
|
|
176
|
-
child.bind(RequestContextToken).toValue(context);
|
|
177
|
-
child.bind(StateRegistryToken).toValue(new StateRegistry());
|
|
112
|
+
child.bind(_chunk4FPCRHSMcjs.RequestContextToken).toValue(context);
|
|
113
|
+
child.bind(_chunk4FPCRHSMcjs.StateRegistryToken).toValue(new StateRegistry());
|
|
178
114
|
this.requestContainers.set(requestId, child);
|
|
179
115
|
return child;
|
|
180
116
|
}
|
|
@@ -191,7 +127,7 @@ var ContainerManagerImpl = class {
|
|
|
191
127
|
* @param requestId - Уникальный идентификатор запроса
|
|
192
128
|
*/
|
|
193
129
|
destroyRequestContainer(requestId) {
|
|
194
|
-
return __async(this, null, function* () {
|
|
130
|
+
return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
|
|
195
131
|
const container = this.requestContainers.get(requestId);
|
|
196
132
|
if (container === void 0) {
|
|
197
133
|
return;
|
|
@@ -213,7 +149,7 @@ var ContainerManagerImpl = class {
|
|
|
213
149
|
return existing;
|
|
214
150
|
}
|
|
215
151
|
const child = parent.createChild();
|
|
216
|
-
child.bind(StateRegistryToken).toValue(new StateRegistry());
|
|
152
|
+
child.bind(_chunk4FPCRHSMcjs.StateRegistryToken).toValue(new StateRegistry());
|
|
217
153
|
this.ssrPageContainers.set(requestId, child);
|
|
218
154
|
return child;
|
|
219
155
|
}
|
|
@@ -224,7 +160,7 @@ var ContainerManagerImpl = class {
|
|
|
224
160
|
* @param requestId - Уникальный идентификатор запроса
|
|
225
161
|
*/
|
|
226
162
|
destroySsrPageContainer(requestId) {
|
|
227
|
-
return __async(this, null, function* () {
|
|
163
|
+
return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
|
|
228
164
|
const container = this.ssrPageContainers.get(requestId);
|
|
229
165
|
if (container === void 0) {
|
|
230
166
|
return;
|
|
@@ -252,10 +188,10 @@ var GuardRunnerImpl = class {
|
|
|
252
188
|
* @param container - Опциональный контейнер для резолвинга guards
|
|
253
189
|
*/
|
|
254
190
|
runGuards(tokens, params, container) {
|
|
255
|
-
return __async(this, null, function* () {
|
|
191
|
+
return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
|
|
256
192
|
const resolveFrom = container != null ? container : this.container;
|
|
257
193
|
const results = yield Promise.all(
|
|
258
|
-
tokens.map((token) => __async(this, null, function* () {
|
|
194
|
+
tokens.map((token) => _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
|
|
259
195
|
const guard = yield resolveFrom.resolve(token);
|
|
260
196
|
return guard.check(params);
|
|
261
197
|
}))
|
|
@@ -344,7 +280,7 @@ var NavigationManagerImpl = class {
|
|
|
344
280
|
* Состояние считается актуальным если история и текущий элемент согласованы.
|
|
345
281
|
*/
|
|
346
282
|
checkFreshness() {
|
|
347
|
-
return __async(this, null, function* () {
|
|
283
|
+
return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
|
|
348
284
|
var _a;
|
|
349
285
|
const lastEntry = (_a = this._history.at(-1)) != null ? _a : null;
|
|
350
286
|
return lastEntry === this.current;
|
|
@@ -374,7 +310,7 @@ var NavigationManagerImpl = class {
|
|
|
374
310
|
* @returns Результат проверки
|
|
375
311
|
*/
|
|
376
312
|
runLeaveGuards(from, to) {
|
|
377
|
-
return __async(this, null, function* () {
|
|
313
|
+
return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
|
|
378
314
|
for (const interceptor of this.interceptors) {
|
|
379
315
|
const result = yield interceptor.beforeNavigate(from, to);
|
|
380
316
|
if (!result.allow) {
|
|
@@ -473,10 +409,10 @@ var StateSerializerImpl = class {
|
|
|
473
409
|
*/
|
|
474
410
|
// eslint-disable-next-line @typescript-eslint/class-methods-use-this
|
|
475
411
|
getRegistry(container) {
|
|
476
|
-
if (!container.has(StateRegistryToken)) {
|
|
412
|
+
if (!container.has(_chunk4FPCRHSMcjs.StateRegistryToken)) {
|
|
477
413
|
return void 0;
|
|
478
414
|
}
|
|
479
|
-
const resolved = container.resolve(StateRegistryToken);
|
|
415
|
+
const resolved = container.resolve(_chunk4FPCRHSMcjs.StateRegistryToken);
|
|
480
416
|
return resolved instanceof Promise ? void 0 : resolved;
|
|
481
417
|
}
|
|
482
418
|
/**
|
|
@@ -520,7 +456,7 @@ var StateSerializerImpl = class {
|
|
|
520
456
|
* @param params - Параметры маршрута
|
|
521
457
|
*/
|
|
522
458
|
activateAll(container, params) {
|
|
523
|
-
return __async(this, null, function* () {
|
|
459
|
+
return _chunkNRE6DV6Ocjs.__async.call(void 0, this, null, function* () {
|
|
524
460
|
const registry = this.getRegistry(container);
|
|
525
461
|
if (registry === void 0) {
|
|
526
462
|
return;
|
|
@@ -533,34 +469,6 @@ var StateSerializerImpl = class {
|
|
|
533
469
|
}
|
|
534
470
|
};
|
|
535
471
|
|
|
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
472
|
// src/core/state-cache.ts
|
|
565
473
|
var StateCache = class {
|
|
566
474
|
/**
|
|
@@ -609,19 +517,19 @@ var StateCache = class {
|
|
|
609
517
|
};
|
|
610
518
|
|
|
611
519
|
// src/core/create-core.ts
|
|
612
|
-
var
|
|
520
|
+
var _ioc = require('@foxford/ioc');
|
|
613
521
|
function createCore(options = {}) {
|
|
614
522
|
var _a;
|
|
615
|
-
const container = (_a = options.container) != null ? _a : new
|
|
523
|
+
const container = (_a = options.container) != null ? _a : new (0, _ioc.Container)();
|
|
616
524
|
const containerManager = new ContainerManagerImpl(container);
|
|
617
525
|
const guardRunner = new GuardRunnerImpl(container);
|
|
618
526
|
const navigationManager = new NavigationManagerImpl();
|
|
619
527
|
const stateSerializer = new StateSerializerImpl();
|
|
620
528
|
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);
|
|
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);
|
|
625
533
|
return {
|
|
626
534
|
container,
|
|
627
535
|
containerManager,
|
|
@@ -633,10 +541,10 @@ function createCore(options = {}) {
|
|
|
633
541
|
}
|
|
634
542
|
|
|
635
543
|
// src/core/default-resolver.ts
|
|
636
|
-
|
|
544
|
+
|
|
637
545
|
var defaultGlobalResolver = (token) => {
|
|
638
546
|
var _a;
|
|
639
|
-
let container = (0,
|
|
547
|
+
let container = _ioc.getGlobalContainer.call(void 0, );
|
|
640
548
|
while (container) {
|
|
641
549
|
if (container.has(token)) {
|
|
642
550
|
return container.resolve(token);
|
|
@@ -649,156 +557,8 @@ var defaultGlobalResolver = (token) => {
|
|
|
649
557
|
});
|
|
650
558
|
};
|
|
651
559
|
|
|
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
560
|
// src/define-guard.ts
|
|
801
|
-
|
|
561
|
+
|
|
802
562
|
function defineGuard(token, options) {
|
|
803
563
|
const { requires, create, check } = options;
|
|
804
564
|
const requireTokens = requires != null ? requires : [];
|
|
@@ -813,8 +573,8 @@ function defineGuard(token, options) {
|
|
|
813
573
|
*/
|
|
814
574
|
register(container) {
|
|
815
575
|
if (create) {
|
|
816
|
-
const factory = (0,
|
|
817
|
-
container.bind(token).toFactory(factory, { lifecycle:
|
|
576
|
+
const factory = _ioc.inject.call(void 0, requireTokens, (...args) => create(args));
|
|
577
|
+
container.bind(token).toFactory(factory, { lifecycle: _ioc.Lifecycle.Singleton });
|
|
818
578
|
} else if (check) {
|
|
819
579
|
const guard = { check };
|
|
820
580
|
container.bind(token).toValue(guard);
|
|
@@ -824,32 +584,6 @@ function defineGuard(token, options) {
|
|
|
824
584
|
};
|
|
825
585
|
}
|
|
826
586
|
|
|
827
|
-
// src/define-repository.ts
|
|
828
|
-
var import_ioc8 = require("@foxford/ioc");
|
|
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
587
|
// src/define-app.ts
|
|
854
588
|
function defineApp(token, options = {}) {
|
|
855
589
|
var _a, _b, _c;
|
|
@@ -873,7 +607,7 @@ function defineApp(token, options = {}) {
|
|
|
873
607
|
}
|
|
874
608
|
|
|
875
609
|
// src/define-extension.ts
|
|
876
|
-
|
|
610
|
+
|
|
877
611
|
function defineExtension(token, options = {}) {
|
|
878
612
|
const { requires, activate, deactivate } = options;
|
|
879
613
|
const requireTokens = requires != null ? requires : [];
|
|
@@ -886,7 +620,7 @@ function defineExtension(token, options = {}) {
|
|
|
886
620
|
* @param container - Контейнер для регистрации
|
|
887
621
|
*/
|
|
888
622
|
register(container) {
|
|
889
|
-
const factory = (0,
|
|
623
|
+
const factory = _ioc.inject.call(void 0, requireTokens, (...args) => {
|
|
890
624
|
const config = {
|
|
891
625
|
__extensionConfig: true,
|
|
892
626
|
activate() {
|
|
@@ -898,14 +632,14 @@ function defineExtension(token, options = {}) {
|
|
|
898
632
|
};
|
|
899
633
|
return config;
|
|
900
634
|
});
|
|
901
|
-
container.bind(token).toFactory(factory, { lifecycle:
|
|
635
|
+
container.bind(token).toFactory(factory, { lifecycle: _ioc.Lifecycle.Singleton });
|
|
902
636
|
},
|
|
903
637
|
token
|
|
904
638
|
};
|
|
905
639
|
}
|
|
906
640
|
|
|
907
641
|
// src/define-action-guard.ts
|
|
908
|
-
|
|
642
|
+
|
|
909
643
|
function defineActionGuard(token, options) {
|
|
910
644
|
const { requires, intercept } = options;
|
|
911
645
|
const requireTokens = requires != null ? requires : [];
|
|
@@ -918,7 +652,7 @@ function defineActionGuard(token, options) {
|
|
|
918
652
|
* @param container - Контейнер для регистрации
|
|
919
653
|
*/
|
|
920
654
|
register(container) {
|
|
921
|
-
const factory = (0,
|
|
655
|
+
const factory = _ioc.inject.call(void 0, requireTokens, (...args) => {
|
|
922
656
|
const guard = {
|
|
923
657
|
intercept(next) {
|
|
924
658
|
return intercept(args, next);
|
|
@@ -926,7 +660,7 @@ function defineActionGuard(token, options) {
|
|
|
926
660
|
};
|
|
927
661
|
return guard;
|
|
928
662
|
});
|
|
929
|
-
container.bind(token).toFactory(factory, { lifecycle:
|
|
663
|
+
container.bind(token).toFactory(factory, { lifecycle: _ioc.Lifecycle.Singleton });
|
|
930
664
|
},
|
|
931
665
|
token
|
|
932
666
|
};
|
|
@@ -953,30 +687,6 @@ function defineLayout(token, options = {}) {
|
|
|
953
687
|
};
|
|
954
688
|
}
|
|
955
689
|
|
|
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
690
|
// src/define-layer.ts
|
|
981
691
|
function defineLayer(token, options) {
|
|
982
692
|
const { name, adapter } = options;
|
|
@@ -995,33 +705,32 @@ function defineLayer(token, options) {
|
|
|
995
705
|
token
|
|
996
706
|
};
|
|
997
707
|
}
|
|
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
|
-
});
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
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;
|