muerwre.github.io/api/_content/query/O9PBAkuWXG.json
muerwre cf4fa8656b commit 387fa7ce1b
Author: Fedor Katurov <gotham48@gmail.com>
Date:   Fri Nov 11 17:27:44 2022 +0600

    fixed colors on writing.svg
2022-11-11 11:29:35 +00:00

1 line
No EOL
96 KiB
JSON

{"_path":"/graphql/refresh-token-in-apollo-client","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Token In Apollo Client","description":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise<string> | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise<Response> => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record<string, string>)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise<unknown>(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise<string>(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise<string> => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise<string> | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise<Response> => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record<string, string>)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise<unknown>(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise<string>(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise<string> => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"createApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0cbc0a"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"authorization"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a6a2df"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" >,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"ApolloClientBase"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" link: "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"ApolloLink"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"(["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0cbc0a"},"children":[{"type":"text","value":"setContext"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"HttpLink"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" uri: "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" fetch: "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ]),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise<string> | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise<Response> => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record<string, string>)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise<unknown>(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise<string>(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise<string> => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a6a2df"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-93093a"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"/** Checks if GraphQl errors has unauthenticated error */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0cbc0a"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd3717"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"<{ "}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd3717"},"children":[{"type":"text","value":"ErrorCode"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" }>)"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"isArray"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"some"}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8db415"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// Distinguish unauthorized error here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"/** Detects if customFetch is sending refresh request */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0cbc0a"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd3717"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eda4ef"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"operationName"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-795cbe"},"children":[{"type":"text","value":"'RefreshToken'"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-93093a"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eda4ef"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" { accessToken: "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-93093a"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ) "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd3717"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd3717"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-dd3717"},"children":[{"type":"text","value":"Response"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// already refreshing token, wait for it and then use refreshed token"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// or use empty authorization if refreshing failed"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a6a2df"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":">)?."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eda4ef"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-795cbe"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"async"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eda4ef"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eda4ef"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// check for unauthorized errors, if not present, just return result"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ok: "}]},{"type":"element","tag":"span","props":{"class":"ct-93093a"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"unknown"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// If unauthorized, refresh token and try again"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-0cbc0a"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd3717"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-93093a"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-795cbe"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-93093a"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// can't refresh token. logging out"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1c4ac8"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-795cbe"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// success or any non-auth error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-0cbc0a"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a4178b"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-6608d1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35c929"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-686f06"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5c4547"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// wait for other request's refreshing query to finish, when retry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c977a7"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-368407"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-77b33d"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fecca2"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b1c18"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-795cbe"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-051ea5"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-795cbe{color:#A5D6FF}.ct-eda4ef{color:#79C0FF}.ct-8db415{color:#79C0FF}.ct-dd3717{color:#FFA657}.ct-93093a{color:#79C0FF}.ct-fecca2{color:#C9D1D9}.ct-368407{color:#8B949E}.ct-a6a2df{color:#FFA657}.ct-686f06{color:#FF7B72}.ct-0cbc0a{color:#D2A8FF}.ct-1c4ac8{color:#79C0FF}.ct-35c929{color:#79C0FF}.ct-6608d1{color:#FF7B72}.ct-a4178b{color:#FFA657}.ct-5c4547{color:#C9D1D9}.ct-77b33d{color:#D2A8FF}.ct-c977a7{color:#FF7B72}.ct-051ea5{color:#C9D1D9}.ct-1b1c18{color:#FF7B72}.light .ct-1b1c18{color:#859900}.light .ct-051ea5{color:#657B83}.light .ct-c977a7{color:#073642}.light .ct-77b33d{color:#268BD2}.light .ct-5c4547{color:#657B83}.light .ct-a4178b{color:#657B83}.light .ct-6608d1{color:#859900}.light .ct-35c929{color:#859900}.light .ct-1c4ac8{color:#859900}.light .ct-0cbc0a{color:#268BD2}.light .ct-686f06{color:#073642}.light .ct-a6a2df{color:#268BD2}.light .ct-368407{color:#93A1A1}.light .ct-fecca2{color:#268BD2}.light .ct-93093a{color:#B58900}.light .ct-dd3717{color:#268BD2}.light .ct-8db415{color:#D33682}.light .ct-eda4ef{color:#268BD2}.light .ct-795cbe{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Refresh token in Apollo client.md","_source":"content","_file":"GraphQL/Refresh token in Apollo client.md","_extension":"md"}