@pristine-ts/core 1.0.440 → 2.0.1

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 (93) hide show
  1. package/dist/lib/cjs/core.module.js +1 -0
  2. package/dist/lib/cjs/core.module.js.map +1 -1
  3. package/dist/lib/cjs/enums/enums.js +2 -0
  4. package/dist/lib/cjs/enums/enums.js.map +1 -1
  5. package/dist/lib/cjs/enums/execution-context-keyname.enum.js +6 -0
  6. package/dist/lib/cjs/enums/execution-context-keyname.enum.js.map +1 -1
  7. package/dist/lib/cjs/enums/instantiation-phase.enum.js +18 -0
  8. package/dist/lib/cjs/enums/instantiation-phase.enum.js.map +1 -0
  9. package/dist/lib/cjs/enums/instantiation-status.enum.js +11 -0
  10. package/dist/lib/cjs/enums/instantiation-status.enum.js.map +1 -0
  11. package/dist/lib/cjs/interfaces/instantiation-test-result.interface.js +3 -0
  12. package/dist/lib/cjs/interfaces/instantiation-test-result.interface.js.map +1 -0
  13. package/dist/lib/cjs/interfaces/instantiation-test.interface.js +3 -0
  14. package/dist/lib/cjs/interfaces/instantiation-test.interface.js.map +1 -0
  15. package/dist/lib/cjs/interfaces/interfaces.js +4 -0
  16. package/dist/lib/cjs/interfaces/interfaces.js.map +1 -1
  17. package/dist/lib/cjs/interfaces/runtime-server.interface.js +3 -0
  18. package/dist/lib/cjs/interfaces/runtime-server.interface.js.map +1 -0
  19. package/dist/lib/cjs/interfaces/serialized-error.interface.js +3 -0
  20. package/dist/lib/cjs/interfaces/serialized-error.interface.js.map +1 -0
  21. package/dist/lib/cjs/kernel.js +316 -17
  22. package/dist/lib/cjs/kernel.js.map +1 -1
  23. package/dist/lib/cjs/models/instantiation-report.js +138 -0
  24. package/dist/lib/cjs/models/instantiation-report.js.map +1 -0
  25. package/dist/lib/cjs/models/instantiation-test-execution-result.js +16 -0
  26. package/dist/lib/cjs/models/instantiation-test-execution-result.js.map +1 -0
  27. package/dist/lib/cjs/models/missing-required-configuration-entry.js +11 -0
  28. package/dist/lib/cjs/models/missing-required-configuration-entry.js.map +1 -0
  29. package/dist/lib/cjs/models/models.js +4 -0
  30. package/dist/lib/cjs/models/models.js.map +1 -1
  31. package/dist/lib/cjs/models/phase-result.js +18 -0
  32. package/dist/lib/cjs/models/phase-result.js.map +1 -0
  33. package/dist/lib/cjs/runtime-servers/default-runtime-server.js +59 -0
  34. package/dist/lib/cjs/runtime-servers/default-runtime-server.js.map +1 -0
  35. package/dist/lib/cjs/runtime-servers/runtime-servers.js +18 -0
  36. package/dist/lib/cjs/runtime-servers/runtime-servers.js.map +1 -0
  37. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  38. package/dist/lib/esm/core.module.js +1 -0
  39. package/dist/lib/esm/core.module.js.map +1 -1
  40. package/dist/lib/esm/enums/enums.js +2 -0
  41. package/dist/lib/esm/enums/enums.js.map +1 -1
  42. package/dist/lib/esm/enums/execution-context-keyname.enum.js +6 -0
  43. package/dist/lib/esm/enums/execution-context-keyname.enum.js.map +1 -1
  44. package/dist/lib/esm/enums/instantiation-phase.enum.js +15 -0
  45. package/dist/lib/esm/enums/instantiation-phase.enum.js.map +1 -0
  46. package/dist/lib/esm/enums/instantiation-status.enum.js +8 -0
  47. package/dist/lib/esm/enums/instantiation-status.enum.js.map +1 -0
  48. package/dist/lib/esm/interfaces/instantiation-test-result.interface.js +2 -0
  49. package/dist/lib/esm/interfaces/instantiation-test-result.interface.js.map +1 -0
  50. package/dist/lib/esm/interfaces/instantiation-test.interface.js +2 -0
  51. package/dist/lib/esm/interfaces/instantiation-test.interface.js.map +1 -0
  52. package/dist/lib/esm/interfaces/interfaces.js +4 -0
  53. package/dist/lib/esm/interfaces/interfaces.js.map +1 -1
  54. package/dist/lib/esm/interfaces/runtime-server.interface.js +2 -0
  55. package/dist/lib/esm/interfaces/runtime-server.interface.js.map +1 -0
  56. package/dist/lib/esm/interfaces/serialized-error.interface.js +2 -0
  57. package/dist/lib/esm/interfaces/serialized-error.interface.js.map +1 -0
  58. package/dist/lib/esm/kernel.js +317 -18
  59. package/dist/lib/esm/kernel.js.map +1 -1
  60. package/dist/lib/esm/models/instantiation-report.js +134 -0
  61. package/dist/lib/esm/models/instantiation-report.js.map +1 -0
  62. package/dist/lib/esm/models/instantiation-test-execution-result.js +12 -0
  63. package/dist/lib/esm/models/instantiation-test-execution-result.js.map +1 -0
  64. package/dist/lib/esm/models/missing-required-configuration-entry.js +7 -0
  65. package/dist/lib/esm/models/missing-required-configuration-entry.js.map +1 -0
  66. package/dist/lib/esm/models/models.js +4 -0
  67. package/dist/lib/esm/models/models.js.map +1 -1
  68. package/dist/lib/esm/models/phase-result.js +14 -0
  69. package/dist/lib/esm/models/phase-result.js.map +1 -0
  70. package/dist/lib/esm/runtime-servers/default-runtime-server.js +56 -0
  71. package/dist/lib/esm/runtime-servers/default-runtime-server.js.map +1 -0
  72. package/dist/lib/esm/runtime-servers/runtime-servers.js +2 -0
  73. package/dist/lib/esm/runtime-servers/runtime-servers.js.map +1 -0
  74. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -0
  75. package/dist/types/core.module.d.ts +1 -0
  76. package/dist/types/enums/enums.d.ts +2 -0
  77. package/dist/types/enums/execution-context-keyname.enum.d.ts +6 -0
  78. package/dist/types/enums/instantiation-phase.enum.d.ts +13 -0
  79. package/dist/types/enums/instantiation-status.enum.d.ts +6 -0
  80. package/dist/types/interfaces/instantiation-test-result.interface.d.ts +11 -0
  81. package/dist/types/interfaces/instantiation-test.interface.d.ts +13 -0
  82. package/dist/types/interfaces/interfaces.d.ts +4 -0
  83. package/dist/types/interfaces/runtime-server.interface.d.ts +33 -0
  84. package/dist/types/interfaces/serialized-error.interface.d.ts +11 -0
  85. package/dist/types/kernel.d.ts +77 -6
  86. package/dist/types/models/instantiation-report.d.ts +43 -0
  87. package/dist/types/models/instantiation-test-execution-result.d.ts +11 -0
  88. package/dist/types/models/missing-required-configuration-entry.d.ts +5 -0
  89. package/dist/types/models/models.d.ts +4 -0
  90. package/dist/types/models/phase-result.d.ts +15 -0
  91. package/dist/types/runtime-servers/default-runtime-server.d.ts +22 -0
  92. package/dist/types/runtime-servers/runtime-servers.d.ts +1 -0
  93. package/package.json +7 -7
