You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude/CLAUDE.md
+13-3Lines changed: 13 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,11 +7,18 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
7
7
```bash
8
8
npm run build # Clean dist/ and compile TypeScript
9
9
npm test# Run Jest tests with coverage
10
+
npm run lint # Biome: format + lint check (no writes)
11
+
npm run lint:fix # Biome: apply safe fixes
12
+
npm run typecheck # tsc --noEmit over src/ AND test/
10
13
npm run generate # Regenerate API client from the OpenAPI specs in specs/
11
14
npx jest test/zoomClient.test.ts # Run a single test file
12
15
npx jest --testNamePattern "should normalize"# Run tests matching a pattern
13
16
```
14
17
18
+
`npm test` does not typecheck — `@swc/jest` strips types without checking them, and
19
+
`npm run build` only covers `src/`. `npm run typecheck` is the only thing that
20
+
typechecks `test/`.
21
+
15
22
## Architecture
16
23
17
24
Zero-dependency, fully typed Zoom API client for Node.js. Published as `@nektarai/zoom-api-client`.
@@ -27,7 +34,7 @@ Zero-dependency, fully typed Zoom API client for Node.js. Published as `@nektara
27
34
-**ZoomApi** (`src/zoomApi.generated.ts`): 250+ endpoint methods generated from the Zoom OpenAPI specs in `specs/`. Fluent resource pattern: `zoomApi.user(userId).listMeetings()`, `zoomApi.meeting(id).getMeeting()`.
28
35
-**Types** (`src/types.generated.ts`): Request param and response types for all generated endpoints.
29
36
30
-
To regenerate: `npm run generate` — runs `scripts/generate-api.ts` which parses each spec, generates types and API client, then runs Prettier + ESLint on output.
37
+
To regenerate: `npm run generate` — runs `scripts/generate-api.ts` which parses each spec, generates types and API client, then runs `biome check --write` on the output.
31
38
32
39
Zoom publishes one spec per product area. `specs/*.json` are committed verbatim so they can be refreshed from Zoom without a manual merge; register new ones in `SPEC_PATHS` in `scripts/generate-api.ts`. **Order matters** — duplicate method names resolve first-wins, so an earlier spec keeps the cleaner name and later ones fall back to their `operationId`. Keep `Meetings.json` first to hold existing method names stable.
33
40
@@ -45,8 +52,11 @@ Zoom publishes one spec per product area. `specs/*.json` are committed verbatim
45
52
46
53
## Code Standards
47
54
48
-
-**Style**: Single quotes, trailing commas, 4-space indent, semicolons (Prettier-enforced)
49
-
-**ESLint**: `no-console` is an error. `@typescript-eslint/no-explicit-any` is off. Floating promises are errors.
55
+
-**Tooling**: [Biome](https://biomejs.dev) owns both formatting and linting (`biome.json`). It replaced ESLint 8 + Prettier — there is no `.eslintrc.js` or `.prettierrc.js`.
56
+
-**Style**: Single quotes, trailing commas, 4-space indent, semicolons. Indent width comes from `.editorconfig` via `formatter.useEditorconfig` (so JSON stays at 2).
57
+
-**Lint rules**: Biome `recommended`, plus `noConsole` as an error and `noExplicitAny` / `noTsIgnore` off. `noFloatingPromises` and `noMisusedPromises` are enabled **from nursery** — they are the reason this repo uses Biome's types domain at all, and they may shift behavior across Biome minor versions. Verify they still fire after a Biome upgrade.
58
+
-**Overrides** in `biome.json`: `scripts/**` allows `console` and `${}`-in-string (it is a code generator); `src/*.generated.ts` is formatted but not linted; `tsconfig*.json` is parsed as JSONC.
59
+
-**`files.maxSize` is raised to 4 MiB.**`src/types.generated.ts` is ~1 MiB and silently exceeds Biome's 1 MiB default, which would skip the largest file in the repo without failing.
50
60
-**TypeScript**: Strict mode, ESNext target, CommonJS output. `noImplicitAny` is off despite strict mode.
51
61
-**Tests**: Jest with SWC transform. Tests use `nock` for HTTP mocking. Coverage collected from `src/`.
0 commit comments