@tsed/terminus 8.0.0-alpha.4 → 8.0.0-alpha.6

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/package.json CHANGED
@@ -1,18 +1,17 @@
1
1
  {
2
2
  "name": "@tsed/terminus",
3
3
  "description": "Adds graceful shutdown and Kubernetes readiness / liveness checks for any HTTP applications.",
4
- "type": "commonjs",
5
- "version": "8.0.0-alpha.4",
4
+ "type": "module",
5
+ "version": "8.0.0-alpha.6",
6
6
  "author": "Romain Lenzotti",
7
7
  "source": "./src/index.ts",
8
- "main": "./lib/cjs/index.js",
8
+ "main": "./lib/esm/index.js",
9
9
  "module": "./lib/esm/index.js",
10
10
  "typings": "./lib/types/index.d.ts",
11
11
  "exports": {
12
12
  ".": {
13
13
  "types": "./lib/types/index.d.ts",
14
14
  "import": "./lib/esm/index.js",
15
- "require": "./lib/cjs/index.js",
16
15
  "default": "./lib/cjs/index.js"
17
16
  }
18
17
  },
@@ -29,22 +28,22 @@
29
28
  },
30
29
  "devDependencies": {
31
30
  "@godaddy/terminus": "^4.12.1",
32
- "@tsed/barrels": "8.0.0-alpha.4",
33
- "@tsed/common": "8.0.0-alpha.4",
34
- "@tsed/core": "8.0.0-alpha.4",
35
- "@tsed/di": "8.0.0-alpha.4",
36
- "@tsed/schema": "8.0.0-alpha.4",
37
- "@tsed/typescript": "8.0.0-alpha.4",
31
+ "@tsed/barrels": "8.0.0-alpha.6",
32
+ "@tsed/common": "8.0.0-alpha.6",
33
+ "@tsed/core": "8.0.0-alpha.6",
34
+ "@tsed/di": "8.0.0-alpha.6",
35
+ "@tsed/schema": "8.0.0-alpha.6",
36
+ "@tsed/typescript": "8.0.0-alpha.6",
38
37
  "eslint": "^8.57.0",
39
38
  "typescript": "4.9.5",
40
39
  "vitest": "2.0.4"
41
40
  },
42
41
  "peerDependencies": {
43
42
  "@godaddy/terminus": "^4.7.1",
44
- "@tsed/common": "8.0.0-alpha.4",
45
- "@tsed/core": "8.0.0-alpha.4",
46
- "@tsed/di": "8.0.0-alpha.4",
47
- "@tsed/schema": "8.0.0-alpha.4"
43
+ "@tsed/common": "8.0.0-alpha.6",
44
+ "@tsed/core": "8.0.0-alpha.6",
45
+ "@tsed/di": "8.0.0-alpha.6",
46
+ "@tsed/schema": "8.0.0-alpha.6"
48
47
  },
