fix(realtime): expliciete .js-extensies op de relatieve imports #43

Merged
janpeter merged 1 commit from fix/realtime-payload-import-extensions into main 2026-07-26 16:57:39 +02:00
Owner

Wat

lib/realtime-payload.ts was het enige bestand in lib/ met extensieloze relatieve imports. De overige 13 relatieve imports (7 bestanden) gebruiken al './x.js'. Deze PR trekt het bestand recht naar die bestaande conventie:

-import type { AgentRuntime, JobSource } from './agent-runtime'
-import type { ClaudeJobKind } from './claude-job-kind'
-import type { ClaudeJobStatusDb } from './job-status'
-import type { TaskStatusDb } from './task-status'
+import type { AgentRuntime, JobSource } from './agent-runtime.js'
+import type { ClaudeJobKind } from './claude-job-kind.js'
+import type { ClaudeJobStatusDb } from './job-status.js'
+import type { TaskStatusDb } from './task-status.js'

Waarom

Een consumer met moduleResolution: NodeNext — scrum4me-mcp — kan dit bestand niet typechecken: 4× TS2835. In scrum4me-mcp stond __tests__/realtime-payload-contract.test.ts daarom buiten de typecheck-scope (zie janpeter/scrum4me-mcp#101). Na deze merge kan die uitzondering weg en is daar 180/180 testbestanden gedekt.

Risico

Verwaarloosbaar:

  • Alle vier zijn import type — ze worden bij compilatie volledig gewist, dus geen runtime-effect voor welke consumer dan ook.
  • Deze repo gebruikt zelf moduleResolution: Bundler, die dezelfde .js.ts-substitutie doet; de 13 bestaande .js-imports bewijzen dat al.

Verificatie

npm run verify (verify-no-deps + typecheck + tests) lokaal groen: typecheck schoon, 22 testbestanden / 237 tests passed.

🤖 Generated with Claude Code

## Wat `lib/realtime-payload.ts` was het enige bestand in `lib/` met extensieloze relatieve imports. De overige **13 relatieve imports (7 bestanden)** gebruiken al `'./x.js'`. Deze PR trekt het bestand recht naar die bestaande conventie: ```diff -import type { AgentRuntime, JobSource } from './agent-runtime' -import type { ClaudeJobKind } from './claude-job-kind' -import type { ClaudeJobStatusDb } from './job-status' -import type { TaskStatusDb } from './task-status' +import type { AgentRuntime, JobSource } from './agent-runtime.js' +import type { ClaudeJobKind } from './claude-job-kind.js' +import type { ClaudeJobStatusDb } from './job-status.js' +import type { TaskStatusDb } from './task-status.js' ``` ## Waarom Een consumer met `moduleResolution: NodeNext` — scrum4me-mcp — kan dit bestand niet typechecken: 4× TS2835. In scrum4me-mcp stond `__tests__/realtime-payload-contract.test.ts` daarom buiten de typecheck-scope (zie janpeter/scrum4me-mcp#101). Na deze merge kan die uitzondering weg en is daar 180/180 testbestanden gedekt. ## Risico Verwaarloosbaar: - Alle vier zijn `import type` — ze worden bij compilatie volledig gewist, dus **geen runtime-effect** voor welke consumer dan ook. - Deze repo gebruikt zelf `moduleResolution: Bundler`, die dezelfde `.js` → `.ts`-substitutie doet; de 13 bestaande `.js`-imports bewijzen dat al. ## Verificatie `npm run verify` (verify-no-deps + typecheck + tests) lokaal groen: typecheck schoon, **22 testbestanden / 237 tests passed**. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(realtime): expliciete .js-extensies op de relatieve imports
All checks were successful
CI / Verify (pull_request) Successful in 18s
1b440b620f
realtime-payload.ts was het enige bestand in lib/ met extensieloze relatieve
imports; de overige 13 relatieve imports (7 bestanden) gebruiken al './x.js'.
Dit trekt het bestand recht naar de bestaande conventie.

Aanleiding: een consumer met moduleResolution NodeNext (scrum4me-mcp) kan het
bestand hierdoor niet typechecken — 4× TS2835. Daar stond de bijbehorende
contracttest daarom buiten de typecheck-scope.

Geen runtime-effect: alle vier zijn `import type` en worden bij compilatie
volledig gewist. Onder de Bundler-resolutie van deze repo verandert er niets
(npm run verify: typecheck schoon, 22 bestanden / 237 tests groen).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
s4m-codex-reviewer left a comment

Verdict: APPROVED

Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

Findings

  • Geen findings.

Review-notities

De wijziging in lib/realtime-payload.ts:2 t/m lib/realtime-payload.ts:5 voegt expliciete .js-extensies toe aan relatieve type-only imports. Dit is conform de productdoc voor @scrum4me/shared, die ESM TS-bron met .js-extensioned relative imports voorschrijft. De wijziging is smal, raakt geen runtime-logica, en introduceert geen test- of documentatiegat dat deze PR zou moeten blokkeren.

# Verdict: APPROVED Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - Geen findings. ## Review-notities De wijziging in `lib/realtime-payload.ts:2` t/m `lib/realtime-payload.ts:5` voegt expliciete `.js`-extensies toe aan relatieve type-only imports. Dit is conform de productdoc voor `@scrum4me/shared`, die ESM TS-bron met `.js`-extensioned relative imports voorschrijft. De wijziging is smal, raakt geen runtime-logica, en introduceert geen test- of documentatiegat dat deze PR zou moeten blokkeren.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-shared!43
No description provided.