/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@smithy/middleware-endpoint@4.4.29/dist-cjs/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var core=require("@smithy/core"),utilMiddleware=require("@smithy/util-middleware"),getEndpointFromConfig=require("./adaptors/getEndpointFromConfig"),urlParser=require("@smithy/url-parser"),middlewareSerde=require("@smithy/middleware-serde");const resolveParamsForS3=async e=>{const n=e?.Bucket||"";if("string"==typeof e.Bucket&&(e.Bucket=n.replace(/#/g,encodeURIComponent("#")).replace(/\?/g,encodeURIComponent("?"))),isArnBucketName(n)){if(!0===e.ForcePathStyle)throw new Error("Path-style addressing cannot be used with ARN buckets")}else(!isDnsCompatibleBucketName(n)||-1!==n.indexOf(".")&&!String(e.Endpoint).startsWith("http:")||n.toLowerCase()!==n||n.length<3)&&(e.ForcePathStyle=!0);return e.DisableMultiRegionAccessPoints&&(e.disableMultiRegionAccessPoints=!0,e.DisableMRAP=!0),e},DOMAIN_PATTERN=/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/,IP_ADDRESS_PATTERN=/(\d+\.){3}\d+/,DOTS_PATTERN=/\.\./,isDnsCompatibleBucketName=e=>DOMAIN_PATTERN.test(e)&&!IP_ADDRESS_PATTERN.test(e)&&!DOTS_PATTERN.test(e),isArnBucketName=e=>{const[n,t,i,,,r]=e.split(":"),o="arn"===n&&e.split(":").length>=6,s=Boolean(o&&t&&i&&r);if(o&&!s)throw new Error(`Invalid ARN: ${e} was an invalid ARN.`);return s},createConfigValueProvider=(e,n,t,i=!1)=>{const r=async()=>{let r;if(i){const i=t.clientContextParams,o=i?.[e];r=o??t[e]??t[n]}else r=t[e]??t[n];return"function"==typeof r?r():r};return"credentialScope"===e||"CredentialScope"===n?async()=>{const e="function"==typeof t.credentials?await t.credentials():t.credentials;return e?.credentialScope??e?.CredentialScope}:"accountId"===e||"AccountId"===n?async()=>{const e="function"==typeof t.credentials?await t.credentials():t.credentials;return e?.accountId??e?.AccountId}:"endpoint"===e||"endpoint"===n?async()=>{if(!1===t.isCustomEndpoint)return;const e=await r();if(e&&"object"==typeof e){if("url"in e)return e.url.href;if("hostname"in e){const{protocol:n,hostname:t,port:i,path:r}=e;return`${n}//${t}${i?":"+i:""}${r}`}}return e}:r},toEndpointV1=e=>{if("object"==typeof e){if("url"in e){const n=urlParser.parseUrl(e.url);if(e.headers){n.headers={};for(const[t,i]of Object.entries(e.headers))n.headers[t.toLowerCase()]=i.join(", ")}return n}return e}return urlParser.parseUrl(e)},getEndpointFromInstructions=async(e,n,t,i)=>{if(!t.isCustomEndpoint){let e;e=t.serviceConfiguredEndpoint?await t.serviceConfiguredEndpoint():await getEndpointFromConfig.getEndpointFromConfig(t.serviceId),e&&(t.endpoint=()=>Promise.resolve(toEndpointV1(e)),t.isCustomEndpoint=!0)}const r=await resolveParams(e,n,t);if("function"!=typeof t.endpointProvider)throw new Error("config.endpointProvider is not set.");const o=t.endpointProvider(r,i);if(t.isCustomEndpoint&&t.endpoint){const e=await t.endpoint();if(e?.headers){o.headers??={};for(const[n,t]of Object.entries(e.headers))o.headers[n]=Array.isArray(t)?t:[t]}}return o},resolveParams=async(e,n,t)=>{const i={},r=n?.getEndpointParameterInstructions?.()||{};for(const[n,o]of Object.entries(r))switch(o.type){case"staticContextParams":i[n]=o.value;break;case"contextParams":i[n]=e[o.name];break;case"clientContextParams":case"builtInParams":i[n]=await createConfigValueProvider(o.name,n,t,"builtInParams"!==o.type)();break;case"operationContextParams":i[n]=o.get(e);break;default:throw new Error("Unrecognized endpoint parameter instruction: "+JSON.stringify(o))}return 0===Object.keys(r).length&&Object.assign(i,t),"s3"===String(t.serviceId).toLowerCase()&&await resolveParamsForS3(i),i},endpointMiddleware=({config:e,instructions:n})=>(t,i)=>async r=>{e.isCustomEndpoint&&core.setFeature(i,"ENDPOINT_OVERRIDE","N");const o=await getEndpointFromInstructions(r.input,{getEndpointParameterInstructions:()=>n},{...e},i);i.endpointV2=o,i.authSchemes=o.properties?.authSchemes;const s=i.authSchemes?.[0];if(s){i.signing_region=s.signingRegion,i.signing_service=s.signingName;const e=utilMiddleware.getSmithyContext(i),n=e?.selectedHttpAuthScheme?.httpAuthOption;n&&(n.signingProperties=Object.assign(n.signingProperties||{},{signing_region:s.signingRegion,signingRegion:s.signingRegion,signing_service:s.signingName,signingName:s.signingName,signingRegionSet:s.signingRegionSet},s.properties))}return t({...r})},endpointMiddlewareOptions={step:"serialize",tags:["ENDPOINT_PARAMETERS","ENDPOINT_V2","ENDPOINT"],name:"endpointV2Middleware",override:!0,relation:"before",toMiddleware:middlewareSerde.serializerMiddlewareOption.name},getEndpointPlugin=(e,n)=>({applyToStack:t=>{t.addRelativeTo(endpointMiddleware({config:e,instructions:n}),endpointMiddlewareOptions)}}),resolveEndpointConfig=e=>{const n=e.tls??!0,{endpoint:t,useDualstackEndpoint:i,useFipsEndpoint:r}=e,o=null!=t?async()=>toEndpointV1(await utilMiddleware.normalizeProvider(t)()):void 0,s=!!t,a=Object.assign(e,{endpoint:o,tls:n,isCustomEndpoint:s,useDualstackEndpoint:utilMiddleware.normalizeProvider(i??!1),useFipsEndpoint:utilMiddleware.normalizeProvider(r??!1)});let d;return a.serviceConfiguredEndpoint=async()=>(e.serviceId&&!d&&(d=getEndpointFromConfig.getEndpointFromConfig(e.serviceId)),d),a},resolveEndpointRequiredConfig=e=>{const{endpoint:n}=e;return void 0===n&&(e.endpoint=async()=>{throw new Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint.")}),e};exports.endpointMiddleware=endpointMiddleware,exports.endpointMiddlewareOptions=endpointMiddlewareOptions,exports.getEndpointFromInstructions=getEndpointFromInstructions,exports.getEndpointPlugin=getEndpointPlugin,exports.resolveEndpointConfig=resolveEndpointConfig,exports.resolveEndpointRequiredConfig=resolveEndpointRequiredConfig,exports.resolveParams=resolveParams,exports.toEndpointV1=toEndpointV1;
//# sourceMappingURL=/sm/cef74eefea62ee28c2b65a4e58b9c5bd12a39a9ab3a110ac99482cc52281e15c.map