@open-rlb/nestjs-amqp 2.0.9 → 2.0.11

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 (94) hide show
  1. package/README.md +35 -35
  2. package/modules/acl/{authz-match.js → auth-match.js} +1 -1
  3. package/modules/acl/auth-match.js.map +1 -0
  4. package/modules/acl/const.d.ts +3 -0
  5. package/modules/acl/const.js +3 -0
  6. package/modules/acl/const.js.map +1 -1
  7. package/modules/acl/index.d.ts +1 -1
  8. package/modules/acl/index.js +1 -1
  9. package/modules/acl/index.js.map +1 -1
  10. package/modules/acl/repository/acl-action.repository.d.ts +1 -0
  11. package/modules/acl/repository/acl-action.repository.js.map +1 -1
  12. package/modules/acl/repository/acl-grant.repository.d.ts +1 -0
  13. package/modules/acl/repository/acl-grant.repository.js.map +1 -1
  14. package/modules/acl/repository/acl-role.repository.d.ts +1 -0
  15. package/modules/acl/repository/acl-role.repository.js.map +1 -1
  16. package/modules/acl/services/acl-management.service.d.ts +3 -0
  17. package/modules/acl/services/acl-management.service.js +38 -2
  18. package/modules/acl/services/acl-management.service.js.map +1 -1
  19. package/modules/acl/services/acl.service.d.ts +1 -1
  20. package/modules/acl/services/acl.service.js +2 -2
  21. package/modules/acl/services/acl.service.js.map +1 -1
  22. package/modules/broker/decorators/broker-action.decorator.d.ts +1 -1
  23. package/modules/broker/decorators/broker-action.decorator.js.map +1 -1
  24. package/modules/gateway-admin/config/gateway-admin.config.d.ts +2 -0
  25. package/modules/gateway-admin/const.d.ts +7 -0
  26. package/modules/gateway-admin/const.js +7 -0
  27. package/modules/gateway-admin/const.js.map +1 -1
  28. package/modules/gateway-admin/gateway-admin.module.js +4 -1
  29. package/modules/gateway-admin/gateway-admin.module.js.map +1 -1
  30. package/modules/gateway-admin/health.d.ts +14 -0
  31. package/modules/gateway-admin/health.js +5 -0
  32. package/modules/gateway-admin/health.js.map +1 -0
  33. package/modules/gateway-admin/index.d.ts +5 -0
  34. package/modules/gateway-admin/index.js +5 -0
  35. package/modules/gateway-admin/index.js.map +1 -1
  36. package/modules/gateway-admin/models.d.ts +61 -0
  37. package/modules/gateway-admin/repository/auth-provider.repository.d.ts +1 -0
  38. package/modules/gateway-admin/repository/auth-provider.repository.js.map +1 -1
  39. package/modules/gateway-admin/repository/http-metric.repository.d.ts +6 -2
  40. package/modules/gateway-admin/repository/http-metric.repository.js.map +1 -1
  41. package/modules/gateway-admin/repository/http-path.repository.d.ts +3 -0
  42. package/modules/gateway-admin/repository/http-path.repository.js.map +1 -1
  43. package/modules/gateway-admin/repository/route-sync-log.repository.d.ts +4 -1
  44. package/modules/gateway-admin/repository/route-sync-log.repository.js.map +1 -1
  45. package/modules/gateway-admin/services/gateway-auth.service.d.ts +1 -0
  46. package/modules/gateway-admin/services/gateway-auth.service.js +12 -0
  47. package/modules/gateway-admin/services/gateway-auth.service.js.map +1 -1
  48. package/modules/gateway-admin/services/gateway-health.service.d.ts +10 -0
  49. package/modules/gateway-admin/services/gateway-health.service.js +64 -0
  50. package/modules/gateway-admin/services/gateway-health.service.js.map +1 -0
  51. package/modules/gateway-admin/services/gateway-metrics-rollup.service.d.ts +13 -0
  52. package/modules/gateway-admin/services/gateway-metrics-rollup.service.js +63 -0
  53. package/modules/gateway-admin/services/gateway-metrics-rollup.service.js.map +1 -0
  54. package/modules/gateway-admin/services/gateway-metrics.service.d.ts +5 -4
  55. package/modules/gateway-admin/services/gateway-metrics.service.js +56 -17
  56. package/modules/gateway-admin/services/gateway-metrics.service.js.map +1 -1
  57. package/modules/gateway-admin/services/gateway-path.service.d.ts +11 -4
  58. package/modules/gateway-admin/services/gateway-path.service.js +79 -11
  59. package/modules/gateway-admin/services/gateway-path.service.js.map +1 -1
  60. package/modules/gateway-admin/services/gateway-retention.service.d.ts +16 -0
  61. package/modules/gateway-admin/services/gateway-retention.service.js +71 -0
  62. package/modules/gateway-admin/services/gateway-retention.service.js.map +1 -0
  63. package/modules/gateway-admin/services/route-sync.service.js +12 -5
  64. package/modules/gateway-admin/services/route-sync.service.js.map +1 -1
  65. package/modules/gateway-admin/util/metrics.d.ts +10 -0
  66. package/modules/gateway-admin/util/metrics.js +170 -0
  67. package/modules/gateway-admin/util/metrics.js.map +1 -0
  68. package/modules/gateway-admin/util/route-diff.d.ts +7 -0
  69. package/modules/gateway-admin/util/route-diff.js +7 -2
  70. package/modules/gateway-admin/util/route-diff.js.map +1 -1
  71. package/modules/gateway-admin/util/route-manifest.d.ts +3 -0
  72. package/modules/gateway-admin/util/route-manifest.js +35 -0
  73. package/modules/gateway-admin/util/route-manifest.js.map +1 -1
  74. package/modules/proxy/config/path-definition.config.d.ts +2 -1
  75. package/modules/proxy/services/acl.service.d.ts +1 -1
  76. package/modules/proxy/services/http-auth-handler.service.d.ts +1 -1
  77. package/modules/proxy/services/http-auth-handler.service.js.map +1 -1
  78. package/modules/proxy/services/http-handler.service.d.ts +1 -0
  79. package/modules/proxy/services/http-handler.service.js +24 -32
  80. package/modules/proxy/services/http-handler.service.js.map +1 -1
  81. package/modules/proxy/services/metrics-hook.d.ts +1 -0
  82. package/package.json +1 -1
  83. package/schematics/nest-add/files/acl/src/modules/database/repository/acl.repository.ts +3 -0
  84. package/schematics/nest-add/files/db-core/src/modules/database/repository/in-memory-collection.ts +29 -0
  85. package/schematics/nest-add/files/gateway-admin/src/modules/database/repository/gateway.repository.ts +48 -20
  86. package/schematics/nest-add/files/gateway-admin/src/modules/database/repository/route-sync.repository.ts +24 -1
  87. package/schematics/nest-add/files/skills/rlb-amqp-acl/SKILL.md +6 -1
  88. package/schematics/nest-add/files/skills/rlb-amqp-add-route/SKILL.md +1 -1
  89. package/schematics/nest-add/files/skills/rlb-amqp-gateway-admin/SKILL.md +48 -8
  90. package/schematics/nest-add/index.js +73 -0
  91. package/schematics/nest-add/index.js.map +1 -1
  92. package/schematics/nest-add/index.ts +73 -0
  93. package/modules/acl/authz-match.js.map +0 -1
  94. /package/modules/acl/{authz-match.d.ts → auth-match.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,0CAAwB;AACxB,yDAAuC;AACvC,2CAAyB;AACzB,wEAAsD;AACtD,sEAAoD;AACpD,oEAAkD;AAClD,yEAAuD;AACvD,kEAAgD;AAChD,qEAAmD;AACnD,kEAAgD;AAChD,gEAA8C;AAC9C,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,0CAAwB;AACxB,yDAAuC;AACvC,2CAAyB;AACzB,2CAAyB;AACzB,wEAAsD;AACtD,sEAAoD;AACpD,oEAAkD;AAClD,yEAAuD;AACvD,kEAAgD;AAChD,oEAAkD;AAClD,4EAA0D;AAC1D,qEAAmD;AACnD,kEAAgD;AAChD,uEAAqD;AACrD,gEAA8C;AAC9C,iDAA+B;AAC/B,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC"}
@@ -10,6 +10,7 @@ export interface HttpMetric<Id = string> {
10
10
  lastStatus?: number;
11
11
  lastCalledAt?: number;
12
12
  totalDurationMs: number;
13
+ lastErrorCode?: string;
13
14
  }
14
15
  export interface TrackCallInput {
15
16
  method: string;
@@ -20,6 +21,7 @@ export interface TrackCallInput {
20
21
  mode?: string;
21
22
  status?: number;
22
23
  durationMs?: number;
24
+ code?: string;
23
25
  ts?: number;
24
26
  }
25
27
  export interface HttpMetricPoint<Id = string> {
@@ -33,6 +35,7 @@ export interface HttpMetricPoint<Id = string> {
33
35
  mode?: string;
34
36
  status?: number;
35
37
  durationMs?: number;
38
+ code?: string;
36
39
  }
37
40
  export interface MetricQuery {
38
41
  method?: string;
@@ -53,12 +56,69 @@ export interface MetricSeriesBucket {
53
56
  avgDurationMs: number;
54
57
  minDurationMs?: number;
55
58
  maxDurationMs?: number;
59
+ p50?: number;
60
+ p95?: number;
61
+ p99?: number;
62
+ byStatus?: MetricStatusClasses;
63
+ }
64
+ export type MetricStatusClass = '2xx' | '3xx' | '4xx' | '5xx';
65
+ export type MetricStatusClasses = Record<MetricStatusClass, number>;
66
+ export interface MetricTopEntry {
67
+ method: string;
68
+ route: string;
69
+ name?: string;
70
+ count: number;
71
+ errorCount: number;
72
+ errorRate: number;
73
+ avgDurationMs: number;
74
+ p95?: number;
75
+ }
76
+ export interface MetricSummary {
77
+ totalRequests: number;
78
+ totalErrors: number;
79
+ errorRate: number;
80
+ avgDurationMs: number;
81
+ p50?: number;
82
+ p95?: number;
83
+ p99?: number;
84
+ byStatus: MetricStatusClasses;
85
+ topByTraffic: MetricTopEntry[];
86
+ topByErrors: MetricTopEntry[];
87
+ topByLatency: MetricTopEntry[];
88
+ }
89
+ export interface HttpMetricRollup<Id = string> {
90
+ _id?: Id;
91
+ bucketStart: number;
92
+ granularityMs: number;
93
+ method?: string;
94
+ route?: string;
95
+ name?: string;
96
+ count: number;
97
+ errorCount: number;
98
+ totalDurationMs: number;
99
+ minDurationMs?: number;
100
+ maxDurationMs?: number;
101
+ byStatus?: MetricStatusClasses;
102
+ }
103
+ export interface RouteFieldChange {
104
+ field: string;
105
+ added: any[];
106
+ removed: any[];
107
+ }
108
+ export interface RouteSyncLogQuery {
109
+ actor?: string;
110
+ service?: string;
111
+ event?: string;
112
+ routeKey?: string;
113
+ from?: number;
114
+ to?: number;
56
115
  }
57
116
  export interface RouteSyncLogEntry<Id = string> {
58
117
  _id?: Id;
59
118
  ts: number;
60
119
  service: string;
61
120
  level: 'info' | 'warn' | 'error';
121
+ actor?: string;
62
122
  event: string;
63
123
  routeKey?: string;
64
124
  method?: string;
@@ -67,5 +127,6 @@ export interface RouteSyncLogEntry<Id = string> {
67
127
  action?: string;
68
128
  owner?: string;
69
129
  conflictWith?: string;
130
+ changes?: RouteFieldChange[];
70
131
  message?: string;
71
132
  }
@@ -11,4 +11,5 @@ export declare abstract class AuthProviderRepository {
11
11
  abstract removeByName(name: string): Promise<StoredAuthProvider>;
12
12
  abstract listEnabled(): Promise<HandlerAuthConfig[]>;
13
13
  abstract filterPaginated(filter: Record<string, any>, page?: number, limit?: number): Promise<PaginationModel<StoredAuthProvider>>;
14
+ abstract search(q?: string, page?: number, limit?: number): Promise<PaginationModel<StoredAuthProvider>>;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth-provider.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/auth-provider.repository.ts"],"names":[],"mappings":";;;AAOA,MAAsB,sBAAsB;CAW3C;AAXD,wDAWC"}
1
+ {"version":3,"file":"auth-provider.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/auth-provider.repository.ts"],"names":[],"mappings":";;;AAOA,MAAsB,sBAAsB;CAY3C;AAZD,wDAYC"}
@@ -1,10 +1,14 @@
1
- import { HttpMetric, HttpMetricPoint, MetricQuery, MetricSeriesBucket, MetricSeriesQuery, TrackCallInput } from '../models';
1
+ import { HttpMetric, HttpMetricPoint, HttpMetricRollup, MetricQuery, MetricSeriesQuery, TrackCallInput } from '../models';
2
2
  export declare abstract class HttpMetricRepository {
3
3
  abstract increment(input: TrackCallInput): Promise<void>;
4
4
  abstract list(route?: string): Promise<(HttpMetric & {
5
5
  avgDurationMs: number;
6
+ errorRate: number;
6
7
  })[]>;
7
8
  abstract record(point: HttpMetricPoint): Promise<void>;
8
9
  abstract points(query: MetricQuery): Promise<HttpMetricPoint[]>;
9
- abstract series(query: MetricSeriesQuery): Promise<MetricSeriesBucket[]>;
10
+ abstract recordRollups(rollups: HttpMetricRollup[]): Promise<void>;
11
+ abstract rollupSeries(query: MetricSeriesQuery): Promise<HttpMetricRollup[]>;
12
+ abstract pruneRollups(olderThanTs: number): Promise<number>;
13
+ abstract prunePoints(olderThanTs: number): Promise<number>;
10
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-metric.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/http-metric.repository.ts"],"names":[],"mappings":";;;AASA,MAAsB,oBAAoB;CAczC;AAdD,oDAcC"}
1
+ {"version":3,"file":"http-metric.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/http-metric.repository.ts"],"names":[],"mappings":";;;AASA,MAAsB,oBAAoB;CAyBzC;AAzBD,oDAyBC"}
@@ -5,6 +5,8 @@ export type StoredHttpPath = Partial<PathDefinition> & {
5
5
  enabled?: boolean;
6
6
  owner?: string;
7
7
  routeKey?: string;
8
+ source?: 'microservice' | 'user';
9
+ modified?: boolean;
8
10
  };
9
11
  export declare abstract class HttpPathRepository {
10
12
  abstract insert(model: StoredHttpPath): Promise<StoredHttpPath>;
@@ -15,6 +17,7 @@ export declare abstract class HttpPathRepository {
15
17
  abstract listEnabled(): Promise<PathDefinition[]>;
16
18
  abstract filterPaginated(filter: Record<string, any>, page?: number, limit?: number): Promise<PaginationModel<StoredHttpPath>>;
17
19
  abstract filter(filter: Record<string, any>): Promise<StoredHttpPath[]>;
20
+ abstract search(q?: string, page?: number, limit?: number): Promise<PaginationModel<StoredHttpPath>>;
18
21
  findByOwner(owner: string): Promise<StoredHttpPath[]>;
19
22
  findByRouteKey(routeKey: string): Promise<StoredHttpPath[]>;
20
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-path.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/http-path.repository.ts"],"names":[],"mappings":";;;AAcA,MAAsB,kBAAkB;IAatC,WAAW,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC;IAID,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAtBD,gDAsBC"}
1
+ {"version":3,"file":"http-path.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/http-path.repository.ts"],"names":[],"mappings":";;;AAmBA,MAAsB,kBAAkB;IActC,WAAW,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC;IAID,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAvBD,gDAuBC"}
@@ -1,5 +1,8 @@
1
- import { RouteSyncLogEntry } from '../models';
1
+ import { PaginationModel } from '../../../common';
2
+ import { RouteSyncLogEntry, RouteSyncLogQuery } from '../models';
2
3
  export declare abstract class RouteSyncLogRepository {
3
4
  abstract insert(entry: RouteSyncLogEntry): Promise<RouteSyncLogEntry>;
4
5
  abstract list(limit?: number): Promise<RouteSyncLogEntry[]>;
6
+ abstract query(filter: RouteSyncLogQuery, page?: number, limit?: number): Promise<PaginationModel<RouteSyncLogEntry>>;
7
+ abstract prune(olderThanTs: number): Promise<number>;
5
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"route-sync-log.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/route-sync-log.repository.ts"],"names":[],"mappings":";;;AAMA,MAAsB,sBAAsB;CAG3C;AAHD,wDAGC"}
1
+ {"version":3,"file":"route-sync-log.repository.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/repository/route-sync-log.repository.ts"],"names":[],"mappings":";;;AAOA,MAAsB,sBAAsB;CAO3C;AAPD,wDAOC"}
@@ -9,5 +9,6 @@ export declare class GatewayAuthService {
9
9
  remove(name: string): Promise<StoredAuthProvider>;
10
10
  get(name: string): Promise<StoredAuthProvider>;
11
11
  list(page?: number, limit?: number): Promise<PaginationModel<StoredAuthProvider>>;
12
+ search(q?: string, page?: number, limit?: number): Promise<PaginationModel<StoredAuthProvider>>;
12
13
  export(): Promise<HandlerAuthConfig[]>;
13
14
  }
@@ -44,6 +44,9 @@ let GatewayAuthService = GatewayAuthService_1 = class GatewayAuthService {
44
44
  async list(page, limit) {
45
45
  return this.repo.filterPaginated({}, Number(page) || 1, Number(limit) || 10);
46
46
  }
47
+ async search(q, page, limit) {
48
+ return this.repo.search(q, Number(page) || 1, Number(limit) || 10);
49
+ }
47
50
  async export() {
48
51
  return this.repo.listEnabled();
49
52
  }
@@ -79,6 +82,15 @@ __decorate([
79
82
  __metadata("design:paramtypes", [Number, Number]),
80
83
  __metadata("design:returntype", Promise)
81
84
  ], GatewayAuthService.prototype, "list", null);
85
+ __decorate([
86
+ (0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.authSearch, 'rpc'),
87
+ __param(0, (0, broker_1.BrokerParam)('body', 'q')),
88
+ __param(1, (0, broker_1.BrokerParam)('body', 'page')),
89
+ __param(2, (0, broker_1.BrokerParam)('body', 'limit')),
90
+ __metadata("design:type", Function),
91
+ __metadata("design:paramtypes", [String, Number, Number]),
92
+ __metadata("design:returntype", Promise)
93
+ ], GatewayAuthService.prototype, "search", null);
82
94
  __decorate([
83
95
  (0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.authExport, 'rpc'),
84
96
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-auth.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,4CAAmE;AAEnE,yCAAyD;AACzD,oCAAiE;AACjE,qFAAoG;AAG7F,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAG7B,YAA6B,IAA4B;QAA5B,SAAI,GAAJ,IAAI,CAAwB;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IAED,CAAC;IAIxD,AAAN,KAAK,CAAC,MAAM,CAA8B,IAAY,EAA4B,KAAyB;QACzG,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAA8B,IAAY;QACpD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAGK,AAAN,KAAK,CAAC,GAAG,CAA8B,IAAY;QACjD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAA8B,IAAa,EAAgC,KAAc;QACjG,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;CACF,CAAA;AAnCY,gDAAkB;AAOvB;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAAgB,WAAA,IAAA,oBAAW,EAAC,WAAW,CAAC,CAAA;;;;gDAIhF;AAGK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;;;gDAGxC;AAGK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;;;6CAGrC;AAGK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAAiB,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;;;;8CAEnF;AAIK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;;;;gDAGrE;6BAlCU,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAIwB,iDAAsB;GAH9C,kBAAkB,CAmC9B"}
1
+ {"version":3,"file":"gateway-auth.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,4CAAmE;AAEnE,yCAAyD;AACzD,oCAAiE;AACjE,qFAAoG;AAG7F,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAG7B,YAA6B,IAA4B;QAA5B,SAAI,GAAJ,IAAI,CAAwB;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IAED,CAAC;IAIxD,AAAN,KAAK,CAAC,MAAM,CAA8B,IAAY,EAA4B,KAAyB;QACzG,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAA8B,IAAY;QACpD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAGK,AAAN,KAAK,CAAC,GAAG,CAA8B,IAAY;QACjD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,IAAI,CAA8B,IAAa,EAAgC,KAAc;QACjG,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAA2B,CAAU,EAA+B,IAAa,EAAgC,KAAc;QACzI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;CACF,CAAA;AAzCY,gDAAkB;AAOvB;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAAgB,WAAA,IAAA,oBAAW,EAAC,WAAW,CAAC,CAAA;;;;gDAIhF;AAGK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;;;gDAGxC;AAGK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;;;6CAGrC;AAGK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAAiB,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;;;;8CAEnF;AAIK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;IACxD,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAAc,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAAiB,WAAA,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;;;;gDAE3H;AAIK;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC;;;;gDAGrE;6BAxCU,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAIwB,iDAAsB;GAH9C,kBAAkB,CAyC9B"}
@@ -0,0 +1,10 @@
1
+ import { AmqpConnection } from '../../../amqp-lib';
2
+ import { GatewayHealthIndicator, GatewayHealthReport } from '../health';
3
+ export declare class GatewayHealthService {
4
+ private readonly amqp;
5
+ private readonly indicators?;
6
+ private readonly logger;
7
+ constructor(amqp: AmqpConnection, indicators?: GatewayHealthIndicator[]);
8
+ health(): Promise<GatewayHealthReport>;
9
+ private brokerStatus;
10
+ }
@@ -0,0 +1,64 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var GatewayHealthService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.GatewayHealthService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const amqp_lib_1 = require("../../../amqp-lib");
19
+ const broker_1 = require("../../broker");
20
+ const const_1 = require("../const");
21
+ const health_1 = require("../health");
22
+ let GatewayHealthService = GatewayHealthService_1 = class GatewayHealthService {
23
+ constructor(amqp, indicators) {
24
+ this.amqp = amqp;
25
+ this.indicators = indicators;
26
+ this.logger = new common_1.Logger(GatewayHealthService_1.name);
27
+ }
28
+ async health() {
29
+ const broker = this.brokerStatus();
30
+ const dependencies = {};
31
+ for (const indicator of this.indicators ?? []) {
32
+ try {
33
+ dependencies[indicator.name] = await indicator.check();
34
+ }
35
+ catch (e) {
36
+ dependencies[indicator.name] = { status: 'down', detail: e?.message };
37
+ }
38
+ }
39
+ const allUp = broker.status === 'up' && Object.values(dependencies).every((d) => d.status === 'up');
40
+ return { status: allUp ? 'up' : 'down', broker, dependencies };
41
+ }
42
+ brokerStatus() {
43
+ try {
44
+ return { status: this.amqp.connected ? 'up' : 'down' };
45
+ }
46
+ catch (e) {
47
+ return { status: 'down', detail: e?.message };
48
+ }
49
+ }
50
+ };
51
+ exports.GatewayHealthService = GatewayHealthService;
52
+ __decorate([
53
+ (0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.health, 'rpc'),
54
+ __metadata("design:type", Function),
55
+ __metadata("design:paramtypes", []),
56
+ __metadata("design:returntype", Promise)
57
+ ], GatewayHealthService.prototype, "health", null);
58
+ exports.GatewayHealthService = GatewayHealthService = GatewayHealthService_1 = __decorate([
59
+ (0, common_1.Injectable)(),
60
+ __param(1, (0, common_1.Optional)()),
61
+ __param(1, (0, common_1.Inject)(health_1.RLB_GW_HEALTH_INDICATORS)),
62
+ __metadata("design:paramtypes", [amqp_lib_1.AmqpConnection, Array])
63
+ ], GatewayHealthService);
64
+ //# sourceMappingURL=gateway-health.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-health.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-health.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAsE;AACtE,gDAAmD;AACnD,yCAA4C;AAC5C,oCAAiE;AACjE,sCAAsH;AAG/G,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAG/B,YACmB,IAAoB,EACS,UAAsD;QADnF,SAAI,GAAJ,IAAI,CAAgB;QAC0B,eAAU,GAAV,UAAU,CAA2B;QAJrF,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAK5D,CAAC;IASC,AAAN,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,MAAM,YAAY,GAAuC,EAAE,CAAC;QAC5D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;YACzD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAG,CAAW,EAAE,OAAO,EAAE,CAAC;YACnF,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QACpG,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACjE,CAAC;IAGO,YAAY;QAClB,IAAI,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAG,CAAW,EAAE,OAAO,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;CACF,CAAA;AArCY,oDAAoB;AAezB;IADL,IAAA,qBAAY,EAAC,2BAAmB,EAAE,wBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;;;;kDAajE;+BA3BU,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,iCAAwB,CAAC,CAAA;qCADtB,yBAAc;GAJ5B,oBAAoB,CAqChC"}
@@ -0,0 +1,13 @@
1
+ import { OnApplicationBootstrap, OnModuleDestroy } from '@nestjs/common';
2
+ import { GatewayAdminModuleOptions } from '../config/gateway-admin.config';
3
+ import { HttpMetricRepository } from '../repository/http-metric.repository';
4
+ export declare class GatewayMetricsRollupService implements OnApplicationBootstrap, OnModuleDestroy {
5
+ private readonly metrics;
6
+ private readonly logger;
7
+ private readonly enabled;
8
+ private timer?;
9
+ constructor(metrics: HttpMetricRepository, options?: GatewayAdminModuleOptions);
10
+ onApplicationBootstrap(): void;
11
+ onModuleDestroy(): void;
12
+ private rollup;
13
+ }
@@ -0,0 +1,63 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var GatewayMetricsRollupService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.GatewayMetricsRollupService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const const_1 = require("../const");
19
+ const http_metric_repository_1 = require("../repository/http-metric.repository");
20
+ const metrics_1 = require("../util/metrics");
21
+ const HOUR_MS = 3_600_000;
22
+ const DEFAULT_ROLLUP_RETENTION_DAYS = 365;
23
+ let GatewayMetricsRollupService = GatewayMetricsRollupService_1 = class GatewayMetricsRollupService {
24
+ constructor(metrics, options) {
25
+ this.metrics = metrics;
26
+ this.logger = new common_1.Logger(GatewayMetricsRollupService_1.name);
27
+ this.enabled = (options?.rollupRetentionDays ?? DEFAULT_ROLLUP_RETENTION_DAYS) > 0;
28
+ }
29
+ onApplicationBootstrap() {
30
+ if (!this.enabled) {
31
+ this.logger.log('[rollup] disabled (rollupRetentionDays <= 0)');
32
+ return;
33
+ }
34
+ this.timer = setInterval(() => void this.rollup(), HOUR_MS);
35
+ this.timer.unref?.();
36
+ }
37
+ onModuleDestroy() {
38
+ if (this.timer)
39
+ clearInterval(this.timer);
40
+ }
41
+ async rollup() {
42
+ const hourStart = Math.floor(Date.now() / HOUR_MS) * HOUR_MS - HOUR_MS;
43
+ try {
44
+ const points = await this.metrics.points({ from: hourStart, to: hourStart + HOUR_MS - 1 });
45
+ if (!points.length)
46
+ return;
47
+ const rollups = (0, metrics_1.aggregateRollups)(points, HOUR_MS);
48
+ await this.metrics.recordRollups(rollups);
49
+ this.logger.log(`[rollup] ${points.length} point(s) → ${rollups.length} hourly rollup(s) for ${new Date(hourStart).toISOString()}`);
50
+ }
51
+ catch (e) {
52
+ this.logger.warn(`[rollup] failed: ${e?.message}`);
53
+ }
54
+ }
55
+ };
56
+ exports.GatewayMetricsRollupService = GatewayMetricsRollupService;
57
+ exports.GatewayMetricsRollupService = GatewayMetricsRollupService = GatewayMetricsRollupService_1 = __decorate([
58
+ (0, common_1.Injectable)(),
59
+ __param(1, (0, common_1.Optional)()),
60
+ __param(1, (0, common_1.Inject)(const_1.RLB_GW_ADMIN_OPTIONS)),
61
+ __metadata("design:paramtypes", [http_metric_repository_1.HttpMetricRepository, Object])
62
+ ], GatewayMetricsRollupService);
63
+ //# sourceMappingURL=gateway-metrics-rollup.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-metrics-rollup.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-metrics-rollup.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA+G;AAE/G,oCAAgD;AAChD,iFAA4E;AAC5E,6CAAmD;AAEnD,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAQnC,IAAM,2BAA2B,mCAAjC,MAAM,2BAA2B;IAKtC,YACmB,OAA6B,EACJ,OAAmC;QAD5D,YAAO,GAAP,OAAO,CAAsB;QAL/B,WAAM,GAAG,IAAI,eAAM,CAAC,6BAA2B,CAAC,IAAI,CAAC,CAAC;QAQrE,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,mBAAmB,IAAI,6BAA6B,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,KAAK;YAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAGO,KAAK,CAAC,MAAM;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO;YAC3B,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,eAAe,OAAO,CAAC,MAAM,yBAAyB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACtI,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAqB,CAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF,CAAA;AAtCY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAQR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,4BAAoB,CAAC,CAAA;qCADf,6CAAoB;GANrC,2BAA2B,CAsCvC"}
@@ -1,4 +1,4 @@
1
- import { HttpMetric, HttpMetricPoint, MetricSeriesBucket, TrackCallInput } from '../models';
1
+ import { HttpMetric, HttpMetricPoint, HttpMetricRollup, MetricSeriesBucket, MetricSummary, TrackCallInput } from '../models';
2
2
  import { HttpMetricRepository } from '../repository/http-metric.repository';
3
3
  export declare class GatewayMetricsService {
4
4
  private readonly repo;
@@ -7,10 +7,11 @@ export declare class GatewayMetricsService {
7
7
  track(input: TrackCallInput): Promise<void>;
8
8
  get(route?: string): Promise<(HttpMetric & {
9
9
  avgDurationMs: number;
10
+ errorRate: number;
10
11
  })[]>;
11
- health(): Promise<{
12
- status: string;
13
- }>;
14
12
  series(bucketMs?: number | string, from?: number | string, to?: number | string, method?: string, route?: string, name?: string): Promise<MetricSeriesBucket[]>;
15
13
  points(method?: string, route?: string, from?: number | string, to?: number | string, limit?: number | string): Promise<HttpMetricPoint[]>;
14
+ summary(from?: number | string, to?: number | string, method?: string, route?: string, name?: string, topN?: number | string): Promise<MetricSummary>;
15
+ prometheus(route?: string): Promise<string>;
16
+ rollups(bucketMs?: number | string, from?: number | string, to?: number | string, method?: string, route?: string, name?: string): Promise<HttpMetricRollup[]>;
16
17
  }
@@ -18,6 +18,7 @@ const common_1 = require("@nestjs/common");
18
18
  const broker_1 = require("../../broker");
19
19
  const const_1 = require("../const");
20
20
  const http_metric_repository_1 = require("../repository/http-metric.repository");
21
+ const metrics_1 = require("../util/metrics");
21
22
  let GatewayMetricsService = GatewayMetricsService_1 = class GatewayMetricsService {
22
23
  constructor(repo) {
23
24
  this.repo = repo;
@@ -38,6 +39,7 @@ let GatewayMetricsService = GatewayMetricsService_1 = class GatewayMetricsServic
38
39
  mode: input.mode,
39
40
  status: input.status,
40
41
  durationMs: input.durationMs,
42
+ code: input.code,
41
43
  });
42
44
  }
43
45
  catch (error) {
@@ -47,18 +49,11 @@ let GatewayMetricsService = GatewayMetricsService_1 = class GatewayMetricsServic
47
49
  async get(route) {
48
50
  return this.repo.list(route);
49
51
  }
50
- async health() {
51
- return { status: 'ok' };
52
- }
53
52
  async series(bucketMs, from, to, method, route, name) {
54
- return this.repo.series({
55
- bucketMs: Number(bucketMs) || 60_000,
56
- from: from != null ? Number(from) : undefined,
57
- to: to != null ? Number(to) : undefined,
58
- method,
59
- route,
60
- name,
61
- });
53
+ const f = from != null ? Number(from) : undefined;
54
+ const t = to != null ? Number(to) : undefined;
55
+ const points = await this.repo.points({ method, route, name, from: f, to: t });
56
+ return (0, metrics_1.buildSeries)(points, { bucketMs: Number(bucketMs) || 60_000, from: f, to: t, method, route, name });
62
57
  }
63
58
  async points(method, route, from, to, limit) {
64
59
  return this.repo.points({
@@ -69,6 +64,25 @@ let GatewayMetricsService = GatewayMetricsService_1 = class GatewayMetricsServic
69
64
  limit: limit != null ? Number(limit) : undefined,
70
65
  });
71
66
  }
67
+ async summary(from, to, method, route, name, topN) {
68
+ const points = await this.repo.points({
69
+ method, route, name,
70
+ from: from != null ? Number(from) : undefined,
71
+ to: to != null ? Number(to) : undefined,
72
+ });
73
+ return (0, metrics_1.buildSummary)(points, Number(topN) || 10);
74
+ }
75
+ async prometheus(route) {
76
+ return (0, metrics_1.toPrometheus)(await this.repo.list(route));
77
+ }
78
+ async rollups(bucketMs, from, to, method, route, name) {
79
+ return this.repo.rollupSeries({
80
+ bucketMs: Number(bucketMs) || 3_600_000,
81
+ from: from != null ? Number(from) : undefined,
82
+ to: to != null ? Number(to) : undefined,
83
+ method, route, name,
84
+ });
85
+ }
72
86
  };
73
87
  exports.GatewayMetricsService = GatewayMetricsService;
74
88
  __decorate([
@@ -85,12 +99,6 @@ __decorate([
85
99
  __metadata("design:paramtypes", [String]),
86
100
  __metadata("design:returntype", Promise)
87
101
  ], GatewayMetricsService.prototype, "get", null);
88
- __decorate([
89
- (0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.health, 'rpc'),
90
- __metadata("design:type", Function),
91
- __metadata("design:paramtypes", []),
92
- __metadata("design:returntype", Promise)
93
- ], GatewayMetricsService.prototype, "health", null);
94
102
  __decorate([
95
103
  (0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.metricsSeries, 'rpc'),
96
104
  __param(0, (0, broker_1.BrokerParam)('body', 'bucketMs')),
@@ -114,6 +122,37 @@ __decorate([
114
122
  __metadata("design:paramtypes", [String, String, Object, Object, Object]),
115
123
  __metadata("design:returntype", Promise)
116
124
  ], GatewayMetricsService.prototype, "points", null);
125
+ __decorate([
126
+ (0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.metricsSummary, 'rpc'),
127
+ __param(0, (0, broker_1.BrokerParam)('body', 'from')),
128
+ __param(1, (0, broker_1.BrokerParam)('body', 'to')),
129
+ __param(2, (0, broker_1.BrokerParam)('body', 'method')),
130
+ __param(3, (0, broker_1.BrokerParam)('body', 'route')),
131
+ __param(4, (0, broker_1.BrokerParam)('body', 'name')),
132
+ __param(5, (0, broker_1.BrokerParam)('body', 'topN')),
133
+ __metadata("design:type", Function),
134
+ __metadata("design:paramtypes", [Object, Object, String, String, String, Object]),
135
+ __metadata("design:returntype", Promise)
136
+ ], GatewayMetricsService.prototype, "summary", null);
137
+ __decorate([
138
+ (0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.metricsPrometheus, 'rpc'),
139
+ __param(0, (0, broker_1.BrokerParam)('body', 'route')),
140
+ __metadata("design:type", Function),
141
+ __metadata("design:paramtypes", [String]),
142
+ __metadata("design:returntype", Promise)
143
+ ], GatewayMetricsService.prototype, "prometheus", null);
144
+ __decorate([
145
+ (0, broker_1.BrokerAction)(const_1.GATEWAY_ADMIN_TOPIC, const_1.GW_ADMIN_ACTIONS.metricsRollups, 'rpc'),
146
+ __param(0, (0, broker_1.BrokerParam)('body', 'bucketMs')),
147
+ __param(1, (0, broker_1.BrokerParam)('body', 'from')),
148
+ __param(2, (0, broker_1.BrokerParam)('body', 'to')),
149
+ __param(3, (0, broker_1.BrokerParam)('body', 'method')),
150
+ __param(4, (0, broker_1.BrokerParam)('body', 'route')),
151
+ __param(5, (0, broker_1.BrokerParam)('body', 'name')),
152
+ __metadata("design:type", Function),
153
+ __metadata("design:paramtypes", [Object, Object, Object, String, String, String]),
154
+ __metadata("design:returntype", Promise)
155
+ ], GatewayMetricsService.prototype, "rollups", null);
117
156
  exports.GatewayMetricsService = GatewayMetricsService = GatewayMetricsService_1 = __decorate([
118
157
  (0, common_1.Injectable)(),
119
158
  __metadata("design:paramtypes", [http_metric_repository_1.HttpMetricRepository])
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-metrics.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-metrics.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-metrics.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/gateway-admin/services/gateway-metrics.service.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,22 @@
1
1
  import { PaginationModel } from '../../../common';
2
2
  import { PathDefinition } from '../../proxy/config/path-definition.config';
3
+ import { RouteSyncLogEntry } from '../models';
3
4
  import { HttpPathRepository, StoredHttpPath } from '../repository/http-path.repository';
5
+ import { RouteSyncLogRepository } from '../repository/route-sync-log.repository';
4
6
  export declare class GatewayPathService {
5
7
  private readonly repo;
8
+ private readonly logs;
6
9
  private readonly logger;
7
- constructor(repo: HttpPathRepository);
8
- create(model: StoredHttpPath): Promise<StoredHttpPath>;
9
- update(id: string, model: StoredHttpPath): Promise<StoredHttpPath>;
10
+ constructor(repo: HttpPathRepository, logs: RouteSyncLogRepository);
11
+ create(model: StoredHttpPath, currentUser?: string): Promise<StoredHttpPath>;
12
+ update(id: string, model: StoredHttpPath, currentUser?: string): Promise<StoredHttpPath>;
10
13
  private assertNoRouteConflict;
11
- remove(id: string): Promise<StoredHttpPath>;
14
+ remove(id: string, currentUser?: string): Promise<StoredHttpPath>;
12
15
  get(id: string): Promise<StoredHttpPath>;
13
16
  list(page?: number, limit?: number): Promise<PaginationModel<StoredHttpPath>>;
17
+ searchRoutes(q?: string, page?: number, limit?: number): Promise<PaginationModel<StoredHttpPath>>;
14
18
  export(): Promise<PathDefinition[]>;
19
+ logList(limit?: number): Promise<RouteSyncLogEntry[]>;
20
+ logSearch(actor?: string, service?: string, event?: string, routeKey?: string, from?: number, to?: number, page?: number, limit?: number): Promise<PaginationModel<RouteSyncLogEntry>>;
21
+ private journal;
15
22
  }