{"version":3,"file":"graphql-request-PAdtDHG-.js","sources":["../../node_modules/graphql-request/build/esm/defaultJsonSerializer.js","../../node_modules/graphql-request/build/esm/resolveRequestDocument.js","../../node_modules/graphql-request/build/esm/types.js","../../node_modules/graphql-request/build/esm/index.js","../../node_modules/graphql-request/build/esm/helpers.js","../../node_modules/graphql-request/build/esm/parseArgs.js"],"sourcesContent":["export const defaultJsonSerializer = JSON;\n//# sourceMappingURL=defaultJsonSerializer.js.map","import { parse, print } from 'graphql';\n/**\n * helpers\n */\nconst extractOperationName = (document) => {\n let operationName = undefined;\n const operationDefinitions = document.definitions.filter((definition) => definition.kind === `OperationDefinition`);\n if (operationDefinitions.length === 1) {\n operationName = operationDefinitions[0]?.name?.value;\n }\n return operationName;\n};\nexport const resolveRequestDocument = (document) => {\n if (typeof document === `string`) {\n let operationName = undefined;\n try {\n const parsedDocument = parse(document);\n operationName = extractOperationName(parsedDocument);\n }\n catch (err) {\n // Failed parsing the document, the operationName will be undefined\n }\n return { query: document, operationName };\n }\n const operationName = extractOperationName(document);\n return { query: print(document), operationName };\n};\n//# sourceMappingURL=resolveRequestDocument.js.map","export class ClientError extends Error {\n constructor(response, request) {\n const message = `${ClientError.extractMessage(response)}: ${JSON.stringify({\n response,\n request,\n })}`;\n super(message);\n Object.setPrototypeOf(this, ClientError.prototype);\n this.response = response;\n this.request = request;\n // this is needed as Safari doesn't support .captureStackTrace\n if (typeof Error.captureStackTrace === `function`) {\n Error.captureStackTrace(this, ClientError);\n }\n }\n static extractMessage(response) {\n return response.errors?.[0]?.message ?? `GraphQL Error (Code: ${response.status})`;\n }\n}\n//# sourceMappingURL=types.js.map","import { defaultJsonSerializer } from './defaultJsonSerializer.js';\nimport { HeadersInstanceToPlainObject, uppercase } from './helpers.js';\nimport { parseBatchRequestArgs, parseRawRequestArgs, parseRawRequestExtendedArgs, parseRequestArgs, parseRequestExtendedArgs, } from './parseArgs.js';\nimport { resolveRequestDocument } from './resolveRequestDocument.js';\nimport { ClientError, } from './types.js';\nimport crossFetch, * as CrossFetch from 'cross-fetch';\n/**\n * Convert the given headers configuration into a plain object.\n */\nconst resolveHeaders = (headers) => {\n let oHeaders = {};\n if (headers) {\n if ((typeof Headers !== `undefined` && headers instanceof Headers) ||\n (CrossFetch && CrossFetch.Headers && headers instanceof CrossFetch.Headers)) {\n oHeaders = HeadersInstanceToPlainObject(headers);\n }\n else if (Array.isArray(headers)) {\n headers.forEach(([name, value]) => {\n if (name && value !== undefined) {\n oHeaders[name] = value;\n }\n });\n }\n else {\n oHeaders = headers;\n }\n }\n return oHeaders;\n};\n/**\n * Clean a GraphQL document to send it via a GET query\n */\nconst cleanQuery = (str) => str.replace(/([\\s,]|#[^\\n\\r]+)+/g, ` `).trim();\n/**\n * Create query string for GraphQL request\n */\nconst buildRequestConfig = (params) => {\n if (!Array.isArray(params.query)) {\n const params_ = params;\n const search = [`query=${encodeURIComponent(cleanQuery(params_.query))}`];\n if (params.variables) {\n search.push(`variables=${encodeURIComponent(params_.jsonSerializer.stringify(params_.variables))}`);\n }\n if (params_.operationName) {\n search.push(`operationName=${encodeURIComponent(params_.operationName)}`);\n }\n return search.join(`&`);\n }\n if (typeof params.variables !== `undefined` && !Array.isArray(params.variables)) {\n throw new Error(`Cannot create query with given variable type, array expected`);\n }\n // Batch support\n const params_ = params;\n const payload = params.query.reduce((acc, currentQuery, index) => {\n acc.push({\n query: cleanQuery(currentQuery),\n variables: params_.variables ? params_.jsonSerializer.stringify(params_.variables[index]) : undefined,\n });\n return acc;\n }, []);\n return `query=${encodeURIComponent(params_.jsonSerializer.stringify(payload))}`;\n};\nconst createHttpMethodFetcher = (method) => async (params) => {\n const { url, query, variables, operationName, fetch, fetchOptions, middleware } = params;\n const headers = { ...params.headers };\n let queryParams = ``;\n let body = undefined;\n if (method === `POST`) {\n body = createRequestBody(query, variables, operationName, fetchOptions.jsonSerializer);\n if (typeof body === `string`) {\n // @ts-expect-error todo\n headers[`Content-Type`] = `application/json`;\n }\n }\n else {\n // @ts-expect-error todo needs ADT for TS to understand the different states\n queryParams = buildRequestConfig({\n query,\n variables,\n operationName,\n jsonSerializer: fetchOptions.jsonSerializer ?? defaultJsonSerializer,\n });\n }\n const init = {\n method,\n headers,\n body,\n ...fetchOptions,\n };\n let urlResolved = url;\n let initResolved = init;\n if (middleware) {\n const result = await Promise.resolve(middleware({ ...init, url, operationName, variables }));\n const { url: urlNew, ...initNew } = result;\n urlResolved = urlNew;\n initResolved = initNew;\n }\n if (queryParams) {\n urlResolved = `${urlResolved}?${queryParams}`;\n }\n return await fetch(urlResolved, initResolved);\n};\n/**\n * GraphQL Client.\n */\nclass GraphQLClient {\n constructor(url, requestConfig = {}) {\n this.url = url;\n this.requestConfig = requestConfig;\n /**\n * Send a GraphQL query to the server.\n */\n this.rawRequest = async (...args) => {\n const [queryOrOptions, variables, requestHeaders] = args;\n const rawRequestOptions = parseRawRequestArgs(queryOrOptions, variables, requestHeaders);\n const { headers, fetch = crossFetch, method = `POST`, requestMiddleware, responseMiddleware, ...fetchOptions } = this.requestConfig;\n const { url } = this;\n if (rawRequestOptions.signal !== undefined) {\n fetchOptions.signal = rawRequestOptions.signal;\n }\n const { operationName } = resolveRequestDocument(rawRequestOptions.query);\n return makeRequest({\n url,\n query: rawRequestOptions.query,\n variables: rawRequestOptions.variables,\n headers: {\n ...resolveHeaders(callOrIdentity(headers)),\n ...resolveHeaders(rawRequestOptions.requestHeaders),\n },\n operationName,\n fetch,\n method,\n fetchOptions,\n middleware: requestMiddleware,\n })\n .then((response) => {\n if (responseMiddleware) {\n responseMiddleware(response);\n }\n return response;\n })\n .catch((error) => {\n if (responseMiddleware) {\n responseMiddleware(error);\n }\n throw error;\n });\n };\n }\n async request(documentOrOptions, ...variablesAndRequestHeaders) {\n const [variables, requestHeaders] = variablesAndRequestHeaders;\n const requestOptions = parseRequestArgs(documentOrOptions, variables, requestHeaders);\n const { headers, fetch = crossFetch, method = `POST`, requestMiddleware, responseMiddleware, ...fetchOptions } = this.requestConfig;\n const { url } = this;\n if (requestOptions.signal !== undefined) {\n fetchOptions.signal = requestOptions.signal;\n }\n const { query, operationName } = resolveRequestDocument(requestOptions.document);\n return makeRequest({\n url,\n query,\n variables: requestOptions.variables,\n headers: {\n ...resolveHeaders(callOrIdentity(headers)),\n ...resolveHeaders(requestOptions.requestHeaders),\n },\n operationName,\n fetch,\n method,\n fetchOptions,\n middleware: requestMiddleware,\n })\n .then((response) => {\n if (responseMiddleware) {\n responseMiddleware(response);\n }\n return response.data;\n })\n .catch((error) => {\n if (responseMiddleware) {\n responseMiddleware(error);\n }\n throw error;\n });\n }\n // prettier-ignore\n batchRequests(documentsOrOptions, requestHeaders) {\n const batchRequestOptions = parseBatchRequestArgs(documentsOrOptions, requestHeaders);\n const { headers, ...fetchOptions } = this.requestConfig;\n if (batchRequestOptions.signal !== undefined) {\n fetchOptions.signal = batchRequestOptions.signal;\n }\n const queries = batchRequestOptions.documents.map(({ document }) => resolveRequestDocument(document).query);\n const variables = batchRequestOptions.documents.map(({ variables }) => variables);\n return makeRequest({\n url: this.url,\n query: queries,\n // @ts-expect-error TODO reconcile batch variables into system.\n variables,\n headers: {\n ...resolveHeaders(callOrIdentity(headers)),\n ...resolveHeaders(batchRequestOptions.requestHeaders),\n },\n operationName: undefined,\n fetch: this.requestConfig.fetch ?? crossFetch,\n method: this.requestConfig.method || `POST`,\n fetchOptions,\n middleware: this.requestConfig.requestMiddleware,\n })\n .then((response) => {\n if (this.requestConfig.responseMiddleware) {\n this.requestConfig.responseMiddleware(response);\n }\n return response.data;\n })\n .catch((error) => {\n if (this.requestConfig.responseMiddleware) {\n this.requestConfig.responseMiddleware(error);\n }\n throw error;\n });\n }\n setHeaders(headers) {\n this.requestConfig.headers = headers;\n return this;\n }\n /**\n * Attach a header to the client. All subsequent requests will have this header.\n */\n setHeader(key, value) {\n const { headers } = this.requestConfig;\n if (headers) {\n // todo what if headers is in nested array form... ?\n //@ts-expect-error todo\n headers[key] = value;\n }\n else {\n this.requestConfig.headers = { [key]: value };\n }\n return this;\n }\n /**\n * Change the client endpoint. All subsequent requests will send to this endpoint.\n */\n setEndpoint(value) {\n this.url = value;\n return this;\n }\n}\nconst makeRequest = async (params) => {\n const { query, variables, fetchOptions } = params;\n const fetcher = createHttpMethodFetcher(uppercase(params.method ?? `post`));\n const isBatchingQuery = Array.isArray(params.query);\n const response = await fetcher(params);\n const result = await getResult(response, fetchOptions.jsonSerializer ?? defaultJsonSerializer);\n const successfullyReceivedData = Array.isArray(result)\n ? !result.some(({ data }) => !data)\n : Boolean(result.data);\n const successfullyPassedErrorPolicy = Array.isArray(result) ||\n !result.errors ||\n (Array.isArray(result.errors) && !result.errors.length) ||\n fetchOptions.errorPolicy === `all` ||\n fetchOptions.errorPolicy === `ignore`;\n if (response.ok && successfullyPassedErrorPolicy && successfullyReceivedData) {\n // @ts-expect-error TODO fixme\n const { errors: _, ...rest } = Array.isArray(result) ? result : result;\n const data = fetchOptions.errorPolicy === `ignore` ? rest : result;\n const dataEnvelope = isBatchingQuery ? { data } : data;\n // @ts-expect-error TODO\n return {\n ...dataEnvelope,\n headers: response.headers,\n status: response.status,\n };\n }\n else {\n const errorResult = typeof result === `string`\n ? {\n error: result,\n }\n : result;\n throw new ClientError(\n // @ts-expect-error TODO\n { ...errorResult, status: response.status, headers: response.headers }, { query, variables });\n }\n};\n/**\n * Send a GraphQL Query to the GraphQL server for execution.\n */\nconst rawRequest = async (...args) => {\n const [urlOrOptions, query, ...variablesAndRequestHeaders] = args;\n const requestOptions = parseRawRequestExtendedArgs(urlOrOptions, query, ...variablesAndRequestHeaders);\n const client = new GraphQLClient(requestOptions.url);\n return client.rawRequest({\n ...requestOptions,\n });\n};\n// prettier-ignore\n// eslint-disable-next-line\nasync function request(urlOrOptions, document, ...variablesAndRequestHeaders) {\n const requestOptions = parseRequestExtendedArgs(urlOrOptions, document, ...variablesAndRequestHeaders);\n const client = new GraphQLClient(requestOptions.url);\n return client.request({\n ...requestOptions,\n });\n}\n/**\n * Send a batch of GraphQL Document to the GraphQL server for execution.\n *\n * @example\n *\n * ```ts\n * // You can pass a raw string\n *\n * await batchRequests('https://foo.bar/graphql', [\n * {\n * query: `\n * {\n * query {\n * users\n * }\n * }`\n * },\n * {\n * query: `\n * {\n * query {\n * users\n * }\n * }`\n * }])\n *\n * // You can also pass a GraphQL DocumentNode as query. Convenient if you\n * // are using graphql-tag package.\n *\n * import gql from 'graphql-tag'\n *\n * await batchRequests('https://foo.bar/graphql', [{ query: gql`...` }])\n * ```\n */\nconst batchRequests = async (...args) => {\n const params = parseBatchRequestsArgsExtended(args);\n const client = new GraphQLClient(params.url);\n return client.batchRequests(params);\n};\nconst parseBatchRequestsArgsExtended = (args) => {\n if (args.length === 1) {\n return args[0];\n }\n else {\n return {\n url: args[0],\n documents: args[1],\n requestHeaders: args[2],\n signal: undefined,\n };\n }\n};\nconst createRequestBody = (query, variables, operationName, jsonSerializer) => {\n const jsonSerializer_ = jsonSerializer ?? defaultJsonSerializer;\n if (!Array.isArray(query)) {\n return jsonSerializer_.stringify({ query, variables, operationName });\n }\n if (typeof variables !== `undefined` && !Array.isArray(variables)) {\n throw new Error(`Cannot create request body with given variable type, array expected`);\n }\n // Batch support\n const payload = query.reduce((acc, currentQuery, index) => {\n acc.push({ query: currentQuery, variables: variables ? variables[index] : undefined });\n return acc;\n }, []);\n return jsonSerializer_.stringify(payload);\n};\nconst getResult = async (response, jsonSerializer) => {\n let contentType;\n response.headers.forEach((value, key) => {\n if (key.toLowerCase() === `content-type`) {\n contentType = value;\n }\n });\n if (contentType &&\n (contentType.toLowerCase().startsWith(`application/json`) ||\n contentType.toLowerCase().startsWith(`application/graphql+json`) ||\n contentType.toLowerCase().startsWith(`application/graphql-response+json`))) {\n return jsonSerializer.parse(await response.text());\n }\n else {\n return response.text();\n }\n};\nconst callOrIdentity = (value) => {\n return typeof value === `function` ? value() : value;\n};\n/**\n * Convenience passthrough template tag to get the benefits of tooling for the gql template tag. This does not actually parse the input into a GraphQL DocumentNode like graphql-tag package does. It just returns the string with any variables given interpolated. Can save you a bit of performance and having to install another package.\n *\n * @example\n * ```\n * import { gql } from 'graphql-request'\n *\n * await request('https://foo.bar/graphql', gql`...`)\n * ```\n *\n * @remarks\n *\n * Several tools in the Node GraphQL ecosystem are hardcoded to specially treat any template tag named \"gql\". For example see this prettier issue: https://github.com/prettier/prettier/issues/4360. Using this template tag has no runtime effect beyond variable interpolation.\n */\nexport const gql = (chunks, ...variables) => {\n return chunks.reduce((acc, chunk, index) => `${acc}${chunk}${index in variables ? String(variables[index]) : ``}`, ``);\n};\nexport { GraphQLWebSocketClient } from './graphql-ws.js';\nexport { resolveRequestDocument } from './resolveRequestDocument.js';\nexport { batchRequests, ClientError, GraphQLClient, rawRequest, request, };\nexport default request;\n//# sourceMappingURL=index.js.map","export const uppercase = (str) => str.toUpperCase();\n/**\n * Convert Headers instance into regular object\n */\nexport const HeadersInstanceToPlainObject = (headers) => {\n const o = {};\n headers.forEach((v, k) => {\n o[k] = v;\n });\n return o;\n};\n//# sourceMappingURL=helpers.js.map","export const parseRequestArgs = (documentOrOptions, variables, requestHeaders) => {\n return documentOrOptions.document\n ? documentOrOptions\n : {\n document: documentOrOptions,\n variables: variables,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n};\nexport const parseRawRequestArgs = (queryOrOptions, variables, requestHeaders) => {\n return queryOrOptions.query\n ? queryOrOptions\n : {\n query: queryOrOptions,\n variables: variables,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n};\nexport const parseBatchRequestArgs = (documentsOrOptions, requestHeaders) => {\n return documentsOrOptions.documents\n ? documentsOrOptions\n : {\n documents: documentsOrOptions,\n requestHeaders: requestHeaders,\n signal: undefined,\n };\n};\nexport const parseRequestExtendedArgs = (urlOrOptions, document, ...variablesAndRequestHeaders) => {\n const [variables, requestHeaders] = variablesAndRequestHeaders;\n return urlOrOptions.document\n ? urlOrOptions\n : {\n url: urlOrOptions,\n document: document,\n variables,\n requestHeaders,\n signal: undefined,\n };\n};\nexport const parseRawRequestExtendedArgs = (urlOrOptions, query, ...variablesAndRequestHeaders) => {\n const [variables, requestHeaders] = variablesAndRequestHeaders;\n return urlOrOptions.query\n ? urlOrOptions\n : {\n url: urlOrOptions,\n query: query,\n variables,\n requestHeaders,\n signal: undefined,\n };\n};\n//# sourceMappingURL=parseArgs.js.map"],"names":["defaultJsonSerializer","JSON","extractOperationName","document","operationName","operationDefinitions","definitions","filter","definition","kind","length","_b","_a","name","value","resolveRequestDocument","parsedDocument","parse","err","query","print","ClientError","Error","constructor","response","request","super","extractMessage","stringify","Object","setPrototypeOf","this","prototype","captureStackTrace","errors","message","status","resolveHeaders","headers","oHeaders","Headers","CrossFetch","CrossFetch.Headers","o","forEach","v","k","HeadersInstanceToPlainObject","Array","isArray","cleanQuery","str","replace","trim","createHttpMethodFetcher","method","async","params","url","variables","fetch","fetchOptions","middleware","body","queryParams","createRequestBody","jsonSerializer","params_","search","encodeURIComponent","push","join","payload","reduce","acc","currentQuery","index","buildRequestConfig","init","urlResolved","initResolved","result","Promise","resolve","urlNew","initNew","GraphQLClient","requestConfig","rawRequest","args","queryOrOptions","requestHeaders","rawRequestOptions","signal","parseRawRequestArgs","crossFetch","requestMiddleware","responseMiddleware","makeRequest","callOrIdentity","then","catch","error","documentOrOptions","variablesAndRequestHeaders","requestOptions","parseRequestArgs","data","batchRequests","documentsOrOptions","batchRequestOptions","documents","parseBatchRequestArgs","queries","map","setHeaders","setHeader","key","setEndpoint","fetcher","toUpperCase","isBatchingQuery","getResult","successfullyReceivedData","some","Boolean","successfullyPassedErrorPolicy","errorPolicy","ok","_","rest","urlOrOptions","parseRequestExtendedArgs","jsonSerializer_","contentType","toLowerCase","startsWith","text"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}