mejora 2.0.1 → 2.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.
@@ -0,0 +1,3 @@
1
+ import{createRequire as e}from"node:module";import{hash as t}from"node:crypto";import{pathToFileURL as n}from"node:url";var r=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),i=e(import.meta.url);const a=/^[A-Za-z]:\//;function o(e=``){return e&&e.replace(/\\/g,`/`).replace(a,e=>e.toUpperCase())}const s=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,c=/^[A-Za-z]:$/,l=/^\/([A-Za-z]:)?$/;function u(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}const d=function(...e){e=e.map(e=>o(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:u();!i||i.length===0||(t=`${i}/${t}`,n=p(i))}return t=f(t,!n),n&&!p(t)?`/${t}`:t.length>0?t:`.`};function f(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else if(o===`/`)break;else o=`/`;if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}else if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}const p=function(e){return s.test(e)},m=function(e,t){let n=d(e).replace(l,`$1`).split(`/`),r=d(t).replace(l,`$1`).split(`/`);if(r[0][1]===`:`&&n[0][1]===`:`&&n[0]!==r[0])return r.join(`/`);let i=[...n];for(let e of i){if(r[0]!==e)break;n.shift(),r.shift()}return[...n.map(()=>`..`),...r].join(`/`)},h=function(e){let t=o(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&c.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(p(e)?`/`:`.`)},g=function(e,t){let n=o(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},_=e=>t(`sha256`,e,`hex`);function v(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 y(e){let t=Map.groupBy(e,e=>e.signature),n=[];for(let[e,r]of t){r.sort(v);for(let[t,i]of r.entries()){let{signature:r,...a}=i;n.push({...a,id:_(`${e}:${t}`)})}}return n}const b=(e,t)=>{if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t,n={};for(let t of Object.keys(e).toSorted())n[t]=e[t];return n}return t};function x(e){return _(JSON.stringify(e??null,b))}function S(e,t=process.cwd()){return d(t,`node_modules`,`.cache`,`mejora`,e)}async function C(e){let{ESLint:t}=await import(`eslint`),n=process.cwd(),r=await new t({cache:!0,cacheLocation:`${S(`eslint`,n)}/${x(e)}.eslintcache`,concurrency:`auto`,overrideConfig:e.overrides}).lintFiles(e.files),i=[];for(let{filePath:e,messages:t}of r){let r=m(n,e);for(let{column:e,line:n,message:a,ruleId:o}of t){if(!o)continue;let t=`${r} - ${o}: ${a}`;i.push({column:e,file:r,line:n,message:a,rule:o,signature:t})}}return{items:y(i).toSorted(v),type:`items`}}function w(e){return{type:`eslint`,...e}}async function T(e){let{createIncrementalCompilerHost:t,createIncrementalProgram:n,findConfigFile:r,flattenDiagnosticMessageText:i,getPreEmitDiagnostics:a,parseJsonConfigFileContent:o,readConfigFile:s,sys:c,version:l}=await import(`typescript`),u=process.cwd(),f=c.fileExists.bind(c),p=c.readFile.bind(c),h=e.tsconfig?d(e.tsconfig):r(u,f,`tsconfig.json`);if(!h)throw Error(`TypeScript config file not found`);let{config:g,error:_}=s(h,p);if(_){let e=typeof _.messageText==`string`?_.messageText:i(_.messageText,`
2
+ `);throw TypeError(`Failed to read TypeScript config: ${e}`)}let b=o(g,c,u,e.overrides?.compilerOptions),C=d(S(`typescript`,u),`${x({configPath:h,overrides:e.overrides?.compilerOptions??{},parsedOptions:b.options,typescriptVersion:l})}.tsbuildinfo`),w={...b.options,incremental:!0,noEmit:!0,skipLibCheck:b.options.skipLibCheck??!0,tsBuildInfoFile:C},T=t(w,c),E=T.writeFile.bind(T);T.writeFile=(e,t,...n)=>{d(e)===d(C)&&E(e,t,...n)};let D=n({host:T,options:w,projectReferences:b.projectReferences??[],rootNames:b.fileNames}),O=a(D.getProgram());D.emit();let k=O.filter(e=>{if(!e.file)return!0;let t=d(e.file.fileName),n=d(u);return t===n||t.startsWith(n+`/`)}),A=[];for(let e of k){let t=i(e.messageText,`
3
+ `),n=`TS${e.code}`;if(e.file&&e.start!==void 0){let{character:r,line:i}=e.file.getLineAndCharacterOfPosition(e.start),a=m(u,e.file.fileName),o=`${a} - ${n}: ${t}`;A.push({column:r+1,file:a,line:i+1,message:t,rule:n,signature:o})}else{let e=`(global)`,r=`${e} - ${n}: ${t}`;A.push({column:0,file:e,line:0,message:t,rule:n,signature:r})}}return{items:y(A).toSorted(v),type:`items`}}function E(e){return{type:`typescript`,...e}}var D=r(((e,t)=>{let n=i(`path`),r=i(`fs`),a=i(`os`),o=i(`url`),s=r.promises.readFile;function c(e,t){return[`package.json`,`.${e}rc.json`,`.${e}rc.js`,`.${e}rc.cjs`,...t?[]:[`.${e}rc.mjs`],`.config/${e}rc`,`.config/${e}rc.json`,`.config/${e}rc.js`,`.config/${e}rc.cjs`,...t?[]:[`.config/${e}rc.mjs`],`${e}.config.js`,`${e}.config.cjs`,...t?[]:[`${e}.config.mjs`]]}function l(e){return n.dirname(e)||n.sep}let u=(e,t)=>JSON.parse(t),d=typeof __webpack_require__==`function`?__non_webpack_require__:i,f=Object.freeze({".js":d,".json":d,".cjs":d,noExt:u});t.exports.defaultLoadersSync=f;let p=async e=>{try{return(await import(o.pathToFileURL(e).href)).default}catch(t){try{return d(e)}catch(e){throw e.code===`ERR_REQUIRE_ESM`||e instanceof SyntaxError&&e.toString().includes(`Cannot use import statement outside a module`)?t:e}}},m=Object.freeze({".js":p,".mjs":p,".cjs":p,".json":u,noExt:u});t.exports.defaultLoaders=m;function h(e,t,r){let i={stopDir:a.homedir(),searchPlaces:c(e,r),ignoreEmptySearchPlaces:!0,cache:!0,transform:e=>e,packageProp:[e],...t,loaders:{...r?f:m,...t.loaders}};return i.searchPlaces.forEach(e=>{let t=n.extname(e)||`noExt`,r=i.loaders[t];if(!r)throw Error(`Missing loader for extension "${e}"`);if(typeof r!=`function`)throw Error(`Loader for extension "${e}" is not a function: Received ${typeof r}.`)}),i}function g(e,t){return typeof e==`string`&&e in t?t[e]:(Array.isArray(e)?e:e.split(`.`)).reduce((e,t)=>e===void 0?e:e[t],t)||null}function _(e){if(!e)throw Error(`load must pass a non-empty string`)}function v(e,t){if(!e)throw Error(`No loader specified for extension "${t}"`);if(typeof e!=`function`)throw Error(`loader is not a function`)}let y=e=>(t,n,r)=>(e&&t.set(n,r),r);t.exports.lilconfig=function(e,t){let{ignoreEmptySearchPlaces:i,loaders:a,packageProp:o,searchPlaces:c,stopDir:u,transform:d,cache:f}=h(e,t??{},!1),p=new Map,m=new Map,b=y(f);return{async search(e=process.cwd()){let t={config:null,filepath:``},m=new Set,h=e;dirLoop:for(;;){if(f){let e=p.get(h);if(e!==void 0){for(let t of m)p.set(t,e);return e}m.add(h)}for(let e of c){let c=n.join(h,e);try{await r.promises.access(c)}catch{continue}let l=String(await s(c)),u=n.extname(e)||`noExt`,d=a[u];if(e===`package.json`){let e=g(o,await d(c,l));if(e!=null){t.config=e,t.filepath=c;break dirLoop}continue}let f=l.trim()===``;if(!(f&&i)){f?(t.isEmpty=!0,t.config=void 0):(v(d,u),t.config=await d(c,l)),t.filepath=c;break dirLoop}}if(h===u||h===l(h))break dirLoop;h=l(h)}let _=t.filepath===``&&t.config===null?d(null):d(t);if(f)for(let e of m)p.set(e,_);return _},async load(e){_(e);let t=n.resolve(process.cwd(),e);if(f&&m.has(t))return m.get(t);let{base:r,ext:c}=n.parse(t),l=c||`noExt`,u=a[l];v(u,l);let p=String(await s(t));if(r===`package.json`)return b(m,t,d({config:g(o,await u(t,p)),filepath:t}));let h={config:null,filepath:t},y=p.trim()===``;return y&&i?b(m,t,d({config:void 0,filepath:t,isEmpty:!0})):(h.config=y?void 0:await u(t,p),b(m,t,d(y?{...h,isEmpty:y,config:void 0}:h)))},clearLoadCache(){f&&m.clear()},clearSearchCache(){f&&p.clear()},clearCaches(){f&&(m.clear(),p.clear())}}},t.exports.lilconfigSync=function(e,t){let{ignoreEmptySearchPlaces:i,loaders:a,packageProp:o,searchPlaces:s,stopDir:c,transform:u,cache:d}=h(e,t??{},!0),f=new Map,p=new Map,m=y(d);return{search(e=process.cwd()){let t={config:null,filepath:``},p=new Set,m=e;dirLoop:for(;;){if(d){let e=f.get(m);if(e!==void 0){for(let t of p)f.set(t,e);return e}p.add(m)}for(let e of s){let s=n.join(m,e);try{r.accessSync(s)}catch{continue}let c=n.extname(e)||`noExt`,l=a[c],u=String(r.readFileSync(s));if(e===`package.json`){let e=g(o,l(s,u));if(e!=null){t.config=e,t.filepath=s;break dirLoop}continue}let d=u.trim()===``;if(!(d&&i)){d?(t.isEmpty=!0,t.config=void 0):(v(l,c),t.config=l(s,u)),t.filepath=s;break dirLoop}}if(m===c||m===l(m))break dirLoop;m=l(m)}let h=t.filepath===``&&t.config===null?u(null):u(t);if(d)for(let e of p)f.set(e,h);return h},load(e){_(e);let t=n.resolve(process.cwd(),e);if(d&&p.has(t))return p.get(t);let{base:s,ext:c}=n.parse(t),l=c||`noExt`,f=a[l];v(f,l);let h=String(r.readFileSync(t));if(s===`package.json`)return u({config:g(o,f(t,h)),filepath:t});let y={config:null,filepath:t},b=h.trim()===``;return b&&i?m(p,t,u({filepath:t,config:void 0,isEmpty:!0})):(y.config=b?void 0:f(t,h),m(p,t,u(b?{...y,isEmpty:b,config:void 0}:y)))},clearLoadCache(){d&&p.clear()},clearSearchCache(){d&&f.clear()},clearCaches(){d&&(p.clear(),f.clear())}}}}))();const O=async e=>{let t=await import(n(e).href);return t&&typeof t==`object`&&`default`in t?t.default:t},k=e=>e,A=async()=>{let e=await(0,D.lilconfig)(`mejora`,{loaders:{".js":O,".mjs":O,".mts":O,".ts":O},searchPlaces:[`mejora.config.ts`,`mejora.config.mts`,`mejora.config.js`,`mejora.config.mjs`]}).search(process.cwd());if(!e?.config)throw Error(`No configuration file found.`);return e.config};export{w as a,h as c,E as i,m as l,A as n,C as o,T as r,g as s,k as t,d as u};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{i as e,o as t,t as n}from"./config-qvPknVN-.mjs";export{n as defineConfig,t as eslint,t as eslintCheck,e as typescript,e as typescriptCheck};
1
+ import{a as e,i as t,t as n}from"./config-CtJOKpPZ.mjs";export{n as defineConfig,e as eslint,e as eslintCheck,t as typescript,t as typescriptCheck};
package/dist/run.mjs CHANGED
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
- import{a as e,c as t,d as n,l as r,n as i,r as a,s as o,u as s}from"./config-qvPknVN-.mjs";import{mkdir as c,readFile as l,writeFile as u}from"node:fs/promises";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 ee(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 g=e=>t=>p(e,typeof t==`number`?t.toString():t),_=g(`blue`),v=g(`bold`),y=g(`cyan`),b=g(`dim`),x=g(`green`),S=g(`red`),C=g(`gray`),w=g(`underline`);function te(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 T(e){let t=Math.round(e);return t<1?`<1ms`:te(t)}function E(e,t){return e===1?t:`${t}s`}const D=` `,ne=`${D} `;function re(e){return e===`initial`?b(`→`):e===`improvement`?x(`↑`):S(`↓`)}function ie(e,t,n){let i=s(e),a=r(e),o=t>0?`:${t}:${n>0?n:1}`:``;return`${i===`.`?``:b(`${i}/`)}${w(a)}${o?b(o):``}`}function ae(e,t){return[`${re(t)} ${ie(e.file,e.line,e.column)} ${b(e.rule)}`,e.message]}function O(e,t){let n=[],r=e.slice(0,10);for(let e of r){let[r,i]=ae(e,t);n.push(`${D}${r}`,`${ne}${i}`)}let i=e.length-r.length;return i>0&&n.push(`${D}${b(`... and ${i} more`)}`),n}function oe(e){return e===void 0?[]:[` ${b(`Duration`)} ${T(e)}`]}function se(e){return[` ${b(`Issues`)} ${v(e)}`]}function k(e){return[...oe(e.duration),...se(e.snapshot.items.length)]}function ce(e){if(!e.hasRegression)return[];let t=e.newItems.length;return[` ${S(t)} new ${E(t,`issue`)} (${E(t,`regression`)}):`,...O(e.newItems,`regression`)]}function le(e){if(!e.hasImprovement)return[];let t=e.removedItems.length;return[` ${x(t)} ${E(t,`issue`)} fixed (${E(t,`improvement`)}):`,...O(e.removedItems,`improvement`)]}function ue(e,t){let n=t?``:`
3
- `,r=e.snapshot.items.length,i=[`${n}${_(`ℹ`)} ${e.checkId}:`,` Initial baseline created with ${_(r)} ${E(r,`issue`)}`];return e.snapshot.items.length>0&&i.push(...O(e.snapshot.items,`initial`)),i.push(``,...k(e)),i}function de(e,t){return[`${t?``:`
4
- `}${e.hasRegression?S(`✖`):x(`✔`)} ${e.checkId}:`,...ce(e),...le(e),``,...k(e)]}function fe(e,t){let n=t?``:`
5
- `,r=e.snapshot.items.length;return e.duration===void 0?[`${n}${C(`ℹ`)} ${e.checkId} (${v(r)})`]:[`${n}${C(`ℹ`)} ${e.checkId} (${v(r)}) ${b(T(e.duration))}`]}function pe(e,t){return e.isInitial?ue(e,t):e.hasRegression||e.hasImprovement?de(e,t):fe(e,t)}function me(e,t){return t?_(`✔ Initial baseline created successfully`):e.hasRegression?`${S(`✗ Regressions detected`)} - Run failed`:e.hasImprovement?`${x(`✔ Improvements detected`)} - Baseline updated`:x(`✔ All checks passed`)}function he(e){let t={hasAnyInitial:!1,totalImprovements:0,totalInitial:0,totalIssues:0,totalRegressions: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)}let n=[` ${b(`Improvements`)} ${x(t.totalImprovements)}`,` ${b(`Regressions`)} ${S(t.totalRegressions)}`,` ${b(`Initial`)} ${_(t.totalInitial)}`,` ${b(`Checks`)} ${e.results.length}`,` ${b(`Issues`)} ${v(t.totalIssues)}`],r=h(e.totalDuration,e.results.length);return e.totalDuration!==void 0&&r!==void 0&&n.push(` ${b(`Duration`)} ${T(e.totalDuration)} ${C(`(avg ${T(r)})`)}`),n.push(``,me(e,t.hasAnyInitial)),n.join(`
6
- `)}function A(e){let t=[];for(let[n,r]of e.results.entries())t.push(...pe(r,n===0));return t.length>0&&t.push(``),t.push(he(e)),t.join(`
7
- `)}const j=e=>e in m&&m[e]!==`0`&&m[e]!==`false`;var M=j(`CI`)||j(`CONTINUOUS_INTEGRATION`);function N(e){try{return JSON.parse(e)}catch{return}}function P(e){let t=e.trim();return t.endsWith(`,`)?t.slice(0,-1):t}function F(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 I(e,t){return`${e}${`
2
+ import{c as e,l as t,n,o as r,r as i,s as a,u as o}from"./config-CtJOKpPZ.mjs";import{inspect as s,parseArgs as c,styleText as l}from"node:util";import{mkdir as u,readFile as d,writeFile as f}from"node:fs/promises";import{env as p}from"node:process";function m(e,t){if(!(e===void 0||t===0))return e/t}function h(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 h={checks:p,exitCode:e.exitCode,hasImprovement:e.hasImprovement,hasRegression:e.hasRegression,summary:{avgDuration:m(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(h,null,2)}const g=e=>t=>l(e,typeof t==`number`?t.toString():t),_=g(`blue`),v=g(`bold`),ee=g(`cyan`),y=g(`dim`),b=g(`green`),x=g(`red`),S=g(`gray`),te=g(`underline`);function C(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 w(e){let t=Math.round(e);return t<1?`<1ms`:C(t)}function T(e,t){return e===1?t:`${t}s`}const E=` `,D=`${E} `;function O(e){return e===`initial`?y(`→`):e===`improvement`?b(`↑`):x(`↓`)}function ne(t,n,r){let i=e(t),o=a(t),s=n>0?`:${n}:${r>0?r:1}`:``;return`${i===`.`?``:y(`${i}/`)}${te(o)}${s?y(s):``}`}function re(e,t){return[`${O(t)} ${ne(e.file,e.line,e.column)} ${y(e.rule)}`,e.message]}function k(e,t){let n=[],r=e.slice(0,10);for(let e of r){let[r,i]=re(e,t);n.push(`${E}${r}`,`${D}${i}`)}let i=e.length-r.length;return i>0&&n.push(`${E}${y(`... and ${i} more`)}`),n}function ie(e){return e===void 0?[]:[` ${y(`Duration`)} ${w(e)}`]}function ae(e){return[` ${y(`Issues`)} ${v(e)}`]}function A(e){return[...ie(e.duration),...ae(e.snapshot.items.length)]}function oe(e){if(!e.hasRegression)return[];let t=e.newItems.length;return[` ${x(t)} new ${T(t,`issue`)} (${T(t,`regression`)}):`,...k(e.newItems,`regression`)]}function se(e){if(!e.hasImprovement)return[];let t=e.removedItems.length;return[` ${b(t)} ${T(t,`issue`)} fixed (${T(t,`improvement`)}):`,...k(e.removedItems,`improvement`)]}function ce(e,t){let n=t?``:`
3
+ `,r=e.snapshot.items.length,i=[`${n}${_(`ℹ`)} ${e.checkId}:`,` Initial baseline created with ${_(r)} ${T(r,`issue`)}`];return e.snapshot.items.length>0&&i.push(...k(e.snapshot.items,`initial`)),i.push(``,...A(e)),i}function le(e,t){return[`${t?``:`
4
+ `}${e.hasRegression?x(`✖`):b(`✔`)} ${e.checkId}:`,...oe(e),...se(e),``,...A(e)]}function ue(e,t){let n=t?``:`
5
+ `,r=e.snapshot.items.length;return e.duration===void 0?[`${n}${S(`ℹ`)} ${e.checkId} (${v(r)})`]:[`${n}${S(`ℹ`)} ${e.checkId} (${v(r)}) ${y(w(e.duration))}`]}function de(e,t){return e.isInitial?ce(e,t):e.hasRegression||e.hasImprovement?le(e,t):ue(e,t)}function fe(e,t){return t?_(`✔ Initial baseline created successfully`):e.hasRegression?`${x(`✗ Regressions detected`)} - Run failed`:e.hasImprovement?`${b(`✔ Improvements detected`)} - Baseline updated`:b(`✔ All checks passed`)}function pe(e){let t={hasAnyInitial:!1,totalImprovements:0,totalInitial:0,totalIssues:0,totalRegressions: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)}let n=[` ${y(`Improvements`)} ${b(t.totalImprovements)}`,` ${y(`Regressions`)} ${x(t.totalRegressions)}`,` ${y(`Initial`)} ${_(t.totalInitial)}`,` ${y(`Checks`)} ${e.results.length}`,` ${y(`Issues`)} ${v(t.totalIssues)}`],r=m(e.totalDuration,e.results.length);return e.totalDuration!==void 0&&r!==void 0&&n.push(` ${y(`Duration`)} ${w(e.totalDuration)} ${S(`(avg ${w(r)})`)}`),n.push(``,fe(e,t.hasAnyInitial)),n.join(`
6
+ `)}function me(e){let t=[];for(let[n,r]of e.results.entries())t.push(...de(r,n===0));return t.length>0&&t.push(``),t.push(pe(e)),t.join(`
7
+ `)}const j=e=>e in p&&p[e]!==`0`&&p[e]!==`false`;var M=j(`CI`)||j(`CONTINUOUS_INTEGRATION`);function N(e){try{return JSON.parse(e)}catch{return}}function P(e){let t=e.trim();return t.endsWith(`,`)?t.slice(0,-1):t}function F(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 I(e,t){return`${e}${`
8
8
  }`.repeat(t)}`}function L(e){let t=0;for(let n of e)n===`{`?t++:n===`}`&&t--;return t===0?e:t<0?F(e,-t):I(e,t)}function R(e){return`{
9
9
  "version": 2,
10
10
  ${P(e)}
11
- }`}function z(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 B(e){try{let t=N(e.trim());if(t)return z(t);let n=R(L(P(e)));return z(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 ge(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 _e(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 ve(e){let t=ge(e),n=[];for(let{ours:e,theirs:r}of t)n.push(B(e),B(r));return _e(n)}const V=`__unparsable__`;function H(e){return e.replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`[`,`&#91;`).replaceAll(`]`,`&#93;`)}function U(e,t){return n(t,e)}function W(e,t,r){let i=n(t,e);return r?`${i}#L${r}`:i}function G(e,t){return`[${e}](${t})`}function ye(e,t,n){let r=U(e.file,t),i=W(e.file,n,e.line);return`- ${G(e.line?`Line ${e.line}`:r,i)} - ${`${e.rule}: ${H(e.message)}`}\n`}function be(e){let t=Object.groupBy(e,e=>e.file||V);return Object.entries(t).map(([e,t=[]])=>({filePath:e,items:t})).toSorted((e,t)=>e.filePath===V?1:t.filePath===V?-1:e.filePath.localeCompare(t.filePath))}function xe(e){let t=`\n### Other Issues (${e.length})\n\n`;for(let n of e)t+=`- ${n.rule}: ${H(n.message)}\n`;return`${t}\n`}function Se(e,t,n){if(e.filePath===V)return xe(e.items);let r=`\n### ${G(U(e.filePath,t),W(e.filePath,n))} (${e.items.length})\n\n`;for(let i of e.items)r+=ye(i,t,n);return`${r}\n`}function Ce(e,t,n,r){let i=t.length,a=`\n## ${e} (${i} ${E(i,`issue`)})\n\n`;if(t.length===0)return`${a}No issues\n`;let o=be(t);for(let e of o)a+=Se(e,n,r);return a}function we(e){return`${e.replaceAll(/\n{3,}/g,`
11
+ }`}function z(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 B(e){try{let t=N(e.trim());if(t)return z(t);let n=R(L(P(e)));return z(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(B(e),B(r));return ge(n)}const V=`__unparsable__`;function H(e){return e.replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`[`,`&#91;`).replaceAll(`]`,`&#93;`)}function U(e,n){return t(n,e)}function W(e,n,r){let i=t(n,e);return r?`${i}#L${r}`:i}function G(e,t){return`[${e}](${t})`}function ve(e,t,n){let r=U(e.file,t),i=W(e.file,n,e.line);return`- ${G(e.line?`Line ${e.line}`:r,i)} - ${`${e.rule}: ${H(e.message)}`}\n`}function ye(e){let t=Object.groupBy(e,e=>e.file||V);return Object.entries(t).map(([e,t=[]])=>({filePath:e,items:t})).toSorted((e,t)=>e.filePath===V?1:t.filePath===V?-1:e.filePath.localeCompare(t.filePath))}function be(e){let t=`\n### Other Issues (${e.length})\n\n`;for(let n of e)t+=`- ${n.rule}: ${H(n.message)}\n`;return`${t}\n`}function xe(e,t,n){if(e.filePath===V)return be(e.items);let r=`\n### ${G(U(e.filePath,t),W(e.filePath,n))} (${e.items.length})\n\n`;for(let i of e.items)r+=ve(i,t,n);return`${r}\n`}function Se(e,t,n,r){let i=t.length,a=`\n## ${e} (${i} ${T(i,`issue`)})\n\n`;if(t.length===0)return`${a}No issues\n`;let o=ye(t);for(let e of o)a+=xe(e,n,r);return a}function Ce(e){return`${e.replaceAll(/\n{3,}/g,`
12
12
 
13
- `).trimEnd()}\n`}function Te(e,t){let n=process.cwd(),r=`# Mejora Baseline
13
+ `).trimEnd()}\n`}function we(e,t){let n=process.cwd(),r=`# Mejora Baseline
14
14
 
