@critical-path/server 0.13.5 → 0.14.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # @critical-path/server
2
2
 
3
+ ## 0.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b243a37: Fix correctness and safety issues found in a code audit.
8
+
9
+ **@critical-path/core**
10
+ - `SQLiteStore` now loads `node:sqlite` via `process.getBuiltinModule`, fixing `require is not defined` when constructed from a filename in plain Node ESM.
11
+ - Removed the unused `better-sqlite3` runtime dependency.
12
+ - `engine.addDependency` now detects indirect cycles (e.g. A → B → C → D → A), not just cycles between direct neighbours.
13
+ - Fixed `generateKeyBetween` returning out-of-range, duplicate keys after repeated inserts after the same item. It now throws a `RangeError` when `a >= b`.
14
+ - Added `engine.deleteProject(id)`, which deletes a project's tasks through `deleteTask` and publishes a new `project.deleted` event and webhook.
15
+ - Added exported `ValidationError` and `NotFoundError` classes. `logTime` now rejects non-numeric hours.
16
+
17
+ **@critical-path/server**
18
+ - `DELETE /projects/:id`, `POST /tasks/:id/dependencies` and `POST /time-entries` now go through the engine, so cycle checks, hour validation, roll-ups, events and webhooks apply.
19
+ - Added `PATCH /projects/:id`.
20
+ - `DELETE` on a resource that does not exist now returns `404` instead of `200 { success: false }`.
21
+ - Malformed JSON returns `400`, validation errors `400`, `NotFoundError` `404`, and dependency cycles `409`. Unexpected errors return a generic `500` message outside development.
22
+ - `OPTIONS` preflight requests return `204` with CORS headers.
23
+ - New router/adapter options: `onError(error, request)` to report unexpected errors or return a custom response, and `exposeErrors` to include real messages in 500 responses (defaults to on only when `NODE_ENV === 'development'`).
24
+ - `createNextHandler` returns a callable handler that also exposes per-method properties, so `export { handler as GET }` works as documented.
25
+
26
+ **@critical-path/mcp**
27
+ - Tools excluded via the `tools` option can no longer be called by name.
28
+ - Tool arguments are validated with each tool's zod schema; undeclared fields are stripped.
29
+ - Tool listings include `title` and MCP `readOnlyHint` / `destructiveHint` annotations.
30
+
31
+ **@critical-path/svelte**
32
+ - Rebuilt with the bundled `@critical-path/mcp` WebMCP argument validation.
33
+
34
+ **@critical-path/client**
35
+ - Delete methods resolve to `false` when the server returns `404`, keeping their boolean contract with the new server behaviour.
36
+
37
+ ### Patch Changes
38
+
39
+ - Updated dependencies [b243a37]
40
+ - @critical-path/core@0.22.0
41
+
3
42
  ## 0.13.5
4
43
 
5
44
  ### Patch Changes
package/README.md CHANGED
@@ -30,6 +30,9 @@ const handler = createNextHandler({
30
30
  });
31
31
 
32
32
  export { handler as GET, handler as POST, handler as PUT, handler as PATCH, handler as DELETE, handler as OPTIONS };
