UNPKG

@korautils/alias-fixer

Version:

A development utility to automatically fix relative imports by replacing them with path aliases defined in your tsconfig.json. Ideal for streamlining large codebases with consistent import paths.

2 lines 3.69 kB
"use strict";var S=Object.create;var j=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var W=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var A=(t,s,o,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let e of R(s))!$.call(t,e)&&e!==o&&j(t,e,{get:()=>s[e],enumerable:!(r=I(s,e))||r.enumerable});return t};var h=(t,s,o)=>(o=t!=null?S(W(t)):{},A(s||!t||!t.__esModule?j(o,"default",{value:t,enumerable:!0}):o,t));var f=h(require("fs"),1),i=h(require("path"),1),O=h(require("figlet"),1),T=h(require("jsonc-parser"),1),C=t=>{console.log("-----------------------------------------------"),console.log(t),console.log("-----------------------------------------------"),console.log("*********** @korautils/alias-fixer ************"),console.log("-----------------------------------------------"),console.log("\u{1F50D} Finding tsconfig file...");let s=B();if(!z(s)){console.log("ERROR: No se encontr\xF3 el archivo tsconfig.json o no se encontr\xF3 una configuraci\xF3n v\xE1lida"),console.log("Se finaliza la operaci\xF3n.");return}let o=i.default.resolve(process.cwd(),F("--dir","./")),r=F("--types","ts,tsx,jsx,js").split(","),e=y(s,"exclude",["node_modules"]);console.log("\u{1F5C2}\uFE0F dir:",o),console.log("\u26AA\uFE0F types:",r),console.log("\u{1F6AB} exclude:",e);let n=L(o,r,e);E(n,s),console.log("-----------------------------------------------"),console.log("\u2705 Process completed successfully."),console.log("-----------------------------------------------")};function E(t,s){let o=s.compilerOptions?.paths||{},r=i.default.resolve(process.cwd(),s.compilerOptions?.baseUrl||"./"),e=[];for(let n in o)if(Object.prototype.hasOwnProperty.call(o,n)){let p=o[n];e.push({alias:n.replace(/\/\*{1,2}(\*)?$/,""),folders:p.map(g=>i.default.join(process.cwd(),g.replace(/\/\*{1,2}(\*)?$/,"")))})}t.forEach(n=>{let p=f.default.readFileSync(n,"utf-8"),g=p.replace(/(import\s+.*?['"])(\.{1,2}\/.*?)(['"])/g,(c,l,u,w)=>{let v=i.default.resolve(i.default.dirname(n),u),b=U(u),P=i.default.dirname(n);for(let a=0;a<b;a++)P=i.default.dirname(P);if(!P.startsWith(r)||e.every(a=>!a.folders.some(m=>v.startsWith(m))))return c;let d=null;return e.forEach(a=>{a.folders.forEach(m=>{if(v.startsWith(m)){let k=i.default.relative(m,v),x=i.default.join(a.alias,k);(!d||x.length>d.relativeImportPath.length)&&(d={alias:a.alias,relativeImportPath:x})}})}),d?`${l}${y(d,"relativeImportPath")}${w}`:c});p!==g&&(console.log("Updated import in:",n),f.default.writeFileSync(n,g,"utf-8"))})}function U(t){let s=/\.\.\//g,o=t.match(s);return o?o.length:0}function L(t,s,o=[]){let r=[];function e(n){let p=f.default.readdirSync(n,{withFileTypes:!0}),g=o.map(c=>{let l=i.default.join(n,c.trim());return f.default.existsSync(l)?l:c.trim()});for(let c of p){let l=i.default.join(n,c.name);if(!g.some(u=>l.includes(u))){if(c.isDirectory())e(l);else if(c.isFile()){let u=i.default.extname(c.name).slice(1);s.includes(u)&&r.push(l)}}}}return e(t),r}function F(t,s="./"){let o=process.argv.slice(2),r=`${t}=`,e=o.find(n=>n.startsWith(r));return e?e.slice(r.length):s}var z=t=>{let s=y(t,"compilerOptions.baseUrl"),o=y(t,"compilerOptions.paths");return!(!t||!s||!o||Object.keys(o).filter(e=>e.startsWith("@/")).length==0)},B=()=>{let t=i.default.resolve(process.cwd(),"tsconfig.json");if(!f.default.existsSync(t))return;let s=f.default.readFileSync(t,"utf-8");return T.parse(s)};(0,O.default)("kora-utils",(t,s)=>{if(t){console.log("Algo sali\xF3 mal...",t);return}C(s)});function y(t,s,o){if(!t||typeof s!="string")return o;let r=s.split("."),e=t;for(let n of r)if(e&&typeof e=="object"&&n in e)e=e[n];else return o;return e} //# sourceMappingURL=index.cjs.map