Monorepo for @data-client high performance npm packages.
packages/endpoint: Base endpoints and declarative schemaspackages/rest: REST modeling (resource(),RestEndpoint)packages/core: Framework-agnostic normalized store, Controller, Managerspackages/react: React hooks (useSuspense,useLive,useQuery)packages/vue: Vue 3 composablespackages/normalizr: Schema/Entity/normalization
yarn build- Build all packagesyarn test- Run tests (Jest projects: ReactDOM, Node, ReactNative)yarn lint/yarn format- Linting and formatting- Website dev:
cd website && yarn start:vscode
Test naming: *.node.test.ts[x] (Node), *.native.test.ts[x] (RN), *.test.ts[x] (regular)
Targeted tests: yarn test --selectProjects ReactDOM --testPathPatterns packages/react (project names: ReactDOM, Node, ReactNative)
- CircleCI (
.circleci/config.yml) — PR validation: lint, typecheck, unit tests (React 17/18/native/latest), Node matrix, ESM type checks (TS 4.0–5.3+), browser build. - GitHub Actions (
.github/workflows/) — release (changesets), bundle size PR comments, benchmark regression detection.
Changing root package.json workspaces requires updating .circleci/config.yml (setup job) and .github/workflows/ install steps.
Any user-facing change in packages/* requires a changeset. Core packages are version-linked (bumping one bumps all). See skill "changeset" for full workflow.
- API definitions:
src/resources/within examples/apps - Examples:
examples/todo-app,examples/github-app,examples/nextjs - Documentation:
docs/core/api,docs/rest,docs/core/guides - Tests:
packages/*/src/**/__tests__ - Benchmarks:
examples/benchmark(Node: core/normalizr/endpoint throughput),examples/benchmark-react(browser: React rendering and data-library comparison). See.cursor/rules/benchmarking.mdcand each example’s README.
- Prefer smaller React components that do one thing
- Use fixtures/interceptors for testing instead of mocking
Update docs in the same commit/PR when changing public APIs (anything exported from package entry points). No docs needed for internal/private APIs. See skill "packages-documentation" for guidelines.
- Babel: Resolves relative
.jsimports to.tsin tests - Jest: Maps
@data-client/*imports to localpackages/*/srcduring tests - TypeScript: Uses TS 6.0 project references; ambient
.d.tsfiles copied during build - Native compilation: When
COMPILE_TARGET=native, prefers.native.*files