33
+
34
+ // Equivalent: the handler also exposes one property per method
35
+ // export const { GET, POST, PUT, PATCH, DELETE, OPTIONS } = createNextHandler({ ... });
33
36
  ```
34
37
 
35
38
  ---
@@ -53,6 +56,40 @@ export const OPTIONS = handler.OPTIONS;
53
56
 
54
57
  ---
55
58
 
59
+ ## ⚠️ Error Responses
60
+
61
+ | Status | When |
62
+ | :--- | :--- |
63
+ | `400` | Malformed JSON, `ValidationError`, workflow transition or custom field validation failures |
64
+ | `404` | Unknown route, `NotFoundError`, or `DELETE` of a resource that does not exist (successful deletes return `{ "success": true }`) |
65
+ | `409` | `CircularDependencyError` (body includes `cyclePath`) |
66
+ | `500` | Unexpected errors. The body is always `{ "error": "Internal Server Error" }`; the real error is logged with `console.error`. |
67
+
68
+ `OPTIONS` preflight requests return `204` with CORS headers.
69
+
70
+ ### Reporting & Exposing Unexpected Errors
71
+
72
+ Both adapters (and `new CriticalPathRouter(config, options)`) accept router options as a second argument:
73
+
74
+ ```ts
75
+ export const { GET, POST, PUT, PATCH, DELETE, OPTIONS } = createNextHandler(
76
+ { store },
77
+ {
78
+ // Called only for unexpected (500) errors. Return a Response to replace the default.
79
+ onError: (error, request) => {
80
+ Sentry.captureException(error, { extra: { url: request.url } });
81
+ },
82
+ // Include real error messages in 500 responses.
83
+ // Defaults to true only when NODE_ENV === 'development'.
84
+ exposeErrors: false
85
+ }
86
+ );
87
+ ```
88
+
89
+ Without `onError`, unexpected errors are logged with `console.error`. Expected errors (400, 404, 409) always include their message and never reach `onError`.
90
+
91
+ ---
92
+
56
93
  ## 📄 License
57
94
 
58
95
  MIT © [Critical Path](https://github.com/Pixerate/Critical-Path)
@@ -1,11 +1,21 @@
1
- import { CriticalPathRouter } from '../router.js';
1
+ import { CriticalPathRouter, type CriticalPathRouterOptions } from '../router.js';
2
2
  import type { CriticalPathConfig } from '@critical-path/core';
3
- export declare function createNextHandler(configOrRouter: CriticalPathConfig | CriticalPathRouter): {
4
- GET: (request: Request) => Promise<Response>;
5
- POST: (request: Request) => Promise<Response>;
6
- PUT: (request: Request) => Promise<Response>;
7
- PATCH: (request: Request) => Promise<Response>;
8
- DELETE: (request: Request) => Promise<Response>;
9
- OPTIONS: (request: Request) => Promise<Response>;
3
+ type NextRouteHandler = (request: Request) => Promise<Response>;
4
+ export type CriticalPathNextHandler = NextRouteHandler & {
5
+ GET: NextRouteHandler;
6
+ POST: NextRouteHandler;
7
+ PUT: NextRouteHandler;
8
+ PATCH: NextRouteHandler;
9
+ DELETE: NextRouteHandler;
10
+ OPTIONS: NextRouteHandler;
10
11
  };
12
+ /**
13
+ * Creates a Next.js App Router route handler. The result is callable and also exposes one
14
+ * property per HTTP method, so both export styles work:
15
+ *
16
+ * export const { GET, POST, PUT, PATCH, DELETE, OPTIONS } = createNextHandler(config);
17
+ * export { handler as GET, handler as POST, ... };
18
+ */
19
+ export declare function createNextHandler(configOrRouter: CriticalPathConfig | CriticalPathRouter, options?: CriticalPathRouterOptions): CriticalPathNextHandler;
20
+ export {};
11
21
  //# sourceMappingURL=next.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/adapters/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,kBAAkB,GAAG,kBAAkB;mBAKvD,OAAO;oBAAP,OAAO;mBAAP,OAAO;qBAAP,OAAO;sBAAP,OAAO;uBAAP,OAAO;EAYxC"}
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/adapters/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG;IACvD,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,kBAAkB,GAAG,kBAAkB,EACvD,OAAO,CAAC,EAAE,yBAAyB,GAClC,uBAAuB,CAiBzB"}
@@ -1,18 +1,25 @@
1
1
  import { CriticalPathRouter } from '../router.js';
2
- export function createNextHandler(configOrRouter) {
2
+ /**
3
+ * Creates a Next.js App Router route handler. The result is callable and also exposes one
4
+ * property per HTTP method, so both export styles work:
5
+ *
6
+ * export const { GET, POST, PUT, PATCH, DELETE, OPTIONS } = createNextHandler(config);
7
+ * export { handler as GET, handler as POST, ... };
8
+ */
9
+ export function createNextHandler(configOrRouter, options) {
3
10
  const router = configOrRouter instanceof CriticalPathRouter
4
11
  ? configOrRouter
5
- : new CriticalPathRouter(configOrRouter);
12
+ : new CriticalPathRouter(configOrRouter, options);
6
13
  const handler = async (request) => {
7
14
  return router.handleRequest(request);
8
15
  };
9
- return {
16
+ return Object.assign(handler, {
10
17
  GET: handler,
11
18
  POST: handler,
12
19
  PUT: handler,
13
20
  PATCH: handler,
14
21
  DELETE: handler,
15
22
  OPTIONS: handler
16
- };
23
+ });
17
24
  }
18
25
  //# sourceMappingURL=next.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/adapters/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,UAAU,iBAAiB,CAAC,cAAuD;IACvF,MAAM,MAAM,GAAG,cAAc,YAAY,kBAAkB;QACzD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;QACzC,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/adapters/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAkC,MAAM,cAAc,CAAC;AAclF;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,cAAuD,EACvD,OAAmC;IAEnC,MAAM,MAAM,GAAG,cAAc,YAAY,kBAAkB;QACzD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAqB,KAAK,EAAE,OAAgB,EAAE,EAAE;QAC3D,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QAC5B,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +1,6 @@
1
- import { CriticalPathRouter } from '../router.js';
1
+ import { CriticalPathRouter, type CriticalPathRouterOptions } from '../router.js';
2
2
  import type { CriticalPathConfig } from '@critical-path/core';
3
- export declare function createSvelteKitHandler(configOrRouter: CriticalPathConfig | CriticalPathRouter): {
3
+ export declare function createSvelteKitHandler(configOrRouter: CriticalPathConfig | CriticalPathRouter, options?: CriticalPathRouterOptions): {
4
4
  GET: ({ request }: {
5
5
  request: Request;
6
6
  }) => Promise<Response>;
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit.d.ts","sourceRoot":"","sources":["../../src/adapters/sveltekit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,kBAAkB,GAAG,kBAAkB;uBAKxD;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;wBAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;uBAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;yBAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;0BAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;2BAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;EAYzD"}
1
+ {"version":3,"file":"sveltekit.d.ts","sourceRoot":"","sources":["../../src/adapters/sveltekit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,kBAAkB,GAAG,kBAAkB,EACvD,OAAO,CAAC,EAAE,yBAAyB;uBAMC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;wBAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;uBAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;yBAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;0BAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;2BAApB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;EAYzD"}
@@ -1,8 +1,8 @@
1
1
  import { CriticalPathRouter } from '../router.js';
2
- export function createSvelteKitHandler(configOrRouter) {
2
+ export function createSvelteKitHandler(configOrRouter, options) {
3
3
  const router = configOrRouter instanceof CriticalPathRouter
4
4
  ? configOrRouter
5
- : new CriticalPathRouter(configOrRouter);
5
+ : new CriticalPathRouter(configOrRouter, options);
6
6
  const handler = async ({ request }) => {
7
7
  return router.handleRequest(request);
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit.js","sourceRoot":"","sources":["../../src/adapters/sveltekit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,UAAU,sBAAsB,CAAC,cAAuD;IAC5F,MAAM,MAAM,GAAG,cAAc,YAAY,kBAAkB;QACzD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,KAAK,EAAE,EAAE,OAAO,EAAwB,EAAE,EAAE;QAC1D,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sveltekit.js","sourceRoot":"","sources":["../../src/adapters/sveltekit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAkC,MAAM,cAAc,CAAC;AAGlF,MAAM,UAAU,sBAAsB,CACpC,cAAuD,EACvD,OAAmC;IAEnC,MAAM,MAAM,GAAG,cAAc,YAAY,kBAAkB;QACzD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,EAAE,EAAE,OAAO,EAAwB,EAAE,EAAE;QAC1D,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { CriticalPathRouter } from './router.js';
3
+ import { createNextHandler } from './adapters/next.js';
4
+ import { InMemoryStore } from '@critical-path/core';
3
5
  describe('@critical-path/server Router Tests', () => {
4
6
  it('handles project creation and retrieval over HTTP Fetch Requests', async () => {
5
7
  const router = new CriticalPathRouter();
@@ -359,5 +361,166 @@ describe('@critical-path/server Router Tests', () => {
359
361
  expect(data.status).toBe('Executing compilation step');
360
362
  expect(typeof data.timestamp).toBe('number');
361
363
  });
364
+ describe('engine invariants and error mapping', () => {
365
+ const base = 'http://localhost:3000/api/critical-path';
366
+ const post = (path, body) => new Request(`${base}${path}`, {
367
+ method: 'POST',
368
+ headers: { 'Content-Type': 'application/json' },
369
+ body: typeof body === 'string' ? body : JSON.stringify(body)
370
+ });
371
+ it('rejects dependency cycles created over HTTP with 409', async () => {
372
+ const router = new CriticalPathRouter();
373
+ const proj = await router.engine.createProject({ key: 'CYC', name: 'Cycle' });
374
+ const a = await router.engine.createTask({ projectId: proj.id, title: 'A' });
375
+ const b = await router.engine.createTask({ projectId: proj.id, title: 'B' });
376
+ const first = await router.handleRequest(post(`/tasks/${a.id}/dependencies`, { dependsOnTaskId: b.id }));
377
+ expect(first.status).toBe(201);
378
+ const cyclic = await router.handleRequest(post(`/tasks/${b.id}/dependencies`, { dependsOnTaskId: a.id }));
379
+ expect(cyclic.status).toBe(409);
380
+ expect((await cyclic.json()).cyclePath).toBeDefined();
381
+ const missing = await router.handleRequest(post(`/tasks/${b.id}/dependencies`, {}));
382
+ expect(missing.status).toBe(400);
383
+ });
384
+ it('validates time entries and rolls hours up to the task', async () => {
385
+ const router = new CriticalPathRouter();
386
+ const proj = await router.engine.createProject({ key: 'TIME', name: 'Time' });
387
+ const task = await router.engine.createTask({ projectId: proj.id, title: 'Timed' });
388
+ const negative = await router.handleRequest(post('/time-entries', { taskId: task.id, hours: -3 }));
389
+ expect(negative.status).toBe(400);
390
+ const ok = await router.handleRequest(post('/time-entries', { taskId: task.id, hours: 2 }));
391
+ expect(ok.status).toBe(201);
392
+ expect((await router.engine.getTask(task.id))?.loggedHours).toBe(2);
393
+ });
394
+ it('deletes projects through the engine, removing their tasks', async () => {
395
+ const router = new CriticalPathRouter();
396
+ const proj = await router.engine.createProject({ key: 'GONE', name: 'Gone' });
397
+ const task = await router.engine.createTask({ projectId: proj.id, title: 'Child' });
398
+ const res = await router.handleRequest(new Request(`${base}/projects/${proj.id}`, { method: 'DELETE' }));
399
+ expect(res.status).toBe(200);
400
+ expect(await router.engine.getTask(task.id)).toBeNull();
401
+ });
402
+ it('returns 400 for malformed JSON and hides internal error messages', async () => {
403
+ const router = new CriticalPathRouter();
404
+ const bad = await router.handleRequest(post('/projects', '{not json'));
405
+ expect(bad.status).toBe(400);
406
+ router.engine.getProjects = async () => {
407
+ throw new Error('SQLITE_CORRUPT: secret internals');
408
+ };
409
+ const originalError = console.error;
410
+ console.error = () => { };
411
+ try {
412
+ const res = await router.handleRequest(new Request(`${base}/projects`));
413
+ expect(res.status).toBe(500);
414
+ expect((await res.json()).error).toBe('Internal Server Error');
415
+ }
416
+ finally {
417
+ console.error = originalError;
418
+ }
419
+ });
420
+ it('answers CORS preflight requests', async () => {
421
+ const router = new CriticalPathRouter();
422
+ const res = await router.handleRequest(new Request(`${base}/tasks`, { method: 'OPTIONS' }));
423
+ expect(res.status).toBe(204);
424
+ expect(res.headers.get('Access-Control-Allow-Methods')).toContain('PATCH');
425
+ });
426
+ });
427
+ it('createNextHandler supports both callable and destructured exports', async () => {
428
+ const handler = createNextHandler({});
429
+ const { GET } = handler;
430
+ const req = () => new Request('http://localhost:3000/api/critical-path/projects');
431
+ expect((await handler(req())).status).toBe(200);
432
+ expect((await GET(req())).status).toBe(200);
433
+ });
434
+ it('updates projects via PATCH without allowing id or timestamp overrides', async () => {
435
+ const router = new CriticalPathRouter();
436
+ const proj = await router.engine.createProject({ key: 'UPD', name: 'Before' });
437
+ const patch = (id, body) => router.handleRequest(new Request(`http://localhost:3000/api/critical-path/projects/${id}`, {
438
+ method: 'PATCH',
439
+ headers: { 'Content-Type': 'application/json' },
440
+ body: JSON.stringify(body)
441
+ }));
442
+ const res = await patch(proj.id, { name: 'After', id: 'hijacked', createdAt: '1999-01-01T00:00:00.000Z' });
443
+ expect(res.status).toBe(200);
444
+ const { project } = await res.json();
445
+ expect(project.id).toBe(proj.id);
446
+ expect(project.name).toBe('After');
447
+ expect(project.createdAt).toBe(proj.createdAt);
448
+ expect((await patch('missing', { name: 'x' })).status).toBe(404);
449
+ });
450
+ it('returns 404 when deleting a resource that does not exist', async () => {
451
+ const router = new CriticalPathRouter();
452
+ for (const path of ['projects', 'tasks', 'workflows', 'comments', 'attachments', 'deliverables', 'teams', 'containers', 'iterations']) {
453
+ const res = await router.handleRequest(new Request(`http://localhost:3000/api/critical-path/${path}/missing`, { method: 'DELETE' }));
454
+ expect(res.status, path).toBe(404);
455
+ }
456
+ });
457
+ describe('unexpected error handling options', () => {
458
+ const failingRouter = (options) => {
459
+ const router = new CriticalPathRouter(undefined, options);
460
+ router.engine.getProjects = async () => {
461
+ throw new Error('SQLITE_CORRUPT: secret internals');
462
+ };
463
+ return router;
464
+ };
465
+ const listProjects = () => new Request('http://localhost:3000/api/critical-path/projects');
466
+ it('passes unexpected errors and the request to onError instead of console.error', async () => {
467
+ const seen = [];
468
+ const router = failingRouter({
469
+ onError: (err, request) => {
470
+ seen.push({ message: err.message, url: request.url });
471
+ }
472
+ });
473
+ const res = await router.handleRequest(listProjects());
474
+ expect(res.status).toBe(500);
475
+ expect((await res.json()).error).toBe('Internal Server Error');
476
+ expect(seen).toEqual([{ message: 'SQLITE_CORRUPT: secret internals', url: listProjects().url }]);
477
+ });
478
+ it('lets onError replace the response', async () => {
479
+ const router = failingRouter({
480
+ onError: () => new Response(JSON.stringify({ error: 'Try again later' }), { status: 503 })
481
+ });
482
+ const res = await router.handleRequest(listProjects());
483
+ expect(res.status).toBe(503);
484
+ });
485
+ it('does not call onError for expected client errors', async () => {
486
+ let calls = 0;
487
+ const router = new CriticalPathRouter(undefined, { onError: () => void calls++ });
488
+ const res = await router.handleRequest(new Request('http://localhost:3000/api/critical-path/projects', { method: 'POST', body: '{bad' }));
489
+ expect(res.status).toBe(400);
490
+ expect(calls).toBe(0);
491
+ });
492
+ it('exposes real messages only when exposeErrors is enabled', async () => {
493
+ const exposed = failingRouter({ exposeErrors: true, onError: () => { } });
494
+ expect((await (await exposed.handleRequest(listProjects())).json()).error).toBe('SQLITE_CORRUPT: secret internals');
495
+ const hidden = failingRouter({ exposeErrors: false, onError: () => { } });
496
+ expect((await (await hidden.handleRequest(listProjects())).json()).error).toBe('Internal Server Error');
497
+ });
498
+ it('defaults exposeErrors from NODE_ENV === development', async () => {
499
+ const original = process.env.NODE_ENV;
500
+ try {
501
+ process.env.NODE_ENV = 'development';
502
+ const dev = failingRouter({ onError: () => { } });
503
+ expect((await (await dev.handleRequest(listProjects())).json()).error).toContain('SQLITE_CORRUPT');
504
+ process.env.NODE_ENV = 'production';
505
+ const prod = failingRouter({ onError: () => { } });
506
+ expect((await (await prod.handleRequest(listProjects())).json()).error).toBe('Internal Server Error');
507
+ }
508
+ finally {
509
+ process.env.NODE_ENV = original;
510
+ }
511
+ });
512
+ it('passes options through createNextHandler', async () => {
513
+ const store = new InMemoryStore();
514
+ store.getProjects = async () => {
515
+ throw new Error('adapter failure');
516
+ };
517
+ const errors = [];
518
+ const handler = createNextHandler({ store }, { exposeErrors: true, onError: (err) => void errors.push(err) });
519
+ const res = await handler(listProjects());
520
+ expect(res.status).toBe(500);
521
+ expect((await res.json()).error).toBe('adapter failure');
522
+ expect(errors).toHaveLength(1);
523
+ });
524
+ });
362
525
  });
