@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.
- package/LICENSE +21 -0
- package/README.md +47 -0
- package/dist/automation/automation.module.d.ts +61 -0
- package/dist/automation/automation.module.js +70 -0
- package/dist/automation/automation.module.js.map +1 -0
- package/dist/automation/extensions/aggressive-scenes.extension.d.ts +22 -0
- package/dist/automation/extensions/aggressive-scenes.extension.js +125 -0
- package/dist/automation/extensions/aggressive-scenes.extension.js.map +1 -0
- package/dist/automation/extensions/circadian.extension.d.ts +11 -0
- package/dist/automation/extensions/circadian.extension.js +87 -0
- package/dist/automation/extensions/circadian.extension.js.map +1 -0
- package/dist/automation/extensions/index.d.ts +7 -0
- package/dist/automation/extensions/index.js +11 -0
- package/dist/automation/extensions/index.js.map +1 -0
- package/dist/automation/extensions/light-manager.extension.d.ts +26 -0
- package/dist/automation/extensions/light-manager.extension.js +260 -0
- package/dist/automation/extensions/light-manager.extension.js.map +1 -0
- package/dist/automation/extensions/managed-switch.extension.d.ts +3 -0
- package/dist/automation/extensions/managed-switch.extension.js +73 -0
- package/dist/automation/extensions/managed-switch.extension.js.map +1 -0
- package/dist/automation/extensions/room.extension.d.ts +11 -0
- package/dist/automation/extensions/room.extension.js +179 -0
- package/dist/automation/extensions/room.extension.js.map +1 -0
- package/dist/automation/extensions/sequence-matcher.extension.d.ts +3 -0
- package/dist/automation/extensions/sequence-matcher.extension.js +126 -0
- package/dist/automation/extensions/sequence-matcher.extension.js.map +1 -0
- package/dist/automation/extensions/solar-calc.extension.d.ts +20 -0
- package/dist/automation/extensions/solar-calc.extension.js +105 -0
- package/dist/automation/extensions/solar-calc.extension.js.map +1 -0
- package/dist/automation/helpers/events.helper.d.ts +33 -0
- package/dist/automation/helpers/events.helper.js +14 -0
- package/dist/automation/helpers/events.helper.js.map +1 -0
- package/dist/automation/helpers/index.d.ts +7 -0
- package/dist/automation/helpers/index.js +11 -0
- package/dist/automation/helpers/index.js.map +1 -0
- package/dist/automation/helpers/managed-switch.helper.d.ts +41 -0
- package/dist/automation/helpers/managed-switch.helper.js +3 -0
- package/dist/automation/helpers/managed-switch.helper.js.map +1 -0
- package/dist/automation/helpers/metrics.helper.d.ts +13 -0
- package/dist/automation/helpers/metrics.helper.js +30 -0
- package/dist/automation/helpers/metrics.helper.js.map +1 -0
- package/dist/automation/helpers/reftimes.helper.d.ts +54 -0
- package/dist/automation/helpers/reftimes.helper.js +33 -0
- package/dist/automation/helpers/reftimes.helper.js.map +1 -0
- package/dist/automation/helpers/scene.helper.d.ts +97 -0
- package/dist/automation/helpers/scene.helper.js +5 -0
- package/dist/automation/helpers/scene.helper.js.map +1 -0
- package/dist/automation/helpers/sequence.helper.d.ts +55 -0
- package/dist/automation/helpers/sequence.helper.js +3 -0
- package/dist/automation/helpers/sequence.helper.js.map +1 -0
- package/dist/automation/helpers/solar.helper.d.ts +3 -0
- package/dist/automation/helpers/solar.helper.js +262 -0
- package/dist/automation/helpers/solar.helper.js.map +1 -0
- package/dist/automation/index.d.ts +3 -0
- package/dist/automation/index.js +10 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/boilerplate/extensions/cache.extension.d.ts +24 -0
- package/dist/boilerplate/extensions/cache.extension.js +96 -0
- package/dist/boilerplate/extensions/cache.extension.js.map +1 -0
- package/dist/boilerplate/extensions/configuration.extension.d.ts +23 -0
- package/dist/boilerplate/extensions/configuration.extension.js +98 -0
- package/dist/boilerplate/extensions/configuration.extension.js.map +1 -0
- package/dist/boilerplate/extensions/fetch.extension.d.ts +20 -0
- package/dist/boilerplate/extensions/fetch.extension.js +154 -0
- package/dist/boilerplate/extensions/fetch.extension.js.map +1 -0
- package/dist/boilerplate/extensions/index.d.ts +6 -0
- package/dist/boilerplate/extensions/index.js +10 -0
- package/dist/boilerplate/extensions/index.js.map +1 -0
- package/dist/boilerplate/extensions/logger.extension.d.ts +39 -0
- package/dist/boilerplate/extensions/logger.extension.js +159 -0
- package/dist/boilerplate/extensions/logger.extension.js.map +1 -0
- package/dist/boilerplate/extensions/scheduler.extension.d.ts +21 -0
- package/dist/boilerplate/extensions/scheduler.extension.js +117 -0
- package/dist/boilerplate/extensions/scheduler.extension.js.map +1 -0
- package/dist/boilerplate/extensions/wiring.extension.d.ts +101 -0
- package/dist/boilerplate/extensions/wiring.extension.js +452 -0
- package/dist/boilerplate/extensions/wiring.extension.js.map +1 -0
- package/dist/boilerplate/helpers/cache-memory.helper.d.ts +7 -0
- package/dist/boilerplate/helpers/cache-memory.helper.js +65 -0
- package/dist/boilerplate/helpers/cache-memory.helper.js.map +1 -0
- package/dist/boilerplate/helpers/cache-redis.helper.d.ts +7 -0
- package/dist/boilerplate/helpers/cache-redis.helper.js +69 -0
- package/dist/boilerplate/helpers/cache-redis.helper.js.map +1 -0
- package/dist/boilerplate/helpers/config-environment-loader.helper.d.ts +2 -0
- package/dist/boilerplate/helpers/config-environment-loader.helper.js +56 -0
- package/dist/boilerplate/helpers/config-environment-loader.helper.js.map +1 -0
- package/dist/boilerplate/helpers/config-file-loader.helper.d.ts +4 -0
- package/dist/boilerplate/helpers/config-file-loader.helper.js +87 -0
- package/dist/boilerplate/helpers/config-file-loader.helper.js.map +1 -0
- package/dist/boilerplate/helpers/config.helper.d.ts +102 -0
- package/dist/boilerplate/helpers/config.helper.js +32 -0
- package/dist/boilerplate/helpers/config.helper.js.map +1 -0
- package/dist/boilerplate/helpers/errors.helper.d.ts +39 -0
- package/dist/boilerplate/helpers/errors.helper.js +76 -0
- package/dist/boilerplate/helpers/errors.helper.js.map +1 -0
- package/dist/boilerplate/helpers/events.helper.d.ts +3 -0
- package/dist/boilerplate/helpers/events.helper.js +11 -0
- package/dist/boilerplate/helpers/events.helper.js.map +1 -0
- package/dist/boilerplate/helpers/fetch.helper.d.ts +170 -0
- package/dist/boilerplate/helpers/fetch.helper.js +173 -0
- package/dist/boilerplate/helpers/fetch.helper.js.map +1 -0
- package/dist/boilerplate/helpers/index.d.ts +12 -0
- package/dist/boilerplate/helpers/index.js +16 -0
- package/dist/boilerplate/helpers/index.js.map +1 -0
- package/dist/boilerplate/helpers/lifecycle.helper.d.ts +43 -0
- package/dist/boilerplate/helpers/lifecycle.helper.js +13 -0
- package/dist/boilerplate/helpers/lifecycle.helper.js.map +1 -0
- package/dist/boilerplate/helpers/metrics.helper.d.ts +73 -0
- package/dist/boilerplate/helpers/metrics.helper.js +141 -0
- package/dist/boilerplate/helpers/metrics.helper.js.map +1 -0
- package/dist/boilerplate/helpers/testing.helper.d.ts +13 -0
- package/dist/boilerplate/helpers/testing.helper.js +91 -0
- package/dist/boilerplate/helpers/testing.helper.js.map +1 -0
- package/dist/boilerplate/helpers/wiring.helper.d.ts +155 -0
- package/dist/boilerplate/helpers/wiring.helper.js +5 -0
- package/dist/boilerplate/helpers/wiring.helper.js.map +1 -0
- package/dist/boilerplate/index.d.ts +2 -0
- package/dist/boilerplate/index.js +6 -0
- package/dist/boilerplate/index.js.map +1 -0
- package/dist/gotify/extensions/application.extension.d.ts +13 -0
- package/dist/gotify/extensions/application.extension.js +52 -0
- package/dist/gotify/extensions/application.extension.js.map +1 -0
- package/dist/gotify/extensions/client.extension.d.ts +8 -0
- package/dist/gotify/extensions/client.extension.js +38 -0
- package/dist/gotify/extensions/client.extension.js.map +1 -0
- package/dist/gotify/extensions/fetch.extension.d.ts +2 -0
- package/dist/gotify/extensions/fetch.extension.js +14 -0
- package/dist/gotify/extensions/fetch.extension.js.map +1 -0
- package/dist/gotify/extensions/index.d.ts +4 -0
- package/dist/gotify/extensions/index.js +8 -0
- package/dist/gotify/extensions/index.js.map +1 -0
- package/dist/gotify/extensions/message.extension.d.ts +8 -0
- package/dist/gotify/extensions/message.extension.js +37 -0
- package/dist/gotify/extensions/message.extension.js.map +1 -0
- package/dist/gotify/gotify.module.d.ts +29 -0
- package/dist/gotify/gotify.module.js +33 -0
- package/dist/gotify/gotify.module.js.map +1 -0
- package/dist/gotify/helpers/api.d.ts +346 -0
- package/dist/gotify/helpers/api.js +14 -0
- package/dist/gotify/helpers/api.js.map +1 -0
- package/dist/gotify/helpers/events.helper.d.ts +6 -0
- package/dist/gotify/helpers/events.helper.js +5 -0
- package/dist/gotify/helpers/events.helper.js.map +1 -0
- package/dist/gotify/helpers/index.d.ts +2 -0
- package/dist/gotify/helpers/index.js +6 -0
- package/dist/gotify/helpers/index.js.map +1 -0
- package/dist/gotify/index.d.ts +3 -0
- package/dist/gotify/index.js +7 -0
- package/dist/gotify/index.js.map +1 -0
- package/dist/hass/dynamic.d.ts +1126 -0
- package/dist/hass/dynamic.js +153 -0
- package/dist/hass/dynamic.js.map +1 -0
- package/dist/hass/extensions/call-proxy.extension.d.ts +4 -0
- package/dist/hass/extensions/call-proxy.extension.js +88 -0
- package/dist/hass/extensions/call-proxy.extension.js.map +1 -0
- package/dist/hass/extensions/entity-manager.extension.d.ts +61 -0
- package/dist/hass/extensions/entity-manager.extension.js +214 -0
- package/dist/hass/extensions/entity-manager.extension.js.map +1 -0
- package/dist/hass/extensions/fetch-api.extension.d.ts +26 -0
- package/dist/hass/extensions/fetch-api.extension.js +166 -0
- package/dist/hass/extensions/fetch-api.extension.js.map +1 -0
- package/dist/hass/extensions/index.d.ts +5 -0
- package/dist/hass/extensions/index.js +9 -0
- package/dist/hass/extensions/index.js.map +1 -0
- package/dist/hass/extensions/utilities.extension.d.ts +9 -0
- package/dist/hass/extensions/utilities.extension.js +43 -0
- package/dist/hass/extensions/utilities.extension.js.map +1 -0
- package/dist/hass/extensions/websocket-api.extension.d.ts +39 -0
- package/dist/hass/extensions/websocket-api.extension.js +363 -0
- package/dist/hass/extensions/websocket-api.extension.js.map +1 -0
- package/dist/hass/hass.module.d.ts +53 -0
- package/dist/hass/hass.module.js +59 -0
- package/dist/hass/hass.module.js.map +1 -0
- package/dist/hass/helpers/backup.helper.d.ts +11 -0
- package/dist/hass/helpers/backup.helper.js +3 -0
- package/dist/hass/helpers/backup.helper.js.map +1 -0
- package/dist/hass/helpers/constants.helper.d.ts +54 -0
- package/dist/hass/helpers/constants.helper.js +63 -0
- package/dist/hass/helpers/constants.helper.js.map +1 -0
- package/dist/hass/helpers/entity-state.helper.d.ts +45 -0
- package/dist/hass/helpers/entity-state.helper.js +9 -0
- package/dist/hass/helpers/entity-state.helper.js.map +1 -0
- package/dist/hass/helpers/fetch/calendar.d.ts +54 -0
- package/dist/hass/helpers/fetch/calendar.js +3 -0
- package/dist/hass/helpers/fetch/calendar.js.map +1 -0
- package/dist/hass/helpers/fetch/configuration.d.ts +34 -0
- package/dist/hass/helpers/fetch/configuration.js +3 -0
- package/dist/hass/helpers/fetch/configuration.js.map +1 -0
- package/dist/hass/helpers/fetch/index.d.ts +4 -0
- package/dist/hass/helpers/fetch/index.js +8 -0
- package/dist/hass/helpers/fetch/index.js.map +1 -0
- package/dist/hass/helpers/fetch/server-log.d.ts +10 -0
- package/dist/hass/helpers/fetch/server-log.js +20 -0
- package/dist/hass/helpers/fetch/server-log.js.map +1 -0
- package/dist/hass/helpers/fetch/service-list.d.ts +51 -0
- package/dist/hass/helpers/fetch/service-list.js +3 -0
- package/dist/hass/helpers/fetch/service-list.js.map +1 -0
- package/dist/hass/helpers/index.d.ts +7 -0
- package/dist/hass/helpers/index.js +11 -0
- package/dist/hass/helpers/index.js.map +1 -0
- package/dist/hass/helpers/metrics.helper.d.ts +13 -0
- package/dist/hass/helpers/metrics.helper.js +30 -0
- package/dist/hass/helpers/metrics.helper.js.map +1 -0
- package/dist/hass/helpers/utility.helper.d.ts +57 -0
- package/dist/hass/helpers/utility.helper.js +34 -0
- package/dist/hass/helpers/utility.helper.js.map +1 -0
- package/dist/hass/helpers/websocket.helper.d.ts +129 -0
- package/dist/hass/helpers/websocket.helper.js +3 -0
- package/dist/hass/helpers/websocket.helper.js.map +1 -0
- package/dist/hass/index.d.ts +4 -0
- package/dist/hass/index.js +8 -0
- package/dist/hass/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/nexus/entities.extension.d.ts +2 -0
- package/dist/nexus/entities.extension.js +51 -0
- package/dist/nexus/entities.extension.js.map +1 -0
- package/dist/nexus/main.d.ts +9 -0
- package/dist/nexus/main.js +28 -0
- package/dist/nexus/main.js.map +1 -0
- package/dist/synapse/extensions/binary-sensor.extension.d.ts +19 -0
- package/dist/synapse/extensions/binary-sensor.extension.js +84 -0
- package/dist/synapse/extensions/binary-sensor.extension.js.map +1 -0
- package/dist/synapse/extensions/button.extension.d.ts +10 -0
- package/dist/synapse/extensions/button.extension.js +46 -0
- package/dist/synapse/extensions/button.extension.js.map +1 -0
- package/dist/synapse/extensions/index.d.ts +6 -0
- package/dist/synapse/extensions/index.js +10 -0
- package/dist/synapse/extensions/index.js.map +1 -0
- package/dist/synapse/extensions/registry.extension.d.ts +21 -0
- package/dist/synapse/extensions/registry.extension.js +207 -0
- package/dist/synapse/extensions/registry.extension.js.map +1 -0
- package/dist/synapse/extensions/scene.extension.d.ts +9 -0
- package/dist/synapse/extensions/scene.extension.js +37 -0
- package/dist/synapse/extensions/scene.extension.js.map +1 -0
- package/dist/synapse/extensions/sensor.extension.d.ts +25 -0
- package/dist/synapse/extensions/sensor.extension.js +154 -0
- package/dist/synapse/extensions/sensor.extension.js.map +1 -0
- package/dist/synapse/extensions/switch.extension.d.ts +19 -0
- package/dist/synapse/extensions/switch.extension.js +95 -0
- package/dist/synapse/extensions/switch.extension.js.map +1 -0
- package/dist/synapse/helpers/device-class.helper.d.ts +323 -0
- package/dist/synapse/helpers/device-class.helper.js +241 -0
- package/dist/synapse/helpers/device-class.helper.js.map +1 -0
- package/dist/synapse/helpers/index.d.ts +3 -0
- package/dist/synapse/helpers/index.js +7 -0
- package/dist/synapse/helpers/index.js.map +1 -0
- package/dist/synapse/helpers/metrics.helper.d.ts +13 -0
- package/dist/synapse/helpers/metrics.helper.js +30 -0
- package/dist/synapse/helpers/metrics.helper.js.map +1 -0
- package/dist/synapse/helpers/utility.helper.d.ts +1 -0
- package/dist/synapse/helpers/utility.helper.js +3 -0
- package/dist/synapse/helpers/utility.helper.js.map +1 -0
- package/dist/synapse/index.d.ts +3 -0
- package/dist/synapse/index.js +7 -0
- package/dist/synapse/index.js.map +1 -0
- package/dist/synapse/synapse.module.d.ts +29 -0
- package/dist/synapse/synapse.module.js +41 -0
- package/dist/synapse/synapse.module.js.map +1 -0
- package/dist/type-writer/build.extension.d.ts +2 -0
- package/dist/type-writer/build.extension.js +53 -0
- package/dist/type-writer/build.extension.js.map +1 -0
- package/dist/type-writer/main.d.ts +17 -0
- package/dist/type-writer/main.js +36 -0
- package/dist/type-writer/main.js.map +1 -0
- package/dist/type-writer/type-writer.extension.d.ts +2 -0
- package/dist/type-writer/type-writer.extension.js +212 -0
- package/dist/type-writer/type-writer.extension.js.map +1 -0
- package/dist/utilities/extensions/index.d.ts +3 -0
- package/dist/utilities/extensions/index.js +7 -0
- package/dist/utilities/extensions/index.js.map +1 -0
- package/dist/utilities/extensions/is.extension.d.ts +38 -0
- package/dist/utilities/extensions/is.extension.js +104 -0
- package/dist/utilities/extensions/is.extension.js.map +1 -0
- package/dist/utilities/extensions/zcc-testing.extension.d.ts +4 -0
- package/dist/utilities/extensions/zcc-testing.extension.js +9 -0
- package/dist/utilities/extensions/zcc-testing.extension.js.map +1 -0
- package/dist/utilities/extensions/zcc.extension.d.ts +20 -0
- package/dist/utilities/extensions/zcc.extension.js +66 -0
- package/dist/utilities/extensions/zcc.extension.js.map +1 -0
- package/dist/utilities/helpers/async.helper.d.ts +2 -0
- package/dist/utilities/helpers/async.helper.js +26 -0
- package/dist/utilities/helpers/async.helper.js.map +1 -0
- package/dist/utilities/helpers/context.helper.d.ts +7 -0
- package/dist/utilities/helpers/context.helper.js +3 -0
- package/dist/utilities/helpers/context.helper.js.map +1 -0
- package/dist/utilities/helpers/cron.helper.d.ts +87 -0
- package/dist/utilities/helpers/cron.helper.js +92 -0
- package/dist/utilities/helpers/cron.helper.js.map +1 -0
- package/dist/utilities/helpers/extend.helper.d.ts +2 -0
- package/dist/utilities/helpers/extend.helper.js +68 -0
- package/dist/utilities/helpers/extend.helper.js.map +1 -0
- package/dist/utilities/helpers/index.d.ts +5 -0
- package/dist/utilities/helpers/index.js +9 -0
- package/dist/utilities/helpers/index.js.map +1 -0
- package/dist/utilities/helpers/utilities.helper.d.ts +63 -0
- package/dist/utilities/helpers/utilities.helper.js +93 -0
- package/dist/utilities/helpers/utilities.helper.js.map +1 -0
- package/dist/utilities/index.d.ts +2 -0
- package/dist/utilities/index.js +6 -0
- package/dist/utilities/index.js.map +1 -0
- 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,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":";;;AAAA,wDAAwD;AACxD,+BAA4B;AAC5B,+BAA+B;AAE/B,6BAA0C;AA4B1C,IAAI,MAAM,GAAG,IAAA,WAAI,EACf;IACE,KAAK,EAAE,OAAO;IACd,SAAS,EAAE;QACT,OAAO,EAAE;YACP,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,KAAK;YACX,iBAAiB,EAAE,EAAE;YACrB,mBAAmB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;YACrC,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,oBAAoB;YAC5B,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,MAAM;YACpB,aAAa,EAAE,oBAAoB;SACpC;QACD,MAAM,EAAE,aAAa;KACtB;CACF,EACD,WAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CACtB,CAAC;AAEb,MAAM,kBAAkB,GAAG;IACzB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;CACT,CAAC;AAEW,QAAA,aAAa,GAAG,IAAI,GAAG,CAA6B;IAC/D,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClB,CAAC,OAAO,EAAE,KAAK,CAAC;IAChB,CAAC,MAAM,EAAE,OAAO,CAAC;IACjB,CAAC,OAAO,EAAE,SAAS,CAAC;CACrB,CAAC,CAAC;AA8BH,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,SAAS,GAAG,KAAK,CAAC;AAEjB,KAAK,UAAU,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAkB;IAChE,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE9C,SAAS,GAAG,CACV,MAAkB,EAClB,OAAiB,EACjB,GAAG,UAAuC;QAE1C,kDAAkD;QAClD,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,CAAC,OAAiB,EAAE,KAAqB,EAAU,EAAE,CAC5E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEpC,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAU,EAAE;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,OAAO;YACf,6CAA6C;aAC5C,UAAU,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnE,gDAAgD;aAC/C,UAAU,CAAC,OAAO,EAAE,KAAK,CAAA,cAAc,CAAC;YACzC,+CAA+C;aAC9C,UAAU,CAAC,IAAI,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CACrD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACnC;YACD,0CAA0C;aACzC,UAAU,CAAC,IAAI,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CACnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAChC,CAAC;QACJ,uDAAuD;QACvD,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YACrD,OAAO,GAAG,GAAG,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,SAAS,YAAY,CACnB,MAAkB,EAClB,OAAiB,EACjB,GAAG,UAAuC;QAE1C,0CAA0C;QAC1C,IAAI,MAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAI5B,CAAC;YAEF,iEAAiE;YACjE,IAAI,MAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBACvB,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;YACD,MAAM,OAAO,GAAG;gBACd,gBAAgB,CAAC,OAAO,EAAE,qBAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpD,mBAAmB,CAAC,UAAU,CAAC,KAAK,EAAY,CAAC;aAClD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEZ,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;gBACnD,0FAA0F;gBAC1F,8BAA8B;gBAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG;YACd,gBAAgB,CAAC,OAAO,EAAE,qBAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpD,mBAAmB,CAAC,UAAU,CAAC,KAAK,EAAY,CAAC;SAClD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,4CAA4C;IAC5C,cAAO,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;IACrC,cAAO,CAAC,cAAc,CAAC,KAAK,GAAG,EAAE,CAAC;IAClC,cAAO,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/C,cAAO,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;IACvC,cAAO,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;IAErC,IAAI,QAAQ,GAAe,OAAO,CAAC;IACnC,MAAM,SAAS,GAAG,CAAC,KAAiB,EAAE,EAAE,CACtC,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE5D,SAAS,gBAAgB;QACvB,MAAM,GAAG,IAAA,WAAI,EACX;YACE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS;YACnC,SAAS,EAAE;gBACT,OAAO,EAAE;oBACP,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,KAAK;oBACX,iBAAiB,EAAE,EAAE;oBACrB,mBAAmB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;oBACrC,UAAU,EAAE,OAAO;oBACnB,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,oBAAoB;oBAC5B,UAAU,EAAE,KAAK;oBACjB,QAAQ,EAAE,OAAO;oBACjB,UAAU,EAAE,KAAK;oBACjB,UAAU,EAAE,KAAK;oBACjB,YAAY,EAAE,MAAM;oBACpB,aAAa,EAAE,oBAAoB;iBACpC;gBACD,MAAM,EAAE,aAAa;aACtB;SACF,EACD,WAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CACtB,CAAC;IACf,CAAC;IACD,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG;QACV,OAAO,EAAE,CAAC,OAA0B,EAAE,EAAE,CACtC,CAAC;YACC,KAAK,EAAE,CAAC,GAAG,MAAmC,EAAE,EAAE,CAChD,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,OAAmB,EAAE,GAAG,MAAM,CAAC;YACpE,KAAK,EAAE,CAAC,GAAG,MAAmC,EAAE,EAAE,CAChD,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,OAAmB,EAAE,GAAG,MAAM,CAAC;YACpE,KAAK,EAAE,CAAC,GAAG,MAAmC,EAAE,EAAE,CAChD,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,OAAmB,EAAE,GAAG,MAAM,CAAC;YACpE,IAAI,EAAE,CAAC,GAAG,MAAmC,EAAE,EAAE,CAC/C,SAAS,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,OAAmB,EAAE,GAAG,MAAM,CAAC;YAClE,KAAK,EAAE,CAAC,GAAG,MAAmC,EAAE,EAAE,CAChD,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,OAAmB,EAAE,GAAG,MAAM,CAAC;YACpE,IAAI,EAAE,CAAC,GAAG,MAAmC,EAAE,EAAE,CAC/C,SAAS,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,OAAmB,EAAE,GAAG,MAAM,CAAC;SACnE,CAAY;QACf,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM;QAC3B,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC3B,aAAa,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QACjD,WAAW,EAAE,CAAC,KAAiB,EAAE,EAAE;YACjC,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAG,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;IACF,OAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACjB,OAAG,CAAC,YAAY,GAAG,OAAG,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEhE,OAAO,GAAG,CAAC;AACb,CAAC;AAtJD,wBAsJC"}
|
|
@@ -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 {};
|