@digital-alchemy/core 0.1.0

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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/automation/automation.module.d.ts +61 -0
  4. package/dist/automation/automation.module.js +70 -0
  5. package/dist/automation/automation.module.js.map +1 -0
  6. package/dist/automation/extensions/aggressive-scenes.extension.d.ts +22 -0
  7. package/dist/automation/extensions/aggressive-scenes.extension.js +125 -0
  8. package/dist/automation/extensions/aggressive-scenes.extension.js.map +1 -0
  9. package/dist/automation/extensions/circadian.extension.d.ts +11 -0
  10. package/dist/automation/extensions/circadian.extension.js +87 -0
  11. package/dist/automation/extensions/circadian.extension.js.map +1 -0
  12. package/dist/automation/extensions/index.d.ts +7 -0
  13. package/dist/automation/extensions/index.js +11 -0
  14. package/dist/automation/extensions/index.js.map +1 -0
  15. package/dist/automation/extensions/light-manager.extension.d.ts +26 -0
  16. package/dist/automation/extensions/light-manager.extension.js +260 -0
  17. package/dist/automation/extensions/light-manager.extension.js.map +1 -0
  18. package/dist/automation/extensions/managed-switch.extension.d.ts +3 -0
  19. package/dist/automation/extensions/managed-switch.extension.js +73 -0
  20. package/dist/automation/extensions/managed-switch.extension.js.map +1 -0
  21. package/dist/automation/extensions/room.extension.d.ts +11 -0
  22. package/dist/automation/extensions/room.extension.js +179 -0
  23. package/dist/automation/extensions/room.extension.js.map +1 -0
  24. package/dist/automation/extensions/sequence-matcher.extension.d.ts +3 -0
  25. package/dist/automation/extensions/sequence-matcher.extension.js +126 -0
  26. package/dist/automation/extensions/sequence-matcher.extension.js.map +1 -0
  27. package/dist/automation/extensions/solar-calc.extension.d.ts +20 -0
  28. package/dist/automation/extensions/solar-calc.extension.js +105 -0
  29. package/dist/automation/extensions/solar-calc.extension.js.map +1 -0
  30. package/dist/automation/helpers/events.helper.d.ts +33 -0
  31. package/dist/automation/helpers/events.helper.js +14 -0
  32. package/dist/automation/helpers/events.helper.js.map +1 -0
  33. package/dist/automation/helpers/index.d.ts +7 -0
  34. package/dist/automation/helpers/index.js +11 -0
  35. package/dist/automation/helpers/index.js.map +1 -0
  36. package/dist/automation/helpers/managed-switch.helper.d.ts +41 -0
  37. package/dist/automation/helpers/managed-switch.helper.js +3 -0
  38. package/dist/automation/helpers/managed-switch.helper.js.map +1 -0
  39. package/dist/automation/helpers/metrics.helper.d.ts +13 -0
  40. package/dist/automation/helpers/metrics.helper.js +30 -0
  41. package/dist/automation/helpers/metrics.helper.js.map +1 -0
  42. package/dist/automation/helpers/reftimes.helper.d.ts +54 -0
  43. package/dist/automation/helpers/reftimes.helper.js +33 -0
  44. package/dist/automation/helpers/reftimes.helper.js.map +1 -0
  45. package/dist/automation/helpers/scene.helper.d.ts +97 -0
  46. package/dist/automation/helpers/scene.helper.js +5 -0
  47. package/dist/automation/helpers/scene.helper.js.map +1 -0
  48. package/dist/automation/helpers/sequence.helper.d.ts +55 -0
  49. package/dist/automation/helpers/sequence.helper.js +3 -0
  50. package/dist/automation/helpers/sequence.helper.js.map +1 -0
  51. package/dist/automation/helpers/solar.helper.d.ts +3 -0
  52. package/dist/automation/helpers/solar.helper.js +262 -0
  53. package/dist/automation/helpers/solar.helper.js.map +1 -0
  54. package/dist/automation/index.d.ts +3 -0
  55. package/dist/automation/index.js +10 -0
  56. package/dist/automation/index.js.map +1 -0
  57. package/dist/boilerplate/extensions/cache.extension.d.ts +24 -0
  58. package/dist/boilerplate/extensions/cache.extension.js +96 -0
  59. package/dist/boilerplate/extensions/cache.extension.js.map +1 -0
  60. package/dist/boilerplate/extensions/configuration.extension.d.ts +23 -0
  61. package/dist/boilerplate/extensions/configuration.extension.js +98 -0
  62. package/dist/boilerplate/extensions/configuration.extension.js.map +1 -0
  63. package/dist/boilerplate/extensions/fetch.extension.d.ts +20 -0
  64. package/dist/boilerplate/extensions/fetch.extension.js +154 -0
  65. package/dist/boilerplate/extensions/fetch.extension.js.map +1 -0
  66. package/dist/boilerplate/extensions/index.d.ts +6 -0
  67. package/dist/boilerplate/extensions/index.js +10 -0
  68. package/dist/boilerplate/extensions/index.js.map +1 -0
  69. package/dist/boilerplate/extensions/logger.extension.d.ts +39 -0
  70. package/dist/boilerplate/extensions/logger.extension.js +159 -0
  71. package/dist/boilerplate/extensions/logger.extension.js.map +1 -0
  72. package/dist/boilerplate/extensions/scheduler.extension.d.ts +21 -0
  73. package/dist/boilerplate/extensions/scheduler.extension.js +117 -0
  74. package/dist/boilerplate/extensions/scheduler.extension.js.map +1 -0
  75. package/dist/boilerplate/extensions/wiring.extension.d.ts +101 -0
  76. package/dist/boilerplate/extensions/wiring.extension.js +452 -0
  77. package/dist/boilerplate/extensions/wiring.extension.js.map +1 -0
  78. package/dist/boilerplate/helpers/cache-memory.helper.d.ts +7 -0
  79. package/dist/boilerplate/helpers/cache-memory.helper.js +65 -0
  80. package/dist/boilerplate/helpers/cache-memory.helper.js.map +1 -0
  81. package/dist/boilerplate/helpers/cache-redis.helper.d.ts +7 -0
  82. package/dist/boilerplate/helpers/cache-redis.helper.js +69 -0
  83. package/dist/boilerplate/helpers/cache-redis.helper.js.map +1 -0
  84. package/dist/boilerplate/helpers/config-environment-loader.helper.d.ts +2 -0
  85. package/dist/boilerplate/helpers/config-environment-loader.helper.js +56 -0
  86. package/dist/boilerplate/helpers/config-environment-loader.helper.js.map +1 -0
  87. package/dist/boilerplate/helpers/config-file-loader.helper.d.ts +4 -0
  88. package/dist/boilerplate/helpers/config-file-loader.helper.js +87 -0
  89. package/dist/boilerplate/helpers/config-file-loader.helper.js.map +1 -0
  90. package/dist/boilerplate/helpers/config.helper.d.ts +102 -0
  91. package/dist/boilerplate/helpers/config.helper.js +32 -0
  92. package/dist/boilerplate/helpers/config.helper.js.map +1 -0
  93. package/dist/boilerplate/helpers/errors.helper.d.ts +39 -0
  94. package/dist/boilerplate/helpers/errors.helper.js +76 -0
  95. package/dist/boilerplate/helpers/errors.helper.js.map +1 -0
  96. package/dist/boilerplate/helpers/events.helper.d.ts +3 -0
  97. package/dist/boilerplate/helpers/events.helper.js +11 -0
  98. package/dist/boilerplate/helpers/events.helper.js.map +1 -0
  99. package/dist/boilerplate/helpers/fetch.helper.d.ts +170 -0
  100. package/dist/boilerplate/helpers/fetch.helper.js +173 -0
  101. package/dist/boilerplate/helpers/fetch.helper.js.map +1 -0
  102. package/dist/boilerplate/helpers/index.d.ts +12 -0
  103. package/dist/boilerplate/helpers/index.js +16 -0
  104. package/dist/boilerplate/helpers/index.js.map +1 -0
  105. package/dist/boilerplate/helpers/lifecycle.helper.d.ts +43 -0
  106. package/dist/boilerplate/helpers/lifecycle.helper.js +13 -0
  107. package/dist/boilerplate/helpers/lifecycle.helper.js.map +1 -0
  108. package/dist/boilerplate/helpers/metrics.helper.d.ts +73 -0
  109. package/dist/boilerplate/helpers/metrics.helper.js +141 -0
  110. package/dist/boilerplate/helpers/metrics.helper.js.map +1 -0
  111. package/dist/boilerplate/helpers/testing.helper.d.ts +13 -0
  112. package/dist/boilerplate/helpers/testing.helper.js +91 -0
  113. package/dist/boilerplate/helpers/testing.helper.js.map +1 -0
  114. package/dist/boilerplate/helpers/wiring.helper.d.ts +155 -0
  115. package/dist/boilerplate/helpers/wiring.helper.js +5 -0
  116. package/dist/boilerplate/helpers/wiring.helper.js.map +1 -0
  117. package/dist/boilerplate/index.d.ts +2 -0
  118. package/dist/boilerplate/index.js +6 -0
  119. package/dist/boilerplate/index.js.map +1 -0
  120. package/dist/gotify/extensions/application.extension.d.ts +13 -0
  121. package/dist/gotify/extensions/application.extension.js +52 -0
  122. package/dist/gotify/extensions/application.extension.js.map +1 -0
  123. package/dist/gotify/extensions/client.extension.d.ts +8 -0
  124. package/dist/gotify/extensions/client.extension.js +38 -0
  125. package/dist/gotify/extensions/client.extension.js.map +1 -0
  126. package/dist/gotify/extensions/fetch.extension.d.ts +2 -0
  127. package/dist/gotify/extensions/fetch.extension.js +14 -0
  128. package/dist/gotify/extensions/fetch.extension.js.map +1 -0
  129. package/dist/gotify/extensions/index.d.ts +4 -0
  130. package/dist/gotify/extensions/index.js +8 -0
  131. package/dist/gotify/extensions/index.js.map +1 -0
  132. package/dist/gotify/extensions/message.extension.d.ts +8 -0
  133. package/dist/gotify/extensions/message.extension.js +37 -0
  134. package/dist/gotify/extensions/message.extension.js.map +1 -0
  135. package/dist/gotify/gotify.module.d.ts +29 -0
  136. package/dist/gotify/gotify.module.js +33 -0
  137. package/dist/gotify/gotify.module.js.map +1 -0
  138. package/dist/gotify/helpers/api.d.ts +346 -0
  139. package/dist/gotify/helpers/api.js +14 -0
  140. package/dist/gotify/helpers/api.js.map +1 -0
  141. package/dist/gotify/helpers/events.helper.d.ts +6 -0
  142. package/dist/gotify/helpers/events.helper.js +5 -0
  143. package/dist/gotify/helpers/events.helper.js.map +1 -0
  144. package/dist/gotify/helpers/index.d.ts +2 -0
  145. package/dist/gotify/helpers/index.js +6 -0
  146. package/dist/gotify/helpers/index.js.map +1 -0
  147. package/dist/gotify/index.d.ts +3 -0
  148. package/dist/gotify/index.js +7 -0
  149. package/dist/gotify/index.js.map +1 -0
  150. package/dist/hass/dynamic.d.ts +1126 -0
  151. package/dist/hass/dynamic.js +153 -0
  152. package/dist/hass/dynamic.js.map +1 -0
  153. package/dist/hass/extensions/call-proxy.extension.d.ts +4 -0
  154. package/dist/hass/extensions/call-proxy.extension.js +88 -0
  155. package/dist/hass/extensions/call-proxy.extension.js.map +1 -0
  156. package/dist/hass/extensions/entity-manager.extension.d.ts +61 -0
  157. package/dist/hass/extensions/entity-manager.extension.js +214 -0
  158. package/dist/hass/extensions/entity-manager.extension.js.map +1 -0
  159. package/dist/hass/extensions/fetch-api.extension.d.ts +26 -0
  160. package/dist/hass/extensions/fetch-api.extension.js +166 -0
  161. package/dist/hass/extensions/fetch-api.extension.js.map +1 -0
  162. package/dist/hass/extensions/index.d.ts +5 -0
  163. package/dist/hass/extensions/index.js +9 -0
  164. package/dist/hass/extensions/index.js.map +1 -0
  165. package/dist/hass/extensions/utilities.extension.d.ts +9 -0
  166. package/dist/hass/extensions/utilities.extension.js +43 -0
  167. package/dist/hass/extensions/utilities.extension.js.map +1 -0
  168. package/dist/hass/extensions/websocket-api.extension.d.ts +39 -0
  169. package/dist/hass/extensions/websocket-api.extension.js +363 -0
  170. package/dist/hass/extensions/websocket-api.extension.js.map +1 -0
  171. package/dist/hass/hass.module.d.ts +53 -0
  172. package/dist/hass/hass.module.js +59 -0
  173. package/dist/hass/hass.module.js.map +1 -0
  174. package/dist/hass/helpers/backup.helper.d.ts +11 -0
  175. package/dist/hass/helpers/backup.helper.js +3 -0
  176. package/dist/hass/helpers/backup.helper.js.map +1 -0
  177. package/dist/hass/helpers/constants.helper.d.ts +54 -0
  178. package/dist/hass/helpers/constants.helper.js +63 -0
  179. package/dist/hass/helpers/constants.helper.js.map +1 -0
  180. package/dist/hass/helpers/entity-state.helper.d.ts +45 -0
  181. package/dist/hass/helpers/entity-state.helper.js +9 -0
  182. package/dist/hass/helpers/entity-state.helper.js.map +1 -0
  183. package/dist/hass/helpers/fetch/calendar.d.ts +54 -0
  184. package/dist/hass/helpers/fetch/calendar.js +3 -0
  185. package/dist/hass/helpers/fetch/calendar.js.map +1 -0
  186. package/dist/hass/helpers/fetch/configuration.d.ts +34 -0
  187. package/dist/hass/helpers/fetch/configuration.js +3 -0
  188. package/dist/hass/helpers/fetch/configuration.js.map +1 -0
  189. package/dist/hass/helpers/fetch/index.d.ts +4 -0
  190. package/dist/hass/helpers/fetch/index.js +8 -0
  191. package/dist/hass/helpers/fetch/index.js.map +1 -0
  192. package/dist/hass/helpers/fetch/server-log.d.ts +10 -0
  193. package/dist/hass/helpers/fetch/server-log.js +20 -0
  194. package/dist/hass/helpers/fetch/server-log.js.map +1 -0
  195. package/dist/hass/helpers/fetch/service-list.d.ts +51 -0
  196. package/dist/hass/helpers/fetch/service-list.js +3 -0
  197. package/dist/hass/helpers/fetch/service-list.js.map +1 -0
  198. package/dist/hass/helpers/index.d.ts +7 -0
  199. package/dist/hass/helpers/index.js +11 -0
  200. package/dist/hass/helpers/index.js.map +1 -0
  201. package/dist/hass/helpers/metrics.helper.d.ts +13 -0
  202. package/dist/hass/helpers/metrics.helper.js +30 -0
  203. package/dist/hass/helpers/metrics.helper.js.map +1 -0
  204. package/dist/hass/helpers/utility.helper.d.ts +57 -0
  205. package/dist/hass/helpers/utility.helper.js +34 -0
  206. package/dist/hass/helpers/utility.helper.js.map +1 -0
  207. package/dist/hass/helpers/websocket.helper.d.ts +129 -0
  208. package/dist/hass/helpers/websocket.helper.js +3 -0
  209. package/dist/hass/helpers/websocket.helper.js.map +1 -0
  210. package/dist/hass/index.d.ts +4 -0
  211. package/dist/hass/index.js +8 -0
  212. package/dist/hass/index.js.map +1 -0
  213. package/dist/index.d.ts +2 -0
  214. package/dist/index.js +8 -0
  215. package/dist/index.js.map +1 -0
  216. package/dist/nexus/entities.extension.d.ts +2 -0
  217. package/dist/nexus/entities.extension.js +51 -0
  218. package/dist/nexus/entities.extension.js.map +1 -0
  219. package/dist/nexus/main.d.ts +9 -0
  220. package/dist/nexus/main.js +28 -0
  221. package/dist/nexus/main.js.map +1 -0
  222. package/dist/synapse/extensions/binary-sensor.extension.d.ts +19 -0
  223. package/dist/synapse/extensions/binary-sensor.extension.js +84 -0
  224. package/dist/synapse/extensions/binary-sensor.extension.js.map +1 -0
  225. package/dist/synapse/extensions/button.extension.d.ts +10 -0
  226. package/dist/synapse/extensions/button.extension.js +46 -0
  227. package/dist/synapse/extensions/button.extension.js.map +1 -0
  228. package/dist/synapse/extensions/index.d.ts +6 -0
  229. package/dist/synapse/extensions/index.js +10 -0
  230. package/dist/synapse/extensions/index.js.map +1 -0
  231. package/dist/synapse/extensions/registry.extension.d.ts +21 -0
  232. package/dist/synapse/extensions/registry.extension.js +207 -0
  233. package/dist/synapse/extensions/registry.extension.js.map +1 -0
  234. package/dist/synapse/extensions/scene.extension.d.ts +9 -0
  235. package/dist/synapse/extensions/scene.extension.js +37 -0
  236. package/dist/synapse/extensions/scene.extension.js.map +1 -0
  237. package/dist/synapse/extensions/sensor.extension.d.ts +25 -0
  238. package/dist/synapse/extensions/sensor.extension.js +154 -0
  239. package/dist/synapse/extensions/sensor.extension.js.map +1 -0
  240. package/dist/synapse/extensions/switch.extension.d.ts +19 -0
  241. package/dist/synapse/extensions/switch.extension.js +95 -0
  242. package/dist/synapse/extensions/switch.extension.js.map +1 -0
  243. package/dist/synapse/helpers/device-class.helper.d.ts +323 -0
  244. package/dist/synapse/helpers/device-class.helper.js +241 -0
  245. package/dist/synapse/helpers/device-class.helper.js.map +1 -0
  246. package/dist/synapse/helpers/index.d.ts +3 -0
  247. package/dist/synapse/helpers/index.js +7 -0
  248. package/dist/synapse/helpers/index.js.map +1 -0
  249. package/dist/synapse/helpers/metrics.helper.d.ts +13 -0
  250. package/dist/synapse/helpers/metrics.helper.js +30 -0
  251. package/dist/synapse/helpers/metrics.helper.js.map +1 -0
  252. package/dist/synapse/helpers/utility.helper.d.ts +1 -0
  253. package/dist/synapse/helpers/utility.helper.js +3 -0
  254. package/dist/synapse/helpers/utility.helper.js.map +1 -0
  255. package/dist/synapse/index.d.ts +3 -0
  256. package/dist/synapse/index.js +7 -0
  257. package/dist/synapse/index.js.map +1 -0
  258. package/dist/synapse/synapse.module.d.ts +29 -0
  259. package/dist/synapse/synapse.module.js +41 -0
  260. package/dist/synapse/synapse.module.js.map +1 -0
  261. package/dist/type-writer/build.extension.d.ts +2 -0
  262. package/dist/type-writer/build.extension.js +53 -0
  263. package/dist/type-writer/build.extension.js.map +1 -0
  264. package/dist/type-writer/main.d.ts +17 -0
  265. package/dist/type-writer/main.js +36 -0
  266. package/dist/type-writer/main.js.map +1 -0
  267. package/dist/type-writer/type-writer.extension.d.ts +2 -0
  268. package/dist/type-writer/type-writer.extension.js +212 -0
  269. package/dist/type-writer/type-writer.extension.js.map +1 -0
  270. package/dist/utilities/extensions/index.d.ts +3 -0
  271. package/dist/utilities/extensions/index.js +7 -0
  272. package/dist/utilities/extensions/index.js.map +1 -0
  273. package/dist/utilities/extensions/is.extension.d.ts +38 -0
  274. package/dist/utilities/extensions/is.extension.js +104 -0
  275. package/dist/utilities/extensions/is.extension.js.map +1 -0
  276. package/dist/utilities/extensions/zcc-testing.extension.d.ts +4 -0
  277. package/dist/utilities/extensions/zcc-testing.extension.js +9 -0
  278. package/dist/utilities/extensions/zcc-testing.extension.js.map +1 -0
  279. package/dist/utilities/extensions/zcc.extension.d.ts +20 -0
  280. package/dist/utilities/extensions/zcc.extension.js +66 -0
  281. package/dist/utilities/extensions/zcc.extension.js.map +1 -0
  282. package/dist/utilities/helpers/async.helper.d.ts +2 -0
  283. package/dist/utilities/helpers/async.helper.js +26 -0
  284. package/dist/utilities/helpers/async.helper.js.map +1 -0
  285. package/dist/utilities/helpers/context.helper.d.ts +7 -0
  286. package/dist/utilities/helpers/context.helper.js +3 -0
  287. package/dist/utilities/helpers/context.helper.js.map +1 -0
  288. package/dist/utilities/helpers/cron.helper.d.ts +87 -0
  289. package/dist/utilities/helpers/cron.helper.js +92 -0
  290. package/dist/utilities/helpers/cron.helper.js.map +1 -0
  291. package/dist/utilities/helpers/extend.helper.d.ts +2 -0
  292. package/dist/utilities/helpers/extend.helper.js +68 -0
  293. package/dist/utilities/helpers/extend.helper.js.map +1 -0
  294. package/dist/utilities/helpers/index.d.ts +5 -0
  295. package/dist/utilities/helpers/index.js +9 -0
  296. package/dist/utilities/helpers/index.js.map +1 -0
  297. package/dist/utilities/helpers/utilities.helper.d.ts +63 -0
  298. package/dist/utilities/helpers/utilities.helper.js +93 -0
  299. package/dist/utilities/helpers/utilities.helper.js.map +1 -0
  300. package/dist/utilities/index.d.ts +2 -0
  301. package/dist/utilities/index.js +6 -0
  302. package/dist/utilities/index.js.map +1 -0
  303. package/package.json +101 -0
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Fetch = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const bottleneck_1 = tslib_1.__importDefault(require("bottleneck"));
6
+ const fs_1 = require("fs");
7
+ const stream_1 = require("stream");
8
+ const util_1 = require("util");
9
+ const __1 = require("../..");
10
+ const __2 = require("..");
11
+ const streamPipeline = (0, util_1.promisify)(stream_1.pipeline);
12
+ function Fetch({ logger, context: parentContext }) {
13
+ const createFetcher = ({ bottleneck, headers: baseHeaders, baseUrl, context: logContext,
14
+ // eslint-disable-next-line sonarjs/cognitive-complexity
15
+ }) => {
16
+ const extras = {};
17
+ if (!__1.is.empty(logContext)) {
18
+ extras["context"] = logContext;
19
+ }
20
+ let limiter;
21
+ const capabilities = [];
22
+ if (bottleneck) {
23
+ capabilities.push("bottleneck");
24
+ limiter = new bottleneck_1.default(bottleneck);
25
+ }
26
+ if (!__1.is.empty(capabilities)) {
27
+ logger.trace({ capabilities, ...extras }, `initialized fetcher`);
28
+ }
29
+ function checkForHttpErrors(maybeError) {
30
+ if (__1.is.object(maybeError) &&
31
+ maybeError !== null &&
32
+ __1.is.number(maybeError.statusCode) &&
33
+ __1.is.string(maybeError.error)) {
34
+ // Log the error if needed
35
+ logger.error({ error: maybeError, ...extras }, maybeError.message);
36
+ // Throw a FetchRequestError
37
+ // throw new FetchRequestError(maybeError);
38
+ throw new __2.FetchRequestError(maybeError.statusCode, maybeError.error, maybeError.message);
39
+ }
40
+ return maybeError;
41
+ }
42
+ async function fetchHandleResponse(process, response) {
43
+ if (process === false || process === "raw") {
44
+ return response;
45
+ }
46
+ const text = await response.text();
47
+ if (process === "text") {
48
+ return text;
49
+ }
50
+ if (!["{", "["].includes(text.charAt(__1.FIRST))) {
51
+ if (["OK"].includes(text)) {
52
+ logger.debug({ text, ...extras }, "Full response text");
53
+ }
54
+ else {
55
+ // It's probably a coding error error, and not something a user did.
56
+ // Will try to keep the array up to date if any other edge cases pop up
57
+ logger.warn({ text, ...extras }, `Unexpected API Response`);
58
+ }
59
+ return text;
60
+ }
61
+ const parsed = JSON.parse(text);
62
+ return checkForHttpErrors(parsed);
63
+ }
64
+ function fetchCreateUrl({ rawUrl, url, ...fetchWith }) {
65
+ let out = url || "";
66
+ if (!rawUrl) {
67
+ const base = fetchWith.baseUrl || baseUrl;
68
+ out = base + url;
69
+ }
70
+ if (!__1.is.empty(fetchWith.params)) {
71
+ out = `${out}?${(0, __2.buildFilterString)(fetchWith)}`;
72
+ }
73
+ return out;
74
+ }
75
+ async function MeasureRequest(label, context, exec) {
76
+ try {
77
+ const out = await exec();
78
+ if (!__1.is.empty(label)) {
79
+ __2.FETCH_REQUESTS_SUCCESSFUL.labels(context, label).inc();
80
+ }
81
+ return out;
82
+ }
83
+ catch (error) {
84
+ logger.error({ error, ...extras }, `Request failed`);
85
+ if (!__1.is.empty(label)) {
86
+ __2.FETCH_REQUESTS_FAILED.labels(context, label).inc();
87
+ }
88
+ throw error;
89
+ }
90
+ }
91
+ async function execFetch({ body, headers = {}, method = "get", process, label, context = logContext || parentContext, ...fetchWith }) {
92
+ const out = await MeasureRequest(label, context, async () => {
93
+ const contentType = __1.is.object(body)
94
+ ? { "Content-Type": "application/json" }
95
+ : {};
96
+ const result = await fetch(fetchCreateUrl(fetchWith), {
97
+ body: __1.is.object(body) ? JSON.stringify(body) : body,
98
+ headers: {
99
+ ...contentType,
100
+ ...baseHeaders,
101
+ ...headers,
102
+ },
103
+ method,
104
+ });
105
+ return await fetchHandleResponse(process, result);
106
+ });
107
+ __2.FETCH_REQUESTS_SUCCESSFUL.labels(context, label).inc();
108
+ return out;
109
+ }
110
+ return {
111
+ download: async ({ destination, body, headers = {}, label, context = logContext || parentContext, method = "get", ...fetchWith }) => {
112
+ const url = await fetchCreateUrl(fetchWith);
113
+ const response = await fetch(url, {
114
+ body: __1.is.object(body) ? JSON.stringify(body) : body,
115
+ headers: {
116
+ ...baseHeaders,
117
+ ...headers,
118
+ },
119
+ method,
120
+ });
121
+ const stream = (0, fs_1.createWriteStream)(destination);
122
+ await streamPipeline(response.body, stream);
123
+ if (!__1.is.empty(label)) {
124
+ __2.FETCH_DOWNLOAD_REQUESTS_SUCCESSFUL.labels(context, label).inc();
125
+ }
126
+ },
127
+ fetch: async (fetchWith) => {
128
+ if (!limiter) {
129
+ return await execFetch(fetchWith);
130
+ }
131
+ let end;
132
+ if (!__1.is.empty(fetchWith.label)) {
133
+ end = __2.FETCH_REQUEST_BOTTLENECK_DELAY.startTimer();
134
+ }
135
+ return limiter.schedule(async () => {
136
+ if (end) {
137
+ end({
138
+ context: fetchWith.context || parentContext,
139
+ label: fetchWith.label,
140
+ });
141
+ }
142
+ return await execFetch(fetchWith);
143
+ });
144
+ },
145
+ setBaseUrl: (url) => (baseUrl = url),
146
+ setHeaders: (headers) => (baseHeaders = headers),
147
+ };
148
+ };
149
+ __1.ZCC.createFetcher = createFetcher;
150
+ __1.ZCC.fetch = createFetcher({ context: parentContext }).fetch;
151
+ return createFetcher;
152
+ }
153
+ exports.Fetch = Fetch;
154
+ //# sourceMappingURL=fetch.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.extension.js","sourceRoot":"","sources":["../../../src/boilerplate/extensions/fetch.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./cache.extension";
2
+ export * from "./configuration.extension";
3
+ export * from "./fetch.extension";
4
+ export * from "./logger.extension";
5
+ export * from "./scheduler.extension";
6
+ export * from "./wiring.extension";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./cache.extension"), exports);
5
+ tslib_1.__exportStar(require("./configuration.extension"), exports);
6
+ tslib_1.__exportStar(require("./fetch.extension"), exports);
7
+ tslib_1.__exportStar(require("./logger.extension"), exports);
8
+ tslib_1.__exportStar(require("./scheduler.extension"), exports);
9
+ tslib_1.__exportStar(require("./wiring.extension"), exports);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/boilerplate/extensions/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,oEAA0C;AAC1C,4DAAkC;AAClC,6DAAmC;AACnC,gEAAsC;AACtC,6DAAmC"}
@@ -0,0 +1,39 @@
1
+ import { pino } from "pino";
2
+ import { TContext } from "../..";
3
+ import { TServiceParams } from "..";
4
+ export type TLoggerFunction = ((message: string, ...arguments_: unknown[]) => void) | ((object: object, message?: string, ...arguments_: unknown[]) => void);
5
+ export interface ILogger {
6
+ debug(...arguments_: Parameters<TLoggerFunction>): void;
7
+ debug(message: string, ...arguments_: unknown[]): void;
8
+ debug(object: object, message?: string, ...arguments_: unknown[]): void;
9
+ error(...arguments_: Parameters<TLoggerFunction>): void;
10
+ error(message: string, ...arguments_: unknown[]): void;
11
+ error(object: object, message?: string, ...arguments_: unknown[]): void;
12
+ fatal(...arguments_: Parameters<TLoggerFunction>): void;
13
+ fatal(message: string, ...arguments_: unknown[]): void;
14
+ fatal(object: object, message?: string, ...arguments_: unknown[]): void;
15
+ info(...arguments_: Parameters<TLoggerFunction>): void;
16
+ info(message: string, ...arguments_: unknown[]): void;
17
+ info(object: object, message?: string, ...arguments_: unknown[]): void;
18
+ trace(...arguments_: Parameters<TLoggerFunction>): void;
19
+ trace(message: string, ...arguments_: unknown[]): void;
20
+ trace(object: object, message?: string, ...arguments_: unknown[]): void;
21
+ warn(...arguments_: Parameters<TLoggerFunction>): void;
22
+ warn(message: string, ...arguments_: unknown[]): void;
23
+ warn(object: object, message?: string, ...arguments_: unknown[]): void;
24
+ }
25
+ export declare const METHOD_COLORS: Map<pino.Level, CONTEXT_COLORS>;
26
+ export type CONTEXT_COLORS = "grey" | "blue" | "yellow" | "red" | "green" | "magenta";
27
+ export declare function Logger({ lifecycle, config }: TServiceParams): Promise<{
28
+ context: (context: string | TContext) => ILogger;
29
+ getBaseLogger: () => ILogger;
30
+ getLogLevel: () => pino.Level;
31
+ setBaseLogger: (base: ILogger) => ILogger;
32
+ setLogLevel: (level: pino.Level) => void;
33
+ }>;
34
+ declare module "../../utilities" {
35
+ interface ZCCDefinition {
36
+ logger: Awaited<ReturnType<typeof Logger>>;
37
+ systemLogger: ILogger;
38
+ }
39
+ }
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logger = exports.METHOD_COLORS = void 0;
4
+ /* eslint-disable @typescript-eslint/no-magic-numbers */
5
+ const pino_1 = require("pino");
6
+ const util_1 = require("util");
7
+ const __1 = require("../..");
8
+ let logger = (0, pino_1.pino)({
9
+ level: "debug",
10
+ transport: {
11
+ options: {
12
+ colorize: true,
13
+ crlf: false,
14
+ customPrettifiers: {},
15
+ errorLikeObjectKeys: ["err", "error"],
16
+ errorProps: "",
17
+ hideObject: false,
18
+ ignore: "pid,hostname,level",
19
+ levelFirst: false,
20
+ levelKey: "level",
21
+ messageKey: "msg",
22
+ singleLine: false,
23
+ timestampKey: "time",
24
+ translateTime: "SYS:ddd hh:MM:ss.l",
25
+ },
26
+ target: "pino-pretty",
27
+ },
28
+ }, pino_1.pino.destination({ sync: true }));
29
+ const LOG_LEVEL_PRIORITY = {
30
+ debug: 20,
31
+ error: 50,
32
+ fatal: 60,
33
+ info: 30,
34
+ trace: 10,
35
+ warn: 40,
36
+ };
37
+ exports.METHOD_COLORS = new Map([
38
+ ["trace", "grey"],
39
+ ["debug", "blue"],
40
+ ["warn", "yellow"],
41
+ ["error", "red"],
42
+ ["info", "green"],
43
+ ["fatal", "magenta"],
44
+ ]);
45
+ const MAX_CUTOFF = 2000;
46
+ const frontDash = " - ";
47
+ async function Logger({ lifecycle, config }) {
48
+ const chalk = (await import("chalk")).default;
49
+ function log(method, context, ...parameters) {
50
+ // standardLogger(method, context, ...parameters);
51
+ prettyLogger(method, context, ...parameters);
52
+ }
53
+ const YELLOW_DASH = chalk.yellowBright(frontDash);
54
+ const highlightContext = (context, level) => chalk.bold[level](`[${context}]`);
55
+ const prettyFormatMessage = (message) => {
56
+ if (!message) {
57
+ return ``;
58
+ }
59
+ if (message.length > MAX_CUTOFF) {
60
+ return message;
61
+ }
62
+ message = message
63
+ // ? partA#partB - highlight it all in yellow
64
+ .replaceAll(new RegExp("([^ ]+#[^ ]+)", "g"), i => chalk.yellow(i))
65
+ // ? [A] > [B] > [C] - highlight the >'s in blue
66
+ .replaceAll("] > [", chalk `] {blue >} [`)
67
+ // ? [Text] - strip brackets, highlight magenta
68
+ .replaceAll(new RegExp("(\\[[^\\]\\[]+\\])", "g"), i => chalk.bold.magenta(i.slice(1, -1)))
69
+ // ? {Text} - strip braces, highlight gray
70
+ .replaceAll(new RegExp("(\\{[^\\]}]+\\})", "g"), i => chalk.bold.gray(i.slice(1, -1)));
71
+ // ? " - Text" (line prefix with dash) - highlight dash
72
+ if (message.slice(0, frontDash.length) === frontDash) {
73
+ message = `${YELLOW_DASH}${message.slice(frontDash.length)}`;
74
+ }
75
+ return message;
76
+ };
77
+ function prettyLogger(method, context, ...parameters) {
78
+ // * If providing an object as the 1st arg
79
+ if (__1.is.object(parameters[0])) {
80
+ const data = parameters.shift();
81
+ // Extract the context property, and use it in place of generated
82
+ if (__1.is.string(data.context) && !__1.is.empty(data.context)) {
83
+ context = data.context;
84
+ delete data.context;
85
+ }
86
+ const message = [
87
+ highlightContext(context, exports.METHOD_COLORS.get(method)),
88
+ prettyFormatMessage(parameters.shift()),
89
+ ].join(" ");
90
+ if ("error" in data && data.error instanceof Error) {
91
+ // pino is doing something weird, not sure why it won't print useful stuff about the error
92
+ // this keeps the stack attach
93
+ data.stack = data.error.stack.trim().split("\n");
94
+ }
95
+ logger[method](data, message, ...parameters);
96
+ return;
97
+ }
98
+ // * Text only log
99
+ const message = [
100
+ highlightContext(context, exports.METHOD_COLORS.get(method)),
101
+ prettyFormatMessage(parameters.shift()),
102
+ ].join(" ");
103
+ logger[method](message, ...parameters);
104
+ }
105
+ // tuned to be most useful in debugging this
106
+ util_1.inspect.defaultOptions.colors = true;
107
+ util_1.inspect.defaultOptions.depth = 10;
108
+ util_1.inspect.defaultOptions.numericSeparator = true;
109
+ util_1.inspect.defaultOptions.compact = false;
110
+ util_1.inspect.defaultOptions.colors = true;
111
+ let logLevel = "debug";
112
+ const shouldLog = (level) => LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[logLevel];
113
+ function createBaseLogger() {
114
+ logger = (0, pino_1.pino)({
115
+ level: config.boilerplate.LOG_LEVEL,
116
+ transport: {
117
+ options: {
118
+ colorize: true,
119
+ crlf: false,
120
+ customPrettifiers: {},
121
+ errorLikeObjectKeys: ["err", "error"],
122
+ errorProps: "error",
123
+ hideObject: false,
124
+ ignore: "pid,hostname,level",
125
+ levelFirst: false,
126
+ levelKey: "level",
127
+ messageKey: "msg",
128
+ singleLine: false,
129
+ timestampKey: "time",
130
+ translateTime: "SYS:ddd hh:MM:ss.l",
131
+ },
132
+ target: "pino-pretty",
133
+ },
134
+ }, pino_1.pino.destination({ sync: true }));
135
+ }
136
+ lifecycle.onPostConfig(() => createBaseLogger());
137
+ const out = {
138
+ context: (context) => ({
139
+ debug: (...params) => shouldLog("debug") && log("debug", context, ...params),
140
+ error: (...params) => shouldLog("error") && log("error", context, ...params),
141
+ fatal: (...params) => shouldLog("fatal") && log("fatal", context, ...params),
142
+ info: (...params) => shouldLog("info") && log("info", context, ...params),
143
+ trace: (...params) => shouldLog("trace") && log("trace", context, ...params),
144
+ warn: (...params) => shouldLog("warn") && log("warn", context, ...params),
145
+ }),
146
+ getBaseLogger: () => logger,
147
+ getLogLevel: () => logLevel,
148
+ setBaseLogger: (base) => (logger = base),
149
+ setLogLevel: (level) => {
150
+ logLevel = level;
151
+ __1.ZCC.config.set("boilerplate", "LOG_LEVEL", level);
152
+ },
153
+ };
154
+ __1.ZCC.logger = out;
155
+ __1.ZCC.systemLogger = __1.ZCC.logger.context("digital-alchemy:system");
156
+ return out;
157
+ }
158
+ exports.Logger = Logger;
159
+ //# sourceMappingURL=logger.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.extension.js","sourceRoot":"","sources":["../../../src/boilerplate/extensions/logger.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { Dayjs } from "dayjs";
2
+ import { schedule } from "node-cron";
3
+ import { Schedule, SchedulerOptions, TServiceParams } from "../helpers";
4
+ export declare function Scheduler({ logger, lifecycle }: TServiceParams): {
5
+ cron: ({ context, exec, schedule: scheduleList, label, }: SchedulerOptions & {
6
+ schedule: Schedule | Schedule[];
7
+ }) => () => void;
8
+ interval: ({ context, exec, interval, label, }: SchedulerOptions & {
9
+ interval: number;
10
+ }) => () => void;
11
+ sliding: ({ context, exec, reset, next, label, }: SchedulerOptions & {
12
+ /**
13
+ * How often to run the `next` method, to retrieve the next scheduled execution time
14
+ */
15
+ reset: Schedule;
16
+ /**
17
+ * Return something time like. undefined = skip next
18
+ */
19
+ next: () => Dayjs | string | number | Date | undefined;
20
+ }) => () => void;
21
+ };
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Scheduler = void 0;
4
+ const tslib_1 = require("tslib");
5
+ /* eslint-disable sonarjs/cognitive-complexity */
6
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
7
+ const node_cron_1 = require("node-cron");
8
+ const __1 = require("../..");
9
+ const helpers_1 = require("../helpers");
10
+ function Scheduler({ logger, lifecycle }) {
11
+ const stop = new Set();
12
+ lifecycle.onShutdownStart(() => {
13
+ stop.forEach(stopFunctions => {
14
+ stopFunctions();
15
+ stop.delete(stopFunctions);
16
+ });
17
+ });
18
+ // node-cron
19
+ function cron({ context, exec, schedule: scheduleList, label, }) {
20
+ const stopFunctions = [];
21
+ [scheduleList].flat().forEach(cronSchedule => {
22
+ logger.trace({ context, label, schedule: cronSchedule }, `start schedule`);
23
+ const cronJob = (0, node_cron_1.schedule)(cronSchedule, async () => await __1.ZCC.safeExec({
24
+ duration: helpers_1.SCHEDULE_EXECUTION_TIME,
25
+ errors: helpers_1.SCHEDULE_ERRORS,
26
+ exec,
27
+ executions: helpers_1.SCHEDULE_EXECUTION_COUNT,
28
+ labels: { context, label },
29
+ }));
30
+ lifecycle.onReady(() => {
31
+ logger.trace({ context, schedule: cronSchedule }, "start cron");
32
+ cronJob.start();
33
+ });
34
+ const stopFunction = () => {
35
+ logger.trace({ context, label, schedule: cronSchedule }, `stop schedule`);
36
+ cronJob.stop();
37
+ };
38
+ stop.add(stopFunction);
39
+ stopFunctions.push(stopFunction);
40
+ return stopFunction;
41
+ });
42
+ return () => stopFunctions.forEach(stop => stop());
43
+ }
44
+ // setInterval
45
+ function interval({ context, exec, interval, label, }) {
46
+ let runningInterval;
47
+ lifecycle.onReady(() => {
48
+ logger.trace({ context }, "start interval");
49
+ runningInterval = setInterval(async () => await __1.ZCC.safeExec({
50
+ duration: helpers_1.SCHEDULE_EXECUTION_TIME,
51
+ errors: helpers_1.SCHEDULE_ERRORS,
52
+ exec,
53
+ executions: helpers_1.SCHEDULE_EXECUTION_COUNT,
54
+ labels: { context, label },
55
+ }), interval);
56
+ });
57
+ const stopFunction = () => {
58
+ if (runningInterval) {
59
+ clearInterval(runningInterval);
60
+ }
61
+ };
62
+ stop.add(stopFunction);
63
+ return stopFunction;
64
+ }
65
+ function sliding({ context, exec, reset, next, label, }) {
66
+ const scheduleStop = cron({
67
+ context,
68
+ exec: () => {
69
+ if (timeout) {
70
+ logger.warn({ context }, `sliding schedule retrieving next execution time before previous ran`);
71
+ clearTimeout(timeout);
72
+ }
73
+ let nextTime = next();
74
+ if (!nextTime) {
75
+ // nothing to do?
76
+ // will try again next schedule
77
+ return;
78
+ }
79
+ nextTime = (0, dayjs_1.default)(nextTime);
80
+ if ((0, dayjs_1.default)().isAfter(nextTime)) {
81
+ logger.warn({ nextTime: nextTime.toISOString() }, `cannot schedule sliding schedules for the past`);
82
+ // or anything else really
83
+ // life sucks that way
84
+ return;
85
+ }
86
+ if (nextTime) {
87
+ timeout = setTimeout(async () => {
88
+ await __1.ZCC.safeExec({
89
+ duration: helpers_1.SCHEDULE_EXECUTION_TIME,
90
+ errors: helpers_1.SCHEDULE_ERRORS,
91
+ exec,
92
+ executions: helpers_1.SCHEDULE_EXECUTION_COUNT,
93
+ labels: { context, label },
94
+ });
95
+ }, Math.abs((0, dayjs_1.default)().diff(nextTime, "ms")));
96
+ }
97
+ },
98
+ label,
99
+ schedule: reset,
100
+ });
101
+ let timeout;
102
+ return () => {
103
+ scheduleStop();
104
+ if (timeout) {
105
+ clearTimeout(timeout);
106
+ timeout = undefined;
107
+ }
108
+ };
109
+ }
110
+ return {
111
+ cron,
112
+ interval,
113
+ sliding,
114
+ };
115
+ }
116
+ exports.Scheduler = Scheduler;
117
+ //# sourceMappingURL=scheduler.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.extension.js","sourceRoot":"","sources":["../../../src/boilerplate/extensions/scheduler.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import { Counter, Summary } from "prom-client";
2
+ import { TBlackHole, TContext } from "../..";
3
+ import { ApplicationConfigurationOptions, ApplicationDefinition, LibraryConfigurationOptions, LibraryDefinition, OptionalModuleConfiguration, ServiceFunction, ServiceMap, StringConfig, TLifecycleBase, TModuleMappings, TResolvedModuleMappings, TServiceReturn } from "../helpers";
4
+ import { Cache } from "./cache.extension";
5
+ import { Configuration } from "./configuration.extension";
6
+ import { Fetch } from "./fetch.extension";
7
+ import { Logger } from "./logger.extension";
8
+ import { Scheduler } from "./scheduler.extension";
9
+ /**
10
+ * association of projects to { service : Declaration Function }
11
+ */
12
+ declare let MODULE_MAPPINGS: Map<string, TModuleMappings>;
13
+ /**
14
+ * association of projects to { service : Initialized Service }
15
+ */
16
+ declare let LOADED_MODULES: Map<string, TResolvedModuleMappings>;
17
+ /**
18
+ * Optimized reverse lookups: Declaration Function => [project, service]
19
+ */
20
+ declare let REVERSE_MODULE_MAPPING: Map<ServiceFunction, [project: string, service: string]>;
21
+ export declare let LIB_BOILERPLATE: ReturnType<typeof CreateBoilerplate>;
22
+ declare function CreateBoilerplate(): LibraryDefinition<{
23
+ cache: typeof Cache;
24
+ configuration: typeof Configuration;
25
+ fetch: typeof Fetch;
26
+ logger: typeof Logger;
27
+ scheduler: typeof Scheduler;
28
+ }, {
29
+ CACHE_PREFIX: {
30
+ description: string;
31
+ type: "string";
32
+ };
33
+ CACHE_PROVIDER: StringConfig<"redis" | "memory">;
34
+ CACHE_TTL: {
35
+ default: number;
36
+ description: string;
37
+ type: "number";
38
+ };
39
+ CONFIG: {
40
+ description: string;
41
+ type: "string";
42
+ };
43
+ LOG_LEVEL: StringConfig<import("pino").default.Level>;
44
+ LOG_METRICS: {
45
+ default: true;
46
+ type: "boolean";
47
+ };
48
+ REDIS_URL: {
49
+ default: string;
50
+ description: string;
51
+ type: "string";
52
+ };
53
+ }>;
54
+ export declare function CreateLibrary<S extends ServiceMap, C extends OptionalModuleConfiguration>({ name: libraryName, configuration, priorityInit, services, }: LibraryConfigurationOptions<S, C>): LibraryDefinition<S, C>;
55
+ export declare function CreateApplication<S extends ServiceMap, C extends OptionalModuleConfiguration>({ name, services, libraries, configuration, priorityInit, }: ApplicationConfigurationOptions<S, C>): ApplicationDefinition<S, C>;
56
+ declare function WireService(project: string, service: string, definition: ServiceFunction, lifecycle: TLifecycleBase): Promise<TServiceReturn>;
57
+ declare function Teardown(): Promise<void>;
58
+ declare module "../../utilities" {
59
+ interface ZCCTestingDefinition {
60
+ FailFast: () => void;
61
+ Teardown: typeof Teardown;
62
+ /**
63
+ * exported helpers for unit testing, no use to applications
64
+ */
65
+ LOADED_MODULES: () => typeof LOADED_MODULES;
66
+ MODULE_MAPPINGS: () => typeof MODULE_MAPPINGS;
67
+ REVERSE_MODULE_MAPPING: () => typeof REVERSE_MODULE_MAPPING;
68
+ WiringReset: () => void;
69
+ WireService: typeof WireService;
70
+ }
71
+ interface ZCCDefinition {
72
+ /**
73
+ * In case something needs to grab details about the app
74
+ *
75
+ * Abnormal operation
76
+ */
77
+ application: ApplicationDefinition<ServiceMap, OptionalModuleConfiguration>;
78
+ safeExec: <LABELS extends BaseLabels>(options: (() => TBlackHole) | SafeExecOptions<LABELS>) => Promise<void>;
79
+ }
80
+ }
81
+ type SafeExecOptions<LABELS extends BaseLabels> = {
82
+ exec: () => TBlackHole;
83
+ labels: LABELS;
84
+ duration: Summary<Extract<keyof LABELS, string>>;
85
+ executions: Counter<Extract<keyof LABELS, string>>;
86
+ errors: Counter<Extract<keyof LABELS, string>>;
87
+ };
88
+ type BaseLabels = {
89
+ context: TContext;
90
+ /**
91
+ * ! if provided, specific metrics will be kept
92
+ *
93
+ * 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
94
+ *
95
+ * - execution count
96
+ * - error count
97
+ * - summary of execution time
98
+ */
99
+ label?: string;
100
+ };
101
+ export {};