dolphin-server-modules 2.11.1 → 2.11.2

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 (115) hide show
  1. package/TUTORIAL_NEPALI.md +181 -0
  2. package/dist/adapters/mongoose/index.test.d.ts +1 -0
  3. package/dist/adapters/mongoose/index.test.js +145 -0
  4. package/dist/adapters/mongoose/index.test.js.map +1 -0
  5. package/dist/adapters/mongoose/integration.test.d.ts +5 -0
  6. package/dist/adapters/mongoose/integration.test.js +217 -0
  7. package/dist/adapters/mongoose/integration.test.js.map +1 -0
  8. package/dist/ai/dolphin-agent/agent.d.ts +5 -0
  9. package/dist/ai/dolphin-agent/agent.js +93 -46
  10. package/dist/ai/dolphin-agent/agent.js.map +1 -1
  11. package/dist/ai/dolphin-agent/config.js +19 -23
  12. package/dist/ai/dolphin-agent/config.js.map +1 -1
  13. package/dist/auth/auth.test.d.ts +1 -0
  14. package/dist/auth/auth.test.js +286 -0
  15. package/dist/auth/auth.test.js.map +1 -0
  16. package/dist/authController/authController.js +1 -1
  17. package/dist/authController/authController.js.map +1 -1
  18. package/dist/authController/authController.test.d.ts +1 -0
  19. package/dist/authController/authController.test.js +359 -0
  20. package/dist/authController/authController.test.js.map +1 -0
  21. package/dist/bin/cli.js +494 -131
  22. package/dist/bin/cli.js.map +1 -1
  23. package/dist/client.test.d.ts +22 -0
  24. package/dist/client.test.js +573 -0
  25. package/dist/client.test.js.map +1 -0
  26. package/dist/controller/controller.test.d.ts +1 -0
  27. package/dist/controller/controller.test.js +37 -0
  28. package/dist/controller/controller.test.js.map +1 -0
  29. package/dist/curd/crud.test.d.ts +1 -0
  30. package/dist/curd/crud.test.js +104 -0
  31. package/dist/curd/crud.test.js.map +1 -0
  32. package/dist/demo-server.d.ts +1 -0
  33. package/dist/demo-server.js +191 -0
  34. package/dist/demo-server.js.map +1 -0
  35. package/dist/djson/djson.test.d.ts +1 -0
  36. package/dist/djson/djson.test.js +200 -0
  37. package/dist/djson/djson.test.js.map +1 -0
  38. package/dist/dolphin-bench.d.ts +1 -0
  39. package/dist/dolphin-bench.js +63 -0
  40. package/dist/dolphin-bench.js.map +1 -0
  41. package/dist/hard-performance-test.d.ts +1 -0
  42. package/dist/hard-performance-test.js +97 -0
  43. package/dist/hard-performance-test.js.map +1 -0
  44. package/dist/index.d.ts +4 -4
  45. package/dist/index.js +4 -4
  46. package/dist/index.js.map +1 -1
  47. package/dist/middleware/zod.test.d.ts +1 -0
  48. package/dist/middleware/zod.test.js +74 -0
  49. package/dist/middleware/zod.test.js.map +1 -0
  50. package/dist/performance-test.d.ts +1 -0
  51. package/dist/performance-test.js +92 -0
  52. package/dist/performance-test.js.map +1 -0
  53. package/dist/real-test-mongoose.d.ts +1 -0
  54. package/dist/real-test-mongoose.js +104 -0
  55. package/dist/real-test-mongoose.js.map +1 -0
  56. package/dist/realtime/camera.d.ts +119 -0
  57. package/dist/realtime/camera.js +299 -0
  58. package/dist/realtime/camera.js.map +1 -0
  59. package/dist/realtime/camera.test.d.ts +1 -0
  60. package/dist/realtime/camera.test.js +345 -0
  61. package/dist/realtime/camera.test.js.map +1 -0
  62. package/dist/realtime/core.d.ts +5 -5
  63. package/dist/realtime/core.js +6 -6
  64. package/dist/realtime/core.js.map +1 -1
  65. package/dist/realtime/index.d.ts +6 -4
  66. package/dist/realtime/index.js +6 -4
  67. package/dist/realtime/index.js.map +1 -1
  68. package/dist/realtime/realtime.test.d.ts +1 -0
  69. package/dist/realtime/realtime.test.js +623 -0
  70. package/dist/realtime/realtime.test.js.map +1 -0
  71. package/dist/realtime/rtsp.d.ts +65 -0
  72. package/dist/realtime/rtsp.js +410 -0
  73. package/dist/realtime/rtsp.js.map +1 -0
  74. package/dist/realtime/rtsp.test.d.ts +1 -0
  75. package/dist/realtime/rtsp.test.js +361 -0
  76. package/dist/realtime/rtsp.test.js.map +1 -0
  77. package/dist/router/router.test.d.ts +1 -0
  78. package/dist/router/router.test.js +45 -0
  79. package/dist/router/router.test.js.map +1 -0
  80. package/dist/server/server.d.ts +8 -8
  81. package/dist/server/server.js +2 -11
  82. package/dist/server/server.js.map +1 -1
  83. package/dist/server/server.test.d.ts +1 -0
  84. package/dist/server/server.test.js +299 -0
  85. package/dist/server/server.test.js.map +1 -0
  86. package/dist/services/ai-service.js +22 -11
  87. package/dist/services/ai-service.js.map +1 -1
  88. package/dist/signaling/index.d.ts +1 -1
  89. package/dist/signaling/signaling.test.d.ts +1 -0
  90. package/dist/signaling/signaling.test.js +112 -0
  91. package/dist/signaling/signaling.test.js.map +1 -0
  92. package/dist/swagger/swagger.test.d.ts +1 -0
  93. package/dist/swagger/swagger.test.js +38 -0
  94. package/dist/swagger/swagger.test.js.map +1 -0
  95. package/dist/templates/index.d.ts +6 -0
  96. package/dist/templates/index.js +247 -70
  97. package/dist/templates/index.js.map +1 -1
  98. package/dist/test-2fa-real.d.ts +1 -0
  99. package/dist/test-2fa-real.js +105 -0
  100. package/dist/test-2fa-real.js.map +1 -0
  101. package/dist/test-dolphin.d.ts +1 -0
  102. package/dist/test-dolphin.js +98 -0
  103. package/dist/test-dolphin.js.map +1 -0
  104. package/dist/utils/ctx.d.ts +50 -0
  105. package/dist/utils/ctx.js +82 -0
  106. package/dist/utils/ctx.js.map +1 -0
  107. package/package.json +156 -65
  108. package/scripts/client.js +838 -703
  109. package/scripts/benchmark.js +0 -12
  110. package/scripts/benchmark.ts +0 -12
  111. package/scripts/list-models.js +0 -34
  112. package/scripts/run-real-ai-test.js +0 -79
  113. package/scripts/test-ai-logic.js +0 -44
  114. package/scripts/test-client.js +0 -105
  115. package/scripts/test-dolphin.js +0 -36
