@digital-alchemy/core 24.8.4 → 24.9.3
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/README.md +4 -1
- package/dist/helpers/async.helper.d.ts +1 -1
- package/dist/helpers/async.helper.js +13 -14
- package/dist/helpers/async.helper.js.map +1 -1
- package/dist/helpers/config-environment-loader.helper.js +16 -20
- package/dist/helpers/config-environment-loader.helper.js.map +1 -1
- package/dist/helpers/config-file-loader.helper.js +39 -46
- package/dist/helpers/config-file-loader.helper.js.map +1 -1
- package/dist/helpers/config.helper.d.ts +23 -2
- package/dist/helpers/config.helper.js +28 -38
- package/dist/helpers/config.helper.js.map +1 -1
- package/dist/helpers/context.helper.js +1 -2
- package/dist/helpers/cron.helper.d.ts +27 -0
- package/dist/helpers/cron.helper.js +4 -7
- package/dist/helpers/cron.helper.js.map +1 -1
- package/dist/helpers/errors.helper.d.ts +0 -12
- package/dist/helpers/errors.helper.js +2 -23
- package/dist/helpers/errors.helper.js.map +1 -1
- package/dist/helpers/events.helper.js +4 -10
- package/dist/helpers/events.helper.js.map +1 -1
- package/dist/helpers/extend.helper.js +12 -17
- package/dist/helpers/extend.helper.js.map +1 -1
- package/dist/helpers/index.d.ts +2 -4
- package/dist/helpers/index.js +14 -19
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/lifecycle.helper.d.ts +1 -5
- package/dist/helpers/lifecycle.helper.js +1 -4
- package/dist/helpers/lifecycle.helper.js.map +1 -1
- package/dist/{extensions/logger.extension.d.ts → helpers/logger.helper.d.ts} +33 -40
- package/dist/helpers/logger.helper.js +10 -0
- package/dist/helpers/logger.helper.js.map +1 -0
- package/dist/helpers/module.helper.d.ts +74 -0
- package/dist/helpers/module.helper.js +131 -0
- package/dist/helpers/module.helper.js.map +1 -0
- package/dist/helpers/utilities.helper.d.ts +1 -0
- package/dist/helpers/utilities.helper.js +57 -58
- package/dist/helpers/utilities.helper.js.map +1 -1
- package/dist/helpers/wiring.helper.d.ts +77 -23
- package/dist/helpers/wiring.helper.js +45 -47
- package/dist/helpers/wiring.helper.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/services/als.extension.d.ts +2 -0
- package/dist/services/als.extension.js +17 -0
- package/dist/services/als.extension.js.map +1 -0
- package/dist/services/configuration.extension.d.ts +7 -0
- package/dist/services/configuration.extension.js +117 -0
- package/dist/services/configuration.extension.js.map +1 -0
- package/dist/{extensions → services}/index.d.ts +1 -3
- package/dist/services/index.js +8 -0
- package/dist/services/index.js.map +1 -0
- package/dist/{extensions → services}/internal.extension.d.ts +7 -23
- package/dist/{extensions → services}/internal.extension.js +43 -55
- package/dist/services/internal.extension.js.map +1 -0
- package/dist/{extensions → services}/is.extension.d.ts +5 -0
- package/dist/{extensions → services}/is.extension.js +20 -15
- package/dist/services/is.extension.js.map +1 -0
- package/dist/{extensions → services}/lifecycle.extension.js +17 -19
- package/dist/services/lifecycle.extension.js.map +1 -0
- package/dist/services/logger.extension.d.ts +2 -0
- package/dist/services/logger.extension.js +200 -0
- package/dist/services/logger.extension.js.map +1 -0
- package/dist/services/scheduler.extension.d.ts +2 -0
- package/dist/services/scheduler.extension.js +108 -0
- package/dist/services/scheduler.extension.js.map +1 -0
- package/dist/services/wiring.extension.d.ts +111 -0
- package/dist/services/wiring.extension.js +437 -0
- package/dist/services/wiring.extension.js.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-logger.d.ts +2 -0
- package/dist/testing/mock-logger.js +11 -0
- package/dist/testing/mock-logger.js.map +1 -0
- package/dist/testing/test-module.d.ts +112 -0
- package/dist/testing/test-module.js +138 -0
- package/dist/testing/test-module.js.map +1 -0
- package/package.json +57 -43
- package/dist/extensions/cache.extension.d.ts +0 -2
- package/dist/extensions/cache.extension.js +0 -90
- package/dist/extensions/cache.extension.js.map +0 -1
- package/dist/extensions/configuration.extension.d.ts +0 -52
- package/dist/extensions/configuration.extension.js +0 -131
- package/dist/extensions/configuration.extension.js.map +0 -1
- package/dist/extensions/fetch.extension.d.ts +0 -17
- package/dist/extensions/fetch.extension.js +0 -133
- package/dist/extensions/fetch.extension.js.map +0 -1
- package/dist/extensions/index.js +0 -13
- package/dist/extensions/index.js.map +0 -1
- package/dist/extensions/internal.extension.js.map +0 -1
- package/dist/extensions/is.extension.js.map +0 -1
- package/dist/extensions/lifecycle.extension.js.map +0 -1
- package/dist/extensions/logger.extension.js +0 -186
- package/dist/extensions/logger.extension.js.map +0 -1
- package/dist/extensions/metrics.extension.d.ts +0 -18
- package/dist/extensions/metrics.extension.js +0 -156
- package/dist/extensions/metrics.extension.js.map +0 -1
- package/dist/extensions/scheduler.extension.d.ts +0 -21
- package/dist/extensions/scheduler.extension.js +0 -133
- package/dist/extensions/scheduler.extension.js.map +0 -1
- package/dist/extensions/wiring.extension.d.ts +0 -50
- package/dist/extensions/wiring.extension.js +0 -374
- package/dist/extensions/wiring.extension.js.map +0 -1
- package/dist/helpers/cache-memory.helper.d.ts +0 -6
- package/dist/helpers/cache-memory.helper.js +0 -68
- package/dist/helpers/cache-memory.helper.js.map +0 -1
- package/dist/helpers/cache-redis.helper.d.ts +0 -6
- package/dist/helpers/cache-redis.helper.js +0 -73
- package/dist/helpers/cache-redis.helper.js.map +0 -1
- package/dist/helpers/cache.helper.d.ts +0 -19
- package/dist/helpers/cache.helper.js +0 -9
- package/dist/helpers/cache.helper.js.map +0 -1
- package/dist/helpers/fetch.helper.d.ts +0 -165
- package/dist/helpers/fetch.helper.js +0 -173
- package/dist/helpers/fetch.helper.js.map +0 -1
- /package/dist/{extensions → services}/lifecycle.extension.d.ts +0 -0
|
@@ -1,53 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.noop = exports.asyncNoop = exports.ACTIVE_DEBOUNCE = exports.ACTIVE_THROTTLE = exports.YEAR = exports.PERCENT = exports.SECOND = exports.WEEK = exports.DAY = exports.HOUR = exports.MINUTE = exports.DOWN = exports.NOT_FOUND = exports.NO_CHANGE = exports.EMPTY = exports.FIRST = exports.NONE = exports.START = exports.LABEL = exports.SAME = exports.SINGLE = exports.INCREMENT = exports.ARRAY_OFFSET = exports.VALUE = exports.UP = exports.INVERT_VALUE = exports.DEFAULT_LIMIT = exports.TWO_THIRDS = exports.ONE_THIRD = exports.HALF = exports.PAIR = exports.EVEN = void 0;
|
|
4
|
-
exports.sleep = sleep;
|
|
5
|
-
exports.throttle = throttle;
|
|
6
|
-
exports.debounce = debounce;
|
|
7
|
-
exports.PEAT = PEAT;
|
|
8
|
-
const is_extension_1 = require("../extensions/is.extension");
|
|
1
|
+
import { is } from "../services/is.extension";
|
|
9
2
|
/* eslint-disable @typescript-eslint/no-magic-numbers */
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
export const EVEN = 2;
|
|
4
|
+
export const PAIR = 2;
|
|
5
|
+
export const HALF = 0.5;
|
|
6
|
+
export const ONE_THIRD = 1 / 3;
|
|
7
|
+
export const TWO_THIRDS = 2 / 3;
|
|
15
8
|
/**
|
|
16
9
|
* Good for a surprising number of situations
|
|
17
10
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
export const DEFAULT_LIMIT = 5;
|
|
12
|
+
export const INVERT_VALUE = -1;
|
|
20
13
|
// Sort
|
|
21
|
-
|
|
14
|
+
export const UP = 1;
|
|
22
15
|
// [LABEL,VALUE]
|
|
23
|
-
|
|
16
|
+
export const VALUE = 1;
|
|
24
17
|
// Standard value
|
|
25
|
-
|
|
18
|
+
export const ARRAY_OFFSET = 1;
|
|
26
19
|
// array[number +- increment]
|
|
27
|
-
|
|
20
|
+
export const INCREMENT = 1;
|
|
28
21
|
// Generic one-ness
|
|
29
|
-
|
|
22
|
+
export const SINGLE = 1;
|
|
30
23
|
// Sorting
|
|
31
|
-
|
|
24
|
+
export const SAME = 0;
|
|
32
25
|
// [LABEL,VALUE]
|
|
33
|
-
|
|
26
|
+
export const LABEL = 0;
|
|
34
27
|
// Generic start of something
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
28
|
+
export const START = 0;
|
|
29
|
+
export const NONE = 0;
|
|
30
|
+
export const FIRST = 0;
|
|
31
|
+
export const EMPTY = 0;
|
|
32
|
+
export const NO_CHANGE = 0;
|
|
40
33
|
// Testing of indexes
|
|
41
|
-
|
|
34
|
+
export const NOT_FOUND = -1;
|
|
42
35
|
// Sorting
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
export const DOWN = -1;
|
|
37
|
+
export const MINUTE = 60_000;
|
|
38
|
+
export const HOUR = 3_600_000;
|
|
39
|
+
export const DAY = 86_400_000;
|
|
40
|
+
export const WEEK = 7 * DAY;
|
|
41
|
+
export const SECOND = 1000;
|
|
42
|
+
export const PERCENT = 100;
|
|
43
|
+
export const YEAR = 365 * DAY;
|
|
44
|
+
export const ACTIVE_SLEEPS = new Set();
|
|
51
45
|
/**
|
|
52
46
|
* Defaults to 1000 (1 second).
|
|
53
47
|
*
|
|
@@ -68,58 +62,63 @@ exports.YEAR = 365 * exports.DAY;
|
|
|
68
62
|
* console.log(end - start); // 1000, because we stopped it early and executed
|
|
69
63
|
* ```
|
|
70
64
|
*/
|
|
71
|
-
function sleep(target =
|
|
65
|
+
export function sleep(target = SECOND) {
|
|
72
66
|
// done function from promise
|
|
73
67
|
let done;
|
|
74
|
-
const timeout = setTimeout(() =>
|
|
68
|
+
const timeout = setTimeout(() => {
|
|
69
|
+
if (done) {
|
|
70
|
+
done();
|
|
71
|
+
}
|
|
72
|
+
ACTIVE_SLEEPS.delete(out);
|
|
73
|
+
}, is.date(target) ? target.getTime() - Date.now() : target);
|
|
75
74
|
// Take a normal promise, add a `.kill` to it
|
|
76
75
|
// You can await as normal, or call the function
|
|
77
|
-
const out = new Promise(
|
|
76
|
+
const out = new Promise(i => (done = i));
|
|
77
|
+
ACTIVE_SLEEPS.add(out);
|
|
78
78
|
out.kill = (execute = "stop") => {
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
ACTIVE_SLEEPS.delete(out);
|
|
80
|
+
if (execute === "continue" && done) {
|
|
81
|
+
done();
|
|
81
82
|
}
|
|
82
83
|
clearTimeout(timeout);
|
|
83
84
|
done = undefined;
|
|
84
85
|
};
|
|
85
86
|
return out;
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
export const ACTIVE_THROTTLE = new Set();
|
|
89
|
+
export const ACTIVE_DEBOUNCE = new Map();
|
|
89
90
|
/**
|
|
90
91
|
* allow initial call, then block for a period
|
|
91
92
|
*/
|
|
92
|
-
async function throttle(identifier, timeout) {
|
|
93
|
-
if (
|
|
93
|
+
export async function throttle(identifier, timeout) {
|
|
94
|
+
if (ACTIVE_THROTTLE.has(identifier)) {
|
|
94
95
|
return;
|
|
95
96
|
}
|
|
96
|
-
|
|
97
|
+
ACTIVE_THROTTLE.add(identifier);
|
|
97
98
|
await sleep(timeout);
|
|
98
|
-
|
|
99
|
+
ACTIVE_THROTTLE.delete(identifier);
|
|
99
100
|
}
|
|
100
101
|
/**
|
|
101
102
|
* wait for duration after call before allowing next, extends for calls inside window
|
|
102
103
|
*/
|
|
103
|
-
async function debounce(identifier, timeout) {
|
|
104
|
-
const current =
|
|
105
|
-
if (current) {
|
|
104
|
+
export async function debounce(identifier, timeout) {
|
|
105
|
+
const current = ACTIVE_DEBOUNCE.get(identifier);
|
|
106
|
+
if (!is.undefined(current)) {
|
|
106
107
|
current.kill("stop");
|
|
107
108
|
}
|
|
108
109
|
const delay = sleep(timeout);
|
|
109
|
-
|
|
110
|
+
ACTIVE_DEBOUNCE.set(identifier, delay);
|
|
110
111
|
await delay;
|
|
111
|
-
|
|
112
|
+
ACTIVE_DEBOUNCE.delete(identifier);
|
|
112
113
|
}
|
|
113
|
-
const asyncNoop = async () => await sleep(
|
|
114
|
-
|
|
115
|
-
const noop = () => { };
|
|
116
|
-
exports.noop = noop;
|
|
114
|
+
export const asyncNoop = async () => await sleep(NONE);
|
|
115
|
+
export const noop = () => { };
|
|
117
116
|
/**
|
|
118
117
|
* #MARK: (re)peat
|
|
119
118
|
*
|
|
120
119
|
* Create an array of length, where the values are filled with a provided fill value, or (index + 1) as default value
|
|
121
120
|
*/
|
|
122
|
-
function PEAT(length, fill) {
|
|
123
|
-
return Array.from({ length }).map((_, index) => fill ?? (index +
|
|
121
|
+
export function PEAT(length, fill) {
|
|
122
|
+
return Array.from({ length }).map((_, index) => fill ?? (index + ARRAY_OFFSET));
|
|
124
123
|
}
|
|
125
124
|
//# sourceMappingURL=utilities.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.helper.js","sourceRoot":"","sources":["../../src/helpers/utilities.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utilities.helper.js","sourceRoot":"","sources":["../../src/helpers/utilities.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
1
2
|
import { Dayjs } from "dayjs";
|
|
2
3
|
import { EventEmitter } from "events";
|
|
3
|
-
import { CronExpression, ILogger, InternalDefinition, LIB_BOILERPLATE, TBlackHole,
|
|
4
|
+
import { CronExpression, ILogger, InternalDefinition, LIB_BOILERPLATE, TBlackHole, TConfigLogLevel, TContext } from "..";
|
|
4
5
|
import { AnyConfig, BooleanConfig, ConfigLoader, InternalConfig, NumberConfig, OptionalModuleConfiguration, StringArrayConfig, StringConfig } from "./config.helper";
|
|
5
|
-
import {
|
|
6
|
+
import { TLifecycleBase } from "./lifecycle.helper";
|
|
6
7
|
export type TServiceReturn<OBJECT extends object = object> = void | OBJECT;
|
|
7
8
|
export type TModuleMappings = Record<string, ServiceFunction>;
|
|
8
9
|
export type TResolvedModuleMappings = Record<string, TServiceReturn>;
|
|
@@ -30,14 +31,6 @@ export type ScheduleItem = {
|
|
|
30
31
|
};
|
|
31
32
|
export type SchedulerOptions = {
|
|
32
33
|
exec: () => TBlackHole;
|
|
33
|
-
/**
|
|
34
|
-
* if provided, specific metrics will be kept and labelled with provided label
|
|
35
|
-
*
|
|
36
|
-
* - execution count
|
|
37
|
-
* - errors
|
|
38
|
-
* - execution duration
|
|
39
|
-
*/
|
|
40
|
-
label?: string;
|
|
41
34
|
};
|
|
42
35
|
/**
|
|
43
36
|
* General code scheduling functions
|
|
@@ -76,13 +69,23 @@ type CastConfigResult<T extends AnyConfig> = T extends StringConfig<infer STRING
|
|
|
76
69
|
export type TInjectedConfig = {
|
|
77
70
|
[ModuleName in keyof ModuleConfigs]: ConfigTypes<ModuleConfigs[ModuleName]>;
|
|
78
71
|
};
|
|
72
|
+
export interface AsyncLogData {
|
|
73
|
+
}
|
|
74
|
+
export interface AsyncLocalData {
|
|
75
|
+
logs: AsyncLogData;
|
|
76
|
+
}
|
|
77
|
+
export type AlsExtension = {
|
|
78
|
+
asyncStorage: () => AsyncLocalStorage<AsyncLocalData>;
|
|
79
|
+
getStore: () => AsyncLocalData;
|
|
80
|
+
init(source: object, callback: () => TBlackHole): void;
|
|
81
|
+
getLogData: () => AsyncLogData;
|
|
82
|
+
};
|
|
83
|
+
export type AlsHook = () => object;
|
|
79
84
|
export type TServiceParams = {
|
|
80
85
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* contains basic caching methods
|
|
86
|
+
* hooks for AsyncLocalStorage
|
|
84
87
|
*/
|
|
85
|
-
|
|
88
|
+
als: AlsExtension;
|
|
86
89
|
/**
|
|
87
90
|
* string describing how this service is wired into the main application
|
|
88
91
|
*/
|
|
@@ -121,7 +124,7 @@ export type TServiceParams = {
|
|
|
121
124
|
} & {
|
|
122
125
|
[K in ExternalLoadedModules]: GetApis<LoadedModules[K]>;
|
|
123
126
|
};
|
|
124
|
-
type LoadedModuleNames = Extract<keyof LoadedModules, string>;
|
|
127
|
+
export type LoadedModuleNames = Extract<keyof LoadedModules, string>;
|
|
125
128
|
type ExternalLoadedModules = Exclude<LoadedModuleNames, "boilerplate">;
|
|
126
129
|
type ModuleConfigs = {
|
|
127
130
|
[K in LoadedModuleNames]: LoadedModules[K] extends LibraryDefinition<ServiceMap, infer Config> ? Config : LoadedModules[K] extends ApplicationDefinition<ServiceMap, infer Config> ? Config : never;
|
|
@@ -129,6 +132,7 @@ type ModuleConfigs = {
|
|
|
129
132
|
type ConfigTypes<Config> = {
|
|
130
133
|
[Key in keyof Config]: Config[Key] extends AnyConfig ? CastConfigResult<Config[Key]> : never;
|
|
131
134
|
};
|
|
135
|
+
export type ServiceNames<T extends LoadedModuleNames = LoadedModuleNames> = LoadedModules[T] extends LibraryDefinition<infer S, OptionalModuleConfiguration> ? `${T}.${Extract<keyof S, string>}` : never;
|
|
132
136
|
export type GetApis<T> = T extends LibraryDefinition<infer S, OptionalModuleConfiguration> ? GetApisResult<S> : T extends ApplicationDefinition<infer S, OptionalModuleConfiguration> ? GetApisResult<S> : never;
|
|
133
137
|
export type Loader<PARENT extends TConfigurable> = <K extends keyof PARENT["services"]>(serviceName: K) => ReturnType<PARENT["services"][K]> extends Promise<infer AsyncResult> ? AsyncResult : ReturnType<PARENT["services"][K]>;
|
|
134
138
|
export type ServiceFunction<R = unknown> = (params: TServiceParams) => R | Promise<R>;
|
|
@@ -144,13 +148,13 @@ export type LibraryConfigurationOptions<S extends ServiceMap, C extends Optional
|
|
|
144
148
|
* - warnings will be emitted if this library utilizes a different version of a dependency than what the app uses
|
|
145
149
|
* - version provided by app will be substituted
|
|
146
150
|
*/
|
|
147
|
-
depends?:
|
|
151
|
+
depends?: TLibrary[];
|
|
148
152
|
/**
|
|
149
153
|
* Same as depends, but will not error if library is not provided at app level
|
|
150
154
|
*
|
|
151
155
|
* **note**: related variables may come in as undefined, code needs to be built to allow for this
|
|
152
156
|
*/
|
|
153
|
-
optionalDepends?:
|
|
157
|
+
optionalDepends?: TLibrary[];
|
|
154
158
|
configuration?: C;
|
|
155
159
|
/**
|
|
156
160
|
* Define which services should be initialized first. Any remaining services are done at the end in no set order
|
|
@@ -196,6 +200,10 @@ export type BootstrapOptions = {
|
|
|
196
200
|
* use this logger, instead of the baked in one. Maybe you want some custom transports or something? Put your customized thing here
|
|
197
201
|
*/
|
|
198
202
|
customLogger?: ILogger;
|
|
203
|
+
/**
|
|
204
|
+
* fine tine the built in logger
|
|
205
|
+
*/
|
|
206
|
+
loggerOptions?: LoggerOptions;
|
|
199
207
|
/**
|
|
200
208
|
* Show detailed boot time statistics
|
|
201
209
|
*/
|
|
@@ -207,6 +215,49 @@ export type BootstrapOptions = {
|
|
|
207
215
|
*/
|
|
208
216
|
envFile?: string;
|
|
209
217
|
};
|
|
218
|
+
export type LoggerOptions = {
|
|
219
|
+
/**
|
|
220
|
+
* Generic data to include as data payload for all logs
|
|
221
|
+
*
|
|
222
|
+
* Can be used to provide application tags when using a log aggregator
|
|
223
|
+
*/
|
|
224
|
+
mergeData?: object;
|
|
225
|
+
/**
|
|
226
|
+
* Adjust the format of the timestamp at the start of the log
|
|
227
|
+
*
|
|
228
|
+
* > default: ddd HH:mm:ss.SSS
|
|
229
|
+
*/
|
|
230
|
+
timestampFormat?: string;
|
|
231
|
+
/**
|
|
232
|
+
* Pretty format logs
|
|
233
|
+
*
|
|
234
|
+
* > default: true
|
|
235
|
+
*/
|
|
236
|
+
pretty?: boolean;
|
|
237
|
+
/**
|
|
238
|
+
* prefix messages with ms since last message
|
|
239
|
+
*
|
|
240
|
+
* > default: false
|
|
241
|
+
*/
|
|
242
|
+
ms?: boolean;
|
|
243
|
+
/**
|
|
244
|
+
* add an incrementing counter to every log.
|
|
245
|
+
* starts at 0 at boot
|
|
246
|
+
*
|
|
247
|
+
* > default: false
|
|
248
|
+
*/
|
|
249
|
+
counter?: boolean;
|
|
250
|
+
/**
|
|
251
|
+
* extract details from als module to merge into logs
|
|
252
|
+
*
|
|
253
|
+
* > default: false
|
|
254
|
+
*/
|
|
255
|
+
als?: boolean;
|
|
256
|
+
/**
|
|
257
|
+
* Override the `LOG_LEVEL` per service or module
|
|
258
|
+
*/
|
|
259
|
+
levelOverrides?: Partial<Record<LoadedModuleNames | ServiceNames, TConfigLogLevel>>;
|
|
260
|
+
};
|
|
210
261
|
export declare const WIRE_PROJECT: unique symbol;
|
|
211
262
|
type Wire = {
|
|
212
263
|
/**
|
|
@@ -215,20 +266,23 @@ type Wire = {
|
|
|
215
266
|
* - initializes lifecycle
|
|
216
267
|
* - attaches event emitters
|
|
217
268
|
*/
|
|
218
|
-
[WIRE_PROJECT]: (internal: InternalDefinition, WireService: (project: string, service: string, definition: ServiceFunction, lifecycle: TLifecycleBase, internal: InternalDefinition) => Promise<TServiceReturn<object>>) => Promise<
|
|
269
|
+
[WIRE_PROJECT]: (internal: InternalDefinition, WireService: (project: string, service: string, definition: ServiceFunction, lifecycle: TLifecycleBase, internal: InternalDefinition) => Promise<TServiceReturn<object>>) => Promise<TLifecycleBase>;
|
|
270
|
+
};
|
|
271
|
+
export type LibraryDefinition<S extends ServiceMap, C extends OptionalModuleConfiguration> = LibraryConfigurationOptions<S, C> & Wire & {
|
|
272
|
+
type: "library";
|
|
219
273
|
};
|
|
220
|
-
export type LibraryDefinition<S extends ServiceMap, C extends OptionalModuleConfiguration> = LibraryConfigurationOptions<S, C> & Wire;
|
|
221
274
|
export type ApplicationDefinition<S extends ServiceMap, C extends OptionalModuleConfiguration> = ApplicationConfigurationOptions<S, C> & Wire & {
|
|
222
275
|
logger: ILogger;
|
|
276
|
+
type: "application";
|
|
223
277
|
booted: boolean;
|
|
224
278
|
bootstrap: (options?: BootstrapOptions) => Promise<void>;
|
|
225
279
|
teardown: () => Promise<void>;
|
|
226
280
|
};
|
|
227
|
-
type TLibrary = LibraryDefinition<ServiceMap, OptionalModuleConfiguration>;
|
|
228
|
-
export declare function
|
|
281
|
+
export type TLibrary = LibraryDefinition<ServiceMap, OptionalModuleConfiguration>;
|
|
282
|
+
export declare function buildSortOrder<S extends ServiceMap, C extends OptionalModuleConfiguration>(app: ApplicationDefinition<S, C>, logger: ILogger): TLibrary[];
|
|
229
283
|
export declare const COERCE_CONTEXT: (context: string) => TContext;
|
|
230
284
|
export declare const WIRING_CONTEXT: TContext;
|
|
231
|
-
export declare function
|
|
232
|
-
export declare function
|
|
285
|
+
export declare function validateLibrary<S extends ServiceMap>(project: string, serviceList: S): void | never;
|
|
286
|
+
export declare function wireOrder<T extends string>(priority: T[], list: T[]): T[];
|
|
233
287
|
export declare function CreateLibrary<S extends ServiceMap, C extends OptionalModuleConfiguration>({ name: libraryName, configuration, priorityInit, services, depends, optionalDepends, }: LibraryConfigurationOptions<S, C>): LibraryDefinition<S, C>;
|
|
234
288
|
export {};
|
|
@@ -1,29 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.ValidateLibrary = ValidateLibrary;
|
|
6
|
-
exports.WireOrder = WireOrder;
|
|
7
|
-
exports.CreateLibrary = CreateLibrary;
|
|
8
|
-
const __1 = require("..");
|
|
9
|
-
exports.WIRE_PROJECT = Symbol.for("wire-project");
|
|
10
|
-
function BuildSortOrder(app, logger) {
|
|
11
|
-
if (__1.is.empty(app.libraries)) {
|
|
1
|
+
import { BootstrapException, eachSeries, is, LOAD_PROJECT, } from "..";
|
|
2
|
+
export const WIRE_PROJECT = Symbol.for("wire-project");
|
|
3
|
+
export function buildSortOrder(app, logger) {
|
|
4
|
+
if (is.empty(app.libraries)) {
|
|
12
5
|
return [];
|
|
13
6
|
}
|
|
14
|
-
const libraryMap = new Map(app.libraries.map(
|
|
7
|
+
const libraryMap = new Map(app.libraries.map(i => [i.name, i]));
|
|
15
8
|
// Recursive function to check for missing dependencies at any depth
|
|
16
9
|
function checkDependencies(library) {
|
|
17
|
-
const depends = [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
];
|
|
21
|
-
if (!__1.is.empty(depends)) {
|
|
22
|
-
depends.forEach((item) => {
|
|
10
|
+
const depends = [...(library?.depends ?? []), ...(library?.optionalDepends ?? [])];
|
|
11
|
+
if (!is.empty(depends)) {
|
|
12
|
+
depends.forEach(item => {
|
|
23
13
|
const loaded = libraryMap.get(item.name);
|
|
24
14
|
if (!loaded) {
|
|
25
15
|
if (library.depends.includes(item)) {
|
|
26
|
-
throw new
|
|
16
|
+
throw new BootstrapException(WIRING_CONTEXT, "MISSING_DEPENDENCY", `${item.name} is required by ${library.name}, but was not provided`);
|
|
27
17
|
}
|
|
28
18
|
else {
|
|
29
19
|
logger.info({ library: library.name, name: checkDependencies }, `optional depends [%s] not provided`, item.name);
|
|
@@ -33,70 +23,77 @@ function BuildSortOrder(app, logger) {
|
|
|
33
23
|
// just "are they the same object reference?" as the test
|
|
34
24
|
// you get a warning, and the one the app asks for
|
|
35
25
|
// hopefully there is no breaking changes
|
|
36
|
-
if (loaded !== item) {
|
|
37
|
-
logger.warn({ name:
|
|
26
|
+
if (loaded !== item && !process.env.NODE_ENV.startsWith("test")) {
|
|
27
|
+
logger.warn({ name: buildSortOrder }, "[%s] depends different version {%s}", library.name, item.name);
|
|
38
28
|
}
|
|
39
29
|
});
|
|
40
30
|
}
|
|
41
31
|
return library;
|
|
42
32
|
}
|
|
43
|
-
let starting = app.libraries.map(
|
|
33
|
+
let starting = app.libraries.map(i => checkDependencies(i));
|
|
44
34
|
const out = [];
|
|
45
|
-
while (!
|
|
46
|
-
const next = starting.find(
|
|
35
|
+
while (!is.empty(starting)) {
|
|
36
|
+
const next = starting.find(library => {
|
|
47
37
|
const depends = [
|
|
48
38
|
...(library?.depends ?? []),
|
|
49
|
-
...(library?.optionalDepends?.filter(
|
|
39
|
+
...(library?.optionalDepends?.filter(i => app.libraries.some(index => i.name === index.name)) ?? []),
|
|
50
40
|
];
|
|
51
|
-
if (
|
|
41
|
+
if (is.empty(depends)) {
|
|
52
42
|
return true;
|
|
53
43
|
}
|
|
54
|
-
return depends.every(
|
|
44
|
+
return depends.every(depend => out.some(i => i.name === depend.name));
|
|
55
45
|
});
|
|
56
46
|
if (!next) {
|
|
57
|
-
logger.fatal({ current: out.map(
|
|
58
|
-
throw new
|
|
47
|
+
logger.fatal({ current: out.map(i => i.name), name: buildSortOrder });
|
|
48
|
+
throw new BootstrapException(WIRING_CONTEXT, "BAD_SORT", `Cannot find a next lib to load`);
|
|
59
49
|
}
|
|
60
|
-
starting = starting.filter(
|
|
50
|
+
starting = starting.filter(i => next.name !== i.name);
|
|
61
51
|
out.push(next);
|
|
62
52
|
}
|
|
63
53
|
return out;
|
|
64
54
|
}
|
|
65
|
-
const COERCE_CONTEXT = (context) => context;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
throw new __1.BootstrapException((0, exports.COERCE_CONTEXT)("CreateLibrary"), "MISSING_LIBRARY_NAME", "Library name is required");
|
|
55
|
+
export const COERCE_CONTEXT = (context) => context;
|
|
56
|
+
export const WIRING_CONTEXT = COERCE_CONTEXT("boilerplate:wiring");
|
|
57
|
+
export function validateLibrary(project, serviceList) {
|
|
58
|
+
if (is.empty(project)) {
|
|
59
|
+
throw new BootstrapException(COERCE_CONTEXT("CreateLibrary"), "MISSING_LIBRARY_NAME", "Library name is required");
|
|
71
60
|
}
|
|
72
61
|
const services = Object.entries(serviceList);
|
|
73
62
|
// Find the first invalid service
|
|
74
63
|
const invalidService = services.find(([, definition]) => typeof definition !== "function");
|
|
75
64
|
if (invalidService) {
|
|
76
65
|
const [invalidServiceName, service] = invalidService;
|
|
77
|
-
throw new
|
|
66
|
+
throw new BootstrapException(COERCE_CONTEXT("CreateLibrary"), "INVALID_SERVICE_DEFINITION", `Invalid service definition for '${invalidServiceName}' in library '${project}' (${typeof service}})`);
|
|
78
67
|
}
|
|
79
68
|
}
|
|
80
|
-
function
|
|
69
|
+
export function wireOrder(priority, list) {
|
|
81
70
|
const out = [...(priority || [])];
|
|
82
|
-
if (!
|
|
83
|
-
const check =
|
|
71
|
+
if (!is.empty(priority)) {
|
|
72
|
+
const check = is.unique(priority);
|
|
84
73
|
if (check.length !== out.length) {
|
|
85
|
-
throw new
|
|
74
|
+
throw new BootstrapException(WIRING_CONTEXT, "DOUBLE_PRIORITY", "There are duplicate items in the priority load list");
|
|
86
75
|
}
|
|
87
76
|
}
|
|
88
|
-
|
|
77
|
+
const temporary = [...out, ...list.filter(i => !out.includes(i))];
|
|
78
|
+
return temporary;
|
|
89
79
|
}
|
|
90
|
-
function CreateLibrary({ name: libraryName, configuration = {}, priorityInit, services, depends, optionalDepends, }) {
|
|
91
|
-
|
|
80
|
+
export function CreateLibrary({ name: libraryName, configuration = {}, priorityInit, services, depends, optionalDepends, }) {
|
|
81
|
+
validateLibrary(libraryName, services);
|
|
92
82
|
const serviceApis = {};
|
|
83
|
+
if (!is.empty(priorityInit)) {
|
|
84
|
+
priorityInit.forEach(name => {
|
|
85
|
+
if (!is.function(services[name])) {
|
|
86
|
+
throw new BootstrapException(WIRING_CONTEXT, "MISSING_PRIORITY_SERVICE", `${name} was listed as priority init, but was not found in services`);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
93
90
|
const library = {
|
|
94
|
-
[
|
|
91
|
+
[WIRE_PROJECT]: async (internal, WireService) => {
|
|
95
92
|
// not defined for boilerplate (chicken & egg)
|
|
96
93
|
// manually added inside the bootstrap process
|
|
97
94
|
const config = internal?.boilerplate.configuration;
|
|
98
|
-
config?.[
|
|
99
|
-
await
|
|
95
|
+
config?.[LOAD_PROJECT](libraryName, configuration);
|
|
96
|
+
await eachSeries(wireOrder(priorityInit, Object.keys(services)), async (service) => {
|
|
100
97
|
serviceApis[service] = await WireService(libraryName, service, services[service], internal.boot.lifecycle.events, internal);
|
|
101
98
|
});
|
|
102
99
|
internal.boot.constructComplete.add(libraryName);
|
|
@@ -110,6 +107,7 @@ function CreateLibrary({ name: libraryName, configuration = {}, priorityInit, se
|
|
|
110
107
|
priorityInit,
|
|
111
108
|
serviceApis,
|
|
112
109
|
services,
|
|
110
|
+
type: "library",
|
|
113
111
|
};
|
|
114
112
|
return library;
|
|
115
113
|
}
|
|
@@ -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/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
tslib_1.__exportStar(require("./extensions"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./helpers"), exports);
|
|
1
|
+
export * from "./helpers";
|
|
2
|
+
export * from "./services";
|
|
3
|
+
export * from "./testing";
|
|
6
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
2
|
+
import { v4 } from "uuid";
|
|
3
|
+
export function ALS({ config }) {
|
|
4
|
+
const storage = new AsyncLocalStorage();
|
|
5
|
+
return {
|
|
6
|
+
asyncStorage: () => (config.boilerplate.NODE_ENV ? storage : undefined),
|
|
7
|
+
getLogData: () => storage.getStore()?.logs ?? {},
|
|
8
|
+
getStore: () => storage.getStore(),
|
|
9
|
+
init(source, callback) {
|
|
10
|
+
const data = { logs: { id: v4(), ...source } };
|
|
11
|
+
storage.run(data, () => {
|
|
12
|
+
callback();
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=als.extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"als.extension.js","sourceRoot":"","sources":["../../src/services/als.extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAI1B,MAAM,UAAU,GAAG,CAAC,EAAE,MAAM,EAAkB;IAC5C,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAC;IACxD,OAAO;QACL,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,IAAK,EAAmB;QAClE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,MAAc,EAAE,QAA0B;YAC7C,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,IAAsB,EAAE,GAAG,EAAE;gBACvC,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DigitalAlchemyConfiguration, TServiceParams } from "..";
|
|
2
|
+
export declare const INITIALIZE: unique symbol;
|
|
3
|
+
export declare const LOAD_PROJECT: unique symbol;
|
|
4
|
+
export declare const EVENT_CONFIGURATION_UPDATED = "event_configuration_updated";
|
|
5
|
+
export declare const INJECTED_DEFINITIONS: unique symbol;
|
|
6
|
+
export type ConfigManager = ReturnType<typeof Configuration>;
|
|
7
|
+
export declare function Configuration({ context, event, lifecycle, internal, logger, }: TServiceParams): DigitalAlchemyConfiguration;
|