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
@@ -16,9 +16,13 @@ export class DolphinAgent {
16
16
  projectIndex = new Map();
17
17
  symbolIndex = new Map();
18
18
  keywordIndex = new Map();
19
+ historyFile = '';
20
+ chatHistory = [];
19
21
  constructor(config) {
20
22
  this.config = config;
21
23
  this.currentDir = process.cwd();
24
+ const dolphinDir = path.join(this.currentDir, '.dolphin');
25
+ this.historyFile = path.join(dolphinDir, 'history.json');
22
26
  this.rl = readline.createInterface({ input: process.stdin, output: process.stdout });
23
27
  const apiKey = config.apiKey || process.env.DOLPHIN_AI_KEY || process.env.GEMINI_API_KEY || process.env.OPENAI_API_KEY || '';
24
28
  this.ai = new AIService({
@@ -139,57 +143,46 @@ export class DolphinAgent {
139
143
  }
140
144
  parseAIResponse(response) {
141
145
  const toolCalls = [];
142
- let i = 0;
143
- while (i < response.length) {
146
+ // Improved JSON extraction using brace counting to handle nested objects
147
+ let braceCount = 0;
148
+ let startIdx = -1;
149
+ for (let i = 0; i < response.length; i++) {
144
150
  if (response[i] === '{') {
145
- let start = i;
146
- let stack = 0;
147
- let inString = false;
148
- let escaped = false;
149
- for (let j = i; j < response.length; j++) {
150
- const char = response[j];
151
- if (char === '"' && !escaped) {
152
- inString = !inString;
153
- }
154
- if (!inString) {
155
- if (char === '{')
156
- stack++;
157
- if (char === '}')
158
- stack--;
159
- if (stack === 0) {
160
- const block = response.substring(start, j + 1);
161
- try {
162
- // Strip markdown if AI wrapped it
163
- const cleanBlock = block.replace(/```json|```/g, '').trim();
164
- const parsed = JSON.parse(cleanBlock);
165
- if (parsed.tool)
166
- toolCalls.push(this.normalizeToolCall(parsed));
167
- }
168
- catch (e) {
169
- // Try to fix unescaped newlines if parsing failed
170
- try {
171
- const fixed = block.replace(/"([^"]*)"/g, (m, content) => {
172
- return '"' + content.replace(/\n/g, '\\n') + '"';
173
- });
174
- const parsed = JSON.parse(fixed);
175
- if (parsed.tool)
176
- toolCalls.push(this.normalizeToolCall(parsed));
177
- }
178
- catch (e2) { }
179
- }
180
- i = j;
181
- break;
151
+ if (braceCount === 0)
152
+ startIdx = i;
153
+ braceCount++;
154
+ }
155
+ else if (response[i] === '}') {
156
+ braceCount--;
157
+ if (braceCount === 0 && startIdx !== -1) {
158
+ const block = response.substring(startIdx, i + 1);
159
+ try {
160
+ // Remove markdown markers if present
161
+ const cleanBlock = block.replace(/```json|```/g, '').trim();
162
+ const parsed = JSON.parse(cleanBlock);
163
+ if (parsed && parsed.tool) {
164
+ toolCalls.push(this.normalizeToolCall(parsed));
182
165
  }
183
166
  }
184
- if (char === '\\' && !escaped)
185
- escaped = true;
186
- else
187
- escaped = false;
167
+ catch (e) { }
168
+ startIdx = -1;
169
+ }
170
+ }
171
+ }
172
+ // Fallback for markdown code blocks if the brace logic missed it
173
+ if (toolCalls.length === 0) {
174
+ const markdownBlocks = response.match(/```json\s*([\s\S]*?)\s*```/g) || [];
175
+ for (const b of markdownBlocks) {
176
+ try {
177
+ const content = b.replace(/```json|```/g, '').trim();
178
+ const parsed = JSON.parse(content);
179
+ if (parsed && parsed.tool)
180
+ toolCalls.push(this.normalizeToolCall(parsed));
188
181
  }
182
+ catch (e) { }
189
183
  }
190
- i++;
191
184
  }
192
- return toolCalls.filter(t => t && t.tool);
185
+ return toolCalls;
193
186
  }
194
187
  normalizeToolCall(parsed) {
195
188
  if (parsed.params && typeof parsed.params === 'object') {
@@ -212,9 +205,47 @@ export class DolphinAgent {
212
205
  context += `\nFull Project Structure: \n${fileNames.join('\n')}\n`;
213
206
  return context;
214
207
  }
208
+ // AI Storing — disk persistence
209
+ async loadHistory() {
210
+ try {
211
+ if (existsSync(this.historyFile)) {
212
+ const raw = await fs.readFile(this.historyFile, 'utf8');
213
+ this.chatHistory = JSON.parse(raw);
214
+ this.ai.history = this.chatHistory.slice(-20).map(h => ({ role: h.role, content: h.content }));
215
+ CLIUI.success('📂 ' + this.chatHistory.length + ' past messages loaded (.dolphin/history.json)');
216
+ }
217
+ }
218
+ catch {
219
+ this.chatHistory = [];
220
+ }
221
+ }
222
+ async saveHistory(role, content) {
223
+ try {
224
+ const dir = path.dirname(this.historyFile);
225
+ if (!existsSync(dir))
226
+ await fs.mkdir(dir, { recursive: true });
227
+ this.chatHistory.push({ ts: new Date().toISOString(), role, content });
228
+ if (this.chatHistory.length > 500)
229
+ this.chatHistory = this.chatHistory.slice(-500);
230
+ await fs.writeFile(this.historyFile, JSON.stringify(this.chatHistory, null, 2));
231
+ }
232
+ catch { }
233
+ }
234
+ printHistory(n = 10) {
235
+ const recent = this.chatHistory.slice(-n * 2);
236
+ if (!recent.length) {
237
+ console.log(' (history खाली छ)');
238
+ return;
239
+ }
240
+ recent.forEach(h => {
241
+ const prefix = h.role === 'user' ? '\x1b[36m💬 You \x1b[0m' : '\x1b[32m🤖 AI \x1b[0m';
242
+ console.log(prefix + ' [' + h.ts.slice(0, 16) + '] ' + h.content.slice(0, 120));
243
+ });
244
+ }
215
245
  async interactiveChat() {
216
246
  CLIUI.heading(`🐬 Dolphin Autonomous Agent (${this.config.framework.toUpperCase()} Mode)`);
217
247
  await this.buildProjectMemory();
248
+ await this.loadHistory();
218
249
  while (true) {
219
250
  let input = '';
220
251
  try {
@@ -228,10 +259,25 @@ export class DolphinAgent {
228
259
  }
229
260
  throw e;
230
261
  }
231
- if (input.toLowerCase() === 'exit') {
262
+ if (input.toLowerCase() === 'exit' || input.toLowerCase() === 'quit') {
232
263
  this.rl.close();
233
264
  break;
234
265
  }
266
+ if (input.toLowerCase() === 'history') {
267
+ this.printHistory(10);
268
+ continue;
269
+ }
270
+ if (input.toLowerCase() === 'clear history') {
271
+ this.chatHistory = [];
272
+ this.ai.history = [];
273
+ try {
274
+ await fs.writeFile(this.historyFile, '[]');
275
+ }
276
+ catch { }
277
+ CLIUI.success('History cleared!');
278
+ continue;
279
+ }
280
+ await this.saveHistory('user', input);
235
281
  let currentPrompt = input;
236
282
  let isRunning = true;
237
283
  let retryCount = 0;
@@ -385,6 +431,7 @@ export class DolphinAgent {
385
431
  }
386
432
  }
387
433
  else {
434
+ await this.saveHistory('assistant', response);
388
435
  isRunning = false;
389
436
  }
390
437
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/ai/dolphin-agent/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/ai/dolphin-agent/agent.ts"],"names":[],"mappings":"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"}
@@ -7,46 +7,42 @@ export function getFrameworkPrompt(config) {
7
7
  let basePrompt = `You are an autonomous AI Agent named "dolphin-agent", built to be as powerful as Cursor.
8
8
  You have FULL ACCESS to the filesystem and shell.
9
9
  Your tone should be helpful, professional, and friendly.
10
- IMPORTANT: The user prefers NEPALi (Devanagari script).
11
- Please reply in Nepali (सन्चै हुनुहुन्छ? कस्तो छ?) and use English for technical terms.
12
-
13
- To perform actions, you MUST return JSON blocks with "tool" and "params".
14
- DO NOT just explain or give code in markdown. ALWAYS use the 'write' or 'patch' tool to save code to files.
15
- If the user asks to create a file, use the 'write' tool immediately.
10
+ IMPORTANT: The user prefers ROMAN NEPALI (Nepali language written using the English alphabet).
11
+ DO NOT use Devanagari script (नेपाली लिपि प्रयोग नगर्नुहोस्).
12
+ Example: Use "Sanchai hunuhunchha?" instead of "सन्चै हुनुहुन्छ?".
13
+ Mix Roman Nepali and English to make it more personalized and easier to understand.
16
14
 
15
+ To perform actions, return one or more JSON blocks with "tool" and "params".
17
16
  Available Tools:
18
17
  1. {"tool": "read", "path": "file_path"} - Read a file
19
18
  2. {"tool": "write", "path": "path", "content": "..."} - Create/Edit a file (Use for large changes)
20
- 3. {"tool": "patch", "path": "path", "old": "...", "new": "..."} - Precision edit (Replace 'old' text with 'new').
19
+ 3. {"tool": "patch", "path": "path", "old": "...", "new": "..."} - Precision edit (Replace 'old' text with 'new'). Recommended for small changes.
21
20
  4. {"tool": "delete", "path": "path"} - Delete a file/folder
22
21
  5. {"tool": "list", "path": "dir"} - List files
23
22
  6. {"tool": "shell", "cmd": "..."} - Run terminal commands
24
- 7. {"tool": "search_symbol", "name": "..."} - Find where a function/class is defined.
23
+ 7. {"tool": "search_symbol", "name": "..."} - Find where a function/class is defined across the project.
25
24
  8. {"tool": "done", "msg": "..."} - Final answer
26
25
 
27
26
  CRITICAL RULES:
28
- - NO DUPLICATES: When patching, ensure you don't create duplicate imports or declarations.
29
- - ESM ONLY: Always use 'import' and 'export'. NEVER use 'require'.
30
- - Return pure JSON blocks for tools.
27
+ - SEMANTIC SEARCH: I have already indexed your project. Relevant files are automatically added to context based on your query.
28
+ - PRECISION: Use "patch" for renaming functions or changing specific logic to avoid rewriting large files.
29
+ - Return pure JSON blocks for tools. You can briefly explain beforehand.
30
+ - If a shell command fails, fix it and retry.
31
31
  `;
32
32
  if (config.framework === 'dolphin') {
33
33
  basePrompt += `\nYou are specialized exclusively in the Dolphin Framework.
34
- Framework Rules:
35
- - Use 'dolphin-server-modules/server' for createDolphinServer.
36
- - Use 'dolphin-server-modules/adapters/mongoose' for createMongooseAdapter.
37
- - Use 'dolphin-server-modules/crud' for createCrudController.
38
- Example:
39
- import { createDolphinServer } from 'dolphin-server-modules/server';
40
- const app = createDolphinServer();
41
- app.get('/', (ctx) => ctx.json({ success: true }));
42
-
43
- DO NOT use Express.js. Only use 'dolphin-server-modules'.`;
34
+ Your sole purpose is to generate, refactor, and manage Dolphin Server code.
35
+ DO NOT use Express.js. DO NOT use standard Node.js native http unless requested.
36
+ Only use 'dolphin-server-modules'.
37
+ You have full access to the file system to scaffold production-ready code.`;
44
38
  }
45
39
  else if (config.framework === 'express') {
46
- basePrompt += `\nYou are an AI agent specialized in Express.js.`;
40
+ basePrompt += `\nYou are an AI agent specialized in Express.js.
41
+ You will generate production-ready Express code, middlewares, and routers according to best practices.`;
47
42
  }
48
43
  else if (config.framework === 'nextjs') {
49
- basePrompt += `\nYou are an AI agent specialized in Next.js.`;
44
+ basePrompt += `\nYou are an AI agent specialized in Next.js.
45
+ Generate React components, API routes, and Server Actions tailored for Next.js app/pages router.`;
50
46
  }
51
47
  else {
52
48
  basePrompt += `\nYou will assist the user with the framework: ${config.framework}.`;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/ai/dolphin-agent/config.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC1C,SAAS,EAAE,SAAS;IACpB,sBAAsB,EAAE,IAAI;IAC5B,eAAe,EAAE,IAAI;CACxB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAAgB;IAC/C,IAAI,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB,CAAC;IAEE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,UAAU,IAAI;;;;;;;;;;0DAUoC,CAAC;IACvD,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACxC,UAAU,IAAI,kDAAkD,CAAC;IACrE,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACvC,UAAU,IAAI,+CAA+C,CAAC;IAClE,CAAC;SAAM,CAAC;QACJ,UAAU,IAAI,kDAAkD,MAAM,CAAC,SAAS,GAAG,CAAC;IACxF,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/ai/dolphin-agent/config.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC1C,SAAS,EAAE,SAAS;IACpB,sBAAsB,EAAE,IAAI;IAC5B,eAAe,EAAE,IAAI;CACxB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAAgB;IAC/C,IAAI,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB,CAAC;IAEE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,UAAU,IAAI;;;;2EAIqD,CAAC;IACxE,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACxC,UAAU,IAAI;uGACiF,CAAC;IACpG,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACvC,UAAU,IAAI;iGAC2E,CAAC;IAC9F,CAAC;SAAM,CAAC;QACJ,UAAU,IAAI,kDAAkD,MAAM,CAAC,SAAS,GAAG,CAAC;IACxF,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,286 @@
1
+ // test/auth/auth.test.ts
2
+ import { createAuth } from './auth';
3
+ import crypto from 'node:crypto';
4
+ class MockAuthDB {
5
+ users = [];
6
+ tokens = [];
7
+ async createUser(data) {
8
+ const id = crypto.randomBytes(8).toString('hex');
9
+ const u = { id, ...data };
10
+ this.users.push(u);
11
+ return u;
12
+ }
13
+ async findUserByEmail(email) {
14
+ return this.users.find(u => u.email === email);
15
+ }
16
+ async findUserById(id) {
17
+ return this.users.find(u => u.id === id);
18
+ }
19
+ async updateUser(id, data) {
20
+ const idx = this.users.findIndex(u => u.id === id);
21
+ if (idx > -1)
22
+ this.users[idx] = { ...this.users[idx], ...data };
23
+ return this.users[idx];
24
+ }
25
+ async saveRefreshToken(data) {
26
+ this.tokens.push(data);
27
+ }
28
+ async findRefreshToken(token) {
29
+ return this.tokens.find(t => t.token === token) || null;
30
+ }
31
+ async deleteRefreshToken(token) {
32
+ this.tokens = this.tokens.filter(t => t.token !== token);
33
+ }
34
+ }
35
+ describe('Auth Module', () => {
36
+ let db;
37
+ let auth;
38
+ beforeEach(() => {
39
+ db = new MockAuthDB();
40
+ auth = createAuth({
41
+ secret: 'test-secret',
42
+ cookieMaxAge: 1000 * 60 * 60,
43
+ issuer: 'TestApp'
44
+ });
45
+ });
46
+ describe('Registration', () => {
47
+ it('registers a new user successfully', async () => {
48
+ const user = await auth.register(db, {
49
+ email: 'test@example.com',
50
+ password: 'password123'
51
+ });
52
+ expect(user.email).toBe('test@example.com');
53
+ expect(user.role).toBe('user');
54
+ expect(user.id).toBeDefined();
55
+ });
56
+ it('throws error for missing fields', async () => {
57
+ await expect(auth.register(db, { email: '', password: '123' }))
58
+ .rejects.toThrow('Missing fields');
59
+ });
60
+ });
61
+ describe('Login', () => {
62
+ beforeEach(async () => {
63
+ await auth.register(db, {
64
+ email: 'test@example.com',
65
+ password: 'password123'
66
+ });
67
+ });
68
+ it('logs in successfully with correct credentials', async () => {
69
+ const result = await auth.login(db, {
70
+ email: 'test@example.com',
71
+ password: 'password123'
72
+ });
73
+ expect(result.accessToken).toBeDefined();
74
+ expect(result.user.email).toBe('test@example.com');
75
+ expect(result.user.role).toBe('user');
76
+ });
77
+ it('rejects invalid password', async () => {
78
+ await expect(auth.login(db, {
79
+ email: 'test@example.com',
80
+ password: 'wrong'
81
+ })).rejects.toThrow('Invalid credentials');
82
+ });
83
+ it('rejects non-existent email', async () => {
84
+ await expect(auth.login(db, {
85
+ email: 'nonexistent@example.com',
86
+ password: 'password123'
87
+ })).rejects.toThrow('Invalid credentials');
88
+ });
89
+ });
90
+ describe('Middleware', () => {
91
+ let token;
92
+ let userId;
93
+ beforeEach(async () => {
94
+ const user = await auth.register(db, {
95
+ email: 'middleware@example.com',
96
+ password: 'password123'
97
+ });
98
+ userId = user.id;
99
+ const loginResult = await auth.login(db, {
100
+ email: 'middleware@example.com',
101
+ password: 'password123'
102
+ });
103
+ token = loginResult.accessToken;
104
+ });
105
+ it('should allow access with valid token', async () => {
106
+ const req = {
107
+ headers: { authorization: `Bearer ${token}` },
108
+ user: null
109
+ };
110
+ const res = {
111
+ status: jest.fn().mockReturnThis(),
112
+ json: jest.fn()
113
+ };
114
+ let nextCalled = false;
115
+ const next = () => { nextCalled = true; };
116
+ const middleware = auth.middleware();
117
+ await middleware(req, res, next);
118
+ expect(nextCalled).toBe(true);
119
+ expect(req.user).toBeDefined();
120
+ expect(req.user.id).toBe(userId);
121
+ });
122
+ it('should reject request without token', async () => {
123
+ const req = {
124
+ headers: {},
125
+ user: null
126
+ };
127
+ const res = {
128
+ status: jest.fn().mockReturnThis(),
129
+ json: jest.fn()
130
+ };
131
+ const next = jest.fn();
132
+ const middleware = auth.middleware();
133
+ await middleware(req, res, next);
134
+ expect(next).not.toHaveBeenCalled();
135
+ expect(res.status).toHaveBeenCalledWith(401);
136
+ expect(res.json).toHaveBeenCalledWith({ message: 'Unauthorized' });
137
+ });
138
+ it('should reject request with invalid token', async () => {
139
+ const req = {
140
+ headers: { authorization: 'Bearer invalid-token' },
141
+ user: null
142
+ };
143
+ const res = {
144
+ status: jest.fn().mockReturnThis(),
145
+ json: jest.fn()
146
+ };
147
+ const next = jest.fn();
148
+ const middleware = auth.middleware();
149
+ await middleware(req, res, next);
150
+ expect(next).not.toHaveBeenCalled();
151
+ expect(res.status).toHaveBeenCalledWith(401);
152
+ expect(res.json).toHaveBeenCalledWith({ message: 'Unauthorized' });
153
+ });
154
+ it('should handle Dolphin style context (no res, no next)', async () => {
155
+ const req = {
156
+ headers: { authorization: `Bearer ${token}` },
157
+ user: null
158
+ };
159
+ // Dolphin style: no res, next is not a function
160
+ const res = undefined;
161
+ let nextCalled = false;
162
+ const next = () => { nextCalled = true; };
163
+ const middleware = auth.middleware();
164
+ await middleware(req, res, next);
165
+ expect(nextCalled).toBe(true);
166
+ expect(req.user).toBeDefined();
167
+ });
168
+ });
169
+ describe('2FA', () => {
170
+ let userId;
171
+ beforeEach(async () => {
172
+ const user = await auth.register(db, {
173
+ email: '2fa@example.com',
174
+ password: 'password123'
175
+ });
176
+ userId = user.id;
177
+ });
178
+ it('enables 2FA and returns QR code', async () => {
179
+ const { secret, uri } = await auth.enable2FA(db, userId);
180
+ expect(secret).toBeDefined();
181
+ expect(secret.length).toBeGreaterThan(10);
182
+ expect(uri).toMatch(/otpauth:\/\/totp\/TestApp:2fa(@|%40)example\.com/);
183
+ expect(uri).toContain(`secret=${secret}`);
184
+ });
185
+ it('allows enabling 2FA multiple times (returns existing secret)', async () => {
186
+ const first = await auth.enable2FA(db, userId);
187
+ const second = await auth.enable2FA(db, userId);
188
+ expect(second.secret).toBe(first.secret);
189
+ expect(second.uri).toBe(first.uri);
190
+ });
191
+ it('rejects invalid TOTP verification', async () => {
192
+ await auth.enable2FA(db, userId);
193
+ await expect(auth.verify2FA(db, userId, '000000'))
194
+ .rejects.toThrow('Invalid verification token');
195
+ });
196
+ });
197
+ describe('Refresh Token', () => {
198
+ let refreshToken;
199
+ beforeEach(async () => {
200
+ await auth.register(db, {
201
+ email: 'refresh@example.com',
202
+ password: 'password123'
203
+ });
204
+ await auth.login(db, {
205
+ email: 'refresh@example.com',
206
+ password: 'password123'
207
+ });
208
+ refreshToken = db.tokens[0].token;
209
+ });
210
+ it('refreshes token successfully', async () => {
211
+ const newSession = await auth.refresh(db, refreshToken);
212
+ expect(newSession.accessToken).toBeDefined();
213
+ expect(newSession.user.email).toBe('refresh@example.com');
214
+ });
215
+ it('detects token reuse', async () => {
216
+ await auth.refresh(db, refreshToken);
217
+ await expect(auth.refresh(db, refreshToken))
218
+ .rejects.toThrow('Token reuse detected');
219
+ });
220
+ it('rejects expired token', async () => {
221
+ const shortAuth = createAuth({
222
+ secret: 'test-secret',
223
+ cookieMaxAge: 1
224
+ });
225
+ await shortAuth.register(db, {
226
+ email: 'expired@example.com',
227
+ password: 'password123'
228
+ });
229
+ await shortAuth.login(db, {
230
+ email: 'expired@example.com',
231
+ password: 'password123'
232
+ });
233
+ const user = db.users.find(u => u.email === 'expired@example.com');
234
+ const token = db.tokens.find(t => t.userId === user?.id)?.token;
235
+ await new Promise(resolve => setTimeout(resolve, 10));
236
+ await expect(shortAuth.refresh(db, token))
237
+ .rejects.toThrow('Invalid or expired refresh token');
238
+ });
239
+ });
240
+ describe('Logout', () => {
241
+ let refreshToken;
242
+ beforeEach(async () => {
243
+ await auth.register(db, {
244
+ email: 'logout@example.com',
245
+ password: 'password123'
246
+ });
247
+ await auth.login(db, {
248
+ email: 'logout@example.com',
249
+ password: 'password123'
250
+ });
251
+ refreshToken = db.tokens[0].token;
252
+ });
253
+ it('logs out successfully', async () => {
254
+ const result = await auth.logout(db, refreshToken);
255
+ expect(result.success).toBe(true);
256
+ const token = await db.findRefreshToken(refreshToken);
257
+ expect(token).toBeNull();
258
+ });
259
+ });
260
+ describe('Rate Limiting', () => {
261
+ it('limits login attempts', async () => {
262
+ await auth.register(db, {
263
+ email: 'ratelimit@example.com',
264
+ password: 'password123'
265
+ });
266
+ let rateLimited = false;
267
+ for (let i = 0; i < 7; i++) {
268
+ try {
269
+ await auth.login(db, {
270
+ email: 'ratelimit@example.com',
271
+ password: 'wrong'
272
+ });
273
+ }
274
+ catch (err) {
275
+ if (err.message === 'Rate limit exceeded') {
276
+ rateLimited = true;
277
+ expect(err.status).toBe(429);
278
+ break;
279
+ }
280
+ }
281
+ }
282
+ expect(rateLimited).toBe(true);
283
+ });
284
+ });
285
+ });
286
+ //# sourceMappingURL=auth.test.js.map