import{Pma as u,Sma as k}from"./cli-0.5.3-jcd226b3.mjs";import{Xma as f,Yma as y}from"./cli-0.5.3-0df3r78b.mjs";function j(z){return new Promise((G,U)=>{let K=g.request({method:"GET",...z,hostname:z.hostname?.replace(/^\[(.+)\]$/,"$1")});K.on("error",(Q)=>{U(Object.assign(new X.ProviderError("Unable to connect to instance metadata service"),Q)),K.destroy()}),K.on("timeout",()=>{U(new X.ProviderError("TimeoutError from instance metadata service")),K.destroy()}),K.on("response",(Q)=>{let{statusCode:Z=400}=Q;if(Z<200||300<=Z)U(Object.assign(new X.ProviderError("Error response received from instance metadata service"),{statusCode:Z})),K.destroy();let w=[];Q.on("data",($)=>{w.push($)}),Q.on("end",()=>{G(Buffer.concat(w)),K.destroy()})}),K.end()})}var m,X,g,c,C=(z)=>Boolean(z)&&typeof z==="object"&&typeof z.AccessKeyId==="string"&&typeof z.SecretAccessKey==="string"&&typeof z.Token==="string"&&typeof z.Expiration==="string",T=(z)=>({accessKeyId:z.AccessKeyId,secretAccessKey:z.SecretAccessKey,sessionToken:z.Token,expiration:new Date(z.Expiration),...z.AccountId&&{accountId:z.AccountId}}),b=1000,F=0,M=({maxRetries:z=F,timeout:G=b})=>({maxRetries:z,timeout:G}),N=(z,G)=>{let U=z();for(let K=0;K<G;K++)U=U.catch(z);return U},L="AWS_CONTAINER_CREDENTIALS_FULL_URI",_="AWS_CONTAINER_CREDENTIALS_RELATIVE_URI",P="AWS_CONTAINER_AUTHORIZATION_TOKEN",p=(z={})=>{let{timeout:G,maxRetries:U}=M(z);return()=>N(async()=>{let K=await n({logger:z.logger}),Q=JSON.parse(await d(G,K));if(!C(Q))throw new X.CredentialsProviderError("Invalid response received from instance metadata service.",{logger:z.logger});return T(Q)},U)},d=async(z,G)=>{if(process.env[P])G.headers={...G.headers,Authorization:process.env[P]};return(await j({...G,timeout:z})).toString()},l="169.254.170.2",a,s,n=async({logger:z})=>{if(process.env[_])return{hostname:l,path:process.env[_]};if(process.env[L]){let G=m.parse(process.env[L]);if(!G.hostname||!(G.hostname in a))throw new X.CredentialsProviderError(`${G.hostname} is not a valid container metadata service hostname`,{tryNextLink:!1,logger:z});if(!G.protocol||!(G.protocol in s))throw new X.CredentialsProviderError(`${G.protocol} is not a valid container metadata service protocol`,{tryNextLink:!1,logger:z});return{...G,port:G.port?parseInt(G.port,10):void 0}}throw new X.CredentialsProviderError(`The container metadata credential provider cannot be used unless the ${_} or ${L} environment variable is set`,{tryNextLink:!1,logger:z})},V,S=void 0,o="AWS_EC2_METADATA_SERVICE_ENDPOINT",t="ec2_metadata_service_endpoint",i,A,r="AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE",e="ec2_metadata_service_endpoint_mode",zz,v=async()=>c.parseUrl(await Gz()||await Kz()),Gz=async()=>X.loadConfig(i)(),Kz=async()=>{let z=await X.loadConfig(zz)();switch(z){case A.IPv4:return S.IPv4;case A.IPv6:return S.IPv6;default:throw Error(`Unsupported endpoint mode: ${z}. Select from ${Object.values(A)}`)}},Qz=300,Uz=300,Xz="https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html",h=(z,G)=>{let U=Qz+Math.floor(Math.random()*Uz),K=new Date(Date.now()+U*1000);G.warn(`Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(K)}.
For more information, please visit: `+Xz);let Q=z.originalExpiration??z.expiration;return{...z,...Q?{originalExpiration:Q}:{},expiration:K}},Zz=(z,G={})=>{let U=G?.logger||console,K;return async()=>{let Q;try{if(Q=await z(),Q.expiration&&Q.expiration.getTime()<Date.now())Q=h(Q,U)}catch(Z){if(K)U.warn("Credential renew failed: ",Z),Q=h(K,U);else throw Z}return K=Q,Q}},x="/latest/meta-data/iam/security-credentials/",$z="/latest/api/token",B="AWS_EC2_METADATA_V1_DISABLED",q="ec2_metadata_v1_disabled",I="x-aws-ec2-metadata-token",Hz=(z={})=>Zz(Jz(z),{logger:z.logger}),Jz=(z={})=>{let G=!1,{logger:U,profile:K}=z,{timeout:Q,maxRetries:Z}=M(z),w=async($,D)=>{if(G||D.headers?.[I]==null){let H=!1,J=!1,R=await X.loadConfig({environmentVariableSelector:(Y)=>{let W=Y[B];if(J=!!W&&W!=="false",W===void 0)throw new X.CredentialsProviderError(`${B} not set in env, checking config file next.`,{logger:z.logger});return J},configFileSelector:(Y)=>{let W=Y[q];return H=!!W&&W!=="false",H},default:!1},{profile:K})();if(z.ec2MetadataV1Disabled||R){let Y=[];if(z.ec2MetadataV1Disabled)Y.push("credential provider initialization (runtime option ec2MetadataV1Disabled)");if(H)Y.push(`config file profile (${q})`);if(J)Y.push(`process environment variable (${B})`);throw new V(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${Y.join(", ")}].`)}}let E=(await N(async()=>{let H;try{H=await wz(D)}catch(J){if(J.statusCode===401)G=!1;throw J}return H},$)).trim();return N(async()=>{let H;try{H=await Dz(E,D,z)}catch(J){if(J.statusCode===401)G=!1;throw J}return H},$)};return async()=>{let $=await v();if(G)return U?.debug("AWS SDK Instance Metadata","using v1 fallback (no token fetch)"),w(Z,{...$,timeout:Q});else{let D;try{D=(await Yz({...$,timeout:Q})).toString()}catch(O){if(O?.statusCode===400)throw Object.assign(O,{message:"EC2 Metadata token request returned error"});else if(O.message==="TimeoutError"||[403,404,405].includes(O.statusCode))G=!0;return U?.debug("AWS SDK Instance Metadata","using v1 fallback (initial)"),w(Z,{...$,timeout:Q})}return w(Z,{...$,headers:{[I]:D},timeout:Q})}}},Yz=async(z)=>j({...z,path:$z,method:"PUT",headers:{"x-aws-ec2-metadata-token-ttl-seconds":"21600"}}),wz=async(z)=>(await j({...z,path:x})).toString(),Dz=async(z,G,U)=>{let K=JSON.parse((await j({...G,path:x+z})).toString());if(!C(K))throw new X.CredentialsProviderError("Invalid response received from instance metadata service.",{logger:U.logger});return T(K)},Wz,Az,Oz,Sz,jz,Lz,_z,Bz,Nz,Pz;var Mz=f(()=>{m=y("node:url"),X=u(),g=y("node:http"),c=k();a={localhost:!0,"127.0.0.1":!0},s={"http:":!0,"https:":!0};V=class V extends X.CredentialsProviderError{tryNextLink;name="InstanceMetadataV1FallbackError";constructor(z,G=!0){super(z,G);this.tryNextLink=G,Object.setPrototypeOf(this,V.prototype)}};(function(z){z.IPv4="http://169.254.169.254",z.IPv6="http://[fd00:ec2::254]"})(S||(S={}));i={environmentVariableSelector:(z)=>z[o],configFileSelector:(z)=>z[t],default:void 0};(function(z){z.IPv4="IPv4",z.IPv6="IPv6"})(A||(A={}));zz={environmentVariableSelector:(z)=>z[r],configFileSelector:(z)=>z[e],default:A.IPv4};Wz=F,Az=b,Oz=P,Sz=L,jz=_,Lz=p,_z=Hz,Bz=v,Nz=j,Pz=M});Mz();export{Pz as providerConfigFromInit,Nz as httpRequest,Bz as getInstanceMetadataEndpoint,_z as fromInstanceMetadata,Lz as fromContainerMetadata,S as Endpoint,jz as ENV_CMDS_RELATIVE_URI,Sz as ENV_CMDS_FULL_URI,Oz as ENV_CMDS_AUTH_TOKEN,Az as DEFAULT_TIMEOUT,Wz as DEFAULT_MAX_RETRIES};export default {get providerConfigFromInit(){return Pz},get httpRequest(){return Nz},get getInstanceMetadataEndpoint(){return Bz},get fromInstanceMetadata(){return _z},get fromContainerMetadata(){return Lz},get Endpoint(){return S},get ENV_CMDS_RELATIVE_URI(){return jz},get ENV_CMDS_FULL_URI(){return Sz},get ENV_CMDS_AUTH_TOKEN(){return Oz},get DEFAULT_TIMEOUT(){return Az},get DEFAULT_MAX_RETRIES(){return Wz}};