49
48
  "peerDependenciesMeta": {
50
49
  "@godaddy/terminus": {
@@ -1,127 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TerminusModule = void 0;
4
- const tslib_1 = require("tslib");
5
- const terminus_1 = require("@godaddy/terminus");
6
- const di_1 = require("@tsed/di");
7
- const schema_1 = require("@tsed/schema");
8
- const http_1 = tslib_1.__importDefault(require("http"));
9
- const https_1 = tslib_1.__importDefault(require("https"));
10
- let TerminusModule = class TerminusModule {
11
- $onInit() {
12
- this.mount();
13
- }
14
- getConfiguration() {
15
- const { path, ...props } = this.settings;
16
- return {
17
- logger: (event, error) => this.injector.logger.info({
18
- event: event.toUpperCase(),
19
- error_message: error.message
20
- }),
21
- healthChecks: this.getHealths(),
22
- onSignal: this.createEmitter("$onSignal"),
23
- onShutdown: this.createEmitter("$onShutdown"),
24
- beforeShutdown: this.createEmitter("$beforeShutdown"),
25
- onSendFailureDuringShutdown: this.createEmitter("$onSendFailureDuringShutdown"),
26
- ...props
27
- };
28
- }
29
- $logRoutes(routes) {
30
- return Promise.resolve([
31
- ...routes,
32
- {
33
- url: this.basePath,
34
- method: "GET",
35
- name: `TerminusModule.dispatch()`
36
- },
37
- ...this.getAll("health").map(({ provider, propertyKey, options }) => {
38
- const path = this.getPath(provider, options.name);
39
- return {
40
- method: "GET",
41
- name: `${provider.className}.${propertyKey}()`,
42
- url: path
43
- };
44
- })
45
- ]);
46
- }
47
- mount() {
48
- const terminusConfig = this.getConfiguration();
49
- if (this.httpServer) {
50
- (0, terminus_1.createTerminus)(this.httpServer, terminusConfig);
51
- }
52
- if (this.httpsServer) {
53
- (0, terminus_1.createTerminus)(this.httpsServer, terminusConfig);
54
- }
55
- }
56
- getAll(name) {
57
- return this.injector.getProviders().flatMap((provider) => {
58
- const metadata = provider.store.get(`terminus:${name}`);
59
- if (metadata) {
60
- return Object.entries(metadata).map(([propertyKey, options]) => {
61
- return {
62
- provider,
63
- propertyKey,
64
- options
65
- };
66
- });
67
- }
68
- return [];
69
- });
70
- }
71
- getHealths() {
72
- const subHealths = this.getAll("health").reduce((healths, { provider, propertyKey, options: { name } }) => {
73
- const instance = this.injector.get(provider.token);
74
- const callback = async (...args) => {
75
- const result = await instance[propertyKey](...args);
76
- return { [name]: result };
77
- };
78
- let path = this.getPath(provider, name);
79
- return {
80
- ...healths,
81
- [path]: callback
82
- };
83
- }, {});
84
- const healths = {
85
- ...subHealths,
86
- [this.basePath]: (state) => {
87
- const promises = Object.entries(subHealths).map(([path, callback]) => callback(state));
88
- return Promise.all(promises);
89
- }
90
- };
91
- return healths;
92
- }
93
- getPath(provider, name) {
94
- let path = (0, schema_1.concatPath)(provider.path, name);
95
- return path.includes("health") ? path : (0, schema_1.concatPath)(path, this.basePath);
96
- }
97
- createEmitter(name) {
98
- return (...args) => {
99
- return this.injector.emit(name, ...args);
100
- };
101
- }
102
- };
103
- tslib_1.__decorate([
104
- (0, di_1.Constant)("terminus", {}),
105
- tslib_1.__metadata("design:type", Object)
106
- ], TerminusModule.prototype, "settings", void 0);
107
- tslib_1.__decorate([
108
- (0, di_1.Constant)("terminus.path", "/health"),
109
- tslib_1.__metadata("design:type", String)
110
- ], TerminusModule.prototype, "basePath", void 0);
111
- tslib_1.__decorate([
112
- (0, di_1.Inject)(),
113
- tslib_1.__metadata("design:type", di_1.InjectorService)
114
- ], TerminusModule.prototype, "injector", void 0);
115
- tslib_1.__decorate([
116
- (0, di_1.Inject)(http_1.default.Server),
117
- tslib_1.__metadata("design:type", Object)
118
- ], TerminusModule.prototype, "httpServer", void 0);
119
- tslib_1.__decorate([
120
- (0, di_1.Inject)(https_1.default.Server),
121
- tslib_1.__metadata("design:type", Object)
122
- ], TerminusModule.prototype, "httpsServer", void 0);
123
- TerminusModule = tslib_1.__decorate([
124
- (0, di_1.Module)()
125
- ], TerminusModule);
126
- exports.TerminusModule = TerminusModule;
127
- //# sourceMappingURL=TerminusModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TerminusModule.js","sourceRoot":"","sources":["../../src/TerminusModule.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Health = void 0;
4
- const core_1 = require("@tsed/core");
5
- /**
6
- * Create a readiness / liveness checks.
7
- *
8
- * ```ts
9
- * import { Health } from "@tsed/terminus";
10
- *
11
- * @Controller("/mongo")
12
- * class MongoCtrl {
13
- * @Health("/health")
14
- * health() {
15
- * // Here check the mongo health
16
- * return Promise.resolve();
17
- * }
18
- * }
19
- *
20
- * @param name
21
- * @decorator
22
- * @terminus
23
- */
24
- function Health(name) {
25
- return (target, propertyKey) => {
26
- core_1.Store.from(target).merge(`terminus:health`, {
27
- [propertyKey]: { name }
28
- });
29
- };
30
- }
31
- exports.Health = Health;
32
- //# sourceMappingURL=health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/decorators/health.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAEjC;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,MAAM,CAAC,IAAY;IACjC,OAAO,CAAW,MAAc,EAAE,WAAmB,EAAE,EAAE;QACvD,YAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC1C,CAAC,WAAW,CAAC,EAAE,EAAC,IAAI,EAAC;SACtB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAND,wBAMC"}
package/lib/cjs/index.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- /**
5
- * @file Automatically generated by @tsed/barrels.
6
- */
7
- tslib_1.__exportStar(require("./decorators/health.js"), exports);
8
- tslib_1.__exportStar(require("./interfaces/interfaces.js"), exports);
9
- tslib_1.__exportStar(require("./interfaces/TerminusSettings.js"), exports);
10
- tslib_1.__exportStar(require("./TerminusModule.js"), exports);
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,iEAAuC;AACvC,qEAA2C;AAC3C,2EAAiD;AACjD,8DAAoC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=TerminusSettings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TerminusSettings.js","sourceRoot":"","sources":["../../../src/interfaces/TerminusSettings.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/interfaces.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }
@@ -1,37 +0,0 @@
1
- import type { PlatformRouteDetails } from "@tsed/common";
2
- import { OnInit } from "@tsed/di";
3
- export declare class TerminusModule implements OnInit {
4
- private settings;
5
- private basePath;
6
- private injector;
7
- private httpServer;
8
- private httpsServer;
9
- $onInit(): void;
10
- getConfiguration(): {
11
- caseInsensitive?: boolean | undefined;
12
- timeout?: number | undefined;
13
- signal?: string | undefined;
14
- signals?: string[] | undefined;
15
- sendFailuresDuringShutdown?: boolean | undefined;
16
- statusOk?: number | undefined;
17
- statusOkResponse?: Record<string, unknown> | undefined;
18
- statusError?: number | undefined;
19
- statusErrorResponse?: Record<string, unknown> | undefined;
20
- useExit0?: boolean | undefined;
21
- logger: (event: string, error: any) => any;
22
- headers?: {
23
- [key: string]: string;
24
- } | undefined;
25
- healthChecks: Record<string, any>;
26
- onSignal: (...args: any[]) => Promise<void>;
27
- onShutdown: (...args: any[]) => Promise<void>;
28
- beforeShutdown: (...args: any[]) => Promise<void>;
29
- onSendFailureDuringShutdown: (...args: any[]) => Promise<void>;
30
- };
31
- $logRoutes(routes: PlatformRouteDetails[]): Promise<PlatformRouteDetails[]>;
32
- private mount;
33
- private getAll;
34
- private getHealths;
35
- private getPath;
36
- private createEmitter;
37
- }
@@ -1,20 +0,0 @@
1
- /**
2
- * Create a readiness / liveness checks.
3
- *
4
- * ```ts
5
- * import { Health } from "@tsed/terminus";
6
- *
7
- * @Controller("/mongo")
8
- * class MongoCtrl {
9
- * @Health("/health")
10
- * health() {
11
- * // Here check the mongo health
12
- * return Promise.resolve();
13
- * }
14
- * }
15
- *
16
- * @param name
17
- * @decorator
18
- * @terminus
19
- */
20
- export declare function Health(name: string): MethodDecorator;
@@ -1,7 +0,0 @@
1
- /**
2
- * @file Automatically generated by @tsed/barrels.
3
- */
4
- export * from "./decorators/health.js";
5
- export * from "./interfaces/interfaces.js";
6
- export * from "./interfaces/TerminusSettings.js";
7
- export * from "./TerminusModule.js";
@@ -1,4 +0,0 @@
1
- import { TerminusOptions } from "@godaddy/terminus";
2
- export type TerminusSettings = Omit<TerminusOptions, "healthChecks" | "onSignal" | "onSendFailureDuringShutdown" | "onShutdown" | "beforeShutdown" | "onSigterm"> & {
3
- path?: string;
4
- };
@@ -1,8 +0,0 @@
1
- import { TerminusSettings } from "./TerminusSettings.js";
2
- declare global {
3
- namespace TsED {
4
- interface Configuration {
5
- terminus: TerminusSettings;
6
- }
7
- }
8
- }