@0xintuition/graphql v0.8.0
Intuition GraphQL Package
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.
Getting Started
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.
Features
- Type-safe GraphQL operations using code generation
- React Query hooks for data fetching
- Reusable GraphQL fragments
- Built-in authentication handling
- Automatic error handling
Development
GraphQL Code Generation
This package uses GraphQL Code Generator to create TypeScript types and React Query hooks from GraphQL operations. To run the code generator:
pnpm run codegenYou can also run this from the monorepo root:
pnpm graphql:codegenTesting
Run unit tests with:
pnpm run testYou can also run this from the monorepo root:
pnpm graphql:testTesting with Local Registry
Setup
Copy
.npmrc.examplefrom the root to.npmrcto configure the local registry.Start the local registry:
pnpm nx local-registryVersion Management
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 releasesTesting in Monorepo Apps (Recommended)
- 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 installNotes
- 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
Usage
Client Setup
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
})Using Generated Hooks
The generated React Query hooks can be imported directly:
import { useGetStats } from '@0xintuition/graphql'
function StatsComponent() {
const { data, isLoading } = useGetStats()
// ...
}Project Structure
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 configurationConfiguration
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)
Contributing
Please read the core CONTRIBUTING.md before proceeding.