@@ -3,6 +3,12 @@ export var ExecutionContextKeynameEnum;
3
3
  ExecutionContextKeynameEnum["AwsLambda"] = "AWS_LAMBDA";
4
4
  ExecutionContextKeynameEnum["Cloudflare"] = "CLOUDFLARE";
5
5
  ExecutionContextKeynameEnum["Express"] = "EXPRESS";
6
+ /**
7
+ * Used by `KernelHttpServer` (the built-in Node `http.Server` wrapper used by `pristine start`)
8
+ * to identify requests coming from the kernel-routed HTTP server, distinct from Express-fronted
9
+ * requests that go through `@pristine-ts/express`.
10
+ */
11
+ ExecutionContextKeynameEnum["Http"] = "HTTP";
6
12
  ExecutionContextKeynameEnum["Jest"] = "JEST";
7
13
  ExecutionContextKeynameEnum["Cli"] = "CLI";
8
14
  })(ExecutionContextKeynameEnum || (ExecutionContextKeynameEnum = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"execution-context-keyname.enum.js","sourceRoot":"","sources":["../../../../src/enums/execution-context-keyname.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,2BAMX;AAND,WAAY,2BAA2B;IACrC,uDAAwB,CAAA;IACxB,wDAAyB,CAAA;IACzB,kDAAmB,CAAA;IACnB,4CAAa,CAAA;IACb,0CAAW,CAAA;AACb,CAAC,EANW,2BAA2B,KAA3B,2BAA2B,QAMtC"}
1
+ {"version":3,"file":"execution-context-keyname.enum.js","sourceRoot":"","sources":["../../../../src/enums/execution-context-keyname.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,2BAYX;AAZD,WAAY,2BAA2B;IACrC,uDAAwB,CAAA;IACxB,wDAAyB,CAAA;IACzB,kDAAmB,CAAA;IACnB;;;;OAIG;IACH,4CAAa,CAAA;IACb,4CAAa,CAAA;IACb,0CAAW,CAAA;AACb,CAAC,EAZW,2BAA2B,KAA3B,2BAA2B,QAYtC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Distinct phases of `Kernel.start()`. `verifyInstantiation` runs each phase in order on a fresh kernel
3
+ * and reports the outcome of each independently so callers can pinpoint which phase failed.
4
+ */
5
+ export var InstantiationPhaseEnum;
6
+ (function (InstantiationPhaseEnum) {
7
+ InstantiationPhaseEnum["ModuleRegistration"] = "ModuleRegistration";
8
+ InstantiationPhaseEnum["ConfigurationCheck"] = "ConfigurationCheck";
9
+ InstantiationPhaseEnum["ConfigurationLoad"] = "ConfigurationLoad";
10
+ InstantiationPhaseEnum["ServiceTagRegistration"] = "ServiceTagRegistration";
11
+ InstantiationPhaseEnum["AfterInit"] = "AfterInit";
12
+ InstantiationPhaseEnum["BootProbe"] = "BootProbe";
13
+ InstantiationPhaseEnum["InstantiationTests"] = "InstantiationTests";
14
+ })(InstantiationPhaseEnum || (InstantiationPhaseEnum = {}));
15
+ //# sourceMappingURL=instantiation-phase.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantiation-phase.enum.js","sourceRoot":"","sources":["../../../../src/enums/instantiation-phase.enum.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC,mEAAyC,CAAA;IACzC,mEAAyC,CAAA;IACzC,iEAAuC,CAAA;IACvC,2EAAiD,CAAA;IACjD,iDAAuB,CAAA;IACvB,iDAAuB,CAAA;IACvB,mEAAyC,CAAA;AAC3C,CAAC,EARW,sBAAsB,KAAtB,sBAAsB,QAQjC"}
@@ -0,0 +1,8 @@
1
+ export var InstantiationStatusEnum;
2
+ (function (InstantiationStatusEnum) {
3
+ InstantiationStatusEnum["Passed"] = "Passed";
4
+ InstantiationStatusEnum["PassedWithWarnings"] = "PassedWithWarnings";
5
+ InstantiationStatusEnum["Failed"] = "Failed";
6
+ InstantiationStatusEnum["Skipped"] = "Skipped";
7
+ })(InstantiationStatusEnum || (InstantiationStatusEnum = {}));
8
+ //# sourceMappingURL=instantiation-status.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantiation-status.enum.js","sourceRoot":"","sources":["../../../../src/enums/instantiation-status.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,4CAAiB,CAAA;IACjB,oEAAyC,CAAA;IACzC,4CAAiB,CAAA;IACjB,8CAAmB,CAAA;AACrB,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,QAKlC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=instantiation-test-result.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantiation-test-result.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/instantiation-test-result.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=instantiation-test.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instantiation-test.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/instantiation-test.interface.ts"],"names":[],"mappings":""}
@@ -5,5 +5,9 @@ export * from "./event-listener.interface";
5
5
  export * from "./event-mapper.interface";
6
6
  export * from "./events-execution-options.interface";
7
7
  export * from "./execution-context.interface";
8
+ export * from "./instantiation-test.interface";
9
+ export * from "./instantiation-test-result.interface";
8
10
  export * from "./options-mapper.interface";
11
+ export * from "./runtime-server.interface";
12
+ export * from "./serialized-error.interface";
9
13
  //# sourceMappingURL=interfaces.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/interfaces/interfaces.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/interfaces/interfaces.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime-server.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-server.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/runtime-server.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serialized-error.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialized-error.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/serialized-error.interface.ts"],"names":[],"mappings":""}
@@ -9,13 +9,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import "reflect-metadata";
11
11
  import { container } from "tsyringe";
12
- import { InternalContainerParameterEnum, moduleScopedServicesRegistry, taggedProviderRegistrationsRegistry } from "@pristine-ts/common";
12
+ import { InternalContainerParameterEnum, moduleScopedServicesRegistry, ServiceDefinitionTagEnum, taggedProviderRegistrationsRegistry } from "@pristine-ts/common";
13
13
  import { ConfigurationManager } from "@pristine-ts/configuration";
14
14
  import { ProviderRegistrationError } from "./errors/provider-registration.error";
15
15
  import { Span, SpanKeynameEnum } from "@pristine-ts/telemetry";
16
16
  import { v4 as uuidv4 } from 'uuid';
17
17
  import { EventPipeline } from "./pipelines/event.pipeline";
18
18
  import { KernelInitializationError } from "./errors/kernel-initialization.error";
19
+ import { InstantiationReport } from "./models/instantiation-report";
20
+ import { PhaseResult } from "./models/phase-result";
21
+ import { InstantiationTestExecutionResult } from "./models/instantiation-test-execution-result";
22
+ import { MissingRequiredConfigurationEntry } from "./models/missing-required-configuration-entry";
23
+ import { InstantiationPhaseEnum } from "./enums/instantiation-phase.enum";
24
+ import { InstantiationStatusEnum } from "./enums/instantiation-status.enum";
19
25
  /**
20
26
  * This is the central class that manages the lifecyle of this library.
21
27
  */
@@ -32,7 +38,7 @@ export class Kernel {
32
38
  this.instantiationId = uuidv4();
33
39
  /**
34
40
  * Contains a map of all the modules that were instantiated indexed by the modules names.
35
- * @private
41
+ * @public Exposed read-only so commands like `pristine info` can introspect the boot graph.
36
42
  */
37
43
  this.instantiatedModules = {};
38
44
  /**
@@ -40,6 +46,12 @@ export class Kernel {
40
46
  * @private
41
47
  */
42
48
  this.afterInstantiatedModules = {};
49
+ /**
50
+ * True after `stop()` has begun (or completed). Prevents double-shutdown when multiple
51
+ * SIGTERM/SIGINT signals arrive in quick succession.
52
+ * @private
53
+ */
54
+ this.stopped = false;
43
55
  }
44
56
  /**
45
57
  * This function is the entry point of the Kernel. It initializes the module for your application (AppModule) as well as its the dependencies,
@@ -64,7 +76,8 @@ export class Kernel {
64
76
  initializedModuleSpans.forEach(span => this.initializationSpan.addChild(span));
65
77
  // Register the configuration.
66
78
  const configurationInitializationSpan = new Span(SpanKeynameEnum.ConfigurationInitialization);
67
- yield this.initConfiguration(moduleConfigurationValues);
79
+ const configurationManager = this.registerConfigurationDefinitions();
80
+ yield this.loadConfiguration(configurationManager, moduleConfigurationValues);
68
81
  configurationInitializationSpan.endDate = Date.now();
69
82
  this.initializationSpan.addChild(configurationInitializationSpan);
70
83
  // Register the non module scoped tags
@@ -83,6 +96,240 @@ export class Kernel {
83
96
  });
84
97
  });
85
98
  }
99
+ /**
100
+ * Verifies that this kernel can be fully instantiated against the provided AppModule and configuration values.
101
+ * Runs the same boot phases as `start()` on this kernel, capturing each phase's outcome rather than letting
102
+ * exceptions propagate, then collects and runs every embedder-registered `InstantiationTestInterface`.
103
+ *
104
+ * Important: this method mutates the kernel's container (it actually performs registration). It should be
105
+ * called on a fresh `new Kernel()` instance, not on a kernel that has already had `start()` invoked.
106
+ *
107
+ * @param module The AppModule to verify.
108
+ * @param moduleConfigurationValues The configuration values that would be passed to `start()`.
109
+ * @param options.runInstantiationTests When false, skips the test discovery/execution phase. Default true.
110
+ * @param options.stopOnFirstFailure When true, halts after the first failed phase and marks the rest as skipped. Default false.
111
+ */
112
+ verifyInstantiation(module, moduleConfigurationValues, options) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ const report = new InstantiationReport();
115
+ const startedAt = Date.now();
116
+ const runInstantiationTests = (options === null || options === void 0 ? void 0 : options.runInstantiationTests) !== false;
117
+ const stopOnFirstFailure = (options === null || options === void 0 ? void 0 : options.stopOnFirstFailure) === true;
118
+ // Phase 1: ModuleRegistration. Must succeed for any subsequent phase to be meaningful — if it fails,
119
+ // the container is in an indeterminate state and we skip everything else.
120
+ const moduleRegistrationOk = yield this.runPhase(report, InstantiationPhaseEnum.ModuleRegistration, () => __awaiter(this, void 0, void 0, function* () {
121
+ this.container.register(InternalContainerParameterEnum.KernelInstantiationId, {
122
+ useValue: this.instantiationId,
123
+ });
124
+ yield this.initModule(module);
125
+ }));
126
+ if (!moduleRegistrationOk) {
127
+ this.skipRemainingPhases(report, [
128
+ InstantiationPhaseEnum.ConfigurationCheck,
129
+ InstantiationPhaseEnum.ConfigurationLoad,
130
+ InstantiationPhaseEnum.ServiceTagRegistration,
131
+ InstantiationPhaseEnum.AfterInit,
132
+ InstantiationPhaseEnum.BootProbe,
133
+ InstantiationPhaseEnum.InstantiationTests,
134
+ ]);
135
+ report.totalDurationMs = Date.now() - startedAt;
136
+ return report;
137
+ }
138
+ // Phase 2: ConfigurationCheck. Register all module configuration definitions, then non-mutatively
139
+ // inspect for missing required values. This phase is informational only — it surfaces what is missing
140
+ // but cannot itself determine whether `start()` would throw, because a defaultResolver might or might
141
+ // not succeed at load time (resolver failures are silently swallowed by ConfigurationManager.load).
142
+ // ConfigurationLoad is the source of truth for "would start throw."
143
+ let configurationManager;
144
+ const configurationCheckOk = yield this.runPhase(report, InstantiationPhaseEnum.ConfigurationCheck, () => __awaiter(this, void 0, void 0, function* () {
145
+ configurationManager = this.registerConfigurationDefinitions();
146
+ const missing = configurationManager.getMissingRequiredParameters(moduleConfigurationValues !== null && moduleConfigurationValues !== void 0 ? moduleConfigurationValues : {});
147
+ report.missingRequiredConfiguration = missing.map(m => new MissingRequiredConfigurationEntry(m.parameterName, m.hasDefaultResolvers));
148
+ }));
149
+ if (configurationCheckOk && report.missingRequiredConfiguration.length > 0) {
150
+ const lastPhase = report.phases[report.phases.length - 1];
151
+ lastPhase.status = InstantiationStatusEnum.PassedWithWarnings;
152
+ }
153
+ if (!configurationCheckOk && stopOnFirstFailure) {
154
+ this.skipRemainingPhases(report, [
155
+ InstantiationPhaseEnum.ConfigurationLoad,
156
+ InstantiationPhaseEnum.ServiceTagRegistration,
157
+ InstantiationPhaseEnum.AfterInit,
158
+ InstantiationPhaseEnum.BootProbe,
159
+ InstantiationPhaseEnum.InstantiationTests,
160
+ ]);
161
+ report.totalDurationMs = Date.now() - startedAt;
162
+ return report;
163
+ }
164
+ // ConfigurationCheck registers definitions but doesn't load. If that registration itself failed,
165
+ // there's no manager to load from — skip ConfigurationLoad.
166
+ let configurationLoadOk;
167
+ if (configurationManager === undefined) {
168
+ this.skipPhase(report, InstantiationPhaseEnum.ConfigurationLoad);
169
+ configurationLoadOk = false;
170
+ }
171
+ else {
172
+ configurationLoadOk = yield this.runPhase(report, InstantiationPhaseEnum.ConfigurationLoad, () => __awaiter(this, void 0, void 0, function* () {
173
+ yield this.loadConfiguration(configurationManager, moduleConfigurationValues);
174
+ }));
175
+ }
176
+ if (!configurationLoadOk && stopOnFirstFailure) {
177
+ this.skipRemainingPhases(report, [
178
+ InstantiationPhaseEnum.ServiceTagRegistration,
179
+ InstantiationPhaseEnum.AfterInit,
180
+ InstantiationPhaseEnum.BootProbe,
181
+ InstantiationPhaseEnum.InstantiationTests,
182
+ ]);
183
+ report.totalDurationMs = Date.now() - startedAt;
184
+ return report;
185
+ }
186
+ const serviceTagOk = yield this.runPhase(report, InstantiationPhaseEnum.ServiceTagRegistration, () => __awaiter(this, void 0, void 0, function* () {
187
+ this.registerNonModuleScopedServiceTags();
188
+ }));
189
+ if (!serviceTagOk && stopOnFirstFailure) {
190
+ this.skipRemainingPhases(report, [
191
+ InstantiationPhaseEnum.AfterInit,
192
+ InstantiationPhaseEnum.BootProbe,
193
+ InstantiationPhaseEnum.InstantiationTests,
194
+ ]);
195
+ report.totalDurationMs = Date.now() - startedAt;
196
+ return report;
197
+ }
198
+ const afterInitOk = yield this.runPhase(report, InstantiationPhaseEnum.AfterInit, () => __awaiter(this, void 0, void 0, function* () {
199
+ yield this.afterInitModule(module);
200
+ }));
201
+ if (!afterInitOk && stopOnFirstFailure) {
202
+ this.skipRemainingPhases(report, [InstantiationPhaseEnum.BootProbe, InstantiationPhaseEnum.InstantiationTests]);
203
+ report.totalDurationMs = Date.now() - startedAt;
204
+ return report;
205
+ }
206
+ const bootProbeOk = yield this.runPhase(report, InstantiationPhaseEnum.BootProbe, () => __awaiter(this, void 0, void 0, function* () {
207
+ // Mirror the cosmetic LogHandler resolve at the end of `start()`. If LoggingModule wasn't imported,
208
+ // the resolve will throw and the phase is marked Failed.
209
+ this.container.resolve("LogHandlerInterface");
210
+ }));
211
+ // Once BootProbe has confirmed LogHandler is resolvable, stamp it onto the report so `report.log()`
212
+ // can route through the project's logging stack without callers having to pass one in.
213
+ if (bootProbeOk) {
214
+ try {
215
+ report.logHandler = this.container.resolve("LogHandlerInterface");
216
+ }
217
+ catch (_a) {
218
+ // Should not happen since BootProbe already succeeded, but defensive.
219
+ }
220
+ }
221
+ if (runInstantiationTests) {
222
+ yield this.runPhase(report, InstantiationPhaseEnum.InstantiationTests, () => __awaiter(this, void 0, void 0, function* () {
223
+ let tests = [];
224
+ try {
225
+ tests = this.container.resolveAll(ServiceDefinitionTagEnum.InstantiationTest);
226
+ }
227
+ catch (_a) {
228
+ // resolveAll throws when nothing is registered for the token. That's not a failure — there are simply no tests.
229
+ tests = [];
230
+ }
231
+ for (const test of tests) {
232
+ report.instantiationTests.push(yield this.runInstantiationTest(test));
233
+ }
234
+ }));
235
+ }
236
+ else {
237
+ this.skipPhase(report, InstantiationPhaseEnum.InstantiationTests);
238
+ }
239
+ report.totalDurationMs = Date.now() - startedAt;
240
+ return report;
241
+ });
242
+ }
243
+ /**
244
+ * Gracefully shuts down the kernel by invoking each instantiated module's `onShutdown` hook
245
+ * in reverse instantiation order (root module first, deepest dependencies last). Modules
246
+ * without an `onShutdown` hook are skipped silently.
247
+ *
248
+ * Each hook runs under a per-hook timeout so a single misbehaving module cannot block the
249
+ * shutdown indefinitely. When a hook throws or times out, the error is logged via the
250
+ * resolved `LogHandlerInterface` (or stderr if logging itself failed) and shutdown continues
251
+ * with the next module — the goal is to release as much as possible, not to abort on the
252
+ * first failure.
253
+ *
254
+ * Calling `stop()` more than once is a no-op (subsequent calls return immediately) so this
255
+ * method is safe to wire up to multiple signal handlers.
256
+ *
257
+ * @param options.perHookTimeoutMs Maximum milliseconds to wait for a single module's
258
+ * `onShutdown` to resolve. Default 10_000 (10 seconds). Set to 0 to wait indefinitely.
259
+ */
260
+ stop(options) {
261
+ return __awaiter(this, void 0, void 0, function* () {
262
+ var _a;
263
+ if (this.stopped) {
264
+ return;
265
+ }
266
+ this.stopped = true;
267
+ const perHookTimeoutMs = (_a = options === null || options === void 0 ? void 0 : options.perHookTimeoutMs) !== null && _a !== void 0 ? _a : 10000;
268
+ let logHandler;
269
+ try {
270
+ logHandler = this.container.resolve("LogHandlerInterface");
271
+ }
272
+ catch (_b) {
273
+ // Logging may not have booted (e.g. start() failed mid-flight). Fall back to stderr.
274
+ }
275
+ // Insertion order: `initModule` records the parent BEFORE recursing into children, so the
276
+ // map's natural key order is root → branch → leaf. Shutting down in that order means the
277
+ // outer-most modules (AppModule and its direct imports) tear down first while their
278
+ // dependencies (logging, configuration, the container itself) are still healthy — exactly
279
+ // what we want.
280
+ const moduleNames = Object.keys(this.instantiatedModules);
281
+ for (const name of moduleNames) {
282
+ const module = this.instantiatedModules[name];
283
+ if (typeof module.onShutdown !== "function") {
284
+ continue;
285
+ }
286
+ try {
287
+ yield this.runWithTimeout(module.onShutdown(this.container), perHookTimeoutMs, name);
288
+ }
289
+ catch (error) {
290
+ const message = `[Kernel] onShutdown failed for module '${name}': ${error.message}`;
291
+ if (logHandler !== undefined) {
292
+ logHandler.error(message, { extra: { moduleKeyname: name, error } });
293
+ }
294
+ else {
295
+ process.stderr.write(message + "\n");
296
+ }
297
+ }
298
+ }
299
+ if (logHandler !== undefined && typeof logHandler.terminate === "function") {
300
+ try {
301
+ logHandler.terminate();
302
+ }
303
+ catch (_c) {
304
+ // Best-effort.
305
+ }
306
+ }
307
+ });
308
+ }
309
+ /**
310
+ * Wraps a Promise in a timeout that rejects with a clear error if not settled in time.
311
+ * `timeoutMs <= 0` disables the timeout entirely.
312
+ * @private
313
+ */
314
+ runWithTimeout(promise, timeoutMs, label) {
315
+ return __awaiter(this, void 0, void 0, function* () {
316
+ if (timeoutMs <= 0) {
317
+ return promise;
318
+ }
319
+ let timer;
320
+ const timeout = new Promise((_, reject) => {
321
+ timer = setTimeout(() => reject(new Error(`onShutdown for '${label}' exceeded ${timeoutMs}ms`)), timeoutMs);
322
+ });
323
+ try {
324
+ return yield Promise.race([promise, timeout]);
325
+ }
326
+ finally {
327
+ if (timer !== undefined) {
328
+ clearTimeout(timer);
329
+ }
330
+ }
331
+ });
332
+ }
86
333
  /**
87
334
  *
88
335
  * @param event
@@ -182,24 +429,31 @@ export class Kernel {
182
429
  });
183
430
  }
184
431
  /**
185
- * Registers all the configuration definitions that all the modules have defined.
186
- * @param moduleConfigurationValues
432
+ * Resolves the ConfigurationManager and registers every module's configuration definitions onto it.
433
+ * Returns the manager so the caller can subsequently inspect required parameters or call `load()`.
434
+ * Split out from the original `initConfiguration` so `verifyInstantiation` can run a non-mutating
435
+ * check between definition registration and value loading.
187
436
  * @private
188
437
  */
189
- initConfiguration(moduleConfigurationValues) {
190
- return __awaiter(this, void 0, void 0, function* () {
191
- const configurationManager = this.container.resolve(ConfigurationManager);
192
- // Start by loading the configuration definitions of all the modules
193
- for (const key in this.instantiatedModules) {
194
- if (this.instantiatedModules.hasOwnProperty(key) === false) {
195
- continue;
196
- }
197
- const instantiatedModule = this.instantiatedModules[key];
198
- if (instantiatedModule.configurationDefinitions) {
199
- instantiatedModule.configurationDefinitions.forEach(configurationDefinition => configurationManager.register(configurationDefinition));
200
- }
438
+ registerConfigurationDefinitions() {
439
+ const configurationManager = this.container.resolve(ConfigurationManager);
440
+ for (const key in this.instantiatedModules) {
441
+ if (this.instantiatedModules.hasOwnProperty(key) === false) {
442
+ continue;
443
+ }
444
+ const instantiatedModule = this.instantiatedModules[key];
445
+ if (instantiatedModule.configurationDefinitions) {
446
+ instantiatedModule.configurationDefinitions.forEach(configurationDefinition => configurationManager.register(configurationDefinition));
201
447
  }
202
- // Load the configuration values passed by the app
448
+ }
449
+ return configurationManager;
450
+ }
451
+ /**
452
+ * Loads the configuration values into the previously-registered ConfigurationManager.
453
+ * @private
454
+ */
455
+ loadConfiguration(configurationManager, moduleConfigurationValues) {
456
+ return __awaiter(this, void 0, void 0, function* () {
203
457
  yield configurationManager.load(moduleConfigurationValues !== null && moduleConfigurationValues !== void 0 ? moduleConfigurationValues : {}, this.container);
204
458
  });
205
459
  }
@@ -262,5 +516,50 @@ export class Kernel {
262
516
  this.registerProviderRegistration(taggedRegistrationType.providerRegistration);
263
517
  });
264
518
  }
519
+ /**
520
+ * Wraps a phase invocation: times it, captures any thrown error into a serialized form, appends a
521
+ * PhaseResult to the report, and returns whether the phase passed.
522
+ * @private
523
+ */
524
+ runPhase(report, phase, fn) {
525
+ return __awaiter(this, void 0, void 0, function* () {
526
+ const startedAt = Date.now();
527
+ try {
528
+ yield fn();
529
+ report.phases.push(new PhaseResult(phase, InstantiationStatusEnum.Passed, Date.now() - startedAt));
530
+ return true;
531
+ }
532
+ catch (error) {
533
+ report.phases.push(new PhaseResult(phase, InstantiationStatusEnum.Failed, Date.now() - startedAt, this.serializeError(error)));
534
+ return false;
535
+ }
536
+ });
537
+ }
538
+ runInstantiationTest(test) {
539
+ return __awaiter(this, void 0, void 0, function* () {
540
+ const startedAt = Date.now();
541
+ try {
542
+ const result = yield test.run(this.container);
543
+ return new InstantiationTestExecutionResult(test.name, result.passed, Date.now() - startedAt, test.description, result.message, result.details);
544
+ }
545
+ catch (error) {
546
+ return new InstantiationTestExecutionResult(test.name, false, Date.now() - startedAt, test.description, undefined, undefined, this.serializeError(error));
547
+ }
548
+ });
549
+ }
550
+ skipPhase(report, phase) {
551
+ report.phases.push(new PhaseResult(phase, InstantiationStatusEnum.Skipped, 0));
552
+ }
553
+ skipRemainingPhases(report, phases) {
554
+ for (const phase of phases) {
555
+ this.skipPhase(report, phase);
556
+ }
557
+ }
558
+ serializeError(error) {
559
+ if (error instanceof Error) {
560
+ return { name: error.name, message: error.message, stack: error.stack };
561
+ }
562
+ return { name: "UnknownError", message: String(error) };
563
+ }
265
564
  }
266
565
  //# sourceMappingURL=kernel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../../src/kernel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../../src/kernel.ts"],"names":[],"mappings":"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"}