@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,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildFilterString = exports.fetchCast = exports.queryToControl = exports.buildFilter = exports.controlToQuery = exports.FILTER_OPERATIONS = exports.HTTP_METHODS = void 0;
4
+ const __1 = require("../..");
5
+ /**
6
+ * Enumerates HTTP methods used in fetch requests.
7
+ */
8
+ var HTTP_METHODS;
9
+ (function (HTTP_METHODS) {
10
+ HTTP_METHODS["get"] = "get";
11
+ HTTP_METHODS["delete"] = "delete";
12
+ HTTP_METHODS["put"] = "put";
13
+ HTTP_METHODS["patch"] = "patch";
14
+ HTTP_METHODS["post"] = "post";
15
+ })(HTTP_METHODS || (exports.HTTP_METHODS = HTTP_METHODS = {}));
16
+ /**
17
+ * Enumerates the types of operations available for data filtering.
18
+ */
19
+ var FILTER_OPERATIONS;
20
+ (function (FILTER_OPERATIONS) {
21
+ // "elemMatch" functionality in mongo
22
+ // eslint-disable-next-line unicorn/prevent-abbreviations
23
+ FILTER_OPERATIONS["elem"] = "elem";
24
+ FILTER_OPERATIONS["regex"] = "regex";
25
+ FILTER_OPERATIONS["in"] = "in";
26
+ FILTER_OPERATIONS["nin"] = "nin";
27
+ FILTER_OPERATIONS["lt"] = "lt";
28
+ FILTER_OPERATIONS["lte"] = "lte";
29
+ FILTER_OPERATIONS["gt"] = "gt";
30
+ FILTER_OPERATIONS["gte"] = "gte";
31
+ FILTER_OPERATIONS["exists"] = "exists";
32
+ FILTER_OPERATIONS["empty"] = "empty";
33
+ FILTER_OPERATIONS["ne"] = "ne";
34
+ FILTER_OPERATIONS["eq"] = "eq";
35
+ })(FILTER_OPERATIONS || (exports.FILTER_OPERATIONS = FILTER_OPERATIONS = {}));
36
+ // eslint-disable-next-line sonarjs/cognitive-complexity
37
+ function controlToQuery(value) {
38
+ const out = new Map();
39
+ if (value?.limit) {
40
+ out.set("limit", value.limit.toString());
41
+ }
42
+ if (value?.skip) {
43
+ out.set("skip", value.skip.toString());
44
+ }
45
+ if (value?.sort) {
46
+ out.set("sort", value.sort.join(","));
47
+ }
48
+ if (value?.select) {
49
+ out.set("select", value.select.join(","));
50
+ }
51
+ value?.filters?.forEach(f => {
52
+ let field = f.field;
53
+ if (f.operation && f.operation !== FILTER_OPERATIONS.eq) {
54
+ field = `${field}__${f.operation}`;
55
+ }
56
+ let value = f.value;
57
+ if (__1.is.array(value)) {
58
+ value = value.join(",");
59
+ }
60
+ if (value instanceof Date) {
61
+ value = value.toISOString();
62
+ }
63
+ if (value === null) {
64
+ value = "null";
65
+ }
66
+ if (field) {
67
+ out.set(field, (value ?? "").toString());
68
+ }
69
+ });
70
+ return Object.fromEntries(out.entries());
71
+ }
72
+ exports.controlToQuery = controlToQuery;
73
+ function buildFilter(key, value) {
74
+ const [name, operation] = key.split("__");
75
+ switch (operation) {
76
+ case "in":
77
+ case "nin":
78
+ if (!__1.is.array(value)) {
79
+ value = __1.is.string(value) ? value.split(",") : [value];
80
+ }
81
+ return {
82
+ field: name,
83
+ operation,
84
+ value: value,
85
+ };
86
+ case "elem":
87
+ return {
88
+ field: name,
89
+ operation,
90
+ value: __1.is.string(value) ? JSON.parse(value) : value,
91
+ };
92
+ default:
93
+ return {
94
+ field: name,
95
+ operation,
96
+ value,
97
+ };
98
+ }
99
+ }
100
+ exports.buildFilter = buildFilter;
101
+ function queryToControl(value) {
102
+ const filters = new Set();
103
+ const out = { filters };
104
+ const parameters = new Map(Object.entries(value));
105
+ parameters.forEach((value, key) => {
106
+ const [name, operation] = key.split("__");
107
+ switch (key) {
108
+ case "select":
109
+ out.select = value.split(",");
110
+ return;
111
+ case "sort":
112
+ out.sort = value.split(",");
113
+ return;
114
+ case "limit":
115
+ out.limit = Number(value);
116
+ return;
117
+ case "skip":
118
+ out.skip = Number(value);
119
+ return;
120
+ }
121
+ switch (operation) {
122
+ case "in":
123
+ case "nin":
124
+ filters.add({
125
+ field: name,
126
+ operation,
127
+ value: value.split(","),
128
+ });
129
+ return;
130
+ case "elem":
131
+ filters.add({
132
+ field: name,
133
+ operation,
134
+ value: JSON.parse(value),
135
+ });
136
+ return;
137
+ default:
138
+ filters.add({
139
+ field: name,
140
+ operation,
141
+ value,
142
+ });
143
+ }
144
+ });
145
+ return out;
146
+ }
147
+ exports.queryToControl = queryToControl;
148
+ function fetchCast(item) {
149
+ if (__1.is.array(item)) {
150
+ return item.map(i => fetchCast(i)).join(",");
151
+ }
152
+ if (item instanceof Date) {
153
+ return item.toISOString();
154
+ }
155
+ if (__1.is.number(item)) {
156
+ return item.toString();
157
+ }
158
+ if (__1.is.boolean(item)) {
159
+ return item ? "true" : "false";
160
+ }
161
+ return item;
162
+ }
163
+ exports.fetchCast = fetchCast;
164
+ function buildFilterString(fetchWith) {
165
+ return new URLSearchParams({
166
+ ...Object.fromEntries(Object.entries(fetchWith.params ?? {}).map(([label, value]) => [
167
+ label,
168
+ fetchCast(value),
169
+ ])),
170
+ }).toString();
171
+ }
172
+ exports.buildFilterString = buildFilterString;
173
+ //# sourceMappingURL=fetch.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.helper.js","sourceRoot":"","sources":["../../../src/boilerplate/helpers/fetch.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export * from "./cache-memory.helper";
2
+ export * from "./cache-redis.helper";
3
+ export * from "./config.helper";
4
+ export * from "./config-environment-loader.helper";
5
+ export * from "./config-file-loader.helper";
6
+ export * from "./errors.helper";
7
+ export * from "./events.helper";
8
+ export * from "./fetch.helper";
9
+ export * from "./lifecycle.helper";
10
+ export * from "./metrics.helper";
11
+ export * from "./testing.helper";
12
+ export * from "./wiring.helper";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./cache-memory.helper"), exports);
5
+ tslib_1.__exportStar(require("./cache-redis.helper"), exports);
6
+ tslib_1.__exportStar(require("./config.helper"), exports);
7
+ tslib_1.__exportStar(require("./config-environment-loader.helper"), exports);
8
+ tslib_1.__exportStar(require("./config-file-loader.helper"), exports);
9
+ tslib_1.__exportStar(require("./errors.helper"), exports);
10
+ tslib_1.__exportStar(require("./events.helper"), exports);
11
+ tslib_1.__exportStar(require("./fetch.helper"), exports);
12
+ tslib_1.__exportStar(require("./lifecycle.helper"), exports);
13
+ tslib_1.__exportStar(require("./metrics.helper"), exports);
14
+ tslib_1.__exportStar(require("./testing.helper"), exports);
15
+ tslib_1.__exportStar(require("./wiring.helper"), exports);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/boilerplate/helpers/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC;AACtC,+DAAqC;AACrC,0DAAgC;AAChC,6EAAmD;AACnD,sEAA4C;AAC5C,0DAAgC;AAChC,0DAAgC;AAChC,yDAA+B;AAC/B,6DAAmC;AACnC,2DAAiC;AACjC,2DAAiC;AACjC,0DAAgC"}
@@ -0,0 +1,43 @@
1
+ import { TBlackHole } from "../..";
2
+ export type LifecycleCallback = () => TBlackHole;
3
+ export type LifecyclePrioritizedCallback = [
4
+ callback: LifecycleCallback,
5
+ priority: number
6
+ ];
7
+ export type CallbackList = LifecyclePrioritizedCallback[];
8
+ export type TLifeCycleRegister = (callback: LifecycleCallback, priority?: number) => void;
9
+ export type TLifecycleBase = {
10
+ /**
11
+ * Registers a callback for the bootstrap phase, executed during the initial startup process.
12
+ */
13
+ onBootstrap: TLifeCycleRegister;
14
+ /**
15
+ * Registers a callback for immediately after the configuration phase, allowing post-configuration adjustments.
16
+ */
17
+ onPostConfig: TLifeCycleRegister;
18
+ /**
19
+ * Registers a callback for the pre-initialization phase, executed before the main initialization starts.
20
+ */
21
+ onPreInit: TLifeCycleRegister;
22
+ /**
23
+ * Registers a callback for when the system is fully initialized and ready.
24
+ */
25
+ onReady: TLifeCycleRegister;
26
+ /**
27
+ * Begins the shutdown process, typically invoked when the system is about to shut down.
28
+ */
29
+ onShutdownStart: TLifeCycleRegister;
30
+ /**
31
+ * Completes the shutdown process, executed after all shutdown procedures are complete.
32
+ */
33
+ onShutdownComplete: TLifeCycleRegister;
34
+ };
35
+ export type TParentLifecycle = TLifecycleBase & {
36
+ child: () => TLifecycleBase;
37
+ };
38
+ export type TChildLifecycle = TLifecycleBase;
39
+ export type TLoadableChildLifecycle = TChildLifecycle & {
40
+ getCallbacks: (stage: LifecycleStages) => CallbackList;
41
+ };
42
+ export declare const LIFECYCLE_STAGES: readonly ["PreInit", "PostConfig", "Bootstrap", "Ready", "ShutdownStart", "ShutdownComplete"];
43
+ export type LifecycleStages = (typeof LIFECYCLE_STAGES)[number];
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LIFECYCLE_STAGES = void 0;
4
+ // ! This is a sorted array! Don't change the order
5
+ exports.LIFECYCLE_STAGES = [
6
+ "PreInit",
7
+ "PostConfig",
8
+ "Bootstrap",
9
+ "Ready",
10
+ "ShutdownStart",
11
+ "ShutdownComplete",
12
+ ];
13
+ //# sourceMappingURL=lifecycle.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.helper.js","sourceRoot":"","sources":["../../../src/boilerplate/helpers/lifecycle.helper.ts"],"names":[],"mappings":";;;AAuDA,mDAAmD;AACtC,QAAA,gBAAgB,GAAG;IAC9B,SAAS;IACT,YAAY;IACZ,WAAW;IACX,OAAO;IACP,eAAe;IACf,kBAAkB;CACV,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { Counter, Gauge, Histogram, Summary } from "prom-client";
2
+ /**
3
+ * Cache delete operations counter
4
+ */
5
+ export declare const CACHE_DELETE_OPERATIONS_TOTAL: Counter<"prefix" | "key">;
6
+ /**
7
+ * Cache get operations counter
8
+ */
9
+ export declare const CACHE_GET_OPERATIONS_TOTAL: Counter<"prefix" | "key" | "hit_miss">;
10
+ /**
11
+ * Tracks the number of times a scheduled task has been executed.
12
+ * Labels:
13
+ * - context: The broader category or module the schedule belongs to.
14
+ * - label: A user-defined label to identify the specific schedule.
15
+ */
16
+ export declare const SCHEDULE_EXECUTION_COUNT: Counter<"context" | "label">;
17
+ /**
18
+ * Counts the number of errors occurred during scheduled task executions.
19
+ * Labels:
20
+ * - context: The broader category or module the schedule belongs to.
21
+ * - label: A user-defined label to identify the specific schedule where the error occurred.
22
+ */
23
+ export declare const SCHEDULE_ERRORS: Counter<"context" | "label">;
24
+ /**
25
+ * Summary for Execution Time
26
+ */
27
+ export declare const SCHEDULE_EXECUTION_TIME: Summary<"context" | "label">;
28
+ /**
29
+ * Metric to count errors in cache driver
30
+ */
31
+ export declare const CACHE_DRIVER_ERROR_COUNT: Counter<"methodName">;
32
+ /**
33
+ * Cache set operations counter
34
+ */
35
+ export declare const CACHE_SET_OPERATIONS_TOTAL: Counter<"prefix" | "key">;
36
+ /**
37
+ * Counts the total number of initiated fetch requests.
38
+ */
39
+ export declare const FETCH_REQUESTS_INITIATED: Counter<string>;
40
+ /**
41
+ * Counts the total number of successfully completed fetch requests.
42
+ */
43
+ export declare const FETCH_REQUESTS_SUCCESSFUL: Counter<"context" | "label">;
44
+ /**
45
+ * Counts the total number of successfully completed fetch requests.
46
+ */
47
+ export declare const FETCH_DOWNLOAD_REQUESTS_SUCCESSFUL: Counter<"context" | "label">;
48
+ /**
49
+ * Counts the total number of failed fetch requests.
50
+ */
51
+ export declare const FETCH_REQUESTS_FAILED: Counter<"context" | "label">;
52
+ /**
53
+ * Measures the delay (in milliseconds) experienced by requests due to bottleneck rate limiting.
54
+ */
55
+ export declare const FETCH_REQUEST_BOTTLENECK_DELAY: Summary<"context" | "label">;
56
+ /**
57
+ * Gauge to count the number of errors encountered in Redis operations.
58
+ */
59
+ export declare const REDIS_ERROR_COUNT: Gauge<string>;
60
+ /**
61
+ * Histogram to track the latency of Redis operations in milliseconds.
62
+ * Buckets range from 0.1 ms to 1000 ms (1 second) for granular latency measurement.
63
+ */
64
+ export declare const REDIS_OPERATION_LATENCY_MS: Histogram<string>;
65
+ /**
66
+ * Counter to track the number of errors encountered in memory cache operations.
67
+ */
68
+ export declare const MEMORY_CACHE_ERROR_COUNT: Counter<string>;
69
+ /**
70
+ * A Prometheus gauge metric that tracks the number of unique context entries in the logger's context cache.
71
+ * This helps in monitoring and managing the memory usage associated with the caching of logger contexts.
72
+ */
73
+ export declare const LOGGER_CONTEXT_ENTRIES_COUNT: Gauge<string>;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOGGER_CONTEXT_ENTRIES_COUNT = exports.MEMORY_CACHE_ERROR_COUNT = exports.REDIS_OPERATION_LATENCY_MS = exports.REDIS_ERROR_COUNT = exports.FETCH_REQUEST_BOTTLENECK_DELAY = exports.FETCH_REQUESTS_FAILED = exports.FETCH_DOWNLOAD_REQUESTS_SUCCESSFUL = exports.FETCH_REQUESTS_SUCCESSFUL = exports.FETCH_REQUESTS_INITIATED = exports.CACHE_SET_OPERATIONS_TOTAL = exports.CACHE_DRIVER_ERROR_COUNT = exports.SCHEDULE_EXECUTION_TIME = exports.SCHEDULE_ERRORS = exports.SCHEDULE_EXECUTION_COUNT = exports.CACHE_GET_OPERATIONS_TOTAL = exports.CACHE_DELETE_OPERATIONS_TOTAL = void 0;
4
+ /* eslint-disable @typescript-eslint/no-magic-numbers */
5
+ const prom_client_1 = require("prom-client");
6
+ /**
7
+ * Cache delete operations counter
8
+ */
9
+ exports.CACHE_DELETE_OPERATIONS_TOTAL = new prom_client_1.Counter({
10
+ help: "Total number of cache delete operations",
11
+ labelNames: ["prefix", "key"],
12
+ name: "digital_alchemy_boilerplate_cache_delete_operations_total",
13
+ });
14
+ /**
15
+ * Cache get operations counter
16
+ */
17
+ exports.CACHE_GET_OPERATIONS_TOTAL = new prom_client_1.Counter({
18
+ help: "Total number of cache get operations",
19
+ labelNames: ["prefix", "key", "hit_miss"],
20
+ name: "digital_alchemy_boilerplate_cache_get_operations_total",
21
+ });
22
+ /**
23
+ * Tracks the number of times a scheduled task has been executed.
24
+ * Labels:
25
+ * - context: The broader category or module the schedule belongs to.
26
+ * - label: A user-defined label to identify the specific schedule.
27
+ */
28
+ exports.SCHEDULE_EXECUTION_COUNT = new prom_client_1.Counter({
29
+ help: "Counts the number of times a scheduled task has been executed",
30
+ labelNames: ["context", "label"],
31
+ name: "digital_alchemy_boilerplate_schedule_execution_count",
32
+ });
33
+ /**
34
+ * Counts the number of errors occurred during scheduled task executions.
35
+ * Labels:
36
+ * - context: The broader category or module the schedule belongs to.
37
+ * - label: A user-defined label to identify the specific schedule where the error occurred.
38
+ */
39
+ exports.SCHEDULE_ERRORS = new prom_client_1.Counter({
40
+ help: "Counts the number of errors during scheduled task executions",
41
+ labelNames: ["context", "label"],
42
+ name: "digital_alchemy_boilerplate_schedule_errors",
43
+ });
44
+ /**
45
+ * Summary for Execution Time
46
+ */
47
+ exports.SCHEDULE_EXECUTION_TIME = new prom_client_1.Summary({
48
+ help: "Measures the duration of each cron job or interval execution",
49
+ labelNames: ["context", "label"],
50
+ name: "digital_alchemy_boilerplate_schedule_execution_time",
51
+ // These percentiles are just examples; adjust them based on what's relevant for your analysis
52
+ percentiles: [0.5, 0.9, 0.99],
53
+ });
54
+ /**
55
+ * Metric to count errors in cache driver
56
+ */
57
+ exports.CACHE_DRIVER_ERROR_COUNT = new prom_client_1.Counter({
58
+ help: "Counts the number of errors caught in the cache driver",
59
+ labelNames: ["methodName"],
60
+ name: "digital_alchemy_boilerplate_cache_driver_error_count",
61
+ });
62
+ /**
63
+ * Cache set operations counter
64
+ */
65
+ exports.CACHE_SET_OPERATIONS_TOTAL = new prom_client_1.Counter({
66
+ help: "Total number of cache set operations",
67
+ labelNames: ["prefix", "key"],
68
+ name: "digital_alchemy_boilerplate_cache_set_operations_total",
69
+ });
70
+ /**
71
+ * Counts the total number of initiated fetch requests.
72
+ */
73
+ exports.FETCH_REQUESTS_INITIATED = new prom_client_1.Counter({
74
+ help: "Total number of fetch requests that have been initiated",
75
+ name: "digital_alchemy_boilerplate_fetch_requests_initiated_total",
76
+ });
77
+ /**
78
+ * Counts the total number of successfully completed fetch requests.
79
+ */
80
+ exports.FETCH_REQUESTS_SUCCESSFUL = new prom_client_1.Counter({
81
+ help: "Total number of fetch requests that have been successfully completed",
82
+ labelNames: ["context", "label"],
83
+ name: "digital_alchemy_boilerplate_fetch_requests_successful_total",
84
+ });
85
+ /**
86
+ * Counts the total number of successfully completed fetch requests.
87
+ */
88
+ exports.FETCH_DOWNLOAD_REQUESTS_SUCCESSFUL = new prom_client_1.Counter({
89
+ help: "Total number of fetch download requests that have been successfully completed",
90
+ labelNames: ["context", "label"],
91
+ name: "digital_alchemy_boilerplate_fetch_download_requests_successful_total",
92
+ });
93
+ /**
94
+ * Counts the total number of failed fetch requests.
95
+ */
96
+ exports.FETCH_REQUESTS_FAILED = new prom_client_1.Counter({
97
+ help: "Total number of fetch requests that have failed",
98
+ labelNames: ["context", "label"],
99
+ name: "digital_alchemy_boilerplate_fetch_requests_failed_total",
100
+ });
101
+ /**
102
+ * Measures the delay (in milliseconds) experienced by requests due to bottleneck rate limiting.
103
+ */
104
+ exports.FETCH_REQUEST_BOTTLENECK_DELAY = new prom_client_1.Summary({
105
+ help: "Delay in milliseconds experienced by requests due to bottleneck rate limiting",
106
+ labelNames: ["context", "label"],
107
+ name: "digital_alchemy_boilerplate_fetch_request_bottleneck_delay_milliseconds",
108
+ percentiles: [0.5, 0.9, 0.99],
109
+ });
110
+ /**
111
+ * Gauge to count the number of errors encountered in Redis operations.
112
+ */
113
+ exports.REDIS_ERROR_COUNT = new prom_client_1.Gauge({
114
+ help: "Counts the number of errors encountered in Redis operations",
115
+ name: "digital_alchemy_boilerplate_redis_error_count",
116
+ });
117
+ /**
118
+ * Histogram to track the latency of Redis operations in milliseconds.
119
+ * Buckets range from 0.1 ms to 1000 ms (1 second) for granular latency measurement.
120
+ */
121
+ exports.REDIS_OPERATION_LATENCY_MS = new prom_client_1.Histogram({
122
+ buckets: [0.1, 0.5, 1, 5, 10, 20, 50, 100, 200, 500, 1000],
123
+ help: "Histogram for tracking the latency of Redis operations in milliseconds",
124
+ name: "digital_alchemy_boilerplate_redis_operation_latency_ms",
125
+ });
126
+ /**
127
+ * Counter to track the number of errors encountered in memory cache operations.
128
+ */
129
+ exports.MEMORY_CACHE_ERROR_COUNT = new prom_client_1.Counter({
130
+ help: "Counts the number of errors encountered in memory cache operations",
131
+ name: "digital_alchemy_boilerplate_memory_cache_error_count",
132
+ });
133
+ /**
134
+ * A Prometheus gauge metric that tracks the number of unique context entries in the logger's context cache.
135
+ * This helps in monitoring and managing the memory usage associated with the caching of logger contexts.
136
+ */
137
+ exports.LOGGER_CONTEXT_ENTRIES_COUNT = new prom_client_1.Gauge({
138
+ help: "Number of unique context entries in the logger context cache",
139
+ name: "digital_alchemy_boilerplate_logger_context_entries_count",
140
+ });
141
+ //# sourceMappingURL=metrics.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.helper.js","sourceRoot":"","sources":["../../../src/boilerplate/helpers/metrics.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const TESTING_APP_NAME = "digital-alchemy-unit-tests";
2
+ export type RandomFileTestingDataFormat = object;
3
+ export declare function ConfigurationFiles(): {
4
+ dataMap: Map<string, object>;
5
+ link: (paths?: string[]) => void;
6
+ sort: (filePaths: string[]) => string[];
7
+ unlink: (path?: string) => void;
8
+ };
9
+ declare module "../../utilities" {
10
+ interface ZCCTestingDefinition {
11
+ configurationFiles: typeof ConfigurationFiles;
12
+ }
13
+ }
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigurationFiles = exports.TESTING_APP_NAME = void 0;
4
+ const fs_1 = require("fs");
5
+ const ini_1 = require("ini");
6
+ const js_yaml_1 = require("js-yaml");
7
+ const os_1 = require("os");
8
+ const path_1 = require("path");
9
+ const process_1 = require("process");
10
+ const __1 = require("../..");
11
+ exports.TESTING_APP_NAME = "digital-alchemy-unit-tests";
12
+ function ConfigurationFiles() {
13
+ const testDataMap = new Map();
14
+ function writeConfigFile(filePath, data, encodingType) {
15
+ let content;
16
+ encodingType = encodingType || (0, path_1.extname)(filePath).slice(__1.SINGLE) || "ini";
17
+ switch (encodingType) {
18
+ case "json":
19
+ content = JSON.stringify(data);
20
+ break;
21
+ case "yaml":
22
+ content = (0, js_yaml_1.dump)(data);
23
+ break;
24
+ default:
25
+ content = (0, ini_1.encode)(data); // Default to ini
26
+ break;
27
+ }
28
+ (0, fs_1.writeFileSync)(filePath, content);
29
+ testDataMap.set(filePath, data);
30
+ }
31
+ return {
32
+ dataMap: testDataMap,
33
+ link: (paths) => {
34
+ __1.is.unique(__1.is.empty(paths)
35
+ ? [(0, process_1.cwd)(), (0, path_1.join)((0, os_1.homedir)(), ".config")].flatMap(base => [
36
+ (0, path_1.join)(base, exports.TESTING_APP_NAME),
37
+ (0, path_1.join)(base, `${exports.TESTING_APP_NAME}.json`),
38
+ (0, path_1.join)(base, `${exports.TESTING_APP_NAME}.ini`),
39
+ (0, path_1.join)(base, `${exports.TESTING_APP_NAME}.yaml`),
40
+ ])
41
+ : paths).forEach(filename => {
42
+ console.log("FIXME: GENERATE RANDOM DATA", filename, writeConfigFile);
43
+ // const data = ZCC_Testing.generateRandomData();
44
+ // writeConfigFile(filename, data);
45
+ });
46
+ },
47
+ sort: (filePaths) => {
48
+ const dirOrder = [
49
+ (0, path_1.join)("/etc", exports.TESTING_APP_NAME, "config"),
50
+ (0, path_1.join)("/etc", exports.TESTING_APP_NAME, "config.json"),
51
+ (0, path_1.join)("/etc", exports.TESTING_APP_NAME, "config.ini"),
52
+ (0, path_1.join)("/etc", exports.TESTING_APP_NAME, "config.yaml"),
53
+ (0, path_1.join)("/etc", `${exports.TESTING_APP_NAME}rc`),
54
+ (0, path_1.join)("/etc", `${exports.TESTING_APP_NAME}rc.json`),
55
+ (0, path_1.join)("/etc", `${exports.TESTING_APP_NAME}rc.ini`),
56
+ (0, path_1.join)("/etc", `${exports.TESTING_APP_NAME}rc.yaml`),
57
+ (0, path_1.join)((0, process_1.cwd)(), `.${exports.TESTING_APP_NAME}rc`),
58
+ (0, path_1.join)((0, process_1.cwd)(), `.${exports.TESTING_APP_NAME}rc.json`),
59
+ (0, path_1.join)((0, process_1.cwd)(), `.${exports.TESTING_APP_NAME}rc.ini`),
60
+ (0, path_1.join)((0, process_1.cwd)(), `.${exports.TESTING_APP_NAME}rc.yaml`),
61
+ (0, path_1.join)((0, os_1.homedir)(), ".config", exports.TESTING_APP_NAME),
62
+ (0, path_1.join)((0, os_1.homedir)(), ".config", `${exports.TESTING_APP_NAME}.json`),
63
+ (0, path_1.join)((0, os_1.homedir)(), ".config", `${exports.TESTING_APP_NAME}.ini`),
64
+ (0, path_1.join)((0, os_1.homedir)(), ".config", `${exports.TESTING_APP_NAME}.yaml`),
65
+ (0, path_1.join)((0, os_1.homedir)(), ".config", exports.TESTING_APP_NAME, "config"),
66
+ (0, path_1.join)((0, os_1.homedir)(), ".config", exports.TESTING_APP_NAME, "config.json"),
67
+ (0, path_1.join)((0, os_1.homedir)(), ".config", exports.TESTING_APP_NAME, "config.ini"),
68
+ (0, path_1.join)((0, os_1.homedir)(), ".config", exports.TESTING_APP_NAME, "config.yaml"),
69
+ ].reverse();
70
+ return filePaths
71
+ .filter(path => dirOrder.includes(path))
72
+ .sort((a, b) => dirOrder.indexOf(a) - dirOrder.indexOf(b));
73
+ },
74
+ unlink: (path) => {
75
+ if (path) {
76
+ if (testDataMap.has(path)) {
77
+ (0, fs_1.existsSync)(path) && (0, fs_1.unlinkSync)(path);
78
+ testDataMap.delete(path);
79
+ return;
80
+ }
81
+ return;
82
+ }
83
+ testDataMap.forEach((_, filePath) => {
84
+ (0, fs_1.existsSync)(filePath) && (0, fs_1.unlinkSync)(filePath);
85
+ });
86
+ },
87
+ };
88
+ }
89
+ exports.ConfigurationFiles = ConfigurationFiles;
90
+ __1.ZCC_Testing.configurationFiles = ConfigurationFiles;
91
+ //# sourceMappingURL=testing.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.helper.js","sourceRoot":"","sources":["../../../src/boilerplate/helpers/testing.helper.ts"],"names":[],"mappings":";;;AAAA,2BAA2D;AAC3D,6BAA0C;AAC1C,qCAA2C;AAC3C,2BAA6B;AAC7B,+BAAqC;AACrC,qCAA8B;AAE9B,6BAAgD;AAEnC,QAAA,gBAAgB,GAAG,4BAA4B,CAAC;AAO7D,SAAgB,kBAAkB;IAChC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuC,CAAC;IAEnE,SAAS,eAAe,CACtB,QAAgB,EAChB,IAAiC,EACjC,YAAqB;QAErB,IAAI,OAAO,CAAC;QACZ,YAAY,GAAG,YAAY,IAAI,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAM,CAAC,IAAI,KAAK,CAAC;QAExE,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,MAAM;gBACT,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,GAAG,IAAA,cAAQ,EAAC,IAAI,CAAC,CAAC;gBACzB,MAAM;YACR;gBACE,OAAO,GAAG,IAAA,YAAS,EAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB;gBAC5C,MAAM;QACV,CAAC;QAED,IAAA,kBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,CAAC,KAAgB,EAAE,EAAE;YACzB,MAAE,CAAC,MAAM,CACP,MAAE,CAAC,KAAK,CAAC,KAAK,CAAC;gBACb,CAAC,CAAC,CAAC,IAAA,aAAG,GAAE,EAAE,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClD,IAAA,WAAI,EAAC,IAAI,EAAE,wBAAgB,CAAC;oBAC5B,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,wBAAgB,OAAO,CAAC;oBACtC,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,wBAAgB,MAAM,CAAC;oBACrC,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,wBAAgB,OAAO,CAAC;iBACvC,CAAC;gBACJ,CAAC,CAAC,KAAK,CACV,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;gBACtE,iDAAiD;gBACjD,mCAAmC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,CAAC,SAAmB,EAAY,EAAE;YACtC,MAAM,QAAQ,GAAG;gBACf,IAAA,WAAI,EAAC,MAAM,EAAE,wBAAgB,EAAE,QAAQ,CAAC;gBACxC,IAAA,WAAI,EAAC,MAAM,EAAE,wBAAgB,EAAE,aAAa,CAAC;gBAC7C,IAAA,WAAI,EAAC,MAAM,EAAE,wBAAgB,EAAE,YAAY,CAAC;gBAC5C,IAAA,WAAI,EAAC,MAAM,EAAE,wBAAgB,EAAE,aAAa,CAAC;gBAC7C,IAAA,WAAI,EAAC,MAAM,EAAE,GAAG,wBAAgB,IAAI,CAAC;gBACrC,IAAA,WAAI,EAAC,MAAM,EAAE,GAAG,wBAAgB,SAAS,CAAC;gBAC1C,IAAA,WAAI,EAAC,MAAM,EAAE,GAAG,wBAAgB,QAAQ,CAAC;gBACzC,IAAA,WAAI,EAAC,MAAM,EAAE,GAAG,wBAAgB,SAAS,CAAC;gBAC1C,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,IAAI,wBAAgB,IAAI,CAAC;gBACrC,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,IAAI,wBAAgB,SAAS,CAAC;gBAC1C,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,IAAI,wBAAgB,QAAQ,CAAC;gBACzC,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,IAAI,wBAAgB,SAAS,CAAC;gBAC1C,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,wBAAgB,CAAC;gBAC5C,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,GAAG,wBAAgB,OAAO,CAAC;gBACtD,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,GAAG,wBAAgB,MAAM,CAAC;gBACrD,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,GAAG,wBAAgB,OAAO,CAAC;gBACtD,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,wBAAgB,EAAE,QAAQ,CAAC;gBACtD,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,wBAAgB,EAAE,aAAa,CAAC;gBAC3D,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,wBAAgB,EAAE,YAAY,CAAC;gBAC1D,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,wBAAgB,EAAE,aAAa,CAAC;aAC5D,CAAC,OAAO,EAAE,CAAC;YAEZ,OAAO,SAAS;iBACb,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;YACxB,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,CAAC;oBACrC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACzB,OAAO;gBACT,CAAC;gBACD,OAAO;YACT,CAAC;YACD,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;gBAClC,IAAA,eAAU,EAAC,QAAQ,CAAC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAvFD,gDAuFC;AAED,eAAW,CAAC,kBAAkB,GAAG,kBAAkB,CAAC"}