@@ -0,0 +1,361 @@
1
+ /// <reference types="jest" />
2
+ import { EventEmitter } from 'events';
3
+ // ─────────────────────────────────────────────────────────────
4
+ // Mock CameraFrameModule
5
+ // ─────────────────────────────────────────────────────────────
6
+ class MockCameraModule extends EventEmitter {
7
+ registered = [];
8
+ ingested = [];
9
+ offline = [];
10
+ registerCamera({ cameraId, expectedWidth, expectedHeight }) {
11
+ if (!this.registered.includes(cameraId))
12
+ this.registered.push(cameraId);
13
+ }
14
+ ingestFrame(cameraId, frame) {
15
+ this.ingested.push({ cameraId, frame });
16
+ return { cameraId, codec: 'MJPEG', frameIndex: this.ingested.length, timestamp: Date.now(), sizeBytes: frame.length, isKeyFrame: true };
17
+ }
18
+ markOffline(cameraId) {
19
+ this.offline.push(cameraId);
20
+ this.emit('camera:offline', { cameraId });
21
+ }
22
+ }
23
+ // ─────────────────────────────────────────────────────────────
24
+ // Mock child_process.spawn
25
+ // ─────────────────────────────────────────────────────────────
26
+ let mockSpawn;
27
+ let mockProc;
28
+ jest.mock('child_process', () => ({
29
+ spawn: (...args) => mockSpawn(...args),
30
+ }));
31
+ // ─────────────────────────────────────────────────────────────
32
+ // Mock net.Socket
33
+ // ─────────────────────────────────────────────────────────────
34
+ let mockSocket;
35
+ jest.mock('net', () => ({
36
+ Socket: jest.fn(() => mockSocket),
37
+ }));
38
+ // ─────────────────────────────────────────────────────────────
39
+ // Import after mocks
40
+ // ─────────────────────────────────────────────────────────────
41
+ import { RtspPullerModule, createRtspPuller } from './rtsp';
42
+ // ─────────────────────────────────────────────────────────────
43
+ // Helpers
44
+ // ─────────────────────────────────────────────────────────────
45
+ function makeMjpegFrame(size = 64) {
46
+ const buf = Buffer.alloc(size, 0x00);
47
+ buf[0] = 0xFF;
48
+ buf[1] = 0xD8;
49
+ buf[2] = 0xFF;
50
+ buf[size - 2] = 0xFF;
51
+ buf[size - 1] = 0xD9;
52
+ return buf;
53
+ }
54
+ function makeRtpInterleaved(payload, channel = 0) {
55
+ // Interleaved RTP: $ <channel> <len 2B> <12B RTP header> <payload>
56
+ const rtpHeader = Buffer.alloc(12, 0x00);
57
+ const frame = Buffer.concat([rtpHeader, payload]);
58
+ const out = Buffer.alloc(4 + frame.length);
59
+ out[0] = 0x24; // '$'
60
+ out[1] = channel;
61
+ out.writeUInt16BE(frame.length, 2);
62
+ frame.copy(out, 4);
63
+ return out;
64
+ }
65
+ function resetMocks() {
66
+ mockProc = new EventEmitter();
67
+ mockProc.stdout = new EventEmitter();
68
+ mockProc.stderr = new EventEmitter();
69
+ mockProc.kill = jest.fn();
70
+ mockSpawn = jest.fn(() => mockProc);
71
+ mockSocket = new EventEmitter();
72
+ mockSocket.connect = jest.fn((port, host, cb) => cb());
73
+ mockSocket.write = jest.fn();
74
+ mockSocket.destroy = jest.fn();
75
+ mockSocket.destroyed = false;
76
+ mockSocket.setTimeout = jest.fn();
77
+ }
78
+ // ─────────────────────────────────────────────────────────────
79
+ // Tests
80
+ // ─────────────────────────────────────────────────────────────
81
+ describe('RtspPullerModule', () => {
82
+ let cam;
83
+ let puller;
84
+ beforeEach(() => {
85
+ resetMocks();
86
+ cam = new MockCameraModule();
87
+ puller = new RtspPullerModule(cam);
88
+ });
89
+ afterEach(() => {
90
+ puller.destroy();
91
+ jest.clearAllTimers();
92
+ });
93
+ // ─────────────────────────────────────────
94
+ // Camera Registration
95
+ // ─────────────────────────────────────────
96
+ describe('Camera Management', () => {
97
+ it('should add a camera and list it', () => {
98
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
99
+ expect(puller.listCameras()).toContain('cam1');
100
+ });
101
+ it('should register camera with CameraFrameModule on add', () => {
102
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
103
+ expect(cam.registered).toContain('cam1');
104
+ });
105
+ it('should remove a camera', () => {
106
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
107
+ puller.removeCamera('cam1');
108
+ expect(puller.listCameras()).not.toContain('cam1');
109
+ });
110
+ it('should call markOffline when camera removed', () => {
111
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
112
+ puller.removeCamera('cam1');
113
+ expect(cam.offline).toContain('cam1');
114
+ });
115
+ it('should emit camera:added event', (done) => {
116
+ puller.on('camera:added', ({ cameraId }) => {
117
+ expect(cameraId).toBe('cam1');
118
+ done();
119
+ });
120
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
121
+ });
122
+ it('should emit camera:removed event', (done) => {
123
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
124
+ puller.on('camera:removed', ({ cameraId }) => {
125
+ expect(cameraId).toBe('cam1');
126
+ done();
127
+ });
128
+ puller.removeCamera('cam1');
129
+ });
130
+ it('should replace camera if same id added twice', () => {
131
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
132
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.20/stream', backend: 'ffmpeg' });
133
+ expect(puller.listCameras().filter(id => id === 'cam1').length).toBe(1);
134
+ });
135
+ it('should handle listCameras with no cameras', () => {
136
+ expect(puller.listCameras()).toHaveLength(0);
137
+ });
138
+ });
139
+ // ─────────────────────────────────────────
140
+ // FFmpeg Backend
141
+ // ─────────────────────────────────────────
142
+ describe('FFmpeg Backend', () => {
143
+ it('should spawn ffmpeg with correct args', () => {
144
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
145
+ expect(mockSpawn).toHaveBeenCalledWith('ffmpeg', expect.arrayContaining([
146
+ '-rtsp_transport', 'tcp',
147
+ '-i', 'rtsp://192.168.1.10/stream',
148
+ ]), expect.any(Object));
149
+ });
150
+ it('should forward MJPEG frame to CameraFrameModule on stdout data', () => {
151
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
152
+ const frame = makeMjpegFrame(64);
153
+ mockProc.stdout.emit('data', frame);
154
+ expect(cam.ingested.length).toBe(1);
155
+ expect(cam.ingested[0].cameraId).toBe('cam1');
156
+ });
157
+ it('should handle partial frames across multiple chunks', () => {
158
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
159
+ const frame = makeMjpegFrame(64);
160
+ // Split frame into two chunks
161
+ mockProc.stdout.emit('data', frame.slice(0, 32));
162
+ expect(cam.ingested.length).toBe(0);
163
+ mockProc.stdout.emit('data', frame.slice(32));
164
+ expect(cam.ingested.length).toBe(1);
165
+ });
166
+ it('should handle multiple frames in single chunk', () => {
167
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
168
+ const frame1 = makeMjpegFrame(64);
169
+ const frame2 = makeMjpegFrame(80);
170
+ mockProc.stdout.emit('data', Buffer.concat([frame1, frame2]));
171
+ expect(cam.ingested.length).toBe(2);
172
+ });
173
+ it('should set state to streaming after first frame', () => {
174
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
175
+ const frame = makeMjpegFrame(64);
176
+ mockProc.stdout.emit('data', frame);
177
+ expect(puller.getStats('cam1')?.state).toBe('streaming');
178
+ });
179
+ it('should increment framesForwarded per frame', () => {
180
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
181
+ mockProc.stdout.emit('data', makeMjpegFrame(64));
182
+ mockProc.stdout.emit('data', makeMjpegFrame(64));
183
+ mockProc.stdout.emit('data', makeMjpegFrame(64));
184
+ expect(puller.getStats('cam1')?.framesForwarded).toBe(3);
185
+ });
186
+ it('should schedule reconnect on process close', () => {
187
+ jest.useFakeTimers();
188
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
189
+ mockProc.emit('close', 1);
190
+ expect(puller.getStats('cam1')?.state).toBe('reconnecting');
191
+ jest.useRealTimers();
192
+ });
193
+ it('should schedule reconnect on process error', () => {
194
+ jest.useFakeTimers();
195
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
196
+ mockProc.emit('error', new Error('ffmpeg crashed'));
197
+ expect(puller.getStats('cam1')?.state).toBe('reconnecting');
198
+ jest.useRealTimers();
199
+ });
200
+ it('should pass extra ffmpegArgs to spawn', () => {
201
+ puller.addCamera({
202
+ cameraId: 'cam1',
203
+ url: 'rtsp://192.168.1.10/stream',
204
+ backend: 'ffmpeg',
205
+ ffmpegArgs: ['-vf', 'scale=640:480'],
206
+ });
207
+ expect(mockSpawn).toHaveBeenCalledWith('ffmpeg', expect.arrayContaining([
208
+ '-vf', 'scale=640:480',
209
+ ]), expect.any(Object));
210
+ });
211
+ it('should kill ffmpeg process on removeCamera', () => {
212
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
213
+ puller.removeCamera('cam1');
214
+ expect(mockProc.kill).toHaveBeenCalledWith('SIGTERM');
215
+ });
216
+ });
217
+ // ─────────────────────────────────────────
218
+ // TCP Backend (Pure RTSP)
219
+ // ─────────────────────────────────────────
220
+ describe('TCP Backend', () => {
221
+ it('should connect socket to correct host/port', () => {
222
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10:554/stream', backend: 'tcp' });
223
+ expect(mockSocket.connect).toHaveBeenCalledWith(554, '192.168.1.10', expect.any(Function));
224
+ });
225
+ it('should send OPTIONS on connect', () => {
226
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'tcp' });
227
+ expect(mockSocket.write).toHaveBeenCalledWith(expect.stringContaining('OPTIONS'));
228
+ });
229
+ it('should send DESCRIBE after OPTIONS 200 OK', () => {
230
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'tcp' });
231
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 1\r\nPublic: OPTIONS, DESCRIBE, SETUP, PLAY\r\n\r\n'));
232
+ expect(mockSocket.write).toHaveBeenCalledWith(expect.stringContaining('DESCRIBE'));
233
+ });
234
+ it('should send SETUP after DESCRIBE 200 OK with SDP', () => {
235
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'tcp' });
236
+ // OPTIONS response
237
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 1\r\nPublic: OPTIONS\r\n\r\n'));
238
+ // DESCRIBE response
239
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 2\r\nContent-Type: application/sdp\r\nContent-Base: rtsp://192.168.1.10/stream\r\n\r\n'));
240
+ expect(mockSocket.write).toHaveBeenCalledWith(expect.stringContaining('SETUP'));
241
+ });
242
+ it('should send PLAY after SETUP 200 OK with Transport', () => {
243
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'tcp' });
244
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 1\r\nPublic: OPTIONS\r\n\r\n'));
245
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 2\r\nContent-Type: application/sdp\r\n\r\n'));
246
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 3\r\nSession: 12345678\r\nTransport: RTP/AVP/TCP;unicast;interleaved=0-1\r\n\r\n'));
247
+ expect(mockSocket.write).toHaveBeenCalledWith(expect.stringContaining('PLAY'));
248
+ });
249
+ it('should forward MJPEG frame from interleaved RTP', () => {
250
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'tcp' });
251
+ // Bring to PLAY state
252
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 1\r\nPublic: OPTIONS\r\n\r\n'));
253
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 2\r\nContent-Type: application/sdp\r\n\r\n'));
254
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 200 OK\r\nCSeq: 3\r\nSession: 12345678\r\nTransport: RTP/AVP/TCP;unicast;interleaved=0-1\r\n\r\n'));
255
+ // Send MJPEG frame as interleaved RTP
256
+ const mjpeg = makeMjpegFrame(64);
257
+ const rtp = makeRtpInterleaved(mjpeg, 0);
258
+ mockSocket.emit('data', rtp);
259
+ expect(cam.ingested.length).toBe(1);
260
+ });
261
+ it('should set state=error on 401 Unauthorized', () => {
262
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://admin:wrong@192.168.1.10/stream', backend: 'tcp' });
263
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 401 Unauthorized\r\nCSeq: 1\r\n\r\n'));
264
+ expect(puller.getStats('cam1')?.state).toBe('error');
265
+ });
266
+ it('should set state=error on 404 Not Found', () => {
267
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/badpath', backend: 'tcp' });
268
+ mockSocket.emit('data', Buffer.from('RTSP/1.0 404 Not Found\r\nCSeq: 1\r\n\r\n'));
269
+ expect(puller.getStats('cam1')?.state).toBe('error');
270
+ });
271
+ it('should schedule reconnect on socket close', () => {
272
+ jest.useFakeTimers();
273
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'tcp' });
274
+ mockSocket.emit('close');
275
+ expect(puller.getStats('cam1')?.state).toBe('reconnecting');
276
+ jest.useRealTimers();
277
+ });
278
+ it('should schedule reconnect on socket error', () => {
279
+ jest.useFakeTimers();
280
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'tcp' });
281
+ mockSocket.emit('error', new Error('ECONNREFUSED'));
282
+ expect(puller.getStats('cam1')?.state).toBe('reconnecting');
283
+ jest.useRealTimers();
284
+ });
285
+ it('should destroy socket on removeCamera', () => {
286
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'tcp' });
287
+ puller.removeCamera('cam1');
288
+ expect(mockSocket.destroy).toHaveBeenCalled();
289
+ });
290
+ it('should handle invalid RTSP URL gracefully', () => {
291
+ puller.addCamera({ cameraId: 'cam1', url: 'not-a-url', backend: 'tcp' });
292
+ expect(puller.getStats('cam1')?.state).toBe('error');
293
+ });
294
+ });
295
+ // ─────────────────────────────────────────
296
+ // Stats
297
+ // ─────────────────────────────────────────
298
+ describe('Stats', () => {
299
+ it('should return undefined stats for unknown camera', () => {
300
+ expect(puller.getStats('unknown')).toBeUndefined();
301
+ });
302
+ it('should return all camera stats', () => {
303
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
304
+ puller.addCamera({ cameraId: 'cam2', url: 'rtsp://192.168.1.11/stream', backend: 'ffmpeg' });
305
+ expect(puller.getAllStats().length).toBe(2);
306
+ });
307
+ it('should track lastFrameAt on frame received', () => {
308
+ const before = Date.now();
309
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
310
+ mockProc.stdout.emit('data', makeMjpegFrame(64));
311
+ expect(puller.getStats('cam1')?.lastFrameAt).toBeGreaterThanOrEqual(before);
312
+ });
313
+ it('should track reconnectCount', () => {
314
+ jest.useFakeTimers();
315
+ puller.addCamera({
316
+ cameraId: 'cam1',
317
+ url: 'rtsp://192.168.1.10/stream',
318
+ backend: 'ffmpeg',
319
+ reconnectDelay: 100,
320
+ });
321
+ mockProc.emit('close', 1);
322
+ expect(puller.getStats('cam1')?.reconnectCount).toBe(1);
323
+ jest.useRealTimers();
324
+ });
325
+ it('should set state=error when maxReconnects reached', () => {
326
+ jest.useFakeTimers();
327
+ puller.addCamera({
328
+ cameraId: 'cam1',
329
+ url: 'rtsp://192.168.1.10/stream',
330
+ backend: 'ffmpeg',
331
+ maxReconnects: 1,
332
+ reconnectDelay: 100,
333
+ });
334
+ // First disconnect triggers reconnect
335
+ mockProc.emit('close', 1);
336
+ // Simulate reconnected proc also failing
337
+ resetMocks();
338
+ jest.advanceTimersByTime(100);
339
+ mockProc.emit('close', 1);
340
+ expect(puller.getStats('cam1')?.state).toBe('error');
341
+ jest.useRealTimers();
342
+ });
343
+ });
344
+ // ─────────────────────────────────────────
345
+ // Factory & Destroy
346
+ // ─────────────────────────────────────────
347
+ describe('Factory and Cleanup', () => {
348
+ it('createRtspPuller should return RtspPullerModule', () => {
349
+ const p = createRtspPuller(cam);
350
+ expect(p).toBeInstanceOf(RtspPullerModule);
351
+ p.destroy();
352
+ });
353
+ it('should clear all cameras on destroy()', () => {
354
+ puller.addCamera({ cameraId: 'cam1', url: 'rtsp://192.168.1.10/stream', backend: 'ffmpeg' });
355
+ puller.addCamera({ cameraId: 'cam2', url: 'rtsp://192.168.1.11/stream', backend: 'ffmpeg' });
356
+ puller.destroy();
357
+ expect(puller.listCameras()).toHaveLength(0);
358
+ });
359
+ });
360
+ });
361
+ //# sourceMappingURL=rtsp.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtsp.test.js","sourceRoot":"","sources":["../../src/realtime/rtsp.test.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,gEAAgE;AAChE,yBAAyB;AACzB,gEAAgE;AAChE,MAAM,gBAAiB,SAAQ,YAAY;IACzC,UAAU,GAAa,EAAE,CAAC;IAC1B,QAAQ,GAA0C,EAAE,CAAC;IACrD,OAAO,GAAa,EAAE,CAAC;IAEvB,cAAc,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAO;QAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,KAAa;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC1I,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,gEAAgE;AAChE,2BAA2B;AAC3B,gEAAgE;AAChE,IAAI,SAAoB,CAAC;AACzB,IAAI,QAAa,CAAC;AAElB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;CAC9C,CAAC,CAAC,CAAC;AAEJ,gEAAgE;AAChE,kBAAkB;AAClB,gEAAgE;AAChE,IAAI,UAAe,CAAC;AAEpB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACtB,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;CAClC,CAAC,CAAC,CAAC;AAEJ,gEAAgE;AAChE,qBAAqB;AACrB,gEAAgE;AAChE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE5D,gEAAgE;AAChE,UAAU;AACV,gEAAgE;AAChE,SAAS,cAAc,CAAC,IAAI,GAAG,EAAE;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5C,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe,EAAE,OAAO,GAAG,CAAC;IACtD,mEAAmE;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM;IACrB,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACjB,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU;IACjB,QAAQ,GAAG,IAAI,YAAY,EAAS,CAAC;IACrC,QAAQ,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC1B,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEpC,UAAU,GAAG,IAAI,YAAY,EAAS,CAAC;IACvC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,IAAY,EAAE,EAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACnF,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC7B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC/B,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;IAC7B,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACpC,CAAC;AAED,gEAAgE;AAChE,QAAQ;AACR,gEAAgE;AAChE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,GAAqB,CAAC;IAC1B,IAAI,MAAwB,CAAC;IAE7B,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,EAAE,CAAC;QACb,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC7B,MAAM,GAAG,IAAI,gBAAgB,CAAC,GAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,sBAAsB;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,CAAC,IAAI,EAAE,EAAE;YAC5C,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9C,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,iBAAiB;IACjB,4CAA4C;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC;gBACtE,iBAAiB,EAAE,KAAK;gBACxB,IAAI,EAAE,4BAA4B;aACnC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACjC,8BAA8B;YAC9B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAClC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;YACjD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;YACjD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,SAAS,CAAC;gBACf,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,4BAA4B;gBACjC,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC;aACrC,CAAC,CAAC;YACH,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC;gBACtE,KAAK,EAAE,eAAe;aACvB,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,0BAA0B;IAC1B,4CAA4C;IAC5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,gCAAgC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9F,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CACjC,8EAA8E,CAC/E,CAAC,CAAC;YACH,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,mBAAmB;YACnB,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YAC9F,oBAAoB;YACpB,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CACjC,iHAAiH,CAClH,CAAC,CAAC;YACH,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YAC9F,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC,CAAC;YAC5G,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CACjC,2GAA2G,CAC5G,CAAC,CAAC;YACH,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,sBAAsB;YACtB,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YAC9F,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC,CAAC;YAC5G,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,2GAA2G,CAAC,CAAC,CAAC;YAElJ,sCAAsC;YACtC,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,wCAAwC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACtG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;YACrF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,6BAA6B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3F,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;YAClF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1F,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,QAAQ;IACR,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,CAAC;gBACf,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,4BAA4B;gBACjC,OAAO,EAAE,QAAQ;gBACjB,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,CAAC,SAAS,CAAC;gBACf,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,4BAA4B;gBACjC,OAAO,EAAE,QAAQ;gBACjB,aAAa,EAAE,CAAC;gBAChB,cAAc,EAAE,GAAG;aACpB,CAAC,CAAC;YACH,sCAAsC;YACtC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1B,yCAAyC;YACzC,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,oBAAoB;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAU,CAAC,CAAC;YACvC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAC3C,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
1
+ import { createDolphinRouter } from './router';
2
+ describe('Standalone Router', () => {
3
+ it('should match simple routes', () => {
4
+ const router = createDolphinRouter();
5
+ const handler = jest.fn();
6
+ router.get('/hello', handler);
7
+ const match = router.match('GET', '/hello');
8
+ expect(match).not.toBeNull();
9
+ expect(match.handlers[0]).toBe(handler);
10
+ });
11
+ it('should support sub-routers with prefixes', () => {
12
+ const mainRouter = createDolphinRouter();
13
+ const subRouter = createDolphinRouter();
14
+ const handler = jest.fn();
15
+ subRouter.get('/login', handler);
16
+ mainRouter.use('/auth', subRouter);
17
+ const match = mainRouter.match('GET', '/auth/login');
18
+ expect(match).not.toBeNull();
19
+ expect(match.handlers[0]).toBe(handler);
20
+ });
21
+ it('should handle nested prefixes correctly', () => {
22
+ const v1 = createDolphinRouter();
23
+ const api = createDolphinRouter();
24
+ const handler = jest.fn();
25
+ v1.get('/test', handler);
26
+ api.use('/v1', v1);
27
+ const root = createDolphinRouter();
28
+ root.use('/api', api);
29
+ expect(root.match('GET', '/api/v1/test')).not.toBeNull();
30
+ });
31
+ it('should support "all" method', () => {
32
+ const router = createDolphinRouter();
33
+ const handler = jest.fn();
34
+ router.all('/any', handler);
35
+ expect(router.match('GET', '/any')).not.toBeNull();
36
+ expect(router.match('POST', '/any')).not.toBeNull();
37
+ });
38
+ it('should normalize slashes', () => {
39
+ const router = createDolphinRouter();
40
+ const handler = jest.fn();
41
+ router.get('/slash/', handler);
42
+ expect(router.match('GET', '/slash')).not.toBeNull();
43
+ });
44
+ });
45
+ //# sourceMappingURL=router.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.test.js","sourceRoot":"","sources":["../../src/router/router.test.ts"],"names":[],"mappings":"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"}
@@ -9,15 +9,15 @@ export declare function createDolphinServer(options?: {
9
9
  use: (prefixOrMw: string | any, mw?: any) => void;
10
10
  listen: (port?: number, callback?: () => void) => http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
11
11
  close: () => http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
12
- get: (path: string, ...handlers: import("../router/router.js").Handler[]) => void;
13
- post: (path: string, ...handlers: import("../router/router.js").Handler[]) => void;
14
- put: (path: string, ...handlers: import("../router/router.js").Handler[]) => void;
15
- delete: (path: string, ...handlers: import("../router/router.js").Handler[]) => void;
16
- patch: (path: string, ...handlers: import("../router/router.js").Handler[]) => void;
17
- all: (path: string, ...handlers: import("../router/router.js").Handler[]) => void;
18
- _routes: import("../router/router.js").Route[];
12
+ get: (path: string, ...handlers: import("../router/router").Handler[]) => void;
13
+ post: (path: string, ...handlers: import("../router/router").Handler[]) => void;
14
+ put: (path: string, ...handlers: import("../router/router").Handler[]) => void;
15
+ delete: (path: string, ...handlers: import("../router/router").Handler[]) => void;
16
+ patch: (path: string, ...handlers: import("../router/router").Handler[]) => void;
17
+ all: (path: string, ...handlers: import("../router/router").Handler[]) => void;
18
+ _routes: import("../router/router").Route[];
19
19
  match(method: string, url: string): {
20
- handlers: import("../router/router.js").Handler[];
20
+ handlers: import("../router/router").Handler[];
21
21
  params: Record<string, string>;
22
22
  } | null;
23
23
  };
@@ -2,22 +2,13 @@ import http from 'node:http';
2
2
  import fs from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { WebSocketServer } from 'ws';
5
- import { createDolphinRouter } from '../router/router.js';
6
- /** Find scripts/client.js across all possible install locations */
7
- function getClientPath() {
8
- const candidates = [
9
- path.resolve(process.cwd(), 'scripts/client.js'),
10
- path.resolve(process.cwd(), 'node_modules/dolphin-server-modules/scripts/client.js'),
11
- path.resolve(process.cwd(), '..', 'scripts/client.js'),
12
- ];
13
- return candidates.find(p => fs.existsSync(p)) ?? '';
14
- }
5
+ import { createDolphinRouter } from '../router/router';
15
6
  export function createDolphinServer(options = {}) {
16
7
  const router = createDolphinRouter();
17
8
  // Automatically serve the client library
18
9
  router.get('/dolphin-client.js', (ctx) => {
19
10
  // Look for client.js relative to this server module (works both in dev and as installed package)
20
- const clientPath = getClientPath();
11
+ const clientPath = path.resolve(__dirname, '../../scripts/client.js');
21
12
  if (fs.existsSync(clientPath)) {
22
13
  const content = fs.readFileSync(clientPath, 'utf8');
23
14
  ctx.setHeader('Content-Type', 'application/javascript');
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,UAAU,mBAAmB,CAAC,UAA4D,EAAE;IAChG,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IAErC,yCAAyC;IACzC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;QACvC,iGAAiG;QACjG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;QACtE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACpD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;YACxD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAU,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;QAC5D,4BAA4B;QAC5B,IAAI,aAAa,GAAW,GAAG,CAAC;QAEhC,0BAA0B;QAC1B,MAAM,IAAI,GAAG,CAAC,IAAS,EAAE,WAAmB,EAAE,MAAe,EAAE,EAAE;YAC/D,IAAI,GAAG,CAAC,WAAW;gBAAE,OAAO;YAC5B,MAAM,WAAW,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;YAClE,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAE3C,IAAI,WAAW,KAAK,kBAAkB,EAAE,CAAC;gBACvC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxB,CAAC;YACD,aAAa,GAAG,GAAG,CAAC,CAAC,mBAAmB;QAC1C,CAAC,CAAC;QAEF,uBAAuB;QACvB,GAAG,CAAC,IAAI,GAAG,CAAC,IAAS,EAAE,MAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAClF,GAAG,CAAC,IAAI,GAAG,CAAC,IAAS,EAAE,MAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC5E,GAAG,CAAC,IAAI,GAAG,CAAC,IAAS,EAAE,MAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAE3E,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAI,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QAEtD,MAAM,GAAG,GAAQ;YACf,GAAG;YACH,GAAG;YACH,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC;YACjD,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YAET,IAAI,EAAE,CAAC,IAAS,EAAE,MAAe,EAAE,EAAE;gBACnC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBACvC,OAAO,GAAG,CAAC;YACb,CAAC;YAED,IAAI,EAAE,CAAC,IAAS,EAAE,MAAe,EAAE,EAAE;gBACnC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC;YACb,CAAC;YAED,IAAI,EAAE,CAAC,IAAS,EAAE,MAAe,EAAE,EAAE;gBACnC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;gBAChC,OAAO,GAAG,CAAC;YACb,CAAC;YAED,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACvB,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,GAAG,CAAC;YACb,CAAC;YAED,SAAS,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;gBACzC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC3B,OAAO,GAAG,CAAC;YACb,CAAC;YAED,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;gBAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzC,CAAC;SACF,CAAC;QAEF,8BAA8B;QAC9B,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,aAAa;gBAAE,OAAO;YAC9B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,kCAAkC;QAClC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAO,CAAC,EAAE,CAAC;YACnD,IAAI,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAChD,oEAAoE;gBACpE,IAAK,GAAW,CAAC,IAAI;oBAAE,GAAG,CAAC,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;gBACpD,IAAK,GAAW,CAAC,IAAI;oBAAE,GAAG,CAAC,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;gBACpD,IAAK,GAAW,CAAC,KAAK;oBAAE,GAAG,CAAC,KAAK,GAAI,GAAW,CAAC,KAAK,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAU,EAAE,CAAC;gBACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAEjD,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACnC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;wBAClB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;oBACpB,CAAC;oBAAC,MAAM,CAAC;wBACP,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;wBACd,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;oBAChB,CAAC;gBACH,CAAC;qBAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;oBACrE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;oBAChE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;oBAClB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;oBACnB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1B,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC;gBACH,IAAI,MAAW,CAAC;gBAChB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,aAAa;wBAAE,MAAM;oBAEhD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,IAAI,OAAO,CAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;wBAChD,IAAI,CAAC;4BACH,4CAA4C;4BAC5C,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gCACxB,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;4BACvC,CAAC;iCAAM,CAAC;gCACN,4BAA4B;gCAC5B,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;gCAC5B,OAAO,EAAE,CAAC;4BACZ,CAAC;wBACH,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,CAAC,GAAG,CAAC,CAAC;wBACd,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,2DAA2D;gBAC3D,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;wBAC5C,+EAA+E;wBAC/E,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;4BAC/F,CAAC,CAAC,MAAM,CAAC,MAAM;4BACf,CAAC,CAAC,aAAa,CAAC;wBAClB,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,uBAAuB,EAAE,EAAE,kBAAkB,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,qCAAqC;IACrC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAI,EAAE,UAAU,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7E,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YACtD,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC9C,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAI,EAAE,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC;YAE/F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAExC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,qCAAqC;gBACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,sDAAsD;YACtD,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5D,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,IAAI,EAAE,MAAM;QACZ,GAAG;QACH,GAAG,EAAE,CAAC,UAAwB,EAAE,EAAQ,EAAE,EAAE;YAC1C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC3E,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,MAAM,EAAE,CAAC,OAAe,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,QAAqB,EAAE,EAAE;YACrE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export {};