@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.
Files changed (119) hide show
  1. package/README.md +17 -27
  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.d.ts +5 -3
  8. package/dist/helpers/config-file-loader.helper.js +45 -52
  9. package/dist/helpers/config-file-loader.helper.js.map +1 -1
  10. package/dist/helpers/config.helper.d.ts +24 -3
  11. package/dist/helpers/config.helper.js +30 -37
  12. package/dist/helpers/config.helper.js.map +1 -1
  13. package/dist/helpers/context.helper.js +1 -2
  14. package/dist/helpers/cron.helper.d.ts +27 -0
  15. package/dist/helpers/cron.helper.js +4 -7
  16. package/dist/helpers/cron.helper.js.map +1 -1
  17. package/dist/helpers/errors.helper.d.ts +0 -12
  18. package/dist/helpers/errors.helper.js +2 -23
  19. package/dist/helpers/errors.helper.js.map +1 -1
  20. package/dist/helpers/events.helper.js +4 -10
  21. package/dist/helpers/events.helper.js.map +1 -1
  22. package/dist/helpers/extend.helper.d.ts +2 -0
  23. package/dist/helpers/extend.helper.js +19 -24
  24. package/dist/helpers/extend.helper.js.map +1 -1
  25. package/dist/helpers/index.d.ts +2 -4
  26. package/dist/helpers/index.js +14 -19
  27. package/dist/helpers/index.js.map +1 -1
  28. package/dist/helpers/lifecycle.helper.d.ts +1 -5
  29. package/dist/helpers/lifecycle.helper.js +1 -4
  30. package/dist/helpers/lifecycle.helper.js.map +1 -1
  31. package/dist/{extensions/logger.extension.d.ts → helpers/logger.helper.d.ts} +33 -40
  32. package/dist/helpers/logger.helper.js +10 -0
  33. package/dist/helpers/logger.helper.js.map +1 -0
  34. package/dist/helpers/module.helper.d.ts +74 -0
  35. package/dist/helpers/module.helper.js +131 -0
  36. package/dist/helpers/module.helper.js.map +1 -0
  37. package/dist/helpers/utilities.helper.d.ts +3 -14
  38. package/dist/helpers/utilities.helper.js +51 -73
  39. package/dist/helpers/utilities.helper.js.map +1 -1
  40. package/dist/helpers/wiring.helper.d.ts +77 -23
  41. package/dist/helpers/wiring.helper.js +45 -47
  42. package/dist/helpers/wiring.helper.js.map +1 -1
  43. package/dist/index.d.ts +2 -1
  44. package/dist/index.js +3 -5
  45. package/dist/index.js.map +1 -1
  46. package/dist/services/als.extension.d.ts +2 -0
  47. package/dist/services/als.extension.js +17 -0
  48. package/dist/services/als.extension.js.map +1 -0
  49. package/dist/services/configuration.extension.d.ts +7 -0
  50. package/dist/services/configuration.extension.js +117 -0
  51. package/dist/services/configuration.extension.js.map +1 -0
  52. package/dist/{extensions → services}/index.d.ts +1 -3
  53. package/dist/services/index.js +8 -0
  54. package/dist/services/index.js.map +1 -0
  55. package/dist/{extensions → services}/internal.extension.d.ts +7 -23
  56. package/dist/{extensions → services}/internal.extension.js +43 -55
  57. package/dist/services/internal.extension.js.map +1 -0
  58. package/dist/{extensions → services}/is.extension.d.ts +5 -0
  59. package/dist/{extensions → services}/is.extension.js +20 -15
  60. package/dist/services/is.extension.js.map +1 -0
  61. package/dist/{extensions → services}/lifecycle.extension.js +17 -19
  62. package/dist/services/lifecycle.extension.js.map +1 -0
  63. package/dist/services/logger.extension.d.ts +2 -0
  64. package/dist/services/logger.extension.js +201 -0
  65. package/dist/services/logger.extension.js.map +1 -0
  66. package/dist/services/scheduler.extension.d.ts +2 -0
  67. package/dist/services/scheduler.extension.js +108 -0
  68. package/dist/services/scheduler.extension.js.map +1 -0
  69. package/dist/services/wiring.extension.d.ts +111 -0
  70. package/dist/services/wiring.extension.js +437 -0
  71. package/dist/services/wiring.extension.js.map +1 -0
  72. package/dist/testing/index.d.ts +2 -0
  73. package/dist/testing/index.js +3 -0
  74. package/dist/testing/index.js.map +1 -0
  75. package/dist/testing/mock-logger.d.ts +2 -0
  76. package/dist/testing/mock-logger.js +11 -0
  77. package/dist/testing/mock-logger.js.map +1 -0
  78. package/dist/testing/test-module.d.ts +112 -0
  79. package/dist/testing/test-module.js +138 -0
  80. package/dist/testing/test-module.js.map +1 -0
  81. package/package.json +56 -43
  82. package/dist/extensions/cache.extension.d.ts +0 -2
  83. package/dist/extensions/cache.extension.js +0 -90
  84. package/dist/extensions/cache.extension.js.map +0 -1
  85. package/dist/extensions/configuration.extension.d.ts +0 -52
  86. package/dist/extensions/configuration.extension.js +0 -131
  87. package/dist/extensions/configuration.extension.js.map +0 -1
  88. package/dist/extensions/fetch.extension.d.ts +0 -17
  89. package/dist/extensions/fetch.extension.js +0 -133
  90. package/dist/extensions/fetch.extension.js.map +0 -1
  91. package/dist/extensions/index.js +0 -13
  92. package/dist/extensions/index.js.map +0 -1
  93. package/dist/extensions/internal.extension.js.map +0 -1
  94. package/dist/extensions/is.extension.js.map +0 -1
  95. package/dist/extensions/lifecycle.extension.js.map +0 -1
  96. package/dist/extensions/logger.extension.js +0 -186
  97. package/dist/extensions/logger.extension.js.map +0 -1
  98. package/dist/extensions/metrics.extension.d.ts +0 -18
  99. package/dist/extensions/metrics.extension.js +0 -156
  100. package/dist/extensions/metrics.extension.js.map +0 -1
  101. package/dist/extensions/scheduler.extension.d.ts +0 -21
  102. package/dist/extensions/scheduler.extension.js +0 -133
  103. package/dist/extensions/scheduler.extension.js.map +0 -1
  104. package/dist/extensions/wiring.extension.d.ts +0 -50
  105. package/dist/extensions/wiring.extension.js +0 -374
  106. package/dist/extensions/wiring.extension.js.map +0 -1
  107. package/dist/helpers/cache-memory.helper.d.ts +0 -6
  108. package/dist/helpers/cache-memory.helper.js +0 -68
  109. package/dist/helpers/cache-memory.helper.js.map +0 -1
  110. package/dist/helpers/cache-redis.helper.d.ts +0 -6
  111. package/dist/helpers/cache-redis.helper.js +0 -73
  112. package/dist/helpers/cache-redis.helper.js.map +0 -1
  113. package/dist/helpers/cache.helper.d.ts +0 -19
  114. package/dist/helpers/cache.helper.js +0 -9
  115. package/dist/helpers/cache.helper.js.map +0 -1
  116. package/dist/helpers/fetch.helper.d.ts +0 -165
  117. package/dist/helpers/fetch.helper.js +0 -173
  118. package/dist/helpers/fetch.helper.js.map +0 -1
  119. /package/dist/{extensions → services}/lifecycle.extension.d.ts +0 -0
