2ae65a5a9f
Build Kvitt images / build (push) Failing after 1h14m5s
web/ is the browser client's scaffold: Vite 8, React 19, TypeScript 5.9 strict, React Router 7 (basename /app, every fixed route with a lazy placeholder page), TanStack Query 5 (refetch on focus and every 60 s), openapi-typescript types generated from contracts/openapi.yaml with openapi-fetch. Reads go through GET /sync (no REST reads exist for the ledger, SPEC §7): useLedger() pulls from cursor 0 and then incrementally, restarting on a new epoch or cursor_ahead. Login pairs the browser as "Web · <browser>" with an invite code (E-3); every call sends the SPEC §14.3.1 headers, a 401 signs out. kvitt-domain's split, balances, allocation and settlement rules are ported to web/src/lib and pass every case of contracts/test-vectors. Design tokens from design-spec §2 in tokens.css (light-dark()), Material Symbols Rounded (Apache-2.0) as generated inline SVG, sv/en catalogs generated from docs/ux/strings.csv plus web-strings.csv. Gate: cd web && npm run check. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
29 lines
1018 B
JavaScript
29 lines
1018 B
JavaScript
import js from '@eslint/js';
|
|
import prettier from 'eslint-config-prettier';
|
|
import reactHooks from 'eslint-plugin-react-hooks';
|
|
import globals from 'globals';
|
|
import tseslint from 'typescript-eslint';
|
|
|
|
export default tseslint.config(
|
|
{ ignores: ['dist', 'node_modules', 'src/api/schema.d.ts', 'src/design/icons.generated.ts'] },
|
|
{
|
|
files: ['src/**/*.{ts,tsx}', 'vite.config.ts'],
|
|
extends: [js.configs.recommended, ...tseslint.configs.strictTypeChecked, reactHooks.configs.flat.recommended],
|
|
languageOptions: {
|
|
globals: globals.browser,
|
|
parserOptions: { projectService: true, tsconfigRootDir: import.meta.dirname },
|
|
},
|
|
rules: {
|
|
'@typescript-eslint/no-non-null-assertion': 'error',
|
|
'@typescript-eslint/restrict-template-expressions': ['error', { allowNumber: true }],
|
|
'no-console': 'error',
|
|
},
|
|
},
|
|
{
|
|
files: ['scripts/**/*.mjs', 'eslint.config.js'],
|
|
extends: [js.configs.recommended],
|
|
languageOptions: { globals: globals.node },
|
|
},
|
|
prettier,
|
|
);
|