363
526
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
package/dist/router.d.ts CHANGED
@@ -1,8 +1,25 @@
1
1
  import { CriticalPathEngine, type CriticalPathConfig } from '@critical-path/core';
2
+ export interface CriticalPathRouterOptions {
3
+ /**
4
+ * Called for unexpected errors (those that would produce a 500), e.g. to report to Sentry.
5
+ * Return a `Response` to replace the default 500 response. When omitted, errors are logged
6
+ * with `console.error`.
7
+ */
8
+ onError?: (error: unknown, request: Request) => void | Response | Promise<void | Response>;
9
+ /**
10
+ * Include the real error message in 500 responses. Defaults to `true` only when
11
+ * `NODE_ENV === 'development'`, so production deployments never leak internals.
12
+ */
13
+ exposeErrors?: boolean;
14
+ }
2
15
  export declare class CriticalPathRouter {
3
16
  engine: CriticalPathEngine;
4
- constructor(configOrEngine?: CriticalPathConfig | CriticalPathEngine);
17
+ private readonly onError?;
18
+ private readonly exposeErrors;
19
+ constructor(configOrEngine?: CriticalPathConfig | CriticalPathEngine, options?: CriticalPathRouterOptions);
5
20
  handleRequest(request: Request): Promise<Response>;
21
+ private readJson;
22
+ private errorResponse;
6
23
  private jsonResponse;
7
24
  }
8
25
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAElF,qBAAa,kBAAkB;IACtB,MAAM,EAAE,kBAAkB,CAAC;gBAEtB,cAAc,CAAC,EAAE,kBAAkB,GAAG,kBAAkB;IAQ9D,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0hBxD,OAAO,CAAC,YAAY;CAWrB"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAelF,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;IAC3F;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAMD,qBAAa,kBAAkB;IACtB,MAAM,EAAE,kBAAkB,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAE3B,cAAc,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,OAAO,GAAE,yBAA8B;IAUvG,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;YAsiB1C,QAAQ;YAQR,aAAa;IAoC3B,OAAO,CAAC,YAAY;CASrB"}