UNPKG

refresh-token-util-for-rtk-query

Version:

Reusable RTK Query baseQuery with refresh token

70 lines (55 loc) 2.21 kB
# refresh-token-util-for-rtk-query Reusable RTK Query baseQuery with refresh token support. ## Installation ```sh npm install refresh-token-util-for-rtk-query ``` > This package requires `@reduxjs/toolkit` and `react` as peer dependencies. ## Quick Start ```ts import { createAuthBaseQuery, tokenStorage, } from "refresh-token-util-for-rtk-query"; import { createApi } from "@reduxjs/toolkit/query/react"; const apiBaseUrl = "your_api_url"; export const authApi = createApi({ reducerPath: "authApi", baseQuery: createAuthBaseQuery({ baseUrl: apiBaseUrl, refreshPath: "auth/token", // path for the refresh token request getAccessToken: tokenStorage.getAccessToken, // function to get the access token getRefreshToken: tokenStorage.getRefreshToken, // function to get the refresh token saveTokens: tokenStorage.saveTokens, // function to save tokens clearTokens: tokenStorage.clearTokens, // function to clear tokens in local storage buildRefreshPayload: (refreshToken) => ({ // function to build the payload for the refresh request grant_type: "refresh_token", refresh_token: refreshToken, }), accessTokenResponseKey: "access_token", // key for access token in the response refreshTokenResponseKey: "refresh_token", // key for refresh token in the response }), endpoints: (builder) => ({ // Your endpoints here }), }); ``` ## API ### `createAuthBaseQuery(options)` Creates an RTK Query baseQuery with refresh token support. **Options:** - `baseUrl` — base API URL - `refreshPath` — path for the refresh token request - `getAccessToken` — function to get the access token - `getRefreshToken` — function to get the refresh token - `saveTokens` — function to save tokens - `clearTokens` — function to clear tokens - `buildRefreshPayload` — function to build the payload for the refresh request - `accessTokenResponseKey` — key for access token in the response - `refreshTokenResponseKey` — key for refresh token in the response ### `tokenStorage` Utilities for storing tokens (e.g., in localStorage). - `getAccessToken()` - `getRefreshToken()` - `saveTokens({ accessToken, refreshToken })` - `clearTokens()`