@foxford/den 1.0.1 → 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/index.js CHANGED
@@ -1,34 +1,21 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
-
22
- // src/core/types.ts
23
- import { createToken } from "@foxford/ioc";
24
- var ContainerManagerToken = createToken("core:ContainerManager");
25
- var GuardRunnerToken = createToken("core:GuardRunner");
26
- var NavigationManagerToken = createToken("core:NavigationManager");
27
- var StateSerializerToken = createToken("core:StateSerializer");
28
- var StateRegistryToken = createToken("core:StateRegistry");
29
- var SlotRegistryToken = createToken("core:SlotRegistry");
30
- var ActivatableToken = createToken("core:Activatable");
31
- var RequestContextToken = createToken("core:RequestContext");
1
+ import {
2
+ ActivatableToken,
3
+ ContainerManagerToken,
4
+ GuardRunnerToken,
5
+ NavigationManagerToken,
6
+ RequestContextToken,
7
+ SlotRegistry,
8
+ SlotRegistryToken,
9
+ StateRegistryToken,
10
+ StateSerializerToken,
11
+ defineRepository,
12
+ defineService,
13
+ defineSlot,
14
+ defineViewModel
15
+ } from "./chunk-S5KTWI6P.js";
16
+ import {
17
+ __async
18
+ } from "./chunk-E7HG2NXO.js";
32
19
 
33
20
  // src/core/state-registry.ts
34
21
  var StateRegistry = class {
@@ -482,34 +469,6 @@ var StateSerializerImpl = class {
482
469
  }
483
470
  };
484
471
 
485
- // src/core/slot-registry.ts
486
- var SlotRegistry = class {
487
- constructor() {
488
- /** Слоты по имени. Повторная регистрация с тем же именем перезаписывает. */
489
- this.slots = /* @__PURE__ */ new Map();
490
- }
491
- /**
492
- * Регистрирует слот.
493
- * @param entry - Запись слота (имя + непрозрачный view)
494
- */
495
- add(entry) {
496
- this.slots.set(entry.name, entry);
497
- }
498
- /**
499
- * Возвращает слот по имени.
500
- * @param name - Имя слота
501
- */
502
- get(name) {
503
- return this.slots.get(name);
504
- }
505
- /**
506
- * Возвращает все зарегистрированные слоты.
507
- */
508
- all() {
509
- return [...this.slots.values()];
510
- }
511
- };
512
-
513
472
  // src/core/state-cache.ts
