@digital-alchemy/core 24.8.4 → 24.9.4
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 +17 -27
- 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.d.ts +5 -3
- package/dist/helpers/config-file-loader.helper.js +45 -52
- package/dist/helpers/config-file-loader.helper.js.map +1 -1
- package/dist/helpers/config.helper.d.ts +24 -3
- package/dist/helpers/config.helper.js +30 -37
- 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.d.ts +2 -0
- package/dist/helpers/extend.helper.js +19 -24
- 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 +3 -14
- package/dist/helpers/utilities.helper.js +51 -73
- 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 +201 -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 +56 -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
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { CreateApplication } from "../services";
|
|
2
|
+
import { TestRunner } from "../testing";
|
|
3
|
+
import { deepExtend } from "./extend.helper";
|
|
4
|
+
import { CreateLibrary, } from "./wiring.helper";
|
|
5
|
+
export function createModule(options) {
|
|
6
|
+
function extend(extendOptions) {
|
|
7
|
+
const appendLibrary = new Map();
|
|
8
|
+
let services = { ...workingModule.services };
|
|
9
|
+
const extend = {
|
|
10
|
+
appendLibrary: (library) => {
|
|
11
|
+
const name = library.name;
|
|
12
|
+
if (appendLibrary.has(name)) {
|
|
13
|
+
throw new Error(`${name} already is appended`);
|
|
14
|
+
}
|
|
15
|
+
const exists = workingModule.depends.some(i => i.name === name);
|
|
16
|
+
if (exists) {
|
|
17
|
+
throw new Error(`${name} exists as a library in base, use replaceLibrary`);
|
|
18
|
+
}
|
|
19
|
+
appendLibrary.set(name, library);
|
|
20
|
+
return extend;
|
|
21
|
+
},
|
|
22
|
+
appendService: (name, service) => {
|
|
23
|
+
if (name in services) {
|
|
24
|
+
throw new Error(`${name} exists as a service in base, use replaceService`);
|
|
25
|
+
}
|
|
26
|
+
// @ts-expect-error the interface makes this type properly, idc
|
|
27
|
+
services[name] = service;
|
|
28
|
+
return extend;
|
|
29
|
+
},
|
|
30
|
+
omitService: (...keys) => {
|
|
31
|
+
services = Object.fromEntries(Object.entries(services).filter(([i]) => !keys.includes(i)));
|
|
32
|
+
return extend;
|
|
33
|
+
},
|
|
34
|
+
pickService: (...keys) => {
|
|
35
|
+
services = Object.fromEntries(Object.entries(services).filter(([i]) => keys.includes(i)));
|
|
36
|
+
return extend;
|
|
37
|
+
},
|
|
38
|
+
rebuild: (incoming) => {
|
|
39
|
+
services = incoming;
|
|
40
|
+
return extend;
|
|
41
|
+
},
|
|
42
|
+
replaceLibrary: (library) => {
|
|
43
|
+
const name = library.name;
|
|
44
|
+
if (appendLibrary.has(name)) {
|
|
45
|
+
appendLibrary.set(name, library);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const exists = workingModule.depends.some(i => i.name === name);
|
|
49
|
+
if (!exists) {
|
|
50
|
+
throw new Error(`${name} does not exist in module yet`);
|
|
51
|
+
}
|
|
52
|
+
appendLibrary.set(name, library);
|
|
53
|
+
}
|
|
54
|
+
return extend;
|
|
55
|
+
},
|
|
56
|
+
// @ts-expect-error I don't care
|
|
57
|
+
replaceService: (name, target) => {
|
|
58
|
+
if (!(name in services)) {
|
|
59
|
+
throw new Error(`${String(name)} does not exist to replace`);
|
|
60
|
+
}
|
|
61
|
+
// @ts-expect-error I don't care
|
|
62
|
+
services[name] = target;
|
|
63
|
+
return extend;
|
|
64
|
+
},
|
|
65
|
+
toApplication: () => {
|
|
66
|
+
const depends = {};
|
|
67
|
+
workingModule.depends.forEach(i => (depends[i.name] = i));
|
|
68
|
+
appendLibrary.forEach((value, key) => (depends[key] = value));
|
|
69
|
+
return CreateApplication({
|
|
70
|
+
configuration: deepExtend({}, workingModule.configuration),
|
|
71
|
+
libraries: Object.values(depends),
|
|
72
|
+
// @ts-expect-error wrapper problems
|
|
73
|
+
name: extendOptions?.name || options.name,
|
|
74
|
+
// @ts-expect-error wrapper problems
|
|
75
|
+
priorityInit: [...workingModule.priorityInit],
|
|
76
|
+
services,
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
toLibrary: () => {
|
|
80
|
+
const depends = {};
|
|
81
|
+
workingModule.depends.forEach(i => (depends[i.name] = i));
|
|
82
|
+
appendLibrary.forEach((value, key) => (depends[key] = value));
|
|
83
|
+
return CreateLibrary({
|
|
84
|
+
configuration: deepExtend({}, workingModule.configuration),
|
|
85
|
+
depends: Object.values(depends),
|
|
86
|
+
// @ts-expect-error wrapper problems
|
|
87
|
+
name: extendOptions?.name || options.name,
|
|
88
|
+
optionalDepends: workingModule.optionalDepends,
|
|
89
|
+
// @ts-expect-error wrapper problems
|
|
90
|
+
priorityInit: [...workingModule.priorityInit],
|
|
91
|
+
services,
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
toTest: () => {
|
|
95
|
+
return TestRunner({ target: extend.toApplication() });
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
return extend;
|
|
99
|
+
}
|
|
100
|
+
const workingModule = {
|
|
101
|
+
configuration: options.configuration,
|
|
102
|
+
depends: options.depends,
|
|
103
|
+
extend,
|
|
104
|
+
name: options.name,
|
|
105
|
+
optionalDepends: options.optionalDepends ?? [],
|
|
106
|
+
priorityInit: options.priorityInit,
|
|
107
|
+
services: options.services ?? {},
|
|
108
|
+
};
|
|
109
|
+
return workingModule;
|
|
110
|
+
}
|
|
111
|
+
createModule.fromApplication = (application) => {
|
|
112
|
+
return createModule({
|
|
113
|
+
configuration: application.configuration || {},
|
|
114
|
+
depends: application.libraries || [],
|
|
115
|
+
name: application.name,
|
|
116
|
+
optionalDepends: [],
|
|
117
|
+
priorityInit: application.priorityInit || [],
|
|
118
|
+
services: application.services,
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
createModule.fromLibrary = (library) => {
|
|
122
|
+
return createModule({
|
|
123
|
+
configuration: library.configuration || {},
|
|
124
|
+
depends: library.depends || [],
|
|
125
|
+
name: library.name,
|
|
126
|
+
optionalDepends: library.optionalDepends || [],
|
|
127
|
+
priorityInit: library.priorityInit || [],
|
|
128
|
+
services: library.services,
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=module.helper.js.map
|
|
@@ -0,0 +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;AAkFzB,MAAM,UAAU,YAAY,CAC1B,OAAkC;IAElC,SAAS,MAAM,CAAC,aAA4B;QAC1C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;QAClD,IAAI,QAAQ,GAAG,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QAE7C,MAAM,MAAM,GAA0B;YACpC,aAAa,EAAE,CAAC,OAAiB,EAAE,EAAE;gBACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAChE,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kDAAkD,CAAC,CAAC;gBAC7E,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjC,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,aAAa,EAAE,CAAC,IAAY,EAAE,OAAwB,EAAE,EAAE;gBACxD,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kDAAkD,CAAC,CAAC;gBAC7E,CAAC;gBACD,+DAA+D;gBAC/D,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,WAAW,EAAE,CAAuB,GAAG,IAAY,EAAE,EAAE;gBACrD,QAAQ,GAAG,MAAM,CAAC,WAAW,CAC3B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAS,CAAC,CAAC,CACjD,CAAC;gBACrB,OAAO,MAAwD,CAAC;YAClE,CAAC;YACD,WAAW,EAAE,CAAuB,GAAG,IAAY,EAAE,EAAE;gBACrD,QAAQ,GAAG,MAAM,CAAC,WAAW,CAC3B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAS,CAAC,CAAC,CAChD,CAAC;gBACrB,OAAO,MAAsD,CAAC;YAChE,CAAC;YACD,OAAO,EAAE,CAAyB,QAA+B,EAAE,EAAE;gBACnE,QAAQ,GAAG,QAAwB,CAAC;gBACpC,OAAO,MAAqD,CAAC;YAC/D,CAAC;YACD,cAAc,EAAE,CAAC,OAAiB,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;oBAChE,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,+BAA+B,CAAC,CAAC;oBAC1D,CAAC;oBACD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,gCAAgC;YAChC,cAAc,EAAE,CACd,IAAY,EACZ,MAAU,EACV,EAAE;gBACF,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBAC/D,CAAC;gBACD,gCAAgC;gBAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;gBACxB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,aAAa,EAAE,GAAG,EAAE;gBAClB,MAAM,OAAO,GAAG,EAA8B,CAAC;gBAC/C,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1D,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBAE9D,OAAO,iBAAiB,CAAC;oBACvB,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC;oBAC1D,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBACjC,oCAAoC;oBACpC,IAAI,EAAE,aAAa,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI;oBACzC,oCAAoC;oBACpC,YAAY,EAAE,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC;oBAC7C,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;YACD,SAAS,EAAE,GAAG,EAAE;gBACd,MAAM,OAAO,GAAG,EAA8B,CAAC;gBAC/C,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1D,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBAE9D,OAAO,aAAa,CAAC;oBACnB,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC;oBAC1D,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC/B,oCAAoC;oBACpC,IAAI,EAAE,aAAa,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI;oBACzC,eAAe,EAAE,aAAa,CAAC,eAAe;oBAC9C,oCAAoC;oBACpC,YAAY,EAAE,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC;oBAC7C,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACxD,CAAC;SACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,aAAa,GAA+B;QAChD,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM;QACN,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;QAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAK,EAAQ;KACxC,CAAC;IACF,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,YAAY,CAAC,eAAe,GAAG,CAC7B,WAAwC,EACxC,EAAE;IACF,OAAO,YAAY,CAAO;QACxB,aAAa,EAAE,WAAW,CAAC,aAAa,IAAK,EAAQ;QACrD,OAAO,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE;QACpC,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,EAAE;QAC5C,QAAQ,EAAE,WAAW,CAAC,QAAQ;KAC/B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,CACzB,OAAgC,EAChC,EAAE;IACF,OAAO,YAAY,CAAO;QACxB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAK,EAAQ;QACjD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;QAC9C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -30,12 +30,11 @@ export declare const WEEK: number;
|
|
|
30
30
|
export declare const SECOND = 1000;
|
|
31
31
|
export declare const PERCENT = 100;
|
|
32
32
|
export declare const YEAR: number;
|
|
33
|
+
export declare const ACTIVE_SLEEPS: Set<SleepReturn>;
|
|
33
34
|
type SleepReturn = Promise<void> & {
|
|
34
|
-
kill: (execute
|
|
35
|
+
kill: (execute?: "stop" | "continue") => void;
|
|
35
36
|
};
|
|
36
37
|
/**
|
|
37
|
-
* Defaults to 1000 (1 second).
|
|
38
|
-
*
|
|
39
38
|
* #MARK: Simple usage
|
|
40
39
|
*
|
|
41
40
|
* ```typescript
|
|
@@ -53,25 +52,15 @@ type SleepReturn = Promise<void> & {
|
|
|
53
52
|
* console.log(end - start); // 1000, because we stopped it early and executed
|
|
54
53
|
* ```
|
|
55
54
|
*/
|
|
56
|
-
export declare function sleep(target
|
|
55
|
+
export declare function sleep(target: number | Date): SleepReturn;
|
|
57
56
|
export declare const ACTIVE_THROTTLE: Set<string>;
|
|
58
57
|
export declare const ACTIVE_DEBOUNCE: Map<string, SleepReturn>;
|
|
59
|
-
/**
|
|
60
|
-
* allow initial call, then block for a period
|
|
61
|
-
*/
|
|
62
|
-
export declare function throttle(identifier: string, timeout: number): Promise<void>;
|
|
63
58
|
/**
|
|
64
59
|
* wait for duration after call before allowing next, extends for calls inside window
|
|
65
60
|
*/
|
|
66
61
|
export declare function debounce(identifier: string, timeout: number): Promise<void>;
|
|
67
62
|
export declare const asyncNoop: () => Promise<void>;
|
|
68
63
|
export declare const noop: () => void;
|
|
69
|
-
/**
|
|
70
|
-
* #MARK: (re)peat
|
|
71
|
-
*
|
|
72
|
-
* Create an array of length, where the values are filled with a provided fill value, or (index + 1) as default value
|
|
73
|
-
*/
|
|
74
|
-
export declare function PEAT<T = number>(length: number, fill?: T): T[];
|
|
75
64
|
export type TBlackHole = unknown | void | Promise<void>;
|
|
76
65
|
export type TAnyFunction = (...data: unknown[]) => TBlackHole;
|
|
77
66
|
export {};
|
|
@@ -1,56 +1,48 @@
|
|
|
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
|
-
* Defaults to 1000 (1 second).
|
|
53
|
-
*
|
|
54
46
|
* #MARK: Simple usage
|
|
55
47
|
*
|
|
56
48
|
* ```typescript
|
|
@@ -68,58 +60,44 @@ exports.YEAR = 365 * exports.DAY;
|
|
|
68
60
|
* console.log(end - start); // 1000, because we stopped it early and executed
|
|
69
61
|
* ```
|
|
70
62
|
*/
|
|
71
|
-
function sleep(target
|
|
63
|
+
export function sleep(target) {
|
|
72
64
|
// done function from promise
|
|
73
65
|
let done;
|
|
74
|
-
const timeout = setTimeout(() =>
|
|
66
|
+
const timeout = setTimeout(() => {
|
|
67
|
+
if (done) {
|
|
68
|
+
done();
|
|
69
|
+
}
|
|
70
|
+
ACTIVE_SLEEPS.delete(out);
|
|
71
|
+
}, is.date(target) ? target.getTime() - Date.now() : target);
|
|
75
72
|
// Take a normal promise, add a `.kill` to it
|
|
76
73
|
// You can await as normal, or call the function
|
|
77
|
-
const out = new Promise(
|
|
74
|
+
const out = new Promise(i => (done = i));
|
|
75
|
+
ACTIVE_SLEEPS.add(out);
|
|
78
76
|
out.kill = (execute = "stop") => {
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
ACTIVE_SLEEPS.delete(out);
|
|
78
|
+
if (execute === "continue" && done) {
|
|
79
|
+
done();
|
|
81
80
|
}
|
|
82
81
|
clearTimeout(timeout);
|
|
83
82
|
done = undefined;
|
|
84
83
|
};
|
|
85
84
|
return out;
|
|
86
85
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* allow initial call, then block for a period
|
|
91
|
-
*/
|
|
92
|
-
async function throttle(identifier, timeout) {
|
|
93
|
-
if (exports.ACTIVE_THROTTLE.has(identifier)) {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
exports.ACTIVE_THROTTLE.add(identifier);
|
|
97
|
-
await sleep(timeout);
|
|
98
|
-
exports.ACTIVE_THROTTLE.delete(identifier);
|
|
99
|
-
}
|
|
86
|
+
export const ACTIVE_THROTTLE = new Set();
|
|
87
|
+
export const ACTIVE_DEBOUNCE = new Map();
|
|
100
88
|
/**
|
|
101
89
|
* wait for duration after call before allowing next, extends for calls inside window
|
|
102
90
|
*/
|
|
103
|
-
async function debounce(identifier, timeout) {
|
|
104
|
-
const current =
|
|
105
|
-
if (current) {
|
|
91
|
+
export async function debounce(identifier, timeout) {
|
|
92
|
+
const current = ACTIVE_DEBOUNCE.get(identifier);
|
|
93
|
+
if (!is.undefined(current)) {
|
|
106
94
|
current.kill("stop");
|
|
107
95
|
}
|
|
108
96
|
const delay = sleep(timeout);
|
|
109
|
-
|
|
97
|
+
ACTIVE_DEBOUNCE.set(identifier, delay);
|
|
110
98
|
await delay;
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
const asyncNoop = async () => await sleep(exports.NONE);
|
|
114
|
-
exports.asyncNoop = asyncNoop;
|
|
115
|
-
const noop = () => { };
|
|
116
|
-
exports.noop = noop;
|
|
117
|
-
/**
|
|
118
|
-
* #MARK: (re)peat
|
|
119
|
-
*
|
|
120
|
-
* Create an array of length, where the values are filled with a provided fill value, or (index + 1) as default value
|
|
121
|
-
*/
|
|
122
|
-
function PEAT(length, fill) {
|
|
123
|
-
return Array.from({ length }).map((_, index) => fill ?? (index + exports.ARRAY_OFFSET));
|
|
99
|
+
ACTIVE_DEBOUNCE.delete(identifier);
|
|
124
100
|
}
|
|
101
|
+
export const asyncNoop = async () => await sleep(NONE);
|
|
102
|
+
export const noop = () => { };
|
|
125
103
|
//# 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 {};
|