@lark-apaas/coding-preset-vite-react 1.0.12 → 1.0.13-alpha.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 (134) hide show
  1. package/lib/index.d.ts +1 -9
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js +114 -153
  4. package/lib/index.js.map +1 -1
  5. package/lib/plugins/{basename.d.ts → basename-injection.d.ts} +4 -4
  6. package/lib/plugins/basename-injection.d.ts.map +1 -0
  7. package/lib/plugins/{basename.js → basename-injection.js} +15 -7
  8. package/lib/plugins/basename-injection.js.map +1 -0
  9. package/lib/plugins/capabilities.d.ts +6 -9
  10. package/lib/plugins/capabilities.d.ts.map +1 -1
  11. package/lib/plugins/capabilities.js +29 -27
  12. package/lib/plugins/capabilities.js.map +1 -1
  13. package/lib/plugins/fonts-mirror.d.ts.map +1 -1
  14. package/lib/plugins/fonts-mirror.js +0 -28
  15. package/lib/plugins/fonts-mirror.js.map +1 -1
  16. package/lib/plugins/view-context.d.ts +5 -0
  17. package/lib/plugins/view-context.d.ts.map +1 -1
  18. package/lib/plugins/view-context.js +3 -0
  19. package/lib/plugins/view-context.js.map +1 -1
  20. package/package.json +1 -3
  21. package/lib/plugins/basename.d.ts.map +0 -1
  22. package/lib/plugins/basename.js.map +0 -1
  23. package/lib/plugins/dev-proxy.d.ts +0 -41
  24. package/lib/plugins/dev-proxy.d.ts.map +0 -1
  25. package/lib/plugins/dev-proxy.js +0 -229
  26. package/lib/plugins/dev-proxy.js.map +0 -1
  27. package/lib/plugins/html-output.d.ts +0 -21
  28. package/lib/plugins/html-output.d.ts.map +0 -1
  29. package/lib/plugins/html-output.js +0 -171
  30. package/lib/plugins/html-output.js.map +0 -1
  31. package/lib/plugins/server-log.d.ts +0 -45
  32. package/lib/plugins/server-log.d.ts.map +0 -1
  33. package/lib/plugins/server-log.js +0 -60
  34. package/lib/plugins/server-log.js.map +0 -1
  35. package/lib/server-log/compat.d.ts +0 -36
  36. package/lib/server-log/compat.d.ts.map +0 -1
  37. package/lib/server-log/compat.js +0 -73
  38. package/lib/server-log/compat.js.map +0 -1
  39. package/lib/server-log/dev-logs/api-list-handler.d.ts +0 -6
  40. package/lib/server-log/dev-logs/api-list-handler.d.ts.map +0 -1
  41. package/lib/server-log/dev-logs/api-list-handler.js +0 -132
  42. package/lib/server-log/dev-logs/api-list-handler.js.map +0 -1
  43. package/lib/server-log/dev-logs/controller.d.ts +0 -45
  44. package/lib/server-log/dev-logs/controller.d.ts.map +0 -1
  45. package/lib/server-log/dev-logs/controller.js +0 -239
  46. package/lib/server-log/dev-logs/controller.js.map +0 -1
  47. package/lib/server-log/dev-logs/health.controller.d.ts +0 -15
  48. package/lib/server-log/dev-logs/health.controller.d.ts.map +0 -1
  49. package/lib/server-log/dev-logs/health.controller.js +0 -79
  50. package/lib/server-log/dev-logs/health.controller.js.map +0 -1
  51. package/lib/server-log/dev-logs/helper/path-matcher.d.ts +0 -117
  52. package/lib/server-log/dev-logs/helper/path-matcher.d.ts.map +0 -1
  53. package/lib/server-log/dev-logs/helper/path-matcher.js +0 -214
  54. package/lib/server-log/dev-logs/helper/path-matcher.js.map +0 -1
  55. package/lib/server-log/dev-logs/index.d.ts +0 -12
  56. package/lib/server-log/dev-logs/index.d.ts.map +0 -1
  57. package/lib/server-log/dev-logs/index.js +0 -61
  58. package/lib/server-log/dev-logs/index.js.map +0 -1
  59. package/lib/server-log/dev-logs/router.d.ts +0 -7
  60. package/lib/server-log/dev-logs/router.d.ts.map +0 -1
  61. package/lib/server-log/dev-logs/router.js +0 -40
  62. package/lib/server-log/dev-logs/router.js.map +0 -1
  63. package/lib/server-log/dev-logs/services/capability.service.d.ts +0 -33
  64. package/lib/server-log/dev-logs/services/capability.service.d.ts.map +0 -1
  65. package/lib/server-log/dev-logs/services/capability.service.js +0 -127
  66. package/lib/server-log/dev-logs/services/capability.service.js.map +0 -1
  67. package/lib/server-log/dev-logs/services/file-reader.d.ts +0 -10
  68. package/lib/server-log/dev-logs/services/file-reader.d.ts.map +0 -1
  69. package/lib/server-log/dev-logs/services/file-reader.js +0 -67
  70. package/lib/server-log/dev-logs/services/file-reader.js.map +0 -1
  71. package/lib/server-log/dev-logs/services/index.d.ts +0 -8
  72. package/lib/server-log/dev-logs/services/index.d.ts.map +0 -1
  73. package/lib/server-log/dev-logs/services/index.js +0 -30
  74. package/lib/server-log/dev-logs/services/index.js.map +0 -1
  75. package/lib/server-log/dev-logs/services/parsers.d.ts +0 -23
  76. package/lib/server-log/dev-logs/services/parsers.d.ts.map +0 -1
  77. package/lib/server-log/dev-logs/services/parsers.js +0 -157
  78. package/lib/server-log/dev-logs/services/parsers.js.map +0 -1
  79. package/lib/server-log/dev-logs/services/server-log.service.d.ts +0 -17
  80. package/lib/server-log/dev-logs/services/server-log.service.d.ts.map +0 -1
  81. package/lib/server-log/dev-logs/services/server-log.service.js +0 -119
  82. package/lib/server-log/dev-logs/services/server-log.service.js.map +0 -1
  83. package/lib/server-log/dev-logs/services/trace.service.d.ts +0 -14
  84. package/lib/server-log/dev-logs/services/trace.service.d.ts.map +0 -1
  85. package/lib/server-log/dev-logs/services/trace.service.js +0 -162
  86. package/lib/server-log/dev-logs/services/trace.service.js.map +0 -1
  87. package/lib/server-log/dev-logs/services/trigger.service.d.ts +0 -14
  88. package/lib/server-log/dev-logs/services/trigger.service.d.ts.map +0 -1
  89. package/lib/server-log/dev-logs/services/trigger.service.js +0 -153
  90. package/lib/server-log/dev-logs/services/trigger.service.js.map +0 -1
  91. package/lib/server-log/dev-logs/services.d.ts +0 -7
  92. package/lib/server-log/dev-logs/services.d.ts.map +0 -1
  93. package/lib/server-log/dev-logs/services.js +0 -20
  94. package/lib/server-log/dev-logs/services.js.map +0 -1
  95. package/lib/server-log/dev-logs/sse/client-manager.d.ts +0 -61
  96. package/lib/server-log/dev-logs/sse/client-manager.d.ts.map +0 -1
  97. package/lib/server-log/dev-logs/sse/client-manager.js +0 -140
  98. package/lib/server-log/dev-logs/sse/client-manager.js.map +0 -1
  99. package/lib/server-log/dev-logs/sse/index.d.ts +0 -5
  100. package/lib/server-log/dev-logs/sse/index.d.ts.map +0 -1
  101. package/lib/server-log/dev-logs/sse/index.js +0 -11
  102. package/lib/server-log/dev-logs/sse/index.js.map +0 -1
  103. package/lib/server-log/dev-logs/sse/log-watcher.d.ts +0 -51
  104. package/lib/server-log/dev-logs/sse/log-watcher.d.ts.map +0 -1
  105. package/lib/server-log/dev-logs/sse/log-watcher.js +0 -381
  106. package/lib/server-log/dev-logs/sse/log-watcher.js.map +0 -1
  107. package/lib/server-log/dev-logs/sse/sse.controller.d.ts +0 -25
  108. package/lib/server-log/dev-logs/sse/sse.controller.d.ts.map +0 -1
  109. package/lib/server-log/dev-logs/sse/sse.controller.js +0 -95
  110. package/lib/server-log/dev-logs/sse/sse.controller.js.map +0 -1
  111. package/lib/server-log/dev-logs/types.d.ts +0 -104
  112. package/lib/server-log/dev-logs/types.d.ts.map +0 -1
  113. package/lib/server-log/dev-logs/types.js +0 -3
  114. package/lib/server-log/dev-logs/types.js.map +0 -1
  115. package/lib/server-log/dev-logs/utils.d.ts +0 -68
  116. package/lib/server-log/dev-logs/utils.d.ts.map +0 -1
  117. package/lib/server-log/dev-logs/utils.js +0 -151
  118. package/lib/server-log/dev-logs/utils.js.map +0 -1
  119. package/lib/server-log/register.d.ts +0 -34
  120. package/lib/server-log/register.d.ts.map +0 -1
  121. package/lib/server-log/register.js +0 -196
  122. package/lib/server-log/register.js.map +0 -1
  123. package/lib/server-log/types.d.ts +0 -99
  124. package/lib/server-log/types.d.ts.map +0 -1
  125. package/lib/server-log/types.js +0 -3
  126. package/lib/server-log/types.js.map +0 -1
  127. package/lib/utils/local-dev.d.ts +0 -46
  128. package/lib/utils/local-dev.d.ts.map +0 -1
  129. package/lib/utils/local-dev.js +0 -96
  130. package/lib/utils/local-dev.js.map +0 -1
  131. package/lib/utils/proxy-error.d.ts +0 -29
  132. package/lib/utils/proxy-error.d.ts.map +0 -1
  133. package/lib/utils/proxy-error.js +0 -158
  134. package/lib/utils/proxy-error.js.map +0 -1
