@venizia/ignis-helpers 0.0.9-1 → 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/README.md +41 -204
- package/dist/common/constants/http.d.ts +8 -1
- package/dist/common/constants/http.d.ts.map +1 -1
- package/dist/common/constants/http.js +6 -0
- package/dist/common/constants/http.js.map +1 -1
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +1 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/redact.d.ts +21 -0
- package/dist/common/redact.d.ts.map +1 -0
- package/dist/common/redact.js +77 -0
- package/dist/common/redact.js.map +1 -0
- package/dist/common/types.d.ts +2 -0
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/types.js +4 -3
- package/dist/common/types.js.map +1 -1
- package/dist/modules/cron/cron.helper.d.ts +9 -1
- package/dist/modules/cron/cron.helper.d.ts.map +1 -1
- package/dist/modules/cron/cron.helper.js +53 -12
- package/dist/modules/cron/cron.helper.js.map +1 -1
- package/dist/modules/env/app-env.d.ts +14 -1
- package/dist/modules/env/app-env.d.ts.map +1 -1
- package/dist/modules/env/app-env.js +24 -3
- package/dist/modules/env/app-env.js.map +1 -1
- package/dist/modules/env/types.d.ts +4 -1
- package/dist/modules/env/types.d.ts.map +1 -1
- package/dist/modules/error/app-error.d.ts +12 -1
- package/dist/modules/error/app-error.d.ts.map +1 -1
- package/dist/modules/error/app-error.js +23 -3
- package/dist/modules/error/app-error.js.map +1 -1
- package/dist/modules/error/index.d.ts +1 -0
- package/dist/modules/error/index.d.ts.map +1 -1
- package/dist/modules/error/index.js +1 -0
- package/dist/modules/error/index.js.map +1 -1
- package/dist/modules/error/message-code.d.ts +18 -0
- package/dist/modules/error/message-code.d.ts.map +1 -0
- package/dist/modules/error/message-code.js +44 -0
- package/dist/modules/error/message-code.js.map +1 -0
- package/dist/modules/index.d.ts +0 -1
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +0 -1
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/logger/default-logger.d.ts.map +1 -1
- package/dist/modules/logger/default-logger.js +4 -3
- package/dist/modules/logger/default-logger.js.map +1 -1
- package/dist/modules/logger/formatters/deep-splat.d.ts +23 -0
- package/dist/modules/logger/formatters/deep-splat.d.ts.map +1 -0
- package/dist/modules/logger/formatters/deep-splat.js +83 -0
- package/dist/modules/logger/formatters/deep-splat.js.map +1 -0
- package/dist/modules/logger/formatters/index.d.ts +2 -0
- package/dist/modules/logger/formatters/index.d.ts.map +1 -0
- package/dist/modules/{testing/common → logger/formatters}/index.js +1 -2
- package/dist/modules/logger/formatters/index.js.map +1 -0
- package/dist/modules/logger/index.d.ts +1 -0
- package/dist/modules/logger/index.d.ts.map +1 -1
- package/dist/modules/logger/index.js +1 -0
- package/dist/modules/logger/index.js.map +1 -1
- package/dist/modules/network/http-request/fetcher/axios-fetcher.d.ts +3 -3
- package/dist/modules/network/http-request/fetcher/axios-fetcher.d.ts.map +1 -1
- package/dist/modules/network/http-request/fetcher/axios-fetcher.js +7 -5
- package/dist/modules/network/http-request/fetcher/axios-fetcher.js.map +1 -1
- package/dist/modules/network/http-request/fetcher/base-fetcher.d.ts +5 -2
- package/dist/modules/network/http-request/fetcher/base-fetcher.d.ts.map +1 -1
- package/dist/modules/network/http-request/fetcher/base-fetcher.js +11 -8
- package/dist/modules/network/http-request/fetcher/base-fetcher.js.map +1 -1
- package/dist/modules/network/http-request/fetcher/index.js +3 -0
- package/dist/modules/network/http-request/fetcher/index.js.map +1 -1
- package/dist/modules/network/http-request/fetcher/node-fetcher.d.ts +4 -1
- package/dist/modules/network/http-request/fetcher/node-fetcher.d.ts.map +1 -1
- package/dist/modules/network/http-request/fetcher/node-fetcher.js +24 -13
- package/dist/modules/network/http-request/fetcher/node-fetcher.js.map +1 -1
- package/dist/modules/network/tcp-socket/base-tcp-client.helper.d.ts +6 -0
- package/dist/modules/network/tcp-socket/base-tcp-client.helper.d.ts.map +1 -1
- package/dist/modules/network/tcp-socket/base-tcp-client.helper.js +24 -19
- package/dist/modules/network/tcp-socket/base-tcp-client.helper.js.map +1 -1
- package/dist/modules/network/tcp-socket/base-tcp-server.helper.d.ts +24 -1
- package/dist/modules/network/tcp-socket/base-tcp-server.helper.d.ts.map +1 -1
- package/dist/modules/network/tcp-socket/base-tcp-server.helper.js +117 -7
- package/dist/modules/network/tcp-socket/base-tcp-server.helper.js.map +1 -1
- package/dist/modules/network/tcp-socket/network-tls-tcp-server.helper.d.ts +4 -2
- package/dist/modules/network/tcp-socket/network-tls-tcp-server.helper.d.ts.map +1 -1
- package/dist/modules/network/tcp-socket/network-tls-tcp-server.helper.js.map +1 -1
- package/dist/modules/network/udp-socket/network-udp-client.helper.d.ts +2 -1
- package/dist/modules/network/udp-socket/network-udp-client.helper.d.ts.map +1 -1
- package/dist/modules/network/udp-socket/network-udp-client.helper.js +51 -13
- package/dist/modules/network/udp-socket/network-udp-client.helper.js.map +1 -1
- package/dist/modules/pool/{helper.d.ts → abstract.d.ts} +3 -23
- package/dist/modules/pool/abstract.d.ts.map +1 -0
- package/dist/modules/pool/{helper.js → abstract.js} +21 -40
- package/dist/modules/pool/abstract.js.map +1 -0
- package/dist/modules/pool/base.d.ts +24 -0
- package/dist/modules/pool/base.d.ts.map +1 -0
- package/dist/modules/pool/base.js +35 -0
- package/dist/modules/pool/base.js.map +1 -0
- package/dist/modules/pool/index.d.ts +2 -1
- package/dist/modules/pool/index.d.ts.map +1 -1
- package/dist/modules/pool/index.js +2 -1
- package/dist/modules/pool/index.js.map +1 -1
- package/dist/modules/pool/types.d.ts +2 -2
- package/dist/modules/pool/types.d.ts.map +1 -1
- package/dist/modules/queue/bullmq/helper.d.ts +10 -1
- package/dist/modules/queue/bullmq/helper.d.ts.map +1 -1
- package/dist/modules/queue/bullmq/helper.js +71 -30
- package/dist/modules/queue/bullmq/helper.js.map +1 -1
- package/dist/modules/queue/common/hook.d.ts +24 -0
- package/dist/modules/queue/common/hook.d.ts.map +1 -0
- package/dist/modules/queue/common/hook.js +36 -0
- package/dist/modules/queue/common/hook.js.map +1 -0
- package/dist/modules/queue/common/index.d.ts +1 -0
- package/dist/modules/queue/common/index.d.ts.map +1 -1
- package/dist/modules/queue/common/index.js +1 -0
- package/dist/modules/queue/common/index.js.map +1 -1
- package/dist/modules/queue/internal/hf/helper.d.ts.map +1 -1
- package/dist/modules/queue/internal/hf/helper.js +1 -1
- package/dist/modules/queue/internal/hf/helper.js.map +1 -1
- package/dist/modules/queue/internal/sequential/helper.d.ts +10 -0
- package/dist/modules/queue/internal/sequential/helper.d.ts.map +1 -1
- package/dist/modules/queue/internal/sequential/helper.js +43 -9
- package/dist/modules/queue/internal/sequential/helper.js.map +1 -1
- package/dist/modules/queue/kafka/base.d.ts +6 -1
- package/dist/modules/queue/kafka/base.d.ts.map +1 -1
- package/dist/modules/queue/kafka/base.js +47 -11
- package/dist/modules/queue/kafka/base.js.map +1 -1
- package/dist/modules/queue/kafka/common/constants.d.ts.map +1 -1
- package/dist/modules/queue/kafka/common/constants.js +0 -18
- package/dist/modules/queue/kafka/common/constants.js.map +1 -1
- package/dist/modules/queue/kafka/common/types.d.ts.map +1 -1
- package/dist/modules/queue/kafka/consumer.d.ts.map +1 -1
- package/dist/modules/queue/kafka/consumer.js +87 -45
- package/dist/modules/queue/kafka/consumer.js.map +1 -1
- package/dist/modules/queue/kafka/producer.d.ts.map +1 -1
- package/dist/modules/queue/kafka/producer.js +3 -12
- package/dist/modules/queue/kafka/producer.js.map +1 -1
- package/dist/modules/queue/kafka/schema/registry.d.ts +1 -1
- package/dist/modules/queue/kafka/schema/registry.d.ts.map +1 -1
- package/dist/modules/queue/kafka/schema/registry.js +2 -2
- package/dist/modules/queue/kafka/schema/registry.js.map +1 -1
- package/dist/modules/queue/mqtt/helper.d.ts +14 -1
- package/dist/modules/queue/mqtt/helper.d.ts.map +1 -1
- package/dist/modules/queue/mqtt/helper.js +62 -12
- package/dist/modules/queue/mqtt/helper.js.map +1 -1
- package/dist/modules/redis/base/abstract.helper.d.ts.map +1 -1
- package/dist/modules/redis/base/abstract.helper.js +21 -12
- package/dist/modules/redis/base/abstract.helper.js.map +1 -1
- package/dist/modules/redis/index.d.ts +3 -2
- package/dist/modules/redis/index.d.ts.map +1 -1
- package/dist/modules/redis/index.js +3 -2
- package/dist/modules/redis/index.js.map +1 -1
- package/dist/modules/redis/utility.d.ts +20 -0
- package/dist/modules/redis/utility.d.ts.map +1 -0
- package/dist/modules/redis/utility.js +66 -0
- package/dist/modules/redis/utility.js.map +1 -0
- package/dist/modules/socket/socket-io/client/helper.d.ts +2 -1
- package/dist/modules/socket/socket-io/client/helper.d.ts.map +1 -1
- package/dist/modules/socket/socket-io/client/helper.js +22 -4
- package/dist/modules/socket/socket-io/client/helper.js.map +1 -1
- package/dist/modules/socket/socket-io/common/types.d.ts +1 -1
- package/dist/modules/socket/socket-io/common/types.d.ts.map +1 -1
- package/dist/modules/socket/socket-io/server/helper.d.ts +10 -2
- package/dist/modules/socket/socket-io/server/helper.d.ts.map +1 -1
- package/dist/modules/socket/socket-io/server/helper.js +78 -43
- package/dist/modules/socket/socket-io/server/helper.js.map +1 -1
- package/dist/modules/socket/websocket/common/types.d.ts +1 -1
- package/dist/modules/socket/websocket/common/types.d.ts.map +1 -1
- package/dist/modules/socket/websocket/emitter/helper.d.ts +0 -1
- package/dist/modules/socket/websocket/emitter/helper.d.ts.map +1 -1
- package/dist/modules/socket/websocket/emitter/helper.js +7 -25
- package/dist/modules/socket/websocket/emitter/helper.js.map +1 -1
- package/dist/modules/socket/websocket/server/helper.d.ts +11 -2
- package/dist/modules/socket/websocket/server/helper.d.ts.map +1 -1
- package/dist/modules/socket/websocket/server/helper.js +77 -67
- package/dist/modules/socket/websocket/server/helper.js.map +1 -1
- package/dist/modules/storage/base.d.ts +34 -12
- package/dist/modules/storage/base.d.ts.map +1 -1
- package/dist/modules/storage/base.js +91 -2
- package/dist/modules/storage/base.js.map +1 -1
- package/dist/modules/storage/bun-s3/helper.d.ts +6 -12
- package/dist/modules/storage/bun-s3/helper.d.ts.map +1 -1
- package/dist/modules/storage/bun-s3/helper.js +17 -56
- package/dist/modules/storage/bun-s3/helper.js.map +1 -1
- package/dist/modules/storage/disk/helper.d.ts +6 -12
- package/dist/modules/storage/disk/helper.d.ts.map +1 -1
- package/dist/modules/storage/disk/helper.js +11 -53
- package/dist/modules/storage/disk/helper.js.map +1 -1
- package/dist/modules/storage/minio/helper.d.ts +6 -12
- package/dist/modules/storage/minio/helper.d.ts.map +1 -1
- package/dist/modules/storage/minio/helper.js +12 -53
- package/dist/modules/storage/minio/helper.js.map +1 -1
- package/dist/modules/storage/types.d.ts +2 -0
- package/dist/modules/storage/types.d.ts.map +1 -1
- package/dist/modules/uid/helper.d.ts.map +1 -1
- package/dist/modules/uid/helper.js +10 -2
- package/dist/modules/uid/helper.js.map +1 -1
- package/dist/modules/worker-thread/base.d.ts +9 -0
- package/dist/modules/worker-thread/base.d.ts.map +1 -1
- package/dist/modules/worker-thread/base.js +46 -10
- package/dist/modules/worker-thread/base.js.map +1 -1
- package/dist/modules/worker-thread/worker-bus.d.ts +9 -0
- package/dist/modules/worker-thread/worker-bus.d.ts.map +1 -1
- package/dist/modules/worker-thread/worker-bus.js +39 -18
- package/dist/modules/worker-thread/worker-bus.js.map +1 -1
- package/dist/modules/worker-thread/worker-pool.d.ts +1 -1
- package/dist/modules/worker-thread/worker-pool.d.ts.map +1 -1
- package/dist/modules/worker-thread/worker-pool.js +14 -6
- package/dist/modules/worker-thread/worker-pool.js.map +1 -1
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.d.ts.map +1 -1
- package/dist/utilities/index.js +1 -0
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/parse.utility.d.ts +5 -12
- package/dist/utilities/parse.utility.d.ts.map +1 -1
- package/dist/utilities/parse.utility.js +49 -110
- package/dist/utilities/parse.utility.js.map +1 -1
- package/dist/utilities/promise.utility.d.ts +18 -5
- package/dist/utilities/promise.utility.d.ts.map +1 -1
- package/dist/utilities/promise.utility.js +39 -17
- package/dist/utilities/promise.utility.js.map +1 -1
- package/dist/utilities/retry.utility.d.ts +97 -0
- package/dist/utilities/retry.utility.d.ts.map +1 -0
- package/dist/utilities/retry.utility.js +245 -0
- package/dist/utilities/retry.utility.js.map +1 -0
- package/package.json +10 -10
- package/dist/modules/pool/helper.d.ts.map +0 -1
- package/dist/modules/pool/helper.js.map +0 -1
- package/dist/modules/testing/base-test-plan.d.ts +0 -29
- package/dist/modules/testing/base-test-plan.d.ts.map +0 -1
- package/dist/modules/testing/base-test-plan.js +0 -73
- package/dist/modules/testing/base-test-plan.js.map +0 -1
- package/dist/modules/testing/common/constants.d.ts +0 -7
- package/dist/modules/testing/common/constants.d.ts.map +0 -1
- package/dist/modules/testing/common/constants.js +0 -10
- package/dist/modules/testing/common/constants.js.map +0 -1
- package/dist/modules/testing/common/index.d.ts +0 -3
- package/dist/modules/testing/common/index.d.ts.map +0 -1
- package/dist/modules/testing/common/index.js.map +0 -1
- package/dist/modules/testing/common/types.d.ts +0 -54
- package/dist/modules/testing/common/types.d.ts.map +0 -1
- package/dist/modules/testing/common/types.js +0 -3
- package/dist/modules/testing/common/types.js.map +0 -1
- package/dist/modules/testing/describe.d.ts +0 -16
- package/dist/modules/testing/describe.d.ts.map +0 -1
- package/dist/modules/testing/describe.js +0 -49
- package/dist/modules/testing/describe.js.map +0 -1
- package/dist/modules/testing/index.d.ts +0 -7
- package/dist/modules/testing/index.d.ts.map +0 -1
- package/dist/modules/testing/index.js +0 -23
- package/dist/modules/testing/index.js.map +0 -1
- package/dist/modules/testing/test-case.d.ts +0 -21
- package/dist/modules/testing/test-case.d.ts.map +0 -1
- package/dist/modules/testing/test-case.js +0 -42
- package/dist/modules/testing/test-case.js.map +0 -1
- package/dist/modules/testing/test-handler.d.ts +0 -27
- package/dist/modules/testing/test-handler.d.ts.map +0 -1
- package/dist/modules/testing/test-handler.js +0 -52
- package/dist/modules/testing/test-handler.js.map +0 -1
- package/dist/modules/testing/test-plan.d.ts +0 -6
- package/dist/modules/testing/test-plan.d.ts.map +0 -1
- package/dist/modules/testing/test-plan.js +0 -11
- package/dist/modules/testing/test-plan.js.map +0 -1
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.CronHelper = void 0;
|
|
7
7
|
const base_1 = require("../../modules/base");
|
|
8
|
+
const promise_utility_1 = require("../../utilities/promise.utility");
|
|
8
9
|
const cron_1 = require("cron");
|
|
9
10
|
const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
|
|
10
11
|
const error_1 = require("../error");
|
|
@@ -18,25 +19,44 @@ class CronHelper extends base_1.BaseHelper {
|
|
|
18
19
|
this.autoStart = autoStart ?? false;
|
|
19
20
|
this.tz = tz;
|
|
20
21
|
this.errorHandler = errorHandler;
|
|
21
|
-
this.
|
|
22
|
+
this.buildInstance();
|
|
22
23
|
}
|
|
23
24
|
static newInstance(opts) {
|
|
24
25
|
return new CronHelper(opts);
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
/** Builds the job. Synchronous, so the constructor still THROWS on a bad cronTime. */
|
|
28
|
+
buildInstance() {
|
|
27
29
|
if (!this.cronTime || (0, isEmpty_1.default)(this.cronTime)) {
|
|
28
30
|
throw error_1.ApplicationError.getError({
|
|
29
31
|
message: '[CronHelper][configure] Invalid cronTime to configure application cron!',
|
|
30
32
|
});
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
try {
|
|
35
|
+
this.instance = cron_1.CronJob.from({
|
|
36
|
+
cronTime: this.cronTime,
|
|
37
|
+
onTick: this.onTick,
|
|
38
|
+
onComplete: this.onCompleted,
|
|
39
|
+
start: this.autoStart,
|
|
40
|
+
errorHandler: this.errorHandler,
|
|
41
|
+
timeZone: this.tz,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
throw error_1.ApplicationError.getError({
|
|
46
|
+
message: `[CronHelper][configure] Invalid cron expression | cronTime: ${this.cronTime} | error: ${error}`,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Async because `CronJob.stop()` resolves only once an IN-FLIGHT tick has finished. Fire-and-
|
|
52
|
+
* forgetting it lets the replacement job start while the old handler is still running - the very
|
|
53
|
+
* double-fire this stop exists to prevent.
|
|
54
|
+
*/
|
|
55
|
+
async configure() {
|
|
56
|
+
if (this.instance) {
|
|
57
|
+
await this.instance.stop();
|
|
58
|
+
}
|
|
59
|
+
this.buildInstance();
|
|
40
60
|
}
|
|
41
61
|
start() {
|
|
42
62
|
if (!this.instance) {
|
|
@@ -45,11 +65,32 @@ class CronHelper extends base_1.BaseHelper {
|
|
|
45
65
|
}
|
|
46
66
|
this.instance.start();
|
|
47
67
|
}
|
|
68
|
+
async stop() {
|
|
69
|
+
if (!this.instance) {
|
|
70
|
+
this.logger.for(this.stop.name).error('Invalid cron instance to stop cronjob!');
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
await this.instance.stop();
|
|
74
|
+
}
|
|
48
75
|
modifyCronTime(opts) {
|
|
49
76
|
const { cronTime, shouldFireOnTick = false } = opts;
|
|
50
|
-
|
|
77
|
+
let nextCronTime;
|
|
78
|
+
try {
|
|
79
|
+
nextCronTime = new cron_1.CronTime(cronTime, this.tz);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
throw error_1.ApplicationError.getError({
|
|
83
|
+
message: `[CronHelper][modifyCronTime] Invalid cron expression | cronTime: ${cronTime} | error: ${error}`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
this.instance.setTime(nextCronTime);
|
|
87
|
+
this.cronTime = cronTime;
|
|
51
88
|
if (shouldFireOnTick) {
|
|
52
|
-
|
|
89
|
+
(0, promise_utility_1.voidExecution)({
|
|
90
|
+
logger: this.logger,
|
|
91
|
+
scope: this.modifyCronTime.name,
|
|
92
|
+
execution: this.instance.fireOnTick(),
|
|
93
|
+
});
|
|
53
94
|
}
|
|
54
95
|
}
|
|
55
96
|
duplicate(opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.helper.js","sourceRoot":"","sources":["../../../src/modules/cron/cron.helper.ts"],"names":[],"mappings":";;;;;;AAAA,yCAA4C;AAC5C,+BAAgE;AAChE,6DAAqC;AACrC,oCAA4C;AAW5C,MAAa,UAAW,SAAQ,iBAAU;IAUxC,YAAY,IAAwB;QAClC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAEhF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,GAAG,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QACpF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"cron.helper.js","sourceRoot":"","sources":["../../../src/modules/cron/cron.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,21 @@ export declare class Environment {
|
|
|
3
3
|
static readonly LOCAL = "local";
|
|
4
4
|
static readonly DEBUG = "debug";
|
|
5
5
|
static readonly DEVELOPMENT = "development";
|
|
6
|
+
/** The abbreviation deployments actually write. The same environment as {@link DEVELOPMENT}. */
|
|
7
|
+
static readonly DEV = "dev";
|
|
8
|
+
static readonly SIT = "sit";
|
|
9
|
+
static readonly UAT = "uat";
|
|
6
10
|
static readonly ALPHA = "alpha";
|
|
7
11
|
static readonly BETA = "beta";
|
|
8
12
|
static readonly STAGING = "staging";
|
|
9
13
|
static readonly PRODUCTION = "production";
|
|
10
14
|
static COMMON_ENVS: Set<string>;
|
|
15
|
+
/**
|
|
16
|
+
* The environments whose users are our own engineers - the only ones an error response may reach
|
|
17
|
+
* carrying a stack trace, a SQL constraint name or a raw driver message. Everything absent from
|
|
18
|
+
* this set, INCLUDING an unrecognized name, is sanitized as production.
|
|
19
|
+
*/
|
|
20
|
+
static DEVELOPMENT_ENVS: Set<string>;
|
|
11
21
|
static get current(): string;
|
|
12
22
|
static is(opts: {
|
|
13
23
|
name: string;
|
|
@@ -20,7 +30,10 @@ export declare class ApplicationEnvironment implements IApplicationEnvironment {
|
|
|
20
30
|
prefix: string;
|
|
21
31
|
envs: Record<string, string | number | undefined>;
|
|
22
32
|
});
|
|
23
|
-
get<ReturnType>(key: string,
|
|
33
|
+
get<ReturnType, BeforeTransformType = unknown>(key: string, opts?: {
|
|
34
|
+
defaultValue?: ReturnType;
|
|
35
|
+
transform?: (value: BeforeTransformType) => ReturnType;
|
|
36
|
+
}): ReturnType;
|
|
24
37
|
set<ValueType>(key: string, value: ValueType): void;
|
|
25
38
|
isDevelopment(): boolean;
|
|
26
39
|
keys(): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-env.d.ts","sourceRoot":"","sources":["../../../src/modules/env/app-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAEhC,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;
|
|
1
|
+
{"version":3,"file":"app-env.d.ts","sourceRoot":"","sources":["../../../src/modules/env/app-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAEhC,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAC5C,gGAAgG;IAChG,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAE5B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IAEpC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAE1C,MAAM,CAAC,WAAW,cAWf;IAEH;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,cAA2E;IAElG,MAAM,KAAK,OAAO,IAAI,MAAM,CAO3B;IAED,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;CAGjC;AAED,qBAAa,sBAAuB,YAAW,uBAAuB;IACpE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAA2B;gBAEhC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAA;KAAE;IAYvF,GAAG,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,EAC3C,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,UAAU,CAAC;QAC1B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,UAAU,CAAC;KACxD,GACA,UAAU;IAWb,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;IAI5C,aAAa;IAKb,IAAI;CAGL;AAED,eAAO,MAAM,sBAAsB,wBAGjC,CAAC;AAEH,eAAO,MAAM,IAAI,wBAAyB,CAAC"}
|
|
@@ -5,6 +5,10 @@ class Environment {
|
|
|
5
5
|
static { this.LOCAL = 'local'; }
|
|
6
6
|
static { this.DEBUG = 'debug'; }
|
|
7
7
|
static { this.DEVELOPMENT = 'development'; }
|
|
8
|
+
/** The abbreviation deployments actually write. The same environment as {@link DEVELOPMENT}. */
|
|
9
|
+
static { this.DEV = 'dev'; }
|
|
10
|
+
static { this.SIT = 'sit'; }
|
|
11
|
+
static { this.UAT = 'uat'; }
|
|
8
12
|
static { this.ALPHA = 'alpha'; }
|
|
9
13
|
static { this.BETA = 'beta'; }
|
|
10
14
|
static { this.STAGING = 'staging'; }
|
|
@@ -13,14 +17,26 @@ class Environment {
|
|
|
13
17
|
this.LOCAL,
|
|
14
18
|
this.DEBUG,
|
|
15
19
|
this.DEVELOPMENT,
|
|
20
|
+
this.DEV,
|
|
21
|
+
this.SIT,
|
|
22
|
+
this.UAT,
|
|
16
23
|
this.ALPHA,
|
|
17
24
|
this.BETA,
|
|
18
25
|
this.STAGING,
|
|
19
26
|
this.PRODUCTION,
|
|
20
27
|
]); }
|
|
28
|
+
/**
|
|
29
|
+
* The environments whose users are our own engineers - the only ones an error response may reach
|
|
30
|
+
* carrying a stack trace, a SQL constraint name or a raw driver message. Everything absent from
|
|
31
|
+
* this set, INCLUDING an unrecognized name, is sanitized as production.
|
|
32
|
+
*/
|
|
33
|
+
static { this.DEVELOPMENT_ENVS = new Set([this.LOCAL, this.DEBUG, this.DEVELOPMENT, this.DEV, this.SIT]); }
|
|
21
34
|
static get current() {
|
|
22
35
|
const { NODE_ENV } = process.env;
|
|
23
|
-
|
|
36
|
+
if (!NODE_ENV) {
|
|
37
|
+
return Environment.DEVELOPMENT;
|
|
38
|
+
}
|
|
39
|
+
return NODE_ENV;
|
|
24
40
|
}
|
|
25
41
|
static is(opts) {
|
|
26
42
|
return this.current === opts.name;
|
|
@@ -38,8 +54,13 @@ class ApplicationEnvironment {
|
|
|
38
54
|
this.arguments[key] = opts.envs[key];
|
|
39
55
|
}
|
|
40
56
|
}
|
|
41
|
-
get(key,
|
|
42
|
-
|
|
57
|
+
get(key, opts) {
|
|
58
|
+
const rs = this.arguments[key];
|
|
59
|
+
if (!opts?.transform) {
|
|
60
|
+
return (rs ?? opts?.defaultValue);
|
|
61
|
+
}
|
|
62
|
+
const transformed = opts.transform(rs);
|
|
63
|
+
return (transformed ?? opts?.defaultValue);
|
|
43
64
|
}
|
|
44
65
|
set(key, value) {
|
|
45
66
|
this.arguments[key] = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-env.js","sourceRoot":"","sources":["../../../src/modules/env/app-env.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;aACN,UAAK,GAAG,OAAO,CAAC;aAChB,UAAK,GAAG,OAAO,CAAC;aAEhB,gBAAW,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"app-env.js","sourceRoot":"","sources":["../../../src/modules/env/app-env.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;aACN,UAAK,GAAG,OAAO,CAAC;aAChB,UAAK,GAAG,OAAO,CAAC;aAEhB,gBAAW,GAAG,aAAa,CAAC;IAC5C,gGAAgG;aAChF,QAAG,GAAG,KAAK,CAAC;aACZ,QAAG,GAAG,KAAK,CAAC;aAEZ,QAAG,GAAG,KAAK,CAAC;aACZ,UAAK,GAAG,OAAO,CAAC;aAChB,SAAI,GAAG,MAAM,CAAC;aACd,YAAO,GAAG,SAAS,CAAC;aAEpB,eAAU,GAAG,YAAY,CAAC;aAEnC,gBAAW,GAAG,IAAI,GAAG,CAAC;QAC3B,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,UAAU;KAChB,CAAC,CAAC;IAEH;;;;OAIG;aACI,qBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAElG,MAAM,KAAK,OAAO;QAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,WAAW,CAAC,WAAW,CAAC;QACjC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,IAAsB;QAC9B,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC;IACpC,CAAC;;AA/CH,kCAgDC;AAED,MAAa,sBAAsB;IAIjC,YAAY,IAA2E;QAF/E,cAAS,GAAwB,EAAE,CAAC;QAG1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,GAAG,CACD,GAAW,EACX,IAGC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,EAAE,IAAI,IAAI,EAAE,YAAY,CAAe,CAAC;QAClD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE,YAAY,CAAe,CAAC;IAC3D,CAAC;IAED,GAAG,CAAY,GAAW,EAAE,KAAgB;QAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,aAAa;QACX,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;QACjC,OAAO,QAAQ,KAAK,aAAa,CAAC;IACpC,CAAC;IAED,IAAI;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF;AA7CD,wDA6CC;AAEY,QAAA,sBAAsB,GAAG,IAAI,sBAAsB,CAAC;IAC/D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,SAAS;IACvD,IAAI,EAAE,OAAO,CAAC,GAAG;CAClB,CAAC,CAAC;AAEU,QAAA,IAAI,GAAG,8BAAsB,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export interface IApplicationEnvironment {
|
|
2
|
-
get<ReturnType>(key: string,
|
|
2
|
+
get<ReturnType, BeforeTransformType = unknown>(key: string, opts?: {
|
|
3
|
+
defaultValue?: ReturnType;
|
|
4
|
+
transform?: (value: BeforeTransformType) => ReturnType;
|
|
5
|
+
}): ReturnType;
|
|
3
6
|
set<ValueType>(key: string, value: ValueType): any;
|
|
4
7
|
}
|
|
5
8
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/env/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/env/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,EAC3C,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,UAAU,CAAC;QAC1B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,UAAU,CAAC;KACxD,GACA,UAAU,CAAC;IACd,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC;CACpD"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { TError } from './types';
|
|
2
2
|
export declare class ApplicationError extends Error {
|
|
3
3
|
statusCode: number;
|
|
4
|
-
messageCode
|
|
4
|
+
messageCode: string;
|
|
5
5
|
extra?: Record<string, unknown>;
|
|
6
6
|
constructor(opts: TError);
|
|
7
7
|
static getError(opts: TError): ApplicationError;
|
|
8
8
|
}
|
|
9
9
|
export declare const getError: (opts: TError) => ApplicationError;
|
|
10
|
+
/**
|
|
11
|
+
* Recognizes an application error by SHAPE, not by class identity.
|
|
12
|
+
*
|
|
13
|
+
* `instanceof ApplicationError` is not enough: an error raised by the DI container carries
|
|
14
|
+
* inversion's class, and inversion's dual CJS/ESM build gives even that class two runtime
|
|
15
|
+
* identities. A CJS consumer and an ESM consumer therefore hold different constructors for the
|
|
16
|
+
* same source. Code that must tell "an error the framework already shaped" from "a raw failure to
|
|
17
|
+
* sanitize" - the search connectors do exactly that before wrapping anything else as a 503 - has
|
|
18
|
+
* to test the shape instead, or a real 404 arrives at the caller as a bogus 503.
|
|
19
|
+
*/
|
|
20
|
+
export declare const isApplicationError: (error: unknown) => error is ApplicationError;
|
|
10
21
|
//# sourceMappingURL=app-error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-error.d.ts","sourceRoot":"","sources":["../../../src/modules/error/app-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-error.d.ts","sourceRoot":"","sources":["../../../src/modules/error/app-error.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEpB,IAAI,EAAE,MAAM;IAUxB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;CAG7B;AAED,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,qBAEpC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,gBAE5D,CAAC"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getError = exports.ApplicationError = void 0;
|
|
6
|
+
exports.isApplicationError = exports.getError = exports.ApplicationError = void 0;
|
|
7
|
+
const omit_1 = __importDefault(require("lodash/omit"));
|
|
8
|
+
const message_code_1 = require("./message-code");
|
|
4
9
|
class ApplicationError extends Error {
|
|
5
10
|
constructor(opts) {
|
|
6
|
-
const { message, messageCode, statusCode = 400,
|
|
11
|
+
const { message, messageCode, statusCode = 400, ...rest } = opts;
|
|
7
12
|
super(message);
|
|
8
13
|
this.statusCode = statusCode;
|
|
9
|
-
this.messageCode = messageCode;
|
|
14
|
+
this.messageCode = message_code_1.MessageCode.resolve(messageCode);
|
|
15
|
+
const extra = (0, omit_1.default)(rest, ['name']);
|
|
10
16
|
this.extra = Object.keys(extra).length > 0 ? extra : undefined;
|
|
11
17
|
}
|
|
12
18
|
static getError(opts) {
|
|
@@ -18,4 +24,18 @@ const getError = (opts) => {
|
|
|
18
24
|
return new ApplicationError(opts);
|
|
19
25
|
};
|
|
20
26
|
exports.getError = getError;
|
|
27
|
+
/**
|
|
28
|
+
* Recognizes an application error by SHAPE, not by class identity.
|
|
29
|
+
*
|
|
30
|
+
* `instanceof ApplicationError` is not enough: an error raised by the DI container carries
|
|
31
|
+
* inversion's class, and inversion's dual CJS/ESM build gives even that class two runtime
|
|
32
|
+
* identities. A CJS consumer and an ESM consumer therefore hold different constructors for the
|
|
33
|
+
* same source. Code that must tell "an error the framework already shaped" from "a raw failure to
|
|
34
|
+
* sanitize" - the search connectors do exactly that before wrapping anything else as a 503 - has
|
|
35
|
+
* to test the shape instead, or a real 404 arrives at the caller as a bogus 503.
|
|
36
|
+
*/
|
|
37
|
+
const isApplicationError = (error) => {
|
|
38
|
+
return error instanceof Error && typeof error.statusCode === 'number';
|
|
39
|
+
};
|
|
40
|
+
exports.isApplicationError = isApplicationError;
|
|
21
41
|
//# sourceMappingURL=app-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../src/modules/error/app-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../src/modules/error/app-error.ts"],"names":[],"mappings":";;;;;;AACA,uDAA+B;AAC/B,iDAA6C;AAG7C,MAAa,gBAAiB,SAAQ,KAAK;IAKzC,YAAY,IAAY;QACtB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,0BAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAA,cAAI,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACF;AAlBD,4CAkBC;AAEM,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;IACvC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEF;;;;;;;;;GASG;AACI,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAA6B,EAAE;IAC9E,OAAO,KAAK,YAAY,KAAK,IAAI,OAAQ,KAAiB,CAAC,UAAU,KAAK,QAAQ,CAAC;AACrF,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/error/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/error/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
|
|
@@ -15,5 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./app-error"), exports);
|
|
18
|
+
__exportStar(require("./message-code"), exports);
|
|
18
19
|
__exportStar(require("./types"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/error/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/error/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,iDAA+B;AAC/B,0CAAwB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare class MessageCode {
|
|
2
|
+
static readonly SEPARATOR = ".";
|
|
3
|
+
static readonly SEGMENT_PATTERN: RegExp;
|
|
4
|
+
static readonly MIN_SEGMENTS = 2;
|
|
5
|
+
static readonly DEFAULT = "core.system_error";
|
|
6
|
+
/**
|
|
7
|
+
* Builds a code from its segments. Throws on a malformed one - codes are declared at module scope,
|
|
8
|
+
* so a bad code fails the process at import instead of shipping dead into production.
|
|
9
|
+
*/
|
|
10
|
+
static build(opts: {
|
|
11
|
+
parts: Array<string>;
|
|
12
|
+
}): string;
|
|
13
|
+
/** True when `code` is well-formed. Cheap guard for a code that arrives from outside. */
|
|
14
|
+
static isValid(code: string): boolean;
|
|
15
|
+
/** Normalizes an absent or empty code to {@link DEFAULT} - an empty string is not a code. */
|
|
16
|
+
static resolve(code?: string): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=message-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-code.d.ts","sourceRoot":"","sources":["../../../src/modules/error/message-code.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,SAAS,OAAO;IAChC,MAAM,CAAC,QAAQ,CAAC,eAAe,SAA8B;IAC7D,MAAM,CAAC,QAAQ,CAAC,YAAY,KAAK;IACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,uBAAuB;IAE9C;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,MAAM;IAsBpD,yFAAyF;IACzF,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASrC,6FAA6F;IAC7F,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;CAGtC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageCode = void 0;
|
|
4
|
+
const app_error_1 = require("./app-error");
|
|
5
|
+
class MessageCode {
|
|
6
|
+
static { this.SEPARATOR = '.'; }
|
|
7
|
+
static { this.SEGMENT_PATTERN = /^[a-z0-9]+(_[a-z0-9]+)*$/; }
|
|
8
|
+
static { this.MIN_SEGMENTS = 2; }
|
|
9
|
+
static { this.DEFAULT = 'core.system_error'; }
|
|
10
|
+
/**
|
|
11
|
+
* Builds a code from its segments. Throws on a malformed one - codes are declared at module scope,
|
|
12
|
+
* so a bad code fails the process at import instead of shipping dead into production.
|
|
13
|
+
*/
|
|
14
|
+
static build(opts) {
|
|
15
|
+
const { parts } = opts;
|
|
16
|
+
if (parts.length < this.MIN_SEGMENTS) {
|
|
17
|
+
throw (0, app_error_1.getError)({
|
|
18
|
+
messageCode: 'core.message_code.invalid_segment_count',
|
|
19
|
+
message: `[MessageCode][build] A code needs at least ${this.MIN_SEGMENTS} segments (namespace + reason) | Got: ${JSON.stringify(parts)}`,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
for (const segment of parts) {
|
|
23
|
+
if (!this.SEGMENT_PATTERN.test(segment)) {
|
|
24
|
+
throw (0, app_error_1.getError)({
|
|
25
|
+
messageCode: 'core.message_code.invalid_segment_format',
|
|
26
|
+
message: `[MessageCode][build] Invalid segment '${segment}' | Expected lower snake_case (a-z, 0-9, '_') | Full: ${JSON.stringify(parts)}`,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return parts.join(this.SEPARATOR).toLowerCase();
|
|
31
|
+
}
|
|
32
|
+
/** True when `code` is well-formed. Cheap guard for a code that arrives from outside. */
|
|
33
|
+
static isValid(code) {
|
|
34
|
+
const segments = code.split(this.SEPARATOR);
|
|
35
|
+
return (segments.length >= this.MIN_SEGMENTS &&
|
|
36
|
+
segments.every(segment => this.SEGMENT_PATTERN.test(segment)));
|
|
37
|
+
}
|
|
38
|
+
/** Normalizes an absent or empty code to {@link DEFAULT} - an empty string is not a code. */
|
|
39
|
+
static resolve(code) {
|
|
40
|
+
return code?.length ? code.toLowerCase() : this.DEFAULT.toLowerCase();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.MessageCode = MessageCode;
|
|
44
|
+
//# sourceMappingURL=message-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-code.js","sourceRoot":"","sources":["../../../src/modules/error/message-code.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAEvC,MAAa,WAAW;aACN,cAAS,GAAG,GAAG,CAAC;aAChB,oBAAe,GAAG,0BAA0B,CAAC;aAC7C,iBAAY,GAAG,CAAC,CAAC;aACjB,YAAO,GAAG,mBAAmB,CAAC;IAE9C;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAA8B;QACzC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEvB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,IAAA,oBAAQ,EAAC;gBACb,WAAW,EAAE,yCAAyC;gBACtD,OAAO,EAAE,8CAA8C,IAAI,CAAC,YAAY,yCAAyC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;aACzI,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAA,oBAAQ,EAAC;oBACb,WAAW,EAAE,0CAA0C;oBACvD,OAAO,EAAE,yCAAyC,OAAO,yDAAyD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;iBAC1I,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,CAAC;IAED,yFAAyF;IACzF,MAAM,CAAC,OAAO,CAAC,IAAY;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,OAAO,CACL,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY;YACpC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED,6FAA6F;IAC7F,MAAM,CAAC,OAAO,CAAC,IAAa;QAC1B,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACxE,CAAC;;AA7CH,kCA8CC"}
|
package/dist/modules/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AAEvB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AAEvB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC"}
|
package/dist/modules/index.js
CHANGED
|
@@ -25,7 +25,6 @@ __exportStar(require("./queue"), exports);
|
|
|
25
25
|
__exportStar(require("./redis"), exports);
|
|
26
26
|
__exportStar(require("./socket"), exports);
|
|
27
27
|
__exportStar(require("./storage"), exports);
|
|
28
|
-
__exportStar(require("./testing"), exports);
|
|
29
28
|
__exportStar(require("./uid"), exports);
|
|
30
29
|
__exportStar(require("./worker-thread"), exports);
|
|
31
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AAEvB,2CAAyB;AACzB,wCAAsB;AACtB,0CAAwB;AACxB,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AACvB,0CAAwB;AACxB,0CAAwB;AACxB,2CAAyB;AACzB,4CAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AAEvB,2CAAyB;AACzB,wCAAsB;AACtB,0CAAwB;AACxB,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AACvB,0CAAwB;AACxB,0CAAwB;AACxB,2CAAyB;AACzB,4CAA0B;AAC1B,wCAAsB;AACtB,kDAAgC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-logger.d.ts","sourceRoot":"","sources":["../../../src/modules/logger/default-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"default-logger.d.ts","sourceRoot":"","sources":["../../../src/modules/logger/default-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,2BAA2B,CAAC;AAEnC,OAAO,EAAkB,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAatE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAmC;IAE7D,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,eAAO,MAAM,yBAAyB,GAAI,MAAM;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,2BAShE,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,MAAM;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,2BAalE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,2BAgBjF,CAAC;AAEF,eAAO,MAAM,uBAAuB,wBAA+C,CAAC;AAEpF,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAChD,SAAS,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAChD,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5D,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,CAAC,EAAE,qBAAqB,CAAC;YAC7B,KAAK,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;SACzC,CAAC;QACF,KAAK,EAAE;YACL,IAAI,CAAC,EAAE,qBAAqB,CAAC;YAC7B,KAAK,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;SACzC,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,kBAAkB,GAAI,MAAM,oBAAoB,mBAyF5D,CAAC;AAWF,eAAO,MAAM,iBAAiB,gBAK5B,CAAC"}
|
|
@@ -6,11 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.applicationLogger = exports.defineCustomLogger = exports.applicationLogFormatter = exports.defineLogFormatter = exports.definePrettyLoggerFormatter = exports.defineJsonLoggerFormatter = exports.LoggerFormats = void 0;
|
|
7
7
|
const constants_1 = require("../../common/constants");
|
|
8
8
|
const parse_utility_1 = require("../../utilities/parse.utility");
|
|
9
|
+
const ignis_inversion_1 = require("@venizia/ignis-inversion");
|
|
9
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
11
|
const winston_1 = __importDefault(require("winston"));
|
|
11
12
|
require("winston-daily-rotate-file");
|
|
13
|
+
const formatters_1 = require("./formatters/");
|
|
12
14
|
const transports_1 = require("./transports");
|
|
13
|
-
const ignis_inversion_1 = require("@venizia/ignis-inversion");
|
|
14
15
|
const LOGGER_FOLDER_PATH = process.env.APP_ENV_LOGGER_FOLDER_PATH ?? './';
|
|
15
16
|
const LOGGER_PREFIX = constants_1.Defaults.APPLICATION_NAME;
|
|
16
17
|
const LOGGER_FORMAT = process.env.APP_ENV_LOGGER_FORMAT ?? 'text';
|
|
@@ -29,11 +30,11 @@ class LoggerFormats {
|
|
|
29
30
|
}
|
|
30
31
|
exports.LoggerFormats = LoggerFormats;
|
|
31
32
|
const defineJsonLoggerFormatter = (opts) => {
|
|
32
|
-
return f.combine(f.label({ label: opts.label }), f.timestamp(),
|
|
33
|
+
return f.combine(f.label({ label: opts.label }), f.timestamp(), (0, formatters_1.deepSplat)(), f.errors({ stack: true }), f.json(), f.colorize());
|
|
33
34
|
};
|
|
34
35
|
exports.defineJsonLoggerFormatter = defineJsonLoggerFormatter;
|
|
35
36
|
const definePrettyLoggerFormatter = (opts) => {
|
|
36
|
-
return f.combine(f.simple(), f.label({ label: opts.label }), f.timestamp(),
|
|
37
|
+
return f.combine(f.simple(), f.label({ label: opts.label }), f.timestamp(), (0, formatters_1.deepSplat)(), f.align(), f.colorize(), f.printf(({ level, message, label, timestamp }) => {
|
|
37
38
|
return `${timestamp} [${label}] ${level}: ${message}`;
|
|
38
39
|
}), f.errors({ stack: true }));
|
|
39
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-logger.js","sourceRoot":"","sources":["../../../src/modules/logger/default-logger.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA8C;AAE9C,6DAAgD;AAChD,0DAA6B;AAC7B,sDAA8B;AAC9B,qCAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"default-logger.js","sourceRoot":"","sources":["../../../src/modules/logger/default-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import util from 'node:util';
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
/**
|
|
4
|
+
* Formats a log message the way `util.format` does - except that an object passed to `%s` is
|
|
5
|
+
* inspected {@link DEFAULT_INSPECT_DEPTH} levels deep instead of Node's hard-coded 0.
|
|
6
|
+
*
|
|
7
|
+
* Node forces `depth: 0` on `%s` (see `formatWithOptionsInternal`), which no inspect option can
|
|
8
|
+
* override: `logger.error('Error: %s', error)` therefore prints `extra: [Object]` and drops the
|
|
9
|
+
* nested `cause` of every wrapped driver error. Pre-inspecting the object into a string first is the
|
|
10
|
+
* only way to widen it, and it must be done per-placeholder: doing it to ALL arguments would turn
|
|
11
|
+
* `%j` into a JSON-quoted string instead of an object.
|
|
12
|
+
*/
|
|
13
|
+
export declare const formatLogMessage: (opts: {
|
|
14
|
+
message: string;
|
|
15
|
+
args: Array<unknown>;
|
|
16
|
+
inspectOptions?: util.InspectOptions;
|
|
17
|
+
}) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Drop-in replacement for `winston.format.splat()` that formats through {@link formatLogMessage}.
|
|
20
|
+
* Every transport reads `info.message`, so widening it here widens console, file and dgram at once.
|
|
21
|
+
*/
|
|
22
|
+
export declare const deepSplat: winston.Logform.FormatWrap;
|
|
23
|
+
//# sourceMappingURL=deep-splat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-splat.d.ts","sourceRoot":"","sources":["../../../../src/modules/logger/formatters/deep-splat.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,SAAS,CAAC;AAkD9B;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrB,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC;CACtC,KAAG,MAiBH,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,4BASpB,CAAC"}
|