mejora 3.0.1 → 3.0.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/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import{t as e}from"./config-C0qrgNuO.mjs";import{a as t,c as n,i as r,o as i,s as a,t as o}from"./hash-BaLFZO2A.mjs";import{glob as s,mkdir as c,readFile as l,stat as u,writeFile as d}from"node:fs/promises";import{createReadStream as f}from"node:fs";import{createInterface as p}from"node:readline/promises";function m(e){let{defaults:t,type:n}=e,r=()=>{let t={async run(t){let{type:n,...r}=t;return{items:await e.run(r),type:`items`}},type:n};return e.setup&&(t.setup=e.setup),e.validate&&(t.validate=e.validate),t};return e=>{let{name:i,...a}=e;return{__runnerFactory:r,config:{type:n,...t,...a},id:i}}}function h(){let e=new WeakSet;return(t,n)=>{if(n&&typeof n==`object`){if(e.has(n))return`[Circular]`;if(e.add(n),!Array.isArray(n)){let e=n,t={};for(let n of Object.keys(e).toSorted()){let r=e[n];typeof r==`function`||typeof r==`symbol`||(t[n]=r)}return t}}return n}}function g(e){return o(JSON.stringify(e??null,h()))}function _(e,t=process.cwd()){return a(t,`node_modules`,`.cache`,`mejora`,e)}async function v(e){try{let t=await l(e,`utf8`);return JSON.parse(t)}catch{return{}}}async function y(e,t){try{await d(e,JSON.stringify(t,null,2),`utf8`)}catch{}}async function b(e){try{let t=await u(e);return`${t.mtimeMs}-${t.size}`}catch{return null}}const x=m({async run(e){let{ESLint:t}=await import(`eslint`),n=process.cwd(),r=_(`eslint`,n),a=g(e),{concurrency:o,...s}=e,c=new Set;if(s.rules)for(let e of Object.keys(s.rules))c.add(e);let l=c.size>0,u=await new t({cache:!0,cacheLocation:`${r}/${a}.eslintcache`,overrideConfig:s,...!l&&{concurrency:o??`auto`},...l&&{ruleFilter:({ruleId:e})=>c.has(e)}}).lintFiles(s.files),d=[];for(let{filePath:e,messages:t}of u){let r=i(n,e);for(let{column:e,line:n,message:i,ruleId:a}of t)a&&d.push({column:e,file:r,line:n,message:i,rule:a})}return d},async setup(){let e=_(`eslint`,process.cwd()),{mkdir:t}=await import(`node:fs/promises`);await t(e,{recursive:!0})},type:`eslint`,async validate(){try{await import(`eslint`)}catch{throw Error(`eslint check requires "eslint" package to be installed. Run: npm install eslint`)}}}),S=[`**/node_modules/**`,`**/dist/**`,`**/.git/**`];function C(e,t){if(t?.length)return t;let n=e.map(e=>/^([^*]+\/)/.exec(e)?.[1]).filter(e=>e!==void 0);return[...S,...n.flatMap(e=>S.map(t=>t.replace(/^\*\*\//,e)))]}async function w(e,t,n){let r=Array.from({length:e.length}),i=0;return await Promise.all(Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let t=i++;r[t]=await n(e[t])}})),r}const T=m({async run(e){let n=process.cwd(),r=Array.isArray(e.files)?e.files:[e.files],i=C(r,e.ignore),a=new Set;for(let e of r){let t=s(e,{cwd:n,exclude:i});for await(let e of t)a.add(e)}let o=[...a],c=e.patterns.map(({message:e,pattern:t,rule:n})=>{let r=t.flags.includes(`g`)?t.flags:`${t.flags}g`;return{message:e,regex:new RegExp(t.source,r),ruleText:n??t.source}}),l=t(_(`regex`,n),`${g(e)}.json`),u=await v(l),d={},m=await w(o,e.concurrency??10,async e=>{let r=t(n,e),i=await b(r);if(!i)return[];let a=u[e];if(a?.hash===i)return d[e]=a,a.items;try{let t=[],n=p({crlfDelay:1/0,input:f(r,{encoding:`utf8`})}),a=0;try{for await(let r of n){a++;for(let n of c){n.regex.lastIndex=0;let i;for(;(i=n.regex.exec(r))!==null;){let r=i.index+1,o=typeof n.message==`function`?n.message(i):n.message??`Pattern matched: ${i[0]}`;t.push({column:r,file:e,line:a,message:o,rule:n.ruleText})}}}}finally{n.close()}return d[e]={hash:i,items:t},t}catch{return[]}}),h=[];for(let e of m)h.push(...e);return await y(l,d),h},async setup(){await c(_(`regex`,process.cwd()),{recursive:!0})},type:`regex`});function E(e,t){return e.replaceAll(/import\("([^"]+)"\)/g,(e,n)=>{try{if(r(n)){let e=i(t,n);if(!e.startsWith(`..`))return`import("${e||`.`}")`}}catch{}return e})}const D=m({async run(e){let{createIncrementalCompilerHost:t,createIncrementalProgram:r,findConfigFile:o,flattenDiagnosticMessageText:s,getPreEmitDiagnostics:c,parseJsonConfigFileContent:l,readConfigFile:u,sys:d,version:f}=await import(`typescript`),p=process.cwd(),m=d.fileExists.bind(d),h=d.readFile.bind(d),v=e.tsconfig?a(e.tsconfig):o(p,m,`tsconfig.json`);if(!v)throw Error(`TypeScript config file not found`);let{config:y,error:b}=u(v,h);if(b){let e=typeof b.messageText==`string`?b.messageText:s(b.messageText,`
1
+ import{t as e}from"./config-C0qrgNuO.mjs";import{a as t,c as n,i as r,o as i,s as a,t as o}from"./hash-BaLFZO2A.mjs";import{glob as s,mkdir as c,readFile as l,stat as u,writeFile as d}from"node:fs/promises";import{createReadStream as f}from"node:fs";import{createInterface as p}from"node:readline/promises";function m(e){let{defaults:t,type:n}=e,r=()=>{let t={async run(t){let{type:n,...r}=t;return{items:await e.run(r),type:`items`}},type:n};return e.setup&&(t.setup=e.setup),e.validate&&(t.validate=e.validate),t};return e=>{let{name:i,...a}=e;return{__runnerFactory:r,config:{type:n,...t,...a},id:i}}}function h(){let e=new WeakSet;return(t,n)=>{if(n&&typeof n==`object`){if(e.has(n))return`[Circular]`;if(e.add(n),!Array.isArray(n)){let e=n,t={};for(let n of Object.keys(e).toSorted()){let r=e[n];typeof r==`function`||typeof r==`symbol`||(t[n]=r)}return t}}return n}}function g(e){return o(JSON.stringify(e??null,h()))}function _(e,t=process.cwd()){return a(t,`node_modules`,`.cache`,`mejora`,e)}async function v(e){try{let t=await l(e,`utf8`);return JSON.parse(t)}catch{return{}}}async function y(e,t){try{await d(e,JSON.stringify(t),`utf8`)}catch{}}async function b(e){try{let t=await u(e);return`${t.mtimeMs}-${t.size}`}catch{return null}}const x=m({async run(e){let{ESLint:t}=await import(`eslint`),n=process.cwd(),r=_(`eslint`,n),a=g(e),{concurrency:o,...s}=e,c=new Set;if(s.rules)for(let e of Object.keys(s.rules))c.add(e);let l=c.size>0,u=await new t({cache:!0,cacheLocation:`${r}/${a}.eslintcache`,overrideConfig:s,...!l&&{concurrency:o??`auto`},...l&&{ruleFilter:({ruleId:e})=>c.has(e)}}).lintFiles(s.files),d=[];for(let{filePath:e,messages:t}of u){let r=i(n,e);for(let{column:e,line:n,message:i,ruleId:a}of t)a&&d.push({column:e,file:r,line:n,message:i,rule:a})}return d},async setup(){let e=_(`eslint`,process.cwd()),{mkdir:t}=await import(`node:fs/promises`);await t(e,{recursive:!0})},type:`eslint`,async validate(){try{await import(`eslint`)}catch{throw Error(`eslint check requires "eslint" package to be installed. Run: npm install eslint`)}}}),S=[`**/node_modules/**`,`**/dist/**`,`**/.git/**`];function C(e,t){if(t?.length)return t;let n=e.map(e=>/^([^*]+\/)/.exec(e)?.[1]).filter(e=>e!==void 0);return[...S,...n.flatMap(e=>S.map(t=>t.replace(/^\*\*\//,e)))]}async function w(e,t,n){let r=Array.from({length:e.length}),i=0;return await Promise.all(Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let t=i++;r[t]=await n(e[t])}})),r}const T=m({async run(e){let n=process.cwd(),r=Array.isArray(e.files)?e.files:[e.files],i=C(r,e.ignore),a=await Promise.all(r.map(e=>Array.fromAsync(s(e,{cwd:n,exclude:i})))),o=[...new Set(a.flat())],c=e.patterns.map(({message:e,pattern:t,rule:n})=>{let r=t.flags.includes(`g`)?t.flags:`${t.flags}g`;return{message:e,regex:new RegExp(t.source,r),ruleText:n??t.source}}),l=t(_(`regex`,n),`${g(e)}.json`),u=await v(l),d={},m=(await w(o,e.concurrency??10,async e=>{let r=t(n,e),i=await b(r);if(!i)return[];let a=u[e];if(a?.hash===i)return d[e]=a,a.items;try{let t=[],n=p({crlfDelay:1/0,input:f(r,{encoding:`utf8`})}),a=0;try{for await(let r of n){a++;for(let n of c){n.regex.lastIndex=0;let i;for(;(i=n.regex.exec(r))!==null;){let r=i.index+1,o=typeof n.message==`function`?n.message(i):n.message??`Pattern matched: ${i[0]}`;t.push({column:r,file:e,line:a,message:o,rule:n.ruleText})}}}}finally{n.close()}return d[e]={hash:i,items:t},t}catch{return[]}})).flat();return await y(l,d),m},async setup(){await c(_(`regex`,process.cwd()),{recursive:!0})},type:`regex`});function E(e,t){return e.replaceAll(/import\("([^"]+)"\)/g,(e,n)=>{try{if(r(n)){let e=i(t,n);if(!e.startsWith(`..`))return`import("${e||`.`}")`}}catch{}return e})}const D=m({async run(e){let{createIncrementalCompilerHost:t,createIncrementalProgram:r,findConfigFile:o,flattenDiagnosticMessageText:s,getPreEmitDiagnostics:c,parseJsonConfigFileContent:l,readConfigFile:u,sys:d,version:f}=await import(`typescript`),p=process.cwd(),m=d.fileExists.bind(d),h=d.readFile.bind(d),v=e.tsconfig?a(e.tsconfig):o(p,m,`tsconfig.json`);if(!v)throw Error(`TypeScript config file not found`);let{config:y,error:b}=u(v,h);if(b){let e=typeof b.messageText==`string`?b.messageText:s(b.messageText,`
2
2
  `);throw TypeError(`Failed to read TypeScript config: ${e}`)}let x=l(y,d,p,e.compilerOptions),S=a(_(`typescript`,p),`${g({compilerOptions:e.compilerOptions??{},configPath:v,parsedOptions:x.options,typescriptVersion:f})}.tsbuildinfo`),C={...x.options,incremental:!0,noEmit:!0,skipLibCheck:x.options.skipLibCheck??!0,tsBuildInfoFile:S},w=t(C,d),T=w.writeFile.bind(w);w.writeFile=(e,t,...n)=>{a(e)===S&&T(e,t,...n)};let D=r({host:w,options:C,projectReferences:x.projectReferences??[],rootNames:x.fileNames}),O=c(D.getProgram());D.emit();let k=a(p),A=k+n,j=O.filter(e=>{if(!e.file)return!0;let t=a(e.file.fileName);return t===k||t.startsWith(A)}),M=[];for(let e of j){let t=s(e.messageText,`
3
3
  `),n=`TS${e.code}`;if(e.file&&e.start!==void 0){let{character:r,line:a}=e.file.getLineAndCharacterOfPosition(e.start),o=i(p,e.file.fileName);M.push({column:r+1,file:o,line:a+1,message:E(t,p),rule:n})}else M.push({column:0,file:`(global)`,line:0,message:E(t,p),rule:n})}return M},async setup(){let e=_(`typescript`,process.cwd()),{mkdir:t}=await import(`node:fs/promises`);await t(e,{recursive:!0})},type:`typescript`,async validate(){try{await import(`typescript`)}catch{throw Error(`typescript check requires "typescript" package to be installed. Run: npm install typescript`)}}});export{m as defineCheck,e as defineConfig,x as eslint,T as regex,D as typescript};
package/dist/run.mjs CHANGED
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
- import{n as e}from"./config-C0qrgNuO.mjs";import{n as t,o as n,r,t as i}from"./hash-BaLFZO2A.mjs";import{t as a}from"./check-registry-mjn8FfPF.mjs";import{fileURLToPath as o}from"node:url";import{mkdir as s,readFile as c,writeFile as l}from"node:fs/promises";import{inspect as u,parseArgs as d,styleText as f}from"node:util";import{Worker as p}from"node:worker_threads";import{env as m}from"node:process";const h=e=>t=>f(e,typeof t==`number`?t.toString():t),g=h(`blue`),_=h(`bold`),v=h(`cyan`),y=h(`dim`),b=h(`green`),x=h(`red`),S=h(`gray`),ee=h(`underline`),te=h(`yellow`);function ne(e){let t=[e.message];if(e.stack){let n=e.stack.split(`
2
+ import{n as e}from"./config-C0qrgNuO.mjs";import{n as t,o as n,r,t as i}from"./hash-BaLFZO2A.mjs";import{t as a}from"./check-registry-mjn8FfPF.mjs";import{fileURLToPath as o}from"node:url";import{mkdir as s,readFile as c,writeFile as l}from"node:fs/promises";import{inspect as u,parseArgs as d,styleText as f}from"node:util";import{Worker as p}from"node:worker_threads";import{env as m}from"node:process";const h=e=>t=>f(e,typeof t==`number`?t.toString():t),g=h(`blue`),_=h(`bold`),v=h(`cyan`),y=h(`dim`),b=h(`green`),x=h(`red`),S=h(`gray`),C=h(`underline`),ee=h(`yellow`);function te(e){let t=[e.message];if(e.stack){let n=e.stack.split(`
3
3
  `).slice(1).map(e=>y(e.trim())).join(`
4
4
  `);t.push(n)}return t.join(`
5
- `)}function C(...e){return e.map(e=>typeof e==`string`?e:e instanceof Error?ne(e):u(e,{colors:!1,depth:10})).join(` `)}const w={error:(...e)=>{console.error(x(`✖`),C(...e))},log:(...e)=>{console.log(C(...e))},start:(...e)=>{console.log(v(`◐`),C(...e))},success:(...e)=>{console.log(b(`✔`),C(...e))}};function T(e,t){return e.file===t.file?e.line===t.line?e.column-t.column:e.line-t.line:e.file.localeCompare(t.file)}function re(e){let t=Map.groupBy(e,e=>e.signature),n=[];for(let[e,r]of t){r.sort(T);for(let[t,{signature:a,...o}]of r.entries())n.push({...o,id:i(`${e}:${t}`)})}return n}function E(e){return{items:re(e.items.map(e=>({...e,signature:`${e.file} - ${e.rule}: ${e.message}`}))).toSorted(T),type:`items`}}function D(e,t){return e===1?t:`${t}s`}const O=`__unparsable__`;function k(e){return e.replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`[`,`&#91;`).replaceAll(`]`,`&#93;`)}function A(e,t,r){let i=n(t,e);return r?`${i}#L${r}`:i}function j(e,t){return`[${e}](${t})`}function ie(e,t){let n=A(e.file,t,e.line);return`- ${j(e.line?`Line ${e.line}`:e.file,n)} - ${`${e.rule}: ${k(e.message)}`}`}function ae(e){let t=Object.groupBy(e,e=>e.file||O);return Object.entries(t).map(([e,t=[]])=>({filePath:e,items:t})).toSorted((e,t)=>e.filePath===O?1:t.filePath===O?-1:e.filePath.localeCompare(t.filePath))}function oe(e,t){let n=e.length,r=D(n,`issue`),i=[`\n### Other Issues · ${t}\n`];for(let t of e)i.push(`- ${t.rule}: ${k(t.message)}`);return i.push(`\n${n} ${r} in Other Issues`,``),i.join(`
6
- `)}function M(e,t,n){if(e.filePath===O)return oe(e.items,n);let r=A(e.filePath,t),i=j(e.filePath,r),a=e.items.length,o=D(a,`issue`),s=[`\n### ${i} · ${n}\n`];for(let n of e.items)s.push(ie(n,t));return s.push(`\n${a} ${o} in ${e.filePath}`,``),s.join(`
7
- `)}function se(e,t,n){let r=t.length,i=D(r,`issue`),a=[`\n## ${e}\n`];if(t.length===0)return a.push(`No issues`),a.join(`
8
- `);let o=ae(t);for(let t of o)a.push(M(t,n,e));return a.push(`---\n${r} total ${i} for ${e}`),a.join(`
9
- `)}function ce(e){return`${e.replaceAll(/\n{3,}/g,`
5
+ `)}function w(...e){return e.map(e=>typeof e==`string`?e:e instanceof Error?te(e):u(e,{colors:!1,depth:10})).join(` `)}const T={error:(...e)=>{console.error(x(`✖`),w(...e))},log:(...e)=>{console.log(w(...e))},start:(...e)=>{console.log(v(`◐`),w(...e))},success:(...e)=>{console.log(b(`✔`),w(...e))}};function E(e,t){return e.file===t.file?e.line===t.line?e.column-t.column:e.line-t.line:e.file<t.file?-1:1}function ne(e){return`${e.file} - ${e.rule}: ${e.message}`}function re(e){let t=Map.groupBy(e,ne),n=[];for(let[e,r]of t){r.sort(E);for(let[t,a]of r.entries())n.push({...a,id:i(`${e}:${t}`)})}return n}function D(e){return{items:re(e.items).toSorted(E),type:`items`}}function O(e,t){return e===1?t:`${t}s`}const k=`__unparsable__`,A={"<":`&lt;`,">":`&gt;`,"[":`&#91;`,"]":`&#93;`},j=/[<>[\]]/g;function M(e){return e.replaceAll(j,e=>A[e])}function N(e,t,r){let i=n(t,e);return r?`${i}#L${r}`:i}function P(e,t){return`[${e}](${t})`}function ie(e,t){let n=N(e.file,t,e.line);return`- ${P(e.line?`Line ${e.line}`:e.file,n)} - ${`${e.rule}: ${M(e.message)}`}`}function ae(e){let t=Object.groupBy(e,e=>e.file||k);return Object.entries(t).map(([e,t=[]])=>({filePath:e,items:t})).toSorted((e,t)=>e.filePath===k?1:t.filePath===k||e.filePath<t.filePath?-1:e.filePath>t.filePath?1:0)}function oe(e,t){let n=e.length,r=O(n,`issue`),i=[`\n### Other Issues · ${t}\n`];for(let t of e)i.push(`- ${t.rule}: ${M(t.message)}`);return i.push(`\n${n} ${r} in Other Issues`,``),i.join(`
6
+ `)}function se(e,t,n){if(e.filePath===k)return oe(e.items,n);let r=N(e.filePath,t),i=P(e.filePath,r),a=e.items.length,o=O(a,`issue`),s=[`\n### ${i} · ${n}\n`];for(let n of e.items)s.push(ie(n,t));return s.push(`\n${a} ${o} in ${e.filePath}`,``),s.join(`
7
+ `)}function ce(e,t,n){let r=t.length,i=O(r,`issue`),a=[`\n## ${e}\n`];if(t.length===0)return a.push(`No issues`),a.join(`
8
+ `);let o=ae(t);for(let t of o)a.push(se(t,n,e));return a.push(`---\n${r} total ${i} for ${e}`),a.join(`
9
+ `)}function le(e){return`${e.replaceAll(/\n{3,}/g,`
10
10
 
11
- `).trimEnd()}\n`}function N(e,t){let n=[`<!-- prettier-ignore-start -->
11
+ `).trimEnd()}\n`}function F(e,t){let n=[`<!-- prettier-ignore-start -->
12
12
  `,`# Mejora Baseline
13
- `,`This file represents the current accepted state of the codebase.`];for(let[r,{items:i=[]}]of Object.entries(e.checks))n.push(se(r,i,t));return n.push(`
14
- <!-- prettier-ignore-end -->`),ce(n.join(`
15
- `))}const le=[`CI`,`CONTINUOUS_INTEGRATION`].some(e=>m[e]&&m[e]!==`0`&&m[e]!==`false`);function ue(){return{hasImprovement:!1,hasRegression:!1,hasRelocation:!1,isInitial:!0,newIssues:[],removedIssues:[]}}function de(e,t,n){return{hasImprovement:t.length>0,hasRegression:e.length>0,hasRelocation:n,isInitial:!1,newIssues:e.toSorted((e,t)=>e.id.localeCompare(t.id)),removedIssues:t.toSorted((e,t)=>e.id.localeCompare(t.id))}}function P(e=[]){return new Map(e.map(e=>[e.id,e]))}function F(e){return new Set(e.keys())}function I(e,t){let n=[];for(let r of t){let t=e.get(r);n.push(t)}return n}function L(e,t){for(let[n,r]of e){let e=t.get(n);if(e&&(r.line!==e.line||r.column!==e.column))return!0}return!1}function R(e,t){let n=P(e.items),r=P(t.items),i=F(n),a=F(r),o=i.difference(a),s=a.difference(i);return de(I(n,o),I(r,s),i.size>o.size?L(n,r):!1)}function z(e,t){return t?R(e,t):ue()}const B=(e,t)=>{if(!t)return!1;let n=e.items,r=t.items;if(n.length!==r.length)return!1;let i=n.toSorted((e,t)=>e.id.localeCompare(t.id)),a=r.toSorted((e,t)=>e.id.localeCompare(t.id));return i.every((e,t)=>{let n=a[t];return e.id===n.id&&e.file===n.file&&e.line===n.line&&e.column===n.column&&e.rule===n.rule&&e.message===n.message})};function V(e,t){let n=e;for(let e=0;e<t;e++){let e=n.trimEnd();if(!e.endsWith(`}`))break;n=e.slice(0,-1)}return n}function H(e,t){return`${e}${`
16
- }`.repeat(t)}`}function fe(e){let t=(e.match(/\{/g)?.length??0)-(e.match(/\}/g)?.length??0);return t===0?e:t<0?V(e,-t):H(e,t)}function pe(e){try{return JSON.parse(e)}catch{return}}function U(e){let t=e.trim();return t.endsWith(`,`)?t.slice(0,-1):t}function me(e){return`{
13
+ `,`This file represents the current accepted state of the codebase.`];for(let[r,{items:i=[]}]of Object.entries(e.checks))n.push(ce(r,i,t));return n.push(`
14
+ <!-- prettier-ignore-end -->`),le(n.join(`
15
+ `))}const ue=[`CI`,`CONTINUOUS_INTEGRATION`].some(e=>m[e]&&m[e]!==`0`&&m[e]!==`false`);function de(){return{hasImprovement:!1,hasRegression:!1,hasRelocation:!1,isInitial:!0,newIssues:[],removedIssues:[]}}function I(e,t,n){return{hasImprovement:t.length>0,hasRegression:e.length>0,hasRelocation:n,isInitial:!1,newIssues:e.toSorted((e,t)=>e.id<t.id?-1:e.id>t.id?1:0),removedIssues:t.toSorted((e,t)=>e.id<t.id?-1:e.id>t.id?1:0)}}function L(e=[]){return new Map(e.map(e=>[e.id,e]))}function R(e){return new Set(e.keys())}function z(e,t){let n=[];for(let r of t){let t=e.get(r);n.push(t)}return n}function B(e,t){for(let[n,r]of e){let e=t.get(n);if(e&&(r.line!==e.line||r.column!==e.column))return!0}return!1}function V(e,t){let n=L(e.items),r=L(t.items),i=R(n),a=R(r),o=i.difference(a),s=a.difference(i);return I(z(n,o),z(r,s),i.size>o.size?B(n,r):!1)}function H(e,t){return t?V(e,t):de()}const fe=(e,t)=>{if(!t)return!1;let n=e.items,r=t.items;if(n.length!==r.length)return!1;let i=n.toSorted((e,t)=>e.id<t.id?-1:e.id>t.id?1:0),a=r.toSorted((e,t)=>e.id<t.id?-1:e.id>t.id?1:0);return i.every((e,t)=>{let n=a[t];return e.id===n.id&&e.file===n.file&&e.line===n.line&&e.column===n.column&&e.rule===n.rule&&e.message===n.message})};function pe(e,t){let n=e;for(let e=0;e<t;e++){let e=n.trimEnd();if(!e.endsWith(`}`))break;n=e.slice(0,-1)}return n}function me(e,t){return`${e}${`
16
+ }`.repeat(t)}`}function he(e){let t=(e.match(/\{/g)?.length??0)-(e.match(/\}/g)?.length??0);return t===0?e:t<0?pe(e,-t):me(e,t)}function ge(e){try{return JSON.parse(e)}catch{return}}function U(e){let t=e.trim();return t.endsWith(`,`)?t.slice(0,-1):t}function _e(e){return`{
17
17
  "version": 2,
18
18
  ${U(e)}
19
- }`}function W(e){if(typeof e!=`object`||!e)throw TypeError(`Baseline must be an object`);if(`checks`in e&&e.checks&&typeof e.checks==`object`)return{checks:e.checks,version:2};let t={};for(let[n,r]of Object.entries(e))n!==`version`&&(t[n]=r);return{checks:t,version:2}}function G(e){try{let t=pe(e.trim());if(t)return W(t);let n=me(fe(U(e)));return W(JSON.parse(n))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse baseline during conflict resolution: ${t}`,{cause:e})}}function he(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 ge(e){let t=new Map;for(let n of e)for(let[e,{items:r=[]}]of Object.entries(n.checks)){if(r.length===0)continue;let n=t.get(e);n||(n=new Map,t.set(e,n));for(let e of r)n.set(e.id,e)}let n={};for(let[e,r]of t)n[e]={items:[...r.values()].toSorted((e,t)=>e.id.localeCompare(t.id)),type:`items`};return{checks:n,version:2}}function _e(e){let t=he(e),n=[];for(let{ours:e,theirs:r}of t)n.push(G(e),G(r));return ge(n)}var K=class e{baselinePath;constructor(e=`.mejora/baseline.json`){this.baselinePath=e}static create(e){return{checks:e,version:2}}static getEntry(e,t){return e?.checks[t]}static update(t,n,r){let i=t??e.create({}),a=i.checks[n];return B(r,a)?i:{...i,checks:{...i.checks,[n]:r}}}async load(){try{let e=await c(this.baselinePath,`utf8`);if(e.includes(`<<<<<<<`)){w.start(`Merge conflict detected in baseline, auto-resolving...`);let t=_e(e);return await this.save(t,!0),w.success(`Baseline conflict resolved`),t}return await this.resolveMarkdownConflictIfNeeded(e),JSON.parse(e)}catch(e){if(e.code===`ENOENT`)return null;throw e}}async save(e,t=!1){if(le&&!t)return;let n=`${JSON.stringify(e,null,2)}\n`,i=this.baselinePath.replace(`.json`,`.md`),a=N(e,r(this.baselinePath));await s(r(this.baselinePath),{recursive:!0}),await Promise.all([l(this.baselinePath,n,`utf8`),l(i,a,`utf8`)])}async resolveMarkdownConflictIfNeeded(e){let t=this.baselinePath.replace(`.json`,`.md`);try{(await c(t,`utf8`)).includes(`<<<<<<<`)&&(w.start(`Merge conflict detected in markdown report, regenerating...`),await l(t,N(JSON.parse(e),r(this.baselinePath)),`utf8`),w.success(`Markdown report regenerated`))}catch{}}};const ve=o(new URL(`workers/check.mjs`,import.meta.url));var ye=class e{baselineManager;registry;constructor(e,t){this.registry=e,this.baselineManager=new K(t)}static async executeChecksParallel(t,n){try{let r=t.map(async t=>{let r=await e.executeWorker(t.id),i=E(r.snapshot),a=K.getEntry(n,t.id),o=z(i,a);return{baseline:a,checkId:t.id,duration:r.duration,hasImprovement:o.hasImprovement,hasRegression:o.hasRegression,hasRelocation:o.hasRelocation,isInitial:o.isInitial,newIssues:o.newIssues,removedIssues:o.removedIssues,snapshot:i}});return await Promise.all(r)}catch(e){return w.error(`Parallel execution failed:`,e),null}}static async executeWorker(e){return new Promise((t,n)=>{let r=new p(ve,{workerData:{checkId:e}});r.on(`message`,t),r.on(`error`,n),r.on(`exit`,e=>{e!==0&&n(Error(`Worker stopped with exit code ${e}`))})})}static filterChecks=(t,n)=>{let r=n.only?e.resolveRegex(n.only,`--only`):null,i=n.skip?e.resolveRegex(n.skip,`--skip`):null;return!r&&!i?t:t.filter(e=>!(r&&!r.test(e.id)||i?.test(e.id)))};static resolveRegex(e,t){try{return new RegExp(e)}catch{throw Error(`Invalid regex pattern for ${t}: "${e}"`)}}async run(t,n={}){let r=performance.now(),i=await this.baselineManager.load(),a=e.filterChecks(t.checks,n),o=a.length;w.start(`Running ${o} check${o===1?``:`s`}...`);let s=o>1?await e.executeChecksParallel(a,i):await this.executeChecksSequential(a,i);if(!s)return{exitCode:2,hasImprovement:!1,hasRegression:!0,results:[],totalDuration:performance.now()-r};let c=i,l=!1,u=!1,d=!1;for(let e of s)e.hasRegression&&(l=!0),e.hasImprovement&&(u=!0),e.isInitial&&(d=!0),(e.hasImprovement||e.hasRelocation||n.force||e.isInitial)&&(c=K.update(c,e.checkId,{items:e.snapshot.items,type:e.snapshot.type}));return c&&c!==i&&(!l||n.force||d)&&await this.baselineManager.save(c,n.force),{exitCode:l&&!n.force?1:0,hasImprovement:u,hasRegression:l,results:s,totalDuration:performance.now()-r}}async executeChecksSequential(e,t){try{let t=a.getRequiredTypes(e);await Promise.all([this.registry.setup(t),this.registry.validate(t)])}catch(e){return w.error(`Setup failed:`,e),null}let n=[];for(let r of e)try{let e=performance.now(),i=await this.registry.get(r.config.type).run(r.config),a=performance.now()-e,o=E(i),s=K.getEntry(t,r.id),c=z(o,s);n.push({baseline:s,checkId:r.id,duration:a,hasImprovement:c.hasImprovement,hasRegression:c.hasRegression,hasRelocation:c.hasRelocation,isInitial:c.isInitial,newIssues:c.newIssues,removedIssues:c.removedIssues,snapshot:o})}catch(e){return w.error(`Error running check "${r.id}":`,e),null}return n}};function q(e,t){if(!(e===void 0||t===0))return e/t}function be(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.removedIssues.length,i.push(e.checkId)),e.hasRegression&&(l+=e.newIssues.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,newIssues:e.newIssues,removedIssues:e.removedIssues,totalIssues:t})}let m={checks:p,exitCode:e.exitCode,hasImprovement:e.hasImprovement,hasRegression:e.hasRegression,summary:{avgDuration:q(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)}function xe(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 J(e){let t=Math.round(e);return t<1?`<1ms`:xe(t)}const Y=` `,Se=`${Y} `;function Ce(e){return e===`initial`?y(`→`):e===`improvement`?b(`↑`):x(`↓`)}function we(e,n,i){let a=r(e),o=t(e),s=n>0?`:${n}:${i>0?i:1}`:``;return`${a===`.`?``:y(`${a}/`)}${ee(o)}${s?y(s):``}`}function Te(e,t){return[`${Ce(t)} ${we(e.file,e.line,e.column)} ${y(e.rule)}`,e.message]}function X(e,t){let n=[],r=e.slice(0,10);for(let e of r){let[r,i]=Te(e,t);n.push(`${Y}${r}`,`${Se}${i}`)}let i=e.length-r.length;return i>0&&n.push(`${Y}${y(`... and ${i} more`)}`),n}function Ee(e){return e===void 0?[]:[` ${y(`Duration`)} ${J(e)}`]}function De(e){return[` ${y(`Issues`)} ${_(e)}`]}function Z(e){return[...Ee(e.duration),...De(e.snapshot.items.length)]}function Oe(e){if(!e.hasRegression)return[];let t=e.newIssues.length;return[` ${x(t)} new ${D(t,`issue`)} (${D(t,`regression`)}):`,...X(e.newIssues,`regression`)]}function Q(e){if(!e.hasImprovement)return[];let t=e.removedIssues.length;return[` ${b(t)} ${D(t,`issue`)} fixed (${D(t,`improvement`)}):`,...X(e.removedIssues,`improvement`)]}function ke(e,t){let n=t?``:`
20
- `,r=e.snapshot.items.length,i=[`${n}${g(`ℹ`)} ${e.checkId}:`,` Initial baseline created with ${g(r)} ${D(r,`issue`)}`];return e.snapshot.items.length>0&&i.push(...X(e.snapshot.items,`initial`)),i.push(``,...Z(e)),i}function Ae(e,t){return[`${t?``:`
21
- `}${e.hasRegression?x(`✖`):b(`✔`)} ${e.checkId}:`,...Oe(e),...Q(e),``,...Z(e)]}function je(e,t){let n=t?``:`
22
- `,r=e.snapshot.items.length;return e.duration===void 0?[`${n}${S(`ℹ`)} ${e.checkId} (${_(r)})`]:[`${n}${S(`ℹ`)} ${e.checkId} (${_(r)}) ${y(J(e.duration))}`]}function Me(e,t){return e.isInitial?ke(e,t):e.hasRegression||e.hasImprovement?Ae(e,t):je(e,t)}function Ne(e,t,n){return t?g(`✔ Initial baseline created successfully`):e.hasRegression?n?te(`⚠ Regressions detected (forced)`):`${x(`✗ Regressions detected`)} - Run failed`:e.hasImprovement?`${b(`✔ Improvements detected`)} - Baseline updated`:b(`✔ All checks passed`)}function Pe(e,t){let n={hasAnyInitial:!1,totalImprovements:0,totalInitial:0,totalIssues:0,totalRegressions:0};for(let t of e.results){let e=t.snapshot.items.length;if(n.totalIssues+=e,t.isInitial){n.hasAnyInitial=!0,n.totalInitial+=e;continue}let{hasImprovement:r,hasRegression:i}=t;r&&(n.totalImprovements+=t.removedIssues.length),i&&(n.totalRegressions+=t.newIssues.length)}let r=[` ${y(`Improvements`)} ${b(n.totalImprovements)}`,` ${y(`Regressions`)} ${x(n.totalRegressions)}`,` ${y(`Initial`)} ${g(n.totalInitial)}`,` ${y(`Checks`)} ${e.results.length}`,` ${y(`Issues`)} ${_(n.totalIssues)}`],i=q(e.totalDuration,e.results.length);return e.totalDuration!==void 0&&i!==void 0&&r.push(` ${y(`Duration`)} ${J(e.totalDuration)} ${S(`(avg ${J(i)})`)}`),r.push(``,Ne(e,n.hasAnyInitial,t)),r.join(`
23
- `)}function Fe(e,t){let n=[];for(let[t,r]of e.results.entries())n.push(...Me(r,t===0));return n.length>0&&n.push(``),n.push(Pe(e,t)),n.join(`
24
- `)}const{values:$}=d({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&&(w.log(`
19
+ }`}function W(e){if(typeof e!=`object`||!e)throw TypeError(`Baseline must be an object`);if(`checks`in e&&e.checks&&typeof e.checks==`object`)return{checks:e.checks,version:2};let t={};for(let[n,r]of Object.entries(e))n!==`version`&&(t[n]=r);return{checks:t,version:2}}function G(e){try{let t=ge(e.trim());if(t)return W(t);let n=_e(he(U(e)));return W(JSON.parse(n))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to parse baseline during conflict resolution: ${t}`,{cause:e})}}function ve(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 ye(e){let t=new Map;for(let n of e)for(let[e,{items:r=[]}]of Object.entries(n.checks)){if(r.length===0)continue;let n=t.get(e);n||(n=new Map,t.set(e,n));for(let e of r)n.set(e.id,e)}let n={};for(let[e,r]of t)n[e]={items:[...r.values()].toSorted((e,t)=>e.id<t.id?-1:e.id>t.id?1:0),type:`items`};return{checks:n,version:2}}function be(e){let t=ve(e),n=[];for(let{ours:e,theirs:r}of t)n.push(G(e),G(r));return ye(n)}var K=class e{baselinePath;constructor(e=`.mejora/baseline.json`){this.baselinePath=e}static create(e){return{checks:e,version:2}}static getEntry(e,t){return e?.checks[t]}static update(t,n,r){let i=t??e.create({}),a=i.checks[n];return fe(r,a)?i:{...i,checks:{...i.checks,[n]:r}}}async load(){try{let e=await c(this.baselinePath,`utf8`);if(e.includes(`<<<<<<<`)){T.start(`Merge conflict detected in baseline, auto-resolving...`);let t=be(e);return await this.save(t,!0),T.success(`Baseline conflict resolved`),t}return await this.resolveMarkdownConflictIfNeeded(e),JSON.parse(e)}catch(e){if(e.code===`ENOENT`)return null;throw e}}async save(e,t=!1){if(ue&&!t)return;let n=`${JSON.stringify(e,null,2)}\n`,i=this.baselinePath.replace(`.json`,`.md`),a=F(e,r(this.baselinePath));await s(r(this.baselinePath),{recursive:!0}),await Promise.all([l(this.baselinePath,n,`utf8`),l(i,a,`utf8`)])}async resolveMarkdownConflictIfNeeded(e){let t=this.baselinePath.replace(`.json`,`.md`);try{(await c(t,`utf8`)).includes(`<<<<<<<`)&&(T.start(`Merge conflict detected in markdown report, regenerating...`),await l(t,F(JSON.parse(e),r(this.baselinePath)),`utf8`),T.success(`Markdown report regenerated`))}catch{}}};const xe=o(new URL(`workers/check.mjs`,import.meta.url));var Se=class e{baselineManager;registry;constructor(e,t){this.registry=e,this.baselineManager=new K(t)}static async executeChecksParallel(t,n){try{let r=t.map(async t=>{let r=await e.executeWorker(t.id),i=D(r.snapshot),a=K.getEntry(n,t.id),o=H(i,a);return{baseline:a,checkId:t.id,duration:r.duration,hasImprovement:o.hasImprovement,hasRegression:o.hasRegression,hasRelocation:o.hasRelocation,isInitial:o.isInitial,newIssues:o.newIssues,removedIssues:o.removedIssues,snapshot:i}});return await Promise.all(r)}catch(e){return T.error(`Parallel execution failed:`,e),null}}static async executeWorker(e){return new Promise((t,n)=>{let r=new p(xe,{workerData:{checkId:e}});r.on(`message`,t),r.on(`error`,n),r.on(`exit`,e=>{e!==0&&n(Error(`Worker stopped with exit code ${e}`))})})}static filterChecks=(t,n)=>{let r=n.only?e.resolveRegex(n.only,`--only`):null,i=n.skip?e.resolveRegex(n.skip,`--skip`):null;return!r&&!i?t:t.filter(e=>!(r&&!r.test(e.id)||i?.test(e.id)))};static resolveRegex(e,t){try{return new RegExp(e)}catch{throw Error(`Invalid regex pattern for ${t}: "${e}"`)}}async run(t,n={}){let r=performance.now(),i=await this.baselineManager.load(),a=e.filterChecks(t.checks,n),o=a.length;T.start(`Running ${o} check${o===1?``:`s`}...`);let s=o>1?await e.executeChecksParallel(a,i):await this.executeChecksSequential(a,i);if(!s)return{exitCode:2,hasImprovement:!1,hasRegression:!0,results:[],totalDuration:performance.now()-r};let c=i,l=!1,u=!1,d=!1;for(let e of s)e.hasRegression&&(l=!0),e.hasImprovement&&(u=!0),e.isInitial&&(d=!0),(e.hasImprovement||e.hasRelocation||n.force||e.isInitial)&&(c=K.update(c,e.checkId,{items:e.snapshot.items,type:e.snapshot.type}));return c&&c!==i&&(!l||n.force||d)&&await this.baselineManager.save(c,n.force),{exitCode:l&&!n.force?1:0,hasImprovement:u,hasRegression:l,results:s,totalDuration:performance.now()-r}}async executeChecksSequential(e,t){try{let t=a.getRequiredTypes(e);await Promise.all([this.registry.setup(t),this.registry.validate(t)])}catch(e){return T.error(`Setup failed:`,e),null}let n=[];for(let r of e)try{let e=performance.now(),i=await this.registry.get(r.config.type).run(r.config),a=performance.now()-e,o=D(i),s=K.getEntry(t,r.id),c=H(o,s);n.push({baseline:s,checkId:r.id,duration:a,hasImprovement:c.hasImprovement,hasRegression:c.hasRegression,hasRelocation:c.hasRelocation,isInitial:c.isInitial,newIssues:c.newIssues,removedIssues:c.removedIssues,snapshot:o})}catch(e){return T.error(`Error running check "${r.id}":`,e),null}return n}};function q(e,t){if(!(e===void 0||t===0))return e/t}function Ce(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.removedIssues.length,i.push(e.checkId)),e.hasRegression&&(l+=e.newIssues.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,newIssues:e.newIssues,removedIssues:e.removedIssues,totalIssues:t})}let m={checks:p,exitCode:e.exitCode,hasImprovement:e.hasImprovement,hasRegression:e.hasRegression,summary:{avgDuration:q(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)}function we(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 J(e){let t=Math.round(e);return t<1?`<1ms`:we(t)}const Y=` `,Te=`${Y} `;function Ee(e){return e===`initial`?y(`→`):e===`improvement`?b(`↑`):x(`↓`)}function De(e,n,i){let a=r(e),o=t(e),s=n>0?`:${n}:${i>0?i:1}`:``;return`${a===`.`?``:y(`${a}/`)}${C(o)}${s?y(s):``}`}function Oe(e,t){return[`${Ee(t)} ${De(e.file,e.line,e.column)} ${y(e.rule)}`,e.message]}function X(e,t){let n=[],r=e.slice(0,10);for(let e of r){let[r,i]=Oe(e,t);n.push(`${Y}${r}`,`${Te}${i}`)}let i=e.length-r.length;return i>0&&n.push(`${Y}${y(`... and ${i} more`)}`),n}function ke(e){return e===void 0?[]:[` ${y(`Duration`)} ${J(e)}`]}function Z(e){return[` ${y(`Issues`)} ${_(e)}`]}function Q(e){return[...ke(e.duration),...Z(e.snapshot.items.length)]}function Ae(e){if(!e.hasRegression)return[];let t=e.newIssues.length;return[` ${x(t)} new ${O(t,`issue`)} (${O(t,`regression`)}):`,...X(e.newIssues,`regression`)]}function je(e){if(!e.hasImprovement)return[];let t=e.removedIssues.length;return[` ${b(t)} ${O(t,`issue`)} fixed (${O(t,`improvement`)}):`,...X(e.removedIssues,`improvement`)]}function Me(e,t){let n=t?``:`
20
+ `,r=e.snapshot.items.length,i=[`${n}${g(`ℹ`)} ${e.checkId}:`,` Initial baseline created with ${g(r)} ${O(r,`issue`)}`];return e.snapshot.items.length>0&&i.push(...X(e.snapshot.items,`initial`)),i.push(``,...Q(e)),i}function Ne(e,t){return[`${t?``:`
21
+ `}${e.hasRegression?x(`✖`):b(`✔`)} ${e.checkId}:`,...Ae(e),...je(e),``,...Q(e)]}function Pe(e,t){let n=t?``:`
22
+ `,r=e.snapshot.items.length;return e.duration===void 0?[`${n}${S(`ℹ`)} ${e.checkId} (${_(r)})`]:[`${n}${S(`ℹ`)} ${e.checkId} (${_(r)}) ${y(J(e.duration))}`]}function Fe(e,t){return e.isInitial?Me(e,t):e.hasRegression||e.hasImprovement?Ne(e,t):Pe(e,t)}function Ie(e,t,n){return t?g(`✔ Initial baseline created successfully`):e.hasRegression?n?ee(`⚠ Regressions detected (forced)`):`${x(`✗ Regressions detected`)} - Run failed`:e.hasImprovement?`${b(`✔ Improvements detected`)} - Baseline updated`:b(`✔ All checks passed`)}function Le(e,t){let n={hasAnyInitial:!1,totalImprovements:0,totalInitial:0,totalIssues:0,totalRegressions:0};for(let t of e.results){let e=t.snapshot.items.length;if(n.totalIssues+=e,t.isInitial){n.hasAnyInitial=!0,n.totalInitial+=e;continue}let{hasImprovement:r,hasRegression:i}=t;r&&(n.totalImprovements+=t.removedIssues.length),i&&(n.totalRegressions+=t.newIssues.length)}let r=[` ${y(`Improvements`)} ${b(n.totalImprovements)}`,` ${y(`Regressions`)} ${x(n.totalRegressions)}`,` ${y(`Initial`)} ${g(n.totalInitial)}`,` ${y(`Checks`)} ${e.results.length}`,` ${y(`Issues`)} ${_(n.totalIssues)}`],i=q(e.totalDuration,e.results.length);return e.totalDuration!==void 0&&i!==void 0&&r.push(` ${y(`Duration`)} ${J(e.totalDuration)} ${S(`(avg ${J(i)})`)}`),r.push(``,Ie(e,n.hasAnyInitial,t)),r.join(`
23
+ `)}function Re(e,t){let n=[];for(let[t,r]of e.results.entries())n.push(...Fe(r,t===0));return n.length>0&&n.push(``),n.push(Le(e,t)),n.join(`
24
+ `)}const{values:$}=d({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&&(T.log(`
25
25
  mejora - Prevent regressions by allowing only improvement
26
26
 
27
27
  Usage:
@@ -40,4 +40,4 @@ Examples:
40
40
  mejora --json
41
41
  mejora --only "eslint > *"
42
42
  mejora --skip typescript
43
- `),process.exit(0));try{let t=new a,n=await e();t.init(n);let r=await new ye(t).run(n,{force:$.force,json:$.json,only:$.only,skip:$.skip});$.json?w.log(be(r)):(w.log(``),w.log(Fe(r,$.force))),process.exit(r.exitCode)}catch(e){e instanceof Error?w.error(e.message):w.error(e),process.exit(2)}export{};
43
+ `),process.exit(0));try{let t=new a,n=await e();t.init(n);let r=await new Se(t).run(n,{force:$.force,json:$.json,only:$.only,skip:$.skip});$.json?T.log(Ce(r)):(T.log(``),T.log(Re(r,$.force))),process.exit(r.exitCode)}catch(e){e instanceof Error?T.error(e.message):T.error(e),process.exit(2)}export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mejora",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Prevent regressions. Allow improvement.",
5
5
  "keywords": [
6
6
  "regression",