UNPKG

@calljmp/cli

Version:
2 lines (1 loc) 1.87 kB
"use strict";var h=Object.create;var r=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var p=(s,e)=>{for(var t in e)r(s,t,{get:e[t],enumerable:!0})},l=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of k(e))!f.call(s,n)&&n!==t&&r(s,n,{get:()=>e[n],enumerable:!(o=d(e,n))||o.enumerable});return s};var m=(s,e,t)=>(t=s!=null?h(w(s)):{},l(e||!s||!s.__esModule?r(t,"default",{value:s,enumerable:!0}):t,s)),g=s=>l(r({},"__esModule",{value:!0}),s);var y={};p(y,{Account:()=>_});module.exports=g(y);var a=m(require("node-fetch"));class _{constructor(e){this._config=e}_accessToken=null;async accessToken(){if(this._accessToken)return this._accessToken;const e=this._config.accessToken;if(e)try{const[,t]=e.split(".");if(!t)return null;const n=JSON.parse(Buffer.from(t,"base64").toString()).exp*1e3;if(Date.now()>=n+30*60*1e3)return null}catch{return null}return this._accessToken=e||null,this._accessToken}async authorized(){return!!await this.accessToken()}async requestAccess(){const e=await(0,a.default)(`${this._config.baseUrl}/cli/access`,{method:"POST",headers:{"Content-Type":"application/json"}});if(!e.ok)throw new Error(`Failed to request access: ${e.statusText}`);const{requestId:t,authorizationUrl:o}=await e.json();return{requestId:t,authorizationUrl:o}}async pollAccess(e,{timeout:t=5*60,interval:o=5}={}){const i=Date.now()+t*1e3;for(;Date.now()<i;){const c=await(0,a.default)(`${this._config.baseUrl}/cli/access/${e}`,{method:"GET"});if(!c.ok){if(c.status===404){await new Promise(T=>setTimeout(T,o*1e3));continue}throw new Error(`Failed to check access: ${c.statusText}`)}const{accessToken:u}=await c.json();return this._accessToken=u,{accessToken:u}}throw new Error("Timeout waiting for access token")}}0&&(module.exports={Account});