mejora 1.6.1 → 1.6.2
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/run.mjs +14 -14
- package/package.json +1 -1
package/dist/run.mjs
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as e,c as t,l as n,n as r,r as i,s as a,u as o}from"./config-WGYN8jMV.mjs";import{mkdir as s,readFile as c,writeFile as l}from"node:fs/promises";import*as u from"node:util";import{inspect as d,parseArgs as f,styleText as p}from"node:util";import{env as m}from"node:process";
|
|
3
|
-
`,r=e.snapshot.items.length,i=[`${n}${e.checkId}:`,` Initial baseline created with ${
|
|
4
|
-
`}${e.checkId}:`,...
|
|
5
|
-
`,r=e.snapshot.items.length;return e.duration===void 0?[`${n}${e.checkId} (${
|
|
6
|
-
`)}function
|
|
7
|
-
`)}const
|
|
2
|
+
import{a as e,c as t,l as n,n as r,r as i,s as a,u as o}from"./config-WGYN8jMV.mjs";import{mkdir as s,readFile as c,writeFile as l}from"node:fs/promises";import*as u from"node:util";import{inspect as d,parseArgs as f,styleText as p}from"node:util";import{env as m}from"node:process";function h(e,t){if(!(e===void 0||t===0))return e/t}function g(e){let{results:t,totalDuration:n}=e,r=t.length,i=[],a=[],o=[],s=[],c=0,l=0,u=0,d=0,f=0,p=[];for(let e of t){let t=e.snapshot.items.length;f+=t,e.isInitial?(u+=t,o.push(e.checkId)):(e.hasImprovement&&(c+=e.removedItems.length,i.push(e.checkId)),e.hasRegression&&(l+=e.newItems.length,a.push(e.checkId)),!e.hasImprovement&&!e.hasRegression&&(d+=t,s.push(e.checkId))),p.push({checkId:e.checkId,duration:e.duration,hasImprovement:e.hasImprovement,hasRegression:e.hasRegression,isInitial:e.isInitial,newItems:e.newItems,removedItems:e.removedItems,totalIssues:t})}let m={checks:p,exitCode:e.exitCode,hasImprovement:e.hasImprovement,hasRegression:e.hasRegression,summary:{avgDuration:h(n,r),checksRun:r,improvementChecks:i,improvements:c,initial:u,initialChecks:o,regressionChecks:a,regressions:l,totalIssues:f,unchanged:d,unchangedChecks:s},totalDuration:n};return JSON.stringify(m,null,2)}const _=e=>t=>p(e,typeof t==`number`?t.toString():t),v=_(`blue`),y=_(`bold`),ee=_(`cyan`),b=_(`dim`),x=_(`green`),S=_(`red`),te=_(`gray`);function ne(e){if(e<1e3)return`${e}ms`;let t=e/1e3;if(t<60)return t%1==0?`${t}s`:`${t.toFixed(1)}s`;let n=e/6e4;if(n<60)return n%1==0?`${n}m`:`${n.toFixed(1)}m`;let r=e/36e5;return r%1==0?`${r}h`:`${r.toFixed(1)}h`}function C(e){let t=Math.round(e);return t<1?`<1ms`:ne(t)}function w(e,t){return e===1?t:`${t}s`}function T(e,t=10){let n=[],r=e.slice(0,t);for(let e of r)n.push(` ${b(e)}`);let i=e.length-t;return i>0&&n.push(` ${b(`... and ${i} more`)}`),n}function re(e){return e===void 0?[]:[` ${b(`Duration`)} ${C(e)}`]}function ie(e){return[` ${b(`Issues`)} ${y(e)}`]}function E(e){return[...re(e.duration),...ie(e.snapshot.items.length)]}function D(e){if(!e.hasRegression)return[];let t=e.newItems.length;return[` ${S(t)} new ${w(t,`issue`)} (${w(t,`regression`)}):`,...T(e.newItems)]}function O(e){if(!e.hasImprovement)return[];let t=e.removedItems.length;return[` ${x(t)} ${w(t,`issue`)} fixed (${w(t,`improvement`)}):`,...T(e.removedItems)]}function k(e,t){let n=t?``:`
|
|
3
|
+
`,r=e.snapshot.items.length,i=[`${n}${e.checkId}:`,` Initial baseline created with ${v(r)} ${w(r,`issue`)}`];return e.snapshot.items.length>0&&i.push(...T(e.snapshot.items)),i.push(``,...E(e)),i}function ae(e,t){return[`${t?``:`
|
|
4
|
+
`}${e.checkId}:`,...D(e),...O(e),``,...E(e)]}function oe(e,t){let n=t?``:`
|
|
5
|
+
`,r=e.snapshot.items.length;return e.duration===void 0?[`${n}${e.checkId} (${y(r)})`]:[`${n}${e.checkId} (${y(r)}) ${b(C(e.duration))}`]}function se(e,t){return e.isInitial?k(e,t):e.hasRegression||e.hasImprovement?ae(e,t):oe(e,t)}function ce(e,t){return t?v(`✔ Initial baseline created successfully`):e.hasRegression?`${S(`✗ Regressions detected`)} - Run failed`:e.hasImprovement?`${x(`✔ Improvements detected`)} - Baseline updated`:x(`✔ All checks passed`)}function le(e){let t={hasAnyInitial:!1,totalImprovements:0,totalInitial:0,totalIssues:0,totalRegressions:0,totalUnchanged:0};for(let n of e.results){let e=n.snapshot.items.length;if(t.totalIssues+=e,n.isInitial){t.hasAnyInitial=!0,t.totalInitial+=e;continue}let{hasImprovement:r,hasRegression:i}=n;r&&(t.totalImprovements+=n.removedItems.length),i&&(t.totalRegressions+=n.newItems.length),!r&&!i&&(t.totalUnchanged+=e)}let n=[` ${b(`Improvements`)} ${x(t.totalImprovements)}`,` ${b(`Regressions`)} ${S(t.totalRegressions)}`,` ${b(`Unchanged`)} ${t.totalUnchanged}`,` ${b(`Initial`)} ${v(t.totalInitial)}`,` ${b(`Checks`)} ${e.results.length}`,` ${b(`Issues`)} ${y(t.totalIssues)}`],r=h(e.totalDuration,e.results.length);return e.totalDuration!==void 0&&r!==void 0&&n.push(` ${b(`Duration`)} ${C(e.totalDuration)} ${te(`(avg ${C(r)})`)}`),n.push(``,ce(e,t.hasAnyInitial)),n.join(`
|
|
6
|
+
`)}function ue(e){let t=[];for(let[n,r]of e.results.entries())t.push(...se(r,n===0));return t.length>0&&t.push(``),t.push(le(e)),t.join(`
|
|
7
|
+
`)}const A=e=>e in m&&m[e]!==`0`&&m[e]!==`false`;var j=A(`CI`)||A(`CONTINUOUS_INTEGRATION`);const de=[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`],M=`\x1B[?25h`,N=`\r\x1B[K`,fe={succeed:`✔`,fail:`✖`,warn:`!`,info:`ℹ`},P={succeed:`green`,fail:`red`,warn:`yellow`,info:`blue`,spinner:`cyan`},pe=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],F=/(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F)(?:\u200d(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F))*/uy,I=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,L=/\p{M}+/uy;function R(e,t){let n=0,r,i=t.length-1;if(e<t[0][0]||e>t[i][1])return!1;for(;i>=n;)if(r=Math.floor((n+i)/2),e>t[r][1])n=r+1;else if(e<t[r][0])i=r-1;else return!0;return!1}function z(e){return e===0||e<32||e>=127&&e<160||R(e,pe)?0:e>=4352&&(e<=4447||e==9001||e==9002||e>=11904&&e<=42191&&e!=12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=131072&&e<=196605||e>=196608&&e<=262141)?2:1}function B(e){let t=0,n=0;for(let r=0;r<e.length;r++){if(n=e[r].charCodeAt(0),n>=32&&n<127){t++;continue}if(I.lastIndex=r,I.test(e)){r=I.lastIndex-1;continue}if(F.lastIndex=r,F.test(e)){r=F.lastIndex-1,t+=2;continue}if(L.lastIndex=r,L.test(e)){r=L.lastIndex-1;continue}t+=z(n)}return t}function me(e,t){let n=e.split(`
|
|
8
8
|
`).length;if(t===1/0)return n;for(let r of e.split(`
|
|
9
|
-
`))n+=Math.max(Math.ceil(
|
|
10
|
-
`:``),r.finished||(t=!1)}this.lastLinesAmt=
|
|
9
|
+
`))n+=Math.max(Math.ceil(B(r)/t)-1,0);return n}var he=class{text;onChange;onFinish;finished=!1;newLineEnding=!0;constructor(e){this.text=e}setText(e){this.text=e,typeof this.onChange==`function`&&this.onChange()}finish(){!this.finished&&typeof this.onFinish==`function`&&this.onFinish(),this.finished=!0}output(){return this.text}disableNewLineEnding(){this.newLineEnding=!1}};const V=new class{hideCursor;components=[];lastLinesAmt=0;terminalWidth=1/0;finishedComponents=0;outputBuffer=``;constructor(e=!0){this.hideCursor=e}addComponent(e){this.components.push(e),e.onChange=this.render.bind(this),e.onFinish=this.onComponentFinish.bind(this),process.stdout.getWindowSize&&(this.terminalWidth=process.stdout.getWindowSize()[0]),this.render()}onComponentFinish(){this.finishedComponents++,this.finishedComponents===this.components.length&&(this._reset(),process.stdout.write(M))}removeComponent(e){this.components=this.components.filter(t=>t!==e),e.onChange=void 0,e.finished&&this.finishedComponents--,this.render()}render(){if(this.outputBuffer=``,this.clear(),this.components.length===0){process.stdout.write(this.outputBuffer),this.hideCursor&&process.stdout.write(M),this.lastLinesAmt=0;return}this.hideCursor&&(this.outputBuffer+=`\x1B[?25l`);let e=``,t=!0;for(let n=0;n<this.components.length;n++){let r=this.components[n];e+=r.output()+(n!==this.components.length-1||r.newLineEnding?`
|
|
10
|
+
`:``),r.finished||(t=!1)}this.lastLinesAmt=me(e,this.terminalWidth),this.outputBuffer+=e,t&&(this._reset(),this.outputBuffer+=M),process.stdout.write(this.outputBuffer)}clear(){for(let e=0;e<this.lastLinesAmt-1;e++)this.outputBuffer+=N+`\x1B[1A`;this.outputBuffer+=N}_reset(){this.components=[],this.lastLinesAmt=0,this.terminalWidth=1/0,this.finishedComponents=0}};var ge=class{running=!1;text=``;currentSymbol;symbolFormatter;interval;frameIndex=0;symbols;frames;component=new he(``);colors;constructor(e=``,{disableNewLineEnding:t,colors:n,frames:r=de,symbols:i={}}={}){this.symbols={...fe,...i},typeof n==`object`?this.colors={...P,...n}:n!==!1&&(this.colors=P),t===!0&&this.component.disableNewLineEnding(),typeof e==`string`&&(e={text:e}),delete e.symbol,this.setDisplay(e,!1),this.frames=r,this.currentSymbol=r[0]}start(e=50){if(this.running)throw Error(`Spinner is already running.`);this.component.finished&&(this.component.finished=!1),this.interval=setInterval(this.tick.bind(this),e),this.running=!0,this.currentSymbol=this.frames[0],this.tick(),V.addComponent(this.component),this.addListeners()}tick(){this.currentSymbol=this.format(this.frames[this.frameIndex++],`spinner`),this.frameIndex===this.frames.length&&(this.frameIndex=0),this.refresh()}onProcessExit=e=>{this.stop();let t;t=e===`SIGTERM`?143:e===`SIGINT`?130:Number(e),process.exit(t)};addListeners(){process.once(`SIGTERM`,this.onProcessExit),process.once(`SIGINT`,this.onProcessExit),process.once(`exit`,this.onProcessExit)}clearListeners(){process.off(`SIGTERM`,this.onProcessExit),process.off(`SIGINT`,this.onProcessExit),process.off(`exit`,this.onProcessExit)}refresh(){let e=this.currentSymbol;this.symbolFormatter&&(e=this.symbolFormatter(e));let t=(e?e+` `:``)+this.text;this.component.setText(t)}setDisplay(e={},t=!0){typeof e.symbol==`string`&&(typeof e.symbolType==`string`?this.currentSymbol=this.format(e.symbol,e.symbolType):this.currentSymbol=e.symbol),typeof e.text==`string`&&this.setText(e.text,!1),e.symbolFormatter&&(this.symbolFormatter=e.symbolFormatter),t&&this.refresh(),typeof e.symbol==`string`&&this.end()}setText(e,t=!0){this.text=this.format(e,`text`),this.running&&t&&this.refresh()}succeed(e){typeof e==`string`?this.setDisplay({text:e,symbol:this.symbols.succeed,symbolType:`succeed`}):this.setDisplay({...e,symbol:this.symbols.succeed,symbolType:`succeed`})}fail(e){typeof e==`string`?this.setDisplay({text:e,symbol:this.symbols.fail,symbolType:`fail`}):this.setDisplay({...e,symbol:this.symbols.fail,symbolType:`fail`})}warn(e){typeof e==`string`?this.setDisplay({text:e,symbol:this.symbols.warn,symbolType:`warn`}):this.setDisplay({...e,symbol:this.symbols.warn,symbolType:`warn`})}info(e){typeof e==`string`?this.setDisplay({text:e,symbol:this.symbols.info,symbolType:`info`}):this.setDisplay({...e,symbol:this.symbols.info,symbolType:`info`})}stop(){this.end(!1)}end(e=!0){clearInterval(this.interval),this.clearListeners(),e?this.component.finish():V.removeComponent(this.component),this.running=!1}format(e,t){if(this.colors===void 0)return e;let n=this.colors[t];return n&&u.styleText!==void 0?u.styleText(n,e):e}};function _e(e,t){let n=e;for(let e=0;e<t&&n.includes(`}`);e++){let e=n.lastIndexOf(`}`);n=n.slice(0,e)+n.slice(e+1)}return n}function ve(e,t){return`${e}\n${` }`.repeat(t)}`}function ye(e){let t=0,n=0;for(let r of e)r===`{`&&t++,r===`}`&&n++;if(t===n)return e;let r=Math.abs(t-n);return n>t?_e(e,r):ve(e,r)}function be(e){let t=e.trim();return ye(t.endsWith(`,`)?t.slice(0,-1):t)}function xe(e){return`{
|
|
11
11
|
"version": 1,
|
|
12
12
|
${e}
|
|
13
|
-
}`}function
|
|
13
|
+
}`}function Se(e){if(e.checks)return e;let t={};for(let[n,r]of Object.entries(e))n!==`version`&&(t[n]=r);return{checks:t,version:1}}function H(e){try{let t=xe(be(e));return Se(JSON.parse(t))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse baseline during conflict resolution: ${t}`,{cause:e})}}function Ce(e){let t=[...e.matchAll(/<<<<<<< .*\n([\s\S]*?)\n=======\n([\s\S]*?)\n>>>>>>> .*$/gm)];if(t.length===0)throw Error(`Could not parse conflict markers in baseline`);return t.map(([,e=``,t=``])=>({ours:e,theirs:t}))}function we(e){let t=new Set;for(let n of e)for(let e of Object.keys(n.checks))t.add(e);return t}function Te(e,t){let n=new Set;for(let r of e){let e=r.checks[t];if(e?.items)for(let t of e.items)n.add(t)}return[...n].toSorted()}function Ee(e){let t={checks:{},version:1},n=we(e);for(let r of n)t.checks[r]={items:Te(e,r),type:`items`};return t}function De(e){let t=Ce(e),n=[];for(let{ours:e,theirs:r}of t)n.push(H(e),H(r));return Ee(n)}const U=`__unparsable__`;function Oe(e){return e.replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`[`,`[`).replaceAll(`]`,`]`)}function W(e){if(!e)return{filePath:void 0,line:void 0};let t=/^(.+?):(\d+)(?::\d+)?$/.exec(e);return t?{filePath:t[1],line:t[2]}:{filePath:e,line:void 0}}function G(e){let[t,...n]=e.split(` - `);return{description:n.join(` - `),pathWithLocation:t}}function K(e,t){return o(t,e)}function q(e,t,n){let r=o(t,e);return n?`${r}#L${n}`:r}function J(e,t){return`[${e}](${t})`}function ke(e,t,n,r){let{description:i,pathWithLocation:a}=G(e),{line:o}=W(a),s=K(t,n),c=q(t,r,o);return`- ${J(o?`Line ${o}`:s,c)}${i?` - ${Oe(i)}`:``}\n`}function Ae(e){let t=Object.groupBy(e,e=>{let{pathWithLocation:t}=G(e),{filePath:n=U}=W(t);return n});return Object.entries(t).map(([e,t=[]])=>({filePath:e,items:t})).toSorted((e,t)=>e.filePath===U?1:t.filePath===U?-1:e.filePath.localeCompare(t.filePath))}function je(e){let t=`\n### Other Issues (${e.length})\n\n`;for(let n of e)t+=`- ${n}\n`;return`${t}\n`}function Me(e,t,n){if(e.filePath===U)return je(e.items);let r=`\n### ${J(K(e.filePath,t),q(e.filePath,n))} (${e.items.length})\n\n`;for(let i of e.items)r+=ke(i,e.filePath,t,n);return`${r}\n`}function Ne(e,t,n,r){let i=t.length,a=`\n## ${e} (${i} ${w(i,`issue`)})\n\n`;if(t.length===0)return`${a}No issues\n`;let o=Ae(t);for(let e of o)a+=Me(e,n,r);return a}function Pe(e){return`${e.replaceAll(/\n{3,}/g,`
|
|
14
14
|
|
|
15
|
-
`).trimEnd()}\n`}function
|
|
16
|
-
`;for(let[i,{items:a=[]}]of Object.entries(e.checks))r+=
|
|
17
|
-
`).slice(1).map(e=>
|
|
15
|
+
`).trimEnd()}\n`}function Fe(e,t){let n=process.cwd(),r=`# Mejora Baseline
|
|
16
|
+
`;for(let[i,{items:a=[]}]of Object.entries(e.checks))r+=Ne(i,a,n,t);return Pe(r)}const Ie=(e,t)=>{if(!t)return!1;let n=e.items??[],r=t.items??[];if(n.length!==r.length)return!1;let i=n.toSorted(),a=r.toSorted();return i.every((e,t)=>e===a[t])};function Le(e){let t=[e.message];if(e.stack){let n=e.stack.split(`
|
|
17
|
+
`).slice(1).map(e=>b(e.trim())).join(`
|
|
18
18
|
`);t.push(n)}return t.join(`
|
|
19
|
-
`)}function
|
|
19
|
+
`)}function Y(...e){return e.map(e=>typeof e==`string`?e:e instanceof Error?Le(e):d(e,{colors:!1,depth:10})).join(` `)}const X={error:(...e)=>{console.error(S(`✖`),Y(...e))},log:(...e)=>{console.log(Y(...e))},start:(...e)=>{console.log(ee(`◐`),Y(...e))},success:(...e)=>{console.log(x(`✔`),Y(...e))}};var Z=class e{baselinePath;constructor(e=`.mejora/baseline.json`){this.baselinePath=e}static create(e){return{checks:e,version:1}}static getEntry(e,t){return e?.checks[t]}static update(t,n,r){let i=t??e.create({}),a=i.checks[n];return Ie(r,a)?i:{...i,checks:{...i.checks,[n]:r}}}async load(){try{let e=await c(this.baselinePath,`utf8`);if(e.includes(`<<<<<<<`)){X.start(`Merge conflict detected in baseline, auto-resolving...`);let t=De(e);return await this.save(t,!0),X.success(`Baseline conflict resolved`),t}return JSON.parse(e)}catch(e){if(e.code===`ENOENT`)return null;throw e}}async save(e,t=!1){if(j&&!t)return;let r=`${JSON.stringify(e,null,2)}\n`,i=this.baselinePath.replace(`.json`,`.md`),a=Fe(e,n(this.baselinePath));await s(n(this.baselinePath),{recursive:!0}),await Promise.all([l(this.baselinePath,r,`utf8`),l(i,a,`utf8`)])}};function Re(){return{hasImprovement:!1,hasRegression:!1,isInitial:!0,newItems:[],removedItems:[]}}function Q(e,t){return{hasImprovement:t.length>0,hasRegression:e.length>0,isInitial:!1,newItems:e.toSorted(),removedItems:t.toSorted()}}function ze(e,t){let n=[];for(let r of e)t.has(r)||n.push(r);return n}function Be(e,t){let n=[];for(let r of t)e.has(r)||n.push(r);return n}function Ve(e,t){let n=new Set(e.items),r=new Set(t.items);return Q(ze(n,r),Be(n,r))}function He(e,t){return t?Ve(e,t):Re()}var Ue=class n{baselineManager;isCI;constructor(e,t=j){this.baselineManager=new Z(e),this.isCI=t}static filterChecks(e,t){let r={...e};if(t.only){let e=n.resolveRegex(t.only,`--only`);r=Object.fromEntries(Object.entries(r).filter(([t])=>e.test(t)))}if(t.skip){let e=n.resolveRegex(t.skip,`--skip`);r=Object.fromEntries(Object.entries(r).filter(([t])=>!e.test(t)))}return r}static resolveRegex(e,t){try{return new RegExp(e)}catch{throw Error(`Invalid regex pattern for ${t}: "${e}"`)}}static async runCheck(n){return n.type===`eslint`?(await t(),a(n)):(await e(),i(n))}async run(e,t={}){let r=performance.now(),i=await this.baselineManager.load(),a=[],o=!1,s=!1,c=!1,l=i,u=n.filterChecks(e.checks,t),d=!t.json&&!this.isCI&&process.stdout.isTTY;for(let[e,f]of Object.entries(u)){let u=d?new ge(`Running ${e}...`):null;try{u?u.start():X.start(`Running ${e}...`);let r=performance.now(),d=await n.runCheck(f),p=performance.now()-r,m=Z.getEntry(i,e),h=He(d,m),g={baseline:m,checkId:e,duration:p,hasImprovement:h.hasImprovement,hasRegression:h.hasRegression,isInitial:h.isInitial,newItems:h.newItems,removedItems:h.removedItems,snapshot:d};a.push(g),h.hasRegression&&(o=!0),h.hasImprovement&&(s=!0),h.isInitial&&(c=!0),(h.hasImprovement||t.force||h.isInitial)&&(l=Z.update(l,e,{items:d.items,type:d.type})),u?u.succeed(`${e} complete`):X.success(`${e} complete`)}catch(t){return u?u.fail(`${e} failed`):X.error(`${e} failed`),X.error(`Error running check "${e}":`,t),{exitCode:2,hasImprovement:!1,hasRegression:!0,results:a,totalDuration:performance.now()-r}}}l&&l!==i&&(!o||t.force||c)&&await this.baselineManager.save(l,t.force);let f=0;o&&!t.force&&(f=1);let p=performance.now()-r;return{exitCode:f,hasImprovement:s,hasRegression:o,results:a,totalDuration:p}}};const{values:$}=f({allowPositionals:!1,options:{force:{default:!1,short:`f`,type:`boolean`},help:{short:`h`,type:`boolean`},json:{default:!1,type:`boolean`},only:{type:`string`},skip:{type:`string`}},strict:!0});$.help&&(X.log(`
|
|
20
20
|
mejora - Prevent regressions by allowing only improvement
|
|
21
21
|
|
|
22
22
|
Usage:
|
|
@@ -35,4 +35,4 @@ Examples:
|
|
|
35
35
|
mejora --json
|
|
36
36
|
mejora --only "eslint > *"
|
|
37
37
|
mejora --skip typescript
|
|
38
|
-
`),process.exit(0));try{let e=new
|
|
38
|
+
`),process.exit(0));try{let e=new Ue,t=await r(),n=await e.run(t,{force:$.force,json:$.json,only:$.only,skip:$.skip});$.json?X.log(g(n)):(X.log(``),X.log(ue(n))),process.exit(n.exitCode)}catch(e){e instanceof Error?X.error(e.message):X.error(e),process.exit(2)}export{};
|