@revisium/endpoint 0.9.0 → 0.9.1
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/dist/app.module.d.ts +2 -0
- package/dist/app.module.js +26 -0
- package/dist/app.module.js.map +1 -0
- package/dist/endpoint-microservice/endpoint-microservice.module.js +2 -0
- package/dist/endpoint-microservice/endpoint-microservice.module.js.map +1 -1
- package/dist/endpoint-microservice/graphql/graphql-endpoint.controller.js +2 -0
- package/dist/endpoint-microservice/graphql/graphql-endpoint.controller.js.map +1 -1
- package/dist/endpoint-microservice/graphql/graphql-endpoint.service.d.ts +5 -3
- package/dist/endpoint-microservice/graphql/graphql-endpoint.service.js +6 -2
- package/dist/endpoint-microservice/graphql/graphql-endpoint.service.js.map +1 -1
- package/dist/endpoint-microservice/graphql/graphql.module.js +2 -1
- package/dist/endpoint-microservice/graphql/graphql.module.js.map +1 -1
- package/dist/endpoint-microservice/metrics/graphql/constants.d.ts +3 -0
- package/dist/endpoint-microservice/metrics/graphql/constants.js +7 -0
- package/dist/endpoint-microservice/metrics/graphql/constants.js.map +1 -0
- package/dist/endpoint-microservice/metrics/graphql/graphql-metrics.plugin.d.ts +7 -0
- package/dist/endpoint-microservice/metrics/graphql/graphql-metrics.plugin.js +54 -0
- package/dist/endpoint-microservice/metrics/graphql/graphql-metrics.plugin.js.map +1 -0
- package/dist/endpoint-microservice/metrics/graphql/graphql-metrics.service.d.ts +15 -0
- package/dist/endpoint-microservice/metrics/graphql/graphql-metrics.service.js +49 -0
- package/dist/endpoint-microservice/metrics/graphql/graphql-metrics.service.js.map +1 -0
- package/dist/endpoint-microservice/metrics/metrics.module.d.ts +2 -0
- package/dist/endpoint-microservice/metrics/metrics.module.js +32 -0
- package/dist/endpoint-microservice/metrics/metrics.module.js.map +1 -0
- package/dist/endpoint-microservice/metrics/rest/constants.d.ts +3 -0
- package/dist/endpoint-microservice/metrics/rest/constants.js +7 -0
- package/dist/endpoint-microservice/metrics/rest/constants.js.map +1 -0
- package/dist/endpoint-microservice/metrics/rest/rest-metrics.interceptor.d.ts +9 -0
- package/dist/endpoint-microservice/metrics/rest/rest-metrics.interceptor.js +53 -0
- package/dist/endpoint-microservice/metrics/rest/rest-metrics.interceptor.js.map +1 -0
- package/dist/endpoint-microservice/metrics/rest/rest-metrics.service.d.ts +15 -0
- package/dist/endpoint-microservice/metrics/rest/rest-metrics.service.js +52 -0
- package/dist/endpoint-microservice/metrics/rest/rest-metrics.service.js.map +1 -0
- package/dist/endpoint-microservice/metrics/utils.d.ts +1 -0
- package/dist/endpoint-microservice/metrics/utils.js +9 -0
- package/dist/endpoint-microservice/metrics/utils.js.map +1 -0
- package/dist/endpoint-microservice/metrics-api/metrics-api.module.d.ts +4 -0
- package/dist/endpoint-microservice/metrics-api/metrics-api.module.js +29 -0
- package/dist/endpoint-microservice/metrics-api/metrics-api.module.js.map +1 -0
- package/dist/endpoint-microservice/metrics-api/metrics-enabled.guard.d.ts +7 -0
- package/dist/endpoint-microservice/metrics-api/metrics-enabled.guard.js +28 -0
- package/dist/endpoint-microservice/metrics-api/metrics-enabled.guard.js.map +1 -0
- package/dist/endpoint-microservice/metrics-api/metrics.controller.d.ts +7 -0
- package/dist/endpoint-microservice/metrics-api/metrics.controller.js +49 -0
- package/dist/endpoint-microservice/metrics-api/metrics.controller.js.map +1 -0
- package/dist/endpoint-microservice/restapi/restapi-endpoint.controller.js +2 -0
- package/dist/endpoint-microservice/restapi/restapi-endpoint.controller.js.map +1 -1
- package/dist/endpoint-microservice/restapi/restapi.module.js +2 -1
- package/dist/endpoint-microservice/restapi/restapi.module.js.map +1 -1
- package/dist/endpoint-microservice/restapi/swagger-endpoint.controller.js +2 -0
- package/dist/endpoint-microservice/restapi/swagger-endpoint.controller.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.AppModule = void 0;
|
10
|
+
const common_1 = require("@nestjs/common");
|
11
|
+
const config_1 = require("@nestjs/config");
|
12
|
+
const endpoint_microservice_module_1 = require("./endpoint-microservice/endpoint-microservice.module");
|
13
|
+
const metrics_api_module_1 = require("./endpoint-microservice/metrics-api/metrics-api.module");
|
14
|
+
let AppModule = class AppModule {
|
15
|
+
};
|
16
|
+
exports.AppModule = AppModule;
|
17
|
+
exports.AppModule = AppModule = __decorate([
|
18
|
+
(0, common_1.Module)({
|
19
|
+
imports: [
|
20
|
+
config_1.ConfigModule.forRoot(),
|
21
|
+
endpoint_microservice_module_1.EndpointMicroserviceModule,
|
22
|
+
metrics_api_module_1.MetricsApiModule,
|
23
|
+
],
|
24
|
+
})
|
25
|
+
], AppModule);
|
26
|
+
//# sourceMappingURL=app.module.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,uGAAoG;AACpG,+FAA4F;AASrF,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAPrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY,CAAC,OAAO,EAAE;YACtB,yDAA0B;YAC1B,qCAAgB;SACjB;KACF,CAAC;GACW,SAAS,CAAG"}
|
@@ -20,6 +20,7 @@ const internal_core_api_service_1 = require("./core-api/internal-core-api.servic
|
|
20
20
|
const database_module_1 = require("./database/database.module");
|
21
21
|
const endpoint_listener_controller_1 = require("./endpoint-listener.controller");
|
22
22
|
const graphql_module_1 = require("./graphql/graphql.module");
|
23
|
+
const metrics_module_1 = require("./metrics/metrics.module");
|
23
24
|
const restapi_module_1 = require("./restapi/restapi.module");
|
24
25
|
let EndpointMicroserviceModule = class EndpointMicroserviceModule {
|
25
26
|
constructor(commandBus, internalCoreApiService) {
|
@@ -48,6 +49,7 @@ exports.EndpointMicroserviceModule = EndpointMicroserviceModule = __decorate([
|
|
48
49
|
graphql_module_1.GraphqlModule,
|
49
50
|
restapi_module_1.RestapiModule,
|
50
51
|
core_api_module_1.CoreApiModule,
|
52
|
+
metrics_module_1.MetricsModule,
|
51
53
|
],
|
52
54
|
controllers: [endpoint_listener_controller_1.EndpointListenerController],
|
53
55
|
providers: [...handlers_1.ENDPOINT_COMMANDS],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"endpoint-microservice.module.js","sourceRoot":"","sources":["../../src/endpoint-microservice/endpoint-microservice.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAgE;AAChE,2CAA8C;AAC9C,uCAAsD;AACtD,kDAAgF;AAChF,yFAA2G;AAC3G,gEAAmF;AACnF,oFAAsG;AACtG,gEAAoF;AACpF,iFAAoG;AACpG,6DAAiF;AACjF,6DAAiF;
|
1
|
+
{"version":3,"file":"endpoint-microservice.module.js","sourceRoot":"","sources":["../../src/endpoint-microservice/endpoint-microservice.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAgE;AAChE,2CAA8C;AAC9C,uCAAsD;AACtD,kDAAgF;AAChF,yFAA2G;AAC3G,gEAAmF;AACnF,oFAAsG;AACtG,gEAAoF;AACpF,iFAAoG;AACpG,6DAAiF;AACjF,6DAAiF;AACjF,6DAAiF;AAe1E,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrC,YACmB,UAAsB,EACtB,sBAA8C;QAD9C,eAAU,GAAV,UAAU,CAAY;QACtB,2BAAsB,GAAtB,sBAAsB,CAAwB;IAC9D,CAAC;IAEG,KAAK,CAAC,sBAAsB;QAEjC,YAAY,CAAC,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,kDAAsB,EAAE,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAjBY,gEAA0B;qCAA1B,0BAA0B;IAbtC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,iBAAU;YACV,qBAAY,CAAC,OAAO,EAAE;YACtB,gCAAc;YACd,8BAAa;YACb,8BAAa;YACb,+BAAa;YACb,8BAAa;SACd;QACD,WAAW,EAAE,CAAC,yDAA0B,CAAC;QACzC,SAAS,EAAE,CAAC,GAAG,4BAAiB,CAAC;KAClC,CAAC;qCAG+B,iBAAU;QACE,kDAAsB;GAHtD,0BAA0B,CAiBtC"}
|
@@ -16,6 +16,7 @@ exports.GraphqlEndpointController = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
17
17
|
const swagger_1 = require("@nestjs/swagger");
|
18
18
|
const graphql_endpoint_service_1 = require("./graphql-endpoint.service");
|
19
|
+
const rest_metrics_interceptor_1 = require("../metrics/rest/rest-metrics.interceptor");
|
19
20
|
let GraphqlEndpointController = class GraphqlEndpointController {
|
20
21
|
constructor(endpointService) {
|
21
22
|
this.endpointService = endpointService;
|
@@ -78,6 +79,7 @@ __decorate([
|
|
78
79
|
__metadata("design:returntype", void 0)
|
79
80
|
], GraphqlEndpointController.prototype, "post", null);
|
80
81
|
exports.GraphqlEndpointController = GraphqlEndpointController = __decorate([
|
82
|
+
(0, common_1.UseInterceptors)(rest_metrics_interceptor_1.RestMetricsInterceptor),
|
81
83
|
(0, swagger_1.ApiExcludeController)(),
|
82
84
|
(0, common_1.Controller)('endpoint/graphql/:organizationId/:projectName/:branchName/:postfix'),
|
83
85
|
__metadata("design:paramtypes", [graphql_endpoint_service_1.GraphqlEndpointService])
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graphql-endpoint.controller.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql-endpoint.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
1
|
+
{"version":3,"file":"graphql-endpoint.controller.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql-endpoint.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAUwB;AACxB,6CAAuD;AAEvD,yEAAoG;AACpG,uFAAyG;AAOlG,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAA6B,eAAuC;QAAvC,oBAAe,GAAf,eAAe,CAAwB;IAAG,CAAC;IAGxE,GAAG,CACwB,cAAsB,EACzB,WAAmB,EACpB,UAAkB,EAEvC,OAAe,EAEf,GAAY,EACL,GAAa,EACZ,IAAkB;QAE1B,IAAI,CAAC,GAAG,CAAC;YACP,cAAc;YACd,WAAW;YACX,UAAU;YACV,OAAO;YACP,GAAG;YACH,GAAG;YACH,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CACuB,cAAsB,EACzB,WAAmB,EACpB,UAAkB,EAEvC,OAA2B,EACpB,GAAY,EACZ,GAAa,EACZ,IAAkB;QAE1B,IAAI,CAAC,GAAG,CAAC;YACP,cAAc;YACd,WAAW;YACX,UAAU;YACV,OAAO;YACP,GAAG;YACH,GAAG;YACH,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAEO,GAAG,CAAC,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,OAAO,EACP,GAAG,EACH,GAAG,EACH,IAAI,GASL;QACC,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CACnE,cAAc,EACd,WAAW,EACX,UAAU,EACV,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,MAAM,CAAC,mBAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,CAAC;QAED,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;CACF,CAAA;AA9EY,8DAAyB;AAIpC;IADC,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,cAAK,EAAC,gBAAgB,CAAC,CAAA;IACvB,WAAA,IAAA,cAAK,EAAC,aAAa,CAAC,CAAA;IACpB,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;IACnB,WAAA,IAAA,cAAK,EAAC,SAAS,CAAC,CAAA;IAEhB,WAAA,IAAA,YAAG,GAAE,CAAA;IAEL,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,aAAI,GAAE,CAAA;;;;oDAWR;AAGD;IADC,IAAA,aAAI,GAAE;IAEJ,WAAA,IAAA,cAAK,EAAC,gBAAgB,CAAC,CAAA;IACvB,WAAA,IAAA,cAAK,EAAC,aAAa,CAAC,CAAA;IACpB,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;IACnB,WAAA,IAAA,cAAK,EAAC,SAAS,CAAC,CAAA;IAEhB,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,aAAI,GAAE,CAAA;;;;qDAWR;oCA9CU,yBAAyB;IALrC,IAAA,wBAAe,EAAC,iDAAsB,CAAC;IACvC,IAAA,8BAAoB,GAAE;IACtB,IAAA,mBAAU,EACT,oEAAoE,CACrE;qCAE+C,iDAAsB;GADzD,yBAAyB,CA8ErC"}
|
@@ -2,13 +2,15 @@
|
|
2
2
|
import { QueryBus } from '@nestjs/cqrs';
|
3
3
|
import { RequestHandler } from 'express';
|
4
4
|
import { PrismaService } from 'src/endpoint-microservice/database/prisma.service';
|
5
|
+
import { GraphqlMetricsPlugin } from 'src/endpoint-microservice/metrics/graphql/graphql-metrics.plugin';
|
5
6
|
export declare class GraphqlEndpointService {
|
6
|
-
private prisma;
|
7
|
-
private queryBus;
|
7
|
+
private readonly prisma;
|
8
|
+
private readonly queryBus;
|
9
|
+
private readonly graphqlMetricsPlugin;
|
8
10
|
private readonly logger;
|
9
11
|
private map;
|
10
12
|
private startedEndpointIds;
|
11
|
-
constructor(prisma: PrismaService, queryBus: QueryBus);
|
13
|
+
constructor(prisma: PrismaService, queryBus: QueryBus, graphqlMetricsPlugin: GraphqlMetricsPlugin);
|
12
14
|
getEndpointMiddleware(organizationId: string, projectName: string, branchName: string, postfix: string): RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
13
15
|
existEndpoint(endpointId: string): boolean;
|
14
16
|
stopEndpoint(endpointId: string): Promise<void>;
|
@@ -18,11 +18,13 @@ const common_1 = require("@nestjs/common");
|
|
18
18
|
const cqrs_1 = require("@nestjs/cqrs");
|
19
19
|
const prisma_service_1 = require("../database/prisma.service");
|
20
20
|
const impl_1 = require("./queries/impl");
|
21
|
+
const graphql_metrics_plugin_1 = require("../metrics/graphql/graphql-metrics.plugin");
|
21
22
|
const parseHeaders_1 = require("../shared/utils/parseHeaders");
|
22
23
|
let GraphqlEndpointService = GraphqlEndpointService_1 = class GraphqlEndpointService {
|
23
|
-
constructor(prisma, queryBus) {
|
24
|
+
constructor(prisma, queryBus, graphqlMetricsPlugin) {
|
24
25
|
this.prisma = prisma;
|
25
26
|
this.queryBus = queryBus;
|
27
|
+
this.graphqlMetricsPlugin = graphqlMetricsPlugin;
|
26
28
|
this.logger = new common_1.Logger(GraphqlEndpointService_1.name);
|
27
29
|
this.map = new Map();
|
28
30
|
this.startedEndpointIds = [];
|
@@ -76,6 +78,7 @@ let GraphqlEndpointService = GraphqlEndpointService_1 = class GraphqlEndpointSer
|
|
76
78
|
schema: graphqlSchema,
|
77
79
|
introspection: true,
|
78
80
|
plugins: [
|
81
|
+
this.graphqlMetricsPlugin,
|
79
82
|
(0, default_1.ApolloServerPluginLandingPageLocalDefault)({
|
80
83
|
document: `query ExampleQuery {
|
81
84
|
${table} {
|
@@ -133,6 +136,7 @@ exports.GraphqlEndpointService = GraphqlEndpointService;
|
|
133
136
|
exports.GraphqlEndpointService = GraphqlEndpointService = GraphqlEndpointService_1 = __decorate([
|
134
137
|
(0, common_1.Injectable)(),
|
135
138
|
__metadata("design:paramtypes", [prisma_service_1.PrismaService,
|
136
|
-
cqrs_1.QueryBus
|
139
|
+
cqrs_1.QueryBus,
|
140
|
+
graphql_metrics_plugin_1.GraphqlMetricsPlugin])
|
137
141
|
], GraphqlEndpointService);
|
138
142
|
//# sourceMappingURL=graphql-endpoint.service.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graphql-endpoint.service.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql-endpoint.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA8C;AAC9C,uEAAsG;AACtG,sDAA4D;AAC5D,2CAAoD;AACpD,uCAAwC;AAGxC,+DAAkF;AAClF,yCAAuF;AACvF,+DAAmF;AAG5E,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IASjC,
|
1
|
+
{"version":3,"file":"graphql-endpoint.service.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql-endpoint.service.ts"],"names":[],"mappings":"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"}
|
@@ -15,12 +15,13 @@ const handlers_1 = require("./commands/handlers");
|
|
15
15
|
const graphql_endpoint_controller_1 = require("./graphql-endpoint.controller");
|
16
16
|
const graphql_endpoint_service_1 = require("./graphql-endpoint.service");
|
17
17
|
const handlers_2 = require("./queries/handlers");
|
18
|
+
const metrics_module_1 = require("../metrics/metrics.module");
|
18
19
|
let GraphqlModule = class GraphqlModule {
|
19
20
|
};
|
20
21
|
exports.GraphqlModule = GraphqlModule;
|
21
22
|
exports.GraphqlModule = GraphqlModule = __decorate([
|
22
23
|
(0, common_1.Module)({
|
23
|
-
imports: [cqrs_1.CqrsModule, database_module_1.DatabaseModule, core_api_module_1.CoreApiModule],
|
24
|
+
imports: [cqrs_1.CqrsModule, database_module_1.DatabaseModule, core_api_module_1.CoreApiModule, metrics_module_1.MetricsModule],
|
24
25
|
providers: [graphql_endpoint_service_1.GraphqlEndpointService, ...handlers_1.GRAPHQL_COMMANDS, ...handlers_2.GRAPHQL_QUERIES],
|
25
26
|
controllers: [graphql_endpoint_controller_1.GraphqlEndpointController],
|
26
27
|
})
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graphql.module.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA0C;AAC1C,iEAAmF;AACnF,iEAAoF;AACpF,kDAAuF;AACvF,+EAA0G;AAC1G,yEAAoG;AACpG,iDAAqF;
|
1
|
+
{"version":3,"file":"graphql.module.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA0C;AAC1C,iEAAmF;AACnF,iEAAoF;AACpF,kDAAuF;AACvF,+EAA0G;AAC1G,yEAAoG;AACpG,iDAAqF;AACrF,8DAAiF;AAO1E,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IALzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,iBAAU,EAAE,gCAAc,EAAE,+BAAa,EAAE,8BAAa,CAAC;QACnE,SAAS,EAAE,CAAC,iDAAsB,EAAE,GAAG,2BAAgB,EAAE,GAAG,0BAAe,CAAC;QAC5E,WAAW,EAAE,CAAC,uDAAyB,CAAC;KACzC,CAAC;GACW,aAAa,CAAG"}
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export declare const GRAPHQL_ENDPOINT_REQUEST_DURATION_SECONDS = "graphql_endpoint_request_duration_seconds";
|
2
|
+
export declare const GRAPHQL_ENDPOINT_DID_RESOLVE_OPERATION_TOTAL = "graphql_endpoint_did_resolve_operation_total";
|
3
|
+
export declare const GRAPHQL_ENDPOINT_DID_ENCOUNTER_ERRORS_TOTAL = "graphql_endpoint_did_encounter_errors_total";
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.GRAPHQL_ENDPOINT_DID_ENCOUNTER_ERRORS_TOTAL = exports.GRAPHQL_ENDPOINT_DID_RESOLVE_OPERATION_TOTAL = exports.GRAPHQL_ENDPOINT_REQUEST_DURATION_SECONDS = void 0;
|
4
|
+
exports.GRAPHQL_ENDPOINT_REQUEST_DURATION_SECONDS = 'graphql_endpoint_request_duration_seconds';
|
5
|
+
exports.GRAPHQL_ENDPOINT_DID_RESOLVE_OPERATION_TOTAL = 'graphql_endpoint_did_resolve_operation_total';
|
6
|
+
exports.GRAPHQL_ENDPOINT_DID_ENCOUNTER_ERRORS_TOTAL = 'graphql_endpoint_did_encounter_errors_total';
|
7
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/metrics/graphql/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,yCAAyC,GACpD,2CAA2C,CAAC;AAEjC,QAAA,4CAA4C,GACvD,8CAA8C,CAAC;AAEpC,QAAA,2CAA2C,GACtD,6CAA6C,CAAC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { ApolloServerPlugin, BaseContext, GraphQLRequestListener } from '@apollo/server';
|
2
|
+
import { GraphqlMetricsService } from 'src/endpoint-microservice/metrics/graphql/graphql-metrics.service';
|
3
|
+
export declare class GraphqlMetricsPlugin implements ApolloServerPlugin {
|
4
|
+
private readonly graphqlMetrics;
|
5
|
+
constructor(graphqlMetrics: GraphqlMetricsService);
|
6
|
+
requestDidStart(): Promise<GraphQLRequestListener<BaseContext>>;
|
7
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.GraphqlMetricsPlugin = void 0;
|
13
|
+
const common_1 = require("@nestjs/common");
|
14
|
+
const process = require("node:process");
|
15
|
+
const graphql_metrics_service_1 = require("./graphql-metrics.service");
|
16
|
+
const utils_1 = require("../utils");
|
17
|
+
let GraphqlMetricsPlugin = class GraphqlMetricsPlugin {
|
18
|
+
constructor(graphqlMetrics) {
|
19
|
+
this.graphqlMetrics = graphqlMetrics;
|
20
|
+
}
|
21
|
+
async requestDidStart() {
|
22
|
+
const startAt = process.hrtime();
|
23
|
+
return {
|
24
|
+
didResolveOperation: async (requestContext) => {
|
25
|
+
this.graphqlMetrics.didResolveOperation(getLabels(requestContext));
|
26
|
+
},
|
27
|
+
willSendResponse: async (requestContext) => {
|
28
|
+
this.graphqlMetrics.requestDurationSeconds({
|
29
|
+
...getLabels(requestContext),
|
30
|
+
result: 'true',
|
31
|
+
}, (0, utils_1.getDurationInSeconds)(startAt));
|
32
|
+
},
|
33
|
+
didEncounterErrors: async (requestContext) => {
|
34
|
+
const labels = getLabels(requestContext);
|
35
|
+
this.graphqlMetrics.didEncounterErrors(labels);
|
36
|
+
this.graphqlMetrics.requestDurationSeconds({
|
37
|
+
...labels,
|
38
|
+
result: 'false',
|
39
|
+
}, (0, utils_1.getDurationInSeconds)(startAt));
|
40
|
+
},
|
41
|
+
};
|
42
|
+
}
|
43
|
+
};
|
44
|
+
exports.GraphqlMetricsPlugin = GraphqlMetricsPlugin;
|
45
|
+
exports.GraphqlMetricsPlugin = GraphqlMetricsPlugin = __decorate([
|
46
|
+
(0, common_1.Injectable)(),
|
47
|
+
__metadata("design:paramtypes", [graphql_metrics_service_1.GraphqlMetricsService])
|
48
|
+
], GraphqlMetricsPlugin);
|
49
|
+
function getLabels(context) {
|
50
|
+
return {
|
51
|
+
operation: context.operation?.operation,
|
52
|
+
};
|
53
|
+
}
|
54
|
+
//# sourceMappingURL=graphql-metrics.plugin.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"graphql-metrics.plugin.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/metrics/graphql/graphql-metrics.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,2CAA4C;AAC5C,wCAAwC;AACxC,uEAA0G;AAC1G,oCAA+E;AAGxE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAA6B,cAAqC;QAArC,mBAAc,GAAd,cAAc,CAAuB;IAAG,CAAC;IAEtE,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAEjC,OAAO;YACL,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;gBAC5C,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;YACrE,CAAC;YAED,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;gBACzC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CACxC;oBACE,GAAG,SAAS,CAAC,cAAc,CAAC;oBAC5B,MAAM,EAAE,MAAM;iBACf,EACD,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAC9B,CAAC;YACJ,CAAC;YAED,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;gBAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;gBAEzC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAE/C,IAAI,CAAC,cAAc,CAAC,sBAAsB,CACxC;oBACE,GAAG,MAAM;oBACT,MAAM,EAAE,OAAO;iBAChB,EACD,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAC9B,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AApCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAEkC,+CAAqB;GADvD,oBAAoB,CAoChC;AAED,SAAS,SAAS,CAAC,OAA8C;IAC/D,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS;KACxC,CAAC;AACJ,CAAC"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
type Labels = {
|
2
|
+
operation?: string;
|
3
|
+
};
|
4
|
+
export declare class GraphqlMetricsService {
|
5
|
+
private readonly requestDurationSecondsHistogram;
|
6
|
+
private readonly didResolveOperationTotalCounter;
|
7
|
+
private readonly didEncounterErrorsTotalCounter;
|
8
|
+
constructor();
|
9
|
+
requestDurationSeconds(labels: Labels & {
|
10
|
+
result?: 'true' | 'false';
|
11
|
+
}, durationInSeconds: number): void;
|
12
|
+
didResolveOperation(labels: Labels): void;
|
13
|
+
didEncounterErrors(labels: Labels): void;
|
14
|
+
}
|
15
|
+
export {};
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.GraphqlMetricsService = void 0;
|
13
|
+
const common_1 = require("@nestjs/common");
|
14
|
+
const prom_client_1 = require("prom-client");
|
15
|
+
const constants_1 = require("./constants");
|
16
|
+
let GraphqlMetricsService = class GraphqlMetricsService {
|
17
|
+
constructor() {
|
18
|
+
this.requestDurationSecondsHistogram = new prom_client_1.Histogram({
|
19
|
+
name: constants_1.GRAPHQL_ENDPOINT_REQUEST_DURATION_SECONDS,
|
20
|
+
help: 'Duration of GraphQL requests in seconds',
|
21
|
+
labelNames: ['operationName', 'operation', 'result'],
|
22
|
+
});
|
23
|
+
this.didResolveOperationTotalCounter = new prom_client_1.Counter({
|
24
|
+
name: constants_1.GRAPHQL_ENDPOINT_DID_RESOLVE_OPERATION_TOTAL,
|
25
|
+
help: 'Total number of successfully resolved GraphQL operations',
|
26
|
+
labelNames: ['operationName', 'operation'],
|
27
|
+
});
|
28
|
+
this.didEncounterErrorsTotalCounter = new prom_client_1.Counter({
|
29
|
+
name: constants_1.GRAPHQL_ENDPOINT_DID_ENCOUNTER_ERRORS_TOTAL,
|
30
|
+
help: 'Total number of errors encountered during GraphQL request processing',
|
31
|
+
labelNames: ['operationName', 'operation'],
|
32
|
+
});
|
33
|
+
}
|
34
|
+
requestDurationSeconds(labels, durationInSeconds) {
|
35
|
+
this.requestDurationSecondsHistogram.observe(labels, durationInSeconds);
|
36
|
+
}
|
37
|
+
didResolveOperation(labels) {
|
38
|
+
this.didResolveOperationTotalCounter.inc(labels);
|
39
|
+
}
|
40
|
+
didEncounterErrors(labels) {
|
41
|
+
this.didEncounterErrorsTotalCounter.inc(labels);
|
42
|
+
}
|
43
|
+
};
|
44
|
+
exports.GraphqlMetricsService = GraphqlMetricsService;
|
45
|
+
exports.GraphqlMetricsService = GraphqlMetricsService = __decorate([
|
46
|
+
(0, common_1.Injectable)(),
|
47
|
+
__metadata("design:paramtypes", [])
|
48
|
+
], GraphqlMetricsService);
|
49
|
+
//# sourceMappingURL=graphql-metrics.service.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"graphql-metrics.service.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/metrics/graphql/graphql-metrics.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAiD;AACjD,2CAI6D;AAOtD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAmBhC;QAlBiB,oCAA+B,GAAG,IAAI,uBAAS,CAAC;YAC/D,IAAI,EAAE,qDAAyC;YAC/C,IAAI,EAAE,yCAAyC;YAC/C,UAAU,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,CAAC;SACrD,CAAC,CAAC;QAEc,oCAA+B,GAAG,IAAI,qBAAO,CAAC;YAC7D,IAAI,EAAE,wDAA4C;YAClD,IAAI,EAAE,0DAA0D;YAChE,UAAU,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;SAC3C,CAAC,CAAC;QAEc,mCAA8B,GAAG,IAAI,qBAAO,CAAC;YAC5D,IAAI,EAAE,uDAA2C;YACjD,IAAI,EAAE,sEAAsE;YAC5E,UAAU,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;SAC3C,CAAC,CAAC;IAEY,CAAC;IAET,sBAAsB,CAC3B,MAEC,EACD,iBAAyB;QAEzB,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1E,CAAC;IAEM,mBAAmB,CAAC,MAAc;QACvC,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAEM,kBAAkB,CAAC,MAAc;QACtC,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AArCY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;;GACA,qBAAqB,CAqCjC"}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.MetricsModule = void 0;
|
10
|
+
const common_1 = require("@nestjs/common");
|
11
|
+
const config_1 = require("@nestjs/config");
|
12
|
+
const database_module_1 = require("../database/database.module");
|
13
|
+
const graphql_metrics_plugin_1 = require("./graphql/graphql-metrics.plugin");
|
14
|
+
const graphql_metrics_service_1 = require("./graphql/graphql-metrics.service");
|
15
|
+
const rest_metrics_interceptor_1 = require("./rest/rest-metrics.interceptor");
|
16
|
+
const rest_metrics_service_1 = require("./rest/rest-metrics.service");
|
17
|
+
let MetricsModule = class MetricsModule {
|
18
|
+
};
|
19
|
+
exports.MetricsModule = MetricsModule;
|
20
|
+
exports.MetricsModule = MetricsModule = __decorate([
|
21
|
+
(0, common_1.Module)({
|
22
|
+
imports: [database_module_1.DatabaseModule, config_1.ConfigModule],
|
23
|
+
providers: [
|
24
|
+
graphql_metrics_service_1.GraphqlMetricsService,
|
25
|
+
graphql_metrics_plugin_1.GraphqlMetricsPlugin,
|
26
|
+
rest_metrics_service_1.RestMetricsService,
|
27
|
+
rest_metrics_interceptor_1.RestMetricsInterceptor,
|
28
|
+
],
|
29
|
+
exports: [graphql_metrics_plugin_1.GraphqlMetricsPlugin, rest_metrics_service_1.RestMetricsService, rest_metrics_interceptor_1.RestMetricsInterceptor],
|
30
|
+
})
|
31
|
+
], MetricsModule);
|
32
|
+
//# sourceMappingURL=metrics.module.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"metrics.module.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/metrics/metrics.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,iEAAoF;AACpF,6EAAwG;AACxG,+EAA0G;AAC1G,8EAAyG;AACzG,sEAAiG;AAY1F,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IAVzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,gCAAc,EAAE,qBAAY,CAAC;QACvC,SAAS,EAAE;YACT,+CAAqB;YACrB,6CAAoB;YACpB,yCAAkB;YAClB,iDAAsB;SACvB;QACD,OAAO,EAAE,CAAC,6CAAoB,EAAE,yCAAkB,EAAE,iDAAsB,CAAC;KAC5E,CAAC;GACW,aAAa,CAAG"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.REST_REQUEST_ERRORS_TOTAL = exports.REST_REQUESTS_TOTAL = exports.REST_REQUEST_DURATION_SECONDS = void 0;
|
4
|
+
exports.REST_REQUEST_DURATION_SECONDS = 'rest_request_duration_seconds';
|
5
|
+
exports.REST_REQUESTS_TOTAL = 'rest_requests_total';
|
6
|
+
exports.REST_REQUEST_ERRORS_TOTAL = 'rest_requests_errors_total';
|
7
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/metrics/rest/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAEhE,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAE5C,QAAA,yBAAyB,GAAG,4BAA4B,CAAC"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
2
|
+
import { Observable } from 'rxjs';
|
3
|
+
import { RestMetricsService } from 'src/endpoint-microservice/metrics/rest/rest-metrics.service';
|
4
|
+
export declare class RestMetricsInterceptor implements NestInterceptor {
|
5
|
+
private readonly metricsService;
|
6
|
+
constructor(metricsService: RestMetricsService);
|
7
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
8
|
+
metricsProcess(context: ExecutionContext, startAt: [number, number]): void;
|
9
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.RestMetricsInterceptor = void 0;
|
13
|
+
const common_1 = require("@nestjs/common");
|
14
|
+
const rxjs_1 = require("rxjs");
|
15
|
+
const rest_metrics_service_1 = require("./rest-metrics.service");
|
16
|
+
const utils_1 = require("../utils");
|
17
|
+
let RestMetricsInterceptor = class RestMetricsInterceptor {
|
18
|
+
constructor(metricsService) {
|
19
|
+
this.metricsService = metricsService;
|
20
|
+
}
|
21
|
+
intercept(context, next) {
|
22
|
+
const startAt = process.hrtime();
|
23
|
+
return next.handle().pipe((0, rxjs_1.finalize)(() => {
|
24
|
+
this.metricsProcess(context, startAt);
|
25
|
+
}));
|
26
|
+
}
|
27
|
+
metricsProcess(context, startAt) {
|
28
|
+
const labels = getLabels(context);
|
29
|
+
this.metricsService.requestDurationSeconds(labels, (0, utils_1.getDurationInSeconds)(startAt));
|
30
|
+
this.metricsService.requestTotal(labels);
|
31
|
+
if (labels.status >= 400) {
|
32
|
+
this.metricsService.requestErrors(labels);
|
33
|
+
}
|
34
|
+
}
|
35
|
+
};
|
36
|
+
exports.RestMetricsInterceptor = RestMetricsInterceptor;
|
37
|
+
exports.RestMetricsInterceptor = RestMetricsInterceptor = __decorate([
|
38
|
+
(0, common_1.Injectable)(),
|
39
|
+
__metadata("design:paramtypes", [rest_metrics_service_1.RestMetricsService])
|
40
|
+
], RestMetricsInterceptor);
|
41
|
+
function getLabels(context) {
|
42
|
+
const request = context.switchToHttp().getRequest();
|
43
|
+
const response = context.switchToHttp().getResponse();
|
44
|
+
const method = request.method;
|
45
|
+
const route = request.route ? request.route.path : request.path;
|
46
|
+
const status = response.statusCode.toString();
|
47
|
+
return {
|
48
|
+
method,
|
49
|
+
route,
|
50
|
+
status,
|
51
|
+
};
|
52
|
+
}
|
53
|
+
//# sourceMappingURL=rest-metrics.interceptor.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"rest-metrics.interceptor.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/metrics/rest/rest-metrics.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,+BAA4C;AAC5C,iEAAiG;AACjG,oCAA+E;AAGxE,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAA6B,cAAkC;QAAlC,mBAAc,GAAd,cAAc,CAAoB;IAAG,CAAC;IAEnE,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAEjC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,eAAQ,EAAC,GAAG,EAAE;YACZ,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,OAAyB,EAAE,OAAyB;QACjE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAElC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CACxC,MAAM,EACN,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAC9B,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;CACF,CAAA;AA3BY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAEkC,yCAAkB;GADpD,sBAAsB,CA2BlC;AAED,SAAS,SAAS,CAAC,OAAyB;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;IAEtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAE9C,OAAO;QACL,MAAM;QACN,KAAK;QACL,MAAM;KACP,CAAC;AACJ,CAAC"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
type Labels = {
|
2
|
+
method?: string;
|
3
|
+
route?: string;
|
4
|
+
status?: string;
|
5
|
+
};
|
6
|
+
export declare class RestMetricsService {
|
7
|
+
private readonly requestDurationSecondsHistogram;
|
8
|
+
private readonly requestTotalCounter;
|
9
|
+
private readonly requestErrorsTotalCounter;
|
10
|
+
constructor();
|
11
|
+
requestDurationSeconds(labels: Labels, durationInSeconds: number): void;
|
12
|
+
requestTotal(labels: Labels): void;
|
13
|
+
requestErrors(labels: Labels): void;
|
14
|
+
}
|
15
|
+
export {};
|
@@ -0,0 +1,52 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.RestMetricsService = void 0;
|
13
|
+
const common_1 = require("@nestjs/common");
|
14
|
+
const prom_client_1 = require("prom-client");
|
15
|
+
const constants_1 = require("./constants");
|
16
|
+
let RestMetricsService = class RestMetricsService {
|
17
|
+
constructor() {
|
18
|
+
this.requestDurationSecondsHistogram = prom_client_1.register.getSingleMetric(constants_1.REST_REQUEST_DURATION_SECONDS) ||
|
19
|
+
new prom_client_1.Histogram({
|
20
|
+
name: constants_1.REST_REQUEST_DURATION_SECONDS,
|
21
|
+
help: 'Duration of REST API requests in seconds',
|
22
|
+
labelNames: ['method', 'route', 'status'],
|
23
|
+
});
|
24
|
+
this.requestTotalCounter = prom_client_1.register.getSingleMetric(constants_1.REST_REQUESTS_TOTAL) ||
|
25
|
+
new prom_client_1.Counter({
|
26
|
+
name: constants_1.REST_REQUESTS_TOTAL,
|
27
|
+
help: 'Total number of REST API requests',
|
28
|
+
labelNames: ['method', 'route', 'status'],
|
29
|
+
});
|
30
|
+
this.requestErrorsTotalCounter = prom_client_1.register.getSingleMetric(constants_1.REST_REQUEST_ERRORS_TOTAL) ||
|
31
|
+
new prom_client_1.Counter({
|
32
|
+
name: constants_1.REST_REQUEST_ERRORS_TOTAL,
|
33
|
+
help: 'Total number of errors encountered during REST API request processing',
|
34
|
+
labelNames: ['method', 'route', 'status'],
|
35
|
+
});
|
36
|
+
}
|
37
|
+
requestDurationSeconds(labels, durationInSeconds) {
|
38
|
+
this.requestDurationSecondsHistogram.observe(labels, durationInSeconds);
|
39
|
+
}
|
40
|
+
requestTotal(labels) {
|
41
|
+
this.requestTotalCounter.inc(labels);
|
42
|
+
}
|
43
|
+
requestErrors(labels) {
|
44
|
+
this.requestErrorsTotalCounter.inc(labels);
|
45
|
+
}
|
46
|
+
};
|
47
|
+
exports.RestMetricsService = RestMetricsService;
|
48
|
+
exports.RestMetricsService = RestMetricsService = __decorate([
|
49
|
+
(0, common_1.Injectable)(),
|
50
|
+
__metadata("design:paramtypes", [])
|
51
|
+
], RestMetricsService);
|
52
|
+
//# sourceMappingURL=rest-metrics.service.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"rest-metrics.service.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/metrics/rest/rest-metrics.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAA2D;AAC3D,2CAI0D;AASnD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAyB7B;QAxBiB,oCAA+B,GAC7C,sBAAQ,CAAC,eAAe,CAAC,yCAA6B,CAAe;YACtE,IAAI,uBAAS,CAAC;gBACZ,IAAI,EAAE,yCAA6B;gBACnC,IAAI,EAAE,0CAA0C;gBAChD,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;aAC1C,CAAC,CAAC;QAEY,wBAAmB,GACjC,sBAAQ,CAAC,eAAe,CAAC,+BAAmB,CAAa;YAC1D,IAAI,qBAAO,CAAC;gBACV,IAAI,EAAE,+BAAmB;gBACzB,IAAI,EAAE,mCAAmC;gBACzC,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;aAC1C,CAAC,CAAC;QAEY,8BAAyB,GACvC,sBAAQ,CAAC,eAAe,CAAC,qCAAyB,CAAa;YAChE,IAAI,qBAAO,CAAC;gBACV,IAAI,EAAE,qCAAyB;gBAC/B,IAAI,EAAE,uEAAuE;gBAC7E,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;aAC1C,CAAC,CAAC;IAEU,CAAC;IAET,sBAAsB,CAAC,MAAc,EAAE,iBAAyB;QACrE,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1E,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAEM,aAAa,CAAC,MAAc;QACjC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;CACF,CAAA;AAtCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;;GACA,kBAAkB,CAsC9B"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function getDurationInSeconds(startAt: [number, number]): number;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getDurationInSeconds = void 0;
|
4
|
+
function getDurationInSeconds(startAt) {
|
5
|
+
const [seconds, nanoseconds] = process.hrtime(startAt);
|
6
|
+
return seconds + nanoseconds / 1e9;
|
7
|
+
}
|
8
|
+
exports.getDurationInSeconds = getDurationInSeconds;
|
9
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/metrics/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,oBAAoB,CAAC,OAAyB;IAC5D,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,OAAO,GAAG,WAAW,GAAG,GAAG,CAAC;AACrC,CAAC;AAHD,oDAGC"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.MetricsApiModule = void 0;
|
10
|
+
const common_1 = require("@nestjs/common");
|
11
|
+
const config_1 = require("@nestjs/config");
|
12
|
+
const client = require("prom-client");
|
13
|
+
const database_module_1 = require("../database/database.module");
|
14
|
+
const metrics_enabled_guard_1 = require("./metrics-enabled.guard");
|
15
|
+
const metrics_controller_1 = require("./metrics.controller");
|
16
|
+
let MetricsApiModule = class MetricsApiModule {
|
17
|
+
onModuleInit() {
|
18
|
+
client.collectDefaultMetrics();
|
19
|
+
}
|
20
|
+
};
|
21
|
+
exports.MetricsApiModule = MetricsApiModule;
|
22
|
+
exports.MetricsApiModule = MetricsApiModule = __decorate([
|
23
|
+
(0, common_1.Module)({
|
24
|
+
imports: [database_module_1.DatabaseModule, config_1.ConfigModule],
|
25
|
+
providers: [metrics_enabled_guard_1.MetricsEnabledGuard],
|
26
|
+
controllers: [metrics_controller_1.MetricsController],
|
27
|
+
})
|
28
|
+
], MetricsApiModule);
|
29
|
+
//# sourceMappingURL=metrics-api.module.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"metrics-api.module.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/metrics-api/metrics-api.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsD;AACtD,2CAA8C;AAC9C,sCAAsC;AACtC,iEAAoF;AACpF,mEAAkG;AAClG,6DAA6F;AAOtF,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAAY;QACV,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;CACF,CAAA;AAJY,4CAAgB;2BAAhB,gBAAgB;IAL5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,gCAAc,EAAE,qBAAY,CAAC;QACvC,SAAS,EAAE,CAAC,2CAAmB,CAAC;QAChC,WAAW,EAAE,CAAC,sCAAiB,CAAC;KACjC,CAAC;GACW,gBAAgB,CAI5B"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { CanActivate } from '@nestjs/common';
|
2
|
+
import { ConfigService } from '@nestjs/config';
|
3
|
+
export declare class MetricsEnabledGuard implements CanActivate {
|
4
|
+
private readonly configService;
|
5
|
+
constructor(configService: ConfigService);
|
6
|
+
canActivate(): boolean;
|
7
|
+
}
|