@digital-alchemy/core 24.8.3 → 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.
Files changed (117) hide show
  1. package/README.md +4 -1
  2. package/dist/helpers/async.helper.d.ts +1 -1
  3. package/dist/helpers/async.helper.js +13 -14
  4. package/dist/helpers/async.helper.js.map +1 -1
  5. package/dist/helpers/config-environment-loader.helper.js +16 -20
  6. package/dist/helpers/config-environment-loader.helper.js.map +1 -1
  7. package/dist/helpers/config-file-loader.helper.js +39 -46
  8. package/dist/helpers/config-file-loader.helper.js.map +1 -1
  9. package/dist/helpers/config.helper.d.ts +23 -2
  10. package/dist/helpers/config.helper.js +28 -38
  11. package/dist/helpers/config.helper.js.map +1 -1
  12. package/dist/helpers/context.helper.js +1 -2
  13. package/dist/helpers/cron.helper.d.ts +27 -0
  14. package/dist/helpers/cron.helper.js +4 -7
  15. package/dist/helpers/cron.helper.js.map +1 -1
  16. package/dist/helpers/errors.helper.d.ts +0 -12
  17. package/dist/helpers/errors.helper.js +2 -23
  18. package/dist/helpers/errors.helper.js.map +1 -1
  19. package/dist/helpers/events.helper.js +4 -10
  20. package/dist/helpers/events.helper.js.map +1 -1
  21. package/dist/helpers/extend.helper.js +12 -17
  22. package/dist/helpers/extend.helper.js.map +1 -1
  23. package/dist/helpers/index.d.ts +2 -4
  24. package/dist/helpers/index.js +14 -19
  25. package/dist/helpers/index.js.map +1 -1
  26. package/dist/helpers/lifecycle.helper.d.ts +1 -5
  27. package/dist/helpers/lifecycle.helper.js +1 -4
  28. package/dist/helpers/lifecycle.helper.js.map +1 -1
  29. package/dist/{extensions/logger.extension.d.ts → helpers/logger.helper.d.ts} +33 -40
  30. package/dist/helpers/logger.helper.js +10 -0
  31. package/dist/helpers/logger.helper.js.map +1 -0
  32. package/dist/helpers/module.helper.d.ts +74 -0
  33. package/dist/helpers/module.helper.js +131 -0
  34. package/dist/helpers/module.helper.js.map +1 -0
  35. package/dist/helpers/utilities.helper.d.ts +1 -0
  36. package/dist/helpers/utilities.helper.js +57 -58
  37. package/dist/helpers/utilities.helper.js.map +1 -1
  38. package/dist/helpers/wiring.helper.d.ts +77 -23
  39. package/dist/helpers/wiring.helper.js +45 -47
  40. package/dist/helpers/wiring.helper.js.map +1 -1
  41. package/dist/index.d.ts +2 -1
  42. package/dist/index.js +3 -5
  43. package/dist/index.js.map +1 -1
  44. package/dist/services/als.extension.d.ts +2 -0
  45. package/dist/services/als.extension.js +17 -0
  46. package/dist/services/als.extension.js.map +1 -0
  47. package/dist/services/configuration.extension.d.ts +7 -0
  48. package/dist/services/configuration.extension.js +117 -0
  49. package/dist/services/configuration.extension.js.map +1 -0
  50. package/dist/{extensions → services}/index.d.ts +1 -3
  51. package/dist/services/index.js +8 -0
  52. package/dist/services/index.js.map +1 -0
  53. package/dist/{extensions → services}/internal.extension.d.ts +7 -23
  54. package/dist/{extensions → services}/internal.extension.js +43 -55
  55. package/dist/services/internal.extension.js.map +1 -0
  56. package/dist/{extensions → services}/is.extension.d.ts +5 -0
  57. package/dist/{extensions → services}/is.extension.js +20 -15
  58. package/dist/services/is.extension.js.map +1 -0
  59. package/dist/{extensions → services}/lifecycle.extension.js +17 -19
  60. package/dist/services/lifecycle.extension.js.map +1 -0
  61. package/dist/services/logger.extension.d.ts +2 -0
  62. package/dist/services/logger.extension.js +200 -0
  63. package/dist/services/logger.extension.js.map +1 -0
  64. package/dist/services/scheduler.extension.d.ts +2 -0
  65. package/dist/services/scheduler.extension.js +108 -0
  66. package/dist/services/scheduler.extension.js.map +1 -0
  67. package/dist/services/wiring.extension.d.ts +111 -0
  68. package/dist/services/wiring.extension.js +437 -0
  69. package/dist/services/wiring.extension.js.map +1 -0
  70. package/dist/testing/index.d.ts +2 -0
  71. package/dist/testing/index.js +3 -0
  72. package/dist/testing/index.js.map +1 -0
  73. package/dist/testing/mock-logger.d.ts +2 -0
  74. package/dist/testing/mock-logger.js +11 -0
  75. package/dist/testing/mock-logger.js.map +1 -0
  76. package/dist/testing/test-module.d.ts +112 -0
  77. package/dist/testing/test-module.js +138 -0
  78. package/dist/testing/test-module.js.map +1 -0
  79. package/package.json +57 -43
  80. package/dist/extensions/cache.extension.d.ts +0 -2
  81. package/dist/extensions/cache.extension.js +0 -90
  82. package/dist/extensions/cache.extension.js.map +0 -1
  83. package/dist/extensions/configuration.extension.d.ts +0 -52
  84. package/dist/extensions/configuration.extension.js +0 -131
  85. package/dist/extensions/configuration.extension.js.map +0 -1
  86. package/dist/extensions/fetch.extension.d.ts +0 -17
  87. package/dist/extensions/fetch.extension.js +0 -133
  88. package/dist/extensions/fetch.extension.js.map +0 -1
  89. package/dist/extensions/index.js +0 -13
  90. package/dist/extensions/index.js.map +0 -1
  91. package/dist/extensions/internal.extension.js.map +0 -1
  92. package/dist/extensions/is.extension.js.map +0 -1
  93. package/dist/extensions/lifecycle.extension.js.map +0 -1
  94. package/dist/extensions/logger.extension.js +0 -186
  95. package/dist/extensions/logger.extension.js.map +0 -1
  96. package/dist/extensions/metrics.extension.d.ts +0 -18
  97. package/dist/extensions/metrics.extension.js +0 -156
  98. package/dist/extensions/metrics.extension.js.map +0 -1
  99. package/dist/extensions/scheduler.extension.d.ts +0 -21
  100. package/dist/extensions/scheduler.extension.js +0 -133
  101. package/dist/extensions/scheduler.extension.js.map +0 -1
  102. package/dist/extensions/wiring.extension.d.ts +0 -50
  103. package/dist/extensions/wiring.extension.js +0 -374
  104. package/dist/extensions/wiring.extension.js.map +0 -1
  105. package/dist/helpers/cache-memory.helper.d.ts +0 -6
  106. package/dist/helpers/cache-memory.helper.js +0 -68
  107. package/dist/helpers/cache-memory.helper.js.map +0 -1
  108. package/dist/helpers/cache-redis.helper.d.ts +0 -6
  109. package/dist/helpers/cache-redis.helper.js +0 -73
  110. package/dist/helpers/cache-redis.helper.js.map +0 -1
  111. package/dist/helpers/cache.helper.d.ts +0 -19
  112. package/dist/helpers/cache.helper.js +0 -9
  113. package/dist/helpers/cache.helper.js.map +0 -1
  114. package/dist/helpers/fetch.helper.d.ts +0 -165
  115. package/dist/helpers/fetch.helper.js +0 -173
  116. package/dist/helpers/fetch.helper.js.map +0 -1
  117. /package/dist/{extensions → services}/lifecycle.extension.d.ts +0 -0
