@digital-alchemy/core 24.10.3 → 24.10.5
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/helpers/config-environment-loader.helper.js +13 -5
- package/dist/helpers/config-environment-loader.helper.js.map +1 -1
- package/dist/helpers/config.helper.d.ts +21 -1
- package/dist/helpers/config.helper.js.map +1 -1
- package/dist/helpers/cron.helper.d.ts +4 -2
- package/dist/helpers/cron.helper.js +5 -0
- package/dist/helpers/cron.helper.js.map +1 -1
- package/dist/helpers/module.helper.js +13 -10
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/wiring.helper.d.ts +6 -11
- package/dist/helpers/wiring.helper.js +5 -1
- package/dist/helpers/wiring.helper.js.map +1 -1
- package/dist/services/configuration.extension.d.ts +1 -1
- package/dist/services/configuration.extension.js +92 -57
- package/dist/services/configuration.extension.js.map +1 -1
- package/dist/services/internal.extension.d.ts +6 -1
- package/dist/services/internal.extension.js +6 -1
- package/dist/services/internal.extension.js.map +1 -1
- package/dist/services/logger.extension.js +18 -5
- package/dist/services/logger.extension.js.map +1 -1
- package/dist/services/scheduler.extension.js +12 -12
- package/dist/services/scheduler.extension.js.map +1 -1
- package/dist/services/wiring.extension.d.ts +2 -4
- package/dist/services/wiring.extension.js +16 -13
- package/dist/services/wiring.extension.js.map +1 -1
- package/dist/testing/mock-logger.js +6 -6
- package/dist/testing/mock-logger.js.map +1 -1
- package/dist/testing/test-module.d.ts +13 -5
- package/dist/testing/test-module.js +11 -8
- package/dist/testing/test-module.js.map +1 -1
- package/package.json +23 -23
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable unicorn/prevent-abbreviations */
|
|
1
2
|
import minimist from "minimist";
|
|
2
3
|
import { env } from "process";
|
|
3
4
|
import { is } from "..";
|
|
@@ -6,6 +7,10 @@ export async function ConfigLoaderEnvironment({ configs, internal, logger }) {
|
|
|
6
7
|
const CLI_SWITCHES = minimist(process.argv);
|
|
7
8
|
const switchKeys = Object.keys(CLI_SWITCHES);
|
|
8
9
|
const out = {};
|
|
10
|
+
const canEnvironment = internal.boot.options?.configSources?.env ?? true;
|
|
11
|
+
const canArgv = internal.boot.options?.configSources?.argv ?? true;
|
|
12
|
+
const shouldArgv = (source) => canArgv && (!is.array(source) || source.includes("argv"));
|
|
13
|
+
const shouldEnv = (source) => canEnvironment && (!is.array(source) || source.includes("env"));
|
|
9
14
|
// * merge dotenv into local vars
|
|
10
15
|
// accounts for `--env-file` switches, and whatever is passed in via bootstrap
|
|
11
16
|
loadDotenv(internal, CLI_SWITCHES, logger);
|
|
@@ -15,6 +20,7 @@ export async function ConfigLoaderEnvironment({ configs, internal, logger }) {
|
|
|
15
20
|
const cleanedProject = project.replaceAll("-", "_");
|
|
16
21
|
// * run through each config for module
|
|
17
22
|
Object.keys(configuration).forEach(key => {
|
|
23
|
+
const { source } = configs.get(project)[key];
|
|
18
24
|
// > things to search for
|
|
19
25
|
// - MODULE_NAME_CONFIG_KEY (module + key, ex: app_NODE_ENV)
|
|
20
26
|
// - CONFIG_KEY (only key, ex: NODE_ENV)
|
|
@@ -23,10 +29,10 @@ export async function ConfigLoaderEnvironment({ configs, internal, logger }) {
|
|
|
23
29
|
const configPath = `${project}.${key}`;
|
|
24
30
|
// * (preferred) Find an applicable cli switch
|
|
25
31
|
const flag = findKey(search, switchKeys);
|
|
26
|
-
if (flag) {
|
|
32
|
+
if (flag && shouldArgv(source)) {
|
|
27
33
|
const formattedFlag = iSearchKey(flag, switchKeys);
|
|
28
34
|
internal.utils.object.set(out, configPath, parseConfig(configuration[key], CLI_SWITCHES[formattedFlag]));
|
|
29
|
-
logger.
|
|
35
|
+
logger.debug({
|
|
30
36
|
flag: formattedFlag,
|
|
31
37
|
name: ConfigLoaderEnvironment,
|
|
32
38
|
path: configPath,
|
|
@@ -35,10 +41,12 @@ export async function ConfigLoaderEnvironment({ configs, internal, logger }) {
|
|
|
35
41
|
}
|
|
36
42
|
// * (fallback) Find an environment variable
|
|
37
43
|
const environment = findKey(search, environmentKeys);
|
|
38
|
-
if (!is.empty(environment)) {
|
|
44
|
+
if (!is.empty(environment) && shouldEnv(source)) {
|
|
39
45
|
const environmentName = iSearchKey(environment, environmentKeys);
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
if (!is.string(env[environmentName]) || !is.empty(env[environmentName])) {
|
|
47
|
+
internal.utils.object.set(out, configPath, parseConfig(configuration[key], env[environmentName]));
|
|
48
|
+
}
|
|
49
|
+
logger.debug({
|
|
42
50
|
name: ConfigLoaderEnvironment,
|
|
43
51
|
path: configPath,
|
|
44
52
|
var: environmentName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-environment-loader.helper.js","sourceRoot":"","sources":["../../src/helpers/config-environment-loader.helper.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,EAAE,EAAc,MAAM,IAAI,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"config-environment-loader.helper.js","sourceRoot":"","sources":["../../src/helpers/config-environment-loader.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { ParsedArgs } from "minimist";
|
|
2
2
|
import { ILogger, INITIALIZE, INJECTED_DEFINITIONS, InternalDefinition, LOAD_PROJECT, TBlackHole } from "..";
|
|
3
3
|
import { ApplicationDefinition, PartialConfiguration, ServiceMap, TInjectedConfig } from "./wiring.helper";
|
|
4
|
+
export interface ConfigLoaderSource {
|
|
5
|
+
/**
|
|
6
|
+
* will be checked for values unless `sources` is defined without argv
|
|
7
|
+
*/
|
|
8
|
+
argv: true;
|
|
9
|
+
/**
|
|
10
|
+
* will be checked for values unless `env` is defined without argv
|
|
11
|
+
*/
|
|
12
|
+
env: true;
|
|
13
|
+
/**
|
|
14
|
+
* will be checked for values unless `file` is defined without argv
|
|
15
|
+
*/
|
|
16
|
+
file: true;
|
|
17
|
+
}
|
|
4
18
|
export type CodeConfigDefinition = Record<string, AnyConfig>;
|
|
5
19
|
export type ProjectConfigTypes = "string" | "boolean" | "internal" | "number" | "record" | "string[]";
|
|
6
20
|
export type AnyConfig = StringConfig<string> | BooleanConfig | InternalConfig<object> | NumberConfig | RecordConfig | StringArrayConfig;
|
|
@@ -19,6 +33,10 @@ export interface BaseConfig {
|
|
|
19
33
|
*/
|
|
20
34
|
required?: boolean;
|
|
21
35
|
type: ProjectConfigTypes;
|
|
36
|
+
/**
|
|
37
|
+
* Where this can be loaded from
|
|
38
|
+
*/
|
|
39
|
+
source?: (keyof ConfigLoaderSource)[];
|
|
22
40
|
}
|
|
23
41
|
export type KnownConfigs = Map<string, CodeConfigDefinition>;
|
|
24
42
|
export interface StringConfig<STRING extends string> extends BaseConfig {
|
|
@@ -115,9 +133,10 @@ export declare function loadDotenv(internal: InternalDefinition, CLI_SWITCHES: P
|
|
|
115
133
|
export declare function parseConfig(config: AnyConfig, value: string): any;
|
|
116
134
|
export type DigitalAlchemyConfiguration = {
|
|
117
135
|
[INITIALIZE]: <S extends ServiceMap, C extends OptionalModuleConfiguration>(application: ApplicationDefinition<S, C>) => Promise<string>;
|
|
118
|
-
[INJECTED_DEFINITIONS]:
|
|
136
|
+
[INJECTED_DEFINITIONS]: TInjectedConfig;
|
|
119
137
|
[LOAD_PROJECT]: (library: string, definitions: CodeConfigDefinition) => void;
|
|
120
138
|
getDefinitions: () => KnownConfigs;
|
|
139
|
+
registerLoader: (loader: ConfigLoader, type: DataTypes) => void;
|
|
121
140
|
merge: (incoming: Partial<PartialConfiguration>) => PartialConfiguration;
|
|
122
141
|
/**
|
|
123
142
|
* Not a replacement for `onPostConfig`
|
|
@@ -134,3 +153,4 @@ export type DigitalAlchemyConfiguration = {
|
|
|
134
153
|
};
|
|
135
154
|
export type TSetConfig = <Project extends keyof TInjectedConfig, Property extends keyof TInjectedConfig[Project]>(project: Project, property: Property, value: TInjectedConfig[Project][Property]) => void;
|
|
136
155
|
export type OnConfigUpdateCallback<Project extends keyof TInjectedConfig, Property extends keyof TInjectedConfig[Project]> = (project: Project, property: Property) => TBlackHole;
|
|
156
|
+
export type DataTypes = keyof ConfigLoaderSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.helper.js","sourceRoot":"","sources":["../../src/helpers/config.helper.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAEL,UAAU,EACV,oBAAoB,EAEpB,EAAE,EACF,YAAY,GAEb,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.helper.js","sourceRoot":"","sources":["../../src/helpers/config.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,10 +105,12 @@ export type SchedulerSlidingOptions = SchedulerOptions & {
|
|
|
105
105
|
*/
|
|
106
106
|
next: () => Dayjs | string | number | Date | undefined;
|
|
107
107
|
};
|
|
108
|
-
export type ScheduleRemove = () => TBlackHole
|
|
108
|
+
export type ScheduleRemove = (() => TBlackHole) & {
|
|
109
|
+
remove: () => TBlackHole;
|
|
110
|
+
};
|
|
111
|
+
export declare const makeRemover: (remover: () => TBlackHole) => ScheduleRemove;
|
|
109
112
|
export type DigitalAlchemyScheduler = {
|
|
110
113
|
cron: (options: SchedulerCronOptions) => ScheduleRemove;
|
|
111
|
-
interval: (options: SchedulerIntervalOptions) => ScheduleRemove;
|
|
112
114
|
sliding: (options: SchedulerSlidingOptions) => ScheduleRemove;
|
|
113
115
|
setInterval: (callback: () => TBlackHole, ms: number) => ScheduleRemove;
|
|
114
116
|
setTimeout: (callback: () => TBlackHole, ms: number) => ScheduleRemove;
|
|
@@ -86,4 +86,9 @@ export var CronExpression;
|
|
|
86
86
|
})(CronExpression || (CronExpression = {}));
|
|
87
87
|
export const CRON_SCHEDULE = "CRON_SCHEDULE";
|
|
88
88
|
export const INTERVAL_SCHEDULE = "INTERVAL_SCHEDULE";
|
|
89
|
+
export const makeRemover = (remover) => {
|
|
90
|
+
const cast = remover;
|
|
91
|
+
cast.remove = remover;
|
|
92
|
+
return cast;
|
|
93
|
+
};
|
|
89
94
|
//# sourceMappingURL=cron.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.helper.js","sourceRoot":"","sources":["../../src/helpers/cron.helper.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,cAoFX;AApFD,WAAY,cAAc;IACxB,8CAA4B,CAAA;IAC5B,mDAAiC,CAAA;IACjC,qDAAmC,CAAA;IACnC,qDAAmC,CAAA;IACnC,8CAA4B,CAAA;IAC5B,mDAAiC,CAAA;IACjC,qDAAmC,CAAA;IACnC,qDAAmC,CAAA;IACnC,+CAA6B,CAAA;IAC7B,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,oDAAkC,CAAA;IAClC,oDAAkC,CAAA;IAClC,oDAAkC,CAAA;IAClC,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,qDAAmC,CAAA;IACnC,0CAAwB,CAAA;IACxB,+CAA6B,CAAA;IAC7B,+CAA6B,CAAA;IAC7B,kEAAgD,CAAA;IAChD,+DAA6C,CAAA;IAC7C,gDAA8B,CAAA;IAC9B,yEAAuD,CAAA;IACvD,iDAA+B,CAAA;IAC/B,+CAA6B,CAAA;IAC7B,gDAA8B,CAAA;IAC9B,0CAAwB,CAAA;IACxB,4EAA0D,CAAA;IAC1D,4EAA0D,CAAA;IAC1D,8EAA4D,CAAA;IAC5D,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,iEAA+C,CAAA;IAC/C,6DAA2C,CAAA;IAC3C,6DAA2C,CAAA;IAC3C,iEAA+C,CAAA;IAC/C,6DAA2C,CAAA;IAC3C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,6DAA2C,CAAA;IAC3C,6DAA2C,CAAA;AAC7C,CAAC,EApFW,cAAc,KAAd,cAAc,QAoFzB;AACD,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"cron.helper.js","sourceRoot":"","sources":["../../src/helpers/cron.helper.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,cAoFX;AApFD,WAAY,cAAc;IACxB,8CAA4B,CAAA;IAC5B,mDAAiC,CAAA;IACjC,qDAAmC,CAAA;IACnC,qDAAmC,CAAA;IACnC,8CAA4B,CAAA;IAC5B,mDAAiC,CAAA;IACjC,qDAAmC,CAAA;IACnC,qDAAmC,CAAA;IACnC,+CAA6B,CAAA;IAC7B,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,oDAAkC,CAAA;IAClC,oDAAkC,CAAA;IAClC,oDAAkC,CAAA;IAClC,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,iDAA+B,CAAA;IAC/B,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,qDAAmC,CAAA;IACnC,0CAAwB,CAAA;IACxB,+CAA6B,CAAA;IAC7B,+CAA6B,CAAA;IAC7B,kEAAgD,CAAA;IAChD,+DAA6C,CAAA;IAC7C,gDAA8B,CAAA;IAC9B,yEAAuD,CAAA;IACvD,iDAA+B,CAAA;IAC/B,+CAA6B,CAAA;IAC7B,gDAA8B,CAAA;IAC9B,0CAAwB,CAAA;IACxB,4EAA0D,CAAA;IAC1D,4EAA0D,CAAA;IAC1D,8EAA4D,CAAA;IAC5D,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,iEAA+C,CAAA;IAC/C,6DAA2C,CAAA;IAC3C,6DAA2C,CAAA;IAC3C,iEAA+C,CAAA;IAC/C,6DAA2C,CAAA;IAC3C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,4DAA0C,CAAA;IAC1C,6DAA2C,CAAA;IAC3C,6DAA2C,CAAA;AAC7C,CAAC,EApFW,cAAc,KAAd,cAAc,QAoFzB;AACD,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAqBrD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAyB,EAAkB,EAAE;IACvE,MAAM,IAAI,GAAG,OAAyB,CAAC;IACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { CreateApplication } from "../services";
|
|
|
2
2
|
import { TestRunner } from "../testing";
|
|
3
3
|
import { deepExtend } from "./extend.helper";
|
|
4
4
|
import { CreateLibrary, } from "./wiring.helper";
|
|
5
|
+
// #MARK: createModule
|
|
5
6
|
export function createModule(options) {
|
|
6
7
|
function extend(extendOptions) {
|
|
7
8
|
const appendLibrary = new Map();
|
|
@@ -64,7 +65,7 @@ export function createModule(options) {
|
|
|
64
65
|
},
|
|
65
66
|
toApplication: () => {
|
|
66
67
|
const depends = {};
|
|
67
|
-
workingModule.depends
|
|
68
|
+
workingModule.depends?.forEach(i => (depends[i.name] = i));
|
|
68
69
|
appendLibrary.forEach((value, key) => (depends[key] = value));
|
|
69
70
|
return CreateApplication({
|
|
70
71
|
configuration: deepExtend({}, workingModule.configuration),
|
|
@@ -72,13 +73,13 @@ export function createModule(options) {
|
|
|
72
73
|
// @ts-expect-error wrapper problems
|
|
73
74
|
name: extendOptions?.name || options.name,
|
|
74
75
|
// @ts-expect-error wrapper problems
|
|
75
|
-
priorityInit: [...workingModule.priorityInit],
|
|
76
|
+
priorityInit: [...(workingModule.priorityInit ?? [])],
|
|
76
77
|
services,
|
|
77
78
|
});
|
|
78
79
|
},
|
|
79
80
|
toLibrary: () => {
|
|
80
81
|
const depends = {};
|
|
81
|
-
workingModule.depends
|
|
82
|
+
workingModule.depends?.forEach(i => (depends[i.name] = i));
|
|
82
83
|
appendLibrary.forEach((value, key) => (depends[key] = value));
|
|
83
84
|
return CreateLibrary({
|
|
84
85
|
configuration: deepExtend({}, workingModule.configuration),
|
|
@@ -108,23 +109,25 @@ export function createModule(options) {
|
|
|
108
109
|
};
|
|
109
110
|
return workingModule;
|
|
110
111
|
}
|
|
112
|
+
// #MARK: fromApplication
|
|
111
113
|
createModule.fromApplication = (application) => {
|
|
112
114
|
return createModule({
|
|
113
|
-
configuration: application.configuration
|
|
114
|
-
depends: application.libraries
|
|
115
|
+
configuration: application.configuration,
|
|
116
|
+
depends: application.libraries,
|
|
115
117
|
name: application.name,
|
|
116
118
|
optionalDepends: [],
|
|
117
|
-
priorityInit: application.priorityInit
|
|
119
|
+
priorityInit: application.priorityInit,
|
|
118
120
|
services: application.services,
|
|
119
121
|
});
|
|
120
122
|
};
|
|
123
|
+
// #MARK: fromLibrary
|
|
121
124
|
createModule.fromLibrary = (library) => {
|
|
122
125
|
return createModule({
|
|
123
|
-
configuration: library.configuration
|
|
124
|
-
depends: library.depends
|
|
126
|
+
configuration: library.configuration,
|
|
127
|
+
depends: library.depends,
|
|
125
128
|
name: library.name,
|
|
126
|
-
optionalDepends: library.optionalDepends
|
|
127
|
-
priorityInit: library.priorityInit
|
|
129
|
+
optionalDepends: library.optionalDepends,
|
|
130
|
+
priorityInit: library.priorityInit,
|
|
128
131
|
services: library.services,
|
|
129
132
|
});
|
|
130
133
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.helper.js","sourceRoot":"","sources":["../../src/helpers/module.helper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAe,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAEL,aAAa,GAKd,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.helper.js","sourceRoot":"","sources":["../../src/helpers/module.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,12 @@ import { AsyncLocalStorage } from "async_hooks";
|
|
|
2
2
|
import { Dayjs } from "dayjs";
|
|
3
3
|
import { EventEmitter } from "events";
|
|
4
4
|
import { CronExpression, ILogger, InternalDefinition, LIB_BOILERPLATE, ScheduleRemove, TBlackHole, TConfigLogLevel, TContext } from "..";
|
|
5
|
-
import { AnyConfig, BooleanConfig,
|
|
5
|
+
import { AnyConfig, BooleanConfig, DataTypes, InternalConfig, NumberConfig, OptionalModuleConfiguration, StringArrayConfig, StringConfig } from "./config.helper";
|
|
6
6
|
import { TLifecycleBase } from "./lifecycle.helper";
|
|
7
7
|
export type TServiceReturn<OBJECT extends object = object> = void | OBJECT;
|
|
8
8
|
export type TModuleMappings = Record<string, ServiceFunction>;
|
|
9
9
|
export type TResolvedModuleMappings = Record<string, TServiceReturn>;
|
|
10
10
|
export type ApplicationConfigurationOptions<S extends ServiceMap, C extends OptionalModuleConfiguration> = {
|
|
11
|
-
configurationLoaders?: ConfigLoader[];
|
|
12
11
|
name: keyof LoadedModules;
|
|
13
12
|
services: S;
|
|
14
13
|
libraries?: LibraryDefinition<ServiceMap, OptionalModuleConfiguration>[];
|
|
@@ -44,14 +43,6 @@ export type TScheduler = {
|
|
|
44
43
|
cron: (options: SchedulerOptions & {
|
|
45
44
|
schedule: Schedule | Schedule[];
|
|
46
45
|
}) => ScheduleRemove;
|
|
47
|
-
/**
|
|
48
|
-
* Run code on a regular periodic interval
|
|
49
|
-
*
|
|
50
|
-
* @deprecated use `scheduler.setInterval`
|
|
51
|
-
*/
|
|
52
|
-
interval: (options: SchedulerOptions & {
|
|
53
|
-
interval: number;
|
|
54
|
-
}) => ScheduleRemove;
|
|
55
46
|
/**
|
|
56
47
|
* Run code at a different time every {period}
|
|
57
48
|
*
|
|
@@ -231,6 +222,10 @@ export type BootstrapOptions = {
|
|
|
231
222
|
* Default: `.env`
|
|
232
223
|
*/
|
|
233
224
|
envFile?: string;
|
|
225
|
+
/**
|
|
226
|
+
* all properties default true if not provided
|
|
227
|
+
*/
|
|
228
|
+
configSources?: Partial<Record<DataTypes, boolean>>;
|
|
234
229
|
};
|
|
235
230
|
export type LoggerOptions = {
|
|
236
231
|
/**
|
|
@@ -292,7 +287,7 @@ export type ApplicationDefinition<S extends ServiceMap, C extends OptionalModule
|
|
|
292
287
|
logger: ILogger;
|
|
293
288
|
type: "application";
|
|
294
289
|
booted: boolean;
|
|
295
|
-
bootstrap: (options?: BootstrapOptions) => Promise<
|
|
290
|
+
bootstrap: (options?: BootstrapOptions) => Promise<TServiceParams>;
|
|
296
291
|
teardown: () => Promise<void>;
|
|
297
292
|
};
|
|
298
293
|
export type TLibrary = LibraryDefinition<ServiceMap, OptionalModuleConfiguration>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BootstrapException, eachSeries, is, LOAD_PROJECT, } from "..";
|
|
2
2
|
export const WIRE_PROJECT = Symbol.for("wire-project");
|
|
3
|
+
// #MARK: buildSortOrder
|
|
3
4
|
export function buildSortOrder(app, logger) {
|
|
4
5
|
if (is.empty(app.libraries)) {
|
|
5
6
|
return [];
|
|
@@ -23,7 +24,7 @@ export function buildSortOrder(app, logger) {
|
|
|
23
24
|
// just "are they the same object reference?" as the test
|
|
24
25
|
// you get a warning, and the one the app asks for
|
|
25
26
|
// hopefully there is no breaking changes
|
|
26
|
-
if (loaded !== item && !process.env.NODE_ENV
|
|
27
|
+
if (loaded !== item && !process.env.NODE_ENV?.startsWith("test")) {
|
|
27
28
|
logger.warn({ name: buildSortOrder }, "[%s] depends different version {%s}", library.name, item.name);
|
|
28
29
|
}
|
|
29
30
|
});
|
|
@@ -54,6 +55,7 @@ export function buildSortOrder(app, logger) {
|
|
|
54
55
|
}
|
|
55
56
|
export const COERCE_CONTEXT = (context) => context;
|
|
56
57
|
export const WIRING_CONTEXT = COERCE_CONTEXT("boilerplate:wiring");
|
|
58
|
+
// #MARK: validateLibrary
|
|
57
59
|
export function validateLibrary(project, serviceList) {
|
|
58
60
|
if (is.empty(project)) {
|
|
59
61
|
throw new BootstrapException(COERCE_CONTEXT("CreateLibrary"), "MISSING_LIBRARY_NAME", "Library name is required");
|
|
@@ -66,6 +68,7 @@ export function validateLibrary(project, serviceList) {
|
|
|
66
68
|
throw new BootstrapException(COERCE_CONTEXT("CreateLibrary"), "INVALID_SERVICE_DEFINITION", `Invalid service definition for '${invalidServiceName}' in library '${project}' (${typeof service}})`);
|
|
67
69
|
}
|
|
68
70
|
}
|
|
71
|
+
// #MARK: wireOrder
|
|
69
72
|
export function wireOrder(priority, list) {
|
|
70
73
|
const out = [...(priority || [])];
|
|
71
74
|
if (!is.empty(priority)) {
|
|
@@ -77,6 +80,7 @@ export function wireOrder(priority, list) {
|
|
|
77
80
|
const temporary = [...out, ...list.filter(i => !out.includes(i))];
|
|
78
81
|
return temporary;
|
|
79
82
|
}
|
|
83
|
+
// #MARK: CreateLibrary
|
|
80
84
|
export function CreateLibrary({ name: libraryName, configuration = {}, priorityInit, services, depends, optionalDepends, }) {
|
|
81
85
|
validateLibrary(libraryName, services);
|
|
82
86
|
const serviceApis = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wiring.helper.js","sourceRoot":"","sources":["../../src/helpers/wiring.helper.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,kBAAkB,EAGlB,UAAU,EAGV,EAAE,EAEF,YAAY,GAKb,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"wiring.helper.js","sourceRoot":"","sources":["../../src/helpers/wiring.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,4 @@ export declare const LOAD_PROJECT: unique symbol;
|
|
|
4
4
|
export declare const EVENT_CONFIGURATION_UPDATED = "event_configuration_updated";
|
|
5
5
|
export declare const INJECTED_DEFINITIONS: unique symbol;
|
|
6
6
|
export type ConfigManager = ReturnType<typeof Configuration>;
|
|
7
|
-
export declare function Configuration({ context, event, lifecycle, internal,
|
|
7
|
+
export declare function Configuration({ context, event, lifecycle, internal, }: TServiceParams): DigitalAlchemyConfiguration;
|
|
@@ -1,41 +1,43 @@
|
|
|
1
|
-
import { BootstrapException, ConfigLoaderEnvironment,
|
|
1
|
+
import { BootstrapException, ConfigLoaderEnvironment, deepExtend, eachSeries, } from "..";
|
|
2
2
|
import { is } from ".";
|
|
3
3
|
export const INITIALIZE = Symbol.for("initialize");
|
|
4
4
|
export const LOAD_PROJECT = Symbol.for("load-project");
|
|
5
5
|
export const EVENT_CONFIGURATION_UPDATED = "event_configuration_updated";
|
|
6
6
|
export const INJECTED_DEFINITIONS = Symbol.for("injected-config");
|
|
7
7
|
const DECIMALS = 2;
|
|
8
|
-
export function Configuration({ context, event, lifecycle, internal,
|
|
9
|
-
// ! THIS DOES NOT EXIST BEFORE PRE INIT
|
|
10
|
-
logger, }) {
|
|
8
|
+
export function Configuration({ context, event, lifecycle, internal, }) {
|
|
11
9
|
// modern problems require modern solutions
|
|
10
|
+
let logger;
|
|
12
11
|
lifecycle.onPreInit(() => (logger = internal.boilerplate.logger.context(context)));
|
|
13
|
-
const configuration = {};
|
|
14
12
|
const configDefinitions = new Map();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
13
|
+
const configuration = {};
|
|
14
|
+
const loaded = new Set();
|
|
15
|
+
const loaders = new Map();
|
|
16
|
+
// #MARK:
|
|
17
|
+
const proxyData = {};
|
|
18
|
+
const configValueProxy = new Proxy(proxyData, {
|
|
19
|
+
get(_, project) {
|
|
20
|
+
return { ...internal.utils.object.get(configuration, project) };
|
|
21
|
+
},
|
|
22
|
+
has(_, key) {
|
|
23
|
+
Object.keys(configuration).forEach(key => (proxyData[key] ??= {}));
|
|
24
|
+
return Object.keys(configuration).includes(key);
|
|
25
|
+
},
|
|
26
|
+
ownKeys() {
|
|
27
|
+
Object.keys(configuration).forEach(key => (proxyData[key] ??= {}));
|
|
28
|
+
return Object.keys(configuration);
|
|
29
|
+
},
|
|
30
|
+
set() {
|
|
31
|
+
return false;
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
// #MARK: setConfig
|
|
34
35
|
function setConfig(project, property, value) {
|
|
35
36
|
internal.utils.object.set(configuration, [project, property].join("."), value);
|
|
36
37
|
// in case anyone needs a hook
|
|
37
38
|
event.emit(EVENT_CONFIGURATION_UPDATED, project, property);
|
|
38
39
|
}
|
|
40
|
+
// #MARK: validateConfig
|
|
39
41
|
function validateConfig() {
|
|
40
42
|
// * validate
|
|
41
43
|
// - ensure all required properties have been defined
|
|
@@ -50,36 +52,56 @@ logger, }) {
|
|
|
50
52
|
});
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
|
-
// #MARK:
|
|
55
|
+
// #MARK: registerLoader
|
|
56
|
+
function registerLoader(loader, name) {
|
|
57
|
+
loaders.set(name, loader);
|
|
58
|
+
}
|
|
59
|
+
// #MARK: mergeConfig
|
|
60
|
+
function mergeConfig(data, type) {
|
|
61
|
+
// * prevents loaders from setting properties that they aren't supposed to
|
|
62
|
+
configDefinitions.forEach((project, name) => {
|
|
63
|
+
const keys = Object.keys(project);
|
|
64
|
+
keys.forEach(key => {
|
|
65
|
+
const { source } = project[key];
|
|
66
|
+
if (is.array(source) && !type.some(i => source.includes(i))) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const moduleConfig = data[name];
|
|
70
|
+
if (moduleConfig && key in moduleConfig) {
|
|
71
|
+
internal.utils.object.set(configuration, [name, key].join("."), data[name][key]);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// #MARK: initialize
|
|
54
77
|
async function initialize(application) {
|
|
55
|
-
const configLoaders = internal.boot.application.configurationLoaders ??
|
|
56
|
-
[ConfigLoaderEnvironment, configLoaderFile];
|
|
57
78
|
const start = performance.now();
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
79
|
+
mergeConfig(await ConfigLoaderEnvironment({
|
|
80
|
+
application,
|
|
81
|
+
configs: configDefinitions,
|
|
82
|
+
internal,
|
|
83
|
+
logger,
|
|
84
|
+
}), ["env", "argv"]);
|
|
85
|
+
mergeConfig(await ConfigLoaderEnvironment({
|
|
86
|
+
application,
|
|
87
|
+
configs: configDefinitions,
|
|
88
|
+
internal,
|
|
89
|
+
logger,
|
|
90
|
+
}), ["file"]);
|
|
66
91
|
// * load!
|
|
67
|
-
await eachSeries(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
internal,
|
|
72
|
-
logger,
|
|
73
|
-
});
|
|
74
|
-
deepExtend(configuration, merge);
|
|
92
|
+
await eachSeries([...loaders.entries()], async ([type, loader]) => {
|
|
93
|
+
mergeConfig(await loader({ application, configs: configDefinitions, internal, logger }), [
|
|
94
|
+
type,
|
|
95
|
+
]);
|
|
75
96
|
});
|
|
76
97
|
validateConfig();
|
|
77
98
|
return `${(performance.now() - start).toFixed(DECIMALS)}ms`;
|
|
78
99
|
}
|
|
100
|
+
// #MARK: merge
|
|
79
101
|
function merge(merge) {
|
|
80
102
|
return deepExtend(configuration, merge);
|
|
81
103
|
}
|
|
82
|
-
|
|
104
|
+
// #MARK: loadProject
|
|
83
105
|
function loadProject(library, definitions) {
|
|
84
106
|
if (loaded.has(library)) {
|
|
85
107
|
return;
|
|
@@ -99,9 +121,31 @@ logger, }) {
|
|
|
99
121
|
});
|
|
100
122
|
}
|
|
101
123
|
}
|
|
124
|
+
// #MARK: onUpdate
|
|
125
|
+
function onUpdate(callback, project, property) {
|
|
126
|
+
event.on(EVENT_CONFIGURATION_UPDATED, (updatedProject, updatedProperty) => {
|
|
127
|
+
if (!is.empty(project) && project !== updatedProject) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (!is.empty(property) && property !== updatedProperty) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
callback(updatedProject, updatedProperty);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// #MARK: <return>
|
|
102
137
|
return {
|
|
138
|
+
/**
|
|
139
|
+
* @internal
|
|
140
|
+
*/
|
|
103
141
|
[INITIALIZE]: initialize,
|
|
104
|
-
|
|
142
|
+
/**
|
|
143
|
+
* @internal
|
|
144
|
+
*/
|
|
145
|
+
[INJECTED_DEFINITIONS]: configValueProxy,
|
|
146
|
+
/**
|
|
147
|
+
* @internal
|
|
148
|
+
*/
|
|
105
149
|
[LOAD_PROJECT]: loadProject,
|
|
106
150
|
/**
|
|
107
151
|
* retrieve the metadata that was originally used to define the configs
|
|
@@ -112,18 +156,9 @@ logger, }) {
|
|
|
112
156
|
*
|
|
113
157
|
* intended for initial loading workflows
|
|
114
158
|
*/
|
|
115
|
-
merge
|
|
116
|
-
onUpdate
|
|
117
|
-
|
|
118
|
-
if (!is.empty(project) && project !== updatedProject) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
if (!is.empty(property) && property !== updatedProperty) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
callback(updatedProject, updatedProperty);
|
|
125
|
-
});
|
|
126
|
-
},
|
|
159
|
+
merge,
|
|
160
|
+
onUpdate,
|
|
161
|
+
registerLoader,
|
|
127
162
|
set: setConfig,
|
|
128
163
|
};
|
|
129
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.extension.js","sourceRoot":"","sources":["../../src/services/configuration.extension.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"configuration.extension.js","sourceRoot":"","sources":["../../src/services/configuration.extension.ts"],"names":[],"mappings":"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"}
|