514
473
  var StateCache = class {
515
474
  /**
@@ -598,156 +557,8 @@ var defaultGlobalResolver = (token) => {
598
557
  });
599
558
  };
600
559
 
601
- // src/define-service.ts
602
- import { inject, Lifecycle } from "@foxford/ioc";
603
-
604
- // src/logger.ts
605
- import { createToken as createToken2 } from "@foxford/ioc";
606
- import { log } from "@foxford/logger";
607
- var logger = log.getLogger("@foxford/den");
608
- var LoggerToken = createToken2("den:Logger");
609
- function scopeLogger(container) {
610
- if (container.has(LoggerToken)) {
611
- const resolved = container.resolve(LoggerToken);
612
- if (!(resolved instanceof Promise)) {
613
- return resolved;
614
- }
615
- }
616
- return logger;
617
- }
618
- function unitLogger(container, name) {
619
- var _a;
620
- const base = scopeLogger(container);
621
- return (_a = base.getLogger(name)) != null ? _a : base;
622
- }
623
-
624
- // src/define-service.ts
625
- function defineService(token, options) {
626
- const { requires, create, activate, deactivate, serialize, deserialize, scope } = options;
627
- const requireTokens = requires != null ? requires : [];
628
- const participatesInState = serialize !== void 0 || deserialize !== void 0;
629
- return {
630
- __meta: { requires: requireTokens, scope: scope != null ? scope : "app" },
631
- __type: "service",
632
- /**
633
- * Регистрирует сервис в IoC-контейнере как Singleton.
634
- * Если передана create — биндит экземпляр класса напрямую.
635
- * Иначе — биндит Activatable-обёртку с хуками lifecycle.
636
- * Если объявлены serialize/deserialize — при создании экземпляра сервис
637
- * регистрируется участником в StateRegistry этого контейнера.
638
- * @param container - Контейнер для регистрации
639
- */
640
- register(container) {
641
- const unitLog = unitLogger(container, token.description);
642
- const factory = inject(requireTokens, (...args) => {
643
- 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"})`);
644
- let instance;
645
- if (create) {
646
- instance = create(args);
647
- } else {
648
- const service = {
649
- activate(params) {
650
- return activate == null ? void 0 : activate(args, params);
651
- },
652
- deactivate() {
653
- return deactivate == null ? void 0 : deactivate(args);
654
- }
655
- };
656
- instance = service;
657
- }
658
- if (participatesInState) {
659
- 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)");
660
- registerStateParticipant(container, token, instance, args, serialize, deserialize);
661
- }
662
- return instance;
663
- });
664
- container.bind(token).toFactory(factory, { lifecycle: Lifecycle.Singleton });
665
- 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})`);
666
- },
667
- token
668
- };
669
- }
670
- function registerStateParticipant(container, token, instance, deps, serialize, deserialize) {
671
- if (!container.has(StateRegistryToken)) {
672
- return;
673
- }
674
- const resolved = container.resolve(StateRegistryToken);
675
- if (resolved instanceof Promise) {
676
- return;
677
- }
678
- ;
679
- resolved.add(token.description, {
680
- activate: (params) => {
681
- var _a;
682
- return (_a = instance.activate) == null ? void 0 : _a.call(instance, params);
683
- },
684
- fromJSON: deserialize ? (data) => deserialize(deps, data) : void 0,
685
- toJSON: serialize ? () => serialize(deps) : void 0
686
- });
687
- }
688
-
689
- // src/define-view-model.ts
690
- import { inject as inject2, Lifecycle as Lifecycle2 } from "@foxford/ioc";
691
-
692
- // src/adapter.ts
693
- var activeResolver = null;
694
- function resolveDefinition(token) {
695
- if (activeResolver === null) {
696
- throw new Error(
697
- `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()`
698
- );
699
- }
700
- return activeResolver(token);
701
- }
702
-
703
- // src/define-view-model.ts
704
- function defineViewModel(token, options) {
705
- const { requires, create } = options;
706
- const requireTokens = requires != null ? requires : [];
707
- return {
708
- __meta: { requires: requireTokens },
709
- __type: "view-model",
710
- /**
711
- * Регистрирует VM в IoC-контейнере как Singleton.
712
- * Зависимости из requires резолвятся автоматически через inject.
713
- * @param container - Контейнер для регистрации
714
- */
715
- register(container) {
716
- const unitLog = unitLogger(container, token.description);
717
- const factory = inject2(requireTokens, (...args) => {
718
- unitLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 view-model");
719
- return create(args);
720
- });
721
- container.bind(token).toFactory(factory, { lifecycle: Lifecycle2.Singleton });
722
- unitLog.debug(`\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F view-model (requires=${requireTokens.length})`);
723
- },
724
- /**
725
- * Резолвит VM через стратегию активного host-адаптера.
726
- * Вызывайте когда контейнер уже инициализирован (в render-контексте).
727
- *
728
- * Дескриптор не знает, откуда берётся инстанс — стратегию ставит адаптер
729
- * через `installResolver()` (см. `@foxford/den/adapter`):
730
- * - Vike (дефолт) — async/global: подъём по parent-chain, pending Promise при промахе;
731
- * - Next — sync/island: контейнер острова из React-контекста.
732
- *
733
- * @returns Экземпляр VM или Promise с экземпляром
734
- */
735
- resolve() {
736
- return resolveDefinition(token);
737
- },
738
- token,
739
- /**
740
- * Псевдоним для resolve(). Резолвит VM через стратегию активного адаптера.
741
- * @returns Экземпляр VM или Promise с экземпляром
742
- */
743
- use() {
744
- return this.resolve();
745
- }
746
- };
747
- }
748
-
749
560
  // src/define-guard.ts
750
- import { inject as inject3, Lifecycle as Lifecycle3 } from "@foxford/ioc";
561
+ import { inject, Lifecycle } from "@foxford/ioc";
751
562
  function defineGuard(token, options) {
752
563
  const { requires, create, check } = options;
753
564
  const requireTokens = requires != null ? requires : [];
@@ -762,8 +573,8 @@ function defineGuard(token, options) {
762
573
  */
763
574
  register(container) {
764
575
  if (create) {
765
- const factory = inject3(requireTokens, (...args) => create(args));
766
- container.bind(token).toFactory(factory, { lifecycle: Lifecycle3.Singleton });
576
+ const factory = inject(requireTokens, (...args) => create(args));
577
+ container.bind(token).toFactory(factory, { lifecycle: Lifecycle.Singleton });
767
578
  } else if (check) {
768
579
  const guard = { check };
769
580
  container.bind(token).toValue(guard);
@@ -773,32 +584,6 @@ function defineGuard(token, options) {
773
584
  };
774
585
  }
775
586
 
776
- // src/define-repository.ts
777
- import { inject as inject4, Lifecycle as Lifecycle4 } from "@foxford/ioc";
778
- function defineRepository(token, options) {
779
- const { requires, create, scope } = options;
780
- const requireTokens = requires != null ? requires : [];
781
- return {
782
- __meta: { requires: requireTokens, scope: scope != null ? scope : "app" },
783
- __type: "repository",
784
- /**
785
- * Регистрирует репозиторий в IoC-контейнере как Singleton.
786
- * Зависимости из requires резолвятся автоматически через inject.
787
- * @param container - Контейнер для регистрации
788
- */
789
- register(container) {
790
- const unitLog = unitLogger(container, token.description);
791
- const factory = inject4(requireTokens, (...args) => {
792
- unitLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u044F");
793
- return create(args);
794
- });
795
- container.bind(token).toFactory(factory, { lifecycle: Lifecycle4.Singleton });
796
- 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})`);
797
- },
798
- token
799
- };
800
- }
801
-
802
587
  // src/define-app.ts
