@lenne.tech/nest-server 11.31.2 → 11.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/.claude/rules/architecture.md +2 -0
  2. package/.claude/rules/configurable-features.md +2 -0
  3. package/.claude/rules/versioning.md +5 -8
  4. package/CLAUDE.md +31 -4
  5. package/FRAMEWORK-API.md +7 -2
  6. package/README.md +1 -0
  7. package/dist/config.env.d.ts +4 -0
  8. package/dist/config.env.js +32 -2
  9. package/dist/config.env.js.map +1 -1
  10. package/dist/core/common/helpers/logging.helper.d.ts +1 -0
  11. package/dist/core/common/helpers/logging.helper.js +12 -0
  12. package/dist/core/common/helpers/logging.helper.js.map +1 -1
  13. package/dist/core/common/helpers/meta.helper.d.ts +1 -0
  14. package/dist/core/common/helpers/meta.helper.js +32 -1
  15. package/dist/core/common/helpers/meta.helper.js.map +1 -1
  16. package/dist/core/common/helpers/process-diagnostics.helper.d.ts +18 -0
  17. package/dist/core/common/helpers/process-diagnostics.helper.js +88 -0
  18. package/dist/core/common/helpers/process-diagnostics.helper.js.map +1 -0
  19. package/dist/core/common/interfaces/server-options.interface.d.ts +12 -0
  20. package/dist/core/common/services/brevo.service.d.ts +7 -1
  21. package/dist/core/common/services/brevo.service.js +37 -16
  22. package/dist/core/common/services/brevo.service.js.map +1 -1
  23. package/dist/core/common/services/email.service.d.ts +3 -1
  24. package/dist/core/common/services/email.service.js +33 -2
  25. package/dist/core/common/services/email.service.js.map +1 -1
  26. package/dist/core/common/services/template.service.js +9 -4
  27. package/dist/core/common/services/template.service.js.map +1 -1
  28. package/dist/core/modules/better-auth/core-better-auth-email-verification.service.js +9 -4
  29. package/dist/core/modules/better-auth/core-better-auth-email-verification.service.js.map +1 -1
  30. package/dist/core/modules/hub/core-hub-actions.controller.d.ts +22 -0
  31. package/dist/core/modules/hub/core-hub-actions.controller.js +141 -0
  32. package/dist/core/modules/hub/core-hub-actions.controller.js.map +1 -0
  33. package/dist/core/modules/hub/core-hub-html.service.d.ts +8 -0
  34. package/dist/core/modules/hub/core-hub-html.service.js +123 -0
  35. package/dist/core/modules/hub/core-hub-html.service.js.map +1 -0
  36. package/dist/core/modules/hub/core-hub.controller.d.ts +56 -0
  37. package/dist/core/modules/hub/core-hub.controller.js +398 -0
  38. package/dist/core/modules/hub/core-hub.controller.js.map +1 -0
  39. package/dist/core/modules/hub/core-hub.module.d.ts +17 -0
  40. package/dist/core/modules/hub/core-hub.module.js +109 -0
  41. package/dist/core/modules/hub/core-hub.module.js.map +1 -0
  42. package/dist/core/modules/hub/core-hub.service.d.ts +18 -0
  43. package/dist/core/modules/hub/core-hub.service.js +153 -0
  44. package/dist/core/modules/hub/core-hub.service.js.map +1 -0
  45. package/dist/core/modules/hub/helpers/hub-client-js.helper.d.ts +1 -0
  46. package/dist/core/modules/hub/helpers/hub-client-js.helper.js +755 -0
  47. package/dist/core/modules/hub/helpers/hub-client-js.helper.js.map +1 -0
  48. package/dist/core/modules/hub/helpers/hub-command-shape.helper.d.ts +1 -0
  49. package/dist/core/modules/hub/helpers/hub-command-shape.helper.js +33 -0
  50. package/dist/core/modules/hub/helpers/hub-command-shape.helper.js.map +1 -0
  51. package/dist/core/modules/hub/helpers/hub-mask.helper.d.ts +1 -0
  52. package/dist/core/modules/hub/helpers/hub-mask.helper.js +46 -0
  53. package/dist/core/modules/hub/helpers/hub-mask.helper.js.map +1 -0
  54. package/dist/core/modules/hub/helpers/hub-mermaid.helper.d.ts +10 -0
  55. package/dist/core/modules/hub/helpers/hub-mermaid.helper.js +35 -0
  56. package/dist/core/modules/hub/helpers/hub-mermaid.helper.js.map +1 -0
  57. package/dist/core/modules/hub/helpers/hub-shell.helper.d.ts +9 -0
  58. package/dist/core/modules/hub/helpers/hub-shell.helper.js +62 -0
  59. package/dist/core/modules/hub/helpers/hub-shell.helper.js.map +1 -0
  60. package/dist/core/modules/hub/hub-action-messages.d.ts +17 -0
  61. package/dist/core/modules/hub/hub-action-messages.js +21 -0
  62. package/dist/core/modules/hub/hub-action-messages.js.map +1 -0
  63. package/dist/core/modules/hub/hub-config.helper.d.ts +11 -0
  64. package/dist/core/modules/hub/hub-config.helper.js +164 -0
  65. package/dist/core/modules/hub/hub-config.helper.js.map +1 -0
  66. package/dist/core/modules/hub/hub-nav.d.ts +12 -0
  67. package/dist/core/modules/hub/hub-nav.js +43 -0
  68. package/dist/core/modules/hub/hub-nav.js.map +1 -0
  69. package/dist/core/modules/hub/hub-ring-buffer.d.ts +22 -0
  70. package/dist/core/modules/hub/hub-ring-buffer.js +59 -0
  71. package/dist/core/modules/hub/hub-ring-buffer.js.map +1 -0
  72. package/dist/core/modules/hub/hub.constants.d.ts +18 -0
  73. package/dist/core/modules/hub/hub.constants.js +22 -0
  74. package/dist/core/modules/hub/hub.constants.js.map +1 -0
  75. package/dist/core/modules/hub/index.d.ts +25 -0
  76. package/dist/core/modules/hub/index.js +42 -0
  77. package/dist/core/modules/hub/index.js.map +1 -0
  78. package/dist/core/modules/hub/interfaces/hub-config.interface.d.ts +115 -0
  79. package/dist/core/modules/hub/interfaces/hub-config.interface.js +3 -0
  80. package/dist/core/modules/hub/interfaces/hub-config.interface.js.map +1 -0
  81. package/dist/core/modules/hub/interfaces/hub-panels.interface.d.ts +231 -0
  82. package/dist/core/modules/hub/interfaces/hub-panels.interface.js +3 -0
  83. package/dist/core/modules/hub/interfaces/hub-panels.interface.js.map +1 -0
  84. package/dist/core/modules/hub/middleware/hub-trace.middleware.d.ts +8 -0
  85. package/dist/core/modules/hub/middleware/hub-trace.middleware.js +50 -0
  86. package/dist/core/modules/hub/middleware/hub-trace.middleware.js.map +1 -0
  87. package/dist/core/modules/hub/services/core-hub-actions.service.d.ts +48 -0
  88. package/dist/core/modules/hub/services/core-hub-actions.service.js +136 -0
  89. package/dist/core/modules/hub/services/core-hub-actions.service.js.map +1 -0
  90. package/dist/core/modules/hub/services/core-hub-db.service.d.ts +19 -0
  91. package/dist/core/modules/hub/services/core-hub-db.service.js +180 -0
  92. package/dist/core/modules/hub/services/core-hub-db.service.js.map +1 -0
  93. package/dist/core/modules/hub/services/core-hub-email.service.d.ts +24 -0
  94. package/dist/core/modules/hub/services/core-hub-email.service.js +148 -0
  95. package/dist/core/modules/hub/services/core-hub-email.service.js.map +1 -0
  96. package/dist/core/modules/hub/services/core-hub-mailbox.service.d.ts +20 -0
  97. package/dist/core/modules/hub/services/core-hub-mailbox.service.js +103 -0
  98. package/dist/core/modules/hub/services/core-hub-mailbox.service.js.map +1 -0
  99. package/dist/core/modules/hub/services/core-hub-migrations.service.d.ts +25 -0
  100. package/dist/core/modules/hub/services/core-hub-migrations.service.js +115 -0
  101. package/dist/core/modules/hub/services/core-hub-migrations.service.js.map +1 -0
  102. package/dist/core/modules/hub/services/core-hub-sources.service.d.ts +28 -0
  103. package/dist/core/modules/hub/services/core-hub-sources.service.js +187 -0
  104. package/dist/core/modules/hub/services/core-hub-sources.service.js.map +1 -0
  105. package/dist/core/modules/hub/services/hub-log-buffer.service.d.ts +24 -0
  106. package/dist/core/modules/hub/services/hub-log-buffer.service.js +210 -0
  107. package/dist/core/modules/hub/services/hub-log-buffer.service.js.map +1 -0
  108. package/dist/core/modules/hub/services/hub-query-profiler.service.d.ts +38 -0
  109. package/dist/core/modules/hub/services/hub-query-profiler.service.js +235 -0
  110. package/dist/core/modules/hub/services/hub-query-profiler.service.js.map +1 -0
  111. package/dist/core/modules/hub/services/hub-trace-buffer.service.d.ts +18 -0
  112. package/dist/core/modules/hub/services/hub-trace-buffer.service.js +123 -0
  113. package/dist/core/modules/hub/services/hub-trace-buffer.service.js.map +1 -0
  114. package/dist/core.module.js +42 -1
  115. package/dist/core.module.js.map +1 -1
  116. package/dist/index.d.ts +2 -0
  117. package/dist/index.js +2 -0
  118. package/dist/index.js.map +1 -1
  119. package/dist/main.js +5 -2
  120. package/dist/main.js.map +1 -1
  121. package/dist/tsconfig.build.tsbuildinfo +1 -1
  122. package/docs/REQUEST-LIFECYCLE.md +2 -0
  123. package/docs/brevo-manual-test.md +166 -0
  124. package/docs/security-overrides.md +90 -0
  125. package/migration-guides/11.31.2-to-11.31.3.md +135 -0
  126. package/migration-guides/11.31.3-to-11.32.0.md +254 -0
  127. package/package.json +16 -14
  128. package/src/config.env.ts +75 -2
  129. package/src/core/common/helpers/logging.helper.spec.ts +61 -0
  130. package/src/core/common/helpers/logging.helper.ts +48 -0
  131. package/src/core/common/helpers/meta.helper.ts +46 -1
  132. package/src/core/common/helpers/process-diagnostics.helper.spec.ts +310 -0
  133. package/src/core/common/helpers/process-diagnostics.helper.ts +321 -0
  134. package/src/core/common/interfaces/server-options.interface.ts +78 -0
  135. package/src/core/common/services/brevo.service.spec.ts +266 -0
  136. package/src/core/common/services/brevo.service.ts +100 -17
  137. package/src/core/common/services/email.service.ts +33 -1
  138. package/src/core/common/services/template.service.ts +21 -16
  139. package/src/core/modules/better-auth/core-better-auth-email-verification.service.ts +14 -4
  140. package/src/core/modules/hub/INTEGRATION-CHECKLIST.md +64 -0
  141. package/src/core/modules/hub/README.md +159 -0
  142. package/src/core/modules/hub/core-hub-actions.controller.ts +137 -0
  143. package/src/core/modules/hub/core-hub-html.service.ts +135 -0
  144. package/src/core/modules/hub/core-hub.controller.ts +286 -0
  145. package/src/core/modules/hub/core-hub.module.spec.ts +108 -0
  146. package/src/core/modules/hub/core-hub.module.ts +159 -0
  147. package/src/core/modules/hub/core-hub.service.ts +169 -0
  148. package/src/core/modules/hub/helpers/hub-client-js.helper.ts +768 -0
  149. package/src/core/modules/hub/helpers/hub-command-shape.helper.spec.ts +48 -0
  150. package/src/core/modules/hub/helpers/hub-command-shape.helper.ts +47 -0
  151. package/src/core/modules/hub/helpers/hub-mask.helper.spec.ts +67 -0
  152. package/src/core/modules/hub/helpers/hub-mask.helper.ts +78 -0
  153. package/src/core/modules/hub/helpers/hub-mermaid.helper.spec.ts +54 -0
  154. package/src/core/modules/hub/helpers/hub-mermaid.helper.ts +62 -0
  155. package/src/core/modules/hub/helpers/hub-shell.helper.spec.ts +106 -0
  156. package/src/core/modules/hub/helpers/hub-shell.helper.ts +90 -0
  157. package/src/core/modules/hub/hub-action-messages.ts +47 -0
  158. package/src/core/modules/hub/hub-config.helper.spec.ts +108 -0
  159. package/src/core/modules/hub/hub-config.helper.ts +233 -0
  160. package/src/core/modules/hub/hub-nav.ts +66 -0
  161. package/src/core/modules/hub/hub-ring-buffer.spec.ts +95 -0
  162. package/src/core/modules/hub/hub-ring-buffer.ts +101 -0
  163. package/src/core/modules/hub/hub.constants.ts +84 -0
  164. package/src/core/modules/hub/index.ts +25 -0
  165. package/src/core/modules/hub/interfaces/hub-config.interface.ts +265 -0
  166. package/src/core/modules/hub/interfaces/hub-panels.interface.ts +186 -0
  167. package/src/core/modules/hub/middleware/hub-trace.middleware.ts +45 -0
  168. package/src/core/modules/hub/services/core-hub-actions.service.ts +133 -0
  169. package/src/core/modules/hub/services/core-hub-db.service.ts +185 -0
  170. package/src/core/modules/hub/services/core-hub-email.service.ts +158 -0
  171. package/src/core/modules/hub/services/core-hub-mailbox.service.spec.ts +116 -0
  172. package/src/core/modules/hub/services/core-hub-mailbox.service.ts +121 -0
  173. package/src/core/modules/hub/services/core-hub-migrations.service.ts +112 -0
  174. package/src/core/modules/hub/services/core-hub-sources.service.ts +194 -0
  175. package/src/core/modules/hub/services/hub-log-buffer.service.ts +252 -0
  176. package/src/core/modules/hub/services/hub-query-profiler.service.ts +274 -0
  177. package/src/core/modules/hub/services/hub-trace-buffer.service.spec.ts +112 -0
  178. package/src/core/modules/hub/services/hub-trace-buffer.service.ts +134 -0
  179. package/src/core.module.ts +61 -1
  180. package/src/index.ts +7 -0
  181. package/src/main.ts +22 -3
