{ "name": "tech-log-frontend", "version": "0.1.0", "private": true, "type": "module", "packageManager": "pnpm@11.17.0", "engines": { "node": ">=24.11.0 <25.0.0", "pnpm": ">=11.0.0 <12.0.0" }, "scripts": { "dev": "vite", "build": "node scripts/build-frontend.ts", "build:profile": "node scripts/generate-runtime-config.ts", "build:release-candidate": "corepack pnpm build && corepack pnpm generate:supply-chain && corepack pnpm scan:security && corepack pnpm verify:release && node scripts/verify-supply-chain-artifacts.ts && node scripts/create-release-candidate.ts", "preview": "node dist/server.mjs", "verify:tech-log-source-parity": "node tests/support/browser/verify-tech-log-source-parity.ts", "lint": "eslint src scripts tests recipes .storybook vite.config.ts vitest.config.ts playwright*.config.ts --max-warnings=0", "check:architecture": "node scripts/check-architecture.ts", "check:design-system": "node scripts/check-design-system.ts", "check:design-system:fixture": "node scripts/check-design-system.ts --fixture", "check:i18n": "node scripts/check-i18n.ts", "check:i18n:fixture": "node scripts/check-i18n.ts --fixture", "check:adapter-inventory": "node scripts/check-adapter-inventory.ts", "check:remediation-ledger": "node scripts/check-remediation-ledger.ts", "check:release-admission": "node scripts/check-release-admission.ts", "check:diagnostics": "node scripts/check-diagnostics.ts", "check:diagnostics:fixture": "node scripts/check-diagnostics.ts --fixture", "check:types": "corepack pnpm check:types:app && corepack pnpm check:types:node && corepack pnpm check:types:test && corepack pnpm check:types:recipes && corepack pnpm check:types:web-worker && corepack pnpm check:types:service-worker", "check:types:app": "tsc --project tsconfig.app.json", "check:types:node": "tsc --project tsconfig.node.json", "check:types:test": "tsc --project tsconfig.test.json", "check:types:recipes": "node scripts/check-optional-recipe-types.ts", "check:types:fixture": "tsc --ignoreConfig --strict --noEmit --target ES2022 --module NodeNext --moduleResolution NodeNext tests/fixtures/typecheck/invalid-port-call.ts", "check:types:fixture:ts-port": "tsc --ignoreConfig --strict --noEmit --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-port-implementation.ts", "check:types:fixture:ts-result": "tsc --ignoreConfig --strict --noEmit --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-result-narrowing.ts", "check:types:fixture:application-output": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-application-output.ts", "check:types:fixture:application-input": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-application-input.ts", "check:types:fixture:feature-input": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-feature-input.ts", "check:types:fixture:failure-kind": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-failure-kind.ts", "check:types:fixture:reference-operation": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-reference-operation.ts", "check:types:fixture:async-overlay": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-async-overlay.ts", "check:types:fixture:route-runtime": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-route-runtime.ts", "check:types:fixture:page-action": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler --jsx react-jsx tests/fixtures/typecheck/invalid-page-action.tsx", "check:types:fixture:icon-button": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler --jsx react-jsx tests/fixtures/typecheck/invalid-icon-button.tsx", "check:types:fixture:i18n-key": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-message-key.ts", "check:types:fixture:i18n-params": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-message-params.ts", "check:types:fixture:diagnostics": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-diagnostics-port.ts", "check:types:fixture:image-resolve-signal": "tsc --ignoreConfig --strict --noEmit --skipLibCheck --target ES2022 --module ESNext --moduleResolution Bundler tests/fixtures/typecheck/invalid-image-cdn-resolve-signal.ts", "test:runtime-schema": "vitest run tests/runtime-schema --reporter=default --reporter=junit --outputFile.junit=artifacts/tests/runtime-schema.xml --passWithNoTests", "test:unit": "vitest run tests/unit --reporter=default --reporter=junit --outputFile.junit=artifacts/tests/unit.xml", "test:component": "vitest run tests/component --reporter=default --reporter=junit --outputFile.junit=artifacts/tests/component.xml", "test:integration": "vitest run tests/integration --reporter=default --reporter=junit --outputFile.junit=artifacts/tests/integration.xml", "test:http-scenario-catalog": "vitest run tests/integration/http-scenario-catalog.test.ts --reporter=default --maxWorkers=1", "test:http-scenario-evidence": "node scripts/run-http-scenario-evidence.ts", "test:recipes": "vitest run tests/recipes --reporter=default --reporter=junit --outputFile.junit=artifacts/tests/optional-recipes.xml --passWithNoTests", "test:e2e": "playwright test", "test:e2e:dev": "playwright test --config playwright.dev.config.ts", "test:browser-capabilities": "playwright test --config playwright.capabilities.config.ts", "verify:browser-capability-evidence": "node scripts/verify-browser-capability-evidence.ts", "storybook": "storybook dev -p 6006", "build:storybook": "storybook build -o artifacts/storybook/static", "test:storybook": "playwright test --config playwright.storybook.config.ts", "test:visual": "playwright test --config playwright.visual.config.ts", "test:visual:update": "playwright test --config playwright.visual.config.ts --update-snapshots", "check:test-evidence": "node scripts/check-test-evidence.ts", "check:test-evidence:browser": "node scripts/check-test-evidence.ts --skip-scenario-executions", "check:http-scenario-evidence": "node scripts/check-test-evidence.ts --scenario-only --artifact artifacts/quality/http-scenario-evidence.json", "check:http-scenario-evidence:fixture": "node scripts/check-test-evidence.ts --scenario-only --source-root tests/fixtures/test-evidence/scenarios/source --policy tests/fixtures/test-evidence/scenarios/policy.json --catalog tests/fixtures/test-evidence/scenarios/catalog.json --receipt tests/fixtures/test-evidence/scenarios/receipt.json --artifact artifacts/quality/http-scenario-evidence-fixture.json", "check:test-evidence:source": "node scripts/check-test-evidence.ts --source-only --artifact artifacts/quality/test-evidence-source.json", "check:test-evidence:fixture": "node scripts/check-test-evidence.ts --source-root tests/fixtures/test-evidence/forbidden --artifact artifacts/quality/test-evidence-fixture.json", "test:a11y": "playwright test --grep @a11y && node scripts/write-a11y-report.ts", "review:a11y-manual": "node scripts/verify-a11y-manual.ts", "test:sample-removal": "node scripts/test-sample-removal.ts", "test:optional-recipe-removal": "node scripts/test-optional-recipe-removal.ts", "test:browser-file-storage-removal": "node scripts/test-browser-file-storage-runtime-removal.ts", "test:realtime-removal": "node scripts/test-realtime-runtime-removal.ts", "test:reference-feature": "vitest run tests/features/reference-feature --reporter=default --reporter=junit --outputFile.junit=artifacts/tests/reference-feature.xml --passWithNoTests", "test:tech-log": "vitest run tests/features/tech-log --reporter=default --reporter=junit --outputFile.junit=artifacts/tests/tech-log.xml", "check:v8-coverage-counter-semantics": "node scripts/check-v8-coverage-counter-semantics.ts", "test:coverage": "corepack pnpm check:v8-coverage-counter-semantics && vitest run tests/runtime-schema tests/unit tests/component tests/integration tests/features/reference-feature tests/features/tech-log --coverage --maxWorkers=4 --reporter=default --reporter=junit --outputFile.junit=artifacts/tests/coverage.xml && node scripts/check-risk-coverage.ts", "check:coverage:fixture": "node scripts/check-risk-coverage.ts --summary tests/fixtures/coverage/below-threshold.json --artifact artifacts/quality/risk-coverage-fixture.json", "test:all": "corepack pnpm test:runtime-schema && corepack pnpm test:unit && corepack pnpm test:component && corepack pnpm test:integration && corepack pnpm test:reference-feature && corepack pnpm test:tech-log && corepack pnpm test:recipes", "verify:lockfile": "corepack pnpm install --frozen-lockfile --ignore-scripts", "check:frozen-lockfile:fixture": "node scripts/check-frozen-lockfile-fixture.ts", "generate:artifact-schemas": "node scripts/generate-artifact-schemas.ts", "check:artifact-schemas": "node scripts/generate-artifact-schemas.ts --check", "generate:tech-log-contract": "node scripts/generate-tech-log-contract.ts", "check:tech-log-contract": "node scripts/generate-tech-log-contract.ts --check", "generate:supply-chain": "node scripts/generate-supply-chain.ts", "verify:local-evidence": "node scripts/verify-release-candidate.ts && node scripts/verify-release.ts && node scripts/verify-supply-chain-artifacts.ts && node scripts/verify-archived-local-evidence.ts && node scripts/verify-release-candidate.ts", "verify:promotion": "node scripts/verify-exact-promotion-bundle.ts", "update:dependency-baseline": "node scripts/update-dependency-baseline.ts", "check:supply-chain:fixtures": "node scripts/check-supply-chain-fixtures.ts", "check:supply-chain:provider-fixtures": "node scripts/check-supply-chain-provider-fixtures.ts", "verify:reproducible-build": "node scripts/verify-reproducible-build.ts", "scan:security": "node scripts/security-scan.ts", "scan:security:fixture": "node scripts/security-scan.ts --policy tests/fixtures/security/secret-detection/forbidden-policy.json --artifact artifacts/security/scan-fixture.sarif", "check:security:fixtures": "node scripts/check-security-fixtures.ts", "check:browser-security": "node scripts/check-browser-security.ts", "check:browser-file-storage-boundaries": "node scripts/check-browser-file-storage-boundaries.ts", "check:realtime-boundaries": "node scripts/check-realtime-boundaries.ts", "check:realtime-boundaries:fixture": "node scripts/check-realtime-boundary-fixtures.ts", "check:optional-recipes": "node scripts/check-optional-recipes.ts --require-dist", "check:optional-recipes:source": "node scripts/check-optional-recipes.ts", "check:optional-recipe-fixtures": "node scripts/check-optional-recipe-fixtures.ts", "check:registries": "node scripts/check-registries.ts", "check:registries:structure": "node scripts/check-registries.ts --no-baseline", "check:registries:compatibility-fixtures": "node scripts/check-registry-compatibility-fixtures.ts", "check:registries:baseline-fixture": "node scripts/check-registries.ts --approval tests/fixtures/registry/compatibility/tampered-approval.json --artifact artifacts/quality/registry-baseline-fixture.json", "check:registries:fixture": "node scripts/check-registries.ts --governance tests/fixtures/registry/forbidden/governance.json --artifact artifacts/quality/registry-fixture.json", "check:routes:fixture": "node scripts/check-registries.ts --governance tests/fixtures/registry/routes/governance.json --artifact artifacts/quality/route-registry-fixture.json", "verify:compatibility": "node scripts/check-compatibility.ts", "verify:release": "node scripts/verify-release.ts", "verify:hosting-headers": "node scripts/verify-hosting-headers.ts", "check:bundle": "node scripts/generate-supply-chain.ts && node scripts/check-bundle.ts", "test:performance": "node scripts/test-performance.ts", "collect:web-vitals-evidence": "node scripts/collect-web-vitals-evidence.ts", "drill:runbook": "node scripts/drill-runbook.ts", "drill:runbooks": "corepack pnpm drill:runbook -- FE-RB-001 && corepack pnpm drill:runbook -- FE-RB-002 && corepack pnpm drill:runbook -- FE-RB-003 && corepack pnpm drill:runbook -- FE-RB-004 && corepack pnpm drill:runbook -- FE-RB-005", "ci:gate": "node scripts/run-ci-gate.ts", "generate:ci-workflow": "node scripts/generate-ci-workflow.ts", "check:ci-workflow": "node scripts/generate-ci-workflow.ts --check", "check:ci": "corepack pnpm check:artifact-schemas && node scripts/check-ci-contract.ts && corepack pnpm check:ci-workflow", "verify:documentation": "node scripts/verify-documentation-readiness.ts", "build:app-only": "vite build && node scripts/generate-build-manifest.ts", "generate:contract-set": "node scripts/generate-contract-set.ts", "check:types:web-worker": "tsc --project tsconfig.web-worker.json", "check:types:service-worker": "tsc --project tsconfig.service-worker.json" }, "dependencies": { "@fontsource/ibm-plex-mono": "5.3.0", "@tanstack/react-query": "5.101.4", "lucide-react": "1.25.0", "pretendard": "1.3.9", "react": "19.2.8", "react-dom": "19.2.8", "react-router-dom": "7.18.1", "remark-directive": "4.0.0", "remark-gfm": "4.0.1", "remark-parse": "11.0.0", "unified": "11.0.5", "zod": "4.4.3" }, "devDependencies": { "@axe-core/playwright": "4.12.1", "@babel/core": "8.0.1", "@babel/eslint-parser": "8.0.1", "@babel/plugin-syntax-jsx": "8.0.1", "@babel/plugin-syntax-typescript": "8.0.3", "@eslint/js": "10.0.1", "@playwright/test": "1.62.0", "@storybook/addon-a11y": "10.5.4", "@storybook/react-vite": "10.5.4", "@tailwindcss/vite": "4.3.3", "@testing-library/jest-dom": "7.0.0", "@testing-library/react": "16.3.2", "@testing-library/user-event": "14.6.1", "@types/node": "24.13.3", "@types/react": "19.2.8", "@types/react-dom": "19.2.3", "@vitejs/plugin-react": "6.0.4", "@vitest/coverage-v8": "4.1.10", "dependency-cruiser": "18.1.0", "eslint": "10.8.0", "eslint-plugin-react-hooks": "7.1.1", "globals": "17.7.0", "jsdom": "29.1.1", "msw": "2.15.0", "storybook": "10.5.4", "tailwindcss": "4.3.3", "typescript": "7.0.2", "vite": "8.1.5", "vitest": "4.1.10" } }