@@ -0,0 +1,117 @@
1
+ import { BootstrapException, ConfigLoaderEnvironment, ConfigLoaderFile, deepExtend, eachSeries, } from "..";
2
+ import { is } from ".";
3
+ export const INITIALIZE = Symbol.for("initialize");
4
+ export const LOAD_PROJECT = Symbol.for("load-project");
5
+ export const EVENT_CONFIGURATION_UPDATED = "event_configuration_updated";
6
+ export const INJECTED_DEFINITIONS = Symbol.for("injected-config");
7
+ const DECIMALS = 2;
8
+ export function Configuration({ context, event, lifecycle, internal,
9
+ // ! THIS DOES NOT EXIST BEFORE PRE INIT
10
+ logger, }) {
11
+ // modern problems require modern solutions
12
+ lifecycle.onPreInit(() => (logger = internal.boilerplate.logger.context(context)));
13
+ const configuration = {};
14
+ const configDefinitions = new Map();
15
+ function injectedDefinitions() {
16
+ const out = {};
17
+ return new Proxy(out, {
18
+ get(_, project) {
19
+ return internal.utils.object.get(configuration, project) ?? {};
20
+ },
21
+ has(_, key) {
22
+ Object.keys(configuration).forEach(key => (out[key] ??= {}));
23
+ return Object.keys(configuration).includes(key);
24
+ },
25
+ ownKeys() {
26
+ Object.keys(configuration).forEach(key => (out[key] ??= {}));
27
+ return Object.keys(configuration);
28
+ },
29
+ set() {
30
+ return false;
31
+ },
32
+ });
33
+ }
34
+ function setConfig(project, property, value) {
35
+ internal.utils.object.set(configuration, [project, property].join("."), value);
36
+ // in case anyone needs a hook
37
+ event.emit(EVENT_CONFIGURATION_UPDATED, project, property);
38
+ }
39
+ function validateConfig() {
40
+ // * validate
41
+ // - ensure all required properties have been defined
42
+ configDefinitions.forEach((definitions, project) => {
43
+ Object.keys(definitions).forEach(key => {
44
+ const config = [project, key].join(".");
45
+ if (definitions[key].required &&
46
+ is.undefined(internal.utils.object.get(configuration, config))) {
47
+ // ruh roh
48
+ throw new BootstrapException(context, "REQUIRED_CONFIGURATION_MISSING", `Configuration property ${config} is not defined`);
49
+ }
50
+ });
51
+ });
52
+ }
53
+ // #MARK: Initialize
54
+ async function initialize(application) {
55
+ const configLoaders = internal.boot.application.configurationLoaders ??
56
+ [ConfigLoaderEnvironment, ConfigLoaderFile];
57
+ const start = performance.now();
58
+ // * were configs disabled?
59
+ if (is.empty(configLoaders)) {
60
+ validateConfig();
61
+ if (!configuration.boilerplate.IS_TEST) {
62
+ logger.warn({ name: initialize }, `no config loaders defined`);
63
+ }
64
+ return `${(performance.now() - start).toFixed(DECIMALS)}ms`;
65
+ }
66
+ // * load!
67
+ await eachSeries(configLoaders, async (loader) => {
68
+ const merge = await loader({
69
+ application,
70
+ configs: configDefinitions,
71
+ internal,
72
+ logger,
73
+ });
74
+ deepExtend(configuration, merge);
75
+ });
76
+ validateConfig();
77
+ return `${(performance.now() - start).toFixed(DECIMALS)}ms`;
78
+ }
79
+ function merge(merge) {
80
+ return deepExtend(configuration, merge);
81
+ }
82
+ function loadProject(library, definitions) {
83
+ internal.utils.object.set(configuration, library, {});
84
+ Object.keys(definitions).forEach(key => {
85
+ internal.utils.object.set(configuration, [library, key].join("."), definitions[key].default);
86
+ });
87
+ return configDefinitions.set(library, definitions);
88
+ }
89
+ return {
90
+ [INITIALIZE]: initialize,
91
+ [INJECTED_DEFINITIONS]: injectedDefinitions,
92
+ [LOAD_PROJECT]: loadProject,
93
+ /**
94
+ * retrieve the metadata that was originally used to define the configs
95
+ */
96
+ getDefinitions: () => configDefinitions,
97
+ /**
98
+ * take a configuration object, and deep merge values
99
+ *
100
+ * intended for initial loading workflows
101
+ */
102
+ merge: merge,
103
+ onUpdate(callback, project, property) {
104
+ event.on(EVENT_CONFIGURATION_UPDATED, (updatedProject, updatedProperty) => {
105
+ if (!is.empty(project) && project !== updatedProject) {
106
+ return;
107
+ }
108
+ if (!is.empty(property) && property !== updatedProperty) {
109
+ return;
110
+ }
111
+ callback(updatedProject, updatedProperty);
112
+ });
113
+ },
114
+ set: setConfig,
115
+ };
116
+ }
117
+ //# sourceMappingURL=configuration.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.extension.js","sourceRoot":"","sources":["../../src/services/configuration.extension.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,7 @@
1
- export * from "./cache.extension";
1
+ export * from "./als.extension";
2
2
  export * from "./configuration.extension";
