@venizia/ignis-boot 0.0.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.
Files changed (122) hide show
  1. package/LICENSE.md +75 -0
  2. package/dist/cjs/base/base-artifact-booter.d.ts +18 -0
  3. package/dist/cjs/base/base-artifact-booter.d.ts.map +1 -0
  4. package/dist/cjs/base/base-artifact-booter.js +89 -0
  5. package/dist/cjs/base/base-artifact-booter.js.map +1 -0
  6. package/dist/cjs/base/index.d.ts +2 -0
  7. package/dist/cjs/base/index.d.ts.map +1 -0
  8. package/dist/cjs/base/index.js +18 -0
  9. package/dist/cjs/base/index.js.map +1 -0
  10. package/dist/cjs/boot.mixin.d.ts +54 -0
  11. package/dist/cjs/boot.mixin.d.ts.map +1 -0
  12. package/dist/cjs/boot.mixin.js +25 -0
  13. package/dist/cjs/boot.mixin.js.map +1 -0
  14. package/dist/cjs/booters/controller.booter.d.ts +10 -0
  15. package/dist/cjs/booters/controller.booter.d.ts.map +1 -0
  16. package/dist/cjs/booters/controller.booter.js +48 -0
  17. package/dist/cjs/booters/controller.booter.js.map +1 -0
  18. package/dist/cjs/booters/datasource.booter.d.ts +10 -0
  19. package/dist/cjs/booters/datasource.booter.d.ts.map +1 -0
  20. package/dist/cjs/booters/datasource.booter.js +48 -0
  21. package/dist/cjs/booters/datasource.booter.js.map +1 -0
  22. package/dist/cjs/booters/index.d.ts +5 -0
  23. package/dist/cjs/booters/index.d.ts.map +1 -0
  24. package/dist/cjs/booters/index.js +21 -0
  25. package/dist/cjs/booters/index.js.map +1 -0
  26. package/dist/cjs/booters/repository.booter.d.ts +10 -0
  27. package/dist/cjs/booters/repository.booter.d.ts.map +1 -0
  28. package/dist/cjs/booters/repository.booter.js +48 -0
  29. package/dist/cjs/booters/repository.booter.js.map +1 -0
  30. package/dist/cjs/booters/service.booter.d.ts +10 -0
  31. package/dist/cjs/booters/service.booter.d.ts.map +1 -0
  32. package/dist/cjs/booters/service.booter.js +48 -0
  33. package/dist/cjs/booters/service.booter.js.map +1 -0
  34. package/dist/cjs/bootstrapper.d.ts +22 -0
  35. package/dist/cjs/bootstrapper.d.ts.map +1 -0
  36. package/dist/cjs/bootstrapper.js +98 -0
  37. package/dist/cjs/bootstrapper.js.map +1 -0
  38. package/dist/cjs/common/constants.d.ts +6 -0
  39. package/dist/cjs/common/constants.d.ts.map +1 -0
  40. package/dist/cjs/common/constants.js +10 -0
  41. package/dist/cjs/common/constants.js.map +1 -0
  42. package/dist/cjs/common/index.d.ts +3 -0
  43. package/dist/cjs/common/index.d.ts.map +1 -0
  44. package/dist/cjs/common/index.js +19 -0
  45. package/dist/cjs/common/index.js.map +1 -0
  46. package/dist/cjs/common/types.d.ts +52 -0
  47. package/dist/cjs/common/types.d.ts.map +1 -0
  48. package/dist/cjs/common/types.js +5 -0
  49. package/dist/cjs/common/types.js.map +1 -0
  50. package/dist/cjs/index.d.ts +7 -0
  51. package/dist/cjs/index.d.ts.map +1 -0
  52. package/dist/cjs/index.js +23 -0
  53. package/dist/cjs/index.js.map +1 -0
  54. package/dist/cjs/utilities/boot.utility.d.ts +31 -0
  55. package/dist/cjs/utilities/boot.utility.d.ts.map +1 -0
  56. package/dist/cjs/utilities/boot.utility.js +67 -0
  57. package/dist/cjs/utilities/boot.utility.js.map +1 -0
  58. package/dist/cjs/utilities/index.d.ts +2 -0
  59. package/dist/cjs/utilities/index.d.ts.map +1 -0
  60. package/dist/cjs/utilities/index.js +18 -0
  61. package/dist/cjs/utilities/index.js.map +1 -0
  62. package/dist/esm/base/base-artifact-booter.d.ts +18 -0
  63. package/dist/esm/base/base-artifact-booter.d.ts.map +1 -0
  64. package/dist/esm/base/base-artifact-booter.js +85 -0
  65. package/dist/esm/base/base-artifact-booter.js.map +1 -0
  66. package/dist/esm/base/index.d.ts +2 -0
  67. package/dist/esm/base/index.d.ts.map +1 -0
  68. package/dist/esm/base/index.js +2 -0
  69. package/dist/esm/base/index.js.map +1 -0
  70. package/dist/esm/boot.mixin.d.ts +54 -0
  71. package/dist/esm/boot.mixin.d.ts.map +1 -0
  72. package/dist/esm/boot.mixin.js +21 -0
  73. package/dist/esm/boot.mixin.js.map +1 -0
  74. package/dist/esm/booters/controller.booter.d.ts +10 -0
  75. package/dist/esm/booters/controller.booter.d.ts.map +1 -0
  76. package/dist/esm/booters/controller.booter.js +45 -0
  77. package/dist/esm/booters/controller.booter.js.map +1 -0
  78. package/dist/esm/booters/datasource.booter.d.ts +10 -0
  79. package/dist/esm/booters/datasource.booter.d.ts.map +1 -0
  80. package/dist/esm/booters/datasource.booter.js +45 -0
  81. package/dist/esm/booters/datasource.booter.js.map +1 -0
  82. package/dist/esm/booters/index.d.ts +5 -0
  83. package/dist/esm/booters/index.d.ts.map +1 -0
  84. package/dist/esm/booters/index.js +5 -0
  85. package/dist/esm/booters/index.js.map +1 -0
  86. package/dist/esm/booters/repository.booter.d.ts +10 -0
  87. package/dist/esm/booters/repository.booter.d.ts.map +1 -0
  88. package/dist/esm/booters/repository.booter.js +45 -0
  89. package/dist/esm/booters/repository.booter.js.map +1 -0
  90. package/dist/esm/booters/service.booter.d.ts +10 -0
  91. package/dist/esm/booters/service.booter.d.ts.map +1 -0
  92. package/dist/esm/booters/service.booter.js +45 -0
  93. package/dist/esm/booters/service.booter.js.map +1 -0
  94. package/dist/esm/bootstrapper.d.ts +22 -0
  95. package/dist/esm/bootstrapper.d.ts.map +1 -0
  96. package/dist/esm/bootstrapper.js +95 -0
  97. package/dist/esm/bootstrapper.js.map +1 -0
  98. package/dist/esm/common/constants.d.ts +6 -0
  99. package/dist/esm/common/constants.d.ts.map +1 -0
  100. package/dist/esm/common/constants.js +6 -0
  101. package/dist/esm/common/constants.js.map +1 -0
  102. package/dist/esm/common/index.d.ts +3 -0
  103. package/dist/esm/common/index.d.ts.map +1 -0
  104. package/dist/esm/common/index.js +3 -0
  105. package/dist/esm/common/index.js.map +1 -0
  106. package/dist/esm/common/types.d.ts +52 -0
  107. package/dist/esm/common/types.d.ts.map +1 -0
  108. package/dist/esm/common/types.js +2 -0
  109. package/dist/esm/common/types.js.map +1 -0
  110. package/dist/esm/index.d.ts +7 -0
  111. package/dist/esm/index.d.ts.map +1 -0
  112. package/dist/esm/index.js +7 -0
  113. package/dist/esm/index.js.map +1 -0
  114. package/dist/esm/utilities/boot.utility.d.ts +31 -0
  115. package/dist/esm/utilities/boot.utility.d.ts.map +1 -0
  116. package/dist/esm/utilities/boot.utility.js +61 -0
  117. package/dist/esm/utilities/boot.utility.js.map +1 -0
  118. package/dist/esm/utilities/index.d.ts +2 -0
  119. package/dist/esm/utilities/index.d.ts.map +1 -0
  120. package/dist/esm/utilities/index.js +2 -0
  121. package/dist/esm/utilities/index.js.map +1 -0
  122. package/package.json +82 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.booter.js","sourceRoot":"","sources":["../../../src/booters/service.booter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iCAA4C;AAE5C,8DAA+D;AAE/D,IAAa,aAAa,qBAA1B,MAAa,aAAc,SAAQ,yBAAkB;IACnD,YACwC,IAAY,EACN,WAAyB,EAC/B,WAAyB;QAE/D,KAAK,CAAC,EAAE,KAAK,EAAE,eAAa,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;QAH5C,gBAAW,GAAX,WAAW,CAAc;IAIvE,CAAC;IAED,mFAAmF;IAChE,cAAc;QAC/B,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,mFAAmF;IAChE,oBAAoB;QACrC,OAAO,CAAC,aAAa,CAAC,CAAC;IACzB,CAAC;IAED,mFAAmF;IAChE,KAAK,CAAC,IAAI;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,6BAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF,CAAA;AA3BY,sCAAa;wBAAb,aAAa;IAErB,WAAA,IAAA,wBAAM,EAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACpC,WAAA,IAAA,wBAAM,EAAC,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAA;IAChC,WAAA,IAAA,wBAAM,EAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAA;;GAJ5B,aAAa,CA2BzB"}
