{"version":3,"file":"web-api-C5gud6Tz.mjs","names":[],"sources":["../../../node_modules/@shopify/shopify-api/dist/esm/runtime/http/headers.mjs","../../../node_modules/@shopify/shopify-api/dist/esm/adapters/web-api/adapter.mjs","../../../node_modules/@shopify/shopify-api/dist/esm/runtime/http/index.mjs","../../../node_modules/@shopify/shopify-api/dist/esm/adapters/web-api/index.mjs"],"sourcesContent":["/**\n * Canonicalizes a header name by capitalizing each segment and ensuring consistent hyphenation.\n *\n * @param hdr - The header name to canonicalize.\n * @returns The canonicalized header name.\n */\nfunction canonicalizeHeaderName(hdr) {\n    return hdr.replace(/(^|-)(\\w+)/g, (_fullMatch, start, letters) => start +\n        letters.slice(0, 1).toUpperCase() +\n        letters.slice(1).toLowerCase());\n}\n/**\n * Retrieves all values associated with a canonicalized header name from the headers object.\n *\n * @param headers - The headers object or undefined.\n * @param needle_ - The header name to search for.\n * @returns An array of header values associated with the canonicalized header name.\n */\nfunction getHeaders(headers, needle_) {\n    const result = [];\n    if (!headers)\n        return result;\n    const needle = canonicalizeHeaderName(needle_);\n    for (const [key, values] of Object.entries(headers)) {\n        if (canonicalizeHeaderName(key) !== needle)\n            continue;\n        if (Array.isArray(values)) {\n            result.push(...values);\n        }\n        else {\n            result.push(values);\n        }\n    }\n    return result;\n}\n/**\n * Retrieves the first value associated with a canonicalized header name from the headers object.\n *\n * @param headers - The headers object or undefined.\n * @param needle - The header name to search for.\n * @returns The first value associated with the canonicalized header name, or undefined if not found.\n */\nfunction getHeader(headers, needle) {\n    if (!headers)\n        return undefined;\n    return getHeaders(headers, needle)?.[0];\n}\n/**\n * Sets a header to a single value, canonicalizing the header name.\n *\n * @param headers - The headers object.\n * @param key - The header name to set.\n * @param value - The value to assign to the header.\n */\nfunction setHeader(headers, key, value) {\n    canonicalizeHeaders(headers);\n    headers[canonicalizeHeaderName(key)] = [value];\n}\n/**\n * Adds a value to an existing header, creating a new array if necessary, and canonicalizing the header name.\n *\n * @param headers - The headers object.\n * @param key - The header name to add to.\n * @param value - The value to add.\n */\nfunction addHeader(headers, key, value) {\n    canonicalizeHeaders(headers);\n    const canonKey = canonicalizeHeaderName(key);\n    let list = headers[canonKey];\n    if (!list) {\n        list = [];\n    }\n    else if (!Array.isArray(list)) {\n        list = [list];\n    }\n    headers[canonKey] = list;\n    list.push(value);\n}\n/**\n * Canonicalizes a header value, converting numbers to strings.\n *\n * @param value - The value to canonicalize.\n * @returns The canonicalized value as a string.\n */\nfunction canonicalizeValue(value) {\n    if (typeof value === 'number')\n        return value.toString();\n    return value;\n}\n/**\n * Canonicalizes all headers in the headers object by ensuring consistent header names and values.\n *\n * @param hdr - The headers object to canonicalize.\n * @returns The headers object with canonicalized header names and values.\n */\nfunction canonicalizeHeaders(hdr) {\n    for (const [key, values] of Object.entries(hdr)) {\n        const canonKey = canonicalizeHeaderName(key);\n        if (!hdr[canonKey])\n            hdr[canonKey] = [];\n        if (!Array.isArray(hdr[canonKey]))\n            hdr[canonKey] = [canonicalizeValue(hdr[canonKey])];\n        if (key === canonKey)\n            continue;\n        delete hdr[key];\n        hdr[canonKey].push(...[values].flat().map((value) => canonicalizeValue(value)));\n    }\n    return hdr;\n}\n/**\n * Removes a header from the headers object.\n *\n * @param headers - The headers object.\n * @param needle - The header name to remove.\n */\nfunction removeHeader(headers, needle) {\n    canonicalizeHeaders(headers);\n    const canonKey = canonicalizeHeaderName(needle);\n    delete headers[canonKey];\n}\n/**\n * Converts a headers object into an array of tuples, where each tuple represents a header name and value.\n *\n * @param {Object|string[][]} headers - The headers object or undefined/null.\n * @returns {string[][]} An array of tuples where each tuple contains a header name and its corresponding value.\n *\n * @example\n * // Example headers object\n * const headers = {\n *   'Set-Cookie': 'a=b',\n *   'Set-Cookie': 'x=y'\n * };\n *\n * // Converted to an array of tuples\n * const result = convertHeadersToTuples(headers);\n * console.log(result);\n * // Output: [\n * //   [\"Set-Cookie\", \"a=b\"],\n * //   [\"Set-Cookie\", \"x=y\"]\n * // ]\n */\nfunction flatHeaders(headers) {\n    if (!headers)\n        return [];\n    return Object.entries(headers).flatMap(([header, values]) => Array.isArray(values)\n        ? values.map((value) => [header, value])\n        : [[header, values]]);\n}\n\nexport { addHeader, canonicalizeHeaderName, canonicalizeHeaders, flatHeaders, getHeader, getHeaders, removeHeader, setHeader };\n//# sourceMappingURL=headers.mjs.map\n","import { addHeader, flatHeaders } from '../../runtime/http/headers.mjs';\n\nasync function webApiConvertRequest(adapterArgs) {\n    const request = adapterArgs.rawRequest;\n    const headers = {};\n    for (const [key, value] of request.headers.entries()) {\n        addHeader(headers, key, value);\n    }\n    return {\n        headers,\n        method: request.method ?? 'GET',\n        url: new URL(request.url).toString(),\n    };\n}\nasync function webApiConvertHeaders(headers, _adapterArgs) {\n    const remixHeaders = new Headers();\n    flatHeaders(headers ?? {}).forEach(([key, value]) => remixHeaders.append(key, value));\n    return Promise.resolve(remixHeaders);\n}\nasync function webApiConvertResponse(resp, adapterArgs) {\n    return new Response(resp.body, {\n        status: resp.statusCode,\n        statusText: resp.statusText,\n        headers: await webApiConvertHeaders(resp.headers ?? {}),\n    });\n}\nfunction webApiRuntimeString() {\n    return 'Web API';\n}\n\nexport { webApiConvertHeaders, webApiConvertRequest, webApiConvertResponse, webApiRuntimeString };\n//# sourceMappingURL=adapter.mjs.map\n","import '../crypto/types.mjs';\n\nfunction isOK(resp) {\n    // https://fetch.spec.whatwg.org/#ok-status\n    return resp.statusCode >= 200 && resp.statusCode <= 299;\n}\n// We ignore mutable export linting errors because we explicitly want these abstract functions to be overwritten.\n// eslint-disable-next-line import/no-mutable-exports\nlet abstractFetch = () => {\n    throw new Error(\"Missing adapter implementation for 'abstractFetch' - make sure to import the appropriate adapter for your platform\");\n};\nfunction setAbstractFetchFunc(func) {\n    abstractFetch = func;\n}\n// eslint-disable-next-line import/no-mutable-exports\nlet abstractConvertRequest = () => {\n    throw new Error(\"Missing adapter implementation for 'abstractConvertRequest' - make sure to import the appropriate adapter for your platform\");\n};\nfunction setAbstractConvertRequestFunc(func) {\n    abstractConvertRequest = func;\n}\n// By default we just return an empty NormalizedResponse because not all adapters will need to convert an incoming response\n// eslint-disable-next-line import/no-mutable-exports\nlet abstractConvertIncomingResponse = () => Promise.resolve({});\nfunction setAbstractConvertIncomingResponseFunc(func) {\n    abstractConvertIncomingResponse = func;\n}\n// eslint-disable-next-line import/no-mutable-exports\nlet abstractConvertResponse = () => {\n    throw new Error(\"Missing adapter implementation for 'abstractConvertResponse' - make sure to import the appropriate adapter for your platform\");\n};\nfunction setAbstractConvertResponseFunc(func) {\n    abstractConvertResponse = func;\n}\n// eslint-disable-next-line import/no-mutable-exports\nlet abstractConvertHeaders = () => {\n    throw new Error(\"Missing adapter implementation for 'abstractConvertHeaders' - make sure to import the appropriate adapter for your platform\");\n};\nfunction setAbstractConvertHeadersFunc(func) {\n    abstractConvertHeaders = func;\n}\n\nexport { abstractConvertHeaders, abstractConvertIncomingResponse, abstractConvertRequest, abstractConvertResponse, abstractFetch, isOK, setAbstractConvertHeadersFunc, setAbstractConvertIncomingResponseFunc, setAbstractConvertRequestFunc, setAbstractConvertResponseFunc, setAbstractFetchFunc };\n//# sourceMappingURL=index.mjs.map\n","import { webApiConvertRequest, webApiConvertResponse, webApiConvertHeaders, webApiRuntimeString } from './adapter.mjs';\nimport { setAbstractFetchFunc, setAbstractConvertRequestFunc, setAbstractConvertResponseFunc, setAbstractConvertHeadersFunc } from '../../runtime/http/index.mjs';\nimport { setAbstractRuntimeString } from '../../runtime/platform/runtime-string.mjs';\n\nsetAbstractFetchFunc(fetch);\nsetAbstractConvertRequestFunc(webApiConvertRequest);\nsetAbstractConvertResponseFunc(webApiConvertResponse);\nsetAbstractConvertHeadersFunc(webApiConvertHeaders);\nsetAbstractRuntimeString(webApiRuntimeString);\n// Export a marker to prevent tree-shaking\nconst webApiAdapterInitialized = true;\n\nexport { webApiAdapterInitialized };\n//# sourceMappingURL=index.mjs.map\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"2CC0BA,SAAS,GAAsB,CAC3B,MAAO,UEnBX,EAAyB,EAAoB"}