UNPKG

@rtk-query/graphql-request-base-query

Version:
1 lines 4.17 kB
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import { isPlainObject } from '@reduxjs/toolkit'\r\nimport type { BaseQueryFn } from '@reduxjs/toolkit/query'\r\nimport type { DocumentNode } from 'graphql'\r\nimport { GraphQLClient, ClientError, RequestOptions } from 'graphql-request'\r\nimport type {\r\n ErrorResponse,\r\n GraphqlRequestBaseQueryArgs,\r\n PrepareHeaders,\r\n RequestHeaders,\r\n} from './GraphqlBaseQueryTypes'\r\n\r\nexport const graphqlRequestBaseQuery = <E = ErrorResponse>(\r\n options: GraphqlRequestBaseQueryArgs<E>\r\n): BaseQueryFn<\r\n { document: string | DocumentNode; variables?: any },\r\n unknown,\r\n E,\r\n Partial<Pick<ClientError, 'request' | 'response'>>\r\n> => {\r\n const client =\r\n 'client' in options ? options.client : new GraphQLClient(options.url)\r\n const requestHeaders: RequestHeaders =\r\n 'requestHeaders' in options ? options.requestHeaders : {}\r\n\r\n return async (\r\n { document, variables },\r\n { getState, endpoint, forced, type, signal, extra }\r\n ) => {\r\n try {\r\n const prepareHeaders: PrepareHeaders =\r\n options.prepareHeaders ?? ((x) => x)\r\n const headers = new Headers(stripUndefined(requestHeaders))\r\n\r\n const preparedHeaders = await prepareHeaders(headers, {\r\n getState,\r\n endpoint,\r\n forced,\r\n type,\r\n extra,\r\n })\r\n\r\n return {\r\n data: await client.request({\r\n document,\r\n variables,\r\n signal: signal as unknown as RequestOptions['signal'],\r\n requestHeaders: preparedHeaders,\r\n }),\r\n meta: {},\r\n }\r\n } catch (error) {\r\n if (error instanceof ClientError) {\r\n const { name, message, stack, request, response } = error\r\n\r\n const customErrors =\r\n options.customErrors ?? (() => ({ name, message, stack }))\r\n\r\n const customizedErrors = customErrors(error) as E\r\n\r\n return { error: customizedErrors, meta: { request, response } }\r\n }\r\n throw error\r\n }\r\n }\r\n}\r\n\r\nfunction stripUndefined(obj: any) {\r\n if (!isPlainObject(obj)) {\r\n return obj\r\n }\r\n const copy: Record<string, any> = { ...obj }\r\n for (const [k, v] of Object.entries(copy)) {\r\n if (typeof v === 'undefined') delete copy[k]\r\n }\r\n return copy\r\n}\r\n"],"names":["options","client","GraphQLClient","url","requestHeaders","document","variables","getState","_ref2","endpoint","forced","type","signal","extra","Promise","resolve","prepareHeaders","_options$prepareHeade","x","obj","isPlainObject","copy","Object","entries","_i","_Object$entries","length","k","_Object$entries$_i","stripUndefined","headers","then","preparedHeaders","request","_client$request","data","meta","_catch","error","ClientError","_options$customErrors","name","message","stack","response","customErrors","e","reject"],"mappings":"mUAWuC,SACrCA,GAOA,IAAYC,EACV,WAAAD,EAAsBA,EAAQC,OAAS,IAAIC,EAAAA,cAAcF,EAAQG,KAC/CC,EAClB,mBAAAJ,EAA8BA,EAAQI,eAAiB,GAEzD,OACIC,SAAAA,EAAAA,GAAAA,IAAAA,IAAAA,SAAUC,EAAAA,EAAAA,UADdC,EAAAC,EAEID,SAAUE,IAAAA,SAAUC,EAAAA,EAAAA,OAAQC,EAFhCH,EAEgCG,KAAMC,IAAAA,OAAQC,EAAAA,EAAAA,UAExC,OAAAC,QAAAC,iCACkBC,EACS,OADTC,EAClBjB,EAAQgB,gBAAmBC,EAAA,SAACC,GAAMA,OAAAA,KACpB,YAmCtB,SAAwBC,GACtB,IAAKC,EAAaA,cAACD,GACjB,OAAOA,EAGT,IADA,IAAME,OAAiCF,GAClBG,EAAAA,EAAAA,EAAAA,OAAOC,QAAQF,GAApCG,EAAAC,EAAAC,OAAAF,IAA2C,CAAtC,IAAOG,EAAAA,EAAAA,QACO,IADdC,EAAA,WACsCP,QAE3C,OACDA,EA5CiCQ,CAAezB,IAHzCU,QAAAC,QAK4BC,EAAec,EAAS,CACpDvB,SAAAA,EACAE,SAAAA,EACAC,OAAAA,EACAC,KAAAA,EACAE,MAAAA,KAVAkB,KAAA,SAKIC,GALJ,OAAAlB,QAAAC,QAcYd,EAAOgC,QAAQ,CACzB5B,SAAAA,EACAC,UAAAA,EACAM,OAAQA,EACRR,eAAgB4B,KAlBlBD,KAAA,SAAAG,GAaF,MAAO,CACLC,OAMAC,KAAM,8BApBN,IAAAnB,EACkBD,wCADlBqB,CAAA,EADF,SAuBOC,GACP,GAAIA,eAAJC,YAAkC,CAAA,IAAAC,EACxBC,EAA4CH,EAA5CG,KAAMC,EAAsCJ,EAAtCI,QAASC,EAA6BL,EAA7BK,MAAOV,EAAsBK,EAAtBL,QAASW,EAAaN,EAAbM,SAOvC,MAAO,CAAEN,OALS,OAChBtC,EAAAA,EAAQ6C,cADQL,EACS,iBAAO,CAAEC,KAAAA,EAAMC,QAAAA,EAASC,MAAAA,KAEbL,GAEJF,KAAM,CAAEH,QAAAA,EAASW,SAAAA,IAErD,WArCJ,MAwCDE,GAAA,OAAAhC,QAAAiC,OAAAD"}