@lenne.tech/nest-server 11.31.2 → 11.31.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 (160) hide show
  1. package/.claude/rules/architecture.md +2 -0
  2. package/.claude/rules/configurable-features.md +2 -0
  3. package/CLAUDE.md +28 -1
  4. package/FRAMEWORK-API.md +4 -1
  5. package/dist/config.env.d.ts +4 -0
  6. package/dist/config.env.js +32 -2
  7. package/dist/config.env.js.map +1 -1
  8. package/dist/core/common/helpers/logging.helper.d.ts +1 -0
  9. package/dist/core/common/helpers/logging.helper.js +12 -0
  10. package/dist/core/common/helpers/logging.helper.js.map +1 -1
  11. package/dist/core/common/helpers/meta.helper.d.ts +1 -0
  12. package/dist/core/common/helpers/meta.helper.js +32 -1
  13. package/dist/core/common/helpers/meta.helper.js.map +1 -1
  14. package/dist/core/common/interfaces/server-options.interface.d.ts +9 -0
  15. package/dist/core/common/services/email.service.d.ts +3 -1
  16. package/dist/core/common/services/email.service.js +33 -2
  17. package/dist/core/common/services/email.service.js.map +1 -1
  18. package/dist/core/common/services/template.service.js +9 -4
  19. package/dist/core/common/services/template.service.js.map +1 -1
  20. package/dist/core/modules/hub/core-hub-actions.controller.d.ts +22 -0
  21. package/dist/core/modules/hub/core-hub-actions.controller.js +141 -0
  22. package/dist/core/modules/hub/core-hub-actions.controller.js.map +1 -0
  23. package/dist/core/modules/hub/core-hub-html.service.d.ts +8 -0
  24. package/dist/core/modules/hub/core-hub-html.service.js +123 -0
  25. package/dist/core/modules/hub/core-hub-html.service.js.map +1 -0
  26. package/dist/core/modules/hub/core-hub.controller.d.ts +56 -0
  27. package/dist/core/modules/hub/core-hub.controller.js +398 -0
  28. package/dist/core/modules/hub/core-hub.controller.js.map +1 -0
  29. package/dist/core/modules/hub/core-hub.module.d.ts +17 -0
  30. package/dist/core/modules/hub/core-hub.module.js +109 -0
  31. package/dist/core/modules/hub/core-hub.module.js.map +1 -0
  32. package/dist/core/modules/hub/core-hub.service.d.ts +18 -0
  33. package/dist/core/modules/hub/core-hub.service.js +153 -0
  34. package/dist/core/modules/hub/core-hub.service.js.map +1 -0
  35. package/dist/core/modules/hub/helpers/hub-client-js.helper.d.ts +1 -0
  36. package/dist/core/modules/hub/helpers/hub-client-js.helper.js +755 -0
  37. package/dist/core/modules/hub/helpers/hub-client-js.helper.js.map +1 -0
  38. package/dist/core/modules/hub/helpers/hub-command-shape.helper.d.ts +1 -0
  39. package/dist/core/modules/hub/helpers/hub-command-shape.helper.js +33 -0
  40. package/dist/core/modules/hub/helpers/hub-command-shape.helper.js.map +1 -0
  41. package/dist/core/modules/hub/helpers/hub-mask.helper.d.ts +1 -0
  42. package/dist/core/modules/hub/helpers/hub-mask.helper.js +46 -0
  43. package/dist/core/modules/hub/helpers/hub-mask.helper.js.map +1 -0
  44. package/dist/core/modules/hub/helpers/hub-mermaid.helper.d.ts +10 -0
  45. package/dist/core/modules/hub/helpers/hub-mermaid.helper.js +35 -0
  46. package/dist/core/modules/hub/helpers/hub-mermaid.helper.js.map +1 -0
  47. package/dist/core/modules/hub/helpers/hub-shell.helper.d.ts +9 -0
  48. package/dist/core/modules/hub/helpers/hub-shell.helper.js +62 -0
  49. package/dist/core/modules/hub/helpers/hub-shell.helper.js.map +1 -0
  50. package/dist/core/modules/hub/hub-action-messages.d.ts +17 -0
  51. package/dist/core/modules/hub/hub-action-messages.js +21 -0
  52. package/dist/core/modules/hub/hub-action-messages.js.map +1 -0
  53. package/dist/core/modules/hub/hub-config.helper.d.ts +11 -0
  54. package/dist/core/modules/hub/hub-config.helper.js +164 -0
  55. package/dist/core/modules/hub/hub-config.helper.js.map +1 -0
  56. package/dist/core/modules/hub/hub-nav.d.ts +12 -0
  57. package/dist/core/modules/hub/hub-nav.js +43 -0
  58. package/dist/core/modules/hub/hub-nav.js.map +1 -0
  59. package/dist/core/modules/hub/hub-ring-buffer.d.ts +22 -0
  60. package/dist/core/modules/hub/hub-ring-buffer.js +59 -0
  61. package/dist/core/modules/hub/hub-ring-buffer.js.map +1 -0
  62. package/dist/core/modules/hub/hub.constants.d.ts +18 -0
  63. package/dist/core/modules/hub/hub.constants.js +22 -0
  64. package/dist/core/modules/hub/hub.constants.js.map +1 -0
  65. package/dist/core/modules/hub/index.d.ts +25 -0
  66. package/dist/core/modules/hub/index.js +42 -0
  67. package/dist/core/modules/hub/index.js.map +1 -0
  68. package/dist/core/modules/hub/interfaces/hub-config.interface.d.ts +115 -0
  69. package/dist/core/modules/hub/interfaces/hub-config.interface.js +3 -0
  70. package/dist/core/modules/hub/interfaces/hub-config.interface.js.map +1 -0
  71. package/dist/core/modules/hub/interfaces/hub-panels.interface.d.ts +231 -0
  72. package/dist/core/modules/hub/interfaces/hub-panels.interface.js +3 -0
  73. package/dist/core/modules/hub/interfaces/hub-panels.interface.js.map +1 -0
  74. package/dist/core/modules/hub/middleware/hub-trace.middleware.d.ts +8 -0
  75. package/dist/core/modules/hub/middleware/hub-trace.middleware.js +50 -0
  76. package/dist/core/modules/hub/middleware/hub-trace.middleware.js.map +1 -0
  77. package/dist/core/modules/hub/services/core-hub-actions.service.d.ts +48 -0
  78. package/dist/core/modules/hub/services/core-hub-actions.service.js +136 -0
  79. package/dist/core/modules/hub/services/core-hub-actions.service.js.map +1 -0
  80. package/dist/core/modules/hub/services/core-hub-db.service.d.ts +19 -0
  81. package/dist/core/modules/hub/services/core-hub-db.service.js +180 -0
  82. package/dist/core/modules/hub/services/core-hub-db.service.js.map +1 -0
  83. package/dist/core/modules/hub/services/core-hub-email.service.d.ts +24 -0
  84. package/dist/core/modules/hub/services/core-hub-email.service.js +148 -0
  85. package/dist/core/modules/hub/services/core-hub-email.service.js.map +1 -0
  86. package/dist/core/modules/hub/services/core-hub-mailbox.service.d.ts +20 -0
  87. package/dist/core/modules/hub/services/core-hub-mailbox.service.js +103 -0
  88. package/dist/core/modules/hub/services/core-hub-mailbox.service.js.map +1 -0
  89. package/dist/core/modules/hub/services/core-hub-migrations.service.d.ts +25 -0
  90. package/dist/core/modules/hub/services/core-hub-migrations.service.js +115 -0
  91. package/dist/core/modules/hub/services/core-hub-migrations.service.js.map +1 -0
  92. package/dist/core/modules/hub/services/core-hub-sources.service.d.ts +28 -0
  93. package/dist/core/modules/hub/services/core-hub-sources.service.js +187 -0
  94. package/dist/core/modules/hub/services/core-hub-sources.service.js.map +1 -0
  95. package/dist/core/modules/hub/services/hub-log-buffer.service.d.ts +24 -0
  96. package/dist/core/modules/hub/services/hub-log-buffer.service.js +210 -0
  97. package/dist/core/modules/hub/services/hub-log-buffer.service.js.map +1 -0
  98. package/dist/core/modules/hub/services/hub-query-profiler.service.d.ts +38 -0
  99. package/dist/core/modules/hub/services/hub-query-profiler.service.js +235 -0
  100. package/dist/core/modules/hub/services/hub-query-profiler.service.js.map +1 -0
  101. package/dist/core/modules/hub/services/hub-trace-buffer.service.d.ts +18 -0
  102. package/dist/core/modules/hub/services/hub-trace-buffer.service.js +123 -0
  103. package/dist/core/modules/hub/services/hub-trace-buffer.service.js.map +1 -0
  104. package/dist/core.module.js +42 -1
  105. package/dist/core.module.js.map +1 -1
  106. package/dist/index.d.ts +1 -0
  107. package/dist/index.js +1 -0
  108. package/dist/index.js.map +1 -1
  109. package/dist/tsconfig.build.tsbuildinfo +1 -1
  110. package/docs/REQUEST-LIFECYCLE.md +1 -0
  111. package/migration-guides/11.31.2-to-11.31.3.md +135 -0
  112. package/package.json +5 -4
  113. package/src/config.env.ts +75 -2
  114. package/src/core/common/helpers/logging.helper.spec.ts +61 -0
  115. package/src/core/common/helpers/logging.helper.ts +48 -0
  116. package/src/core/common/helpers/meta.helper.ts +46 -1
  117. package/src/core/common/interfaces/server-options.interface.ts +46 -0
  118. package/src/core/common/services/email.service.ts +33 -1
  119. package/src/core/common/services/template.service.ts +21 -16
  120. package/src/core/modules/hub/INTEGRATION-CHECKLIST.md +64 -0
  121. package/src/core/modules/hub/README.md +159 -0
  122. package/src/core/modules/hub/core-hub-actions.controller.ts +137 -0
  123. package/src/core/modules/hub/core-hub-html.service.ts +135 -0
  124. package/src/core/modules/hub/core-hub.controller.ts +286 -0
  125. package/src/core/modules/hub/core-hub.module.spec.ts +108 -0
  126. package/src/core/modules/hub/core-hub.module.ts +159 -0
  127. package/src/core/modules/hub/core-hub.service.ts +169 -0
  128. package/src/core/modules/hub/helpers/hub-client-js.helper.ts +768 -0
  129. package/src/core/modules/hub/helpers/hub-command-shape.helper.spec.ts +48 -0
  130. package/src/core/modules/hub/helpers/hub-command-shape.helper.ts +47 -0
  131. package/src/core/modules/hub/helpers/hub-mask.helper.spec.ts +67 -0
  132. package/src/core/modules/hub/helpers/hub-mask.helper.ts +78 -0
  133. package/src/core/modules/hub/helpers/hub-mermaid.helper.spec.ts +54 -0
  134. package/src/core/modules/hub/helpers/hub-mermaid.helper.ts +62 -0
  135. package/src/core/modules/hub/helpers/hub-shell.helper.spec.ts +106 -0
  136. package/src/core/modules/hub/helpers/hub-shell.helper.ts +90 -0
  137. package/src/core/modules/hub/hub-action-messages.ts +47 -0
  138. package/src/core/modules/hub/hub-config.helper.spec.ts +108 -0
  139. package/src/core/modules/hub/hub-config.helper.ts +233 -0
  140. package/src/core/modules/hub/hub-nav.ts +66 -0
  141. package/src/core/modules/hub/hub-ring-buffer.spec.ts +95 -0
  142. package/src/core/modules/hub/hub-ring-buffer.ts +101 -0
  143. package/src/core/modules/hub/hub.constants.ts +84 -0
  144. package/src/core/modules/hub/index.ts +25 -0
  145. package/src/core/modules/hub/interfaces/hub-config.interface.ts +265 -0
  146. package/src/core/modules/hub/interfaces/hub-panels.interface.ts +186 -0
  147. package/src/core/modules/hub/middleware/hub-trace.middleware.ts +45 -0
  148. package/src/core/modules/hub/services/core-hub-actions.service.ts +133 -0
  149. package/src/core/modules/hub/services/core-hub-db.service.ts +185 -0
  150. package/src/core/modules/hub/services/core-hub-email.service.ts +158 -0
  151. package/src/core/modules/hub/services/core-hub-mailbox.service.spec.ts +116 -0
  152. package/src/core/modules/hub/services/core-hub-mailbox.service.ts +121 -0
  153. package/src/core/modules/hub/services/core-hub-migrations.service.ts +112 -0
  154. package/src/core/modules/hub/services/core-hub-sources.service.ts +194 -0
  155. package/src/core/modules/hub/services/hub-log-buffer.service.ts +252 -0
  156. package/src/core/modules/hub/services/hub-query-profiler.service.ts +274 -0
  157. package/src/core/modules/hub/services/hub-trace-buffer.service.spec.ts +112 -0
  158. package/src/core/modules/hub/services/hub-trace-buffer.service.ts +134 -0
  159. package/src/core.module.ts +61 -1
  160. package/src/index.ts +6 -0