803
588
  function defineApp(token, options = {}) {
804
589
  var _a, _b, _c;
@@ -822,7 +607,7 @@ function defineApp(token, options = {}) {
822
607
  }
823
608
 
824
609
  // src/define-extension.ts
825
- import { inject as inject5, Lifecycle as Lifecycle5 } from "@foxford/ioc";
610
+ import { inject as inject2, Lifecycle as Lifecycle2 } from "@foxford/ioc";
826
611
  function defineExtension(token, options = {}) {
827
612
  const { requires, activate, deactivate } = options;
828
613
  const requireTokens = requires != null ? requires : [];
@@ -835,7 +620,7 @@ function defineExtension(token, options = {}) {
835
620
  * @param container - Контейнер для регистрации
836
621
  */
837
622
  register(container) {
838
- const factory = inject5(requireTokens, (...args) => {
623
+ const factory = inject2(requireTokens, (...args) => {
839
624
  const config = {
840
625
  __extensionConfig: true,
841
626
  activate() {
@@ -847,14 +632,14 @@ function defineExtension(token, options = {}) {
847
632
  };
848
633
  return config;
849
634
  });
850
- container.bind(token).toFactory(factory, { lifecycle: Lifecycle5.Singleton });
635
+ container.bind(token).toFactory(factory, { lifecycle: Lifecycle2.Singleton });
851
636
  },
852
637
  token
853
638
  };
854
639
  }
855
640
 
856
641
  // src/define-action-guard.ts
857
- import { inject as inject6, Lifecycle as Lifecycle6 } from "@foxford/ioc";
642
+ import { inject as inject3, Lifecycle as Lifecycle3 } from "@foxford/ioc";
858
643
  function defineActionGuard(token, options) {
859
644
  const { requires, intercept } = options;
860
645
  const requireTokens = requires != null ? requires : [];
@@ -867,7 +652,7 @@ function defineActionGuard(token, options) {
867
652
  * @param container - Контейнер для регистрации
868
653
  */
869
654
  register(container) {
870
- const factory = inject6(requireTokens, (...args) => {
655
+ const factory = inject3(requireTokens, (...args) => {
871
656
  const guard = {
872
657
  intercept(next) {
873
658
  return intercept(args, next);
@@ -875,7 +660,7 @@ function defineActionGuard(token, options) {
875
660
  };
876
661
  return guard;
877
662
  });
878
- container.bind(token).toFactory(factory, { lifecycle: Lifecycle6.Singleton });
663
+ container.bind(token).toFactory(factory, { lifecycle: Lifecycle3.Singleton });
879
664
  },
880
665
  token
881
666
  };
@@ -902,30 +687,6 @@ function defineLayout(token, options = {}) {
902
687
  };
903
688
  }
904
689
 
905
- // src/define-slot.ts
906
- function defineSlot({ name, view, units = [] }) {
907
- return {
908
- __type: "slot",
909
- name,
910
- register(container) {
911
- const slotLog = unitLogger(container, `slot:${name}`);
912
- for (const unit of units) {
913
- unit.register(container);
914
- }
915
- const registry = container.has(SlotRegistryToken) ? container.resolve(SlotRegistryToken) : (() => {
916
- const created = new SlotRegistry();
917
- container.bind(SlotRegistryToken).toValue(created);
918
- slotLog.debug("\u0441\u043E\u0437\u0434\u0430\u043D SlotRegistry \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430");
919
- return created;
920
- })();
921
- registry.add({ name, view });
922
- slotLog.debug(`\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F \u0441\u043B\u043E\u0442\u0430 (units=${units.length})`);
923
- },
924
- units,
925
- view
926
- };
927
- }
928
-
929
690
  // src/define-layer.ts
930
691
  function defineLayer(token, options) {
931
692
  const { name, adapter } = options;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foxford/den",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Den — декларативный метафреймворк Foxford (core runtime)",
5
5
  "keywords": [
6
6
  "foxford",
@@ -21,7 +21,7 @@
21
21
  "type": "module",
22
22
  "dependencies": {
23
23
  "@foxford/ioc": "^1.1.2",
24
- "@foxford/logger": "^1.2.1"
24
+ "@foxford/logger": "^1.2.2"
25
25
  },
26
26
  "main": "./index.cjs",
27
27
  "module": "./index.js",
@@ -48,6 +48,10 @@
48
48
  "adapter.d.cts",
49
49
  "adapter.d.ts",
50
50
  "adapter.js",
51
+ "chunk-4FPCRHSM.cjs",
52
+ "chunk-E7HG2NXO.js",
53
+ "chunk-NRE6DV6O.cjs",
54
+ "chunk-S5KTWI6P.js",
51
55
  "define-slot--HM6B232.d.ts",
52
56
  "define-slot-es1K6_-L.d.cts",
53
57
  "define.cjs",
@@ -62,6 +66,6 @@
62
66
  "types-B4Arep3V.d.cts",
63
67
  "types-B4Arep3V.d.ts"
64
68
  ],
65
- "sha": "7dcd2f4",
69
+ "sha": "c4ff474",
66
70
  "scripts": {}
67
71
  }