@digital-alchemy/core 0.3.11 → 0.3.12
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/dist/extensions/internal.extension.d.ts +14 -1
- package/dist/extensions/internal.extension.js.map +1 -1
- package/dist/extensions/lifecycle.extension.d.ts +4 -0
- package/dist/extensions/lifecycle.extension.js +39 -0
- package/dist/extensions/lifecycle.extension.js.map +1 -0
- package/dist/extensions/wiring.extension.d.ts +3 -18
- package/dist/extensions/wiring.extension.js +89 -242
- package/dist/extensions/wiring.extension.js.map +1 -1
- package/dist/helpers/wiring.helper.d.ts +9 -1
- package/dist/helpers/wiring.helper.js +103 -1
- package/dist/helpers/wiring.helper.js.map +1 -1
- package/package.json +6 -1
|
@@ -3,7 +3,7 @@ import { Dayjs } from "dayjs";
|
|
|
3
3
|
import { EventEmitter } from "events";
|
|
4
4
|
import { Counter, Summary } from "prom-client";
|
|
5
5
|
import { Get } from "type-fest";
|
|
6
|
-
import { ApplicationDefinition, BootstrapOptions, GetApis, LIB_BOILERPLATE, LifecycleStages, OptionalModuleConfiguration, ServiceMap, TBlackHole, TContext } from "..";
|
|
6
|
+
import { ApplicationDefinition, BootstrapOptions, GetApis, LIB_BOILERPLATE, LifecycleStages, OptionalModuleConfiguration, ServiceMap, TBlackHole, TContext, TLoadableChildLifecycle, TModuleMappings, TResolvedModuleMappings } from "..";
|
|
7
7
|
type inputFormats = Date | string | number | Dayjs;
|
|
8
8
|
export declare class InternalUtils {
|
|
9
9
|
/**
|
|
@@ -64,6 +64,19 @@ export declare class InternalDefinition {
|
|
|
64
64
|
* Roughly speaking, what's the application doing? Mostly useful for debugging
|
|
65
65
|
*/
|
|
66
66
|
phase: Phase;
|
|
67
|
+
/**
|
|
68
|
+
* Registry for various lifecycle events that were registered by services
|
|
69
|
+
*/
|
|
70
|
+
lifecycleHooks: Map<string, TLoadableChildLifecycle>;
|
|
71
|
+
/**
|
|
72
|
+
* association of projects to { service : Declaration Function }
|
|
73
|
+
*/
|
|
74
|
+
moduleMappings: Map<string, TModuleMappings>;
|
|
75
|
+
/**
|
|
76
|
+
* association of projects to { service : Initialized Service }
|
|
77
|
+
*/
|
|
78
|
+
loadedModules: Map<string, TResolvedModuleMappings>;
|
|
79
|
+
startup: Date;
|
|
67
80
|
};
|
|
68
81
|
utils: InternalUtils;
|
|
69
82
|
safeExec<LABELS extends BaseLabels>(options: (() => TBlackHole) | SafeExecOptions<LABELS>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.extension.js","sourceRoot":"","sources":["../../src/extensions/internal.extension.ts"],"names":[],"mappings":";;;;AAAA,0DAAqC;AACrC,mCAAsC;AAItC,
|
|
1
|
+
{"version":3,"file":"internal.extension.js","sourceRoot":"","sources":["../../src/extensions/internal.extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TLoadableChildLifecycle } from "../helpers";
|
|
2
|
+
import { InternalDefinition } from "./internal.extension";
|
|
3
|
+
import { ILogger } from "./logger.extension";
|
|
4
|
+
export declare function CreateChildLifecycle(internal: InternalDefinition, logger: ILogger): TLoadableChildLifecycle;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateChildLifecycle = void 0;
|
|
4
|
+
const helpers_1 = require("../helpers");
|
|
5
|
+
function CreateChildLifecycle(internal, logger) {
|
|
6
|
+
const childCallbacks = {};
|
|
7
|
+
const [
|
|
8
|
+
// ! This list must be sorted!
|
|
9
|
+
onPreInit, onPostConfig, onBootstrap, onReady, onPreShutdown, onShutdownStart, onShutdownComplete,] = helpers_1.LIFECYCLE_STAGES.map((stage) => {
|
|
10
|
+
childCallbacks[stage] = [];
|
|
11
|
+
return (callback, priority) => {
|
|
12
|
+
if (internal.boot.completedLifecycleEvents.has(stage)) {
|
|
13
|
+
// this is makes "earliest run time" logic way easier to implement
|
|
14
|
+
// intended mode of operation
|
|
15
|
+
if (["PreInit", "PostConfig", "Bootstrap", "Ready"].includes(stage)) {
|
|
16
|
+
setImmediate(async () => await callback());
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// What does this mean in reality?
|
|
20
|
+
// Probably a broken unit test, I really don't know what workflow would cause this
|
|
21
|
+
logger.fatal({ name: CreateChildLifecycle }, `on${stage} late attach, cannot attach callback`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
childCallbacks[stage].push([callback, priority]);
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
getCallbacks: (stage) => childCallbacks[stage],
|
|
29
|
+
onBootstrap,
|
|
30
|
+
onPostConfig,
|
|
31
|
+
onPreInit,
|
|
32
|
+
onPreShutdown,
|
|
33
|
+
onReady,
|
|
34
|
+
onShutdownComplete,
|
|
35
|
+
onShutdownStart,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
exports.CreateChildLifecycle = CreateChildLifecycle;
|
|
39
|
+
//# sourceMappingURL=lifecycle.extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.extension.js","sourceRoot":"","sources":["../../src/extensions/lifecycle.extension.ts"],"names":[],"mappings":";;;AAAA,wCAMoB;AAIpB,SAAgB,oBAAoB,CAClC,QAA4B,EAC5B,MAAe;IAEf,MAAM,cAAc,GAAG,EAA2C,CAAC;IAEnE,MAAM;IACJ,8BAA8B;IAC9B,SAAS,EACT,YAAY,EACZ,WAAW,EACX,OAAO,EACP,aAAa,EACb,eAAe,EACf,kBAAkB,EACnB,GAAG,0BAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACjC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,CAAC,QAA2B,EAAE,QAAiB,EAAE,EAAE;YACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,kEAAkE;gBAClE,6BAA6B;gBAC7B,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpE,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;oBAC3C,OAAO;gBACT,CAAC;gBACD,kCAAkC;gBAClC,kFAAkF;gBAClF,MAAM,CAAC,KAAK,CACV,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAC9B,KAAK,KAAK,sCAAsC,CACjD,CAAC;gBACF,OAAO;YACT,CAAC;YACD,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,YAAY,EAAE,CAAC,KAAsB,EAAE,EAAE,CACvC,cAAc,CAAC,KAAK,CAAiB;QACvC,WAAW;QACX,YAAY;QACZ,SAAS;QACT,aAAa;QACb,OAAO;QACP,kBAAkB;QAClB,eAAe;KAChB,CAAC;AACJ,CAAC;AAhDD,oDAgDC"}
|
|
@@ -1,24 +1,10 @@
|
|
|
1
|
-
import { ApplicationConfigurationOptions, ApplicationDefinition,
|
|
1
|
+
import { ApplicationConfigurationOptions, ApplicationDefinition, OptionalModuleConfiguration, ServiceMap, StringConfig } from "../helpers";
|
|
2
2
|
import { Cache } from "./cache.extension";
|
|
3
3
|
import { Configuration } from "./configuration.extension";
|
|
4
4
|
import { Fetch } from "./fetch.extension";
|
|
5
5
|
import { Logger, TConfigLogLevel } from "./logger.extension";
|
|
6
6
|
import { Scheduler } from "./scheduler.extension";
|
|
7
|
-
|
|
8
|
-
* association of projects to { service : Declaration Function }
|
|
9
|
-
*/
|
|
10
|
-
export declare let MODULE_MAPPINGS: Map<string, TModuleMappings>;
|
|
11
|
-
/**
|
|
12
|
-
* association of projects to { service : Initialized Service }
|
|
13
|
-
*/
|
|
14
|
-
export declare let LOADED_MODULES: Map<string, TResolvedModuleMappings>;
|
|
15
|
-
/**
|
|
16
|
-
* Optimized reverse lookups: Declaration Function => [project, service]
|
|
17
|
-
*/
|
|
18
|
-
export declare let REVERSE_MODULE_MAPPING: Map<ServiceFunction, [project: string, service: string]>;
|
|
19
|
-
export declare let LOADED_LIFECYCLES: Map<string, TLoadableChildLifecycle>;
|
|
20
|
-
export declare let LIB_BOILERPLATE: ReturnType<typeof CreateBoilerplate>;
|
|
21
|
-
declare function CreateBoilerplate(): LibraryDefinition<{
|
|
7
|
+
declare function CreateBoilerplate(): import("../helpers").LibraryDefinition<{
|
|
22
8
|
cache: typeof Cache;
|
|
23
9
|
configuration: typeof Configuration;
|
|
24
10
|
fetch: typeof Fetch;
|
|
@@ -47,7 +33,6 @@ declare function CreateBoilerplate(): LibraryDefinition<{
|
|
|
47
33
|
type: "string";
|
|
48
34
|
};
|
|
49
35
|
}>;
|
|
50
|
-
export declare
|
|
36
|
+
export declare let LIB_BOILERPLATE: ReturnType<typeof CreateBoilerplate>;
|
|
51
37
|
export declare function CreateApplication<S extends ServiceMap, C extends OptionalModuleConfiguration>({ name, services, configurationLoaders, libraries, configuration, priorityInit, }: ApplicationConfigurationOptions<S, C>): ApplicationDefinition<S, C>;
|
|
52
|
-
export declare function Reset(): void;
|
|
53
38
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.CreateApplication = exports.LIB_BOILERPLATE = void 0;
|
|
4
4
|
const events_1 = require("events");
|
|
5
5
|
const process_1 = require("process");
|
|
6
6
|
const helpers_1 = require("../helpers");
|
|
@@ -8,74 +8,14 @@ const _1 = require(".");
|
|
|
8
8
|
const cache_extension_1 = require("./cache.extension");
|
|
9
9
|
const configuration_extension_1 = require("./configuration.extension");
|
|
10
10
|
const fetch_extension_1 = require("./fetch.extension");
|
|
11
|
+
const lifecycle_extension_1 = require("./lifecycle.extension");
|
|
11
12
|
const logger_extension_1 = require("./logger.extension");
|
|
12
13
|
const scheduler_extension_1 = require("./scheduler.extension");
|
|
13
|
-
// #MARK: Variables
|
|
14
|
-
// These are resettable variables, which are scoped to outside the function on purpose
|
|
15
|
-
// If these were moved inside the service function, then re-running the method would result in application / library references being stranded
|
|
16
|
-
// Items like lib_boilerplate would still exist, but their lifecycles would be not accessible by the current application
|
|
17
|
-
//
|
|
18
|
-
// By moving to outside the function, the internal methods will be able to re-initialize as expected, without needing to fully rebuild every reference everywhere
|
|
19
|
-
// ... in theory
|
|
20
|
-
/**
|
|
21
|
-
* association of projects to { service : Declaration Function }
|
|
22
|
-
*/
|
|
23
|
-
exports.MODULE_MAPPINGS = new Map();
|
|
24
|
-
/**
|
|
25
|
-
* association of projects to { service : Initialized Service }
|
|
26
|
-
*/
|
|
27
|
-
exports.LOADED_MODULES = new Map();
|
|
28
|
-
/**
|
|
29
|
-
* Optimized reverse lookups: Declaration Function => [project, service]
|
|
30
|
-
*/
|
|
31
|
-
exports.REVERSE_MODULE_MAPPING = new Map();
|
|
32
|
-
exports.LOADED_LIFECYCLES = new Map();
|
|
33
|
-
// heisenberg's variables. it's probably here, but maybe not
|
|
34
|
-
// let scheduler: (context: TContext) => TScheduler;
|
|
35
|
-
let logger;
|
|
36
|
-
let internal;
|
|
37
|
-
const COERCE_CONTEXT = (context) => context;
|
|
38
|
-
const WIRING_CONTEXT = COERCE_CONTEXT("boilerplate:wiring");
|
|
39
|
-
// exporting a let makes me feel dirty inside
|
|
40
|
-
// at least it's only for testing
|
|
41
|
-
// #MARK: processEvents
|
|
42
|
-
const processEvents = new Map([
|
|
43
|
-
[
|
|
44
|
-
"SIGTERM",
|
|
45
|
-
async () => {
|
|
46
|
-
logger.warn({ name: "SIGTERM" }, `starting`);
|
|
47
|
-
await Teardown();
|
|
48
|
-
(0, process_1.exit)();
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
[
|
|
52
|
-
"SIGINT",
|
|
53
|
-
async () => {
|
|
54
|
-
logger.warn({ name: "SIGINT" }, `starting`);
|
|
55
|
-
await Teardown();
|
|
56
|
-
(0, process_1.exit)();
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
// ["uncaughtException", () => {}],
|
|
60
|
-
// ["unhandledRejection", (reason, promise) => {}],
|
|
61
|
-
]);
|
|
62
|
-
const BOILERPLATE = () => exports.LOADED_MODULES.get("boilerplate");
|
|
63
|
-
// #MARK: ValidateLibrary
|
|
64
|
-
function ValidateLibrary(project, serviceList) {
|
|
65
|
-
if (_1.is.empty(project)) {
|
|
66
|
-
throw new helpers_1.BootstrapException(COERCE_CONTEXT("CreateLibrary"), "MISSING_LIBRARY_NAME", "Library name is required");
|
|
67
|
-
}
|
|
68
|
-
const services = Object.entries(serviceList);
|
|
69
|
-
// Find the first invalid service
|
|
70
|
-
const invalidService = services.find(([, definition]) => typeof definition !== "function");
|
|
71
|
-
if (invalidService) {
|
|
72
|
-
const [invalidServiceName, service] = invalidService;
|
|
73
|
-
throw new helpers_1.BootstrapException(COERCE_CONTEXT("CreateLibrary"), "INVALID_SERVICE_DEFINITION", `Invalid service definition for '${invalidServiceName}' in library '${project}' (${typeof service}})`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
14
|
// #MARK: CreateBoilerplate
|
|
77
15
|
function CreateBoilerplate() {
|
|
78
|
-
|
|
16
|
+
// ! DO NOT MOVE TO ANOTHER FILE !
|
|
17
|
+
// While it SEEMS LIKE this can be safely moved, it causes code init race conditions.
|
|
18
|
+
return (0, helpers_1.CreateLibrary)({
|
|
79
19
|
configuration: {
|
|
80
20
|
CACHE_PREFIX: {
|
|
81
21
|
default: "",
|
|
@@ -129,61 +69,50 @@ function CreateBoilerplate() {
|
|
|
129
69
|
},
|
|
130
70
|
});
|
|
131
71
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
return [...out, ...list.filter((i) => !out.includes(i))];
|
|
72
|
+
const PRE_CALLBACKS_START = 0;
|
|
73
|
+
const RUNNING_APPLICATIONS = new Map();
|
|
74
|
+
// #MARK: QuickShutdown
|
|
75
|
+
async function QuickShutdown(reason) {
|
|
76
|
+
await (0, helpers_1.each)([...RUNNING_APPLICATIONS.values()], async (application) => {
|
|
77
|
+
application.logger.warn({ reason }, `starting shutdown`);
|
|
78
|
+
await application.teardown();
|
|
79
|
+
});
|
|
142
80
|
}
|
|
143
|
-
// #MARK:
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
// This one hasn't been loaded yet, generate an object with all the correct properties
|
|
151
|
-
exports.LOADED_LIFECYCLES.set(libraryName, lifecycle);
|
|
152
|
-
// not defined for boilerplate (chicken & egg)
|
|
153
|
-
// manually added inside the bootstrap process
|
|
154
|
-
const config = internal?.boilerplate.configuration;
|
|
155
|
-
config?.[configuration_extension_1.LOAD_PROJECT](libraryName, configuration);
|
|
156
|
-
await (0, helpers_1.eachSeries)(WireOrder(priorityInit, Object.keys(services)), async (service) => {
|
|
157
|
-
serviceApis[service] = await WireService(libraryName, service, services[service], lifecycle, internal);
|
|
158
|
-
});
|
|
159
|
-
// mental note: people should probably do all their lifecycle attachments at the base level function
|
|
160
|
-
// otherwise, it'll happen after this wire() call, and go into a black hole (worst case) or fatal error ("best" case)
|
|
161
|
-
return lifecycle;
|
|
81
|
+
// #MARK: processEvents
|
|
82
|
+
const processEvents = new Map([
|
|
83
|
+
[
|
|
84
|
+
"SIGTERM",
|
|
85
|
+
async () => {
|
|
86
|
+
await QuickShutdown("SIGTERM");
|
|
87
|
+
(0, process_1.exit)();
|
|
162
88
|
},
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
|
|
89
|
+
],
|
|
90
|
+
[
|
|
91
|
+
"SIGINT",
|
|
92
|
+
async () => {
|
|
93
|
+
await QuickShutdown("SIGINT");
|
|
94
|
+
(0, process_1.exit)();
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
// ["uncaughtException", () => {}],
|
|
98
|
+
// ["unhandledRejection", (reason, promise) => {}],
|
|
99
|
+
]);
|
|
100
|
+
const BOILERPLATE = (internal) => internal.boot.loadedModules.get("boilerplate");
|
|
173
101
|
// #MARK: CreateApplication
|
|
174
|
-
function CreateApplication({ name, services, configurationLoaders, libraries = [], configuration = {}, priorityInit = [], }) {
|
|
102
|
+
function CreateApplication({ name, services = {}, configurationLoaders, libraries = [], configuration = {}, priorityInit = [], }) {
|
|
103
|
+
let internal;
|
|
175
104
|
priorityInit.forEach((name) => {
|
|
176
105
|
if (!_1.is.function(services[name])) {
|
|
177
|
-
throw new helpers_1.BootstrapException(WIRING_CONTEXT, "MISSING_PRIORITY_SERVICE", `${name} was listed as priority init, but was not found in services`);
|
|
106
|
+
throw new helpers_1.BootstrapException(helpers_1.WIRING_CONTEXT, "MISSING_PRIORITY_SERVICE", `${name} was listed as priority init, but was not found in services`);
|
|
178
107
|
}
|
|
179
108
|
});
|
|
180
109
|
const serviceApis = {};
|
|
181
110
|
const application = {
|
|
182
111
|
[helpers_1.WIRE_PROJECT]: async (internal) => {
|
|
183
|
-
const lifecycle = CreateChildLifecycle(internal);
|
|
184
|
-
|
|
185
|
-
BOILERPLATE()?.configuration?.[configuration_extension_1.LOAD_PROJECT](name, configuration);
|
|
186
|
-
await (0, helpers_1.eachSeries)(WireOrder(priorityInit, Object.keys(services)), async (service) => {
|
|
112
|
+
const lifecycle = (0, lifecycle_extension_1.CreateChildLifecycle)(internal, application.logger);
|
|
113
|
+
internal.boot.lifecycleHooks.set(name, lifecycle);
|
|
114
|
+
BOILERPLATE(internal)?.configuration?.[configuration_extension_1.LOAD_PROJECT](name, configuration);
|
|
115
|
+
await (0, helpers_1.eachSeries)((0, helpers_1.WireOrder)(priorityInit, Object.keys(services)), async (service) => {
|
|
187
116
|
serviceApis[service] = await WireService(name, service, services[service], lifecycle, internal);
|
|
188
117
|
});
|
|
189
118
|
return lifecycle;
|
|
@@ -191,25 +120,33 @@ function CreateApplication({ name, services, configurationLoaders, libraries = [
|
|
|
191
120
|
booted: false,
|
|
192
121
|
bootstrap: async (options) => {
|
|
193
122
|
if (application.booted) {
|
|
194
|
-
throw new helpers_1.BootstrapException(WIRING_CONTEXT, "DOUBLE_BOOT", "Application is already booted! Cannot bootstrap again");
|
|
123
|
+
throw new helpers_1.BootstrapException(helpers_1.WIRING_CONTEXT, "DOUBLE_BOOT", "Application is already booted! Cannot bootstrap again");
|
|
124
|
+
}
|
|
125
|
+
if (internal) {
|
|
126
|
+
throw new helpers_1.BootstrapException(helpers_1.WIRING_CONTEXT, "NO_DUAL_BOOT", "Another application is already active, please terminate");
|
|
195
127
|
}
|
|
196
|
-
|
|
128
|
+
internal = new _1.InternalDefinition();
|
|
129
|
+
await Bootstrap(application, options, internal);
|
|
197
130
|
application.booted = true;
|
|
131
|
+
RUNNING_APPLICATIONS.set(name, application);
|
|
198
132
|
},
|
|
199
133
|
configuration,
|
|
200
134
|
configurationLoaders,
|
|
201
135
|
libraries,
|
|
136
|
+
logger: undefined,
|
|
202
137
|
name,
|
|
203
138
|
priorityInit,
|
|
204
139
|
serviceApis,
|
|
205
140
|
services,
|
|
206
141
|
teardown: async () => {
|
|
207
142
|
if (!application.booted) {
|
|
208
|
-
|
|
143
|
+
processEvents.forEach((callback, event) => process.removeListener(event, callback));
|
|
209
144
|
return;
|
|
210
145
|
}
|
|
211
|
-
await Teardown();
|
|
146
|
+
await Teardown(internal, application.logger);
|
|
147
|
+
internal?.utils?.event?.removeAllListeners?.();
|
|
212
148
|
application.booted = false;
|
|
149
|
+
internal = undefined;
|
|
213
150
|
},
|
|
214
151
|
};
|
|
215
152
|
return application;
|
|
@@ -217,24 +154,23 @@ function CreateApplication({ name, services, configurationLoaders, libraries = [
|
|
|
217
154
|
exports.CreateApplication = CreateApplication;
|
|
218
155
|
// #MARK: WireService
|
|
219
156
|
async function WireService(project, service, definition, lifecycle, internal) {
|
|
220
|
-
const mappings =
|
|
157
|
+
const mappings = internal.boot.moduleMappings.get(project) ?? {};
|
|
221
158
|
if (!_1.is.undefined(mappings[service])) {
|
|
222
|
-
throw new helpers_1.BootstrapException(WIRING_CONTEXT, "DUPLICATE_SERVICE_NAME", `${service} is already defined for ${project}`);
|
|
159
|
+
throw new helpers_1.BootstrapException(helpers_1.WIRING_CONTEXT, "DUPLICATE_SERVICE_NAME", `${service} is already defined for ${project}`);
|
|
223
160
|
}
|
|
224
161
|
mappings[service] = definition;
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
const context = COERCE_CONTEXT(`${project}:${service}`);
|
|
162
|
+
internal.boot.moduleMappings.set(project, mappings);
|
|
163
|
+
const context = (0, helpers_1.COERCE_CONTEXT)(`${project}:${service}`);
|
|
228
164
|
// logger gets defined first, so this really is only for the start of the start of bootstrapping
|
|
229
|
-
const boilerplate = BOILERPLATE();
|
|
165
|
+
const boilerplate = BOILERPLATE(internal);
|
|
230
166
|
const logger = boilerplate?.logger?.context(context);
|
|
231
|
-
const loaded =
|
|
232
|
-
|
|
167
|
+
const loaded = internal.boot.loadedModules.get(project) ?? {};
|
|
168
|
+
internal.boot.loadedModules.set(project, loaded);
|
|
233
169
|
try {
|
|
234
170
|
logger?.trace({ name: WireService }, `initializing`);
|
|
235
|
-
const inject = Object.fromEntries([...
|
|
171
|
+
const inject = Object.fromEntries([...internal.boot.loadedModules.keys()].map((project) => [
|
|
236
172
|
project,
|
|
237
|
-
|
|
173
|
+
internal.boot.loadedModules.get(project),
|
|
238
174
|
]));
|
|
239
175
|
loaded[service] = (await definition({
|
|
240
176
|
...inject,
|
|
@@ -257,14 +193,14 @@ async function WireService(project, service, definition, lifecycle, internal) {
|
|
|
257
193
|
}
|
|
258
194
|
}
|
|
259
195
|
// #MARK: RunStageCallbacks
|
|
260
|
-
async function RunStageCallbacks(stage) {
|
|
196
|
+
async function RunStageCallbacks(stage, internal) {
|
|
261
197
|
const start = Date.now();
|
|
262
198
|
const list = [
|
|
263
199
|
// boilerplate priority
|
|
264
|
-
|
|
200
|
+
internal.boot.lifecycleHooks.get("boilerplate").getCallbacks(stage),
|
|
265
201
|
// children next
|
|
266
202
|
// ...
|
|
267
|
-
...[...
|
|
203
|
+
...[...internal.boot.lifecycleHooks.entries()]
|
|
268
204
|
.filter(([name]) => name !== "boilerplate")
|
|
269
205
|
.map(([, thing]) => thing.getCallbacks(stage)),
|
|
270
206
|
];
|
|
@@ -295,67 +231,20 @@ async function RunStageCallbacks(stage) {
|
|
|
295
231
|
internal.boot.completedLifecycleEvents.add(stage);
|
|
296
232
|
return `${Date.now() - start}ms`;
|
|
297
233
|
}
|
|
298
|
-
const PRE_CALLBACKS_START = 0;
|
|
299
|
-
// #MARK: BuildSortOrder
|
|
300
|
-
function BuildSortOrder(app) {
|
|
301
|
-
if (_1.is.empty(app.libraries)) {
|
|
302
|
-
return [];
|
|
303
|
-
}
|
|
304
|
-
const libraryMap = new Map(app.libraries.map((i) => [i.name, i]));
|
|
305
|
-
// Recursive function to check for missing dependencies at any depth
|
|
306
|
-
function checkDependencies(library) {
|
|
307
|
-
if (!_1.is.empty(library.depends)) {
|
|
308
|
-
library.depends.forEach((item) => {
|
|
309
|
-
const loaded = libraryMap.get(item.name);
|
|
310
|
-
if (!loaded) {
|
|
311
|
-
throw new helpers_1.BootstrapException(WIRING_CONTEXT, "MISSING_DEPENDENCY", `${item.name} is required by ${library.name}, but was not provided`);
|
|
312
|
-
}
|
|
313
|
-
// just "are they the same object reference?" as the test
|
|
314
|
-
// you get a warning, and the one the app asks for
|
|
315
|
-
// hopefully there is no breaking changes
|
|
316
|
-
if (loaded !== item) {
|
|
317
|
-
logger.warn({ name: BuildSortOrder }, "[%s] depends different version {%s}", library.name, item.name);
|
|
318
|
-
}
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
return library;
|
|
322
|
-
}
|
|
323
|
-
let starting = app.libraries.map((i) => checkDependencies(i));
|
|
324
|
-
const out = [];
|
|
325
|
-
while (!_1.is.empty(starting)) {
|
|
326
|
-
const next = starting.find((library) => {
|
|
327
|
-
if (_1.is.empty(library.depends)) {
|
|
328
|
-
return true;
|
|
329
|
-
}
|
|
330
|
-
return library.depends?.every((depend) => out.some((i) => i.name === depend.name));
|
|
331
|
-
});
|
|
332
|
-
if (!next) {
|
|
333
|
-
logger.fatal({ current: out.map((i) => i.name), name: BuildSortOrder });
|
|
334
|
-
throw new helpers_1.BootstrapException(WIRING_CONTEXT, "BAD_SORT", `Cannot find a next lib to load`);
|
|
335
|
-
}
|
|
336
|
-
starting = starting.filter((i) => next.name !== i.name);
|
|
337
|
-
out.push(next);
|
|
338
|
-
}
|
|
339
|
-
const order = out.map((i) => i.name);
|
|
340
|
-
logger.trace({ name: BuildSortOrder, order }, ``);
|
|
341
|
-
return out;
|
|
342
|
-
}
|
|
343
|
-
let startup;
|
|
344
234
|
// #MARK: Bootstrap
|
|
345
|
-
async function Bootstrap(application, options = {}) {
|
|
346
|
-
if (internal) {
|
|
347
|
-
throw new helpers_1.BootstrapException(WIRING_CONTEXT, "NO_DUAL_BOOT", "Another application is already active, please terminate");
|
|
348
|
-
}
|
|
349
|
-
internal = new _1.InternalDefinition();
|
|
235
|
+
async function Bootstrap(application, options = {}, internal) {
|
|
350
236
|
// const
|
|
351
237
|
internal.boot = {
|
|
352
238
|
application,
|
|
353
239
|
completedLifecycleEvents: new Set(),
|
|
240
|
+
lifecycleHooks: new Map(),
|
|
241
|
+
loadedModules: new Map(),
|
|
242
|
+
moduleMappings: new Map(),
|
|
354
243
|
options,
|
|
355
244
|
phase: "bootstrap",
|
|
245
|
+
startup: new Date(),
|
|
356
246
|
};
|
|
357
247
|
process.title = application.name;
|
|
358
|
-
startup = new Date();
|
|
359
248
|
try {
|
|
360
249
|
const STATS = {};
|
|
361
250
|
const CONSTRUCT = {};
|
|
@@ -364,7 +253,7 @@ async function Bootstrap(application, options = {}) {
|
|
|
364
253
|
// otherwise it'd only be there for everyone else
|
|
365
254
|
const api = {};
|
|
366
255
|
internal.boilerplate = api;
|
|
367
|
-
|
|
256
|
+
internal.boot.loadedModules.set("boilerplate", api);
|
|
368
257
|
STATS.Construct = CONSTRUCT;
|
|
369
258
|
// * Recreate base eventemitter
|
|
370
259
|
internal.utils.event = new events_1.EventEmitter();
|
|
@@ -373,11 +262,12 @@ async function Bootstrap(application, options = {}) {
|
|
|
373
262
|
exports.LIB_BOILERPLATE = CreateBoilerplate();
|
|
374
263
|
// * Wire it
|
|
375
264
|
let start = Date.now();
|
|
376
|
-
await exports.LIB_BOILERPLATE[helpers_1.WIRE_PROJECT](internal);
|
|
265
|
+
await exports.LIB_BOILERPLATE[helpers_1.WIRE_PROJECT](internal, WireService, undefined);
|
|
377
266
|
CONSTRUCT.boilerplate = `${Date.now() - start}ms`;
|
|
378
267
|
// ~ configuration
|
|
379
268
|
api.configuration?.[configuration_extension_1.LOAD_PROJECT](exports.LIB_BOILERPLATE.name, exports.LIB_BOILERPLATE.configuration);
|
|
380
|
-
logger = api.logger.context(WIRING_CONTEXT);
|
|
269
|
+
const logger = api.logger.context(helpers_1.WIRING_CONTEXT);
|
|
270
|
+
application.logger = logger;
|
|
381
271
|
logger.info({ name: Bootstrap }, `[boilerplate] wiring complete`);
|
|
382
272
|
// * Wire in various shutdown events
|
|
383
273
|
processEvents.forEach((callback, event) => {
|
|
@@ -386,17 +276,17 @@ async function Bootstrap(application, options = {}) {
|
|
|
386
276
|
});
|
|
387
277
|
// * Add in libraries
|
|
388
278
|
application.libraries ??= [];
|
|
389
|
-
const order = BuildSortOrder(application);
|
|
279
|
+
const order = (0, helpers_1.BuildSortOrder)(application, logger);
|
|
390
280
|
await (0, helpers_1.eachSeries)(order, async (i) => {
|
|
391
281
|
start = Date.now();
|
|
392
282
|
logger.info({ name: Bootstrap }, `[%s] init project`, i.name);
|
|
393
|
-
await i[helpers_1.WIRE_PROJECT](internal);
|
|
283
|
+
await i[helpers_1.WIRE_PROJECT](internal, WireService, logger);
|
|
394
284
|
CONSTRUCT[i.name] = `${Date.now() - start}ms`;
|
|
395
285
|
});
|
|
396
286
|
logger.info({ name: Bootstrap }, `init application`);
|
|
397
287
|
// * Finally the application
|
|
398
288
|
start = Date.now();
|
|
399
|
-
await application[helpers_1.WIRE_PROJECT](internal);
|
|
289
|
+
await application[helpers_1.WIRE_PROJECT](internal, WireService, logger);
|
|
400
290
|
CONSTRUCT[application.name] = `${Date.now() - start}ms`;
|
|
401
291
|
// ? Configuration values provided bootstrap take priority over module level
|
|
402
292
|
if (!_1.is.empty(options?.configuration)) {
|
|
@@ -404,19 +294,19 @@ async function Bootstrap(application, options = {}) {
|
|
|
404
294
|
}
|
|
405
295
|
// - Kick off lifecycle
|
|
406
296
|
logger.debug({ name: Bootstrap }, `[PreInit] running lifecycle callbacks`);
|
|
407
|
-
STATS.PreInit = await RunStageCallbacks("PreInit");
|
|
297
|
+
STATS.PreInit = await RunStageCallbacks("PreInit", internal);
|
|
408
298
|
// - Pull in user configurations
|
|
409
299
|
logger.debug({ name: Bootstrap }, "loading configuration");
|
|
410
300
|
STATS.Configure =
|
|
411
|
-
await BOILERPLATE()?.configuration?.[configuration_extension_1.INITIALIZE](application);
|
|
301
|
+
await BOILERPLATE(internal)?.configuration?.[configuration_extension_1.INITIALIZE](application);
|
|
412
302
|
// - Run through other events in order
|
|
413
303
|
logger.debug({ name: Bootstrap }, `[PostConfig] running lifecycle callbacks`);
|
|
414
|
-
STATS.PostConfig = await RunStageCallbacks("PostConfig");
|
|
304
|
+
STATS.PostConfig = await RunStageCallbacks("PostConfig", internal);
|
|
415
305
|
logger.debug({ name: Bootstrap }, `[Bootstrap] running lifecycle callbacks`);
|
|
416
|
-
STATS.Bootstrap = await RunStageCallbacks("Bootstrap");
|
|
306
|
+
STATS.Bootstrap = await RunStageCallbacks("Bootstrap", internal);
|
|
417
307
|
logger.debug({ name: Bootstrap }, `[Ready] running lifecycle callbacks`);
|
|
418
|
-
STATS.Ready = await RunStageCallbacks("Ready");
|
|
419
|
-
STATS.Total = `${Date.now() - startup.getTime()}ms`;
|
|
308
|
+
STATS.Ready = await RunStageCallbacks("Ready", internal);
|
|
309
|
+
STATS.Total = `${Date.now() - internal.boot.startup.getTime()}ms`;
|
|
420
310
|
// * App is ready!
|
|
421
311
|
logger.info(options?.showExtraBootStats
|
|
422
312
|
? { ...STATS, name: Bootstrap }
|
|
@@ -432,7 +322,7 @@ async function Bootstrap(application, options = {}) {
|
|
|
432
322
|
}
|
|
433
323
|
}
|
|
434
324
|
// #MARK: Teardown
|
|
435
|
-
async function Teardown() {
|
|
325
|
+
async function Teardown(internal, logger) {
|
|
436
326
|
if (!internal) {
|
|
437
327
|
return;
|
|
438
328
|
}
|
|
@@ -442,66 +332,23 @@ async function Teardown() {
|
|
|
442
332
|
try {
|
|
443
333
|
// * PreShutdown
|
|
444
334
|
logger.debug({ name: Teardown }, `[PreShutdown] running lifecycle callbacks`);
|
|
445
|
-
await RunStageCallbacks("PreShutdown");
|
|
335
|
+
await RunStageCallbacks("PreShutdown", internal);
|
|
446
336
|
// * Formally shutting down
|
|
447
337
|
logger.info({ name: Teardown }, `tearing down application`);
|
|
448
338
|
logger.debug({ name: Teardown }, `[ShutdownStart] running lifecycle callbacks`);
|
|
449
|
-
await RunStageCallbacks("ShutdownStart");
|
|
339
|
+
await RunStageCallbacks("ShutdownStart", internal);
|
|
450
340
|
logger.debug({ name: Teardown }, `[ShutdownComplete] running lifecycle callbacks`);
|
|
451
|
-
await RunStageCallbacks("ShutdownComplete");
|
|
341
|
+
await RunStageCallbacks("ShutdownComplete", internal);
|
|
452
342
|
}
|
|
453
343
|
catch (error) {
|
|
454
344
|
// ! oof
|
|
455
345
|
logger.error({ error, name: Teardown }, "error occurred during teardown, some lifecycle events may be incomplete");
|
|
456
346
|
}
|
|
457
347
|
// * Final resource cleanup, attempt to reset everything possible
|
|
458
|
-
logger.info({
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
function Reset() {
|
|
348
|
+
logger.info({
|
|
349
|
+
name: Teardown,
|
|
350
|
+
started_at: internal.utils.relativeDate(internal.boot.startup),
|
|
351
|
+
}, `application terminated`);
|
|
463
352
|
processEvents.forEach((callback, event) => process.removeListener(event, callback));
|
|
464
|
-
internal?.utils?.event?.removeAllListeners?.();
|
|
465
|
-
exports.MODULE_MAPPINGS = new Map();
|
|
466
|
-
exports.LOADED_MODULES = new Map();
|
|
467
|
-
exports.LOADED_LIFECYCLES = new Map();
|
|
468
|
-
exports.REVERSE_MODULE_MAPPING = new Map();
|
|
469
|
-
internal = undefined;
|
|
470
|
-
logger = undefined;
|
|
471
|
-
}
|
|
472
|
-
exports.Reset = Reset;
|
|
473
|
-
// # Lifecycle
|
|
474
|
-
function CreateChildLifecycle(internal) {
|
|
475
|
-
const childCallbacks = {};
|
|
476
|
-
const [
|
|
477
|
-
// ! This list must be sorted!
|
|
478
|
-
onPreInit, onPostConfig, onBootstrap, onReady, onPreShutdown, onShutdownStart, onShutdownComplete,] = helpers_1.LIFECYCLE_STAGES.map((stage) => {
|
|
479
|
-
childCallbacks[stage] = [];
|
|
480
|
-
return (callback, priority) => {
|
|
481
|
-
if (internal.boot.completedLifecycleEvents.has(stage)) {
|
|
482
|
-
// this is makes "earliest run time" logic way easier to implement
|
|
483
|
-
// intended mode of operation
|
|
484
|
-
if (["PreInit", "PostConfig", "Bootstrap", "Ready"].includes(stage)) {
|
|
485
|
-
setImmediate(async () => await callback());
|
|
486
|
-
return;
|
|
487
|
-
}
|
|
488
|
-
// What does this mean in reality?
|
|
489
|
-
// Probably a broken unit test, I really don't know what workflow would cause this
|
|
490
|
-
logger.fatal({ name: CreateChildLifecycle }, `on${stage} late attach, cannot attach callback`);
|
|
491
|
-
return;
|
|
492
|
-
}
|
|
493
|
-
childCallbacks[stage].push([callback, priority]);
|
|
494
|
-
};
|
|
495
|
-
});
|
|
496
|
-
return {
|
|
497
|
-
getCallbacks: (stage) => childCallbacks[stage],
|
|
498
|
-
onBootstrap,
|
|
499
|
-
onPostConfig,
|
|
500
|
-
onPreInit,
|
|
501
|
-
onPreShutdown,
|
|
502
|
-
onReady,
|
|
503
|
-
onShutdownComplete,
|
|
504
|
-
onShutdownStart,
|
|
505
|
-
};
|
|
506
353
|
}
|
|
507
354
|
//# sourceMappingURL=wiring.extension.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wiring.extension.js","sourceRoot":"","sources":["../../src/extensions/wiring.extension.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wiring.extension.js","sourceRoot":"","sources":["../../src/extensions/wiring.extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -188,12 +188,20 @@ type Wire = {
|
|
|
188
188
|
* - initializes lifecycle
|
|
189
189
|
* - attaches event emitters
|
|
190
190
|
*/
|
|
191
|
-
[WIRE_PROJECT]: (internal: InternalDefinition) => Promise<TChildLifecycle>;
|
|
191
|
+
[WIRE_PROJECT]: (internal: InternalDefinition, WireService: (project: string, service: string, definition: ServiceFunction, lifecycle: TLifecycleBase, internal: InternalDefinition) => Promise<TServiceReturn<object>>, logger: ILogger) => Promise<TChildLifecycle>;
|
|
192
192
|
};
|
|
193
193
|
export type LibraryDefinition<S extends ServiceMap, C extends OptionalModuleConfiguration> = LibraryConfigurationOptions<S, C> & Wire;
|
|
194
194
|
export type ApplicationDefinition<S extends ServiceMap, C extends OptionalModuleConfiguration> = ApplicationConfigurationOptions<S, C> & Wire & {
|
|
195
|
+
logger: ILogger;
|
|
195
196
|
booted: boolean;
|
|
196
197
|
bootstrap: (options?: BootstrapOptions) => Promise<void>;
|
|
197
198
|
teardown: () => Promise<void>;
|
|
198
199
|
};
|
|
200
|
+
type TLibrary = LibraryDefinition<ServiceMap, OptionalModuleConfiguration>;
|
|
201
|
+
export declare function BuildSortOrder<S extends ServiceMap, C extends OptionalModuleConfiguration>(app: ApplicationDefinition<S, C>, logger: ILogger): TLibrary[];
|
|
202
|
+
export declare const COERCE_CONTEXT: (context: string) => TContext;
|
|
203
|
+
export declare const WIRING_CONTEXT: TContext;
|
|
204
|
+
export declare function ValidateLibrary<S extends ServiceMap>(project: string, serviceList: S): void | never;
|
|
205
|
+
export declare function WireOrder<T extends string>(priority: T[], list: T[]): T[];
|
|
206
|
+
export declare function CreateLibrary<S extends ServiceMap, C extends OptionalModuleConfiguration>({ name: libraryName, configuration, priorityInit, services, depends, }: LibraryConfigurationOptions<S, C>): LibraryDefinition<S, C>;
|
|
199
207
|
export {};
|
|
@@ -1,5 +1,107 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WIRE_PROJECT = void 0;
|
|
3
|
+
exports.CreateLibrary = exports.WireOrder = exports.ValidateLibrary = exports.WIRING_CONTEXT = exports.COERCE_CONTEXT = exports.BuildSortOrder = exports.WIRE_PROJECT = void 0;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const lifecycle_extension_1 = require("../extensions/lifecycle.extension");
|
|
4
6
|
exports.WIRE_PROJECT = Symbol.for("wire-project");
|
|
7
|
+
function BuildSortOrder(app, logger) {
|
|
8
|
+
if (__1.is.empty(app.libraries)) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
const libraryMap = new Map(app.libraries.map((i) => [i.name, i]));
|
|
12
|
+
// Recursive function to check for missing dependencies at any depth
|
|
13
|
+
function checkDependencies(library) {
|
|
14
|
+
if (!__1.is.empty(library.depends)) {
|
|
15
|
+
library.depends.forEach((item) => {
|
|
16
|
+
const loaded = libraryMap.get(item.name);
|
|
17
|
+
if (!loaded) {
|
|
18
|
+
throw new __1.BootstrapException(exports.WIRING_CONTEXT, "MISSING_DEPENDENCY", `${item.name} is required by ${library.name}, but was not provided`);
|
|
19
|
+
}
|
|
20
|
+
// just "are they the same object reference?" as the test
|
|
21
|
+
// you get a warning, and the one the app asks for
|
|
22
|
+
// hopefully there is no breaking changes
|
|
23
|
+
if (loaded !== item) {
|
|
24
|
+
logger.warn({ name: BuildSortOrder }, "[%s] depends different version {%s}", library.name, item.name);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return library;
|
|
29
|
+
}
|
|
30
|
+
let starting = app.libraries.map((i) => checkDependencies(i));
|
|
31
|
+
const out = [];
|
|
32
|
+
while (!__1.is.empty(starting)) {
|
|
33
|
+
const next = starting.find((library) => {
|
|
34
|
+
if (__1.is.empty(library.depends)) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return library.depends?.every((depend) => out.some((i) => i.name === depend.name));
|
|
38
|
+
});
|
|
39
|
+
if (!next) {
|
|
40
|
+
logger.fatal({ current: out.map((i) => i.name), name: BuildSortOrder });
|
|
41
|
+
throw new __1.BootstrapException(exports.WIRING_CONTEXT, "BAD_SORT", `Cannot find a next lib to load`);
|
|
42
|
+
}
|
|
43
|
+
starting = starting.filter((i) => next.name !== i.name);
|
|
44
|
+
out.push(next);
|
|
45
|
+
}
|
|
46
|
+
const order = out.map((i) => i.name);
|
|
47
|
+
logger.trace({ name: BuildSortOrder, order }, ``);
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
exports.BuildSortOrder = BuildSortOrder;
|
|
51
|
+
const COERCE_CONTEXT = (context) => context;
|
|
52
|
+
exports.COERCE_CONTEXT = COERCE_CONTEXT;
|
|
53
|
+
exports.WIRING_CONTEXT = (0, exports.COERCE_CONTEXT)("boilerplate:wiring");
|
|
54
|
+
function ValidateLibrary(project, serviceList) {
|
|
55
|
+
if (__1.is.empty(project)) {
|
|
56
|
+
throw new __1.BootstrapException((0, exports.COERCE_CONTEXT)("CreateLibrary"), "MISSING_LIBRARY_NAME", "Library name is required");
|
|
57
|
+
}
|
|
58
|
+
const services = Object.entries(serviceList);
|
|
59
|
+
// Find the first invalid service
|
|
60
|
+
const invalidService = services.find(([, definition]) => typeof definition !== "function");
|
|
61
|
+
if (invalidService) {
|
|
62
|
+
const [invalidServiceName, service] = invalidService;
|
|
63
|
+
throw new __1.BootstrapException((0, exports.COERCE_CONTEXT)("CreateLibrary"), "INVALID_SERVICE_DEFINITION", `Invalid service definition for '${invalidServiceName}' in library '${project}' (${typeof service}})`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.ValidateLibrary = ValidateLibrary;
|
|
67
|
+
function WireOrder(priority, list) {
|
|
68
|
+
const out = [...(priority || [])];
|
|
69
|
+
if (!__1.is.empty(priority)) {
|
|
70
|
+
const check = __1.is.unique(priority);
|
|
71
|
+
if (check.length !== out.length) {
|
|
72
|
+
throw new __1.BootstrapException(exports.WIRING_CONTEXT, "DOUBLE_PRIORITY", "There are duplicate items in the priority load list");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return [...out, ...list.filter((i) => !out.includes(i))];
|
|
76
|
+
}
|
|
77
|
+
exports.WireOrder = WireOrder;
|
|
78
|
+
function CreateLibrary({ name: libraryName, configuration = {}, priorityInit, services, depends, }) {
|
|
79
|
+
ValidateLibrary(libraryName, services);
|
|
80
|
+
const serviceApis = {};
|
|
81
|
+
const library = {
|
|
82
|
+
[exports.WIRE_PROJECT]: async (internal, WireService, logger) => {
|
|
83
|
+
const lifecycle = (0, lifecycle_extension_1.CreateChildLifecycle)(internal, logger);
|
|
84
|
+
// This one hasn't been loaded yet, generate an object with all the correct properties
|
|
85
|
+
internal.boot.lifecycleHooks.set(libraryName, lifecycle);
|
|
86
|
+
// not defined for boilerplate (chicken & egg)
|
|
87
|
+
// manually added inside the bootstrap process
|
|
88
|
+
const config = internal?.boilerplate.configuration;
|
|
89
|
+
config?.[__1.LOAD_PROJECT](libraryName, configuration);
|
|
90
|
+
await (0, __1.eachSeries)(WireOrder(priorityInit, Object.keys(services)), async (service) => {
|
|
91
|
+
serviceApis[service] = await WireService(libraryName, service, services[service], lifecycle, internal);
|
|
92
|
+
});
|
|
93
|
+
// mental note: people should probably do all their lifecycle attachments at the base level function
|
|
94
|
+
// otherwise, it'll happen after this wire() call, and go into a black hole (worst case) or fatal error ("best" case)
|
|
95
|
+
return lifecycle;
|
|
96
|
+
},
|
|
97
|
+
configuration,
|
|
98
|
+
depends,
|
|
99
|
+
name: libraryName,
|
|
100
|
+
priorityInit,
|
|
101
|
+
serviceApis,
|
|
102
|
+
services,
|
|
103
|
+
};
|
|
104
|
+
return library;
|
|
105
|
+
}
|
|
106
|
+
exports.CreateLibrary = CreateLibrary;
|
|
5
107
|
//# sourceMappingURL=wiring.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wiring.helper.js","sourceRoot":"","sources":["../../src/helpers/wiring.helper.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"wiring.helper.js","sourceRoot":"","sources":["../../src/helpers/wiring.helper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"repository": {
|
|
4
4
|
"url": "git+https://github.com/Digital-Alchemy-TS/core"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.3.
|
|
6
|
+
"version": "0.3.12",
|
|
7
7
|
"author": {
|
|
8
8
|
"url": "https://github.com/zoe-codez",
|
|
9
9
|
"name": "Zoe Codez"
|
|
@@ -73,6 +73,11 @@
|
|
|
73
73
|
"typescript": "^5.4.3"
|
|
74
74
|
},
|
|
75
75
|
"jest": {
|
|
76
|
+
"collectCoverage": true,
|
|
77
|
+
"coverageReporters": [
|
|
78
|
+
"text",
|
|
79
|
+
"cobertura"
|
|
80
|
+
],
|
|
76
81
|
"preset": "ts-jest",
|
|
77
82
|
"testEnvironment": "node",
|
|
78
83
|
"moduleFileExtensions": [
|