@@ -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":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,gBAAgB,EAIhB,EAAE,GACH,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAMpC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAC3C,CAAC;IAEF,SAAS,WAAW,CAAC,QAA2B,EAAE,IAAqB,EAAE,QAAiB;QACxF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,QAAQ,EAAE,CAAC;YACb,CAAC;YACD,OAAO;QACT,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;YACjF,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC;YACnF,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;YAC7E,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC;YACrF,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;YACzE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CACzC,WAAW,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,CAAC;YACrD,eAAe,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC;SACjE;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAsB;YAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;gBACrE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;gBACpE,MAAM,QAAQ,GAAG,EAAsB,CAAC;gBACxC,MAAM,QAAQ,GAAG,EAAsB,CAAC;gBAExC,0BAA0B;gBAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACjB,IAAI,CAAC,CAAC,QAAQ,IAAI,mBAAmB,EAAE,CAAC;wBACtC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACjB,OAAO;oBACT,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC;gBAEH,6CAA6C;gBAC7C,0BAA0B;gBAC1B,MAAM,UAAU,CACd,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAClE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,QAAQ,EAAE,CACzC,CAAC;gBACF,0BAA0B;gBAE1B,iCAAiC;gBACjC,YAAY;gBACZ,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;gBAC5D,0BAA0B;gBAE1B,0CAA0C;gBAC1C,4BAA4B;gBAC5B,MAAM,UAAU,CACd,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAClE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,QAAQ,EAAE,CACzC,CAAC;YACJ,CAAC;YACD,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { DigitalAlchemyLogger, TServiceParams } from "..";
2
+ export declare function Logger({ lifecycle, config, event, internal, als, }: TServiceParams): Promise<DigitalAlchemyLogger>;
@@ -0,0 +1,201 @@
1
+ /* eslint-disable sonarjs/slow-regex */
2
+ import chalk from "chalk";
3
+ import dayjs from "dayjs";
4
+ import { format, inspect } from "util";
5
+ import { EVENT_UPDATE_LOG_LEVELS, FIRST, is, METHOD_COLORS, START, } from "..";
6
+ const LOG_LEVEL_PRIORITY = {
7
+ debug: 20,
8
+ error: 50,
9
+ fatal: 60,
10
+ info: 30,
11
+ silent: 100,
12
+ trace: 10,
13
+ warn: 40,
14
+ };
15
+ const DECIMALS = 2;
16
+ const LOG_LEVELS = Object.keys(LOG_LEVEL_PRIORITY);
17
+ let logger = {};
18
+ const MAX_CUTOFF = 2000;
19
+ const frontDash = " - ";
20
+ const SYMBOL_START = 1;
21
+ const SYMBOL_END = -1;
22
+ const LEVEL_MAX = 7;
23
+ export async function Logger({ lifecycle, config, event, internal, als, }) {
24
+ let lastMessage = performance.now();
25
+ let logCounter = START;
26
+ let httpLogTarget;
27
+ internal.boot.options ??= {};
28
+ const { loggerOptions = {} } = internal.boot.options;
29
+ const timestampFormat = loggerOptions.timestampFormat ?? "ddd HH:mm:ss.SSS";
30
+ loggerOptions.mergeData ??= {};
31
+ const YELLOW_DASH = chalk.yellowBright(frontDash);
32
+ const BLUE_TICK = chalk.blue(`>`);
33
+ let prettyFormat = is.boolean(loggerOptions.pretty) ? loggerOptions.pretty : true;
34
+ function emitHttpLogs(data) {
35
+ if (is.empty(httpLogTarget)) {
36
+ return;
37
+ }
38
+ // validated with datadog, probably is fine elsewhere too
39
+ // https://http-intake.logs.datadoghq.com/v1/input/{API_KEY}
40
+ global.fetch(httpLogTarget, {
41
+ body: JSON.stringify(data),
42
+ headers: { "Content-Type": "application/json" },
43
+ method: "POST",
44
+ });
45
+ }
46
+ function mergeData(data) {
47
+ let out = { ...data, ...loggerOptions.mergeData };
48
+ if (loggerOptions.counter) {
49
+ const counter = out;
50
+ counter.logIdx = logCounter++;
51
+ }
52
+ if (loggerOptions.als) {
53
+ out = { ...out, ...als.getLogData() };
54
+ }
55
+ return out;
56
+ }
57
+ const prettyFormatMessage = (message) => {
58
+ if (!message) {
59
+ return ``;
60
+ }
61
+ if (!prettyFormat || message.length > MAX_CUTOFF) {
62
+ return message;
63
+ }
64
+ // ? partA#partB - highlight it all in yellow
65
+ message = message.replaceAll(new RegExp("([^ ]+#[^ ]+)", "g"), i => chalk.yellow(i));
66
+ // ? [A] > [B] > [C] - highlight the >'s in blue
67
+ message = message.replaceAll("] > [", `] ${BLUE_TICK} [`);
68
+ // ? [Text] - strip brackets, highlight magenta
69
+ message = message.replaceAll(new RegExp(String.raw `(\[[^\]\[]+\])`, "g"), i => chalk.bold.magenta(i.slice(SYMBOL_START, SYMBOL_END)));
70
+ // ? {Text} - strip braces, highlight gray
71
+ message = message.replaceAll(new RegExp(String.raw `(\{[^\]}]+\})`, "g"), i => chalk.bold.gray(i.slice(SYMBOL_START, SYMBOL_END)));
72
+ // ? " - Text" (line prefix with dash) - highlight dash
73
+ if (message.slice(START, frontDash.length) === frontDash) {
74
+ message = `${YELLOW_DASH}${message.slice(frontDash.length)}`;
75
+ }
76
+ return message;
77
+ };
78
+ if (is.empty(internal.boot.options?.customLogger)) {
79
+ // #MARK: formatter
80
+ [...METHOD_COLORS.keys()].forEach(key => {
81
+ const level = `[${key.toUpperCase()}]`.padStart(LEVEL_MAX, " ");
82
+ logger[key] = (context, ...parameters) => {
83
+ const data = mergeData(is.object(parameters[FIRST])
84
+ ? parameters.shift()
85
+ : {});
86
+ const rawData = {
87
+ ...data,
88
+ level: key,
89
+ timestamp: Date.now(),
90
+ };
91
+ const highlighted = chalk.bold[METHOD_COLORS.get(key)](`[${data.context || context}]`);
92
+ const name = is.object(data.name) || is.function(data.name) ? data.name.name : data.name;
93
+ delete data.context;
94
+ delete data.name;
95
+ const timestamp = chalk.white(`[${dayjs().format(timestampFormat)}]`);
96
+ let prettyMessage;
97
+ if (!is.empty(parameters)) {
98
+ const text = parameters.shift();
99
+ rawData.msg = format(text, ...parameters);
100
+ prettyMessage = format(prettyFormatMessage(text), ...parameters);
101
+ }
102
+ let ms = "";
103
+ if (loggerOptions.ms) {
104
+ const now = performance.now();
105
+ ms = "+" + (now - lastMessage).toFixed(DECIMALS) + `ms`;
106
+ lastMessage = now;
107
+ rawData.ms = ms;
108
+ }
109
+ let message = `${ms}${timestamp} ${level}${highlighted}`;
110
+ if (!is.empty(name)) {
111
+ message += chalk.blue(` (${name})`);
112
+ }
113
+ emitHttpLogs(rawData);
114
+ if (!is.empty(prettyMessage)) {
115
+ message += `: ${chalk.cyan(prettyMessage)}`;
116
+ }
117
+ if (!is.empty(data)) {
118
+ message +=
119
+ "\n" +
120
+ inspect(data, {
121
+ colors: true,
122
+ compact: false,
123
+ depth: 10,
124
+ numericSeparator: true,
125
+ sorted: true,
126
+ })
127
+ .split("\n")
128
+ .slice(SYMBOL_START, SYMBOL_END)
129
+ .join("\n");
130
+ }
131
+ if (["warn", "error", "fatal"].includes(key)) {
132
+ global.console.error(message);
133
+ return;
134
+ }
135
+ global.console.log(message);
136
+ };
137
+ });
138
+ }
139
+ else {
140
+ logger = internal.boot.options.customLogger;
141
+ }
142
+ // #MARK: instances
143
+ // if bootstrap hard coded something specific, then start there
144
+ // otherwise, be noisy until config loads a user preference
145
+ //
146
+ // stored as separate variable to cut down on internal config lookups
147
+ let CURRENT_LOG_LEVEL = internal.utils.object.get(internal, "boot.options.configuration.boilerplate.LOG_LEVEL") ||
148
+ "trace";
149
+ function context(context) {
150
+ const name = context;
151
+ const shouldILog = {};
152
+ const [prefix] = context.split(":");
153
+ const update = () => {
154
+ LOG_LEVELS.forEach((key) => {
155
+ // global level
156
+ let target = LOG_LEVEL_PRIORITY[CURRENT_LOG_LEVEL];
157
+ // override directly
158
+ if (loggerOptions?.levelOverrides?.[name]) {
159
+ target = LOG_LEVEL_PRIORITY[loggerOptions?.levelOverrides?.[name]];
160
+ // module level override
161
+ }
162
+ else if (loggerOptions?.levelOverrides?.[prefix]) {
163
+ target = LOG_LEVEL_PRIORITY[loggerOptions?.levelOverrides?.[prefix]];
164
+ }
165
+ shouldILog[key] = LOG_LEVEL_PRIORITY[key] >= target;
166
+ });
167
+ };
168
+ event.on(EVENT_UPDATE_LOG_LEVELS, update);
169
+ update();
170
+ return {
171
+ debug: (...params) => shouldILog.debug && logger.debug(context, ...params),
172
+ error: (...params) => shouldILog.error && logger.error(context, ...params),
173
+ fatal: (...params) => shouldILog.fatal && logger.fatal(context, ...params),
174
+ info: (...params) => shouldILog.info && logger.info(context, ...params),
175
+ trace: (...params) => shouldILog.trace && logger.trace(context, ...params),
176
+ warn: (...params) => shouldILog.warn && logger.warn(context, ...params),
177
+ };
178
+ }
179
+ const updateShouldLog = () => {
180
+ if (!is.empty(config.boilerplate.LOG_LEVEL)) {
181
+ CURRENT_LOG_LEVEL = config.boilerplate.LOG_LEVEL;
182
+ }
183
+ event.emit(EVENT_UPDATE_LOG_LEVELS);
184
+ };
185
+ // #MARK: lifecycle
186
+ lifecycle.onPostConfig(() => internal.boilerplate.logger.updateShouldLog());
187
+ internal.boilerplate.configuration.onUpdate(() => internal.boilerplate.logger.updateShouldLog(), "boilerplate", "LOG_LEVEL");
188
+ // #MARK: return object
189
+ return {
190
+ context,
191
+ getBaseLogger: () => logger,
192
+ getPrettyFormat: () => prettyFormat,
193
+ prettyFormatMessage,
194
+ setBaseLogger: base => (logger = base),
195
+ setHttpLogs: url => (httpLogTarget = url),
196
+ setPrettyFormat: state => (prettyFormat = state),
197
+ systemLogger: context("digital-alchemy:system-logger"),
198
+ updateShouldLog,
199
+ };
200
+ }
201
+ //# sourceMappingURL=logger.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.extension.js","sourceRoot":"","sources":["../../src/services/logger.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { SchedulerBuilder, TServiceParams } from "../helpers";
2
+ export declare function Scheduler({ logger, lifecycle, internal }: TServiceParams): SchedulerBuilder;
@@ -0,0 +1,108 @@
1
+ import dayjs from "dayjs";
2
+ import { schedule } from "node-cron";
3
+ import { is } from "..";
4
+ import { BootstrapException, } from "../helpers";
5
+ export function Scheduler({ logger, lifecycle, internal }) {
6
+ const stop = new Set();
7
+ // #MARK: lifecycle events
8
+ lifecycle.onPreShutdown(function onPreShutdown() {
9
+ if (is.empty(stop)) {
10
+ return;
11
+ }
12
+ logger.info({ name: onPreShutdown }, `removing [%s] schedules`, stop.size);
13
+ stop.forEach(stopFunctions => {
14
+ stopFunctions();
15
+ stop.delete(stopFunctions);
16
+ });
17
+ });
18
+ return (context) => {
19
+ // #MARK: cron
20
+ function cron({ exec, schedule: scheduleList }) {
21
+ const stopFunctions = [];
22
+ [scheduleList].flat().forEach(cronSchedule => {
23
+ logger.trace({ context, name: cron, schedule: cronSchedule }, `init`);
24
+ const cronJob = schedule(cronSchedule, async () => await internal.safeExec(exec));
25
+ lifecycle.onReady(() => {
26
+ logger.trace({ context, name: cron, schedule: cronSchedule }, "starting");
27
+ cronJob.start();
28
+ });
29
+ const stopFunction = () => {
30
+ logger.trace({ context, name: cron, schedule: cronSchedule }, `stopping`);
31
+ cronJob.stop();
32
+ };
33
+ stop.add(stopFunction);
34
+ stopFunctions.push(stopFunction);
35
+ return stopFunction;
36
+ });
37
+ return () => stopFunctions.forEach(stop => stop());
38
+ }
39
+ // #MARK: interval
40
+ function interval({ exec, interval }) {
41
+ let runningInterval;
42
+ lifecycle.onReady(() => {
43
+ logger.trace({ context, name: interval }, "starting");
44
+ runningInterval = setInterval(async () => await internal.safeExec(exec), interval);
45
+ });
46
+ const stopFunction = () => {
47
+ if (runningInterval) {
48
+ clearInterval(runningInterval);
49
+ }
50
+ };
51
+ stop.add(stopFunction);
52
+ return stopFunction;
53
+ }
54
+ // #MARK: sliding
55
+ function sliding({ exec, reset, next }) {
56
+ if (!is.function(next)) {
57
+ throw new BootstrapException(context, "BAD_NEXT", "Did not provide next function to schedule.sliding");
58
+ }
59
+ if (!is.function(exec)) {
60
+ throw new BootstrapException(context, "BAD_NEXT", "Did not provide exec function to schedule.sliding");
61
+ }
62
+ let timeout;
63
+ const waitForNext = () => {
64
+ if (timeout) {
65
+ logger.warn({ context, name: sliding }, `sliding schedule retrieving next execution time before previous ran`);
66
+ clearTimeout(timeout);
67
+ }
68
+ let nextTime = next();
69
+ if (!nextTime) {
70
+ // nothing to do?
71
+ // will try again next schedule
72
+ return;
73
+ }
74
+ nextTime = dayjs(nextTime);
75
+ if (dayjs().isAfter(nextTime)) {
76
+ // probably a result of boot
77
+ // ignore
78
+ return;
79
+ }
80
+ if (nextTime) {
81
+ timeout = setTimeout(async () => {
82
+ await internal.safeExec(exec);
83
+ }, Math.abs(dayjs().diff(nextTime, "ms")));
84
+ }
85
+ };
86
+ // reset on schedule
87
+ const scheduleStop = cron({
88
+ exec: waitForNext,
89
+ schedule: reset,
90
+ });
91
+ // find value for now (boot)
92
+ lifecycle.onReady(() => waitForNext());
93
+ return () => {
94
+ scheduleStop();
95
+ if (timeout) {
96
+ clearTimeout(timeout);
97
+ timeout = undefined;
98
+ }
99
+ };
100
+ }
101
+ return {
102
+ cron,
103
+ interval,
104
+ sliding,
105
+ };
106
+ };
107
+ }
108
+ //# sourceMappingURL=scheduler.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.extension.js","sourceRoot":"","sources":["../../src/services/scheduler.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { ApplicationConfigurationOptions, ApplicationDefinition, OptionalModuleConfiguration, ServiceMap, StringConfig, TConfigLogLevel } from "../helpers";
2
+ import { ALS } from ".";
3
+ import { Configuration } from "./configuration.extension";
4
+ import { Logger } from "./logger.extension";
5
+ import { Scheduler } from "./scheduler.extension";
6
+ export interface DeclaredEnvironments {
7
+ prod: true;
8
+ test: true;
9
+ local: true;
10
+ }
11
+ declare function createBoilerplate(): import("..").LibraryDefinition<{
12
+ /**
13
+ * [AsyncLocalStorage](https://nodejs.org/api/async_context.html) hooks
14
+ *
15
+ * Use to pass data around bypassing business logic and insert data into logs
16
+ */
17
+ als: typeof ALS;
18
+ /**
19
+ * @internal
20
+ *
21
+ * Exposed via `internal.boilerplate.configuration`
22
+ *
23
+ * Used to directly modify application configuration
24
+ */
25
+ configuration: typeof Configuration;
26
+ /**
27
+ * @internal
28
+ *
29
+ * Exposed via `internal.boilerplate.logger`
30
+ *
31
+ * Used to modify the way the logger works at runtime
32
+ */
33
+ logger: typeof Logger;
34
+ /**
35
+ * @internal
36
+ *
37
+ * Used to generate the scheduler that will get injected into other services
38
+ */
39
+ scheduler: typeof Scheduler;
40
+ }, {
41
+ ALS_ENABLED: {
42
+ type: "string";
43
+ };
44
+ /**
45
+ * Only usable by **cli switch**.
46
+ * Pass path to a config file for loader
47
+ *
48
+ * ```bash
49
+ * node dist/app.js --config ~/.config/my_app.ini
50
+ * ```
51
+ */
52
+ CONFIG: {
53
+ description: string;
54
+ type: "string";
55
+ };
56
+ /**
57
+ * > by default true when:
58
+ *
59
+ * ```typescript
60
+ * NODE_ENV === "test*"
61
+ * ```
62
+ *
63
+ * ---
64
+ *
65
+ * When set
66
+ */
67
+ IS_TEST: {
68
+ default: boolean;
69
+ description: string;
70
+ type: "boolean";
71
+ };
72
+ /**
73
+ * ### `trace`
74
+ *
75
+ * Very noisy, contains extra details about what's going on in the internals.
76
+ *
77
+ * ### `debug`
78
+ *
79
+ * Additional diagnostic information about operations being form. `"did a thing w/ {name}"` is common.
80
+ *
81
+ * ### `info`
82
+ *
83
+ * Notifications for high level events, and app code.
84
+ *
85
+ * ### `warn`
86
+ *
87
+ * Notification that an non-critical issue happened.
88
+ *
89
+ * ### `error`
90
+ *
91
+ * Error logs are produced from unexpected situations.
92
+ *
93
+ * When an external API sends back an error messages, or tools are being used in a detectably wrong way.
94
+ *
95
+ * ### `fatal`
96
+ *
97
+ * Produce a log at the highest importance level, not common
98
+ *
99
+ * ### `silent`
100
+ *
101
+ * Emit no logs at all
102
+ */
103
+ LOG_LEVEL: StringConfig<TConfigLogLevel>;
104
+ /**
105
+ * Reference to `process.env.NODE_ENV` by default, `"local"` if not provided
106
+ */
107
+ NODE_ENV: StringConfig<keyof DeclaredEnvironments>;
108
+ }>;
109
+ export declare let LIB_BOILERPLATE: ReturnType<typeof createBoilerplate>;
110
+ export declare function CreateApplication<S extends ServiceMap, C extends OptionalModuleConfiguration>({ name, services, configurationLoaders, libraries, configuration, priorityInit, }: ApplicationConfigurationOptions<S, C>): ApplicationDefinition<S, C>;
111
+ export {};