3
- export * from "./fetch.extension";
4
3
  export * from "./internal.extension";
5
4
  export * from "./is.extension";
6
5
  export * from "./logger.extension";
7
- export * from "./metrics.extension";
8
6
  export * from "./scheduler.extension";
9
7
  export * from "./wiring.extension";
@@ -0,0 +1,8 @@
1
+ export * from "./als.extension";
2
+ export * from "./configuration.extension";
3
+ export * from "./internal.extension";
4
+ export * from "./is.extension";
5
+ export * from "./logger.extension";
6
+ export * from "./scheduler.extension";
7
+ export * from "./wiring.extension";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { Dayjs } from "dayjs";
2
2
  import { EventEmitter } from "events";
3
- import { Counter, Summary } from "prom-client";
4
3
  import { Get } from "type-fest";
5
4
  import { ApplicationDefinition, BootstrapOptions, GetApis, LIB_BOILERPLATE, LifecycleStages, OptionalModuleConfiguration, ServiceMap, TBlackHole, TContext, TModuleMappings, TResolvedModuleMappings } from "..";
6
5
  import { CreateLifecycle } from "./lifecycle.extension";
@@ -12,8 +11,9 @@ export declare class InternalUtils {
12
11
  * **NOTE:** bootstrapping process will initialize this at boot, and cleanup at teardown.
13
12
  * Making listener changes should only be done from within the context of service functions
14
13
  */
15
- event: EventEmitter<[never]>;
16
- TitleCase(input: string): string;
14
+ event: EventEmitter;
15
+ constructor();
16
+ titleCase(input: string): string;
17
17
  relativeDate(pastDate: inputFormats, futureDate?: inputFormats): string;
18
18
  object: {
19
19
  del<T>(object: T, path: string): void;
@@ -21,32 +21,16 @@ export declare class InternalUtils {
21
21
  set<T>(object: T, path: string, value: unknown, doNotReplace?: boolean): void;
22
22
  };
23
23
  }
24
- type SafeExecOptions<LABELS extends BaseLabels> = {
24
+ type SafeExecOptions = {
25
+ context?: TContext;
25
26
  exec: () => TBlackHole;
26
- labels: LABELS;
27
- duration: Summary<Extract<keyof LABELS, string>>;
28
- executions: Counter<Extract<keyof LABELS, string>>;
29
- errors: Counter<Extract<keyof LABELS, string>>;
30
- };
31
- type BaseLabels = {
32
- context: TContext;
33
- /**
34
- * ! if provided, specific metrics will be kept
35
- *
36
- * do not pass label if you do not want metrics to be kept, you may not want / need metrics to be kept on all instances
37
- *
38
- * - execution count
39
- * - error count
40
- * - summary of execution time
41
- */
42
- label?: string;
43
27
  };
44
28
  type Phase = "bootstrap" | "teardown" | "running";
45
29
  export declare class InternalDefinition {
46
30
  /**
47
31
  * Utility methods provided by boilerplate
48
32
  */
49
- boilerplate: Pick<GetApis<typeof LIB_BOILERPLATE>, "configuration" | "fetch" | "logger" | "metrics">;
33
+ boilerplate: Pick<GetApis<typeof LIB_BOILERPLATE>, "configuration" | "logger">;
50
34
  boot: {
51
35
  /**
52
36
  * Options that were passed into bootstrap
@@ -83,6 +67,6 @@ export declare class InternalDefinition {
83
67
  startup: Date;
84
68
  };
85
69
  utils: InternalUtils;
86
- safeExec<LABELS extends BaseLabels>(options: (() => TBlackHole) | SafeExecOptions<LABELS>): Promise<void>;
70
+ safeExec<T>(options: (() => TBlackHole) | SafeExecOptions): Promise<T>;
87
71
  }
88
72
  export {};
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InternalDefinition = exports.InternalUtils = void 0;
4
- const tslib_1 = require("tslib");
5
- const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
6
- const events_1 = require("events");
7
- const __1 = require("..");
1
+ import dayjs from "dayjs";
2
+ import { EventEmitter } from "events";
3
+ import { ARRAY_OFFSET, DAY, FIRST, HOUR, is, MINUTE, NONE, SECOND, START, YEAR, } from "..";
8
4
  const EVERYTHING_ELSE = 1;
9
5
  const MONTHS = 12;
10
6
  // TODO: probably should make this configurable
@@ -13,39 +9,48 @@ const formatter = new Intl.RelativeTimeFormat("en", {
13
9
  style: "short",
14
10
  });
15
11
  // #MARK: misc
16
- class InternalUtils {
12
+ export class InternalUtils {
17
13
  /**
18
14
  * The global eventemitter. All of `@digital-alchemy` will be wired through this
19
15
  *
20
16
  * **NOTE:** bootstrapping process will initialize this at boot, and cleanup at teardown.
21
17
  * Making listener changes should only be done from within the context of service functions
22
18
  */
23
- event = new events_1.EventEmitter();
24
- TitleCase(input) {
19
+ event;
20
+ constructor() {
21
+ this.event = new EventEmitter();
22
+ this.event.setMaxListeners(NONE);
23
+ }
24
+ titleCase(input) {
25
25
  const matches = input.match(new RegExp("[a-z][A-Z]", "g"));
26
26
  if (matches) {
27
- matches.forEach((i) => (input = input.replace(i, [...i].join(" "))));
27
+ matches.forEach(i => (input = input.replace(i, [...i].join(" "))));
28
28
  }
29
29
  return input
30
30
  .split(new RegExp("[ _-]"))
31
- .map((word = "") => `${word.charAt(__1.FIRST).toUpperCase()}${word.slice(EVERYTHING_ELSE)}`)
31
+ .map(word => `${word.charAt(FIRST).toUpperCase()}${word.slice(EVERYTHING_ELSE)}`)
32
32
  .join(" ");
33
33
  }
34
34
  relativeDate(pastDate, futureDate = new Date().toISOString()) {
35
35
  const UNITS = new Map([
36
- ["year", __1.YEAR],
37
- ["month", __1.YEAR / MONTHS],
38
- ["day", __1.DAY],
39
- ["hour", __1.HOUR],
40
- ["minute", __1.MINUTE],
41
- ["second", __1.SECOND],
36
+ ["year", YEAR],
37
+ ["month", YEAR / MONTHS],
38
+ ["day", DAY],
39
+ ["hour", HOUR],
40
+ ["minute", MINUTE],
41
+ ["second", SECOND],
42
42
  ]);
43
- if (!pastDate) {
44
- return `NOT A DATE ${pastDate} ${JSON.stringify(pastDate)}`;
43
+ const past = dayjs(pastDate);
44
+ if (!past.isValid()) {
45
+ throw new Error("invalid past date " + pastDate);
46
+ }
47
+ const future = dayjs(futureDate);
48
+ if (!future.isValid()) {
49
+ throw new Error("invalid future date " + pastDate);
45
50
  }
46
- const elapsed = (0, dayjs_1.default)(pastDate).diff(futureDate, "ms");
51
+ const elapsed = past.diff(future, "ms");
47
52
  let out = "";
48
- [...UNITS.keys()].some((unit) => {
53
+ [...UNITS.keys()].some(unit => {
49
54
  const cutoff = UNITS.get(unit);
50
55
  if (Math.abs(elapsed) > cutoff || unit == "second") {
51
56
  out = formatter.format(Math.round(elapsed / cutoff), unit);
@@ -60,7 +65,7 @@ class InternalUtils {
60
65
  del(object, path) {
61
66
  const keys = path.split(".");
62
67
  let current = object; // Starting with the object as an unknown type
63
- for (let i = __1.START; i < keys.length; i++) {
68
+ for (let i = START; i < keys.length; i++) {
64
69
  const key = keys[i];
65
70
  // Check if current is an object and not null
66
71
  if (typeof current !== "object" || current === null) {
@@ -69,13 +74,12 @@ class InternalUtils {
69
74
  }
70
75
  const safeCurrent = current;
71
76
  // If we're at the last key, attempt to delete the property
72
- if (i === keys.length - __1.ARRAY_OFFSET) {
77
+ if (i === keys.length - ARRAY_OFFSET) {
73
78
  delete safeCurrent[key]; // Delete without checking; non-existent keys are a no-op
74
79
  }
75
80
  else {
76
81
  // For non-last keys, if the next level doesn't exist or isn't an object, stop processing
77
- if (typeof safeCurrent[key] !== "object" ||
78
- safeCurrent[key] === null) {
82
+ if (typeof safeCurrent[key] !== "object" || safeCurrent[key] === null) {
79
83
  return;
80
84
  }
81
85
  // Move to the next level in the path
@@ -87,7 +91,7 @@ class InternalUtils {
87
91
  const keys = path.split(".");
88
92
  let current = object;
89
93
  for (const key of keys) {
90
- if (!__1.is.object(current) || current === null || !(key in current)) {
94
+ if (!is.object(current) || current === null || !(key in current)) {
91
95
  return undefined;
92
96
  }
93
97
  current = current[key];
@@ -106,7 +110,7 @@ class InternalUtils {
106
110
  // Safely cast current to Record<string, unknown> after the type guard
107
111
  const safeCurrent = current;
108
112
  // For the last key, attempt to set the value
109
- if (i === keys.length - __1.ARRAY_OFFSET) {
113
+ if (i === keys.length - ARRAY_OFFSET) {
110
114
  if (!doNotReplace || !(key in safeCurrent)) {
111
115
  safeCurrent[key] = value;
112
116
  }
@@ -125,9 +129,8 @@ class InternalUtils {
125
129
  },
126
130
  };
127
131
  }
128
- exports.InternalUtils = InternalUtils;
129
132
  // #region Base definition
130
- class InternalDefinition {
133
+ export class InternalDefinition {
131
134
  /**
132
135
  * Utility methods provided by boilerplate
133
136
  */
@@ -136,36 +139,21 @@ class InternalDefinition {
136
139
  utils = new InternalUtils();
137
140
  // #MARK: safeExec
138
141
  async safeExec(options) {
139
- let labels = {};
140
- let errorMetric;
142
+ const logger = this.boilerplate.logger.systemLogger;
143
+ const context = is.function(options) ? undefined : options?.context;
144
+ const exec = is.function(options) ? options : options?.exec;
145
+ if (!is.function(exec)) {
146
+ logger.error({ context }, `received non-function callback to [safeExec]`);
147
+ return undefined;
148
+ }
141
149
  try {
142
- if (__1.is.function(options)) {
143
- await options();
144
- return;
145
- }
146
- const opt = options;
147
- labels = opt.labels;
148
- errorMetric = opt.errors;
149
- const { exec, duration, executions } = opt;
150
- if (__1.is.empty(labels.label)) {
151
- await exec();
152
- return;
153
- }
154
- executions?.inc(labels);
155
- const end = duration?.startTimer();
156
- await exec();
157
- if (end) {
158
- end(labels);
159
- }
150
+ return (await exec());
160
151
  }
161
152
  catch (error) {
162
- this.boilerplate.logger.systemLogger.error({ error, ...labels }, `callback threw error`);
163
- if (!__1.is.empty(labels.label)) {
164
- errorMetric?.inc(labels);
165
- }
153
+ logger.error({ context, error }, `callback threw error`);
154
+ return undefined;
166
155
  }
167
156
  }
168
157
  }
169
- exports.InternalDefinition = InternalDefinition;
170
158
  // #endregion
171
159
  //# sourceMappingURL=internal.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.extension.js","sourceRoot":"","sources":["../../src/services/internal.extension.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Dayjs } from "dayjs";
1
2
  import { TBlackHole, TContext } from "../helpers";
2
3
  type MaybeEmptyTypes = string | undefined | Array<unknown> | number | Set<unknown> | Map<unknown, unknown> | object;
3
4
  type MaybeFunction = (...parameters: unknown[]) => TBlackHole;
@@ -11,7 +12,11 @@ export declare class IsIt {
11
12
  * The internals of this test may get more creative as context evolves
12
13
  */
13
14
  context(test: unknown): test is TContext;
15
+ /**
16
+ * test is valid date
17
+ */
14
18
  date(test: unknown): test is Date;
19
+ dayjs(test: unknown): test is Dayjs;
15
20
  empty(test: MaybeEmptyTypes): boolean;
16
21
  /**
17
22
  * #MARK: Deep equality test
@@ -1,12 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.is = exports.IsIt = void 0;
4
- const util_1 = require("util");
5
- const helpers_1 = require("../helpers");
1
+ import { randomBytes } from "crypto";
2
+ import dayjs from "dayjs";
3
+ import { isDeepStrictEqual, types } from "util";
4
+ import { EMPTY, EVEN } from "../helpers";
6
5
  /**
7
6
  * type testing and basic conversion tools
8
7
  */
9
- class IsIt {
8
+ export class IsIt {
10
9
  array(test) {
11
10
  return Array.isArray(test);
12
11
  }
@@ -19,18 +18,24 @@ class IsIt {
19
18
  context(test) {
20
19
  return typeof test === "string";
21
20
  }
21
+ /**
22
+ * test is valid date
23
+ */
22
24
  date(test) {
23
- return util_1.types.isDate(test);
25
+ return types.isDate(test) && is.number(test.getTime());
26
+ }
27
+ dayjs(test) {
28
+ return test instanceof dayjs && test.isValid();
24
29
  }
25
30
  empty(test) {
26
31
  if (test === undefined) {
27
32
  return true;
28
33
  }
29
34
  if (typeof test === "string" || Array.isArray(test)) {
30
- return test.length === helpers_1.EMPTY;
35
+ return test.length === EMPTY;
31
36
  }
32
- if (util_1.types.isMap(test) || util_1.types.isSet(test)) {
33
- return test.size === helpers_1.EMPTY;
37
+ if (types.isMap(test) || types.isSet(test)) {
38
+ return test.size === EMPTY;
34
39
  }
35
40
  if (typeof test === "object") {
36
41
  for (const key in test) {
@@ -50,10 +55,10 @@ class IsIt {
50
55
  * #MARK: Deep equality test
51
56
  */
52
57
  equal(a, b) {
53
- return (0, util_1.isDeepStrictEqual)(a, b);
58
+ return isDeepStrictEqual(a, b);
54
59
  }
55
60
  even(test) {
56
- return test % helpers_1.EVEN === helpers_1.EMPTY;
61
+ return test % EVEN === EMPTY;
57
62
  }
58
63
  function(test) {
59
64
  return typeof test === "function";
@@ -65,7 +70,8 @@ class IsIt {
65
70
  return typeof test === "object" && test !== null && !Array.isArray(test);
66
71
  }
67
72
  random(list) {
68
- return list[Math.floor(Math.random() * list.length)];
73
+ // eslint-disable-next-line @typescript-eslint/no-magic-numbers
74
+ return list[Math.floor(randomBytes(1)[0] % list.length)];
69
75
  }
70
76
  string(test) {
71
77
  return typeof test === "string";
@@ -80,6 +86,5 @@ class IsIt {
80
86
  return [...new Set(items)];
81
87
  }
82
88
  }
83
- exports.IsIt = IsIt;
84
- exports.is = new IsIt();
89
+ export const is = new IsIt();
85
90
  //# sourceMappingURL=is.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is.extension.js","sourceRoot":"","sources":["../../src/services/is.extension.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CreateLifecycle = CreateLifecycle;
4
- const helpers_1 = require("../helpers");
5
- const is_extension_1 = require("./is.extension");
1
+ import { DOWN, each, eachSeries, LIFECYCLE_STAGES, UP, } from "../helpers";
2
+ import { is } from "./is.extension";
6
3
  const PRE_CALLBACKS_START = 0;
7
- function CreateLifecycle() {
8
- const events = new Map(helpers_1.LIFECYCLE_STAGES.map((event) => [event, []]));
4
+ const DECIMALS = 2;
5
+ export function CreateLifecycle() {
6
+ const events = new Map(LIFECYCLE_STAGES.map(event => [event, []]));
9
7
  function attachEvent(callback, name, priority) {
10
8
  const stageList = events.get(name);
11
- if (!is_extension_1.is.array(stageList)) {
9
+ if (!is.array(stageList)) {
12
10
  if (!name.includes("Shutdown")) {
13
- setImmediate(async () => await callback());
11
+ callback();
14
12
  }
15
13
  return;
16
14
  }
@@ -27,15 +25,16 @@ function CreateLifecycle() {
27
25
  onShutdownStart: (callback, priority) => attachEvent(callback, "ShutdownStart", priority),
28
26
  },
29
27
  async exec(stage) {
30
- const start = Date.now();
28
+ const start = performance.now();
31
29
  const list = events.get(stage);
32
30
  events.delete(stage);
33
- if (!is_extension_1.is.empty(list)) {
31
+ if (!is.empty(list)) {
34
32
  const sorted = list.filter(({ priority }) => priority !== undefined);
35
33
  const quick = list.filter(({ priority }) => priority === undefined);
36
34
  const positive = [];
37
35
  const negative = [];
38
- sorted.forEach((i) => {
36
+ // console.error("HIT 1");
37
+ sorted.forEach(i => {
39
38
  if (i.priority >= PRE_CALLBACKS_START) {
40
39
  positive.push(i);
41
40
  return;
@@ -44,18 +43,17 @@ function CreateLifecycle() {
44
43
  });
45
44
  // * callbacks with a priority greater than 0
46
45
  // high to low (1000 => 0)
47
- await (0, helpers_1.eachSeries)(positive.sort((a, b) => (a.priority < b.priority ? helpers_1.UP : helpers_1.DOWN)), async ({ callback }) => await callback());
46
+ await eachSeries(positive.toSorted((a, b) => (a.priority < b.priority ? UP : DOWN)), async ({ callback }) => await callback());
47
+ // console.error("HIT 2");
48
48
  // * callbacks without a priority
49
49
  // any order
50
- await (0, helpers_1.each)(quick, async ({ callback }) => await callback());
50
+ await each(quick, async ({ callback }) => await callback());
51
+ // console.error("HIT 3");
51
52
  // * callbacks with a priority less than 0
52
53
  // high to low (-1 => -1000)
53
- await (0, helpers_1.eachSeries)(negative.sort((a, b) => (a.priority < b.priority ? helpers_1.UP : helpers_1.DOWN)), async ({ callback }) => await callback());
54
+ await eachSeries(negative.toSorted((a, b) => (a.priority < b.priority ? UP : DOWN)), async ({ callback }) => await callback());
54
55
  }
55
- // TODO Update this comment with why this sleep exists
56
- // I forgot why, but it seems on purpose
57
- await (0, helpers_1.sleep)(helpers_1.NONE);
58
- return `${Date.now() - start}ms`;
56
+ return `${(performance.now() - start).toFixed(DECIMALS)}ms`;
59
57
  },
60
58
  };
61
59
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.extension.js","sourceRoot":"","sources":["../../src/services/lifecycle.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { DigitalAlchemyLogger, TServiceParams } from "..";
2
+ export declare function Logger({ lifecycle, config, event, internal, als, }: TServiceParams): Promise<DigitalAlchemyLogger>;