@@ -0,0 +1,22 @@
1
+ import { IApplication, IBootExecutionOptions, IBootReport, IBootstrapper } from './common/types';
2
+ import { BaseHelper } from '@venizia/ignis-helpers';
3
+ /**
4
+ * BaseBootstrapper orchestrates the boot process
5
+ *
6
+ * Responsibilities:
7
+ * 1. Discover all booters
8
+ * 2. Run boot phases (configure, discover, load)
9
+ * 3. Generate boot report
10
+ */
11
+ export declare class Bootstrapper extends BaseHelper implements IBootstrapper {
12
+ private readonly application;
13
+ private booters;
14
+ private phaseStartTimings;
15
+ private phaseEndTimings;
16
+ constructor(application: IApplication);
17
+ boot(opts: IBootExecutionOptions): Promise<IBootReport>;
18
+ private discoverBooters;
19
+ private runPhase;
20
+ private generateReport;
21
+ }
22
+ //# sourceMappingURL=bootstrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapper.d.ts","sourceRoot":"","sources":["../../src/bootstrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAEZ,qBAAqB,EACrB,WAAW,EACX,aAAa,EAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAY,MAAM,wBAAwB,CAAC;AAG9D;;;;;;;GAOG;AACH,qBAAa,YAAa,SAAQ,UAAW,YAAW,aAAa;IAKrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJ1E,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,eAAe,CAAkC;gBAEM,WAAW,EAAE,YAAY;IAKlF,IAAI,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;YAY/C,eAAe;YAUf,QAAQ;IAqDtB,OAAO,CAAC,cAAc;CAMvB"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var Bootstrapper_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.Bootstrapper = void 0;
17
+ const types_1 = require("./common/types");
18
+ const ignis_helpers_1 = require("@venizia/ignis-helpers");
19
+ const ignis_inversion_1 = require("@venizia/ignis-inversion");
20
+ /**
21
+ * BaseBootstrapper orchestrates the boot process
22
+ *
23
+ * Responsibilities:
24
+ * 1. Discover all booters
25
+ * 2. Run boot phases (configure, discover, load)
26
+ * 3. Generate boot report
27
+ */
28
+ let Bootstrapper = Bootstrapper_1 = class Bootstrapper extends ignis_helpers_1.BaseHelper {
29
+ constructor(application) {
30
+ super({ scope: Bootstrapper_1.name });
31
+ this.application = application;
32
+ this.booters = [];
33
+ this.phaseStartTimings = new Map();
34
+ this.phaseEndTimings = new Map();
35
+ }
36
+ // --------------------------------------------------------------------------------
37
+ async boot(opts) {
38
+ const { phases = types_1.BOOT_PHASES, booters } = opts;
39
+ await this.discoverBooters();
40
+ this.logger.debug(`[boot] Starting boot | Number of booters: %d`, this.booters.length);
41
+ for (const phase of phases) {
42
+ await this.runPhase({ phase, booterNames: booters });
43
+ }
44
+ return this.generateReport();
45
+ }
46
+ // --------------------------------------------------------------------------------
47
+ async discoverBooters() {
48
+ const booterBindings = this.application.findByTag({ tag: 'booter' });
49
+ for (const binding of booterBindings) {
50
+ this.booters.push(binding.getValue(this.application));
51
+ this.logger.debug(`[discoverBooters] Discovered booter: %s`, binding.key);
52
+ }
53
+ }
54
+ // --------------------------------------------------------------------------------
55
+ async runPhase(opts) {
56
+ const { phase } = opts; // TODO: booterNames filtering can be implemented later
57
+ this.phaseStartTimings.set(phase, performance.now());
58
+ this.logger.debug(`[runPhase] Starting phase: %s`, phase.toUpperCase());
59
+ for (const booter of this.booters) {
60
+ const phaseMethod = booter[phase];
61
+ if (!phaseMethod) {
62
+ this.logger.debug(`[runPhase] SKIP not implemented booter | Phase: %s | Booter: %s`, phase, booter.constructor.name);
63
+ continue;
64
+ }
65
+ if (typeof phaseMethod !== 'function') {
66
+ this.logger.debug(`[runPhase] SKIP not a function booter | Phase: %s | Booter: %s`, phase, booter.constructor.name);
67
+ continue;
68
+ }
69
+ try {
70
+ this.logger.debug(`[runPhase] Running | Phase: %s | Booter: %s`, phase, booter.constructor.name);
71
+ await phaseMethod.call(booter);
72
+ }
73
+ catch (error) {
74
+ const errorMessage = error?.message || String(error);
75
+ throw (0, ignis_helpers_1.getError)({
76
+ message: `[Bootstrapper][runPhase] Error during phase '${phase}' on booter '${booter.constructor.name}': ${errorMessage}`,
77
+ });
78
+ }
79
+ }
80
+ this.phaseEndTimings.set(phase, performance.now());
81
+ const start = this.phaseStartTimings.get(phase) ?? 0;
82
+ const end = this.phaseEndTimings.get(phase) ?? 0;
83
+ const duration = end - start;
84
+ this.logger.debug(`[DEBUG][runPhase] Completed phase: %s | Took: %d ms`, phase.toUpperCase(), duration);
85
+ }
86
+ // --------------------------------------------------------------------------------
87
+ generateReport() {
88
+ const report = {};
89
+ this.logger.debug(`[generateReport] Boot report: %j`, report);
90
+ return report;
91
+ }
92
+ };
93
+ exports.Bootstrapper = Bootstrapper;
94
+ exports.Bootstrapper = Bootstrapper = Bootstrapper_1 = __decorate([
95
+ __param(0, (0, ignis_inversion_1.inject)({ key: '@app/instance' })),
96
+ __metadata("design:paramtypes", [Object])
97
+ ], Bootstrapper);
98
+ //# sourceMappingURL=bootstrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrapper.js","sourceRoot":"","sources":["../../src/bootstrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class BootPhases {
2
+ static readonly CONFIGURE = "configure";
3
+ static readonly DISCOVER = "discover";
4
+ static readonly LOAD = "load";
5
+ }
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/common/constants.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;CAC/B"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BootPhases = void 0;
4
+ class BootPhases {
5
+ static { this.CONFIGURE = 'configure'; }
6
+ static { this.DISCOVER = 'discover'; }
7
+ static { this.LOAD = 'load'; }
8
+ }
9
+ exports.BootPhases = BootPhases;
10
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/common/constants.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;aACL,cAAS,GAAG,WAAW,CAAC;aACxB,aAAQ,GAAG,UAAU,CAAC;aACtB,SAAI,GAAG,MAAM,CAAC;;AAHhC,gCAIC"}
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './constants';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./constants"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,8CAA4B"}
@@ -0,0 +1,52 @@
1
+ import { TConstValue, ValueOrPromise } from '@venizia/ignis-helpers';
2
+ import { Container } from '@venizia/ignis-inversion';
3
+ import { BootPhases } from './constants';
4
+ export interface IArtifactOptions {
5
+ dirs?: string[];
6
+ extensions?: string[];
7
+ isNested?: boolean;
8
+ glob?: string;
9
+ }
10
+ export interface IBootOptions {
11
+ controllers?: IArtifactOptions;
12
+ services?: IArtifactOptions;
13
+ repositories?: IArtifactOptions;
14
+ datasources?: IArtifactOptions;
15
+ [artifactType: string]: IArtifactOptions | undefined;
16
+ }
17
+ export type TBootPhase = TConstValue<typeof BootPhases>;
18
+ export declare const BOOT_PHASES: TBootPhase[];
19
+ export interface IApplication extends Container {
20
+ getProjectRoot(): string;
21
+ }
22
+ export interface IBootableApplication {
23
+ boot(): Promise<IBootReport>;
24
+ }
25
+ export interface IBooterOptions {
26
+ scope: string;
27
+ root: string;
28
+ artifactOptions: IArtifactOptions;
29
+ }
30
+ export interface IBooter {
31
+ configure(): ValueOrPromise<void>;
32
+ discover(): ValueOrPromise<void>;
33
+ load(): ValueOrPromise<void>;
34
+ }
35
+ export interface IBootExecutionOptions {
36
+ /**
37
+ * Phases to execute
38
+ * @default ['configure', 'discover', 'load']
39
+ */
40
+ phases?: TBootPhase[];
41
+ /**
42
+ * Specific booters to run (by name)
43
+ * If not specified, all booters are run
44
+ */
45
+ booters?: string[];
46
+ }
47
+ export interface IBootstrapper {
48
+ boot(opts: IBootExecutionOptions): Promise<IBootReport>;
49
+ }
50
+ export interface IBootReport {
51
+ }
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;CACtD;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,UAAU,CAAC,CAAC;AAExD,eAAO,MAAM,WAAW,EAAE,UAAU,EAAsC,CAAC;AAE3E,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,cAAc,IAAI,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,gBAAgB,CAAC;CACnC;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACzD;AAGD,MAAM,WAAW,WAAW;CAAG"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BOOT_PHASES = void 0;
4
+ exports.BOOT_PHASES = ['configure', 'discover', 'load'];
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":";;;AAsBa,QAAA,WAAW,GAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './base';
2
+ export * from './boot.mixin';
3
+ export * from './booters';
4
+ export * from './bootstrapper';
5
+ export * from './common';
6
+ export * from './utilities';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./base"), exports);
18
+ __exportStar(require("./boot.mixin"), exports);
19
+ __exportStar(require("./booters"), exports);
20
+ __exportStar(require("./bootstrapper"), exports);
21
+ __exportStar(require("./common"), exports);
22
+ __exportStar(require("./utilities"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,+CAA6B;AAC7B,4CAA0B;AAC1B,iDAA+B;AAC/B,2CAAyB;AACzB,8CAA4B"}
@@ -0,0 +1,31 @@
1
+ import { AnyType, TClass } from '@venizia/ignis-helpers';
2
+ /**
3
+ * Check if a value is a class constructor
4
+ *
5
+ * @param target - Target to check
6
+ * @returns True if target is a class
7
+ */
8
+ export declare const isClass: <T>(target: AnyType) => target is TClass<T>;
9
+ /**
10
+ * Discover files matching a glob pattern
11
+ *
12
+ * @param pattern - Glob pattern
13
+ * @param root - Root directory
14
+ * @returns Array of absolute file paths
15
+ */
16
+ export declare const discoverFiles: (opts: {
17
+ pattern: string;
18
+ root: string;
19
+ }) => Promise<string[]>;
20
+ /**
21
+ * Load classes from files
22
+ *
23
+ * @param files - Array of file paths
24
+ * @param root - Root directory (for relative paths in errors)
25
+ * @returns Array of class constructors
26
+ */
27
+ export declare const loadClasses: (opts: {
28
+ files: string[];
29
+ root: string;
30
+ }) => Promise<AnyType[]>;
31
+ //# sourceMappingURL=boot.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot.utility.d.ts","sourceRoot":"","sources":["../../../src/utilities/boot.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGnE;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,QAAQ,OAAO,KAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAE9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,CAAC,IAAI,EAAE;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,KAAK,OAAO,CAAC,MAAM,EAAE,CAYrB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,IAAI,EAAE;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,KAAK,OAAO,CAAC,OAAO,EAAE,CAuBtB,CAAC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadClasses = exports.discoverFiles = exports.isClass = void 0;
4
+ const ignis_helpers_1 = require("@venizia/ignis-helpers");
5
+ const glob_1 = require("glob");
6
+ /**
7
+ * Check if a value is a class constructor
8
+ *
9
+ * @param target - Target to check
10
+ * @returns True if target is a class
11
+ */
12
+ const isClass = (target) => {
13
+ return typeof target === 'function' && target.prototype !== undefined;
14
+ };
15
+ exports.isClass = isClass;
16
+ /**
17
+ * Discover files matching a glob pattern
18
+ *
19
+ * @param pattern - Glob pattern
20
+ * @param root - Root directory
21
+ * @returns Array of absolute file paths
22
+ */
23
+ const discoverFiles = async (opts) => {
24
+ const { pattern, root } = opts;
25
+ try {
26
+ const discovered = await (0, glob_1.glob)(pattern, { cwd: root, absolute: true });
27
+ return discovered;
28
+ }
29
+ catch (error) {
30
+ const errorMessage = error.message ?? 'Unknown error';
31
+ throw (0, ignis_helpers_1.getError)({
32
+ message: `Failed to discover files with pattern: ${pattern} | Error: ${errorMessage}`,
33
+ });
34
+ }
35
+ };
36
+ exports.discoverFiles = discoverFiles;
37
+ /**
38
+ * Load classes from files
39
+ *
40
+ * @param files - Array of file paths
41
+ * @param root - Root directory (for relative paths in errors)
42
+ * @returns Array of class constructors
43
+ */
44
+ const loadClasses = async (opts) => {
45
+ const { files } = opts;
46
+ const classes = [];
47
+ for (const file of files) {
48
+ try {
49
+ const module = await import(file);
50
+ for (const [_exportName, exported] of Object.entries(module)) {
51
+ if (!(0, exports.isClass)(exported)) {
52
+ continue;
53
+ }
54
+ classes.push(exported);
55
+ }
56
+ }
57
+ catch (error) {
58
+ const errorMessage = error.message ?? 'Unknown error';
59
+ throw (0, ignis_helpers_1.getError)({
60
+ message: `Failed to load file: ${file} | Error: ${errorMessage}`,
61
+ });
62
+ }
63
+ }
64
+ return classes;
65
+ };
66
+ exports.loadClasses = loadClasses;
67
+ //# sourceMappingURL=boot.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot.utility.js","sourceRoot":"","sources":["../../../src/utilities/boot.utility.ts"],"names":[],"mappings":";;;AAAA,0DAAmE;AACnE,+BAA4B;AAE5B;;;;;GAKG;AACI,MAAM,OAAO,GAAG,CAAI,MAAe,EAAuB,EAAE;IACjE,OAAO,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;AACxE,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB;AAEF;;;;;;GAMG;AACI,MAAM,aAAa,GAGA,KAAK,EAAC,IAAI,EAAC,EAAE;IACrC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,IAAA,WAAI,EAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;QACjE,MAAM,IAAA,wBAAQ,EAAC;YACb,OAAO,EAAE,0CAA0C,OAAO,aAAa,YAAY,EAAE;SACtF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAfW,QAAA,aAAa,iBAexB;AAEF;;;;;;GAMG;AACI,MAAM,WAAW,GAGG,KAAK,EAAC,IAAI,EAAC,EAAE;IACtC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,IAAA,eAAO,EAAC,QAAQ,CAAC,EAAE,CAAC;oBACvB,SAAS;gBACX,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,wBAAwB,IAAI,aAAa,YAAY,EAAE;aACjE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA1BW,QAAA,WAAW,eA0BtB"}
@@ -0,0 +1,2 @@
1
+ export * from './boot.utility';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./boot.utility"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
@@ -0,0 +1,18 @@
1
+ import { IArtifactOptions, IBooter, IBooterOptions } from '../common/types';
2
+ import { BaseHelper } from '@venizia/ignis-helpers';
3
+ import { TClass } from '@venizia/ignis-inversion';
4
+ export declare abstract class BaseArtifactBooter extends BaseHelper implements IBooter {
5
+ protected root: string;
6
+ protected artifactOptions: IArtifactOptions;
7
+ protected discoveredFiles: string[];
8
+ protected loadedClasses: TClass<any>[];
9
+ protected abstract getDefaultDirs(): string[];
10
+ protected abstract getDefaultExtensions(): string[];
11
+ protected abstract bind(): Promise<void>;
12
+ constructor(opts: IBooterOptions);
13
+ protected getPattern(): string;
14
+ configure(): Promise<void>;
15
+ discover(): Promise<void>;
16
+ load(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=base-artifact-booter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-artifact-booter.d.ts","sourceRoot":"","sources":["../../../src/base/base-artifact-booter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAY,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,8BAAsB,kBAAmB,SAAQ,UAAW,YAAW,OAAO;IAC5E,SAAS,CAAC,IAAI,EAAE,MAAM,CAAM;IAC5B,SAAS,CAAC,eAAe,EAAE,gBAAgB,CAAM;IACjD,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,CAAM;IACzC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAM;IAE5C,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,MAAM,EAAE;IAC7C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,MAAM,EAAE;IACnD,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;gBAE5B,IAAI,EAAE,cAAc;IAOhC,SAAS,CAAC,UAAU,IAAI,MAAM;IAmCxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB5B"}
@@ -0,0 +1,85 @@
1
+ import { discoverFiles, loadClasses } from '../utilities';
2
+ import { BaseHelper, getError } from '@venizia/ignis-helpers';
3
+ export class BaseArtifactBooter extends BaseHelper {
4
+ constructor(opts) {
5
+ super({ scope: opts.scope });
6
+ this.root = '';
7
+ this.artifactOptions = {};
8
+ this.discoveredFiles = [];
9
+ this.loadedClasses = [];
10
+ this.artifactOptions = opts.artifactOptions;
11
+ this.root = opts.root;
12
+ }
13
+ getPattern() {
14
+ // Use custom glob if provided
15
+ if (this.artifactOptions.glob) {
16
+ return this.artifactOptions.glob;
17
+ }
18
+ if (!this.artifactOptions.dirs?.length) {
19
+ throw getError({
20
+ message: `[getPattern] No directories specified for artifact discovery`,
21
+ });
22
+ }
23
+ if (!this.artifactOptions.extensions?.length) {
24
+ throw getError({
25
+ message: `[${this.scope}][getPattern] No file extensions specified for artifact discovery`,
26
+ });
27
+ }
28
+ const dirs = this.artifactOptions.dirs.join(',');
29
+ const exts = this.artifactOptions.extensions
30
+ .map(e => (e.startsWith('.') ? e.slice(1) : e))
31
+ .join(',');
32
+ const nested = this.artifactOptions.isNested ? '{**/*,*}' : '*'; // NOTE: only suports one level of nesting now
33
+ // Pattern: {dir1,dir2}/**/*.{artifact}.{ext1,ext2}
34
+ // Example: {private-controllers,public-controllers}/**/*.controller.{js,ts}
35
+ if (this.artifactOptions.dirs.length > 1 || this.artifactOptions.extensions.length > 1) {
36
+ return `{${dirs}}/${nested}.{${exts}}`;
37
+ }
38
+ else {
39
+ return `${dirs}/${nested}.${exts}`;
40
+ }
41
+ }
42
+ // --------------------------------------------------------------------------------
43
+ async configure() {
44
+ this.artifactOptions = {
45
+ dirs: this.artifactOptions?.dirs ?? this.getDefaultDirs(),
46
+ extensions: this.artifactOptions?.extensions ?? this.getDefaultExtensions(),
47
+ isNested: this.artifactOptions?.isNested ?? true,
48
+ glob: this.artifactOptions?.glob,
49
+ ...this.artifactOptions,
50
+ };
51
+ this.logger.debug(`[configure] Configured: %j`, this.artifactOptions);
52
+ }
53
+ // --------------------------------------------------------------------------------
54
+ async discover() {
55
+ const pattern = this.getPattern();
56
+ try {
57
+ this.discoveredFiles = []; // Reset discovered files
58
+ this.discoveredFiles = await discoverFiles({ root: this.root, pattern });
59
+ this.logger.debug(`[discover] Root: %s | Using pattern: %s | Discovered file: %j`, this.root, pattern, this.discoveredFiles);
60
+ }
61
+ catch (error) {
62
+ throw getError({
63
+ message: `[discover] Failed to discover files using pattern: ${pattern} | Error: ${error?.message}`,
64
+ });
65
+ }
66
+ }
67
+ // --------------------------------------------------------------------------------
68
+ async load() {
69
+ if (!this.discoveredFiles.length) {
70
+ this.logger.debug(`[load] No files discovered to load.`);
71
+ return;
72
+ }
73
+ try {
74
+ this.loadedClasses = []; // Reset loaded classes
75
+ this.loadedClasses = await loadClasses({ files: this.discoveredFiles, root: this.root });
76
+ await this.bind();
77
+ }
78
+ catch (error) {
79
+ throw getError({
80
+ message: `[load] Failed to load classes from discovered files | Error: ${error?.message}`,
81
+ });
82
+ }
83
+ }
84
+ }
85
+ //# sourceMappingURL=base-artifact-booter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-artifact-booter.js","sourceRoot":"","sources":["../../../src/base/base-artifact-booter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './base-artifact-booter';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './base-artifact-booter';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { IBootOptions, IBootReport } from '@venizia/ignis-boot';
2
+ import { TMixinTarget } from '@venizia/ignis-helpers';
3
+ import { Container } from '@venizia/ignis-inversion';
4
+ export declare const BootMixin: <T extends TMixinTarget<Container>>(baseClass: T) => {
5
+ new (...args: any[]): {
6
+ bootOptions?: IBootOptions | undefined;
7
+ boot(): Promise<IBootReport>;
8
+ getMetadataRegistry: () => import("@venizia/ignis-inversion").MetadataRegistry;
9
+ bind: <T_1>(opts: {
10
+ key: string | symbol;
11
+ }) => import("@venizia/ignis-inversion").Binding<T_1>;
12
+ isBound: (opts: {
13
+ key: string | symbol;
14
+ }) => boolean;
15
+ getBinding: <T_1>(opts: {
16
+ key: string | symbol | {
17
+ namespace: string;
18
+ key: string;
19
+ };
20
+ }) => import("@venizia/ignis-inversion").TNullable<import("@venizia/ignis-inversion").Binding<T_1>>;
21
+ unbind: (opts: {
22
+ key: string | symbol;
23
+ }) => boolean;
24
+ set: <T_1>(opts: {
25
+ binding: import("@venizia/ignis-inversion").Binding<T_1>;
26
+ }) => void;
27
+ get: {
28
+ <T_1>(opts: {
29
+ key: string | symbol | {
30
+ namespace: string;
31
+ key: string;
32
+ };
33
+ isOptional?: false;
34
+ }): T_1;
35
+ <T_1>(opts: {
36
+ key: string | symbol | {
37
+ namespace: string;
38
+ key: string;
39
+ };
40
+ isOptional?: boolean;
41
+ }): T_1 | undefined;
42
+ };
43
+ resolve: <T_1>(cls: import("@venizia/ignis-inversion").TClass<T_1>) => T_1;
44
+ instantiate: <T_1>(cls: import("@venizia/ignis-inversion").TClass<T_1>) => T_1;
45
+ findByTag: <T_1 = any>(opts: {
46
+ tag: string;
47
+ }) => import("@venizia/ignis-inversion").Binding<T_1>[];
48
+ clear: () => void;
49
+ reset: () => void;
50
+ scope: string;
51
+ identifier: string;
52
+ };
53
+ } & T;
54
+ //# sourceMappingURL=boot.mixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot.mixin.d.ts","sourceRoot":"","sources":["../../src/boot.mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,YAAY,EACZ,WAAW,EAGZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAiB,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEpE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,YAAY,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;kBAEhD,GAAG,EAAE;sBAaZ,YAAY,GAAG,SAAS;gBAE9B,OAAO,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;0BAQyd,CAAC;;;;;;;0BAA6J,CAAC;;;;;;;;;;;;;KADvpB,CAAC"}