15
15
  This file represents the current accepted state of the codebase.
16
- `;for(let[i,{items:a=[]}]of Object.entries(e.checks))r+=Ce(i,a,n,t);return we(r)}const Ee=(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 De(e){let t=[e.message];if(e.stack){let n=e.stack.split(`
17
- `).slice(1).map(e=>b(e.trim())).join(`
16
+ `;for(let[i,{items:a=[]}]of Object.entries(e.checks))r+=Se(i,a,n,t);return Ce(r)}const Te=(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 Ee(e){let t=[e.message];if(e.stack){let n=e.stack.split(`
17
+ `).slice(1).map(e=>y(e.trim())).join(`
18
18
  `);t.push(n)}return t.join(`
19
- `)}function K(...e){return e.map(e=>typeof e==`string`?e:e instanceof Error?De(e):d(e,{colors:!1,depth:10})).join(` `)}const q={error:(...e)=>{console.error(S(`✖`),K(...e))},log:(...e)=>{console.log(K(...e))},start:(...e)=>{console.log(y(`◐`),K(...e))},success:(...e)=>{console.log(x(`✔`),K(...e))}};var J=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 Ee(r,a)?i:{...i,checks:{...i.checks,[n]:r}}}async load(){try{let e=await l(this.baselinePath,`utf8`);if(e.includes(`<<<<<<<`)){q.start(`Merge conflict detected in baseline, auto-resolving...`);let t=ve(e);return await this.save(t,!0),q.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(M&&!t)return;let n=`${JSON.stringify(e,null,2)}\n`,r=this.baselinePath.replace(`.json`,`.md`),i=Te(e,s(this.baselinePath));await c(s(this.baselinePath),{recursive:!0}),await Promise.all([u(this.baselinePath,n,`utf8`),u(r,i,`utf8`)])}};function Y(){return{hasImprovement:!1,hasRegression:!1,hasRelocation:!1,isInitial:!0,newItems:[],removedItems:[]}}function Oe(e,t,n){return{hasImprovement:t.length>0,hasRegression:e.length>0,hasRelocation:n,isInitial:!1,newItems:e.toSorted((e,t)=>e.id.localeCompare(t.id)),removedItems:t.toSorted((e,t)=>e.id.localeCompare(t.id))}}function X(e=[]){return new Map(e.map(e=>[e.id,e]))}function Z(e){return new Set(e.keys())}function Q(e,t){let n=[];for(let r of t){let t=e.get(r);n.push(t)}return n}function ke(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 Ae(e,t){let n=X(e.items),r=X(t.items),i=Z(n),a=Z(r),o=i.difference(a),s=a.difference(i);return Oe(Q(n,o),Q(r,s),ke(n,r))}function je(e,t){return t?Ae(e,t):Y()}var Me=class n{baselineManager;constructor(e){this.baselineManager=new J(e)}static filterChecks(e,t){let r=t.only?n.resolveRegex(t.only,`--only`):null,i=t.skip?n.resolveRegex(t.skip,`--skip`):null;return!r&&!i?e:Object.fromEntries(Object.entries(e).filter(([e])=>!(r&&!r.test(e)||i?.test(e))))}static resolveRegex(e,t){try{return new RegExp(e)}catch{throw Error(`Invalid regex pattern for ${t}: "${e}"`)}}static async runCheck(e){return e.type===`eslint`?o(e):a(e)}static async validateAllDeps(n){let r=new Set(Object.values(n).map(e=>e.type)),i=[];r.has(`eslint`)&&i.push(t()),r.has(`typescript`)&&i.push(e()),await Promise.all(i)}async run(e,t={}){let r=performance.now(),i=await this.baselineManager.load(),a=n.filterChecks(e.checks,t);try{await n.validateAllDeps(a)}catch(e){return q.error(`Dependency validation failed:`,e),{exitCode:2,hasImprovement:!1,hasRegression:!0,results:[],totalDuration:performance.now()-r}}let o=Object.keys(a).length;q.start(`Running ${o} check${o===1?``:`s`}...`);let s=await this.executeChecks(a,i);if(!s)return{exitCode:2,hasImprovement:!1,hasRegression:!0,results:[],totalDuration:performance.now()-r};let{flags:c,results:l,updatedBaseline:u}=this.buildResults(s,i,t);return u&&u!==i&&(!c.hasAnyRegression||t.force||c.hasAnyInitial)&&await this.baselineManager.save(u,t.force),{exitCode:c.hasAnyRegression&&!t.force?1:0,hasImprovement:c.hasAnyImprovement,hasRegression:c.hasAnyRegression,results:l,totalDuration:performance.now()-r}}buildResults(e,t,n){let r=[],i=t,a=!1,o=!1,s=!1;for(let{baselineEntry:t,checkId:c,comparison:l,duration:u,snapshot:d}of e)r.push({baseline:t,checkId:c,duration:u,hasImprovement:l.hasImprovement,hasRegression:l.hasRegression,hasRelocation:l.hasRelocation,isInitial:l.isInitial,newItems:l.newItems,removedItems:l.removedItems,snapshot:d}),l.hasRegression&&(a=!0),l.hasImprovement&&(o=!0),l.isInitial&&(s=!0),(l.hasImprovement||l.hasRelocation||n.force||l.isInitial)&&(i=J.update(i,c,{items:d.items,type:d.type}));return{flags:{hasAnyImprovement:o,hasAnyInitial:s,hasAnyRegression:a},results:r,updatedBaseline:i}}async executeChecks(e,t){let r=Object.entries(e).map(async([e,r])=>{try{let i=performance.now(),a=await n.runCheck(r),o=performance.now()-i,s=J.getEntry(t,e);return{baselineEntry:s,checkId:e,comparison:je(a,s),duration:o,snapshot:a}}catch(t){throw q.error(`Error running check "${e}":`,t),t}});try{return await Promise.all(r)}catch{return null}}};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&&(q.log(`
19
+ `)}function K(...e){return e.map(e=>typeof e==`string`?e:e instanceof Error?Ee(e):s(e,{colors:!1,depth:10})).join(` `)}const q={error:(...e)=>{console.error(x(`✖`),K(...e))},log:(...e)=>{console.log(K(...e))},start:(...e)=>{console.log(ee(`◐`),K(...e))},success:(...e)=>{console.log(b(`✔`),K(...e))}};var J=class t{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(e,n,r){let i=e??t.create({}),a=i.checks[n];return Te(r,a)?i:{...i,checks:{...i.checks,[n]:r}}}async load(){try{let e=await d(this.baselinePath,`utf8`);if(e.includes(`<<<<<<<`)){q.start(`Merge conflict detected in baseline, auto-resolving...`);let t=_e(e);return await this.save(t,!0),q.success(`Baseline conflict resolved`),t}return JSON.parse(e)}catch(e){if(e.code===`ENOENT`)return null;throw e}}async save(t,n=!1){if(M&&!n)return;let r=`${JSON.stringify(t,null,2)}\n`,i=this.baselinePath.replace(`.json`,`.md`),a=we(t,e(this.baselinePath));await u(e(this.baselinePath),{recursive:!0}),await Promise.all([f(this.baselinePath,r,`utf8`),f(i,a,`utf8`)])}};function De(){return{hasImprovement:!1,hasRegression:!1,hasRelocation:!1,isInitial:!0,newItems:[],removedItems:[]}}function Y(e,t,n){return{hasImprovement:t.length>0,hasRegression:e.length>0,hasRelocation:n,isInitial:!1,newItems:e.toSorted((e,t)=>e.id.localeCompare(t.id)),removedItems:t.toSorted((e,t)=>e.id.localeCompare(t.id))}}function X(e=[]){return new Map(e.map(e=>[e.id,e]))}function Z(e){return new Set(e.keys())}function Q(e,t){let n=[];for(let r of t){let t=e.get(r);n.push(t)}return n}function Oe(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 ke(e,t){let n=X(e.items),r=X(t.items),i=Z(n),a=Z(r),o=i.difference(a),s=a.difference(i);return Y(Q(n,o),Q(r,s),Oe(n,r))}function Ae(e,t){return t?ke(e,t):De()}var je=class e{baselineManager;constructor(e){this.baselineManager=new J(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:Object.fromEntries(Object.entries(t).filter(([e])=>!(r&&!r.test(e)||i?.test(e))))}static getRequiredCheckTypes(e){return new Set(Object.values(e).map(e=>e.type))}static resolveRegex(e,t){try{return new RegExp(e)}catch{throw Error(`Invalid regex pattern for ${t}: "${e}"`)}}static async runCheck(e){return e.type===`eslint`?r(e):i(e)}static async setupInfrastructure(t){let n=o(process.cwd(),`node_modules`,`.cache`,`mejora`),r=[n,...[...e.getRequiredCheckTypes(t)].map(e=>o(n,e))];await Promise.all(r.map(e=>u(e,{recursive:!0})))}static async validateAllDeps(t){let n=e.getRequiredCheckTypes(t),r=[];n.has(`eslint`)&&r.push(import(`eslint`)),n.has(`typescript`)&&r.push(import(`typescript`)),await Promise.all(r)}async run(t,n={}){let r=performance.now(),i=await this.baselineManager.load(),a=e.filterChecks(t.checks,n);try{await Promise.all([e.setupInfrastructure(a),e.validateAllDeps(a)])}catch(e){return q.error(`Setup failed:`,e),{exitCode:2,hasImprovement:!1,hasRegression:!0,results:[],totalDuration:performance.now()-r}}let o=Object.keys(a).length;q.start(`Running ${o} check${o===1?``:`s`}...`);let s=await this.executeChecks(a,i);if(!s)return{exitCode:2,hasImprovement:!1,hasRegression:!0,results:[],totalDuration:performance.now()-r};let{flags:c,results:l,updatedBaseline:u}=this.buildResults(s,i,n);return u&&u!==i&&(!c.hasAnyRegression||n.force||c.hasAnyInitial)&&await this.baselineManager.save(u,n.force),{exitCode:c.hasAnyRegression&&!n.force?1:0,hasImprovement:c.hasAnyImprovement,hasRegression:c.hasAnyRegression,results:l,totalDuration:performance.now()-r}}buildResults(e,t,n){let r=[],i=t,a=!1,o=!1,s=!1;for(let{baselineEntry:t,checkId:c,comparison:l,duration:u,snapshot:d}of e)r.push({baseline:t,checkId:c,duration:u,hasImprovement:l.hasImprovement,hasRegression:l.hasRegression,hasRelocation:l.hasRelocation,isInitial:l.isInitial,newItems:l.newItems,removedItems:l.removedItems,snapshot:d}),l.hasRegression&&(a=!0),l.hasImprovement&&(o=!0),l.isInitial&&(s=!0),(l.hasImprovement||l.hasRelocation||n.force||l.isInitial)&&(i=J.update(i,c,{items:d.items,type:d.type}));return{flags:{hasAnyImprovement:o,hasAnyInitial:s,hasAnyRegression:a},results:r,updatedBaseline:i}}async executeChecks(t,n){let r=Object.entries(t).map(async([t,r])=>{try{let i=performance.now(),a=await e.runCheck(r),o=performance.now()-i,s=J.getEntry(n,t);return{baselineEntry:s,checkId:t,comparison:Ae(a,s),duration:o,snapshot:a}}catch(e){throw q.error(`Error running check "${t}":`,e),e}});try{return await Promise.all(r)}catch{return null}}};const{values:$}=c({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&&(q.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 Me,t=await i(),n=await e.run(t,{force:$.force,json:$.json,only:$.only,skip:$.skip});$.json?q.log(ee(n)):(q.log(``),q.log(A(n))),process.exit(n.exitCode)}catch(e){e instanceof Error?q.error(e.message):q.error(e),process.exit(2)}export{};
38
+ `),process.exit(0));try{let e=new je,t=await n(),r=await e.run(t,{force:$.force,json:$.json,only:$.only,skip:$.skip});$.json?q.log(h(r)):(q.log(``),q.log(me(r))),process.exit(r.exitCode)}catch(e){e instanceof Error?q.error(e.message):q.error(e),process.exit(2)}export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mejora",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "Prevent regressions. Allow improvement.",
5
5
  "keywords": [
6
6
  "regression",
@@ -1,3 +0,0 @@
1
- import{createRequire as e}from"node:module";import{hash as t}from"node:crypto";import{mkdir as n}from"node:fs/promises";import{pathToFileURL as r}from"node:url";var i=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),a=e(import.meta.url);const o=/^[A-Za-z]:\//;function s(e=``){return e&&e.replace(/\\/g,`/`).replace(o,e=>e.toUpperCase())}const c=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,l=/^[A-Za-z]:$/,u=/^\/([A-Za-z]:)?$/;function d(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}const f=function(...e){e=e.map(e=>s(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:d();!i||i.length===0||(t=`${i}/${t}`,n=m(i))}return t=p(t,!n),n&&!m(t)?`/${t}`:t.length>0?t:`.`};function p(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else if(o===`/`)break;else o=`/`;if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}else if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}const m=function(e){return c.test(e)},h=function(e,t){let n=f(e).replace(u,`$1`).split(`/`),r=f(t).replace(u,`$1`).split(`/`);if(r[0][1]===`:`&&n[0][1]===`:`&&n[0]!==r[0])return r.join(`/`);let i=[...n];for(let e of i){if(r[0]!==e)break;n.shift(),r.shift()}return[...n.map(()=>`..`),...r].join(`/`)},g=function(e){let t=s(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&l.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(m(e)?`/`:`.`)},_=function(e,t){let n=s(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},v=e=>t(`sha256`,e,`hex`);function y(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 b(e){let t=Map.groupBy(e,e=>e.signature),n=[];for(let[e,r]of t){r.sort(y);for(let[t,i]of r.entries()){let{signature:r,...a}=i;n.push({...a,id:v(`${e}:${t}`)})}}return n}const x=(e,t)=>{if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t,n={};for(let t of Object.keys(e).toSorted())n[t]=e[t];return n}return t};function S(e){return v(JSON.stringify(e??null,x))}async function C(e=process.cwd(),t){let r=f(e,`node_modules`,`.cache`,`mejora`,...t?[t]:[]);return await n(r,{recursive:!0}),r}async function w(){try{await import(`eslint`)}catch{throw Error(`ESLint check requires eslint but it's not installed.`)}}async function T(e){let{ESLint:t}=await import(`eslint`),n=process.cwd(),r=await new t({cache:!0,cacheLocation:`${await C(n,`eslint`)}/${S(e)}.eslintcache`,concurrency:`auto`,overrideConfig:e.overrides}).lintFiles(e.files),i=[];for(let{filePath:e,messages:t}of r){let r=h(n,e);for(let{column:e,line:n,message:a,ruleId:o}of t){if(!o)continue;let t=`${r} - ${o}: ${a}`;i.push({column:e,file:r,line:n,message:a,rule:o,signature:t})}}return{items:b(i).toSorted(y),type:`items`}}function E(e){return{type:`eslint`,...e}}async function D(){try{await import(`typescript`)}catch{throw Error(`TypeScript check requires typescript but it's not installed.`)}}async function O(e){let{createIncrementalCompilerHost:t,createIncrementalProgram:n,findConfigFile:r,flattenDiagnosticMessageText:i,getPreEmitDiagnostics:a,parseJsonConfigFileContent:o,readConfigFile:s,sys:c,version:l}=await import(`typescript`),u=process.cwd(),d=c.fileExists.bind(c),p=c.readFile.bind(c),m=e.tsconfig?f(e.tsconfig):r(u,d,`tsconfig.json`);if(!m)throw Error(`TypeScript config file not found`);let{config:g,error:_}=s(m,p);if(_){let e=typeof _.messageText==`string`?_.messageText:i(_.messageText,`
2
- `);throw TypeError(`Failed to read TypeScript config: ${e}`)}let v=o(g,c,u,e.overrides?.compilerOptions),x=f(await C(u,`typescript`),`${S({configPath:m,overrides:e.overrides?.compilerOptions??{},parsedOptions:v.options,typescriptVersion:l})}.tsbuildinfo`),w={...v.options,incremental:!0,noEmit:!0,skipLibCheck:v.options.skipLibCheck??!0,tsBuildInfoFile:x},T=t(w,c),E=T.writeFile.bind(T);T.writeFile=(e,t,...n)=>{f(e)===f(x)&&E(e,t,...n)};let D=n({host:T,options:w,projectReferences:v.projectReferences??[],rootNames:v.fileNames}),O=a(D.getProgram());D.emit();let k=O.filter(e=>{if(!e.file)return!0;let t=f(e.file.fileName),n=f(u);return t===n||t.startsWith(n+`/`)}),A=[];for(let e of k){let t=i(e.messageText,`
3
- `),n=`TS${e.code}`;if(e.file&&e.start!==void 0){let{character:r,line:i}=e.file.getLineAndCharacterOfPosition(e.start),a=h(u,e.file.fileName),o=`${a} - ${n}: ${t}`;A.push({column:r+1,file:a,line:i+1,message:t,rule:n,signature:o})}else{let e=`(global)`,r=`${e} - ${n}: ${t}`;A.push({column:0,file:e,line:0,message:t,rule:n,signature:r})}}return{items:b(A).toSorted(y),type:`items`}}function k(e){return{type:`typescript`,...e}}var A=i(((e,t)=>{let n=a(`path`),r=a(`fs`),i=a(`os`),o=a(`url`),s=r.promises.readFile;function c(e,t){return[`package.json`,`.${e}rc.json`,`.${e}rc.js`,`.${e}rc.cjs`,...t?[]:[`.${e}rc.mjs`],`.config/${e}rc`,`.config/${e}rc.json`,`.config/${e}rc.js`,`.config/${e}rc.cjs`,...t?[]:[`.config/${e}rc.mjs`],`${e}.config.js`,`${e}.config.cjs`,...t?[]:[`${e}.config.mjs`]]}function l(e){return n.dirname(e)||n.sep}let u=(e,t)=>JSON.parse(t),d=typeof __webpack_require__==`function`?__non_webpack_require__:a,f=Object.freeze({".js":d,".json":d,".cjs":d,noExt:u});t.exports.defaultLoadersSync=f;let p=async e=>{try{return(await import(o.pathToFileURL(e).href)).default}catch(t){try{return d(e)}catch(e){throw e.code===`ERR_REQUIRE_ESM`||e instanceof SyntaxError&&e.toString().includes(`Cannot use import statement outside a module`)?t:e}}},m=Object.freeze({".js":p,".mjs":p,".cjs":p,".json":u,noExt:u});t.exports.defaultLoaders=m;function h(e,t,r){let a={stopDir:i.homedir(),searchPlaces:c(e,r),ignoreEmptySearchPlaces:!0,cache:!0,transform:e=>e,packageProp:[e],...t,loaders:{...r?f:m,...t.loaders}};return a.searchPlaces.forEach(e=>{let t=n.extname(e)||`noExt`,r=a.loaders[t];if(!r)throw Error(`Missing loader for extension "${e}"`);if(typeof r!=`function`)throw Error(`Loader for extension "${e}" is not a function: Received ${typeof r}.`)}),a}function g(e,t){return typeof e==`string`&&e in t?t[e]:(Array.isArray(e)?e:e.split(`.`)).reduce((e,t)=>e===void 0?e:e[t],t)||null}function _(e){if(!e)throw Error(`load must pass a non-empty string`)}function v(e,t){if(!e)throw Error(`No loader specified for extension "${t}"`);if(typeof e!=`function`)throw Error(`loader is not a function`)}let y=e=>(t,n,r)=>(e&&t.set(n,r),r);t.exports.lilconfig=function(e,t){let{ignoreEmptySearchPlaces:i,loaders:a,packageProp:o,searchPlaces:c,stopDir:u,transform:d,cache:f}=h(e,t??{},!1),p=new Map,m=new Map,b=y(f);return{async search(e=process.cwd()){let t={config:null,filepath:``},m=new Set,h=e;dirLoop:for(;;){if(f){let e=p.get(h);if(e!==void 0){for(let t of m)p.set(t,e);return e}m.add(h)}for(let e of c){let c=n.join(h,e);try{await r.promises.access(c)}catch{continue}let l=String(await s(c)),u=n.extname(e)||`noExt`,d=a[u];if(e===`package.json`){let e=g(o,await d(c,l));if(e!=null){t.config=e,t.filepath=c;break dirLoop}continue}let f=l.trim()===``;if(!(f&&i)){f?(t.isEmpty=!0,t.config=void 0):(v(d,u),t.config=await d(c,l)),t.filepath=c;break dirLoop}}if(h===u||h===l(h))break dirLoop;h=l(h)}let _=t.filepath===``&&t.config===null?d(null):d(t);if(f)for(let e of m)p.set(e,_);return _},async load(e){_(e);let t=n.resolve(process.cwd(),e);if(f&&m.has(t))return m.get(t);let{base:r,ext:c}=n.parse(t),l=c||`noExt`,u=a[l];v(u,l);let p=String(await s(t));if(r===`package.json`)return b(m,t,d({config:g(o,await u(t,p)),filepath:t}));let h={config:null,filepath:t},y=p.trim()===``;return y&&i?b(m,t,d({config:void 0,filepath:t,isEmpty:!0})):(h.config=y?void 0:await u(t,p),b(m,t,d(y?{...h,isEmpty:y,config:void 0}:h)))},clearLoadCache(){f&&m.clear()},clearSearchCache(){f&&p.clear()},clearCaches(){f&&(m.clear(),p.clear())}}},t.exports.lilconfigSync=function(e,t){let{ignoreEmptySearchPlaces:i,loaders:a,packageProp:o,searchPlaces:s,stopDir:c,transform:u,cache:d}=h(e,t??{},!0),f=new Map,p=new Map,m=y(d);return{search(e=process.cwd()){let t={config:null,filepath:``},p=new Set,m=e;dirLoop:for(;;){if(d){let e=f.get(m);if(e!==void 0){for(let t of p)f.set(t,e);return e}p.add(m)}for(let e of s){let s=n.join(m,e);try{r.accessSync(s)}catch{continue}let c=n.extname(e)||`noExt`,l=a[c],u=String(r.readFileSync(s));if(e===`package.json`){let e=g(o,l(s,u));if(e!=null){t.config=e,t.filepath=s;break dirLoop}continue}let d=u.trim()===``;if(!(d&&i)){d?(t.isEmpty=!0,t.config=void 0):(v(l,c),t.config=l(s,u)),t.filepath=s;break dirLoop}}if(m===c||m===l(m))break dirLoop;m=l(m)}let h=t.filepath===``&&t.config===null?u(null):u(t);if(d)for(let e of p)f.set(e,h);return h},load(e){_(e);let t=n.resolve(process.cwd(),e);if(d&&p.has(t))return p.get(t);let{base:s,ext:c}=n.parse(t),l=c||`noExt`,f=a[l];v(f,l);let h=String(r.readFileSync(t));if(s===`package.json`)return u({config:g(o,f(t,h)),filepath:t});let y={config:null,filepath:t},b=h.trim()===``;return b&&i?m(p,t,u({filepath:t,config:void 0,isEmpty:!0})):(y.config=b?void 0:f(t,h),m(p,t,u(b?{...y,isEmpty:b,config:void 0}:y)))},clearLoadCache(){d&&p.clear()},clearSearchCache(){d&&f.clear()},clearCaches(){d&&(p.clear(),f.clear())}}}}))();const j=async e=>{let t=await import(r(e).href);return t&&typeof t==`object`&&`default`in t?t.default:t},M=e=>e,N=async()=>{let e=await(0,A.lilconfig)(`mejora`,{loaders:{".js":j,".mjs":j,".mts":j,".ts":j},searchPlaces:[`mejora.config.ts`,`mejora.config.mts`,`mejora.config.js`,`mejora.config.mjs`]}).search(process.cwd());if(!e?.config)throw Error(`No configuration file found.`);return e.config};export{D as a,w as c,h as d,k as i,_ as l,N as n,E as o,O as r,T as s,M as t,g as u};