58 lines
2.9 KiB
Markdown
58 lines
2.9 KiB
Markdown
# Repository Guidelines
|
|
|
|
## Project Structure & Module Organization
|
|
|
|
This repository is a Vue 3 + TypeScript waveform component library with a Vite demo.
|
|
Production exports are defined in `src/index.ts`; demo entry points are `src/main.ts` and
|
|
`src/App.vue`. The main chart is `src/components/WaveformChart.vue`, with focused modules under
|
|
`src/components/{core,data,rendering,interaction,annotation}`. Shared types live in `src/types`,
|
|
data normalization and chart logic in `src/core` and `src/utils`, styles in `src/styles.css`, and
|
|
sample data in `src/data`. Tests are colocated with implementation files (`*.test.ts`), with shared
|
|
setup in `src/test/setup.ts`. `dist/` and `dist-demo/` are generated; do not edit them.
|
|
|
|
## Build, Test, and Development Commands
|
|
|
|
Use pnpm (the lockfile is `pnpm-lock.yaml`) and Node.js 22 as CI does.
|
|
|
|
```bash
|
|
pnpm install # Install locked dependencies
|
|
pnpm dev # Start the Vite demo server
|
|
pnpm typecheck # Run vue-tsc checks
|
|
pnpm lint # Run ESLint with zero warnings allowed
|
|
pnpm test # Run Vitest once
|
|
pnpm test:coverage # Run tests and enforce coverage thresholds
|
|
pnpm build # Type-check and build library plus demo bundles
|
|
pnpm preview # Preview the production demo build
|
|
```
|
|
|
|
Run `pnpm format` to apply the repository Prettier configuration.
|
|
|
|
## Coding Style & Naming Conventions
|
|
|
|
Use TypeScript and Vue 3 Composition API with two-space indentation, single quotes, no semicolons,
|
|
and a 100-column print width. Prettier and ESLint are authoritative.
|
|
Use PascalCase for Vue components, component filenames, and types; use camelCase for functions,
|
|
variables, and composables (for example, `useWaveformData`). Keep public exports deliberate and
|
|
preserve stable series IDs for multi-channel data.
|
|
|
|
## Testing Guidelines
|
|
|
|
Vitest with `@vue/test-utils` and jsdom is used. Name tests `*.test.ts` beside the
|
|
code they cover. Exercise normalization, rendering/layout helpers, formatting, and component
|
|
interactions, including empty, non-finite, and multi-series inputs. Coverage thresholds are 80%
|
|
for lines/statements/functions and 75% for branches; run `pnpm test:coverage` before submitting.
|
|
|
|
## Commit & Pull Request Guidelines
|
|
|
|
The current history contains only `first commit`, so no established convention exists yet. Use short,
|
|
imperative messages, preferably scoped (for example, `feat(chart): ...`, `fix(annotation): ...`, or
|
|
`test: ...`). Pull requests should explain API or user-visible changes, list verification commands,
|
|
link an issue or plan, and include screenshots or a short recording for visual changes. Keep generated
|
|
files and unrelated refactors out of the change.
|
|
|
|
## CI and Configuration
|
|
|
|
GitHub Actions runs install, typecheck, lint, coverage, build, and `pnpm pack --dry-run` on pushes and
|
|
pull requests. Do not commit secrets or local environment files; review the staged file list before
|
|
opening a pull request.
|