5.0.0 • Published 10 months ago

@harnessio/oats-plugin-react-query v5.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

React Query Plugin

@harnessio/oats-plugin-react-query

Plugin for oats cli, for generating react query hooks. This will generate hooks using react-query.

Installation

Using NPM:

npm i -D @harnessio/oats-cli @harnessio/oats-plugin-react-query

Using Yarn:

yarn add -D @harnessio/oats-cli @harnessio/oats-plugin-react-query

Usage

// oats.config.ts
import { defineConfig } from '@harnessio/oats-cli/config';
import reactQueryPlugin from '@harnessio/oats-plugin-react-query';

export default defineConfig({
  plugins: [
    reactQueryPlugin({
      /**
       * Path poiniting to the file where the custom fetcher resides.
       * This path will be used as is, while generating the hooks.
       *
       * This path must be a relative path which can be resolved with respect
       * to a file within the hooks folder.
       */
      customFetcher: '../realtive/path/to/custom/fetcher',
      /**
       * An allow-list, for filtering out operation IDs which are to be generated.
       *
       * When defined, hooks will be generated only for the operation IDs
       * defined in this list.
       *
       * This field is optional.
       */
      allowedOperationIds: [],
      /**
       * Override options per operation.
       * The key must the operation Id from the spec.
       * This field is optional.
       */
      overrides: {
        operationId: {
          /**
           * By default, any operation expect "GET", will generate a mutation
           * hook using `useMutation`. This option can be used to overide this
           * behaviour for a given operation ID.
           *
           * When set to `true`, no matter what the verb, query hook will be
           * generated using `useQuery`.
           */
          useQuery: true,
        },
      },
    }),
  ],
});

Custom Fetcher

This plugins generates a basic fetcher for you, but this might not useful in the real world. You can provide your own fetcher function which handles your use-cases.

You can configure this using the customFetcher config. It should be a string pointing to the file with custom fetcher. The file must export a function named fetcher and an interface FetcherOptions with the following signature:

export interface FetcherOptions<TQueryParams = never, TBody = never>
  extends Omit<RequestInit, 'body'> {
  url: string;
  queryParams?: TQueryParams extends never ? undefined : TQueryParams;
  body?: TBody extends never ? undefined : TBody;
}

export function fetcher<TResponse = unknown, TQueryParams = never, TBody = never>(
  options: FetcherOptions<TQueryParams, TBody>,
): Promise<TResponse> {
  // your code here
}

You can add additional properties to FetcherOptions as per your requirements, as these additional properties will be passed through from the hook to the fetcher.

You can take a look at the default fetcher generated here

4.2.0

10 months ago

5.0.0

10 months ago

4.1.0

10 months ago

4.0.3-beta-1

10 months ago

4.0.3-beta-2

10 months ago

4.0.4

10 months ago

4.0.1-beta-2

10 months ago

4.0.1

10 months ago

4.0.3

10 months ago

4.0.2

10 months ago

3.1.10

10 months ago

4.0.0

10 months ago

3.1.10-beta-5

10 months ago

3.1.10-beta-6

10 months ago

3.1.10-beta-3

10 months ago

3.1.10-beta-4

10 months ago

3.1.10-beta-1

10 months ago

3.1.10-beta-2

10 months ago

3.1.9

10 months ago

3.1.8

10 months ago

3.1.3

10 months ago

3.1.2

10 months ago

3.1.1

10 months ago

3.1.7

10 months ago

3.1.6

10 months ago

3.1.5

10 months ago

3.1.4

10 months ago

3.1.0

2 years ago

3.0.0

2 years ago

2.3.0

3 years ago

2.1.2

3 years ago

2.2.0

3 years ago

2.1.1

3 years ago

2.1.0

3 years ago

2.0.0

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago