{"version":3,"file":"appsyncUrl.mjs","sources":["../../../../src/Providers/AWSWebSocketProvider/appsyncUrl.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AmplifyUrl, AmplifyUrlSearchParams, } from '@aws-amplify/core/internals/utils';\nconst protocol = 'wss://';\nconst standardDomainPattern = /^https:\\/\\/\\w{26}\\.appsync-api\\.\\w{2}(?:(?:-\\w{2,})+)-\\d\\.amazonaws.com(?:\\.cn)?\\/graphql$/i;\nconst eventDomainPattern = /^https:\\/\\/\\w{26}\\.\\w+-api\\.\\w{2}(?:(?:-\\w{2,})+)-\\d\\.amazonaws.com(?:\\.cn)?\\/event$/i;\nconst customDomainPath = '/realtime';\nexport const isCustomDomain = (url) => {\n    return url.match(standardDomainPattern) === null;\n};\nconst isEventDomain = (url) => url.match(eventDomainPattern) !== null;\nexport const getRealtimeEndpointUrl = (appSyncGraphqlEndpoint) => {\n    let realtimeEndpoint = appSyncGraphqlEndpoint ?? '';\n    if (isEventDomain(realtimeEndpoint)) {\n        realtimeEndpoint = realtimeEndpoint\n            .concat(customDomainPath)\n            .replace('ddpg-api', 'grt-gamma')\n            .replace('appsync-api', 'appsync-realtime-api');\n    }\n    else if (isCustomDomain(realtimeEndpoint)) {\n        realtimeEndpoint = realtimeEndpoint.concat(customDomainPath);\n    }\n    else {\n        realtimeEndpoint = realtimeEndpoint\n            .replace('appsync-api', 'appsync-realtime-api')\n            .replace('gogi-beta', 'grt-beta')\n            .replace('ddpg-api', 'grt-gamma');\n    }\n    realtimeEndpoint = realtimeEndpoint\n        .replace('https://', protocol)\n        .replace('http://', protocol);\n    return new AmplifyUrl(realtimeEndpoint);\n};\n/**\n * Strips out `Authorization` header if present\n */\nconst extractNonAuthHeaders = (headers) => {\n    if (!headers) {\n        return {};\n    }\n    if ('Authorization' in headers) {\n        const { Authorization: _, ...nonAuthHeaders } = headers;\n        return nonAuthHeaders;\n    }\n    return headers;\n};\n/**\n *\n * @param headers - http headers\n * @returns uri-encoded query parameters derived from custom headers\n */\nexport const queryParamsFromCustomHeaders = (headers) => {\n    const nonAuthHeaders = extractNonAuthHeaders(headers);\n    const params = new AmplifyUrlSearchParams();\n    Object.entries(nonAuthHeaders).forEach(([k, v]) => {\n        params.append(k, v);\n    });\n    return params;\n};\n/**\n * Normalizes AppSync realtime endpoint URL\n *\n * @param appSyncGraphqlEndpoint - AppSync endpointUri from config\n * @param urlParams - URLSearchParams\n * @returns fully resolved string realtime endpoint URL\n */\nexport const realtimeUrlWithQueryString = (appSyncGraphqlEndpoint, urlParams) => {\n    const realtimeEndpointUrl = getRealtimeEndpointUrl(appSyncGraphqlEndpoint);\n    // preserves any query params a customer might manually set in the configuration\n    const existingParams = new AmplifyUrlSearchParams(realtimeEndpointUrl.search);\n    for (const [k, v] of urlParams.entries()) {\n        existingParams.append(k, v);\n    }\n    realtimeEndpointUrl.search = existingParams.toString();\n    return realtimeEndpointUrl.toString();\n};\n// TODO: move to separate file?\nexport const additionalHeadersFromOptions = async (options) => {\n    const { appSyncGraphqlEndpoint, query, libraryConfigHeaders = () => ({}), additionalHeaders = {}, authToken, } = options;\n    let additionalCustomHeaders = {};\n    const _libraryConfigHeaders = await libraryConfigHeaders();\n    if (typeof additionalHeaders === 'function') {\n        const requestOptions = {\n            url: appSyncGraphqlEndpoint || '',\n            queryString: query || '',\n        };\n        additionalCustomHeaders = await additionalHeaders(requestOptions);\n    }\n    else {\n        additionalCustomHeaders = additionalHeaders;\n    }\n    // if an authorization header is set, have the explicit, operation-level authToken take precedence\n    if (authToken) {\n        additionalCustomHeaders = {\n            ...additionalCustomHeaders,\n            Authorization: authToken,\n        };\n    }\n    return {\n        additionalCustomHeaders,\n        libraryConfigHeaders: _libraryConfigHeaders,\n    };\n};\n"],"names":[],"mappings":";;AAAA;AACA;AAEA,MAAM,QAAQ,GAAG,QAAQ;AACzB,MAAM,qBAAqB,GAAG,6FAA6F;AAC3H,MAAM,kBAAkB,GAAG,uFAAuF;AAClH,MAAM,gBAAgB,GAAG,WAAW;AACxB,MAAC,cAAc,GAAG,CAAC,GAAG,KAAK;AACvC,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,IAAI;AACpD;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,IAAI;AACzD,MAAC,sBAAsB,GAAG,CAAC,sBAAsB,KAAK;AAClE,IAAI,IAAI,gBAAgB,GAAG,sBAAsB,IAAI,EAAE;AACvD,IAAI,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE;AACzC,QAAQ,gBAAgB,GAAG;AAC3B,aAAa,MAAM,CAAC,gBAAgB;AACpC,aAAa,OAAO,CAAC,UAAU,EAAE,WAAW;AAC5C,aAAa,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC;AAC3D,IAAI;AACJ,SAAS,IAAI,cAAc,CAAC,gBAAgB,CAAC,EAAE;AAC/C,QAAQ,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACpE,IAAI;AACJ,SAAS;AACT,QAAQ,gBAAgB,GAAG;AAC3B,aAAa,OAAO,CAAC,aAAa,EAAE,sBAAsB;AAC1D,aAAa,OAAO,CAAC,WAAW,EAAE,UAAU;AAC5C,aAAa,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;AAC7C,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,SAAS,OAAO,CAAC,UAAU,EAAE,QAAQ;AACrC,SAAS,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;AACrC,IAAI,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC;AAC3C;AACA;AACA;AACA;AACA,MAAM,qBAAqB,GAAG,CAAC,OAAO,KAAK;AAC3C,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,IAAI,eAAe,IAAI,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO;AAC/D,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA;AACY,MAAC,4BAA4B,GAAG,CAAC,OAAO,KAAK;AACzD,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC;AACzD,IAAI,MAAM,MAAM,GAAG,IAAI,sBAAsB,EAAE;AAC/C,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK;AACvD,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,0BAA0B,GAAG,CAAC,sBAAsB,EAAE,SAAS,KAAK;AACjF,IAAI,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,sBAAsB,CAAC;AAC9E;AACA,IAAI,MAAM,cAAc,GAAG,IAAI,sBAAsB,CAAC,mBAAmB,CAAC,MAAM,CAAC;AACjF,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;AAC9C,QAAQ,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI;AACJ,IAAI,mBAAmB,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE;AAC1D,IAAI,OAAO,mBAAmB,CAAC,QAAQ,EAAE;AACzC;AACA;AACY,MAAC,4BAA4B,GAAG,OAAO,OAAO,KAAK;AAC/D,IAAI,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,EAAE,CAAC,EAAE,iBAAiB,GAAG,EAAE,EAAE,SAAS,GAAG,GAAG,OAAO;AAC5H,IAAI,IAAI,uBAAuB,GAAG,EAAE;AACpC,IAAI,MAAM,qBAAqB,GAAG,MAAM,oBAAoB,EAAE;AAC9D,IAAI,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;AACjD,QAAQ,MAAM,cAAc,GAAG;AAC/B,YAAY,GAAG,EAAE,sBAAsB,IAAI,EAAE;AAC7C,YAAY,WAAW,EAAE,KAAK,IAAI,EAAE;AACpC,SAAS;AACT,QAAQ,uBAAuB,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC;AACzE,IAAI;AACJ,SAAS;AACT,QAAQ,uBAAuB,GAAG,iBAAiB;AACnD,IAAI;AACJ;AACA,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,uBAAuB,GAAG;AAClC,YAAY,GAAG,uBAAuB;AACtC,YAAY,aAAa,EAAE,SAAS;AACpC,SAAS;AACT,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,uBAAuB;AAC/B,QAAQ,oBAAoB,EAAE,qBAAqB;AACnD,KAAK;AACL;;;;"}