@shumai-one/shumai-transcode 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/{chunk-s88z9thx.js → chunk-2e9nq7wq.js} +1 -1
- package/bin/{chunk-f3sh0j1b.js → chunk-2fba2vk9.js} +1 -1
- package/bin/{chunk-40vjq2pf.js → chunk-vtq7z7wd.js} +1 -1
- package/bin/{chunk-agzrrk1k.js → chunk-y32t8e97.js} +1 -1
- package/bin/shumai-transcode-app.js +265 -51
- package/package.json +7 -7
- package/prisma/migrations/20260913130237_add_asset_comment_asset_id_idx/migration.sql +2 -0
- package/prisma/schema.prisma +1 -0
- /package/bin/{chunk-3ccw1y7s.js → chunk-4qc7zf67.js} +0 -0
- /package/bin/{chunk-600pvb4n.js → chunk-654ghfdr.js} +0 -0
- /package/bin/{chunk-vq1672h5.js → chunk-dknhnbqw.js} +0 -0
- /package/bin/{chunk-436zghtd.js → chunk-m11f0hs9.js} +0 -0
- /package/bin/{chunk-ey6bsxjh.js → chunk-mgxwax3j.js} +0 -0
- /package/bin/{chunk-f1ewyvmj.js → chunk-s5zdcqxd.js} +0 -0
- /package/bin/{chunk-rx1m1mhx.js → chunk-vghdswb8.js} +0 -0
- /package/bin/{chunk-w6fzqfqa.js → chunk-vjvzngsy.js} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{A,e,t}from"./shumai-transcode-app.js";var _=A(e());var B=A(e());var C=A(t()),f=A(e());var S=A(t()),u=A(e()),v=(r,n,o)=>{let s={EcsContainer:async(a)=>{let{fromHttp:c}=await import("./chunk-
|
|
2
|
+
import{A,e,t}from"./shumai-transcode-app.js";var _=A(e());var B=A(e());var C=A(t()),f=A(e());var S=A(t()),u=A(e()),v=(r,n,o)=>{let s={EcsContainer:async(a)=>{let{fromHttp:c}=await import("./chunk-s5zdcqxd.js"),{fromContainerMetadata:i}=await import("./chunk-mgxwax3j.js");return o?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"),async()=>u.chain(c(a??{}),i(a))().then(p)},Ec2InstanceMetadata:async(a)=>{o?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata");let{fromInstanceMetadata:c}=await import("./chunk-mgxwax3j.js");return async()=>c(a)().then(p)},Environment:async(a)=>{o?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment");let{fromEnv:c}=await import("./chunk-dknhnbqw.js");return async()=>c(a)().then(p)}};if(r in s)return s[r];else throw new u.CredentialsProviderError(`Unsupported credential source in profile ${n}. Got ${r}, expected EcsContainer or Ec2InstanceMetadata or Environment.`,{logger:o})},p=(r)=>S.setCredentialFeature(r,"CREDENTIALS_PROFILE_NAMED_PROVIDER","p");var R=(r,{profile:n="default",logger:o}={})=>Boolean(r)&&typeof r==="object"&&typeof r.role_arn==="string"&&["undefined","string"].indexOf(typeof r.role_session_name)>-1&&["undefined","string"].indexOf(typeof r.external_id)>-1&&["undefined","string"].indexOf(typeof r.mfa_serial)>-1&&(q(r,{profile:n,logger:o})||H(r,{profile:n,logger:o})),q=(r,{profile:n,logger:o})=>{let s=typeof r.source_profile==="string"&&typeof r.credential_source>"u";if(s)o?.debug?.(` ${n} isAssumeRoleWithSourceProfile source_profile=${r.source_profile}`);return s},H=(r,{profile:n,logger:o})=>{let s=typeof r.credential_source==="string"&&typeof r.source_profile>"u";if(s)o?.debug?.(` ${n} isCredentialSourceProfile credential_source=${r.credential_source}`);return s},L=async(r,n,o,s,a={},c)=>{o.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)");let i=n[r],{source_profile:l,region:K}=i;if(!o.roleAssumer){let{getDefaultRoleAssumer:d}=await import("./chunk-654ghfdr.js");o.roleAssumer=d({...o.clientConfig,credentialProviderLogger:o.logger,parentClientConfig:{...s,...o?.parentClientConfig,region:K??o?.parentClientConfig?.region??s?.region}},o.clientPlugins)}if(l&&l in a)throw new f.CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile ${f.getProfileName(o)}. Profiles visited: `+Object.keys(a).join(", "),{logger:o.logger});o.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${l?`source_profile=[${l}]`:`profile=[${r}]`}`);let P=l?c(l,n,o,s,{...a,[l]:!0},I(n[l]??{})):(await v(i.credential_source,r,o.logger)(o))();if(I(i))return P.then((d)=>C.setCredentialFeature(d,"CREDENTIALS_PROFILE_SOURCE_PROFILE","o"));else{let d={RoleArn:i.role_arn,RoleSessionName:i.role_session_name||`aws-sdk-js-${Date.now()}`,ExternalId:i.external_id,DurationSeconds:parseInt(i.duration_seconds||"3600",10)},{mfa_serial:m}=i;if(m){if(!o.mfaCodeProvider)throw new f.CredentialsProviderError(`Profile ${r} requires multi-factor authentication, but no MFA code callback was provided.`,{logger:o.logger,tryNextLink:!1});d.SerialNumber=m,d.TokenCode=await o.mfaCodeProvider(m)}let G=await P;return o.roleAssumer(G,d).then((U)=>C.setCredentialFeature(U,"CREDENTIALS_PROFILE_SOURCE_PROFILE","o"))}},I=(r)=>!r.role_arn&&!!r.credential_source;var O=A(t()),b=(r)=>Boolean(r&&r.login_session),x=async(r,n,o)=>{let{fromLoginCredentials:s}=await import("./chunk-y32t8e97.js"),a=await s({...n,profile:r})({callerClientConfig:o});return O.setCredentialFeature(a,"CREDENTIALS_PROFILE_LOGIN","AC")};var k=A(t()),F=(r)=>Boolean(r)&&typeof r==="object"&&typeof r.credential_process==="string",h=async(r,n)=>{let{fromProcess:o}=await import("./chunk-vjvzngsy.js"),s=await o({...r,profile:n})();return k.setCredentialFeature(s,"CREDENTIALS_PROFILE_PROCESS","v")};var y=A(t()),D=async(r,n,o={},s)=>{let{fromSSO:a}=await import("./chunk-2fba2vk9.js");return a({profile:r,logger:o.logger,parentClientConfig:o.parentClientConfig,clientConfig:o.clientConfig})({callerClientConfig:s}).then((c)=>{if(n.sso_session)return y.setCredentialFeature(c,"CREDENTIALS_PROFILE_SSO","r");else return y.setCredentialFeature(c,"CREDENTIALS_PROFILE_SSO_LEGACY","t")})},T=(r)=>r&&(typeof r.sso_start_url==="string"||typeof r.sso_account_id==="string"||typeof r.sso_session==="string"||typeof r.sso_region==="string"||typeof r.sso_role_name==="string");var W=A(t()),g=(r)=>Boolean(r)&&typeof r==="object"&&typeof r.aws_access_key_id==="string"&&typeof r.aws_secret_access_key==="string"&&["undefined","string"].indexOf(typeof r.aws_session_token)>-1&&["undefined","string"].indexOf(typeof r.aws_account_id)>-1,w=async(r,n)=>{n?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials");let o={accessKeyId:r.aws_access_key_id,secretAccessKey:r.aws_secret_access_key,sessionToken:r.aws_session_token,...r.aws_credential_scope&&{credentialScope:r.aws_credential_scope},...r.aws_account_id&&{accountId:r.aws_account_id}};return W.setCredentialFeature(o,"CREDENTIALS_PROFILE","n")};var N=A(t()),j=(r)=>Boolean(r)&&typeof r==="object"&&typeof r.web_identity_token_file==="string"&&typeof r.role_arn==="string"&&["undefined","string"].indexOf(typeof r.role_session_name)>-1,M=async(r,n,o)=>{let{fromTokenFile:s}=await import("./chunk-vtq7z7wd.js"),a=await s({webIdentityTokenFile:r.web_identity_token_file,roleArn:r.role_arn,roleSessionName:r.role_session_name,roleAssumerWithWebIdentity:n.roleAssumerWithWebIdentity,logger:n.logger,parentClientConfig:n.parentClientConfig})({callerClientConfig:o});return N.setCredentialFeature(a,"CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN","q")};var E=async(r,n,o,s,a={},c=!1)=>{let i=n[r];if(Object.keys(a).length>0&&g(i))return w(i,o);if(c||R(i,{profile:r,logger:o.logger}))return L(r,n,o,s,a,E);if(g(i))return w(i,o);if(j(i))return M(i,o,s);if(F(i))return h(o,r);if(T(i))return await D(r,i,o,s);if(b(i))return x(r,o,s);throw new B.CredentialsProviderError(`Could not resolve credentials using profile: [${r}] in configuration/credentials file(s).`,{logger:o.logger})};var V=(r={})=>async({callerClientConfig:n}={})=>{r.logger?.debug("@aws-sdk/credential-provider-ini - fromIni");let o=await _.parseKnownFiles(r);return E(_.getProfileName({profile:r.profile??n?.profile}),o,r,n)};export{V as fromIni};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{A,e,t}from"./shumai-transcode-app.js";var S=A(e());var U=(o)=>o&&(typeof o.sso_start_url==="string"||typeof o.sso_account_id==="string"||typeof o.sso_session==="string"||typeof o.sso_region==="string"||typeof o.sso_role_name==="string");var P=A(t());var p=A(e());var j=300000,T="To refresh this SSO session run 'aws sso login' with the corresponding profile.";var q=async(o,s={},n)=>{let{SSOOIDCClient:i}=await import("./chunk-
|
|
2
|
+
import{A,e,t}from"./shumai-transcode-app.js";var S=A(e());var U=(o)=>o&&(typeof o.sso_start_url==="string"||typeof o.sso_account_id==="string"||typeof o.sso_session==="string"||typeof o.sso_region==="string"||typeof o.sso_role_name==="string");var P=A(t());var p=A(e());var j=300000,T="To refresh this SSO session run 'aws sso login' with the corresponding profile.";var q=async(o,s={},n)=>{let{SSOOIDCClient:i}=await import("./chunk-m11f0hs9.js"),a=(g)=>s.clientConfig?.[g]??s.parentClientConfig?.[g]??n?.[g];return new i(Object.assign({},s.clientConfig??{},{region:o??s.clientConfig?.region,logger:a("logger"),userAgentAppId:a("userAgentAppId")}))};var W=async(o,s,n={},i)=>{let{CreateTokenCommand:a}=await import("./chunk-m11f0hs9.js");return(await q(s,n,i)).send(new a({clientId:o.clientId,clientSecret:o.clientSecret,refreshToken:o.refreshToken,grantType:"refresh_token"}))};var X=A(e());var R=(o)=>{if(o.expiration&&o.expiration.getTime()<Date.now())throw new X.TokenProviderError(`Token is expired. ${T}`,!1)};var z=A(e());var h=(o,s,n=!1)=>{if(typeof s>"u")throw new z.TokenProviderError(`Value not present for '${o}' in SSO Token${n?". Cannot refresh":""}. ${T}`,!1)};var J=A(e());import{promises as ee}from"fs";var{writeFile:oe}=ee,V=(o,s)=>{let n=J.getSSOTokenFilepath(o),i=JSON.stringify(s,null,2);return oe(n,i)};var Y=new Map,v=(o={})=>async({callerClientConfig:s}={})=>{o.logger?.debug("@aws-sdk/token-providers - fromSso");let n=await p.parseKnownFiles(o),i=p.getProfileName({profile:o.profile??s?.profile}),a=n[i];if(!a)throw new p.TokenProviderError(`Profile '${i}' could not be found in shared credentials file.`,!1);else if(!a.sso_session)throw new p.TokenProviderError(`Profile '${i}' is missing required property 'sso_session'.`);let l=a.sso_session,d=(await p.loadSsoSessionData(o))[l];if(!d)throw new p.TokenProviderError(`Sso session '${l}' could not be found in shared credentials file.`,!1);for(let f of["sso_start_url","sso_region"])if(!d[f])throw new p.TokenProviderError(`Sso session '${l}' is missing required property '${f}'.`,!1);let{sso_start_url:m,sso_region:E}=d,r;try{r=await p.getSSOTokenFromFile(l)}catch(f){throw new p.TokenProviderError(`The SSO session token associated with profile=${i} was not found or is invalid. ${T}`,!1)}h("accessToken",r.accessToken),h("expiresAt",r.expiresAt);let{accessToken:x,expiresAt:C}=r,c={token:x,expiration:new Date(C)};if(c.expiration.getTime()-Date.now()>j)return c;let w=Y.get(l)??0;if(Date.now()-w<30000)return R(c),c;h("clientId",r.clientId,!0),h("clientSecret",r.clientSecret,!0),h("refreshToken",r.refreshToken,!0);try{Y.set(l,Date.now());let f=await W(r,E,o,s);h("accessToken",f.accessToken),h("expiresIn",f.expiresIn);let O=new Date(Date.now()+f.expiresIn*1000);try{await V(l,{...r,accessToken:f.accessToken,expiresAt:O.toISOString(),refreshToken:f.refreshToken})}catch(_){}return{token:f.accessToken,expiration:O}}catch(f){return R(c),c}};var u=A(e()),y=!1,F=async({ssoStartUrl:o,ssoSession:s,ssoAccountId:n,ssoRegion:i,ssoRoleName:a,ssoClient:l,clientConfig:g,parentClientConfig:d,callerClientConfig:m,profile:E,filepath:r,configFilepath:x,ignoreCache:C,logger:c})=>{let w,f="To refresh this SSO session run aws sso login with the corresponding profile.";if(s)try{let k=await v({profile:E,filepath:r,configFilepath:x,ignoreCache:C,clientConfig:g,parentClientConfig:d,logger:c})({callerClientConfig:m});w={accessToken:k.token,expiresAt:new Date(k.expiration).toISOString()}}catch(k){throw new u.CredentialsProviderError(k.message,{tryNextLink:y,logger:c})}else try{w=await u.getSSOTokenFromFile(o)}catch(k){throw new u.CredentialsProviderError("The SSO session associated with this profile is invalid. To refresh this SSO session run aws sso login with the corresponding profile.",{tryNextLink:y,logger:c})}if(new Date(w.expiresAt).getTime()-Date.now()<=0)throw new u.CredentialsProviderError("The SSO session associated with this profile has expired. To refresh this SSO session run aws sso login with the corresponding profile.",{tryNextLink:y,logger:c});let{accessToken:O}=w,{SSOClient:_,GetRoleCredentialsCommand:I}=await import("./chunk-4qc7zf67.js"),Z=l||new _(Object.assign({},g??{},{logger:g?.logger??m?.logger??d?.logger,region:g?.region??i,userAgentAppId:g?.userAgentAppId??m?.userAgentAppId??d?.userAgentAppId})),D;try{D=await Z.send(new I({accountId:n,roleName:a,accessToken:O}))}catch(k){throw new u.CredentialsProviderError(k,{tryNextLink:y,logger:c})}let{roleCredentials:{accessKeyId:L,secretAccessKey:M,sessionToken:b,expiration:G,credentialScope:K,accountId:H}={}}=D;if(!L||!M||!b||!G)throw new u.CredentialsProviderError("SSO returns an invalid temporary credential.",{tryNextLink:y,logger:c});let N={accessKeyId:L,secretAccessKey:M,sessionToken:b,expiration:new Date(G),...K&&{credentialScope:K},...H&&{accountId:H}};if(s)P.setCredentialFeature(N,"CREDENTIALS_SSO","s");else P.setCredentialFeature(N,"CREDENTIALS_SSO_LEGACY","u");return N};var B=A(e()),Q=(o,s)=>{let{sso_start_url:n,sso_account_id:i,sso_region:a,sso_role_name:l}=o;if(!n||!i||!a||!l)throw new B.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", "sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(o).join(", ")}
|
|
3
3
|
Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,{tryNextLink:!1,logger:s});return o};var se=(o={})=>async({callerClientConfig:s}={})=>{o.logger?.debug("@aws-sdk/credential-provider-sso - fromSSO");let{ssoStartUrl:n,ssoAccountId:i,ssoRegion:a,ssoRoleName:l,ssoSession:g}=o,{ssoClient:d}=o,m=S.getProfileName({profile:o.profile??s?.profile});if(!n&&!i&&!a&&!l&&!g){let r=(await S.parseKnownFiles(o))[m];if(!r)throw new S.CredentialsProviderError(`Profile ${m} was not found.`,{logger:o.logger});if(!U(r))throw new S.CredentialsProviderError(`Profile ${m} is not configured with SSO credentials.`,{logger:o.logger});if(r?.sso_session){let _=(await S.loadSsoSessionData(o))[r.sso_session],I=` configurations in profile ${m} and sso-session ${r.sso_session}`;if(a&&a!==_.sso_region)throw new S.CredentialsProviderError("Conflicting SSO region"+I,{tryNextLink:!1,logger:o.logger});if(n&&n!==_.sso_start_url)throw new S.CredentialsProviderError("Conflicting SSO start_url"+I,{tryNextLink:!1,logger:o.logger});r.sso_region=_.sso_region,r.sso_start_url=_.sso_start_url}let{sso_start_url:x,sso_account_id:C,sso_region:c,sso_role_name:w,sso_session:f}=Q(r,o.logger);return F({ssoStartUrl:x,ssoSession:f,ssoAccountId:C,ssoRegion:c,ssoRoleName:w,ssoClient:d,clientConfig:o.clientConfig,parentClientConfig:o.parentClientConfig,callerClientConfig:o.callerClientConfig,profile:m,filepath:o.filepath,configFilepath:o.configFilepath,ignoreCache:o.ignoreCache,logger:o.logger})}else if(!n||!i||!a||!l)throw new S.CredentialsProviderError('Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"',{tryNextLink:!1,logger:o.logger});else return F({ssoStartUrl:n,ssoSession:g,ssoAccountId:i,ssoRegion:a,ssoRoleName:l,ssoClient:d,clientConfig:o.clientConfig,parentClientConfig:o.parentClientConfig,callerClientConfig:o.callerClientConfig,profile:m,filepath:o.filepath,configFilepath:o.configFilepath,ignoreCache:o.ignoreCache,logger:o.logger})};export{se as fromSSO};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{A,e,t}from"./shumai-transcode-app.js";var f=A(t()),i=A(e());import{readFileSync as S}from"fs";var a=(o)=>async(l)=>{o.logger?.debug("@aws-sdk/credential-provider-web-identity - fromWebToken");let{roleArn:r,roleSessionName:n,webIdentityToken:c,providerId:s,policyArns:g,policy:E,durationSeconds:p}=o,{roleAssumerWithWebIdentity:d}=o;if(!d){let{getDefaultRoleAssumerWithWebIdentity:_}=await import("./chunk-
|
|
2
|
+
import{A,e,t}from"./shumai-transcode-app.js";var f=A(t()),i=A(e());import{readFileSync as S}from"fs";var a=(o)=>async(l)=>{o.logger?.debug("@aws-sdk/credential-provider-web-identity - fromWebToken");let{roleArn:r,roleSessionName:n,webIdentityToken:c,providerId:s,policyArns:g,policy:E,durationSeconds:p}=o,{roleAssumerWithWebIdentity:d}=o;if(!d){let{getDefaultRoleAssumerWithWebIdentity:_}=await import("./chunk-654ghfdr.js");d=_({...o.clientConfig,credentialProviderLogger:o.logger,parentClientConfig:{...l?.callerClientConfig,...o.parentClientConfig}},o.clientPlugins)}return d({RoleArn:r,RoleSessionName:n??`aws-sdk-js-session-${Date.now()}`,WebIdentityToken:c,ProviderId:s,PolicyArns:g,Policy:E,DurationSeconds:p})};var m="AWS_WEB_IDENTITY_TOKEN_FILE",T="AWS_ROLE_ARN",N="AWS_ROLE_SESSION_NAME",I=(o={})=>async(l)=>{o.logger?.debug("@aws-sdk/credential-provider-web-identity - fromTokenFile");let r=o?.webIdentityTokenFile??process.env[m],n=o?.roleArn??process.env[T],c=o?.roleSessionName??process.env[N];if(!r||!n)throw new i.CredentialsProviderError("Web identity configuration not specified",{logger:o.logger});let s=await a({...o,webIdentityToken:i.externalDataInterceptor?.getTokenRecord?.()[r]??S(r,{encoding:"ascii"}),roleArn:n,roleSessionName:c})(l);if(r===process.env[m])f.setCredentialFeature(s,"CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN","h");return s};export{I as fromTokenFile};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{A,e,n,t}from"./shumai-transcode-app.js";var F=A(t()),d=A(e());var h=A(e()),b=A(n());import{createHash as K,createPrivateKey as _,createPublicKey as v,sign as B}from"crypto";import{promises as D}from"fs";import{homedir as q}from"os";import{dirname as U,join as R}from"path";class k{profileData;init;callerClientConfig;static REFRESH_THRESHOLD=300000;constructor(r,s,i){this.profileData=r,this.init=s,this.callerClientConfig=i}async loadCredentials(){let r=await this.loadToken();if(!r)throw new h.CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`,{tryNextLink:!1,logger:this.logger});let s=r.accessToken,i=Date.now();if(new Date(s.expiresAt).getTime()-i<=k.REFRESH_THRESHOLD)return this.refresh(r);return this.toCredentials(r.accessToken)}get logger(){return this.init?.logger}get loginSession(){return this.profileData.login_session}toCredentials(r){return{accessKeyId:r.accessKeyId,secretAccessKey:r.secretAccessKey,sessionToken:r.sessionToken,accountId:r.accountId,expiration:new Date(r.expiresAt)}}async refresh(r){let s=await this.loadToken().catch(()=>r),i=Date.now(),o=new Date(s.accessToken.expiresAt).getTime(),c=new Date(r.accessToken.expiresAt).getTime(),a=o<=i&&c>i?r:s;if(new Date(a.accessToken.expiresAt).getTime()-Date.now()>k.REFRESH_THRESHOLD)return this.toCredentials(a.accessToken);let{SigninClient:u,CreateOAuth2TokenCommand:T}=await import("./chunk-
|
|
2
|
+
import{A,e,n,t}from"./shumai-transcode-app.js";var F=A(t()),d=A(e());var h=A(e()),b=A(n());import{createHash as K,createPrivateKey as _,createPublicKey as v,sign as B}from"crypto";import{promises as D}from"fs";import{homedir as q}from"os";import{dirname as U,join as R}from"path";class k{profileData;init;callerClientConfig;static REFRESH_THRESHOLD=300000;constructor(r,s,i){this.profileData=r,this.init=s,this.callerClientConfig=i}async loadCredentials(){let r=await this.loadToken();if(!r)throw new h.CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`,{tryNextLink:!1,logger:this.logger});let s=r.accessToken,i=Date.now();if(new Date(s.expiresAt).getTime()-i<=k.REFRESH_THRESHOLD)return this.refresh(r);return this.toCredentials(r.accessToken)}get logger(){return this.init?.logger}get loginSession(){return this.profileData.login_session}toCredentials(r){return{accessKeyId:r.accessKeyId,secretAccessKey:r.secretAccessKey,sessionToken:r.sessionToken,accountId:r.accountId,expiration:new Date(r.expiresAt)}}async refresh(r){let s=await this.loadToken().catch(()=>r),i=Date.now(),o=new Date(s.accessToken.expiresAt).getTime(),c=new Date(r.accessToken.expiresAt).getTime(),a=o<=i&&c>i?r:s;if(new Date(a.accessToken.expiresAt).getTime()-Date.now()>k.REFRESH_THRESHOLD)return this.toCredentials(a.accessToken);let{SigninClient:u,CreateOAuth2TokenCommand:T}=await import("./chunk-vghdswb8.js"),{logger:x,userAgentAppId:E}=this.callerClientConfig??{},S=((l)=>l?.metadata?.handlerProtocol==="h2")(this.callerClientConfig?.requestHandler)?void 0:this.callerClientConfig?.requestHandler,w=this.profileData.region??await this.callerClientConfig?.region?.()??process.env.AWS_REGION,y=new u({credentials:{accessKeyId:"",secretAccessKey:""},region:w,requestHandler:S,logger:x,userAgentAppId:E,...this.init?.clientConfig});this.createDPoPInterceptor(y.middlewareStack);let I={tokenInput:{clientId:a.clientId,refreshToken:a.refreshToken,grantType:"refresh_token"}};try{let l=await y.send(new T(I)),{accessKeyId:f,secretAccessKey:m,sessionToken:p}=l.tokenOutput?.accessToken??{},{refreshToken:P,expiresIn:L}=l.tokenOutput??{};if(!f||!m||!p||!P)throw new h.CredentialsProviderError("Token refresh response missing required fields",{logger:this.logger,tryNextLink:!1});let O=(L??900)*1000,H=new Date(Date.now()+O),N={...a,accessToken:{...a.accessToken,accessKeyId:f,secretAccessKey:m,sessionToken:p,expiresAt:H.toISOString()},refreshToken:P};return await this.saveToken(N),this.toCredentials(N.accessToken)}catch(l){if(l.name==="AccessDeniedException"){let m=l.error,p;switch(m){case"TOKEN_EXPIRED":p="Your session has expired. Please reauthenticate.";break;case"USER_CREDENTIALS_CHANGED":p="Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password.";break;case"INSUFFICIENT_PERMISSIONS":p="Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action.";break;default:p=`Failed to refresh token: ${String(l)}. Please re-authenticate using \`aws login\``}throw new h.CredentialsProviderError(p,{logger:this.logger,tryNextLink:!1})}if(new Date(a.accessToken.expiresAt).getTime()>Date.now())return this.logger?.warn?.(`Failed to refresh token: ${String(l)}. Using existing token until expiry.`),this.toCredentials(a.accessToken);throw new h.CredentialsProviderError(`Failed to refresh token: ${String(l)}. Please re-authenticate using aws login`,{logger:this.logger})}}async loadToken(){let r=this.getTokenFilePath();try{let s=await D.readFile(r,"utf8"),i=JSON.parse(s),o=["accessToken","clientId","refreshToken","dpopKey"].filter((c)=>!i[c]);if(!i.accessToken?.accountId)o.push("accountId");if(o.length>0)throw new h.CredentialsProviderError(`Token validation failed, missing fields: ${o.join(", ")}`,{logger:this.logger,tryNextLink:!1});return i}catch(s){throw new h.CredentialsProviderError(`Failed to load token from ${r}: ${String(s)}`,{logger:this.logger,tryNextLink:!1})}}async saveToken(r){let s=this.getTokenFilePath(),i=U(s);try{await D.mkdir(i,{recursive:!0})}catch(o){}await D.writeFile(s,JSON.stringify(r,null,2),"utf8")}getTokenFilePath(){let r=process.env.AWS_LOGIN_CACHE_DIRECTORY??R(q(),".aws","login","cache"),s=Buffer.from(this.loginSession,"utf8"),i=K("sha256").update(s).digest("hex");return R(r,`${i}.json`)}derToRawSignature(r){let s=2;if(r[s]!==2)throw Error("Invalid DER signature");s++;let i=r[s++],o=r.subarray(s,s+i);if(s+=i,r[s]!==2)throw Error("Invalid DER signature");s++;let c=r[s++],a=r.subarray(s,s+c);o=o[0]===0?o.subarray(1):o,a=a[0]===0?a.subarray(1):a;let g=Buffer.concat([Buffer.alloc(32-o.length),o]),u=Buffer.concat([Buffer.alloc(32-a.length),a]);return Buffer.concat([g,u])}createDPoPInterceptor(r){r.add((s)=>async(i)=>{if(b.HttpRequest.isInstance(i.request)){let o=i.request,c=`${o.protocol}//${o.hostname}${o.port?`:${o.port}`:""}${o.path}`,a=await this.generateDpop(o.method,c);o.headers={...o.headers,DPoP:a}}return s(i)},{step:"finalizeRequest",name:"dpopInterceptor",override:!0})}async generateDpop(r="POST",s){let i=await this.loadToken();try{let o=_({key:i.dpopKey,format:"pem",type:"sec1"}),a=v(o).export({format:"der",type:"spki"}),g=-1;for(let f=0;f<a.length;f++)if(a[f]===4){g=f;break}let u=a.slice(g+1,g+33),T=a.slice(g+33,g+65),x={alg:"ES256",typ:"dpop+jwt",jwk:{kty:"EC",crv:"P-256",x:u.toString("base64url"),y:T.toString("base64url")}},E={jti:crypto.randomUUID(),htm:r,htu:s,iat:Math.floor(Date.now()/1000)},C=Buffer.from(JSON.stringify(x)).toString("base64url"),S=Buffer.from(JSON.stringify(E)).toString("base64url"),w=`${C}.${S}`,y=B("sha256",Buffer.from(w),o),l=this.derToRawSignature(y).toString("base64url");return`${w}.${l}`}catch(o){throw new h.CredentialsProviderError(`Failed to generate Dpop proof: ${o instanceof Error?o.message:String(o)}`,{logger:this.logger,tryNextLink:!1})}}}var j=(r)=>async({callerClientConfig:s}={})=>{r?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials");let i=await d.parseKnownFiles(r||{}),o=d.getProfileName({profile:r?.profile??s?.profile}),c=i[o];if(!c?.login_session)throw new d.CredentialsProviderError(`Profile ${o} does not contain login_session.`,{tryNextLink:!0,logger:r?.logger});let g=await new k(c,r,s).loadCredentials();return F.setCredentialFeature(g,"CREDENTIALS_LOGIN","AD")};export{j as fromLoginCredentials};
|