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
The package uses a local schema.graphql
file as the source of truth for generating TypeScript types. This ensures consistent behavior across all environments and makes the package more portable for external use.
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.