@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,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: "stop" | "continue") => void;
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?: number | Date): SleepReturn;
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
- "use strict";
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
- exports.EVEN = 2;
11
- exports.PAIR = 2;
12
- exports.HALF = 0.5;
13
- exports.ONE_THIRD = 1 / 3;
14
- exports.TWO_THIRDS = 2 / 3;
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
- exports.DEFAULT_LIMIT = 5;
19
- exports.INVERT_VALUE = -1;
11
+ export const DEFAULT_LIMIT = 5;
12
+ export const INVERT_VALUE = -1;
20
13
  // Sort
21
- exports.UP = 1;
14
+ export const UP = 1;
22
15
  // [LABEL,VALUE]
23
- exports.VALUE = 1;
16
+ export const VALUE = 1;
24
17
  // Standard value
25
- exports.ARRAY_OFFSET = 1;
18
+ export const ARRAY_OFFSET = 1;
26
19
  // array[number +- increment]
27
- exports.INCREMENT = 1;
20
+ export const INCREMENT = 1;
28
21
  // Generic one-ness
29
- exports.SINGLE = 1;
22
+ export const SINGLE = 1;
30
23
  // Sorting
31
- exports.SAME = 0;
24
+ export const SAME = 0;
32
25
  // [LABEL,VALUE]
33
- exports.LABEL = 0;
26
+ export const LABEL = 0;
34
27
  // Generic start of something
35
- exports.START = 0;
36
- exports.NONE = 0;
37
- exports.FIRST = 0;
38
- exports.EMPTY = 0;
39
- exports.NO_CHANGE = 0;
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
- exports.NOT_FOUND = -1;
34
+ export const NOT_FOUND = -1;
42
35
  // Sorting
43
- exports.DOWN = -1;
44
- exports.MINUTE = 60_000;
45
- exports.HOUR = 3_600_000;
46
- exports.DAY = 86_400_000;
47
- exports.WEEK = 7 * exports.DAY;
48
- exports.SECOND = 1000;
49
- exports.PERCENT = 100;
50
- exports.YEAR = 365 * exports.DAY;
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 = exports.SECOND) {
63
+ export function sleep(target) {
72
64
  // done function from promise
73
65
  let done;
74
- const timeout = setTimeout(() => done && done(), is_extension_1.is.date(target) ? target.getTime() - Date.now() : target);
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((i) => (done = i));
74
+ const out = new Promise(i => (done = i));
75
+ ACTIVE_SLEEPS.add(out);
78
76
  out.kill = (execute = "stop") => {
79
- if (execute === "continue") {
80
- done && done();
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
- exports.ACTIVE_THROTTLE = new Set();
88
- exports.ACTIVE_DEBOUNCE = new Map();
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 = exports.ACTIVE_DEBOUNCE.get(identifier);
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
- exports.ACTIVE_DEBOUNCE.set(identifier, delay);
97
+ ACTIVE_DEBOUNCE.set(identifier, delay);
110
98
  await delay;
111
- exports.ACTIVE_DEBOUNCE.delete(identifier);
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":"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"}
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, TCache, TContext } from "..";
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 { TChildLifecycle, TLifecycleBase } from "./lifecycle.helper";
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
- * provided by boilerplate library
82
- *
83
- * contains basic caching methods
86
+ * hooks for AsyncLocalStorage
84
87
  */
85
- cache: TCache;
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?: LibraryConfigurationOptions<ServiceMap, OptionalModuleConfiguration>[];
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?: LibraryConfigurationOptions<ServiceMap, OptionalModuleConfiguration>[];
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<TChildLifecycle>;
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 BuildSortOrder<S extends ServiceMap, C extends OptionalModuleConfiguration>(app: ApplicationDefinition<S, C>, logger: ILogger): TLibrary[];
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 ValidateLibrary<S extends ServiceMap>(project: string, serviceList: S): void | never;
232
- export declare function WireOrder<T extends string>(priority: T[], list: T[]): T[];
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 {};