@revisium/core 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/package.json +2 -1
  2. package/dist/prisma/schema.prisma +1 -1
  3. package/dist/src/app.module.js +2 -1
  4. package/dist/src/app.module.js.map +1 -1
  5. package/dist/src/core/core.module.js +2 -0
  6. package/dist/src/core/core.module.js.map +1 -1
  7. package/dist/src/graphql-api/graphql-api.module.js +19 -9
  8. package/dist/src/graphql-api/graphql-api.module.js.map +1 -1
  9. package/dist/src/health/health.controller.js +1 -0
  10. package/dist/src/health/health.controller.js.map +1 -1
  11. package/dist/src/index.d.ts +2 -0
  12. package/dist/src/index.js +5 -1
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/metrics/graphql/constants.d.ts +3 -0
  15. package/dist/src/metrics/graphql/constants.js +7 -0
  16. package/dist/src/metrics/graphql/constants.js.map +1 -0
  17. package/dist/src/metrics/graphql/graphql-metrics.plugin.d.ts +7 -0
  18. package/dist/src/metrics/graphql/graphql-metrics.plugin.js +55 -0
  19. package/dist/src/metrics/graphql/graphql-metrics.plugin.js.map +1 -0
  20. package/dist/src/metrics/graphql/graphql-metrics.service.d.ts +16 -0
  21. package/dist/src/metrics/graphql/graphql-metrics.service.js +49 -0
  22. package/dist/src/metrics/graphql/graphql-metrics.service.js.map +1 -0
  23. package/dist/src/metrics/metrics.module.d.ts +2 -0
  24. package/dist/src/metrics/metrics.module.js +32 -0
  25. package/dist/src/metrics/metrics.module.js.map +1 -0
  26. package/dist/src/metrics/rest/constants.d.ts +3 -0
  27. package/dist/src/metrics/rest/constants.js +7 -0
  28. package/dist/src/metrics/rest/constants.js.map +1 -0
  29. package/dist/src/metrics/rest/rest-metrics.interceptor.d.ts +9 -0
  30. package/dist/src/metrics/rest/rest-metrics.interceptor.js +53 -0
  31. package/dist/src/metrics/rest/rest-metrics.interceptor.js.map +1 -0
  32. package/dist/src/metrics/rest/rest-metrics.service.d.ts +15 -0
  33. package/dist/src/metrics/rest/rest-metrics.service.js +49 -0
  34. package/dist/src/metrics/rest/rest-metrics.service.js.map +1 -0
  35. package/dist/src/metrics/utils.d.ts +1 -0
  36. package/dist/src/metrics/utils.js +8 -0
  37. package/dist/src/metrics/utils.js.map +1 -0
  38. package/dist/src/metrics-api/metrics-api.module.d.ts +4 -0
  39. package/dist/src/metrics-api/metrics-api.module.js +29 -0
  40. package/dist/src/metrics-api/metrics-api.module.js.map +1 -0
  41. package/dist/src/metrics-api/metrics-enabled.guard.d.ts +7 -0
  42. package/dist/src/metrics-api/metrics-enabled.guard.js +28 -0
  43. package/dist/src/metrics-api/metrics-enabled.guard.js.map +1 -0
  44. package/dist/src/metrics-api/metrics.controller.d.ts +7 -0
  45. package/dist/src/metrics-api/metrics.controller.js +49 -0
  46. package/dist/src/metrics-api/metrics.controller.js.map +1 -0
  47. package/dist/src/rest-api/auth/auth.controller.js +2 -0
  48. package/dist/src/rest-api/auth/auth.controller.js.map +1 -1
  49. package/dist/src/rest-api/branch/branch-by-name.controller.js +2 -0
  50. package/dist/src/rest-api/branch/branch-by-name.controller.js.map +1 -1
  51. package/dist/src/rest-api/configuration/configuration.controller.js +2 -0
  52. package/dist/src/rest-api/configuration/configuration.controller.js.map +1 -1
  53. package/dist/src/rest-api/endpoint/endpointByIdController.js +2 -0
  54. package/dist/src/rest-api/endpoint/endpointByIdController.js.map +1 -1
  55. package/dist/src/rest-api/organization/organization.controller.js +2 -0
  56. package/dist/src/rest-api/organization/organization.controller.js.map +1 -1
  57. package/dist/src/rest-api/project/project.controller.js +2 -0
  58. package/dist/src/rest-api/project/project.controller.js.map +1 -1
  59. package/dist/src/rest-api/rest-api.module.js +2 -1
  60. package/dist/src/rest-api/rest-api.module.js.map +1 -1
  61. package/dist/src/rest-api/revision/revision-by-id.controller.js +2 -0
  62. package/dist/src/rest-api/revision/revision-by-id.controller.js.map +1 -1
  63. package/dist/src/rest-api/row/row-by-id.controller.js +2 -0
  64. package/dist/src/rest-api/row/row-by-id.controller.js.map +1 -1
  65. package/dist/src/rest-api/table/table-by-id.controller.js +2 -0
  66. package/dist/src/rest-api/table/table-by-id.controller.js.map +1 -1
  67. package/dist/src/rest-api/user/user.controller.js +2 -0
  68. package/dist/src/rest-api/user/user.controller.js.map +1 -1
  69. package/dist/tsconfig.build.tsbuildinfo +1 -1
  70. package/package.json +2 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revisium/core",
