This package provides the GraphQL client, generated types, and query/mutation definitions for interacting with the Intuition API. It serves as the core data fetching layer used by other packages in the monorepo.
Once you've cloned the intuition-ts
monorepo you can run the GraphQL package from the monorepo root. Install all packages from the monorepo root by running pnpm install
.
- Type-safe GraphQL operations using code generation
- React Query hooks for data fetching
- Reusable GraphQL fragments
- Built-in authentication handling
- Automatic error handling
This package uses GraphQL Code Generator to create TypeScript types and React Query hooks from GraphQL operations. To run the code generator:
pnpm run codegen
You can also run this from the monorepo root:
pnpm graphql:codegen
Run unit tests with:
pnpm run test
You can also run this from the monorepo root:
pnpm graphql:test
-
Copy
.npmrc.example
from the root to.npmrc
to configure the local registry. -
Start the local registry:
pnpm nx local-registry
Before publishing, you may need to update the package version. Use one of these commands:
pnpm version:patch # For bug fixes (0.0.x)
pnpm version:minor # For new features (0.x.0)
pnpm version:major # For breaking changes (x.0.0)
pnpm version:beta # For beta releases
- Make changes to the package and build:
cd packages/graphql
# This will run codegen first (prebuild) and then build
pnpm build
- Test the build before publishing (optional):
pnpm publish-dry
- Publish to local registry using one of these commands:
# For local testing only
npm publish --registry http://localhost:4873
# For publishing to npm registry with tags (when ready)
pnpm publish-latest # Publishes with 'latest' tag
pnpm publish-next # Publishes with 'next' tag
- In your test app, update the package version in package.json:
{
"dependencies": {
"@0xintuition/graphql": "^x.x.x" // Use the version from package.json
}
}
- Install the updated package:
pnpm install
- The local registry persists packages in
tmp/local-registry/storage
- Clear storage by stopping and restarting the registry
- First-time publishing requires creating a user (any username/password works)
- The registry runs on port 4873 by default
- The build process automatically runs codegen before building
The package exports a GraphQL client that can be used to make authenticated requests:
import { createServerClient } from '@0xintuition/graphql'
const client = createServerClient({
token: 'your-auth-token', // Optional
})
The generated React Query hooks can be imported directly:
import { useGetStats } from '@0xintuition/graphql'
function StatsComponent() {
const { data, isLoading } = useGetStats()
// ...
}
graphql
├── src
│ ├── client.ts # GraphQL client configuration
│ ├── fragments/ # Reusable GraphQL fragments
│ ├── queries/ # GraphQL queries
│ ├── mutations/ # GraphQL mutations
│ └── generated/ # Generated TypeScript types and hooks
├── tests/ # Unit tests
└── codegen.ts # Code generation configuration
The package can be configured through the following files:
codegen.ts
- GraphQL code generation settingstsconfig.json
- TypeScript configurationvitest.config.ts
- Test configurationschema.graphql
- GraphQL schema (source of truth)
Please read the core CONTRIBUTING.md before proceeding.