UNPKG

@integration-app/membrane-cli

Version:

CLI tool for importing and exporting Integration.app workspace data

3 lines (2 loc) 7.66 kB
var U=Object.defineProperty;var o=(e,t)=>U(e,"name",{value:t,configurable:!0});import{P as h,C as p,t as W,u as v}from"./index-DSLX1GoQ.js";import{parse as K}from"url";import{Buffer as $}from"buffer";import{request as B}from"http";import"fs";import"path";import"chalk";import"commander";import"inquirer";import"node:fs";import"node:path";import"js-yaml";import"@integration-app/sdk";import"zod";import"jsonwebtoken";import"events";import"constants";import"stream";import"util";import"assert";import"node:url";import"node:fs/promises";import"node:events";import"node:stream";import"node:string_decoder";import"zlib";import"form-data";import"async_hooks";import"https";import"http2";import"os";import"crypto";import"process";import"js-convert-case";import"@anthropic-ai/sdk";function I(e){return new Promise((t,a)=>{const r=B({method:"GET",...e,hostname:e.hostname?.replace(/^\[(.+)\]$/,"$1")});r.on("error",n=>{a(Object.assign(new h("Unable to connect to instance metadata service"),n)),r.destroy()}),r.on("timeout",()=>{a(new h("TimeoutError from instance metadata service")),r.destroy()}),r.on("response",n=>{const{statusCode:s=400}=n;(s<200||300<=s)&&(a(Object.assign(new h("Error response received from instance metadata service"),{statusCode:s})),r.destroy());const m=[];n.on("data",i=>{m.push(i)}),n.on("end",()=>{t($.concat(m)),r.destroy()})}),r.end()})}o(I,"httpRequest");const O=o(e=>!!e&&typeof e=="object"&&typeof e.AccessKeyId=="string"&&typeof e.SecretAccessKey=="string"&&typeof e.Token=="string"&&typeof e.Expiration=="string","isImdsCredentials"),y=o(e=>({accessKeyId:e.AccessKeyId,secretAccessKey:e.SecretAccessKey,sessionToken:e.Token,expiration:new Date(e.Expiration),...e.AccountId&&{accountId:e.AccountId}}),"fromImdsCredentials"),M=1e3,P=0,g=o(({maxRetries:e=P,timeout:t=M})=>({maxRetries:e,timeout:t}),"providerConfigFromInit"),N=o((e,t)=>{let a=e();for(let r=0;r<t;r++)a=a.catch(e);return a},"retry"),T="AWS_CONTAINER_CREDENTIALS_FULL_URI",S="AWS_CONTAINER_CREDENTIALS_RELATIVE_URI",w="AWS_CONTAINER_AUTHORIZATION_TOKEN",G=o((e={})=>{const{timeout:t,maxRetries:a}=g(e);return()=>N(async()=>{const r=await J({logger:e.logger}),n=JSON.parse(await H(t,r));if(!O(n))throw new p("Invalid response received from instance metadata service.",{logger:e.logger});return y(n)},a)},"fromContainerMetadata"),H=o(async(e,t)=>(process.env[w]&&(t.headers={...t.headers,Authorization:process.env[w]}),(await I({...t,timeout:e})).toString()),"requestFromEcsImds"),q="169.254.170.2",j={localhost:!0,"127.0.0.1":!0},z={"http:":!0,"https:":!0},J=o(async({logger:e})=>{if(process.env[S])return{hostname:q,path:process.env[S]};if(process.env[T]){const t=K(process.env[T]);if(!t.hostname||!(t.hostname in j))throw new p(`${t.hostname} is not a valid container metadata service hostname`,{tryNextLink:!1,logger:e});if(!t.protocol||!(t.protocol in z))throw new p(`${t.protocol} is not a valid container metadata service protocol`,{tryNextLink:!1,logger:e});return{...t,port:t.port?parseInt(t.port,10):void 0}}throw new p(`The container metadata credential provider cannot be used unless the ${S} or ${T} environment variable is set`,{tryNextLink:!1,logger:e})},"getCmdsUri");class D extends p{static{o(this,"InstanceMetadataV1FallbackError")}constructor(t,a=!0){super(t,a),this.tryNextLink=a,this.name="InstanceMetadataV1FallbackError",Object.setPrototypeOf(this,D.prototype)}}var A;(function(e){e.IPv4="http://169.254.169.254",e.IPv6="http://[fd00:ec2::254]"})(A||(A={}));const Y="AWS_EC2_METADATA_SERVICE_ENDPOINT",X="ec2_metadata_service_endpoint",Z={environmentVariableSelector:o(e=>e[Y],"environmentVariableSelector"),configFileSelector:o(e=>e[X],"configFileSelector"),default:void 0};var _;(function(e){e.IPv4="IPv4",e.IPv6="IPv6"})(_||(_={}));const Q="AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE",ee="ec2_metadata_service_endpoint_mode",te={environmentVariableSelector:o(e=>e[Q],"environmentVariableSelector"),configFileSelector:o(e=>e[ee],"configFileSelector"),default:_.IPv4},b=o(async()=>W(await oe()||await re()),"getInstanceMetadataEndpoint"),oe=o(async()=>v(Z)(),"getFromEndpointConfig"),re=o(async()=>{const e=await v(te)();switch(e){case _.IPv4:return A.IPv4;case _.IPv6:return A.IPv6;default:throw new Error(`Unsupported endpoint mode: ${e}. Select from ${Object.values(_)}`)}},"getFromEndpointModeConfig"),ne=5*60,ae=5*60,se="https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html",R=o((e,t)=>{const a=ne+Math.floor(Math.random()*ae),r=new Date(Date.now()+a*1e3);t.warn(`Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(r)}. For more information, please visit: `+se);const n=e.originalExpiration??e.expiration;return{...e,...n?{originalExpiration:n}:{},expiration:r}},"getExtendedInstanceMetadataCredentials"),ie=o((e,t={})=>{const a=t?.logger||console;let r;return async()=>{let n;try{n=await e(),n.expiration&&n.expiration.getTime()<Date.now()&&(n=R(n,a))}catch(s){if(r)a.warn("Credential renew failed: ",s),n=R(r,a);else throw s}return r=n,n}},"staticStabilityProvider"),k="/latest/meta-data/iam/security-credentials/",ce="/latest/api/token",C="AWS_EC2_METADATA_V1_DISABLED",F="ec2_metadata_v1_disabled",V="x-aws-ec2-metadata-token",le=o((e={})=>ie(de(e),{logger:e.logger}),"fromInstanceMetadata"),de=o((e={})=>{let t=!1;const{logger:a,profile:r}=e,{timeout:n,maxRetries:s}=g(e),m=o(async(i,f)=>{if(t||f.headers?.[V]==null){let c=!1,l=!1;const x=await v({environmentVariableSelector:o(d=>{const E=d[C];if(l=!!E&&E!=="false",E===void 0)throw new p(`${C} not set in env, checking config file next.`,{logger:e.logger});return l},"environmentVariableSelector"),configFileSelector:o(d=>{const E=d[F];return c=!!E&&E!=="false",c},"configFileSelector"),default:!1},{profile:r})();if(e.ec2MetadataV1Disabled||x){const d=[];throw e.ec2MetadataV1Disabled&&d.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"),c&&d.push(`config file profile (${F})`),l&&d.push(`process environment variable (${C})`),new D(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${d.join(", ")}].`)}}const L=(await N(async()=>{let c;try{c=await me(f)}catch(l){throw l.statusCode===401&&(t=!1),l}return c},i)).trim();return N(async()=>{let c;try{c=await fe(L,f,e)}catch(l){throw l.statusCode===401&&(t=!1),l}return c},i)},"getCredentials");return async()=>{const i=await b();if(t)return a?.debug("AWS SDK Instance Metadata","using v1 fallback (no token fetch)"),m(s,{...i,timeout:n});{let f;try{f=(await pe({...i,timeout:n})).toString()}catch(u){if(u?.statusCode===400)throw Object.assign(u,{message:"EC2 Metadata token request returned error"});return(u.message==="TimeoutError"||[403,404,405].includes(u.statusCode))&&(t=!0),a?.debug("AWS SDK Instance Metadata","using v1 fallback (initial)"),m(s,{...i,timeout:n})}return m(s,{...i,headers:{[V]:f},timeout:n})}}},"getInstanceMetadataProvider"),pe=o(async e=>I({...e,path:ce,method:"PUT",headers:{"x-aws-ec2-metadata-token-ttl-seconds":"21600"}}),"getMetadataToken"),me=o(async e=>(await I({...e,path:k})).toString(),"getProfile"),fe=o(async(e,t,a)=>{const r=JSON.parse((await I({...t,path:k+e})).toString());if(!O(r))throw new p("Invalid response received from instance metadata service.",{logger:a.logger});return y(r)},"getCredentialsFromProfile");export{P as DEFAULT_MAX_RETRIES,M as DEFAULT_TIMEOUT,w as ENV_CMDS_AUTH_TOKEN,T as ENV_CMDS_FULL_URI,S as ENV_CMDS_RELATIVE_URI,A as Endpoint,G as fromContainerMetadata,le as fromInstanceMetadata,b as getInstanceMetadataEndpoint,I as httpRequest,g as providerConfigFromInit};