@@ -0,0 +1,210 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.HubLogBufferService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const util_1 = require("util");
18
+ const logging_helper_1 = require("../../../common/helpers/logging.helper");
19
+ const hub_constants_1 = require("../hub.constants");
20
+ const hub_ring_buffer_1 = require("../hub-ring-buffer");
21
+ class HubDelegatingLogger {
22
+ capture;
23
+ previous;
24
+ fallback;
25
+ detached = false;
26
+ constructor(capture, previous, fallback) {
27
+ this.capture = capture;
28
+ this.previous = previous;
29
+ this.fallback = fallback;
30
+ }
31
+ debug(message, ...params) {
32
+ this.handle('debug', message, params);
33
+ }
34
+ error(message, ...params) {
35
+ this.handle('error', message, params);
36
+ }
37
+ fatal(message, ...params) {
38
+ this.handle('fatal', message, params);
39
+ }
40
+ log(message, ...params) {
41
+ this.handle('log', message, params);
42
+ }
43
+ setLogLevels(levels) {
44
+ this.fallback.setLogLevels?.(levels);
45
+ this.previous?.setLogLevels?.(levels);
46
+ }
47
+ verbose(message, ...params) {
48
+ this.handle('verbose', message, params);
49
+ }
50
+ warn(message, ...params) {
51
+ this.handle('warn', message, params);
52
+ }
53
+ handle(level, message, params) {
54
+ if (!this.detached) {
55
+ try {
56
+ this.capture(level, message, params);
57
+ }
58
+ catch {
59
+ }
60
+ }
61
+ const target = this.previous ?? this.fallback;
62
+ try {
63
+ target[level]?.(message, ...params);
64
+ }
65
+ catch {
66
+ }
67
+ }
68
+ }
69
+ let HubLogBufferService = class HubLogBufferService {
70
+ config;
71
+ buffer;
72
+ cfg;
73
+ delegating;
74
+ excludeContexts = new Set();
75
+ previousRef;
76
+ constructor(config) {
77
+ this.config = config;
78
+ }
79
+ attach() {
80
+ if (this.config.collectors.logs === false) {
81
+ return;
82
+ }
83
+ if (!this.cfg) {
84
+ this.cfg = this.config.collectors.logs;
85
+ this.buffer = new hub_ring_buffer_1.HubRingBuffer(this.cfg.capacity);
86
+ this.excludeContexts = new Set(this.cfg.excludeContexts);
87
+ }
88
+ const current = this.staticRef();
89
+ if (current === this.delegating) {
90
+ return;
91
+ }
92
+ const previous = current instanceof HubDelegatingLogger ? undefined : current;
93
+ const fallback = new common_1.ConsoleLogger();
94
+ const levels = common_1.Logger.logLevels;
95
+ if (levels) {
96
+ fallback.setLogLevels(levels);
97
+ }
98
+ this.previousRef = previous;
99
+ this.delegating = new HubDelegatingLogger((level, message, params) => this.push(level, message, params), previous, fallback);
100
+ common_1.Logger.overrideLogger(this.delegating);
101
+ }
102
+ clear() {
103
+ this.buffer?.clear();
104
+ }
105
+ detach() {
106
+ if (this.delegating) {
107
+ this.delegating.detached = true;
108
+ }
109
+ if (this.delegating && this.staticRef() === this.delegating) {
110
+ common_1.Logger.overrideLogger(this.previousRef ?? undefined);
111
+ }
112
+ this.delegating = undefined;
113
+ }
114
+ get enabled() {
115
+ return this.config.collectors.logs !== false;
116
+ }
117
+ getData(since) {
118
+ this.selfHeal();
119
+ const records = !this.buffer ? [] : since === undefined ? this.buffer.recent() : this.buffer.since(since);
120
+ return { cursor: this.buffer?.lastSeq ?? -1, dropped: this.buffer?.firstRetainedSeq ?? -1, records };
121
+ }
122
+ onModuleDestroy() {
123
+ this.detach();
124
+ }
125
+ onModuleInit() {
126
+ this.attach();
127
+ }
128
+ extract(level, message, params) {
129
+ const parts = [...params];
130
+ let context;
131
+ if (parts.length && typeof parts[parts.length - 1] === 'string') {
132
+ context = parts.pop();
133
+ }
134
+ if (context && this.excludeContexts.has(context)) {
135
+ return undefined;
136
+ }
137
+ let stack;
138
+ if (level === 'error' &&
139
+ parts.length &&
140
+ typeof parts[parts.length - 1] === 'string' &&
141
+ parts[parts.length - 1].includes('\n at ')) {
142
+ stack = parts.pop().slice(0, 2000);
143
+ }
144
+ const text = this.stringify(message, parts);
145
+ const max = this.cfg?.maxMessageLength ?? 2048;
146
+ const redactInput = text.length > max + 4096 ? text.slice(0, max + 4096) : text;
147
+ const redacted = (0, logging_helper_1.redactSensitiveText)(redactInput);
148
+ return {
149
+ context,
150
+ level,
151
+ message: redacted.length > max ? redacted.slice(0, max) + '… [truncated]' : redacted,
152
+ seq: 0,
153
+ stack,
154
+ timestamp: 0,
155
+ };
156
+ }
157
+ push(level, message, params) {
158
+ if (!this.buffer || !this.cfg) {
159
+ return;
160
+ }
161
+ if (!this.cfg.levels.includes(level)) {
162
+ return;
163
+ }
164
+ const record = this.extract(level, message, params);
165
+ if (record) {
166
+ this.buffer.add({
167
+ context: record.context,
168
+ level: record.level,
169
+ message: record.message,
170
+ stack: record.stack,
171
+ });
172
+ }
173
+ }
174
+ selfHeal() {
175
+ if (!this.enabled) {
176
+ return;
177
+ }
178
+ const current = this.staticRef();
179
+ if (current !== this.delegating && current !== undefined) {
180
+ this.attach();
181
+ }
182
+ }
183
+ staticRef() {
184
+ return common_1.Logger.staticInstanceRef;
185
+ }
186
+ stringify(message, params) {
187
+ const one = (value) => {
188
+ if (typeof value === 'string') {
189
+ return value;
190
+ }
191
+ if (value instanceof Error) {
192
+ return `${value.name}: ${value.message}`;
193
+ }
194
+ try {
195
+ return JSON.stringify(value);
196
+ }
197
+ catch {
198
+ return (0, util_1.inspect)(value, { breakLength: Infinity, depth: 2 });
199
+ }
200
+ };
201
+ return [message, ...params].map(one).join(' | ');
202
+ }
203
+ };
204
+ exports.HubLogBufferService = HubLogBufferService;
205
+ exports.HubLogBufferService = HubLogBufferService = __decorate([
206
+ (0, common_1.Injectable)(),
207
+ __param(0, (0, common_1.Inject)(hub_constants_1.HUB_CONFIG)),
208
+ __metadata("design:paramtypes", [Object])
209
+ ], HubLogBufferService);
210
+ //# sourceMappingURL=hub-log-buffer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-log-buffer.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/hub/services/hub-log-buffer.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { Logger, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
2
+ import { Connection } from 'mongoose';
3
+ import { HubQueriesData, HubQueryRecord } from '../interfaces/hub-panels.interface';
4
+ import { ResolvedHubConfig } from '../interfaces/hub-config.interface';
5
+ export declare class HubQueryProfilerService implements OnModuleDestroy, OnModuleInit {
6
+ protected readonly config: ResolvedHubConfig;
7
+ protected readonly connection?: Connection;
8
+ protected readonly logger: Logger;
9
+ private buffer?;
10
+ private client?;
11
+ private cfg?;
12
+ private ignore;
13
+ private readonly onFailed;
14
+ private readonly onStarted;
15
+ private readonly onSucceeded;
16
+ private readonly pending;
17
+ constructor(config: ResolvedHubConfig, connection?: Connection);
18
+ clear(): void;
19
+ get enabled(): boolean;
20
+ getData(): HubQueriesData;
21
+ onModuleDestroy(): void;
22
+ onModuleInit(): void;
23
+ protected safe(fn: () => void): void;
24
+ protected classify(durationMs: number): HubQueryRecord['classification'];
25
+ protected handleFinished(event: {
26
+ duration?: number;
27
+ requestId?: number;
28
+ }, errorMessage?: string): void;
29
+ protected handleStarted(event: {
30
+ command?: Record<string, unknown>;
31
+ commandName?: string;
32
+ requestId?: number;
33
+ }): void;
34
+ private buildShape;
35
+ private extractCollection;
36
+ private summary;
37
+ private topTemplates;
38
+ }
@@ -0,0 +1,235 @@
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 HubQueryProfilerService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.HubQueryProfilerService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const mongoose_1 = require("@nestjs/mongoose");
19
+ const mongoose_2 = require("mongoose");
20
+ const logging_helper_1 = require("../../../common/helpers/logging.helper");
21
+ const hub_constants_1 = require("../hub.constants");
22
+ const hub_ring_buffer_1 = require("../hub-ring-buffer");
23
+ const hub_command_shape_helper_1 = require("../helpers/hub-command-shape.helper");
24
+ const DEFAULT_IGNORE = new Set([
25
+ 'authenticate',
26
+ 'buildinfo',
27
+ 'connectionstatus',
28
+ 'dbstats',
29
+ 'getnonce',
30
+ 'getparameter',
31
+ 'hello',
32
+ 'ismaster',
33
+ 'listcollections',
34
+ 'listindexes',
35
+ 'logout',
36
+ 'ping',
37
+ 'saslcontinue',
38
+ 'saslstart',
39
+ ]);
40
+ const SHAPED_FIELDS = ['filter', 'query', 'pipeline', 'sort', 'projection', 'q', 'u', 'updates', 'deletes'];
41
+ let HubQueryProfilerService = HubQueryProfilerService_1 = class HubQueryProfilerService {
42
+ config;
43
+ connection;
44
+ logger = new common_1.Logger(HubQueryProfilerService_1.name);
45
+ buffer;
46
+ client;
47
+ cfg;
48
+ ignore = DEFAULT_IGNORE;
49
+ onFailed = (e) => this.safe(() => this.handleFinished(e, e?.failure?.message));
50
+ onStarted = (e) => this.safe(() => this.handleStarted(e));
51
+ onSucceeded = (e) => this.safe(() => this.handleFinished(e, undefined));
52
+ pending = new Map();
53
+ constructor(config, connection) {
54
+ this.config = config;
55
+ this.connection = connection;
56
+ }
57
+ clear() {
58
+ this.buffer?.clear();
59
+ this.pending.clear();
60
+ }
61
+ get enabled() {
62
+ return this.config.collectors.queries !== false;
63
+ }
64
+ getData() {
65
+ const records = this.buffer?.recent() ?? [];
66
+ return {
67
+ cursor: this.buffer?.lastSeq ?? -1,
68
+ recent: records.slice(-100),
69
+ slowest: [...records].sort((a, b) => b.durationMs - a.durationMs).slice(0, 10),
70
+ summary: this.summary(records),
71
+ topTemplates: this.topTemplates(records),
72
+ };
73
+ }
74
+ onModuleDestroy() {
75
+ if (!this.client) {
76
+ return;
77
+ }
78
+ const off = this.client.removeListener ?? this.client.off;
79
+ off?.call(this.client, 'commandStarted', this.onStarted);
80
+ off?.call(this.client, 'commandSucceeded', this.onSucceeded);
81
+ off?.call(this.client, 'commandFailed', this.onFailed);
82
+ this.pending.clear();
83
+ this.client = undefined;
84
+ }
85
+ onModuleInit() {
86
+ if (this.config.collectors.queries === false) {
87
+ return;
88
+ }
89
+ this.cfg = this.config.collectors.queries;
90
+ this.buffer = new hub_ring_buffer_1.HubRingBuffer(this.cfg.capacity);
91
+ if (this.cfg.ignoreCommands?.length) {
92
+ this.ignore = new Set(this.cfg.ignoreCommands.map((c) => c.toLowerCase()));
93
+ }
94
+ const client = this.connection?.getClient?.();
95
+ if (!client) {
96
+ return;
97
+ }
98
+ if (client.options?.monitorCommands !== true) {
99
+ this.logger.warn('hub.collectors.queries is enabled but the MongoDB driver was not started with monitorCommands — query profiling is inactive.');
100
+ return;
101
+ }
102
+ this.client = client;
103
+ client.on('commandStarted', this.onStarted);
104
+ client.on('commandSucceeded', this.onSucceeded);
105
+ client.on('commandFailed', this.onFailed);
106
+ }
107
+ safe(fn) {
108
+ try {
109
+ fn();
110
+ }
111
+ catch {
112
+ }
113
+ }
114
+ classify(durationMs) {
115
+ if (!this.cfg) {
116
+ return 'ok';
117
+ }
118
+ if (durationMs > this.cfg.criticalMs) {
119
+ return 'critical';
120
+ }
121
+ if (durationMs > this.cfg.warnMs) {
122
+ return 'warn';
123
+ }
124
+ return 'ok';
125
+ }
126
+ handleFinished(event, errorMessage) {
127
+ const requestId = event?.requestId;
128
+ if (requestId === undefined) {
129
+ return;
130
+ }
131
+ const pending = this.pending.get(requestId);
132
+ this.pending.delete(requestId);
133
+ if (!pending || !this.buffer) {
134
+ return;
135
+ }
136
+ const durationMs = Number(event.duration ?? 0);
137
+ this.buffer.add({
138
+ classification: this.classify(durationMs),
139
+ collection: pending.collection,
140
+ commandSummary: pending.shape,
141
+ durationMs,
142
+ errorMessage: errorMessage ? (0, logging_helper_1.redactSensitiveText)(String(errorMessage)).slice(0, 300) : undefined,
143
+ failed: !!errorMessage,
144
+ operation: pending.operation,
145
+ requestId,
146
+ });
147
+ }
148
+ handleStarted(event) {
149
+ const operation = String(event?.commandName ?? '').toLowerCase();
150
+ if (!operation || this.ignore.has(operation) || event.requestId === undefined) {
151
+ return;
152
+ }
153
+ const command = event.command ?? {};
154
+ const collection = this.extractCollection(command, operation);
155
+ const shape = this.buildShape(operation, collection, command);
156
+ if (this.pending.size >= hub_constants_1.HUB_QUERY_PENDING_LIMIT) {
157
+ const oldest = this.pending.keys().next().value;
158
+ if (oldest !== undefined) {
159
+ this.pending.delete(oldest);
160
+ }
161
+ }
162
+ this.pending.set(event.requestId, { collection, operation, shape });
163
+ }
164
+ buildShape(operation, collection, command) {
165
+ const sections = {};
166
+ for (const field of SHAPED_FIELDS) {
167
+ if (command[field] !== undefined) {
168
+ sections[field] = (0, hub_command_shape_helper_1.normalizeCommandShape)(command[field]);
169
+ }
170
+ }
171
+ if (Array.isArray(command.documents)) {
172
+ sections.documents = `documents(${command.documents.length})`;
173
+ }
174
+ const maxLen = this.cfg?.maxShapeLength ?? 512;
175
+ return `${operation} ${collection} ${JSON.stringify(sections)}`.slice(0, maxLen);
176
+ }
177
+ extractCollection(command, operation) {
178
+ const byName = command[operation] ?? command[Object.keys(command)[0]];
179
+ if (typeof byName === 'string') {
180
+ return byName;
181
+ }
182
+ if (typeof command.collection === 'string') {
183
+ return command.collection;
184
+ }
185
+ return '(unknown)';
186
+ }
187
+ summary(records) {
188
+ let total = 0;
189
+ let warnCount = 0;
190
+ let criticalCount = 0;
191
+ let failedCount = 0;
192
+ for (const r of records) {
193
+ total += r.durationMs;
194
+ if (r.classification === 'warn') {
195
+ warnCount++;
196
+ }
197
+ if (r.classification === 'critical') {
198
+ criticalCount++;
199
+ }
200
+ if (r.failed) {
201
+ failedCount++;
202
+ }
203
+ }
204
+ return {
205
+ avgMs: records.length ? total / records.length : 0,
206
+ criticalCount,
207
+ failedCount,
208
+ total: records.length,
209
+ warnCount,
210
+ };
211
+ }
212
+ topTemplates(records) {
213
+ const map = new Map();
214
+ for (const r of records) {
215
+ const entry = map.get(r.commandSummary) ?? { count: 0, max: 0, total: 0 };
216
+ entry.count++;
217
+ entry.total += r.durationMs;
218
+ entry.max = Math.max(entry.max, r.durationMs);
219
+ map.set(r.commandSummary, entry);
220
+ }
221
+ return [...map.entries()]
222
+ .map(([template, e]) => ({ avgMs: e.total / e.count, count: e.count, maxMs: e.max, template }))
223
+ .sort((a, b) => b.count - a.count)
224
+ .slice(0, 10);
225
+ }
226
+ };
227
+ exports.HubQueryProfilerService = HubQueryProfilerService;
228
+ exports.HubQueryProfilerService = HubQueryProfilerService = HubQueryProfilerService_1 = __decorate([
229
+ (0, common_1.Injectable)(),
230
+ __param(0, (0, common_1.Inject)(hub_constants_1.HUB_CONFIG)),
231
+ __param(1, (0, common_1.Optional)()),
232
+ __param(1, (0, mongoose_1.InjectConnection)()),
233
+ __metadata("design:paramtypes", [Object, mongoose_2.Connection])
234
+ ], HubQueryProfilerService);
235
+ //# sourceMappingURL=hub-query-profiler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-query-profiler.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/hub/services/hub-query-profiler.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Request, Response } from 'express';
2
+ import { HubTracesData } from '../interfaces/hub-panels.interface';
3
+ import { ResolvedHubConfig } from '../interfaces/hub-config.interface';
4
+ export declare class HubTraceBufferService {
5
+ protected readonly config: ResolvedHubConfig;
6
+ private readonly buffer?;
7
+ private readonly cfg?;
8
+ private readonly excludePrefixes;
9
+ constructor(config: ResolvedHubConfig);
10
+ clear(): void;
11
+ get enabled(): boolean;
12
+ getData(since?: number): HubTracesData;
13
+ isExcluded(path: string): boolean;
14
+ record(req: Request, res: Response, durationMs: number, aborted: boolean, fullPath?: string): void;
15
+ private collapseParams;
16
+ private graphqlOperation;
17
+ private routePattern;
18
+ }
@@ -0,0 +1,123 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.HubTraceBufferService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const hub_constants_1 = require("../hub.constants");
18
+ const hub_ring_buffer_1 = require("../hub-ring-buffer");
19
+ let HubTraceBufferService = class HubTraceBufferService {
20
+ config;
21
+ buffer;
22
+ cfg;
23
+ excludePrefixes;
24
+ constructor(config) {
25
+ this.config = config;
26
+ if (config.collectors.traces !== false) {
27
+ this.cfg = config.collectors.traces;
28
+ this.buffer = new hub_ring_buffer_1.HubRingBuffer(this.cfg.capacity);
29
+ }
30
+ this.excludePrefixes = [...(this.cfg?.excludePaths ?? []), '/' + config.path];
31
+ }
32
+ clear() {
33
+ this.buffer?.clear();
34
+ }
35
+ get enabled() {
36
+ return this.config.collectors.traces !== false;
37
+ }
38
+ getData(since) {
39
+ const records = !this.buffer ? [] : since === undefined ? this.buffer.recent() : this.buffer.since(since);
40
+ let totalMs = 0;
41
+ let slowCount = 0;
42
+ let errorCount = 0;
43
+ for (const r of records) {
44
+ totalMs += r.durationMs;
45
+ if (r.slow) {
46
+ slowCount++;
47
+ }
48
+ if (r.error) {
49
+ errorCount++;
50
+ }
51
+ }
52
+ return {
53
+ cursor: this.buffer?.lastSeq ?? -1,
54
+ dropped: this.buffer?.firstRetainedSeq ?? -1,
55
+ summary: { avgMs: records.length ? totalMs / records.length : 0, errorCount, slowCount, total: records.length },
56
+ traces: records,
57
+ };
58
+ }
59
+ isExcluded(path) {
60
+ return this.excludePrefixes.some((prefix) => path === prefix || path.startsWith(prefix + '/'));
61
+ }
62
+ record(req, res, durationMs, aborted, fullPath) {
63
+ if (!this.buffer || !this.cfg) {
64
+ return;
65
+ }
66
+ const statusCode = res.statusCode;
67
+ const contentLength = Number(res.getHeader('content-length')) || undefined;
68
+ this.buffer.add({
69
+ aborted: aborted || undefined,
70
+ contentLength,
71
+ durationMs,
72
+ error: statusCode >= 500 || undefined,
73
+ graphqlOperation: this.cfg.captureGraphQlOperation ? this.graphqlOperation(req) : undefined,
74
+ method: req.method,
75
+ path: this.routePattern(req, fullPath),
76
+ slow: durationMs > this.cfg.slowMs || undefined,
77
+ statusCode,
78
+ userId: req.user?.id,
79
+ });
80
+ }
81
+ collapseParams(path) {
82
+ return path
83
+ .replace(/\/[a-f0-9]{24}(?=\/|$)/gi, '/:id')
84
+ .replace(/\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(?=\/|$)/gi, '/:id')
85
+ .replace(/\/\d+(?=\/|$)/g, '/:n');
86
+ }
87
+ graphqlOperation(req) {
88
+ if (req.method !== 'POST' || !req.path.endsWith('/graphql')) {
89
+ return undefined;
90
+ }
91
+ const body = req.body;
92
+ if (Array.isArray(body)) {
93
+ return `batch(${body.length})`;
94
+ }
95
+ const op = body?.operationName;
96
+ if (op) {
97
+ return op;
98
+ }
99
+ const query = body?.query;
100
+ if (typeof query === 'string') {
101
+ const match = /\b(query|mutation|subscription)\s+([A-Za-z_]\w*)/.exec(query.slice(0, 500));
102
+ if (match) {
103
+ return match[2];
104
+ }
105
+ }
106
+ return 'anonymous';
107
+ }
108
+ routePattern(req, fullPath) {
109
+ const route = req.route?.path;
110
+ const base = req.baseUrl || '';
111
+ if (route && base) {
112
+ return base + (route === '/' ? '' : route) || '/';
113
+ }
114
+ return this.collapseParams(fullPath || req.baseUrl || req.path);
115
+ }
116
+ };
117
+ exports.HubTraceBufferService = HubTraceBufferService;
118
+ exports.HubTraceBufferService = HubTraceBufferService = __decorate([
119
+ (0, common_1.Injectable)(),
120
+ __param(0, (0, common_1.Inject)(hub_constants_1.HUB_CONFIG)),
121
+ __metadata("design:paramtypes", [Object])
122
+ ], HubTraceBufferService);
123
+ //# sourceMappingURL=hub-trace-buffer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-trace-buffer.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/hub/services/hub-trace-buffer.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAGpD,oDAA8C;AAC9C,wDAAmD;AAgB5C,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAKmB;IAJlC,MAAM,CAA8B;IACpC,GAAG,CAA6D;IAChE,eAAe,CAAW;IAE3C,YAAmD,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;QAC1E,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,+BAAa,CAAc,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1G,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,CAAC,UAAU,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACX,SAAS,EAAE,CAAC;YACd,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,CAAC;YAClC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB,IAAI,CAAC,CAAC;YAC5C,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;YAC/G,MAAM,EAAE,OAAO;SAChB,CAAC;IACJ,CAAC;IAGD,UAAU,CAAC,IAAY;QAGrB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;IACjG,CAAC;IAGD,MAAM,CAAC,GAAY,EAAE,GAAa,EAAE,UAAkB,EAAE,OAAgB,EAAE,QAAiB;QACzF,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,SAAS,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACd,OAAO,EAAE,OAAO,IAAI,SAAS;YAC7B,aAAa;YACb,UAAU;YACV,KAAK,EAAE,UAAU,IAAI,GAAG,IAAI,SAAS;YACrC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3F,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;YACtC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,SAAS;YAC/C,UAAU;YACV,MAAM,EAAG,GAA6C,CAAC,IAAI,EAAE,EAAE;SACtB,CAAC,CAAC;IAC/C,CAAC;IAGO,cAAc,CAAC,IAAY;QACjC,OAAO,IAAI;aACR,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC;aAC3C,OAAO,CAAC,0EAA0E,EAAE,MAAM,CAAC;aAC3F,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,gBAAgB,CAAC,GAAY;QACnC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAI,GAAqC,CAAC,IAAI,CAAC;QACzD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,IAAI,CAAC,MAAM,GAAG,CAAC;QACjC,CAAC;QACD,MAAM,EAAE,GAAI,IAAmD,EAAE,aAAa,CAAC;QAC/E,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAI,IAA2B,EAAE,KAAK,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,kDAAkD,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3F,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAGO,YAAY,CAAC,GAAY,EAAE,QAAiB;QAClD,MAAM,KAAK,GAAI,GAAgD,CAAC,KAAK,EAAE,IAAI,CAAC;QAC5E,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;QACpD,CAAC;QAGD,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;CACF,CAAA;AAjHY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAME,WAAA,IAAA,eAAM,EAAC,0BAAU,CAAC,CAAA;;GALpB,qBAAqB,CAiHjC"}