@@ -1,381 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.LogWatcher = void 0;
37
- const fs = __importStar(require("node:fs"));
38
- const path = __importStar(require("node:path"));
39
- /**
40
- * Log level mapping from Pino numeric levels
41
- */
42
- function mapPinoLevelToServerLogLevel(pinoLevel) {
43
- if (typeof pinoLevel === 'string') {
44
- const lower = pinoLevel.toLowerCase();
45
- if (lower === 'fatal')
46
- return 'fatal';
47
- if (lower === 'error')
48
- return 'error';
49
- if (lower === 'warn' || lower === 'warning')
50
- return 'warn';
51
- if (lower === 'info' || lower === 'log')
52
- return 'log';
53
- if (lower === 'debug')
54
- return 'debug';
55
- if (lower === 'trace' || lower === 'verbose')
56
- return 'verbose';
57
- return 'log';
58
- }
59
- if (pinoLevel >= 60)
60
- return 'fatal';
61
- if (pinoLevel >= 50)
62
- return 'error';
63
- if (pinoLevel >= 40)
64
- return 'warn';
65
- if (pinoLevel >= 30)
66
- return 'log';
67
- if (pinoLevel >= 20)
68
- return 'debug';
69
- return 'verbose';
70
- }
71
- /**
72
- * Extract log level from text content
73
- */
74
- function extractLogLevel(text) {
75
- const lower = text.toLowerCase();
76
- if (lower.includes('fatal') || lower.includes('critical'))
77
- return 'fatal';
78
- if (lower.includes('error') || lower.includes('<e>') || lower.includes('✖'))
79
- return 'error';
80
- if (lower.includes('warn') || lower.includes('warning') || lower.includes('<w>') || lower.includes('⚠'))
81
- return 'warn';
82
- if (lower.includes('debug') || lower.includes('<d>'))
83
- return 'debug';
84
- if (lower.includes('verbose') || lower.includes('trace'))
85
- return 'verbose';
86
- return 'log';
87
- }
88
- /**
89
- * Generate a simple UUID v4
90
- */
91
- function generateUUID() {
92
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
93
- const r = (Math.random() * 16) | 0;
94
- const v = c === 'x' ? r : (r & 0x3) | 0x8;
95
- return v.toString(16);
96
- });
97
- }
98
- /**
99
- * Parse Pino JSON log to ServerLog format
100
- */
101
- function parsePinoLog(line, source) {
102
- try {
103
- const pinoLog = JSON.parse(line);
104
- const id = generateUUID();
105
- return {
106
- id,
107
- level: mapPinoLevelToServerLogLevel(pinoLog.level),
108
- timestamp: new Date(pinoLog.time).getTime(),
109
- message: pinoLog.message || pinoLog.msg || '',
110
- context: pinoLog.context || null,
111
- traceId: pinoLog.trace_id || null,
112
- userId: pinoLog.user_id || null,
113
- appId: pinoLog.app_id || null,
114
- tenantId: pinoLog.tenant_id || null,
115
- stack: pinoLog.stack || null,
116
- meta: {
117
- pid: pinoLog.pid,
118
- hostname: pinoLog.hostname,
119
- path: pinoLog.path,
120
- method: pinoLog.method,
121
- statusCode: pinoLog.status_code,
122
- durationMs: pinoLog.duration_ms,
123
- ip: pinoLog.ip,
124
- pageRoute: pinoLog.page_route,
125
- requestBody: pinoLog.request_body,
126
- responseBody: pinoLog.response_body,
127
- queryParams: pinoLog.query_params,
128
- },
129
- tags: [source],
130
- };
131
- }
132
- catch {
133
- return null;
134
- }
135
- }
136
- /**
137
- * Parse plain text log to ServerLog format
138
- */
139
- function parseStdLog(line, source) {
140
- const id = generateUUID();
141
- const match = line.match(/^\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\] \[(server|client)\] (.*)$/);
142
- if (!match) {
143
- return {
144
- id,
145
- level: extractLogLevel(line),
146
- timestamp: Date.now(),
147
- message: line,
148
- context: null,
149
- traceId: null,
150
- userId: null,
151
- appId: null,
152
- tenantId: null,
153
- stack: null,
154
- meta: null,
155
- tags: [source],
156
- };
157
- }
158
- const [, timeStr, , content] = match;
159
- let timestamp;
160
- try {
161
- const isoStr = timeStr.replace(' ', 'T');
162
- timestamp = new Date(isoStr).getTime();
163
- if (isNaN(timestamp)) {
164
- timestamp = Date.now();
165
- }
166
- }
167
- catch {
168
- timestamp = Date.now();
169
- }
170
- return {
171
- id,
172
- level: extractLogLevel(content),
173
- timestamp,
174
- message: content,
175
- context: null,
176
- traceId: null,
177
- userId: null,
178
- appId: null,
179
- tenantId: null,
180
- stack: null,
181
- meta: null,
182
- tags: [source],
183
- };
184
- }
185
- /**
186
- * LogWatcher - watches log files and emits new log entries via SSE
187
- */
188
- class LogWatcher {
189
- constructor(options = {}) {
190
- this.logDir = '';
191
- this.watchers = new Map();
192
- this.filePositions = new Map();
193
- this.subscribers = new Set();
194
- this.isRunning = false;
195
- this.debug = false;
196
- this.logFiles = [
197
- { fileName: 'server.log', source: 'server', parser: parsePinoLog },
198
- { fileName: 'trace.log', source: 'trace', parser: parsePinoLog },
199
- { fileName: 'server.std.log', source: 'server-std', parser: parseStdLog },
200
- { fileName: 'client.std.log', source: 'client-std', parser: parseStdLog },
201
- ];
202
- this.debug = options.debug ?? false;
203
- }
204
- log(...args) {
205
- if (this.debug) {
206
- console.log('[LogWatcher]', ...args);
207
- }
208
- }
209
- /**
210
- * Start watching log files
211
- */
212
- start(logDir) {
213
- if (this.isRunning) {
214
- this.log('Already running, ignoring start call');
215
- return;
216
- }
217
- this.logDir = logDir;
218
- this.isRunning = true;
219
- this.log(`Starting to watch log files in: ${logDir}`);
220
- for (const config of this.logFiles) {
221
- this.watchFile(config);
222
- }
223
- }
224
- /**
225
- * Stop watching all files
226
- */
227
- stop() {
228
- if (!this.isRunning) {
229
- return;
230
- }
231
- this.log('Stopping file watchers');
232
- this.isRunning = false;
233
- Array.from(this.watchers.entries()).forEach(([fileName, watcher]) => {
234
- watcher.close();
235
- this.log(`Closed watcher for: ${fileName}`);
236
- });
237
- this.watchers.clear();
238
- this.filePositions.clear();
239
- }
240
- /**
241
- * Subscribe to new log events
242
- */
243
- onLog(callback) {
244
- this.subscribers.add(callback);
245
- this.log(`Subscriber added, total: ${this.subscribers.size}`);
246
- return () => {
247
- this.subscribers.delete(callback);
248
- this.log(`Subscriber removed, total: ${this.subscribers.size}`);
249
- };
250
- }
251
- /**
252
- * Get subscriber count
253
- */
254
- getSubscriberCount() {
255
- return this.subscribers.size;
256
- }
257
- /**
258
- * Watch a single log file
259
- */
260
- watchFile(config) {
261
- const filePath = path.join(this.logDir, config.fileName);
262
- // Check if file exists
263
- if (!fs.existsSync(filePath)) {
264
- this.log(`File not found, skipping: ${config.fileName}`);
265
- return;
266
- }
267
- // Initialize file position to end of file (only watch new content)
268
- try {
269
- const stats = fs.statSync(filePath);
270
- this.filePositions.set(config.fileName, stats.size);
271
- this.log(`Initialized position for ${config.fileName}: ${stats.size} bytes`);
272
- }
273
- catch (error) {
274
- this.log(`Failed to get initial position for ${config.fileName}:`, error);
275
- this.filePositions.set(config.fileName, 0);
276
- }
277
- // Start watching
278
- try {
279
- const watcher = fs.watch(filePath, (eventType) => {
280
- if (eventType === 'change') {
281
- this.handleFileChange(config);
282
- }
283
- });
284
- watcher.on('error', (error) => {
285
- this.log(`Watcher error for ${config.fileName}:`, error);
286
- // Try to restart watcher
287
- this.restartWatcher(config);
288
- });
289
- this.watchers.set(config.fileName, watcher);
290
- this.log(`Started watching: ${config.fileName}`);
291
- }
292
- catch (error) {
293
- this.log(`Failed to start watcher for ${config.fileName}:`, error);
294
- }
295
- }
296
- /**
297
- * Restart a file watcher after error
298
- */
299
- restartWatcher(config) {
300
- const existingWatcher = this.watchers.get(config.fileName);
301
- if (existingWatcher) {
302
- existingWatcher.close();
303
- this.watchers.delete(config.fileName);
304
- }
305
- // Wait a bit before restarting
306
- setTimeout(() => {
307
- if (this.isRunning) {
308
- this.log(`Restarting watcher for: ${config.fileName}`);
309
- this.watchFile(config);
310
- }
311
- }, 1000);
312
- }
313
- /**
314
- * Handle file change event - read new content
315
- */
316
- handleFileChange(config) {
317
- const filePath = path.join(this.logDir, config.fileName);
318
- const lastPosition = this.filePositions.get(config.fileName) || 0;
319
- try {
320
- const stats = fs.statSync(filePath);
321
- const currentSize = stats.size;
322
- // File was truncated/rotated - reset position
323
- if (currentSize < lastPosition) {
324
- this.log(`File ${config.fileName} was truncated, resetting position`);
325
- this.filePositions.set(config.fileName, 0);
326
- this.handleFileChange(config); // Re-read from beginning
327
- return;
328
- }
329
- // No new content
330
- if (currentSize === lastPosition) {
331
- return;
332
- }
333
- // Read new content
334
- const readSize = currentSize - lastPosition;
335
- const buffer = Buffer.alloc(readSize);
336
- const fd = fs.openSync(filePath, 'r');
337
- try {
338
- fs.readSync(fd, buffer, 0, readSize, lastPosition);
339
- }
340
- finally {
341
- fs.closeSync(fd);
342
- }
343
- // Update position
344
- this.filePositions.set(config.fileName, currentSize);
345
- // Parse lines
346
- const content = buffer.toString('utf8');
347
- const lines = content.split('\n');
348
- for (const line of lines) {
349
- if (!line.trim())
350
- continue;
351
- try {
352
- const log = config.parser(line, config.source);
353
- if (log) {
354
- this.notifySubscribers(log);
355
- }
356
- }
357
- catch {
358
- // Ignore parse errors for individual lines
359
- }
360
- }
361
- }
362
- catch (error) {
363
- this.log(`Error reading file ${config.fileName}:`, error);
364
- }
365
- }
366
- /**
367
- * Notify all subscribers of new log
368
- */
369
- notifySubscribers(log) {
370
- Array.from(this.subscribers).forEach(subscriber => {
371
- try {
372
- subscriber(log);
373
- }
374
- catch (error) {
375
- this.log('Subscriber error:', error);
376
- }
377
- });
378
- }
379
- }
380
- exports.LogWatcher = LogWatcher;
381
- //# sourceMappingURL=log-watcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-watcher.js","sourceRoot":"","sources":["../../../../src/server-log/dev-logs/sse/log-watcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,gDAAkC;AAGlC;;GAEG;AACH,SAAS,4BAA4B,CACnC,SAA0B;IAE1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC;QACtC,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC;QACtC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAC3D,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC;QACtC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IACnC,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IACpC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1E,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5F,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACvH,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACrE,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3E,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,YAAY;IACnB,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACnE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1C,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,MAA0B;IAC5D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;QAE1B,OAAO;YACL,EAAE;YACF,KAAK,EAAE,4BAA4B,CAAC,OAAO,CAAC,KAAK,CAAC;YAClD,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;YAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,IAAI,EAAE;YAC7C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;YAChC,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;YACjC,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;YAC/B,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;YAC7B,QAAQ,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;YACnC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;YAC5B,IAAI,EAAE;gBACJ,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,WAAW;gBAC/B,UAAU,EAAE,OAAO,CAAC,WAAW;gBAC/B,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,SAAS,EAAE,OAAO,CAAC,UAAU;gBAC7B,WAAW,EAAE,OAAO,CAAC,YAAY;gBACjC,YAAY,EAAE,OAAO,CAAC,aAAa;gBACnC,WAAW,EAAE,OAAO,CAAC,YAAY;aAClC;YACD,IAAI,EAAE,CAAC,MAAM,CAAC;SACf,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,MAAmC;IACpE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAEjG,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC;YAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,CAAC,MAAM,CAAC;SACf,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,EAAE,OAAO,EAAE,AAAD,EAAG,OAAO,CAAC,GAAG,KAAK,CAAC;IACrC,IAAI,SAAiB,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,OAAO;QACL,EAAE;QACF,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC;QAC/B,SAAS;QACT,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,CAAC,MAAM,CAAC;KACf,CAAC;AACJ,CAAC;AAUD;;GAEG;AACH,MAAa,UAAU;IAerB,YAAY,UAA+B,EAAE;QAdrC,WAAM,GAAW,EAAE,CAAC;QACpB,aAAQ,GAA8B,IAAI,GAAG,EAAE,CAAC;QAChD,kBAAa,GAAwB,IAAI,GAAG,EAAE,CAAC;QAC/C,gBAAW,GAAuB,IAAI,GAAG,EAAE,CAAC;QAC5C,cAAS,GAAY,KAAK,CAAC;QAC3B,UAAK,GAAY,KAAK,CAAC;QAEd,aAAQ,GAAoB;YAC3C,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAkE,EAAE;YACxH,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAkE,EAAE;YACtH,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAiE,EAAE;YAC/H,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAiE,EAAE;SAChI,CAAC;QAGA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACtC,CAAC;IAEO,GAAG,CAAC,GAAG,IAAe;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAc;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAEtD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;YAClE,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAuB;QAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9D,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,8BAA8B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,MAAqB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEzD,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,sCAAsC,MAAM,CAAC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE;gBAC/C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC3B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5B,IAAI,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzD,yBAAyB;gBACzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,MAAqB;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,+BAA+B;QAC/B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAqB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;YAE/B,8CAA8C;YAC9C,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,QAAQ,oCAAoC,CAAC,CAAC;gBACtE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB;gBACxD,OAAO;YACT,CAAC;YAED,iBAAiB;YACjB,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;YAED,mBAAmB;YACnB,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEtC,IAAI,CAAC;gBACH,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YACrD,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAErD,cAAc;YACd,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAE3B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC/C,IAAI,GAAG,EAAE,CAAC;wBACR,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,GAAc;QACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAChD,IAAI,CAAC;gBACH,UAAU,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxND,gCAwNC"}
@@ -1,25 +0,0 @@
1
- import type { RequestHandler } from 'express';
2
- import { LogWatcher } from './log-watcher';
3
- import { ClientManager } from './client-manager';
4
- interface SSEHandlerOptions {
5
- debug?: boolean;
6
- heartbeatInterval?: number;
7
- }
8
- /**
9
- * Create SSE handler for server logs streaming
10
- *
11
- * Endpoint: GET /dev/logs/server-logs/stream
12
- *
13
- * SSE Events:
14
- * - connected: { clientId: string } - sent when client connects
15
- * - log: ServerLog - sent when new log entry is written
16
- * - heartbeat: { timestamp: number } - sent periodically to keep connection alive
17
- */
18
- export declare function createSSEHandler(logDir: string, options?: SSEHandlerOptions): RequestHandler;
19
- /**
20
- * Create a handler that returns current SSE status
21
- * Useful for debugging/monitoring
22
- */
23
- export declare function createSSEStatusHandler(clientManager: ClientManager, logWatcher: LogWatcher): RequestHandler;
24
- export {};
25
- //# sourceMappingURL=sse.controller.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse.controller.d.ts","sourceRoot":"","sources":["../../../../src/server-log/dev-logs/sse/sse.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,cAAc,CA+EhG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,GACrB,cAAc,CAQhB"}
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSSEHandler = createSSEHandler;
4
- exports.createSSEStatusHandler = createSSEStatusHandler;
5
- const log_watcher_1 = require("./log-watcher");
6
- const client_manager_1 = require("./client-manager");
7
- /**
8
- * Create SSE handler for server logs streaming
9
- *
10
- * Endpoint: GET /dev/logs/server-logs/stream
11
- *
12
- * SSE Events:
13
- * - connected: { clientId: string } - sent when client connects
14
- * - log: ServerLog - sent when new log entry is written
15
- * - heartbeat: { timestamp: number } - sent periodically to keep connection alive
16
- */
17
- function createSSEHandler(logDir, options = {}) {
18
- const { debug = false, heartbeatInterval = 30000 } = options;
19
- // Shared instances across all connections
20
- const logWatcher = new log_watcher_1.LogWatcher({ debug });
21
- const clientManager = new client_manager_1.ClientManager({ debug });
22
- const log = (...args) => {
23
- if (debug) {
24
- console.log('[SSEHandler]', ...args);
25
- }
26
- };
27
- return (req, res) => {
28
- // Set SSE headers
29
- res.setHeader('Content-Type', 'text/event-stream');
30
- res.setHeader('Cache-Control', 'no-cache');
31
- res.setHeader('Connection', 'keep-alive');
32
- res.setHeader('X-Accel-Buffering', 'no'); // Disable nginx buffering
33
- // Disable response timeout
34
- res.setTimeout(0);
35
- // Generate client ID and register
36
- const clientId = clientManager.generateClientId();
37
- clientManager.addClient(clientId, res);
38
- log(`New SSE connection: ${clientId}`);
39
- // Start log watcher if this is the first client
40
- if (clientManager.getClientCount() === 1) {
41
- log('First client connected, starting log watcher');
42
- logWatcher.start(logDir);
43
- }
44
- // Subscribe to new logs
45
- const unsubscribe = logWatcher.onLog((logEntry) => {
46
- clientManager.sendToClient(clientId, 'log', logEntry);
47
- });
48
- // Send connected event
49
- clientManager.sendToClient(clientId, 'connected', {
50
- clientId,
51
- timestamp: Date.now(),
52
- });
53
- // Set up heartbeat
54
- const heartbeat = setInterval(() => {
55
- const success = clientManager.sendToClient(clientId, 'heartbeat', {
56
- timestamp: Date.now(),
57
- });
58
- if (!success) {
59
- // Client disconnected, clean up
60
- clearInterval(heartbeat);
61
- }
62
- }, heartbeatInterval);
63
- // Handle client disconnect
64
- const cleanup = () => {
65
- log(`Client disconnected: ${clientId}`);
66
- clearInterval(heartbeat);
67
- unsubscribe();
68
- clientManager.removeClient(clientId);
69
- // Stop log watcher if no more clients
70
- if (clientManager.getClientCount() === 0) {
71
- log('No more clients, stopping log watcher');
72
- logWatcher.stop();
73
- }
74
- };
75
- req.on('close', cleanup);
76
- req.on('error', (error) => {
77
- log(`Client error ${clientId}:`, error);
78
- cleanup();
79
- });
80
- };
81
- }
82
- /**
83
- * Create a handler that returns current SSE status
84
- * Useful for debugging/monitoring
85
- */
86
- function createSSEStatusHandler(clientManager, logWatcher) {
87
- return (_req, res) => {
88
- res.json({
89
- clients: clientManager.getClientCount(),
90
- clientIds: clientManager.getClientIds(),
91
- subscribers: logWatcher.getSubscriberCount(),
92
- });
93
- };
94
- }
95
- //# sourceMappingURL=sse.controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse.controller.js","sourceRoot":"","sources":["../../../../src/server-log/dev-logs/sse/sse.controller.ts"],"names":[],"mappings":"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"}
@@ -1,104 +0,0 @@
1
- /**
2
- * Log entry structure
3
- */
4
- export interface LogEntry {
5
- trace_id?: string;
6
- time?: string;
7
- message?: string;
8
- method?: string;
9
- path?: string;
10
- capability_id?: string;
11
- plugin_key?: string;
12
- action?: string;
13
- is_stream?: boolean;
14
- input?: string;
15
- output?: string;
16
- error?: string;
17
- duration_ms?: number;
18
- [key: string]: any;
19
- }
20
- /**
21
- * Trace builder for aggregating log entries
22
- */
23
- export interface TraceBuilder {
24
- traceId: string;
25
- entries: LogEntry[];
26
- method?: string;
27
- path?: string;
28
- startTime?: string;
29
- endTime?: string;
30
- statusCode?: number;
31
- durationMs?: number;
32
- hasCompleted: boolean;
33
- }
34
- /**
35
- * Summary of a completed trace call
36
- */
37
- export interface TraceSummary {
38
- traceId: string;
39
- method?: string;
40
- path?: string;
41
- startTime?: string;
42
- endTime?: string;
43
- statusCode?: number;
44
- durationMs?: number;
45
- entries: LogEntry[];
46
- }
47
- /**
48
- * Paginated response structure
49
- */
50
- export interface PaginatedResponse<T> {
51
- page: number;
52
- pageSize: number;
53
- totalPages: number;
54
- calls: T[];
55
- }
56
- /**
57
- * Response for recent trace calls
58
- */
59
- export interface RecentTraceCallsResponse extends PaginatedResponse<TraceSummary> {
60
- totalCalls: number;
61
- }
62
- /**
63
- * Response for log file page
64
- */
65
- export interface LogFilePageResponse {
66
- page: number;
67
- pageSize: number;
68
- totalLines: number;
69
- totalPages: number;
70
- lines: string[];
71
- }
72
- /**
73
- * Router options
74
- */
75
- export interface RouterOptions {
76
- logDir?: string;
77
- }
78
- /**
79
- * ServerLog 接口(与前端完全一致)
80
- * 来自 miaoda/packages/L2/sandbox-console/src/server-log-types.ts
81
- */
82
- export interface ServerLog {
83
- id: string;
84
- level: 'fatal' | 'error' | 'warn' | 'log' | 'debug' | 'verbose';
85
- timestamp: number;
86
- message: string;
87
- context?: string | null;
88
- traceId?: string | null;
89
- userId?: string | null;
90
- appId?: string | null;
91
- tenantId?: string | null;
92
- stack?: string | null;
93
- meta?: Record<string, any> | null;
94
- tags?: string[] | null;
95
- }
96
- /**
97
- * ServerLog 查询响应
98
- */
99
- export interface ServerLogResponse {
100
- logs: ServerLog[];
101
- total: number;
102
- hasMore: boolean;
103
- }
104
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server-log/dev-logs/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server-log/dev-logs/types.ts"],"names":[],"mappings":""}