Files
fdbck/package.json
mAi bfb6dc8a2c feat(questions): boolean module (registry slot 1/7)
First per-type module — establishes the file layout for the remaining six.

- lib/questions/boolean.ts — schema (re-uses FeedbackQuestionBaseSchema +
  z.literal('boolean')), defaultStub, isAnswerEmpty, emptyStats, ingest,
  finalise, sanitizeForPublic, csvColumns, csvCellFor, adminCellSummary,
  plus the three .svelte component slots.
- lib/questions/boolean.input.svelte — Yes/Nein radio pair, exactly the
  same markup the participant page renders today (will be the receiver
  when /f/[slug] flips to the registry dispatcher in commit 12).
- lib/questions/boolean.builder.svelte — empty placeholder; boolean has
  no type-specific fields beyond the base. Slot exists so the registry
  shape stays uniform across all seven types.
- lib/questions/boolean.results.svelte — count + percent bars, same as the
  current Results.svelte branch.
- lib/questions/boolean.test.ts — 17 cases covering schema accept/reject,
  isAnswerEmpty (true/false/undefined/null/non-bool), ingest+finalise
  (yes/no counts, garbage ignored), CSV (single column, true/false/empty),
  adminCellSummary (Yes/No/em-dash).
- lib/questions/_base.ts — FeedbackQuestionBaseSchema extracted for use
  by the per-type modules. (Currently duplicates the private schema in
  schemas.ts; commit 11 will flip schemas.ts to read from the registry
  and drop the duplication.)

Registry: BooleanQuestion is the first entry in QUESTION_MODULES. The
legacy `q.type === 'boolean'` strips in FormBuilder / participant page /
Results.svelte / results.ts / submit / export still own dispatch — the
wiring step at the end of Phase 2 flips them.

70 server tests pass (was 58). svelte-check + bun run build clean.
2026-05-07 20:11:37 +02:00

36 lines
1.2 KiB
JSON

{
"name": "fdbck",
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"start": "node build/index.js",
"test:server": "bun test ./src/lib/server/rate-limit.test.ts ./src/lib/server/public-scope.test.ts ./src/lib/server/results.test.ts ./src/lib/server/admin-route.test.ts ./src/lib/server/feedback-pure.test.ts ./src/lib/questions/registry.test.ts ./src/lib/questions/boolean.test.ts",
"test:components": "bun --bun vitest run --config vitest.config.ts",
"test": "bun run test:server && bun run test:components"
},
"devDependencies": {
"@sveltejs/adapter-node": "^5.5.4",
"@sveltejs/kit": "^2.15.0",
"@sveltejs/vite-plugin-svelte": "^5.0.0",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/svelte": "^5.3.1",
"@types/bun": "^1.3.13",
"jsdom": "^29.1.1",
"svelte": "^5.0.0",
"svelte-check": "^4.0.0",
"typescript": "^5.0.0",
"vite": "^6.0.0",
"vitest": "^4.1.5"
},
"dependencies": {
"@supabase/supabase-js": "^2.104.1",
"postgres": "^3.4.9",
"zod": "^4.3.6"
}
}