🦕 Dinocollab Http Service
A TypeScript library for sending HTTP and GraphQL requests with automatic site detection, customizable headers, and flexible configuration. Suitable for DinoCollab projects.
Installation
npm install dinocollab-http-service@latest
Initialization Per Dependency
npm install graphql-ts-client-api@3.1.17
npm install --save-dev graphql-ts-client-codegen@3.1.17
Basic Usage
1. Sending a GraphQL Request
// Create an instance for the GraphQL endpoint
import { createGraphqlRequest } from 'dinocollab-http-service'
import { execute } from '../__generated'
export const Graphql = createGraphqlRequest({ execute, baseUrl: '/grql/api/v1/graphql' })
// Use the instance to send a query
import { media$$, mediaPage$, mediaStoreGraphDbContext$, query$ } from '../__generated/fetchers'
const MediaSelector = media$$
export type TMedia = ModelType<typeof MediaSelector>
export type TMediasFilterParams = Parameters<typeof mediaStoreGraphDbContext$.medias>[0]
export const Medias = (params: TMediasFilterParams) => {
const MediaPage = mediaPage$.items(MediaSelector).hasNextPage.hasPreviousPage.totalItems
return query$.mediaStore(mediaStoreGraphDbContext$.medias(params, MediaPage))
}
// Send a request to get the media list
export const fetchMedias = async (params: TMediasFilterParams) => {
const res = await Graphql.query(Medias(params))
return res
}
2. Customization
// Set custom headers
await graphql.addCustomHeader({ headers: { 'x-custom-header': 'value' } })
// Set the current site
await graphql.setSite('site2')
// Get the current site
const site = await graphql.getSite()
CLI Tool
This package provides a CLI tool to generate TypeScript code from a remote GraphQL schema.
Usage
npx dinocollab-http-service --schema-url=<GRAPHQL_SCHEMA_URL> [--secure] [--out-dir=<OUTPUT_DIR>]
--schema-url
: (required) URL to the GraphQL schema endpoint.
--secure
: (optional) Enable SSL certificate validation. By default, SSL validation is disabled.
--out-dir
: (optional) Output directory for generated code. Defaults to __generated
at the project root.
Example
npx dinocollab-http-service --schema-url=https://your-graphql-endpoint/graphql --out-dir=src/__generated
Main API
GraphqlRequest
Query(fetcher, options?)
: Send a GraphQL query/mutation.
QueryPushNotify(fetcher, options?)
: Send a query and push errors to the notification context.
addCustomHeader(config?)
: Add headers for the next request.
setSite(site: string)
: Set the current site.
getSite()
: Get the current site.
HttpRequest
Request(fetcher, options?)
: Send an HTTP request.
addCustomHeader(config?)
: Add headers for the next request.
setSite(site: string)
: Set the current site.
getSite()
: Get the current site.
Main Types
IGraphqlRequestOptions
, IHttpRequestOptions
: Options for instance initialization.
IGraphqlQueryOptions
, IHttpRequestConfig
: Options for sending requests.
IGraphqlResult<T>
: Standard result for list queries.
Development
- Clone the repo
- Install dependencies:
npm install
- Build:
npm run build
- Test:
npm test
License
MIT