minipp
Version:
Quickly help you find files that are not being used in your project, and slim down your project.
2 lines (1 loc) • 6.89 kB
JavaScript
import _ from"path";import d from"fs";import k from"url";import{transform as ie}from"@swc/core";import{styleText as oe}from"util";function w(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var x={exports:{}},G;function ce(){if(G)return x.exports;G=1;function n(t){return Array.isArray(t)?t:[t]}const c=void 0,a="",r=" ",l="\\",f=/^\s+$/,p=/(?:[^\\]|^)\\$/,I=/^\\!/,h=/^\\#/,B=/\r?\n/g,M=/^\.{0,2}\/|^\.{1,2}$/,H=/\/$/,E="/";let D="node-ignore";typeof Symbol<"u"&&(D=Symbol.for("node-ignore"));const T=D,R=(t,e,s)=>(Object.defineProperty(t,e,{value:s}),s),U=/([0-z])-([0-z])/g,j=()=>!1,W=t=>t.replace(U,(e,s,i)=>s.charCodeAt(0)<=i.charCodeAt(0)?e:a),K=t=>{const{length:e}=t;return t.slice(0,e-e%2)},J=[[/^\uFEFF/,()=>a],[/((?:\\\\)*?)(\\?\s+)$/,(t,e,s)=>e+(s.indexOf("\\")===0?r:a)],[/(\\+?)\s/g,(t,e)=>{const{length:s}=e;return e.slice(0,s-s%2)+r}],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,s)=>e+6<s.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(t,e,s)=>{const i=s.replace(/\\\*/g,"[^\\/]*");return e+i}],[/\\\\\\(?=[$.|*+(){^])/g,()=>l],[/\\\\/g,()=>l],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,s,i,o)=>e===l?`\\[${s}${K(i)}${o}`:o==="]"&&i.length%2===0?`[${W(s)}${i}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`]],z=/(^|\\\/)?\\\*$/,m="regex",A="checkRegex",v="_",V={[m](t,e){return`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`},[A](t,e){return`${e?`${e}[^/]*`:"[^/]*"}(?=$|\\/$)`}},Y=t=>J.reduce((e,[s,i])=>e.replace(s,i.bind(t)),t),C=t=>typeof t=="string",q=t=>t&&C(t)&&!f.test(t)&&!p.test(t)&&t.indexOf("#")!==0,Q=t=>t.split(B).filter(Boolean);class Z{constructor(e,s,i,o,u,y){this.pattern=e,this.mark=s,this.negative=u,R(this,"body",i),R(this,"ignoreCase",o),R(this,"regexPrefix",y)}get regex(){const e=v+m;return this[e]?this[e]:this._make(m,e)}get checkRegex(){const e=v+A;return this[e]?this[e]:this._make(A,e)}_make(e,s){const i=this.regexPrefix.replace(z,V[e]),o=this.ignoreCase?new RegExp(i,"i"):new RegExp(i);return R(this,s,o)}}const ee=({pattern:t,mark:e},s)=>{let i=!1,o=t;o.indexOf("!")===0&&(i=!0,o=o.substr(1)),o=o.replace(I,"!").replace(h,"#");const u=Y(o);return new Z(t,e,o,s,i,u)};class te{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[T]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(C(e)&&(e={pattern:e}),q(e.pattern)){const s=ee(e,this._ignoreCase);this._added=!0,this._rules.push(s)}}add(e){return this._added=!1,n(C(e)?Q(e):e).forEach(this._add,this),this._added}test(e,s,i){let o=!1,u=!1,y;this._rules.forEach(P=>{const{negative:S}=P;u===S&&o!==u||S&&!o&&!u&&!s||!P[i].test(e)||(o=!S,u=S,y=S?c:P)});const O={ignored:o,unignored:u};return y&&(O.rule=y),O}}const se=(t,e)=>{throw new e(t)},g=(t,e,s)=>C(t)?t?g.isNotRelative(t)?s(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:s("path must not be empty",TypeError):s(`path must be a string, but got \`${e}\``,TypeError),F=t=>M.test(t);g.isNotRelative=F,g.convert=t=>t;class ne{constructor({ignorecase:e=!0,ignoreCase:s=e,allowRelativePaths:i=!1}={}){R(this,T,!0),this._rules=new te(s),this._strictPathCheck=!i,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,s,i,o){const u=e&&g.convert(e);return g(u,e,this._strictPathCheck?se:j),this._t(u,s,i,o)}checkIgnore(e){if(!H.test(e))return this.test(e);const s=e.split(E).filter(Boolean);if(s.pop(),s.length){const i=this._t(s.join(E)+E,this._testCache,!0,s);if(i.ignored)return i}return this._rules.test(e,!1,A)}_t(e,s,i,o){if(e in s)return s[e];if(o||(o=e.split(E).filter(Boolean)),o.pop(),!o.length)return s[e]=this._rules.test(e,i,m);const u=this._t(o.join(E)+E,s,i,o);return s[e]=u.ignored?u:this._rules.test(e,i,m)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}}const N=t=>new ne(t),re=t=>g(t&&g.convert(t),t,j);if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){const t=s=>/^\\\\\?\\/.test(s)||/["<>|\u0000-\u001F]+/u.test(s)?s:s.replace(/\\/g,"/");g.convert=t;const e=/^[a-z]:\//i;g.isNotRelative=s=>e.test(s)||F(s)}return x.exports=N,N.default=N,x.exports.isPathValid=re,x.exports}var ae=ce();const le=w(ae),L={needDel:!1,ignoreExt:[],ignoreFiles:[],ignoreDependencies:[]},$="minipp-delete-files",b=["ts","tsx","less","scss","css","png","jpg","jpeg","gif","svg","mp3","mp4","wav","woff","woff2","ttf","eot","json"],ue=b.map(n=>`.${n}`);function fe(n){const c=_.join(n,"package.json");if(!d.existsSync(c))throw new Error(`package.json not found in ${n}`);const a=JSON.parse(d.readFileSync(c,"utf8")),r=new Set,l={dependencies:a.dependencies||{},devDependencies:a.devDependencies||{}};let f;for(f in l)for(const p in l[f])r.add(p);return r}function de(){const n=process.argv.slice(2),c={};let a=process.cwd();for(let r=0;r<n.length;r++){const l=n[r];l==="--ignore"&&n[r+1]?(c.ignoreDirs=n[r+1].split(","),r++):l==="--extensions"&&n[r+1]?(c.supportedExtensions=n[r+1].split(","),r++):l==="--tsconfig"&&n[r+1]?(c.tsConfigPath=n[r+1],r++):l.startsWith("--")||(a=_.resolve(l))}return{projectRoot:a,options:c}}async function _e(n){const c=_.extname(n);let a=L;if(c===".js"||c===".cjs"||c===".mjs"){const r=await import(k.pathToFileURL(n).href);a=r.default??r}else if(c===".ts"){const r=d.readFileSync(n,"utf-8"),{code:l}=await ie(r,{filename:n,jsc:{parser:{syntax:"typescript",tsx:!1},target:"es2020"},module:{type:"es6"}}),f=n+".tmp.mjs";d.writeFileSync(f,l);try{const p=await import(k.pathToFileURL(f).href);a=p.default??p}finally{d.unlinkSync(f)}}return{...L,...a}}function ge(n={}){return{...L,...n}}function X(n){const c=_.extname(n);return ue.includes(c)}function pe(n,c){for(const a of n)if(X(a)){const r=_.join(c,a),l=_.join(c,$,a);d.mkdirSync(_.dirname(l),{recursive:!0}),d.copyFileSync(r,l),d.unlink(r,f=>{f&&console.log(`Delete the file ${oe("blue",a)} fail.`)})}}async function he(n,c){const a=_.join(c,"package.json"),{default:r}=await import(a,{with:{type:"json"}}),l=JSON.parse(JSON.stringify(r)),f=r.devDependencies||{},p=r.dependencies||{};for(const h in p)n.includes(h)&&delete l?.dependencies?.[h];for(const h in f)n.includes(h)&&delete l?.devDependencies?.[h];const I=_.join(c,$);d.mkdirSync(I,{recursive:!0}),d.writeFileSync(_.join(c,$,"package.json"),JSON.stringify(r,null,2)),d.writeFileSync(a,JSON.stringify(l,null,2))}function Ee(n,c){return le().add(c).filter(n)}export{$ as B,fe as a,pe as b,he as c,ge as d,w as g,X as h,_e as l,Ee as m,de as p,b as s};