@cmflow/cli 3.4.0-beta.16 → 3.4.0-beta.19

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/dist/bin/cm.mjs CHANGED
@@ -37058,7 +37058,7 @@ async function getSortedReleases(projectId, component, tagVersion) {
37058
37058
  const [current, ...others] = await Promise.all(promises);
37059
37059
  return [current, ...others.filter((release) => {
37060
37060
  return !release?.released;
37061
- })].filter(Boolean).reverse();
37061
+ })].filter((release) => Boolean(release)).reverse();
37062
37062
  }
37063
37063
  //#endregion
37064
37064
  //#region src/commands/jira-releases.ts
package/dist/index.mjs CHANGED
@@ -16,7 +16,7 @@ Arguments: `+Array.prototype.slice.call(i).join(``)+`
16
16
  `).some(e=>e.indexOf(`(https.js:`)!==-1||e.indexOf(`node:https:`)!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let t=new o.Socket({writable:!1});return this.sockets[e].push(t),this.totalSocketCount++,t}decrementSockets(e,t){if(!this.sockets[e]||t===null)return;let n=this.sockets[e],r=n.indexOf(t);r!==-1&&(n.splice(r,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?c.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,t,n){let r={...t,secureEndpoint:this.isSecureEndpoint(t)},i=this.getName(r),a=this.incrementSockets(i);Promise.resolve().then(()=>this.connect(e,r)).then(o=>{if(this.decrementSockets(i,a),o instanceof s.Agent)try{return o.addRequest(e,r)}catch(e){return n(e)}this[l].currentSocket=o,super.createSocket(e,t,n)},e=>{this.decrementSockets(i,a),n(e)})}createConnection(){let e=this[l].currentSocket;if(this[l].currentSocket=void 0,!e)throw Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[l].defaultPort??(this.protocol===`https:`?443:80)}set defaultPort(e){this[l]&&(this[l].defaultPort=e)}get protocol(){return this[l].protocol??(this.isSecureEndpoint()?`https:`:`http:`)}set protocol(e){this[l]&&(this[l].protocol=e)}}})),qt=r((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.parseProxyResponse=void 0;let n=(0,t(j()).default)(`https-proxy-agent:parse-proxy-response`);function r(e){return new Promise((t,r)=>{let i=0,a=[];function o(){let t=e.read();t?u(t):e.once(`readable`,o)}function s(){e.removeListener(`end`,c),e.removeListener(`error`,l),e.removeListener(`readable`,o)}function c(){s(),n(`onend`),r(Error(`Proxy connection ended before receiving CONNECT response`))}function l(e){s(),n(`onerror %o`,e),r(e)}function u(c){a.push(c),i+=c.length;let l=Buffer.concat(a,i),u=l.indexOf(`\r
17
17
  \r
18
18
  `);if(u===-1){n(`have not received end of HTTP headers yet...`),o();return}let d=l.slice(0,u).toString(`ascii`).split(`\r
19
- `),f=d.shift();if(!f)return e.destroy(),r(Error(`No header received from proxy CONNECT response`));let p=f.split(` `),m=+p[1],h=p.slice(2).join(` `),g={};for(let t of d){if(!t)continue;let n=t.indexOf(`:`);if(n===-1)return e.destroy(),r(Error(`Invalid header from proxy CONNECT response: "${t}"`));let i=t.slice(0,n).toLowerCase(),a=t.slice(n+1).trimStart(),o=g[i];typeof o==`string`?g[i]=[o,a]:Array.isArray(o)?o.push(a):g[i]=a}n(`got proxy server response: %o %o`,f,g),s(),t({connect:{statusCode:m,statusText:h,headers:g},buffered:l})}e.on(`error`,l),e.on(`end`,c),o()})}e.parseProxyResponse=r})),Jt=r((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),r=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),i=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var i in e)i!=="default"&&Object.prototype.hasOwnProperty.call(e,i)&&t(n,e,i);return r(n,e),n},a=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.HttpsProxyAgent=void 0;let o=i(n(`net`)),s=i(n(`tls`)),c=a(n(`assert`)),l=a(j()),u=Kt(),d=n(`url`),f=qt(),p=(0,l.default)(`https-proxy-agent`),m=e=>e.servername===void 0&&e.host&&!o.isIP(e.host)?{...e,servername:e.host}:e;var h=class extends u.Agent{constructor(e,t){super(t),this.options={path:void 0},this.proxy=typeof e==`string`?new d.URL(e):e,this.proxyHeaders=t?.headers??{},p(`Creating new HttpsProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={ALPNProtocols:[`http/1.1`],...t?_(t,`headers`):null,host:n,port:r}}async connect(e,t){let{proxy:n}=this;if(!t.host)throw TypeError(`No "host" provided`);let r;n.protocol===`https:`?(p("Creating `tls.Socket`: %o",this.connectOpts),r=s.connect(m(this.connectOpts))):(p("Creating `net.Socket`: %o",this.connectOpts),r=o.connect(this.connectOpts));let i=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders},a=o.isIPv6(t.host)?`[${t.host}]`:t.host,l=`CONNECT ${a}:${t.port} HTTP/1.1\r\n`;if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;i[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}i.Host=`${a}:${t.port}`,i[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let e of Object.keys(i))l+=`${e}: ${i[e]}\r\n`;let u=(0,f.parseProxyResponse)(r);r.write(`${l}\r\n`);let{connect:d,buffered:h}=await u;if(e.emit(`proxyConnect`,d),this.emit(`proxyConnect`,d,e),d.statusCode===200)return e.once(`socket`,g),t.secureEndpoint?(p(`Upgrading socket connection to TLS`),s.connect({..._(m(t),`host`,`path`,`port`),socket:r})):r;r.destroy();let v=new o.Socket({writable:!1});return v.readable=!0,e.once(`socket`,e=>{p(`Replaying proxy buffer for failed request`),(0,c.default)(e.listenerCount(`data`)>0),e.push(h),e.push(null)}),v}};h.protocols=[`http`,`https`],e.HttpsProxyAgent=h;function g(e){e.resume()}function _(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}}))();const{HTTPS_PROXY:Yt}=_(),Xt=e=>{if(Yt)return console.debug({message:`Using proxy agent for ${e.callee} requests`,value:Yt}),new Jt.HttpsProxyAgent(Yt,e)};async function Zt(e,t={}){let{callee:n,headers:r,method:i=`get`,params:a={},rejectUnauthorized:o,...s}=t,c=Xt({rejectUnauthorized:o,callee:n}),l=ie.create();Wt(l,t);try{let t=await l({url:e,method:i,params:a,headers:{...r,"Content-Type":`application/json`},httpsAgent:c,...s});return console.info({message:`Successfully retrieved data from ${n}`,url:e,method:i.toUpperCase(),status:t.status}),t.data}catch(r){let a=r,o=a.response?.status,s=a.response?.data;throw console.error({...t,message:`Fail to retrieved data from ${n}`,url:e,method:i.toUpperCase(),status:o,response:s}),Error(`HTTP error! status: ${o}`)}}async function Qt(e,t,n={}){let{DIRECTUS_URL:r,DIRECTUS_FLOW_ID:i,DIRECTUS_ACCESS_TOKEN:a}=_(),o=`${r}/flows/trigger/${i}`,s={method:`post`,callee:`DIRECTUS`,headers:{Authorization:`Bearer ${a}`,"Content-Type":`application/json`},data:{projectId:e,versions:t},retries:3,retryDelay:Wt.exponentialDelay,...n};return s.data&&s.headers?.[`Content-Type`]===`application/json`&&(s.data=JSON.stringify(s.data)),Zt(o,s)}var $t=e(ce(),1);async function en(e,t={}){let{JIRA_API:n,JIRA_TOKEN:r,JIRA_EMAIL:i}=_(),a=`${n}${e}`,o=Buffer.from(`${i}:${r}`).toString(`base64`);return Zt(a,{...t,callee:`JIRA`,headers:{...t.headers,Authorization:`Basic ${o}`},retries:3,retryDelay:Wt.exponentialDelay})}async function tn(e){let t=await en(`/rest/api/3/project/${e}/versions?expand`);return!t||!Array.isArray(t)?[]:t}async function nn(e){let t=`/rest/api/3/version/${e.id}`;try{await en(t,{method:`put`,headers:{"Content-Type":`application/json`,Accept:`application/json`},data:{id:e.id,description:e.description,name:e.name,archived:e.archived,released:e.released,projectId:e.projectId,releaseDate:e.releaseDate}})}catch(t){console.log(`Error while updating jira release ${e.id}`,t)}}async function rn(e,t,n){let r=(await tn(e)).filter(e=>{e.version=e.name.replace(t+`-`,``).replace(`version-`,``).replace(`v`,``);try{return $t.default.lte(e.version,n)}catch{return!1}}).sort((e,t)=>$t.default.rcompare(e.version,t.version)),[i,...a]=await Promise.all(r);return[i,...a.filter(e=>!e?.released)].filter(Boolean).reverse()}var an=class{mapContext(e,t){return{...t,projectId:e.projectId,update:e.update,component:e.component,tag:e.tag?.replace(/^version-/,``).replace(/^v/,``)}}getTasks(e){return e.tag?[{title:`List all releases under ${e.tag} for ${e.component} component and ${e.projectId} project`,task:async()=>{e.releases=(await rn(e.projectId??``,e.component??``,e.tag??``)).filter(Boolean).filter(e=>e.released===!1)}},{title:`Update ${e.tag} on ${e.component} component`,skip:()=>!e.update||(e.releases?.length??0)===0,task:async()=>{for(let t of e.releases??[])t.released=!0,t.releaseDate=(0,Ct.default)().format(`YYYY-MM-DD`),await nn(t)}},{title:`Trigger CMS API Workflow`,skip:()=>!_().CAN_TRIGGER_WORKFLOW||(e.releases?.length??0)===0,task:()=>Qt(e.projectId??``,(e.releases??[]).map(({version:e})=>e))}]:(console.log(F.default.red(I.default.cross),`Missing tag version. Skipping release notes generation`),[])}};function on(e){let{logger:t,config:{SCM_TOKEN:n,REPOSITORY_URL:r,ORIGIN:a}}=e;if(n){let e=(r||``).replace(`https://`,``);t.info(`Configure remote repository ${e}`),i.remote(`remove`,a).sync(),i.remote(`add`,a,`https://${n}@${e}`).sync()}}async function sn(e){let{logger:t,branch:n,config:{PRODUCTION_BRANCH:r,ORIGIN:a}}=e;t.info(`Branch ${n.name} is candidate to MEP`),i.reset(`--hard`),i.clean(`-f`,`-d`).sync(),t.info(`Checkout production branch`),i.config(`--replace-all`,`remote.origin.fetch`,`+refs/heads/*:refs/remotes/origin/*`),i.fetch().sync(),i.fetch(`--tags`).sync(),i.checkout(`-qf`,r).sync(),t.info(`Current branch: ${r}`);let o=i.getLastCommitMsg();t.info(`Last commit message on production`,o),t.info(`Merge ${n.name} into ${r} branch`),i.merge(`--no-ff`,`-m`,`${n.name}`,n.name),t.info(`${n.name} merged into ${r} branch`),on(e),t.info(`Push ${r} branch`),await i.push(a,r),t.info(`${r} branch pushed`),t.info(`Remove ${a}/${n.name} branch`),await i.push(a,`:`+n.name),t.info(`${a}/${n.name} branch correctly removed`)}function cn(e){let{BRANCH_NAME:t,PRODUCTION_BRANCH:n}=e.config;return{title:`Merge ${t} into ${n}`,task:async()=>{await sn(e)}}}var ln=class{constructor(){this.lastCommitMessage=``}getTasks(e){let{RELEASE_CANDIDATE_TAG:t}=e;return this.lastCommitMessage=i.getLastCommitMsg(),this.lastCommitMessage.includes(t)?[cn(e)]:[]}success(e){let{RELEASE_CANDIDATE_TAG:t}=e;this.lastCommitMessage.includes(t)?e.logger.info(F.default.green(I.default.tick),`Branch`,F.default.green(e.BRANCH_NAME),`merged into ${e.PRODUCTION_BRANCH}`):(e.logger.info(F.default.green(I.default.tick),`Merge branch`,F.default.green(e.BRANCH_NAME),`into ${e.PRODUCTION_BRANCH} not required`),e.logger.info(F.default.green(I.default.tick),`Last commit message:`,F.default.green(this.lastCommitMessage),`does not contain ${t}`))}},un=r((e=>{var t=class extends Error{constructor(e,t,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},n=class extends t{constructor(e){super(1,`commander.invalidArgument`,e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};e.CommanderError=t,e.InvalidArgumentError=n})),dn=r((e=>{let{InvalidArgumentError:t}=un();var n=class{constructor(e,t){switch(this.description=t||``,this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case`<`:this.required=!0,this._name=e.slice(1,-1);break;case`[`:this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e}this._name.length>3&&this._name.slice(-3)===`...`&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(e,n)=>{if(!this.argChoices.includes(e))throw new t(`Allowed choices are ${this.argChoices.join(`, `)}.`);return this.variadic?this._concatValue(e,n):e},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function r(e){let t=e.name()+(e.variadic===!0?`...`:``);return e.required?`<`+t+`>`:`[`+t+`]`}e.Argument=n,e.humanReadableArgName=r})),fn=r((e=>{let{humanReadableArgName:t}=dn();e.Help=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(e=>!e._hidden),n=e._getHelpCommand();return n&&!n._hidden&&t.push(n),this.sortSubcommands&&t.sort((e,t)=>e.name().localeCompare(t.name())),t}compareOptions(e,t){let n=e=>e.short?e.short.replace(/^-/,``):e.long.replace(/^--/,``);return n(e).localeCompare(n(t))}visibleOptions(e){let t=e.options.filter(e=>!e.hidden),n=e._getHelpOption();if(n&&!n.hidden){let r=n.short&&e._findOption(n.short),i=n.long&&e._findOption(n.long);!r&&!i?t.push(n):n.long&&!i?t.push(e.createOption(n.long,n.description)):n.short&&!r&&t.push(e.createOption(n.short,n.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let n=e.parent;n;n=n.parent){let e=n.options.filter(e=>!e.hidden);t.push(...e)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||``}),e.registeredArguments.find(e=>e.description)?e.registeredArguments:[]}subcommandTerm(e){let n=e.registeredArguments.map(e=>t(e)).join(` `);return e._name+(e._aliases[0]?`|`+e._aliases[0]:``)+(e.options.length?` [options]`:``)+(n?` `+n:``)}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((e,n)=>Math.max(e,t.subcommandTerm(n).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((e,n)=>Math.max(e,t.optionTerm(n).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((e,n)=>Math.max(e,t.optionTerm(n).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((e,n)=>Math.max(e,t.argumentTerm(n).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+`|`+e._aliases[0]);let n=``;for(let t=e.parent;t;t=t.parent)n=t.name()+` `+n;return n+t+` `+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(e=>JSON.stringify(e)).join(`, `)}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue==`boolean`)&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(`, `)})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(e=>JSON.stringify(e)).join(`, `)}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let n=`(${t.join(`, `)})`;return e.description?`${e.description} ${n}`:n}return e.description}formatHelp(e,t){let n=t.padWidth(e,t),r=t.helpWidth||80;function i(e,i){if(i){let a=`${e.padEnd(n+2)}${i}`;return t.wrap(a,r-2,n+2)}return e}function a(e){return e.join(`
19
+ `),f=d.shift();if(!f)return e.destroy(),r(Error(`No header received from proxy CONNECT response`));let p=f.split(` `),m=+p[1],h=p.slice(2).join(` `),g={};for(let t of d){if(!t)continue;let n=t.indexOf(`:`);if(n===-1)return e.destroy(),r(Error(`Invalid header from proxy CONNECT response: "${t}"`));let i=t.slice(0,n).toLowerCase(),a=t.slice(n+1).trimStart(),o=g[i];typeof o==`string`?g[i]=[o,a]:Array.isArray(o)?o.push(a):g[i]=a}n(`got proxy server response: %o %o`,f,g),s(),t({connect:{statusCode:m,statusText:h,headers:g},buffered:l})}e.on(`error`,l),e.on(`end`,c),o()})}e.parseProxyResponse=r})),Jt=r((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),r=e&&e.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),i=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var i in e)i!=="default"&&Object.prototype.hasOwnProperty.call(e,i)&&t(n,e,i);return r(n,e),n},a=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.HttpsProxyAgent=void 0;let o=i(n(`net`)),s=i(n(`tls`)),c=a(n(`assert`)),l=a(j()),u=Kt(),d=n(`url`),f=qt(),p=(0,l.default)(`https-proxy-agent`),m=e=>e.servername===void 0&&e.host&&!o.isIP(e.host)?{...e,servername:e.host}:e;var h=class extends u.Agent{constructor(e,t){super(t),this.options={path:void 0},this.proxy=typeof e==`string`?new d.URL(e):e,this.proxyHeaders=t?.headers??{},p(`Creating new HttpsProxyAgent instance: %o`,this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,``),r=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol===`https:`?443:80;this.connectOpts={ALPNProtocols:[`http/1.1`],...t?_(t,`headers`):null,host:n,port:r}}async connect(e,t){let{proxy:n}=this;if(!t.host)throw TypeError(`No "host" provided`);let r;n.protocol===`https:`?(p("Creating `tls.Socket`: %o",this.connectOpts),r=s.connect(m(this.connectOpts))):(p("Creating `net.Socket`: %o",this.connectOpts),r=o.connect(this.connectOpts));let i=typeof this.proxyHeaders==`function`?this.proxyHeaders():{...this.proxyHeaders},a=o.isIPv6(t.host)?`[${t.host}]`:t.host,l=`CONNECT ${a}:${t.port} HTTP/1.1\r\n`;if(n.username||n.password){let e=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;i[`Proxy-Authorization`]=`Basic ${Buffer.from(e).toString(`base64`)}`}i.Host=`${a}:${t.port}`,i[`Proxy-Connection`]||=this.keepAlive?`Keep-Alive`:`close`;for(let e of Object.keys(i))l+=`${e}: ${i[e]}\r\n`;let u=(0,f.parseProxyResponse)(r);r.write(`${l}\r\n`);let{connect:d,buffered:h}=await u;if(e.emit(`proxyConnect`,d),this.emit(`proxyConnect`,d,e),d.statusCode===200)return e.once(`socket`,g),t.secureEndpoint?(p(`Upgrading socket connection to TLS`),s.connect({..._(m(t),`host`,`path`,`port`),socket:r})):r;r.destroy();let v=new o.Socket({writable:!1});return v.readable=!0,e.once(`socket`,e=>{p(`Replaying proxy buffer for failed request`),(0,c.default)(e.listenerCount(`data`)>0),e.push(h),e.push(null)}),v}};h.protocols=[`http`,`https`],e.HttpsProxyAgent=h;function g(e){e.resume()}function _(e,...t){let n={},r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}}))();const{HTTPS_PROXY:Yt}=_(),Xt=e=>{if(Yt)return console.debug({message:`Using proxy agent for ${e.callee} requests`,value:Yt}),new Jt.HttpsProxyAgent(Yt,e)};async function Zt(e,t={}){let{callee:n,headers:r,method:i=`get`,params:a={},rejectUnauthorized:o,...s}=t,c=Xt({rejectUnauthorized:o,callee:n}),l=ie.create();Wt(l,t);try{let t=await l({url:e,method:i,params:a,headers:{...r,"Content-Type":`application/json`},httpsAgent:c,...s});return console.info({message:`Successfully retrieved data from ${n}`,url:e,method:i.toUpperCase(),status:t.status}),t.data}catch(r){let a=r,o=a.response?.status,s=a.response?.data;throw console.error({...t,message:`Fail to retrieved data from ${n}`,url:e,method:i.toUpperCase(),status:o,response:s}),Error(`HTTP error! status: ${o}`)}}async function Qt(e,t,n={}){let{DIRECTUS_URL:r,DIRECTUS_FLOW_ID:i,DIRECTUS_ACCESS_TOKEN:a}=_(),o=`${r}/flows/trigger/${i}`,s={method:`post`,callee:`DIRECTUS`,headers:{Authorization:`Bearer ${a}`,"Content-Type":`application/json`},data:{projectId:e,versions:t},retries:3,retryDelay:Wt.exponentialDelay,...n};return s.data&&s.headers?.[`Content-Type`]===`application/json`&&(s.data=JSON.stringify(s.data)),Zt(o,s)}var $t=e(ce(),1);async function en(e,t={}){let{JIRA_API:n,JIRA_TOKEN:r,JIRA_EMAIL:i}=_(),a=`${n}${e}`,o=Buffer.from(`${i}:${r}`).toString(`base64`);return Zt(a,{...t,callee:`JIRA`,headers:{...t.headers,Authorization:`Basic ${o}`},retries:3,retryDelay:Wt.exponentialDelay})}async function tn(e){let t=await en(`/rest/api/3/project/${e}/versions?expand`);return!t||!Array.isArray(t)?[]:t}async function nn(e){let t=`/rest/api/3/version/${e.id}`;try{await en(t,{method:`put`,headers:{"Content-Type":`application/json`,Accept:`application/json`},data:{id:e.id,description:e.description,name:e.name,archived:e.archived,released:e.released,projectId:e.projectId,releaseDate:e.releaseDate}})}catch(t){console.log(`Error while updating jira release ${e.id}`,t)}}async function rn(e,t,n){let r=(await tn(e)).filter(e=>{e.version=e.name.replace(t+`-`,``).replace(`version-`,``).replace(`v`,``);try{return $t.default.lte(e.version,n)}catch{return!1}}).sort((e,t)=>$t.default.rcompare(e.version,t.version)),[i,...a]=await Promise.all(r);return[i,...a.filter(e=>!e?.released)].filter(e=>!!e).reverse()}var an=class{mapContext(e,t){return{...t,projectId:e.projectId,update:e.update,component:e.component,tag:e.tag?.replace(/^version-/,``).replace(/^v/,``)}}getTasks(e){return e.tag?[{title:`List all releases under ${e.tag} for ${e.component} component and ${e.projectId} project`,task:async()=>{e.releases=(await rn(e.projectId??``,e.component??``,e.tag??``)).filter(Boolean).filter(e=>e.released===!1)}},{title:`Update ${e.tag} on ${e.component} component`,skip:()=>!e.update||(e.releases?.length??0)===0,task:async()=>{for(let t of e.releases??[])t.released=!0,t.releaseDate=(0,Ct.default)().format(`YYYY-MM-DD`),await nn(t)}},{title:`Trigger CMS API Workflow`,skip:()=>!_().CAN_TRIGGER_WORKFLOW||(e.releases?.length??0)===0,task:()=>Qt(e.projectId??``,(e.releases??[]).map(({version:e})=>e))}]:(console.log(F.default.red(I.default.cross),`Missing tag version. Skipping release notes generation`),[])}};function on(e){let{logger:t,config:{SCM_TOKEN:n,REPOSITORY_URL:r,ORIGIN:a}}=e;if(n){let e=(r||``).replace(`https://`,``);t.info(`Configure remote repository ${e}`),i.remote(`remove`,a).sync(),i.remote(`add`,a,`https://${n}@${e}`).sync()}}async function sn(e){let{logger:t,branch:n,config:{PRODUCTION_BRANCH:r,ORIGIN:a}}=e;t.info(`Branch ${n.name} is candidate to MEP`),i.reset(`--hard`),i.clean(`-f`,`-d`).sync(),t.info(`Checkout production branch`),i.config(`--replace-all`,`remote.origin.fetch`,`+refs/heads/*:refs/remotes/origin/*`),i.fetch().sync(),i.fetch(`--tags`).sync(),i.checkout(`-qf`,r).sync(),t.info(`Current branch: ${r}`);let o=i.getLastCommitMsg();t.info(`Last commit message on production`,o),t.info(`Merge ${n.name} into ${r} branch`),i.merge(`--no-ff`,`-m`,`${n.name}`,n.name),t.info(`${n.name} merged into ${r} branch`),on(e),t.info(`Push ${r} branch`),await i.push(a,r),t.info(`${r} branch pushed`),t.info(`Remove ${a}/${n.name} branch`),await i.push(a,`:`+n.name),t.info(`${a}/${n.name} branch correctly removed`)}function cn(e){let{BRANCH_NAME:t,PRODUCTION_BRANCH:n}=e.config;return{title:`Merge ${t} into ${n}`,task:async()=>{await sn(e)}}}var ln=class{constructor(){this.lastCommitMessage=``}getTasks(e){let{RELEASE_CANDIDATE_TAG:t}=e;return this.lastCommitMessage=i.getLastCommitMsg(),this.lastCommitMessage.includes(t)?[cn(e)]:[]}success(e){let{RELEASE_CANDIDATE_TAG:t}=e;this.lastCommitMessage.includes(t)?e.logger.info(F.default.green(I.default.tick),`Branch`,F.default.green(e.BRANCH_NAME),`merged into ${e.PRODUCTION_BRANCH}`):(e.logger.info(F.default.green(I.default.tick),`Merge branch`,F.default.green(e.BRANCH_NAME),`into ${e.PRODUCTION_BRANCH} not required`),e.logger.info(F.default.green(I.default.tick),`Last commit message:`,F.default.green(this.lastCommitMessage),`does not contain ${t}`))}},un=r((e=>{var t=class extends Error{constructor(e,t,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},n=class extends t{constructor(e){super(1,`commander.invalidArgument`,e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};e.CommanderError=t,e.InvalidArgumentError=n})),dn=r((e=>{let{InvalidArgumentError:t}=un();var n=class{constructor(e,t){switch(this.description=t||``,this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case`<`:this.required=!0,this._name=e.slice(1,-1);break;case`[`:this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e}this._name.length>3&&this._name.slice(-3)===`...`&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(e,n)=>{if(!this.argChoices.includes(e))throw new t(`Allowed choices are ${this.argChoices.join(`, `)}.`);return this.variadic?this._concatValue(e,n):e},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function r(e){let t=e.name()+(e.variadic===!0?`...`:``);return e.required?`<`+t+`>`:`[`+t+`]`}e.Argument=n,e.humanReadableArgName=r})),fn=r((e=>{let{humanReadableArgName:t}=dn();e.Help=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(e=>!e._hidden),n=e._getHelpCommand();return n&&!n._hidden&&t.push(n),this.sortSubcommands&&t.sort((e,t)=>e.name().localeCompare(t.name())),t}compareOptions(e,t){let n=e=>e.short?e.short.replace(/^-/,``):e.long.replace(/^--/,``);return n(e).localeCompare(n(t))}visibleOptions(e){let t=e.options.filter(e=>!e.hidden),n=e._getHelpOption();if(n&&!n.hidden){let r=n.short&&e._findOption(n.short),i=n.long&&e._findOption(n.long);!r&&!i?t.push(n):n.long&&!i?t.push(e.createOption(n.long,n.description)):n.short&&!r&&t.push(e.createOption(n.short,n.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let n=e.parent;n;n=n.parent){let e=n.options.filter(e=>!e.hidden);t.push(...e)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||``}),e.registeredArguments.find(e=>e.description)?e.registeredArguments:[]}subcommandTerm(e){let n=e.registeredArguments.map(e=>t(e)).join(` `);return e._name+(e._aliases[0]?`|`+e._aliases[0]:``)+(e.options.length?` [options]`:``)+(n?` `+n:``)}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((e,n)=>Math.max(e,t.subcommandTerm(n).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((e,n)=>Math.max(e,t.optionTerm(n).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((e,n)=>Math.max(e,t.optionTerm(n).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((e,n)=>Math.max(e,t.argumentTerm(n).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+`|`+e._aliases[0]);let n=``;for(let t=e.parent;t;t=t.parent)n=t.name()+` `+n;return n+t+` `+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(e=>JSON.stringify(e)).join(`, `)}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue==`boolean`)&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(`, `)})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(e=>JSON.stringify(e)).join(`, `)}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let n=`(${t.join(`, `)})`;return e.description?`${e.description} ${n}`:n}return e.description}formatHelp(e,t){let n=t.padWidth(e,t),r=t.helpWidth||80;function i(e,i){if(i){let a=`${e.padEnd(n+2)}${i}`;return t.wrap(a,r-2,n+2)}return e}function a(e){return e.join(`
20
20
  `).replace(/^/gm,` `.repeat(2))}let o=[`Usage: ${t.commandUsage(e)}`,``],s=t.commandDescription(e);s.length>0&&(o=o.concat([t.wrap(s,r,0),``]));let c=t.visibleArguments(e).map(e=>i(t.argumentTerm(e),t.argumentDescription(e)));c.length>0&&(o=o.concat([`Arguments:`,a(c),``]));let l=t.visibleOptions(e).map(e=>i(t.optionTerm(e),t.optionDescription(e)));if(l.length>0&&(o=o.concat([`Options:`,a(l),``])),this.showGlobalOptions){let n=t.visibleGlobalOptions(e).map(e=>i(t.optionTerm(e),t.optionDescription(e)));n.length>0&&(o=o.concat([`Global Options:`,a(n),``]))}let u=t.visibleCommands(e).map(e=>i(t.subcommandTerm(e),t.subcommandDescription(e)));return u.length>0&&(o=o.concat([`Commands:`,a(u),``])),o.join(`
21
21
  `)}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}wrap(e,t,n,r=40){let i=RegExp(`[\\n][ \\f\\t\\v\xA0  -    ]+`);if(e.match(i))return e;let a=t-n;if(a<r)return e;let o=e.slice(0,n),s=e.slice(n).replace(`\r
22
22
  `,`