3
- "version": "0.9.2",
3
+ "version": "0.9.3",
4
4
  "description": "Revisium is a tool (UI/API) inspired by JSON (JSON Schema) and Git, designed to provide a flexible and low-level headless CMS solution.",
5
5
  "private": false,
6
6
  "homepage": "https://revisium.io",
@@ -71,6 +71,7 @@
71
71
  "object-hash": "^3.0.0",
72
72
  "passport": "^0.7.0",
73
73
  "passport-jwt": "^4.0.1",
74
+ "prom-client": "^15.1.3",
74
75
  "reflect-metadata": "^0.2.1",
75
76
  "rxjs": "^7.8.1"
76
77
  },
@@ -3,7 +3,7 @@
3
3
 
4
4
  generator client {
5
5
  provider = "prisma-client-js"
6
- previewFeatures = ["fullTextSearch"]
6
+ previewFeatures = ["fullTextSearch", "metrics"]
7
7
  binaryTargets = ["linux-arm64-openssl-1.1.x", "linux-arm64-openssl-3.0.x", "debian-openssl-1.1.x", "debian-openssl-3.0.x", "native", "darwin", "darwin-arm64", "windows"]
8
8
  engineType = "binary"
9
9
  }
@@ -10,12 +10,13 @@ exports.AppModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const config_1 = require("@nestjs/config");
12
12
  const core_module_1 = require("./core/core.module");
13
+ const metrics_api_module_1 = require("./metrics-api/metrics-api.module");
13
14
  let AppModule = class AppModule {
14
15
  };
15
16
  exports.AppModule = AppModule;
16
17
  exports.AppModule = AppModule = __decorate([
17
18
  (0, common_1.Module)({
18
- imports: [config_1.ConfigModule.forRoot(), core_module_1.CoreModule],
19
+ imports: [config_1.ConfigModule.forRoot(), core_module_1.CoreModule, metrics_api_module_1.MetricsApiModule],
19
20
  })
20
21
  ], AppModule);
21
22
  //# sourceMappingURL=app.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,oDAAkD;AAK3C,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAHrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,CAAC,OAAO,EAAE,EAAE,wBAAU,CAAC;KAC9C,CAAC;GACW,SAAS,CAAG"}
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,oDAAkD;AAClD,yEAAsE;AAK/D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAHrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,CAAC,OAAO,EAAE,EAAE,wBAAU,EAAE,qCAAgB,CAAC;KAChE,CAAC;GACW,SAAS,CAAG"}
@@ -21,6 +21,7 @@ const email_module_1 = require("../email/email.module");
21
21
  const endpoint_module_1 = require("../endpoint/endpoint.module");
22
22
  const graphql_api_module_1 = require("../graphql-api/graphql-api.module");
23
23
  const health_module_1 = require("../health/health.module");
24
+ const metrics_module_1 = require("../metrics/metrics.module");
24
25
  const notification_module_1 = require("../notification/notification.module");
25
26
  const organization_module_1 = require("../organization/organization.module");
26
27
  const project_module_1 = require("../project/project.module");