@@ -0,0 +1,141 @@
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.CoreHubActionsController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const hub_action_messages_1 = require("./hub-action-messages");
18
+ const core_hub_actions_service_1 = require("./services/core-hub-actions.service");
19
+ let CoreHubActionsController = class CoreHubActionsController {
20
+ actions;
21
+ constructor(actions) {
22
+ this.actions = actions;
23
+ }
24
+ async clearCollector(name, body, hubHeader) {
25
+ this.requireHubRequest(hubHeader);
26
+ this.requireConfirm(body, 'CLEAR');
27
+ if (!['logs', 'mailbox', 'queries', 'traces'].includes(name)) {
28
+ throw new common_1.BadRequestException(hub_action_messages_1.HubActionMessage.unknownCollector);
29
+ }
30
+ return this.wrap(() => Promise.resolve(this.actions.clearBuffer(name)));
31
+ }
32
+ async cron(name, action, body, hubHeader) {
33
+ this.requireHubRequest(hubHeader);
34
+ if (!['start', 'stop', 'trigger'].includes(action)) {
35
+ throw new common_1.BadRequestException(hub_action_messages_1.HubActionMessage.unknownCronAction);
36
+ }
37
+ this.requireConfirm(body, name);
38
+ return this.wrap(() => Promise.resolve(this.actions.controlCron(name, action)));
39
+ }
40
+ async deleteFile(id, body, hubHeader) {
41
+ this.requireHubRequest(hubHeader);
42
+ if (!body?.confirm) {
43
+ throw new common_1.BadRequestException(hub_action_messages_1.HubActionMessage.confirmationFilenameRequired);
44
+ }
45
+ return this.wrap(() => this.actions.deleteFile(id, body.confirm));
46
+ }
47
+ async emailTest(body, hubHeader) {
48
+ this.requireHubRequest(hubHeader);
49
+ if (!body?.to) {
50
+ throw new common_1.BadRequestException(hub_action_messages_1.HubActionMessage.recipientRequired);
51
+ }
52
+ return this.wrap(() => this.actions.sendTestEmail(body.to, body.template, body.locale));
53
+ }
54
+ async migrationsDown(body, hubHeader) {
55
+ this.requireHubRequest(hubHeader);
56
+ this.requireConfirm(body, 'DOWN');
57
+ return this.wrap(() => this.actions.rollbackMigration());
58
+ }
59
+ async migrationsRun(body, hubHeader) {
60
+ this.requireHubRequest(hubHeader);
61
+ this.requireConfirm(body, 'RUN');
62
+ return this.wrap(() => this.actions.runMigrations());
63
+ }
64
+ requireConfirm(body, expected) {
65
+ if (body?.confirm !== expected) {
66
+ throw new common_1.BadRequestException(hub_action_messages_1.HubActionMessage.confirmationKeywordMismatch(expected));
67
+ }
68
+ }
69
+ requireHubRequest(header) {
70
+ if (!header) {
71
+ throw new common_1.ForbiddenException(hub_action_messages_1.HubActionMessage.missingHubRequestHeader);
72
+ }
73
+ }
74
+ async wrap(fn) {
75
+ try {
76
+ const result = await fn();
77
+ return { ok: true, timestamp: new Date().toISOString(), ...result };
78
+ }
79
+ catch (error) {
80
+ throw new common_1.BadRequestException(error instanceof Error ? error.message : hub_action_messages_1.HubActionMessage.actionFailed);
81
+ }
82
+ }
83
+ };
84
+ exports.CoreHubActionsController = CoreHubActionsController;
85
+ __decorate([
86
+ (0, common_1.Post)('actions/collectors/:name/clear'),
87
+ __param(0, (0, common_1.Param)('name')),
88
+ __param(1, (0, common_1.Body)()),
89
+ __param(2, (0, common_1.Headers)('x-hub-request')),
90
+ __metadata("design:type", Function),
91
+ __metadata("design:paramtypes", [String, Object, String]),
92
+ __metadata("design:returntype", Promise)
93
+ ], CoreHubActionsController.prototype, "clearCollector", null);
94
+ __decorate([
95
+ (0, common_1.Post)('actions/cron/:name/:action'),
96
+ __param(0, (0, common_1.Param)('name')),
97
+ __param(1, (0, common_1.Param)('action')),
98
+ __param(2, (0, common_1.Body)()),
99
+ __param(3, (0, common_1.Headers)('x-hub-request')),
100
+ __metadata("design:type", Function),
101
+ __metadata("design:paramtypes", [String, String, Object, String]),
102
+ __metadata("design:returntype", Promise)
103
+ ], CoreHubActionsController.prototype, "cron", null);
104
+ __decorate([
105
+ (0, common_1.Delete)('actions/files/:id'),
106
+ __param(0, (0, common_1.Param)('id')),
107
+ __param(1, (0, common_1.Body)()),
108
+ __param(2, (0, common_1.Headers)('x-hub-request')),
109
+ __metadata("design:type", Function),
110
+ __metadata("design:paramtypes", [String, Object, String]),
111
+ __metadata("design:returntype", Promise)
112
+ ], CoreHubActionsController.prototype, "deleteFile", null);
113
+ __decorate([
114
+ (0, common_1.Post)('actions/email/test'),
115
+ __param(0, (0, common_1.Body)()),
116
+ __param(1, (0, common_1.Headers)('x-hub-request')),
117
+ __metadata("design:type", Function),
118
+ __metadata("design:paramtypes", [Object, String]),
119
+ __metadata("design:returntype", Promise)
120
+ ], CoreHubActionsController.prototype, "emailTest", null);
121
+ __decorate([
122
+ (0, common_1.Post)('actions/migrations/down'),
123
+ __param(0, (0, common_1.Body)()),
124
+ __param(1, (0, common_1.Headers)('x-hub-request')),
125
+ __metadata("design:type", Function),
126
+ __metadata("design:paramtypes", [Object, String]),
127
+ __metadata("design:returntype", Promise)
128
+ ], CoreHubActionsController.prototype, "migrationsDown", null);
129
+ __decorate([
130
+ (0, common_1.Post)('actions/migrations/run'),
131
+ __param(0, (0, common_1.Body)()),
132
+ __param(1, (0, common_1.Headers)('x-hub-request')),
133
+ __metadata("design:type", Function),
134
+ __metadata("design:paramtypes", [Object, String]),
135
+ __metadata("design:returntype", Promise)
136
+ ], CoreHubActionsController.prototype, "migrationsRun", null);
137
+ exports.CoreHubActionsController = CoreHubActionsController = __decorate([
138
+ (0, common_1.Controller)(),
139
+ __metadata("design:paramtypes", [core_hub_actions_service_1.CoreHubActionsService])
140
+ ], CoreHubActionsController);
141
+ //# sourceMappingURL=core-hub-actions.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-hub-actions.controller.js","sourceRoot":"","sources":["../../../../src/core/modules/hub/core-hub-actions.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ResolvedHubConfig } from './interfaces/hub-config.interface';
2
+ export declare class CoreHubHtmlService {
3
+ protected readonly config: ResolvedHubConfig;
4
+ constructor(config: ResolvedHubConfig);
5
+ buildClientScript(): string;
6
+ buildShell(authHeader?: string): string;
7
+ protected css(): string;
8
+ }
@@ -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.CoreHubHtmlService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const hub_constants_1 = require("./hub.constants");
18
+ const HUB_ASSET_TOKEN = Date.now().toString(36);
19
+ const hub_client_js_helper_1 = require("./helpers/hub-client-js.helper");
20
+ const hub_shell_helper_1 = require("./helpers/hub-shell.helper");
21
+ let CoreHubHtmlService = class CoreHubHtmlService {
22
+ config;
23
+ constructor(config) {
24
+ this.config = config;
25
+ }
26
+ buildClientScript() {
27
+ return (0, hub_client_js_helper_1.getHubClientJs)();
28
+ }
29
+ buildShell(authHeader) {
30
+ const base = '/' + this.config.path;
31
+ const bootstrap = [
32
+ `window.__HUB_BASE__='${(0, hub_shell_helper_1.escapeJsString)(base)}';`,
33
+ `window.__HUB_POLL_MS__=${Number(this.config.pollIntervalMs) || 5000};`,
34
+ `window.__HUB_LOGIN__='${(0, hub_shell_helper_1.escapeJsString)(this.config.loginEndpoint)}';`,
35
+ authHeader ? `window.__HUB_TOKEN__='${(0, hub_shell_helper_1.escapeJsString)(authHeader)}';` : '',
36
+ ].join('');
37
+ return `<!DOCTYPE html>
38
+ <html lang="en">
39
+ <head>
40
+ <meta charset="UTF-8">
41
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
42
+ <title>Hub · nest-server</title>
43
+ <style nonce="${hub_shell_helper_1.HUB_NONCE_PLACEHOLDER}">${this.css()}</style>
44
+ </head>
45
+ <body class="hub-locked">
46
+ <div id="hub-gate" class="hub-gate"></div>
47
+ <div id="hub-app"></div>
48
+ <dialog id="hub-confirm" class="hub-dialog"></dialog>
49
+ <script nonce="${hub_shell_helper_1.HUB_NONCE_PLACEHOLDER}">${bootstrap}</script>
50
+ <script nonce="${hub_shell_helper_1.HUB_NONCE_PLACEHOLDER}" src="${(0, hub_shell_helper_1.escapeHtml)(base)}/hub.js?v=${HUB_ASSET_TOKEN}"></script>
51
+ </body>
52
+ </html>`;
53
+ }
54
+ css() {
55
+ return `
56
+ :root{--bg:#0b0d12;--panel:#141821;--panel2:#1b212d;--border:#242c3a;--text:#e6ebf2;--muted:#8b97a8;--accent:#4f8cff;--ok:#3fb950;--warn:#d29922;--err:#f85149}
57
+ *{box-sizing:border-box}
58
+ body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif}
59
+ .hub-layout{display:flex;min-height:100vh}
60
+ .hub-nav{width:230px;flex:0 0 230px;background:var(--panel);border-right:1px solid var(--border);padding:16px 10px;overflow-y:auto}
61
+ .hub-brand{font-weight:700;font-size:18px;padding:4px 10px 14px;display:flex;align-items:center;gap:8px}
62
+ .hub-env{font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:4px;background:var(--panel2);color:var(--muted)}
63
+ .hub-env-production{background:#3d1418;color:#ff7b72}
64
+ .hub-nav h3{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:16px 10px 4px}
65
+ .hub-nav a{display:block;padding:6px 10px;border-radius:6px;color:var(--text);text-decoration:none;font-size:13px}
66
+ .hub-nav a:hover{background:var(--panel2)}
67
+ .hub-nav a.active{background:var(--accent);color:#fff}
68
+ .hub-nav a.hub-nav-disabled{opacity:.38;cursor:not-allowed}
69
+ .hub-nav a.hub-nav-disabled:hover{background:none}
70
+ .hub-nav a.hub-ext::after{content:' ↗';color:var(--muted)}
71
+ .hub-main{flex:1;min-width:0;display:flex;flex-direction:column}
72
+ .hub-topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--border)}
73
+ .hub-topbar h1{font-size:18px;margin:0}
74
+ .hub-meta{color:var(--muted);font-size:12px;display:flex;align-items:center;gap:8px}
75
+ .hub-dot{width:9px;height:9px;border-radius:50%;display:inline-block;background:var(--muted)}
76
+ .hub-dot-ok{background:var(--ok)}.hub-dot-err{background:var(--err)}
77
+ .hub-content{padding:22px;overflow:auto}
78
+ .hub-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:20px}
79
+ .hub-tile{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px}
80
+ .hub-tile-label{color:var(--muted);font-size:12px}
81
+ .hub-tile-value{font-size:22px;font-weight:600;margin-top:4px}
82
+ .hub-tile-value.ok{color:var(--ok)}.hub-tile-value.warn{color:var(--warn)}.hub-tile-value.err{color:var(--err)}
83
+ .hub-tile-sub{color:var(--muted);font-size:11px;margin-top:4px}
84
+ .hub-table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}
85
+ .hub-table th{text-align:left;padding:8px 12px;background:var(--panel2);color:var(--muted);font-size:12px;font-weight:600;cursor:pointer}
86
+ .hub-table td{padding:8px 12px;border-top:1px solid var(--border);font-size:13px}
87
+ .hub-table tr:hover td{background:var(--panel2)}
88
+ .hub-json{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px;overflow:auto;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre;max-width:100%}
89
+ .hub-empty{color:var(--muted);padding:40px;text-align:center;border:1px dashed var(--border);border-radius:8px}
90
+ .hub-btn{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:13px;cursor:pointer}
91
+ .hub-btn:hover{border-color:var(--accent)}
92
+ .hub-btn:disabled{opacity:.5;cursor:not-allowed}
93
+ .hub-btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
94
+ .hub-btn-danger{background:var(--err);border-color:var(--err);color:#fff}
95
+ .hub-signout{padding:4px 10px;font-size:12px;margin-left:4px}
96
+ .hub-input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px;color:var(--text);margin:8px 0;font-size:13px}
97
+ .hub-dialog{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:12px;padding:20px;max-width:440px;width:90%}
98
+ .hub-dialog::backdrop{background:rgba(0,0,0,.6)}
99
+ .hub-dialog h3{margin:0 0 8px}
100
+ .hub-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
101
+ .hub-hint{color:var(--muted);font-size:12px}
102
+ .hub-chip{display:inline-block;padding:1px 7px;border-radius:10px;font-size:11px;background:var(--panel2);color:var(--muted)}
103
+ .hub-chip-ok{background:#132d1c;color:var(--ok)}.hub-chip-warn{background:#2d2611;color:var(--warn)}.hub-chip-err{background:#3d1418;color:var(--err)}
104
+ .hub-toast{position:fixed;bottom:20px;right:20px;background:var(--panel2);border:1px solid var(--accent);color:var(--text);padding:12px 16px;border-radius:8px;font-size:13px;z-index:9999;box-shadow:0 6px 20px rgba(0,0,0,.4)}
105
+ .hub-toast-err{border-color:var(--err)}
106
+ /* Auth gate: nothing of the app is visible until authenticated. The client builds the layout into
107
+ #hub-app only after a successful auth check, so body.hub-locked just hides the (empty) app root. */
108
+ .hub-gate{display:none;position:fixed;inset:0;background:var(--bg);z-index:100;align-items:center;justify-content:center;padding:20px}
109
+ .hub-locked .hub-gate{display:flex}
110
+ .hub-locked #hub-app{display:none}
111
+ .hub-gate-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:28px;width:360px;max-width:100%}
112
+ .hub-gate-card h2{margin:0 0 4px}
113
+ .hub-gate-brand{font-weight:700;font-size:20px;margin-bottom:18px;display:flex;align-items:center;gap:8px}
114
+ `;
115
+ }
116
+ };
117
+ exports.CoreHubHtmlService = CoreHubHtmlService;
118
+ exports.CoreHubHtmlService = CoreHubHtmlService = __decorate([
119
+ (0, common_1.Injectable)(),
120
+ __param(0, (0, common_1.Inject)(hub_constants_1.HUB_CONFIG)),
121
+ __metadata("design:paramtypes", [Object])
122
+ ], CoreHubHtmlService);
123
+ //# sourceMappingURL=core-hub-html.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-hub-html.service.js","sourceRoot":"","sources":["../../../../src/core/modules/hub/core-hub-html.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,mDAA6C;AAS7C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChD,yEAAgE;AAChE,iEAA+F;AAYxF,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACsB;IAAnD,YAAmD,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAGhF,iBAAiB;QACf,OAAO,IAAA,qCAAc,GAAE,CAAC;IAC1B,CAAC;IAQD,UAAU,CAAC,UAAmB;QAC5B,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAEpC,MAAM,SAAS,GAAG;YAChB,wBAAwB,IAAA,iCAAc,EAAC,IAAI,CAAC,IAAI;YAChD,0BAA0B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI,GAAG;YACvE,yBAAyB,IAAA,iCAAc,EAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI;YACtE,UAAU,CAAC,CAAC,CAAC,yBAAyB,IAAA,iCAAc,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;SAC1E,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAOX,OAAO;;;;;;kBAMO,wCAAqB,KAAK,IAAI,CAAC,GAAG,EAAE;;;;;;mBAMnC,wCAAqB,KAAK,SAAS;mBACnC,wCAAqB,UAAU,IAAA,6BAAU,EAAC,IAAI,CAAC,aAAa,eAAe;;QAEtF,CAAC;IACP,CAAC;IAES,GAAG;QACX,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DV,CAAC;IACA,CAAC;CACF,CAAA;AA7GY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,0BAAU,CAAC,CAAA;;GADpB,kBAAkB,CA6G9B"}
@@ -0,0 +1,56 @@
1
+ import { Response } from 'express';
2
+ import { CoreHubHtmlService } from './core-hub-html.service';
3
+ import { CoreHubService } from './core-hub.service';
4
+ import { CoreHubDbService } from './services/core-hub-db.service';
5
+ import { CoreHubEmailService } from './services/core-hub-email.service';
6
+ import { CoreHubMailboxService } from './services/core-hub-mailbox.service';
7
+ import { CoreHubMigrationsService } from './services/core-hub-migrations.service';
8
+ import { CoreHubSourcesService } from './services/core-hub-sources.service';
9
+ import { HubLogBufferService } from './services/hub-log-buffer.service';
10
+ import { HubQueryProfilerService } from './services/hub-query-profiler.service';
11
+ import { HubTraceBufferService } from './services/hub-trace-buffer.service';
12
+ export declare class CoreHubController {
13
+ protected readonly hubService: CoreHubService;
14
+ protected readonly htmlService: CoreHubHtmlService;
15
+ protected readonly dbService: CoreHubDbService;
16
+ protected readonly migrationsService: CoreHubMigrationsService;
17
+ protected readonly sourcesService: CoreHubSourcesService;
18
+ protected readonly emailService: CoreHubEmailService;
19
+ protected readonly logBuffer: HubLogBufferService;
20
+ protected readonly traceBuffer: HubTraceBufferService;
21
+ protected readonly queryProfiler: HubQueryProfilerService;
22
+ protected readonly mailboxService?: CoreHubMailboxService;
23
+ private cachedClientScript?;
24
+ constructor(hubService: CoreHubService, htmlService: CoreHubHtmlService, dbService: CoreHubDbService, migrationsService: CoreHubMigrationsService, sourcesService: CoreHubSourcesService, emailService: CoreHubEmailService, logBuffer: HubLogBufferService, traceBuffer: HubTraceBufferService, queryProfiler: HubQueryProfilerService, mailboxService?: CoreHubMailboxService);
25
+ aiJson(res: Response): Promise<void>;
26
+ authMigrationJson(res: Response): Promise<void>;
27
+ configJson(res: Response): void;
28
+ cronJson(res: Response): void;
29
+ emailsJson(res: Response): void;
30
+ errorCodesJson(locale: string | undefined, res: Response): void;
31
+ dashboardJson(res: Response): void;
32
+ dbJson(res: Response): Promise<void>;
33
+ diagnosticsJson(res: Response): void;
34
+ filesJson(bucket: string | undefined, skip: string | undefined, limit: string | undefined, res: Response): Promise<void>;
35
+ migrationsJson(res: Response): Promise<void>;
36
+ mailboxJson(since: string | undefined, res: Response): void;
37
+ mailboxHtml(seq: string, res: Response): void;
38
+ logsJson(since: string | undefined, res: Response): void;
39
+ modelsJson(res: Response): void;
40
+ sessionJson(res: Response): void;
41
+ queriesJson(res: Response): void;
42
+ tracesJson(since: string | undefined, res: Response): void;
43
+ routesJson(res: Response): Promise<void>;
44
+ emailPreview(template: string | undefined, locale: string | undefined, res: Response): Promise<void>;
45
+ hubJs(res: Response): void;
46
+ root(authHeader: string | undefined, res: Response): void;
47
+ page(authHeader: string | undefined, res: Response): void;
48
+ authPage(res: Response): void;
49
+ protected collectorBuffers(): Record<string, {
50
+ capacity: number;
51
+ enabled: boolean;
52
+ size: number;
53
+ }>;
54
+ protected sendJson(res: Response, data: unknown): void;
55
+ protected sendShell(res: Response, authHeader?: string): void;
56
+ }