UNPKG

@enfo/marvin

Version:

Marvin, your friendly, slightly paranoid, CLI robot here to cater to all your developing needs

2 lines 392 kB
#!/usr/bin/env node !function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=28)}([function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(2));t.symbols={star:"★",heart:"❤"},t.info=e=>{console.log(r.default.INFO_SYMBOL(t.symbols.heart),`${r.default.INFO(e)}`)},t.warn=e=>{console.log(r.default.WARN_SYMBOL("✪"),`${r.default.WARN(e)}`)},t.error=e=>{process.verbose?console.error(e):console.log(r.default.ERROR_SYMBOL(">>"),`${r.default.ERROR(e&&e.message||e)}`)},t.custom=(e,t="ℹ")=>{console.log(t+e)},t.debug=e=>{process.verbose&&console.log(r.default.DEBUG_SYMBOL("•"),`${r.default.DEBUG(e)}`)}},function(e,t){e.exports=require("inquirer")},function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(4));t.removeANSI=e=>e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"");const i={INFO_SYMBOL:r.default.red,WARN_SYMBOL:r.default.yellow,ERROR_SYMBOL:r.default.red,DEBUG_SYMBOL:r.default.gray,INFO:r.default.green,WARN:r.default.yellow,ERROR:r.default.yellow,DEBUG:r.default.white.italic,H1:r.default.custom.blue,H2:r.default.custom.green,H3:r.default.custom.grey.italic,LABEL:r.default.yellow,LIST_VALUE:r.default.grey,LIST_PARENTES_VALUE:r.default.grey,SELECTED_LIST_PARENTES_VALUE:r.default.custom.green,SELECTED_LIST_VALUE:r.default.white};Object.defineProperty(r.default,"cyan",{get:()=>e=>{if("string"!=typeof e)return e;const n=t.removeANSI(e),o=/\((.+?)\)/g.exec(n);if(o){const t=`(${i.SELECTED_LIST_PARENTES_VALUE(o[1])})`;e=n.replace(/\((.+?)\)/g,t)}return i.SELECTED_LIST_VALUE(e)}}),t.default=i},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),s=r(n(40)),u=n(24),c=n(12),l=i(n(13)),d=n(15),f=(e,t)=>o(void 0,void 0,void 0,(function*(){const n={};if(l.default.token){const{apiKey:e}=yield d.getDecoded();n.Authorization=l.default.token,n["x-api-key"]=e}else n["x-api-key"]=l.default.apiKey;return{url:`https://marvin.cloud.enfogroup.com/${e}`,body:t,headers:n,json:!0}})),p=e=>{const{statusCode:t}=e,n=(e=>{const t=e.error||e.message;return"string"==typeof t&&t||Object(t)===t&&(t.error||t.message)||"An error occurred"})(e);if(a.debug(e),n.includes("ECONNREFUSED"))throw new Error("Could not connect to API end point!");switch(t){case 403:throw new Error("Not authorized! Verify that the API Key is valid.");default:throw new Error(`${n}`)}},m={},h=(e,t)=>o(void 0,void 0,void 0,(function*(){try{let n=u.get(m,e);return n||(n=yield t(),u.set(m,e,n)),n}catch(e){p(e)}}));t.getAccounts=e=>o(void 0,void 0,void 0,(function*(){const t=`accounts/${e}`;return yield h(`repositories.${e}`,()=>o(void 0,void 0,void 0,(function*(){return s.get(yield f(t))})))})),t.getProjects=e=>o(void 0,void 0,void 0,(function*(){return yield h(`projects.${e}`,()=>o(void 0,void 0,void 0,(function*(){return s.get(yield f(`projects/${e}`))})))})),t.createProject=(e,t)=>o(void 0,void 0,void 0,(function*(){return s.post(yield f(`projects/${e}`,t))})),t.structureProject=(e,t,n)=>o(void 0,void 0,void 0,(function*(){return s.patch(yield f(`projects/${e}/${t}/structure?purge=${n}`))})),t.getRepositories=(e,t)=>o(void 0,void 0,void 0,(function*(){const n=`repositories/${e}?filter=${t}`;return yield h(`repositories.${e}`,()=>o(void 0,void 0,void 0,(function*(){return s.get(yield f(n))})))})),t.getProjectPoliciesForUser=e=>o(void 0,void 0,void 0,(function*(){const t=yield f(`policies/${e}`);return yield h(`user.project.policies.${e}`,()=>s.get(t).promise())})),t.getAllProjectPolicies=e=>o(void 0,void 0,void 0,(function*(){const t=yield f(`policies/${e}/all`);return yield h(`all.project.policies.${e}`,()=>o(void 0,void 0,void 0,(function*(){return s.get(t)})))})),t.updateProjectPolicy=(e,t)=>o(void 0,void 0,void 0,(function*(){yield s.post(yield f(`policies/${e}/${t.project}`,t)).catch(p)})),t.getBitbucketAccounts=()=>o(void 0,void 0,void 0,(function*(){return yield h("bitbucket.accounts",()=>o(void 0,void 0,void 0,(function*(){return s.get(yield f("bitbucketAccounts/"))})))})),t.getBitbucketGroups=e=>o(void 0,void 0,void 0,(function*(){return yield h(`bitbucket.groups.${e}`,()=>o(void 0,void 0,void 0,(function*(){return s.get(yield f(`groups/${e}`))})))})),t.removeRepository=(e,t)=>o(void 0,void 0,void 0,(function*(){yield s.delete(yield f(`repositories/${e}/${t}`)).catch(p)})),t.rotateKeys=e=>o(void 0,void 0,void 0,(function*(){yield s.post(yield f("rotate",{accounts:e})).catch(p)})),t.getUsers=(e=c.StateFilter.ALL)=>o(void 0,void 0,void 0,(function*(){const t=`users?filter=${e}`;return yield h(t,()=>o(void 0,void 0,void 0,(function*(){return s.get(yield f(t))})))})),t.putUser=e=>o(void 0,void 0,void 0,(function*(){yield s.put(yield f("users",e)).catch(p)})),t.deleteUser=e=>o(void 0,void 0,void 0,(function*(){yield s.delete(yield f(`users/${e}`)).catch(p)})),t.getCompanies=()=>o(void 0,void 0,void 0,(function*(){return yield h("companies",()=>o(void 0,void 0,void 0,(function*(){return s.get(yield f("companies"))})))})),t.getTemplates=()=>o(void 0,void 0,void 0,(function*(){return h("templates",()=>o(void 0,void 0,void 0,(function*(){return s.get(yield f("templates"))})))})),t.addTemplate=e=>o(void 0,void 0,void 0,(function*(){return s.put(yield f("templates",e))})),t.getTemplateZip=e=>o(void 0,void 0,void 0,(function*(){return s.get(yield f(`templates/${e}`)).catch(p)})),t.deleteTemplate=e=>o(void 0,void 0,void 0,(function*(){yield s.delete(yield f(`templates/${e}`))})),t.clearCache=()=>o(void 0,void 0,void 0,(function*(){yield s.post(yield f("clear",{})).catch(p)})),t.associateRepository=e=>o(void 0,void 0,void 0,(function*(){yield s.post(yield f("repos/associate",e)).catch(p)})),t.unassociateRepository=e=>o(void 0,void 0,void 0,(function*(){yield s.delete(yield f("repos/associate",e)).catch(p)})),t.updateRepository=e=>o(void 0,void 0,void 0,(function*(){const t=`repositories/${e.bitbucketAccount}/${e.uuid}`;yield s.patch(yield f(t,e)).catch(p)})),t.createRepository=e=>o(void 0,void 0,void 0,(function*(){const{bitbucketAccount:t,name:n,description:o,projectKey:r,accountId:i}=e,u={bitbucketAccount:t,name:n,description:o,projectKey:r,accountId:i};return a.debug("Creating repository"),s.post(yield f("repos",u)).catch(p)})),t.authenticate=e=>{const t={url:"https://marvin.cloud.enfogroup.com/authenticate",body:{code:e},json:!0};return s.post(t).catch(p)},t.refresh=()=>o(void 0,void 0,void 0,(function*(){const e={url:"https://marvin.cloud.enfogroup.com/refresh",headers:{Authorization:l.default.token},json:!0};return s.post(e).catch(p)}))},function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(21)),i=r.default;i.custom={grey:r.default.rgb(192,192,192),orange:r.default.rgb(255,195,120),pink:r.default.rgb(220,150,200),summerPink:r.default.rgb(255,204,255),brown:r.default.rgb(190,100,0),purple:r.default.rgb(210,120,250),purpleLight:r.default.rgb(130,80,170),blue:r.default.rgb(120,205,230),greenLight:r.default.rgb(164,218,202),green:r.default.rgb(100,195,165)},t.default=i},function(e,t){e.exports=require("inquirer-autocomplete-prompt")},function(e,t){e.exports=require("cli-progress")},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(4)),a=r(n(6));t.wrapper=(e,t,n)=>o(void 0,void 0,void 0,(function*(){const o=yield e;if(t.increment(1),n){const{total:e,current:o}=t;n(o,e,t)}return o})),t.bar=(e,n="Gathering data",r)=>o(void 0,void 0,void 0,(function*(){const o=new a.default.Bar({barsize:20,format:`${i.default.yellow("⚡")}${n} {bar} {percentage}%`},a.default.Presets.rect),s=e.map(e=>t.wrapper(e,o,r));o.start(s.length,0),yield Promise.all(s),o.stop()}))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(3)),s=r(n(0)),u=i(n(2));t.stringSorter=(e,t)=>e&&t&&e.toLowerCase()<t.toLowerCase()?-1:e.toLowerCase()>t.toLowerCase()?1:0,t.filterOwners=e=>(t,n="")=>Promise.resolve(e.filter(e=>Object.values(e).some(e=>e.toLowerCase().includes(n.toLowerCase()))).map(({id:e,name:t})=>({name:u.default.LIST_VALUE(`${t} (${u.default.LIST_PARENTES_VALUE(e)})`),value:e}))),t.getOwners=()=>o(void 0,void 0,void 0,(function*(){s.debug("Fetching repo owners");const e=yield a.getBitbucketAccounts();return e.sort(({name:e},{name:n})=>t.stringSorter(e,n)),s.debug("Repo owners fetched"),t.filterOwners(e)})),t.getAccounts=e=>o(void 0,void 0,void 0,(function*(){s.debug("Fetching bitbucket accounts");const n=yield a.getAccounts(e),o=Object.entries(n).sort(([,e],[,n])=>t.stringSorter(e,n)).reduce((e,t)=>e.push(t)&&e,[]);return s.debug("Fetching of bitbucket accounts done"),(e,t="")=>Promise.resolve(o.filter(e=>e.some(e=>e.toLowerCase().includes(t.toLowerCase()))).map(([e,t])=>({name:`${t} (${u.default.LIST_PARENTES_VALUE(e)})`,value:e})))})),t.getTemplates=(e=!0)=>o(void 0,void 0,void 0,(function*(){s.debug("Fetching templates information");const t=yield a.getTemplates();return e&&t.unshift({name:"<Empty>",uuid:"-",tags:[],description:""}),s.debug("Fetched templates information"),(e,n="")=>{const o=t.filter(({name:e})=>e.toLowerCase().includes(n.toLowerCase())).map(e=>({name:e.name+(e.tags.length?` (${u.default.LIST_PARENTES_VALUE(e.tags.map(e=>e.toUpperCase()).join(", "))})`:""),value:e}));return Promise.resolve(o)}})),t.filterProjectPolicies=e=>(t,n="")=>Promise.resolve(e.filter(({key:e,name:t})=>[e,t].some(e=>!!e&&e.toLowerCase().includes(n.toLowerCase()))).map(e=>({name:`${e.name} (${u.default.LIST_PARENTES_VALUE(e.key)})`,value:e}))),t.filterRepositories=e=>(t,n="")=>Promise.resolve(e.filter(({name:e,project:t})=>[e,t.key].filter(e=>Boolean(e)).some(e=>e.toLowerCase().includes(n.toLowerCase()))).map(e=>({name:`${e.name}`,value:e}))),t.getProjectPoliciesForUser=e=>o(void 0,void 0,void 0,(function*(){s.debug("Fetching project policies for user");const n=(yield a.getProjectPoliciesForUser(e)).sort(({name:e=""},{name:n=""})=>t.stringSorter(e,n));return s.debug("Fetching of project policies for user done"),t.filterProjectPolicies(n)})),t.getAllProjectPolicies=e=>o(void 0,void 0,void 0,(function*(){s.debug("Fetching all project policies");const n=(yield a.getAllProjectPolicies(e)).sort(({name:e=""},{name:n=""})=>t.stringSorter(e,n));return s.debug("Fetching of all project policies done"),t.filterProjectPolicies(n)}))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1)),s=i(n(5)),u=n(3),c=n(8),l=i(n(10)),d=i(n(2));a.registerPrompt("autocomplete",s.default),t.selectBitbucketAccounts=()=>o(void 0,void 0,void 0,(function*(){const{bitbucketAccount:e}=yield a.prompt([{name:"bitbucketAccount",type:"autocomplete",message:d.default.LABEL("Select Bitbucket account:"),source:yield c.getOwners()}]);return e})),t.getBitbucketAccount=()=>o(void 0,void 0,void 0,(function*(){const e=l.default({color:"gray",spinner:"line"});e.start("Loading please wait...");const n=yield u.getBitbucketAccounts();if(e.stop(),1===n.length)return n[0].id;if(n.length>1)return yield t.selectBitbucketAccounts();throw new Error("There are no access rights for this user!")}))},function(e,t){e.exports=require("ora")},function(e,t){e.exports=require("fs")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.ENABLED=1]="ENABLED",e[e.DISABLED=0]="DISABLED",e[e.ARCHIVED=-1]="ARCHIVED"}(t.State||(t.State={})),function(e){e.ALL="all",e.ENABLED="enabled",e.DISABLED="disabled"}(t.StateFilter||(t.StateFilter={}))},function(e,t,n){"use strict";var o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(11)),i=`${o(n(41)).homedir()}/.marvin`;class a{constructor(){const{token:e,apiKey:t}=a.read();e?this._token=e:t&&(this._apiKey=t)}get apiKey(){return this._apiKey}set apiKey(e){a.write({apiKey:this._apiKey=e})}get token(){return this._token}set token(e){a.write({token:this._token=e})}static read(){return r.existsSync(i)?JSON.parse(r.readFileSync(i).toString()):{}}static write(e){r.writeFileSync(i,JSON.stringify(e))}hasApiKey(){return this._apiKey&&this._apiKey.length>10}hasToken(){return Boolean(this._token)}isConfigured(){return this.hasApiKey()||this.hasToken()}}t.default=new a},function(e,t){e.exports=require("inquirer-checkbox-autocomplete-prompt")},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),s=n(0),u=i(n(4)),c=i(n(13)),l=i(n(42)),d=i(n(10)),f=n(3),p=[void 0,void 0];t.hasToken=()=>c.default.hasToken(),t.decode=e=>{if(e===p[0])return p[1];try{const t=l.default.decode(e);return p[0]=e,p[1]=t,t}catch(e){throw a.debug(e),new Error("Could not decode token")}},t.getEncoded=()=>c.default.token,t.getDecoded=()=>o(void 0,void 0,void 0,(function*(){const e=t.getEncoded(),n=t.decode(e);if(!(n&&n.exp<(()=>{const e=Date.now();return(e-e%1e3)/1e3})()))return n;{const e=d.default({color:"gray",spinner:"line"});e.start("Token has expired, trying to refresh...");try{c.default.token=yield f.refresh();const n=t.decode(c.default.token);return e.stop(),s.custom("Token has successfully been refreshed!",`${u.default.yellow("⚡")}`),n}catch(t){throw e.stop(),s.warn("Token could not be refreshed, try re-authenticate!"),t}}}))},function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(14)),i=o(n(22)),a=o(n(23)),s=o(n(24)),u=o(n(21)),c=o(n(39));class l extends a.default{constructor(e){super(e)}render(e,t){t=t.replace("Already selected ","Selected ").replace(" items ",""),super.render(e,t)}}class d extends r.default{constructor(e,t,n){super(e,t,n),super.screen=new l(t);const o=this.selection.map(({short:e})=>e);this.selection=[],this.source.choices.filter(({short:e})=>o.includes(e)).forEach(e=>e.checked=!0),this.firstRender=!0}render(e){const t=this;let n=t.getQuestion(),o="";if(t.rl.line=String(t.rl.line).trim(),t.firstRender&&(n+=u.default.dim("(Use space to select and type to search)")),"answered"===t.status)n+=u.default.cyan(s.default.map(t.selection,"short").join(", "));else if(t.searching)n+=t.rl.line,o+=" "+u.default.dim("Searching...");else if(t.filterChoices.length){const e=t.listRender(t.selection,t.filterChoices,t.selected);n+=t.rl.line,o+=t.paginator.paginate(e,t.selected,t.opt.pageSize)}else n+=t.rl.line,o+=" "+u.default.yellow("No results...");"answered"!==t.status&&t.selection.length&&(o+="\nAlready selected "+u.default.cyan(t.selection.length)+" items : "+t.selection.map(e=>e.short).join(", ")),e&&(o+="\n"+u.default.red(">> ")+e),t.firstRender=!1,t.screen.render(n,o)}search(e){const t=this;if(t.selected=0,e=e?e.trim():e,t.searchedOnce?(t.searching=!0,t.filterChoices=new i.default([],{}),t.render()):t.searchedOnce=!0,t.lastSearchTerm=e,t.opt.asyncSource){const n=t.opt.asyncSource(t.answers,e);return t.lastPromise=n,n.then((function(o){if(n===t.lastPromise){if(t.firstRender){const e=o.filter(t.getChecked.bind(t));e.length&&(t.selection=e)}e&&(o=c.default.filter(e||"",o,{extract:e=>e.name||e.short||e.value}).filter(e=>"separator"!==e.type).map(e=>e.original)),t.filterChoices=new i.default(o,{}),t.searching=!1,t.render()}}))}{let n=t.source.choices;if(t.firstRender){const e=n.filter(t.getChecked.bind(this));e.length&&(t.selection=e)}e&&(n=c.default.filter(e||"",t.source.realChoices,{extract:e=>e.name||e.short||e.value}).map(e=>e.original)),t.filterChoices=new i.default(n,{}),t.searching=!1,t.render()}}}t.default=d},function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(5)),i=o(n(22)),a=o(n(23)),s=o(n(47)),u=n(48),c=n(49);class l extends r.default{constructor(e,t,n){super(e,t,n),super.screen=new a.default(t)}_run(e){const t=this;return t.opt.defaultIndex||(t.opt.defaultIndex=Promise.resolve({index:void 0,name:void 0})),t.opt.defaultIndex(t.answers,t.opt.source).then(({index:n,name:o})=>{t.opt.default=o&&u.stripANSI(o),t.start(e,n)}),t}render(e){const t=this;t.opt.default&&(t.firstRender=!1),super.render(e),t.opt.default&&(t.opt.default=null)}search(e="",t=0){const n=this;n.selected=t,n.searchedOnce?(n.searching=!0,n.currentChoices=new i.default([],{}),n.render()):n.searchedOnce=!0,n.lastSearchTerm=e;const o=n.opt.source(n.answers,e);return n.lastPromise=o,o.then((function(e){o===n.lastPromise&&(e=new i.default(e.filter((function(e){return"separator"!==e.type})),{}),n.currentChoices=e,n.searching=!1,n.render())}))}start(e,t){const n=this;n.done=e,n.rl.history instanceof Array&&(n.rl.history=[]);const o=()=>!n.answer,r=s.default(n.rl);r.line.pipe(c.takeWhile(o)).forEach(n.onSubmit.bind(n)),r.keypress.pipe(c.takeWhile(o)).forEach(n.onKeypress.bind(n)),n.search(void 0,t)}}t.default=l},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1)),s=n(12),u=i(n(5)),c=n(3),l=i(n(2));a.registerPrompt("autocomplete",u.default),t.selectUser=(e=s.StateFilter.ALL)=>o(void 0,void 0,void 0,(function*(){const t=yield c.getUsers(e),{user:n}=yield a.prompt([{type:"autocomplete",name:"user",message:l.default.LABEL("Select user"),source:(e,n="")=>Promise.resolve(t.filter(({firstname:e,surname:t,company:o})=>[e,t,o].some(e=>e.toLowerCase().includes(n.toLowerCase()))).map(e=>({name:`${e.firstname} ${e.surname} (${l.default.LIST_PARENTES_VALUE(e.company)})`,value:e})))}]);return n}))},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("figlet")},function(e,t){e.exports=require("chalk")},function(e,t){e.exports=require("inquirer/lib/objects/choices")},function(e,t){e.exports=require("inquirer/lib/utils/screen-manager")},function(e,t){e.exports=require("lodash")},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),s=n(8),u=n(3),c=i(n(17)),l=i(n(4)),d=i(n(16)),f=n(9),p=i(n(1)),m=i(n(6)),h=i(n(2)),y=n(7);p.default.registerPrompt("checkbox-autocomplete",d.default),p.default.registerPrompt("default-autocomplete",c.default);const v=(e,t)=>{if(!t)return!1;const n=e.indexOf(t);return n>=0?e.splice(n,1):e.push(t),!0};t.putTemplate=(e={})=>o(void 0,void 0,void 0,(function*(){const t=e.team||(yield f.getBitbucketAccount()),n=new m.default.Bar({barsize:20,format:`${l.default.yellow("⚡")} Gathering data {bar} {percentage}%`},m.default.Presets.rect),o=[y.wrapper(u.getRepositories(t,"all"),n),y.wrapper(u.getBitbucketAccounts(),n)];n.start(o.length,0);const[r,i]=yield Promise.all(o),c=i.map(({name:e,id:t})=>({name:e,value:t})),d=s.filterRepositories(r),{repository:g,name:_,description:w}=yield p.default.prompt([{type:"autocomplete",name:"repository",message:h.default.LABEL("Select repository to use as template:"),source:d,when:!e.uuid},{name:"name",type:"input",message:h.default.LABEL("Input template name to present to users:"),default:t=>t.repository?t.repository.name:e.name,validate:e=>!!/^.*$/.test(e)||"Name must not be empty"},{name:"description",type:"input",message:h.default.LABEL("Input template description to present to users:"),default:e.description,validate:e=>!!/^.*$/.test(e)||"Description must not be empty"}]),b=e.tags||[];for(b.length&&a.info(`Current tags: ${b.join(", ")}`);b;){const{tag:e}=yield p.default.prompt([{name:"tag",type:"input",message:h.default.LABEL("Input tag. Input an empty tag to continue. Input a tag already on the list to remove it:")}]);if(!v(b,e))break;a.info(`Current tags: ${b.join(", ")}`)}const{bitbucketTeams:E}=yield p.default.prompt([{name:"bitbucketTeams",type:"checkbox-autocomplete",message:h.default.LABEL("Select bitbucket teams which should have access:"),default:e.bitbucketTeams||[],choices:c}]);yield u.addTemplate({team:t,name:_,description:w,slug:g?g.name:e.slug,uuid:g?g.uuid:e.uuid,tags:b,bitbucketTeams:E})})),t.default=()=>o(void 0,void 0,void 0,(function*(){yield t.putTemplate(),a.info("Template created")}))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1)),s=i(n(4)),u=i(n(16)),c=i(n(65)),l=n(8),d=n(9),f=n(3),p=i(n(10)),m=i(n(2));var h;a.registerPrompt("checkbox-autocomplete",u.default),a.registerPrompt("datetime",c.default),function(e){e[e.SET_ALL=0]="SET_ALL",e[e.SPECIFY=1]="SPECIFY"}(h||(h={}));const y=[{name:"Standard",value:"USER"},{name:"Administrator",value:"ADMIN"}],v=()=>o(void 0,void 0,void 0,(function*(){const{addAdditionalProjects:e}=yield a.prompt([{name:"addAdditionalProjects",type:"confirm",message:m.default.LABEL("Add additional projects?"),default:!1}]);return e}));t.toEpochFromMs=e=>Math.trunc(e/1e3),t.toEpoch=(e=new Date)=>t.toEpochFromMs(e.getTime());const g=e=>o(void 0,void 0,void 0,(function*(){const n=yield d.getBitbucketAccount(),o=p.default({color:"gray",spinner:"line"});o.start("Loading please wait...");const r=yield l.getAllProjectPolicies(n);o.stop();const i=e.access[n]||{},u=Object.keys(i).reduce((e,t)=>(e.push(t),e),[]),c=(yield r(e,"")).filter(({value:e})=>u.includes(e.key)),{access:f}=yield a.prompt([{type:"checkbox-autocomplete",name:"access",message:m.default.LABEL("Project access:"),choices:r,default:c}]);let y=h.SPECIFY;if(f.length>1){const{action:e}=yield a.prompt([{name:"action",type:"list",message:m.default.LABEL("Set expiration date:"),choices:[{name:"Set on all",value:h.SET_ALL},{name:"Set on each",value:h.SPECIFY}]}]);y=e}const v=((e=12)=>{const t=new Date;return t.setMonth(t.getMonth()+e),t})();if(y===h.SPECIFY)e.access[n]=yield a.prompt(f.map(({key:e,name:t})=>({type:"datetime",name:e,message:m.default.LABEL(`Time of expiration ${s.default.red(t)}:`),format:["d","/","m","/","yy"," ","H",":","MM"],initial:i[e]?new Date(1e3*i[e]):v}))),e.access[n]=Object.entries(e.access[n]).reduce((e,[n,o])=>(e[n]=t.toEpoch(o),e),{});else{u.length&&new Date(1e3*Object.values(i).sort((e,t)=>e-t)[0]);const{expiration:o}=yield a.prompt([{type:"datetime",name:"expiration",message:m.default.LABEL("Time of expiration:"),format:["d","/","m","/","yy"," ","H",":","MM"],initial:new Date}]),r=t.toEpochFromMs(Date.parse(o));e.access[n]=f.reduce((e,{key:t})=>(e[t]=r,e),{})}}));t.default=(e={})=>o(void 0,void 0,void 0,(function*(){const t=yield f.getCompanies();t.push("Other");const n=yield a.prompt([{name:"firstname",type:"input",message:m.default.LABEL("First name:"),validate:e=>!!/^.+$/.test(e)||"A valid value is required",default:e.firstname},{name:"surname",type:"input",message:m.default.LABEL("Surname:"),validate:e=>!!/^.+$/.test(e)||"A valid value is required",default:e.surname},{name:"company",type:"list",message:m.default.LABEL("Company:"),choices:t,default:t.indexOf(e.company)},{name:"newCompanyName",type:"input",message:m.default.LABEL("Company name:"),when:e=>"Other"===e.company},{name:"email",type:"input",message:m.default.LABEL("Email (used in JIRA or Bitbucket):"),validate:e=>!!/^\S+@\S+$/.test(e)||"Email is not in a correct format",default:e.email},{name:"description",type:"input",message:m.default.LABEL("Description (why needing access to Marvin)"),default:e.description},{name:"role",type:"list",message:m.default.LABEL("Role:"),choices:y,default:y.map(({value:e})=>e).indexOf(e.role)}]);if(n.newCompanyName&&(n.company=n.newCompanyName,delete n.newCompanyName),"ADMIN"===n.role)return Object.assign(Object.assign({},e),n);n.access={},e&&e.access&&(n.access=Object.entries(e.access).reduce((e,[t,n])=>(e[t]=n,e),{}));do{yield g(n)}while(yield v());return Object.assign(Object.assign({},e),n)}))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(11)),s=r(n(0)),u=n(3),c=n(79),l=i(n(82)),d=(e,t)=>{if(!a.existsSync(e)||a.lstatSync(e).isDirectory())return;s.debug(`Replacing values in ${e}`);let n=a.readFileSync(e,"utf8");for(const{searchValue:e,replaceValue:o}of t)o&&(n=n.replace(e,o));n=n.trim()+"\n",a.writeFileSync(e,n,"utf8")};t.setupTemplate=(e,t,n,r)=>o(void 0,void 0,void 0,(function*(){try{s.debug(`Downloading template for data ${e.slug}`);const i=yield u.getTemplateZip(e.uuid),a=`${e.slug}.zip`;s.debug(`Writing ${a} to ${process.cwd()}`),yield c.writeZip(a,i),s.debug(`Extracting ${a} to ${process.cwd()}`),yield c.unzip(a,r),yield((e,t,n,r)=>o(void 0,void 0,void 0,(function*(){try{const o={"serverless.yml":[{searchValue:"serverless.deploys",replaceValue:`${n}.serverless.deploys`}],"tags.yml":[{searchValue:"#Project:",replaceValue:`Project: '${n}'`},{searchValue:"#Name:",replaceValue:`Name: '${t}'`}],"*":[{searchValue:new RegExp(`${e.slug}`,"g"),replaceValue:t},{searchValue:new RegExp("MARVIN_PROD_AWS_ACCOUNT","g"),replaceValue:n},{searchValue:new RegExp("MARVIN_TEMPLATE_DEPLOYMENT_BUCKET","g"),replaceValue:`${n}.serverless.deploys`}]},i=`${process.cwd()}/${r}/`,a="**/+(*.js|*.ts|*.json|*.yml|*.md)",s=yield l.default(a,{cwd:i});for(const e of s){const t=o["*"]||[],n=o[e]||[];d(`${i}${e}`,[...t,...n])}}catch(e){s.error(`Error when updating template: ${e.message}`)}})))(e,t,n,r)}catch(e){throw s.debug(`Problem when processing zip-file and trying to unzip: ${e.message}`),e}}));const f=(e,r,i,u)=>o(void 0,void 0,void 0,(function*(){const c=a.existsSync(`${process.cwd()}/${r}`)?`${r}-${Date.now()}`:r,l=`${process.cwd()}/${c}`;return u?yield t.setupTemplate(u,r,i,c):a.mkdirSync(l),yield((e,t)=>o(void 0,void 0,void 0,(function*(){s.debug(`Initializing git repo and adding remote: ${t}`);const o=n(84);try{yield o(e).init(),yield o(e).addRemote("origin",t)}catch(e){s.error(`Error when setting up local git for new repo: ${e.message}`)}})))(l,`git@bitbucket.org:${e.full_name}.git`),l}));t.create=e=>o(void 0,void 0,void 0,(function*(){const t=yield u.createRepository(e),{template:n,name:o,accountId:r}=e;return{repository:t,path:yield f(t,o,r,n)}}))},function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),n(29),(new(o(n(30)).default)).run()},function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(20)),i=o(n(11)),a=o(n(19));global.__basedir=__dirname,r.default.parseFont("cyber-marvin",i.default.readFileSync(a.default.join(__dirname,"assets/cyber-marvin.flf"),"utf8"))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),s=n(31),u=n(35),c=i(n(87)),l=i(n(4)),d=i(n(88)),f=i(n(13)),p=i(n(20)),m=i(n(11)),h=n(15),y=i(n(19)),v=i(n(2));p.default.parseFont("cyber-marvin",m.default.readFileSync(y.default.join(__basedir,"assets/cyber-marvin.flf"),"utf8"));t.default=class{getUser(){return o(this,void 0,void 0,(function*(){if(f.default.hasToken()){const{identity:e}=yield h.getDecoded();return e}}))}run(){return o(this,void 0,void 0,(function*(){try{yield this.initialize(this.isAuthCommand()),this.setup(),d.default.parse(process.argv).args.length||d.default.help()}catch(e){a.error(e)}}))}isAuthCommand(){return"auth"===process.argv[2]}getDescription(){const e=l.default.blue(p.default.textSync(" enfo\n marvin","cyber-marvin")),t=e.split(/\n|\r/).reduce((e,t)=>t.length>e?t.length:e,0),n=l.default.gray(` v${this.version.toString()}`);let o=e+"\n\r"+n;if(process.identity){const{firstname:e,surname:r,company:i,role:a}=process.identity,s=l.default.white((`${e} ${r}`.toUpperCase()+" @ "+`${i}`.toUpperCase()).padStart(t-n.length));o=o.concat(s),"ADMIN"===a.toUpperCase()&&(o=o.concat("\n\r").concat(l.default.red("ADMINISTRATOR".padStart(t-10))))}else o=o.concat(l.default.red("UNAUTHORIZED".padStart(t-n.length)));return o}initialize(e=!1){return o(this,void 0,void 0,(function*(){const t=process.argv.slice(2);t.filter(e=>e.startsWith("-")).includes("-v")&&(process.verbose=!0,a.debug("VERBOSE: ON")),(yield s.checkVersion())&&process.exit(),this.version=s.getCurrentVersion();const n=d.default.commandHelp.bind(d.default);if(d.default.commandHelp=()=>n().replace("admin",l.default.red("admin")),d.default.option("-v, --verbose","output detailed info"),d.default.on("command:*",()=>{a.error(`Invalid command: ${d.default.args.join(" ")}\nSee --help for a list of available commands.`)}),!e&&f.default.isConfigured()){const e=yield this.getUser();if(e){const{email:t,role:n,firstname:o,surname:r,company:i}=e;process.identity={email:t,role:n,firstname:o,surname:r,company:i,isAdmin:"ADMIN"===n,isPowerUser:"POWER_USER"===n}}}process.identity?(d.default.command("repo").description(v.default.LABEL("Create a new repository")).action(c.default(u.repo)),d.default.command("code").description(v.default.LABEL("Download a template without creating a Bitbucket repository")).action(c.default(u.code)),"ADMIN"===process.identity.role&&d.default.command("admin").description(v.default.LABEL("Administrate user access and resources")).action(c.default(u.admin))):["repo","admin"].some(e=>t.includes(e))}))}setup(){d.default.version(this.version.toString()).description(this.getDescription()),d.default.command("auth").description(v.default.LABEL("Authenticate")).action(c.default(u.auth))}}},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(0)),s=i(n(4)),u=i(n(10)),c=i(n(32)),l=i(n(33)),d=i(n(34));t.isBeta=(e=c.default.version)=>e.includes("beta"),t.isAlpha=(e=c.default.version)=>e.includes("alpha");class f{constructor(e){this.version=f.parse(e)}static validate(e=[]){const t=[];for(const n of e.filter(e=>e).map(e=>e.trim())){if(!/\d/.test(n))throw new Error(`Illegal version syntax ${n} in ${e}`);t.push(+n)}return t}static parse(e){const[t,n]=e&&e.split("-")||["-1","-1.-1"],o=f.validate(t.split(/\.|,/)),r=n&&n.replace("alpha","1").replace("beta","2");return{raw:e,head:o,tail:r&&f.validate(r.split("."))||[3,0]}}compare({version:e}){const{head:t,tail:n}=this.version,{head:o,tail:r}=e,i=Math.abs(t.length-o.length);t.length<o.length?t.fill(0,t.length-1,t.length-1+i):o.length<t.length&&o.fill(0,o.length-1,o.length-1+i);const a=[...t,...n],s=[...o,...r],u=+a.join(""),c=+s.join("");return u>c?1:c>u?-1:0}toString(){return this.version.raw}}t.NPMVersion=f;const p=e=>(a.debug("[NPM.TS] >> (parseVersion)"),a.debug(`[NPM.TS] >> (parseVersion): version=${e}`),new f(e)),m=e=>new Promise(t=>{a.debug("[NPM.TS] >> (fetchRegistryInfo)"),a.debug(`[NPM.TS] >> (fetchRegistryInfo): packageId=${e}`);const n=new d.default.Writable;n._write=e=>t(JSON.parse(e.toString().replace("dist-tags.latest","recent")));const o=l.default("npm",["show",e,"version","deprecated","dist-tags.latest","--json"],{encoding:"utf8",stdio:[null,"pipe","ignore"]});o.stdout.pipe(n),a.debug(`[NPM.TS] >> (fetchRegistryInfo): spawn.stdout=${o.stdout}`)});t.isPackageGloballyInstalled=e=>{a.debug("[NPM.TS] >> (isPackageGloballyInstalled)");const t=l.default.sync("npm",["list","--depth","0","-g",e],{encoding:"utf8",detached:!0}).stdout;a.debug(`[NPM.TS] >> (isPackageGloballyInstalled): output=${t}`);const[,n]=t.trim().split("\n");return-1!==n.indexOf(e)},t.getPackageName=()=>c.default.name,t.getCurrentVersion=()=>(a.debug("[NPM.TS] >> (getCurrentVersion)"),a.debug(`[NPM.TS] >> (getCurrentVersion): parseVersion: pkg.name=${c.default.name}`),a.debug(`[NPM.TS] >> (getCurrentVersion): parseVersion: pkg.version=${c.default.version}`),p(c.default.version.trim())),t.getMeta=()=>o(void 0,void 0,void 0,(function*(){const e=u.default({color:"gray",spinner:"line"});e.start("Verifying version...");try{const{recent:n,deprecated:o}=yield m(t.getPackageName()),r=p(n),i=t.getCurrentVersion();return e.stop(),{version:{latest:r,current:i},deprecated:o}}catch(e){console.log(e)}})),t.checkVersion=()=>o(void 0,void 0,void 0,(function*(){const{version:e,deprecated:n}=yield t.getMeta(),o=e.current,r=e.latest;if(n&&console.log(">> ".concat(s.default.red("DEPRECATED").concat(", ").concat(s.default.yellow("please upgrade!")))),r&&-1===o.compare(r)){const e=t.isBeta(r.toString())?"beta":t.isAlpha(r.toString())?"alpha":"latest",n=t.getPackageName();console.log(">> ".concat("Running ").concat(`${s.default.white(`v${o.toString()}`)}`).concat(", latest is ").concat(`${s.default.white(`v${r.toString()}`)}`).concat(". Run: ").concat(`${s.default.white(`'npm i -g ${n}@${e}'`)}`).concat(" to upgrade."))}return Boolean(n)})),t.getLatestVersion=()=>o(void 0,void 0,void 0,(function*(){const e=yield m(t.getPackageName());return p(e.recent)})),t.isLatestVersion=()=>o(void 0,void 0,void 0,(function*(){const e=t.getCurrentVersion(),n=yield t.getLatestVersion();return-1!==e.compare(n)}))},function(e){e.exports=JSON.parse('{"name":"@enfo/marvin","version":"3.8.3","description":"Marvin, your friendly, slightly paranoid, CLI robot here to cater to all your developing needs","author":"Enfo","license":"UNLICENSED","homepage":"https://bitbucket.org/enfogroupcloud/connect-marvin-cli#readme","repository":{"type":"git","url":"git+ssh://git@bitbucket.org/enfogroupcloud/connect-marvin-cli.git"},"keywords":["enfo","marvin"],"main":"./dist/bundle.js","bin":{"marvin":"./dist/bundle.js"},"scripts":{"start":"NODE_ENV=test TS_NODE_FILES=true npx ts-node -r tsconfig-paths/register -r lib/env-loader/register src/index.ts","start:local":"NODE_ENV=local TS_NODE_FILES=true npx ts-node -r tsconfig-paths/register -r lib/env-loader/register src/index.ts","start:prod":"NODE_ENV=prod TS_NODE_FILES=true npx ts-node -r tsconfig-paths/register -r lib/env-loader/register src/index.ts","prebuild":"npm run lint","build":"npx webpack --stage test","build:local":"npx webpack --stage local","build:test":"npx webpack --stage test","build:preprod":"npx webpack --stage preprod","build:prod":"npx webpack --stage prod","publish":"node lib/publisher/publisher.js --stage test","publish:preprod":"node lib/publisher/publisher.js --stage preprod","publish:prod":"node lib/publisher/publisher.js --stage prod","deploy":"npm run build && npm run publish","deploy:local":"npm run build && npm install . -g","deploy:preprod":"npm run build:preprod && npm run publish:preprod","deploy:prod":"npm run build:prod && npm run publish:prod","test":"export TS_NODE_FILES=true && ./node_modules/.bin/nyc ./node_modules/.bin/mocha -r ts-node/register src/test/**/*.ts","lint":"./node_modules/.bin/eslint src/**/*.ts src/**/**/*.ts src/**/**/**/*.ts src/**/**/**/**/*.ts","lint:fix":"./node_modules/.bin/eslint --fix src/**/*.ts","npm:auth":"echo \'//registry.npmjs.org/:_authToken=${NPM_TOKEN}\' > ~/.npmrc"},"dependencies":{"chalk":"2.4.2","cli-progress":"3.2.0","commander":"3.0.2","cross-spawn":"7.0.0","extract-zip":"1.6.7","figlet":"1.2.4","glob":"7.1.4","inquirer":"7.0.0","inquirer-autocomplete-prompt":"1.0.1","inquirer-checkbox-autocomplete-prompt":"0.2.0","inquirer-datepicker-prompt":"0.4.2","js-yaml":"3.13.1","jsonwebtoken":"8.5.1","lodash":"4.17.15","open":"6.4.0","ora":"4.0.2","request":"2.88.0","request-promise":"4.2.4","request-promise-native":"1.0.7","simple-git":"1.126.0"},"devDependencies":{"@commitlint/cli":"^11.0.0","@commitlint/config-conventional":"^11.0.0","@types/cli-progress":"1.8.1","@types/cross-spawn":"6.0.0","@types/inquirer":"6.5.0","@types/js-yaml":"3.12.1","@types/jsonwebtoken":"8.3.4","@types/lodash":"4.14.141","@types/node":"12.7.8","@types/ora":"3.2.0","@types/request-promise":"4.1.44","@types/request-promise-native":"1.0.17","@types/webpack":"4.39.2","@typescript-eslint/eslint-plugin":"2.3.1","@typescript-eslint/parser":"2.3.1","awesome-typescript-loader":"5.2.1","copy-webpack-plugin":"^5.1.1","eslint":"^7.14.0","husky":"^4.3.0","json-loader":"0.5.7","ts-loader":"6.2.0","ts-node":"8.4.1","tsconfig-paths":"3.9.0","tsconfig-paths-webpack-plugin":"3.2.0","typescript":"3.6.3","webpack":"4.41.0","webpack-cli":"3.3.9","webpack-node-externals":"1.7.2"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"npm run lint"}}}')},function(e,t){e.exports=require("cross-spawn")},function(e,t){e.exports=require("stream")},function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=o(n(36));t.admin=r.default;const i=o(n(71));t.auth=i.default;const a=o(n(78));t.code=a.default;const s=o(n(85));t.repo=s.default;const u=o(n(86));t.setup=u.default},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1)),s=i(n(5)),u=i(n(37)),c=i(n(43)),l=i(n(45)),d=i(n(51)),f=i(n(52)),p=i(n(59)),m=i(n(63)),h=i(n(2));var y;a.registerPrompt("autocomplete",s.default),function(e){e[e.AWS_ACCOUNT=0]="AWS_ACCOUNT",e[e.USER=1]="USER",e[e.PROJECT=2]="PROJECT",e[e.REPOSITORY=3]="REPOSITORY",e[e.BITBUCKET=4]="BITBUCKET",e[e.TEMPLATE=5]="TEMPLATE",e[e.DEVELOPMENT=6]="DEVELOPMENT"}(y||(y={})),t.default=()=>o(void 0,void 0,void 0,(function*(){const{action:e}=yield a.prompt([{name:"action",type:"list",message:h.default.LABEL("Select action:"),choices:[{name:"Manage Accounts",value:y.AWS_ACCOUNT},{name:"Manage Users",value:y.USER},{name:"Manage Project Policies",value:y.PROJECT},{name:"Manage Repositories",value:y.REPOSITORY},{name:"Manage Bitbucket",value:y.BITBUCKET},{name:"Manage Templates",value:y.TEMPLATE},{name:"Development Tools",value:y.DEVELOPMENT}]}]);switch(e){case y.AWS_ACCOUNT:yield c.default();break;case y.USER:yield m.default();break;case y.PROJECT:yield d.default();break;case y.REPOSITORY:yield f.default();break;case y.BITBUCKET:yield l.default();break;case y.TEMPLATE:yield p.default();break;case y.DEVELOPMENT:yield u.default()}}))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1)),s=i(n(38)),u=i(n(2));var c;!function(e){e[e.CLEAR=0]="CLEAR"}(c||(c={})),t.default=()=>o(void 0,void 0,void 0,(function*(){const{action:e}=yield a.prompt([{name:"action",type:"list",message:u.default.LABEL("Select action:"),choices:[{name:"Clear cache",value:c.CLEAR}]}]);if(e!==c.CLEAR)throw new Error(`Unknown action ${e}`);yield s.default()}))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1)),s=i(n(5)),u=i(n(16)),c=n(3),l=n(0);a.registerPrompt("checkbox-autocomplete",u.default),a.registerPrompt("autocomplete",s.default),t.default=()=>o(void 0,void 0,void 0,(function*(){yield c.clearCache(),l.info("Cache was succesfully cleared!")}))},function(e,t){e.exports=require("fuzzy")},function(e,t){e.exports=require("request-promise-native")},function(e,t){e.exports=require("os")},function(e,t){e.exports=require("jsonwebtoken")},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1)),s=i(n(5)),u=i(n(44)),c=i(n(2));var l;a.registerPrompt("autocomplete",s.default),function(e){e[e.ROTATE_KEYS=0]="ROTATE_KEYS"}(l||(l={})),t.default=()=>o(void 0,void 0,void 0,(function*(){const{action:e}=yield a.prompt([{name:"action",type:"list",message:c.default.LABEL("Select action:"),choices:[{name:"Rotate keys",value:l.ROTATE_KEYS}]}]);if(e!==l.ROTATE_KEYS)throw new Error(`Unknown action ${e}`);yield u.default()}))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=r(n(1)),s=r(n(0)),u=n(8),c=i(n(5)),l=i(n(6)),d=n(3),f=i(n(2)),p=n(7);var m;a.registerPrompt("autocomplete",c.default),function(e){e[e.ROTATE_SPECIFIC=0]="ROTATE_SPECIFIC",e[e.ROTATE_ALL=1]="ROTATE_ALL"}(m||(m={}));t.default=()=>o(void 0,void 0,void 0,(function*(){const{action:e}=yield a.prompt([{name:"action",type:"list",message:f.default.LABEL("Select action:"),choices:[{name:"Rotate SPECIFIC",value:m.ROTATE_SPECIFIC},{name:"Rotate ALL",value:m.ROTATE_ALL}]}]);switch(e){case m.ROTATE_SPECIFIC:yield(()=>o(void 0,void 0,void 0,(function*(){const e=yield u.getOwners(),{bitbucketAccount:t}=yield a.prompt([{name:"bitbucketAccount",type:"autocomplete",message:"Select bitbucket account:",source:e}]),n=new l.default.Bar({},l.default.Presets.shades_classic),o=[p.wrapper(u.getAccounts(t),n)];n.start(o.length,0);const[r]=yield Promise.all(o);n.stop();const{accountId:i}=yield a.prompt([{type:"autocomplete",name:"accountId",message:f.default.LABEL("Select account (for deployment):"),source:r}]);i&&(yield d.rotateKeys([i]),s.info(`Rotation of keys for ${i} has been initiated, see logs fo