@@ -61,6 +62,7 @@ exports.CoreModule = CoreModule = __decorate([
61
62
  row_module_1.RowModule,
62
63
  draft_module_1.DraftModule,
63
64
  endpoint_module_1.EndpointModule,
65
+ metrics_module_1.MetricsModule,
64
66
  ],
65
67
  })
66
68
  ], CoreModule);
@@ -1 +1 @@
1
- {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../../../src/core/core.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,uCAA4C;AAC5C,+CAAkD;AAClD,qDAAkD;AAElD,2DAAwD;AACxD,wDAAqD;AACrD,gFAA6E;AAC7E,iEAA8D;AAC9D,wDAAqD;AACrD,wDAAqD;AACrD,iEAA8D;AAC9D,0EAAsE;AACtE,2DAAwD;AACxD,6EAA0E;AAC1E,6EAA0E;AAC1E,8DAA2D;AAC3D,iEAA6D;AAC7D,iEAA8D;AAC9D,kDAA+C;AAC/C,wDAAqD;AACrD,qDAAkD;AAgC3C,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IA9BtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,wBAAU;YACV,qBAAY,CAAC,OAAO,EAAE;YACtB,gCAAc;YACd,qCAAgB;YAChB,+BAAa;YACb,mBAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,+BAAa;iBACtB;aACF,CAAC;YACF,yBAAc,CAAC,OAAO,EAAE;YACxB,0CAAmB;YACnB,0BAAW;YACX,wCAAkB;YAClB,4BAAY;YACZ,0BAAW;YACX,wBAAU;YACV,wCAAkB;YAClB,8BAAa;YACb,4BAAY;YACZ,gCAAc;YACd,0BAAW;YACX,sBAAS;YACT,0BAAW;YACX,gCAAc;SACf;KACF,CAAC;GACW,UAAU,CAAG"}
1
+ {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../../../src/core/core.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,uCAA4C;AAC5C,+CAAkD;AAClD,qDAAkD;AAElD,2DAAwD;AACxD,wDAAqD;AACrD,gFAA6E;AAC7E,iEAA8D;AAC9D,wDAAqD;AACrD,wDAAqD;AACrD,iEAA8D;AAC9D,0EAAsE;AACtE,2DAAwD;AACxD,8DAA2D;AAC3D,6EAA0E;AAC1E,6EAA0E;AAC1E,8DAA2D;AAC3D,iEAA6D;AAC7D,iEAA8D;AAC9D,kDAA+C;AAC/C,wDAAqD;AACrD,qDAAkD;AAiC3C,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IA/BtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,wBAAU;YACV,qBAAY,CAAC,OAAO,EAAE;YACtB,gCAAc;YACd,qCAAgB;YAChB,+BAAa;YACb,mBAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,+BAAa;iBACtB;aACF,CAAC;YACF,yBAAc,CAAC,OAAO,EAAE;YACxB,0CAAmB;YACnB,0BAAW;YACX,wCAAkB;YAClB,4BAAY;YACZ,0BAAW;YACX,wBAAU;YACV,wCAAkB;YAClB,8BAAa;YACb,4BAAY;YACZ,gCAAc;YACd,0BAAW;YACX,sBAAS;YACT,0BAAW;YACX,gCAAc;YACd,8BAAa;SACd;KACF,CAAC;GACW,UAAU,CAAG"}
@@ -29,22 +29,32 @@ const revision_resolver_1 = require("./revision/revision.resolver");
29
29
  const row_resolver_1 = require("./row/row.resolver");
30
30
  const table_resolver_1 = require("./table/table.resolver");
31
31
  const user_resolver_1 = require("./user/user.resolver");
32
+ const graphql_metrics_plugin_1 = require("../metrics/graphql/graphql-metrics.plugin");
33
+ const metrics_module_1 = require("../metrics/metrics.module");
32
34
  let GraphqlApiModule = class GraphqlApiModule {
33
35
  };
34
36
  exports.GraphqlApiModule = GraphqlApiModule;
35
37
  exports.GraphqlApiModule = GraphqlApiModule = __decorate([
36
38
  (0, common_1.Module)({
37
39
  imports: [
38
- graphql_1.GraphQLModule.forRoot({
39
- context: ({ res }) => ({ res }),
40
- path: '/-/graphql',
41
- resolvers: { JSON: graphql_type_json_1.default },
40
+ metrics_module_1.MetricsModule,
41
+ graphql_1.GraphQLModule.forRootAsync({
42
+ imports: [metrics_module_1.MetricsModule],
42
43
  driver: apollo_1.ApolloDriver,
43
- playground: false,
44
- autoSchemaFile: (0, path_1.join)(process.cwd(), 'src/schema.gql'),
45
- sortSchema: true,
46
- introspection: true,
47
- plugins: [(0, default_1.ApolloServerPluginLandingPageLocalDefault)()],
44
+ inject: [graphql_metrics_plugin_1.GraphqlMetricsPlugin],
45
+ useFactory: (graphqlMetricsPlugin) => ({
46
+ context: ({ res }) => ({ res }),
47
+ path: '/-/graphql',
48
+ resolvers: { JSON: graphql_type_json_1.default },
49
+ playground: false,
50
+ autoSchemaFile: (0, path_1.join)(process.cwd(), 'src/schema.gql'),
51
+ sortSchema: true,
52
+ introspection: true,
53
+ plugins: [
54
+ (0, default_1.ApolloServerPluginLandingPageLocalDefault)(),
55
+ graphqlMetricsPlugin,
56
+ ],
57
+ }),
48
58
  }),
49
59
  cqrs_1.CqrsModule,
50
60
  auth_module_1.AuthModule,
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-api.module.js","sourceRoot":"","sources":["../../../src/graphql-api/graphql-api.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uEAAsG;AACtG,2CAAkE;AAClE,2CAAwC;AACxC,uCAA0C;AAC1C,6CAAgD;AAChD,yDAA4C;AAC5C,+BAA4B;AAC5B,qDAAkD;AAClD,wDAAkE;AAClE,8DAAwE;AACxE,4EAAqF;AACrF,mFAA6F;AAC7F,2DAAqE;AACrE,oEAA8E;AAC9E,gFAA0F;AAC1F,iEAA2E;AAC3E,iEAA4E;AAC5E,4EAAqF;AACrF,oEAA8E;AAC9E,qDAA+D;AAC/D,2DAAqE;AACrE,wDAAkE;AAkC3D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAhC5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,OAAO,CAAqB;gBACxC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;gBAC7C,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,2BAAW,EAAE;gBAChC,MAAM,EAAE,qBAAY;gBACpB,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC;gBACrD,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,CAAC,IAAA,mDAAyC,GAAE,CAAC;aACvD,CAAC;YACF,iBAAU;YACV,wBAAU;SACX;QACD,SAAS,EAAE;YACT,8CAAqB;YACrB,4BAAY;YACZ,4BAAY;YACZ,4CAAoB;YACpB,kCAAe;YACf,gCAAc;YACd,6CAAoB;YACpB,2CAAmB;YACnB,8BAAa;YACb,oCAAgB;YAChB,oCAAgB;YAChB,0BAAW;YACX,8BAAa;SACd;KACF,CAAC;GACW,gBAAgB,CAAG;AAEhC,IAAA,2CAAoB,GAAE,CAAC"}
1
+ {"version":3,"file":"graphql-api.module.js","sourceRoot":"","sources":["../../../src/graphql-api/graphql-api.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uEAAsG;AACtG,2CAAkE;AAClE,2CAAwC;AACxC,uCAA0C;AAC1C,6CAAgD;AAChD,yDAA4C;AAC5C,+BAA4B;AAC5B,qDAAkD;AAClD,wDAAkE;AAClE,8DAAwE;AACxE,4EAAqF;AACrF,mFAA6F;AAC7F,2DAAqE;AACrE,oEAA8E;AAC9E,gFAA0F;AAC1F,iEAA2E;AAC3E,iEAA4E;AAC5E,4EAAqF;AACrF,oEAA8E;AAC9E,qDAA+D;AAC/D,2DAAqE;AACrE,wDAAkE;AAClE,sFAAkF;AAClF,8DAA2D;AA0CpD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAxC5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,8BAAa;YACb,uBAAa,CAAC,YAAY,CAAqB;gBAC7C,OAAO,EAAE,CAAC,8BAAa,CAAC;gBACxB,MAAM,EAAE,qBAAY;gBACpB,MAAM,EAAE,CAAC,6CAAoB,CAAC;gBAC9B,UAAU,EAAE,CAAC,oBAA0C,EAAE,EAAE,CAAC,CAAC;oBAC3D,OAAO,EAAE,CAAC,EAAE,GAAG,EAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;oBAC7C,IAAI,EAAE,YAAY;oBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,2BAAW,EAAE;oBAChC,UAAU,EAAE,KAAK;oBACjB,cAAc,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC;oBACrD,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE;wBACP,IAAA,mDAAyC,GAAE;wBAC3C,oBAAoB;qBACrB;iBACF,CAAC;aACH,CAAC;YACF,iBAAU;YACV,wBAAU;SACX;QACD,SAAS,EAAE;YACT,8CAAqB;YACrB,4BAAY;YACZ,4BAAY;YACZ,4CAAoB;YACpB,kCAAe;YACf,gCAAc;YACd,6CAAoB;YACpB,2CAAmB;YACnB,8BAAa;YACb,oCAAgB;YAChB,oCAAgB;YAChB,0BAAW;YACX,8BAAa;SACd;KACF,CAAC;GACW,gBAAgB,CAAG;AAEhC,IAAA,2CAAoB,GAAE,CAAC"}
@@ -25,6 +25,7 @@ __decorate([
25
25
  __metadata("design:returntype", void 0)
26
26
  ], HealthController.prototype, "get", null);
27
27
  exports.HealthController = HealthController = __decorate([
28
+ (0, swagger_1.ApiExcludeController)(),
28
29
  (0, swagger_1.ApiTags)('health'),
29
30
  (0, common_1.Controller)('health')
30
31
  ], HealthController);
@@ -1 +1 @@
1
- {"version":3,"file":"health.controller.js","sourceRoot":"","sources":["../../../src/health/health.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiD;AACjD,6CAA0C;AAInC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAE3B,GAAG;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AALY,4CAAgB;AAE3B;IADC,IAAA,YAAG,GAAE;;;;2CAGL;2BAJU,gBAAgB;IAF5B,IAAA,iBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,mBAAU,EAAC,QAAQ,CAAC;GACR,gBAAgB,CAK5B"}
1
+ {"version":3,"file":"health.controller.js","sourceRoot":"","sources":["../../../src/health/health.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAiD;AACjD,6CAAgE;AAKzD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAE3B,GAAG;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AALY,4CAAgB;AAE3B;IADC,IAAA,YAAG,GAAE;;;;2CAGL;2BAJU,gBAAgB;IAH5B,IAAA,8BAAoB,GAAE;IACtB,IAAA,iBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,mBAAU,EAAC,QAAQ,CAAC;GACR,gBAAgB,CAK5B"}
@@ -1,2 +1,4 @@
1
1
  export { CoreModule } from 'src/core/core.module';
2
+ export { DatabaseModule } from 'src/database/database.module';
3
+ export { PrismaService } from 'src/database/prisma.service';
2
4
  export { notificationEventEmitter } from 'src/notification/notification-event-emitter';
package/dist/src/index.js CHANGED
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.notificationEventEmitter = exports.CoreModule = void 0;
3
+ exports.notificationEventEmitter = exports.PrismaService = exports.DatabaseModule = exports.CoreModule = void 0;
4
4
  var core_module_1 = require("./core/core.module");
5
5
  Object.defineProperty(exports, "CoreModule", { enumerable: true, get: function () { return core_module_1.CoreModule; } });
6
+ var database_module_1 = require("./database/database.module");
7
+ Object.defineProperty(exports, "DatabaseModule", { enumerable: true, get: function () { return database_module_1.DatabaseModule; } });
8
+ var prisma_service_1 = require("./database/prisma.service");
9
+ Object.defineProperty(exports, "PrismaService", { enumerable: true, get: function () { return prisma_service_1.PrismaService; } });
6
10
  var notification_event_emitter_1 = require("./notification/notification-event-emitter");
7
11
  Object.defineProperty(exports, "notificationEventEmitter", { enumerable: true, get: function () { return notification_event_emitter_1.notificationEventEmitter; } });
8
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,kDAAkD;AAAzC,yGAAA,UAAU,OAAA;AACnB,wFAAuF;AAA9E,sIAAA,wBAAwB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,kDAAkD;AAAzC,yGAAA,UAAU,OAAA;AACnB,8DAA8D;AAArD,iHAAA,cAAc,OAAA;AACvB,4DAA4D;AAAnD,+GAAA,aAAa,OAAA;AACtB,wFAAuF;AAA9E,sIAAA,wBAAwB,OAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const GRAPHQL_REQUEST_DURATION_SECONDS = "graphql_request_duration_seconds";
2
+ export declare const GRAPHQL_DID_RESOLVE_OPERATION_TOTAL = "graphql_did_resolve_operation_total";
3
+ export declare const GRAPHQL_DID_ENCOUNTER_ERRORS_TOTAL = "graphql_did_encounter_errors_total";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GRAPHQL_DID_ENCOUNTER_ERRORS_TOTAL = exports.GRAPHQL_DID_RESOLVE_OPERATION_TOTAL = exports.GRAPHQL_REQUEST_DURATION_SECONDS = void 0;
4
+ exports.GRAPHQL_REQUEST_DURATION_SECONDS = 'graphql_request_duration_seconds';
5
+ exports.GRAPHQL_DID_RESOLVE_OPERATION_TOTAL = 'graphql_did_resolve_operation_total';
6
+ exports.GRAPHQL_DID_ENCOUNTER_ERRORS_TOTAL = 'graphql_did_encounter_errors_total';
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/metrics/graphql/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gCAAgC,GAC3C,kCAAkC,CAAC;AAExB,QAAA,mCAAmC,GAC9C,qCAAqC,CAAC;AAE3B,QAAA,kCAAkC,GAC7C,oCAAoC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ApolloServerPlugin, BaseContext, GraphQLRequestListener } from '@apollo/server';
2
+ import { GraphqlMetricsService } from 'src/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,55 @@
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
+ operationName: context.request.operationName,
52
+ operation: context.operation?.operation,
53
+ };
54
+ }
55
+ //# sourceMappingURL=graphql-metrics.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-metrics.plugin.js","sourceRoot":"","sources":["../../../../src/metrics/graphql/graphql-metrics.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,2CAA4C;AAC5C,wCAAwC;AACxC,uEAAoF;AACpF,oCAAyD;AAGlD,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,OAGlB;IACC,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa;QAC5C,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS;KACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ type Labels = {
2
+ operationName?: string;
3
+ operation?: string;
4
+ };
5
+ export declare class GraphqlMetricsService {
6
+ private readonly requestDurationSecondsHistogram;
7
+ private readonly didResolveOperationTotalCounter;
8
+ private readonly didEncounterErrorsTotalCounter;
9
+ constructor();
10
+ requestDurationSeconds(labels: Labels & {
11
+ result?: 'true' | 'false';
12
+ }, durationInSeconds: number): void;
13
+ didResolveOperation(labels: Labels): void;
14
+ didEncounterErrors(labels: Labels): void;
15
+ }
16
+ 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 constants_1 = require("./constants");
15
+ const client = require("prom-client");
16
+ let GraphqlMetricsService = class GraphqlMetricsService {
17
+ constructor() {
18
+ this.requestDurationSecondsHistogram = new client.Histogram({
19
+ name: constants_1.GRAPHQL_REQUEST_DURATION_SECONDS,
20
+ help: 'Duration of GraphQL requests in seconds',
21
+ labelNames: ['operationName', 'operation', 'result'],
22
+ });
23
+ this.didResolveOperationTotalCounter = new client.Counter({
24
+ name: constants_1.GRAPHQL_DID_RESOLVE_OPERATION_TOTAL,
25
+ help: 'Total number of successfully resolved GraphQL operations',
26
+ labelNames: ['operationName', 'operation'],
27
+ });
28
+ this.didEncounterErrorsTotalCounter = new client.Counter({
29
+ name: constants_1.GRAPHQL_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/metrics/graphql/graphql-metrics.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAIuC;AACvC,sCAAsC;AAQ/B,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAmBhC;QAlBiB,oCAA+B,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;YACtE,IAAI,EAAE,4CAAgC;YACtC,IAAI,EAAE,yCAAyC;YAC/C,UAAU,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,CAAC;SACrD,CAAC,CAAC;QAEc,oCAA+B,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;YACpE,IAAI,EAAE,+CAAmC;YACzC,IAAI,EAAE,0DAA0D;YAChE,UAAU,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;SAC3C,CAAC,CAAC;QAEc,mCAA8B,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;YACnE,IAAI,EAAE,8CAAkC;YACxC,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,2 @@
1
+ export declare class MetricsModule {
2
+ }
@@ -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/metrics/metrics.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA8C;AAC9C,iEAA8D;AAC9D,6EAAkF;AAClF,+EAAoF;AACpF,8EAAmF;AACnF,sEAA2E;AAYpE,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,3 @@
1
+ export declare const REST_REQUEST_DURATION_SECONDS = "rest_request_duration_seconds";
2
+ export declare const REST_REQUESTS_TOTAL = "rest_requests_total";
3
+ export declare const REST_REQUEST_ERRORS_TOTAL = "rest_requests_errors_total";
@@ -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/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/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/metrics/rest/rest-metrics.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,+BAA4C;AAC5C,iEAA2E;AAC3E,oCAAyD;AAGlD,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,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.RestMetricsService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const client = require("prom-client");
15
+ const constants_1 = require("./constants");
16
+ let RestMetricsService = class RestMetricsService {
17
+ constructor() {
18
+ this.requestDurationSecondsHistogram = new client.Histogram({
19
+ name: constants_1.REST_REQUEST_DURATION_SECONDS,
20
+ help: 'Duration of REST API requests in seconds',
21
+ labelNames: ['method', 'route', 'status'],
22
+ });
23
+ this.requestTotalCounter = new client.Counter({
24
+ name: constants_1.REST_REQUESTS_TOTAL,
25
+ help: 'Total number of REST API requests',
26
+ labelNames: ['method', 'route', 'status'],
27
+ });
28
+ this.requestErrorsTotalCounter = new client.Counter({
29
+ name: constants_1.REST_REQUEST_ERRORS_TOTAL,
30
+ help: 'Total number of errors encountered during REST API request processing',
31
+ labelNames: ['method', 'route', 'status'],
32
+ });
33
+ }
34
+ requestDurationSeconds(labels, durationInSeconds) {
35
+ this.requestDurationSecondsHistogram.observe(labels, durationInSeconds);
36
+ }
37
+ requestTotal(labels) {
38
+ this.requestTotalCounter.inc(labels);
39
+ }
40
+ requestErrors(labels) {
41
+ this.requestErrorsTotalCounter.inc(labels);
42
+ }
43
+ };
44
+ exports.RestMetricsService = RestMetricsService;
45
+ exports.RestMetricsService = RestMetricsService = __decorate([
46
+ (0, common_1.Injectable)(),
47
+ __metadata("design:paramtypes", [])
48
+ ], RestMetricsService);
49
+ //# sourceMappingURL=rest-metrics.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-metrics.service.js","sourceRoot":"","sources":["../../../../src/metrics/rest/rest-metrics.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,sCAAsC;AACtC,2CAIoC;AAS7B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAmB7B;QAlBiB,oCAA+B,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;YACtE,IAAI,EAAE,yCAA6B;YACnC,IAAI,EAAE,0CAA0C;YAChD,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC1C,CAAC,CAAC;QAEc,wBAAmB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;YACxD,IAAI,EAAE,+BAAmB;YACzB,IAAI,EAAE,mCAAmC;YACzC,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC1C,CAAC,CAAC;QAEc,8BAAyB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;YAC9D,IAAI,EAAE,qCAAyB;YAC/B,IAAI,EAAE,uEAAuE;YAC7E,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC1C,CAAC,CAAC;IAEY,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;AAhCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;;GACA,kBAAkB,CAgC9B"}
@@ -0,0 +1 @@
1
+ export declare function getDurationInSeconds(startAt: [number, number]): number;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDurationInSeconds = getDurationInSeconds;
4
+ function getDurationInSeconds(startAt) {
5
+ const [seconds, nanoseconds] = process.hrtime(startAt);
6
+ return seconds + nanoseconds / 1e9;
7
+ }
8
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/metrics/utils.ts"],"names":[],"mappings":";;AAAA,oDAGC;AAHD,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"}
@@ -0,0 +1,4 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ export declare class MetricsApiModule implements OnModuleInit {
3
+ onModuleInit(): void;
4
+ }
@@ -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/metrics-api/metrics-api.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsD;AACtD,2CAA8C;AAC9C,sCAAsC;AACtC,iEAA8D;AAC9D,mEAA4E;AAC5E,6DAAuE;AAOhE,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
+ }