UNPKG

16.5 kBJavaScriptView Raw
1import r from"path";import h from"fs";import pe from"module";import{resolveExports as ge}from"resolve-pkg-maps";function L(e){return e.startsWith("\\\\?\\")?e:e.replace(/\\/g,"/")}const x=e=>{const s=h[e];return function(i,...n){const t=`${e}:${n.join(":")}`;let l=i==null?void 0:i.get(t);return l===void 0&&(l=Reflect.apply(s,h,n),i==null||i.set(t,l)),l}},B=x("existsSync"),me=x("realpathSync"),ae=x("readFileSync"),P=x("statSync"),Y=(e,s,i)=>{for(;;){const n=r.posix.join(e,s);if(B(i,n))return n;const t=r.dirname(e);if(t===e)return;e=t}},W=/^\.{1,2}(\/.*)?$/,I=e=>{const s=L(e);return W.test(s)?s:`./${s}`};function ke(e,s=!1){const i=e.length;let n=0,t="",l=0,o=16,p=0,f=0,k=0,a=0,g=0;function $(u,m){let c=0,E=0;for(;c<u||!m;){let O=e.charCodeAt(n);if(O>=48&&O<=57)E=E*16+O-48;else if(O>=65&&O<=70)E=E*16+O-65+10;else if(O>=97&&O<=102)E=E*16+O-97+10;else break;n++,c++}return c<u&&(E=-1),E}function w(u){n=u,t="",l=0,o=16,g=0}function v(){let u=n;if(e.charCodeAt(n)===48)n++;else for(n++;n<e.length&&U(e.charCodeAt(n));)n++;if(n<e.length&&e.charCodeAt(n)===46)if(n++,n<e.length&&U(e.charCodeAt(n)))for(n++;n<e.length&&U(e.charCodeAt(n));)n++;else return g=3,e.substring(u,n);let m=n;if(n<e.length&&(e.charCodeAt(n)===69||e.charCodeAt(n)===101))if(n++,(n<e.length&&e.charCodeAt(n)===43||e.charCodeAt(n)===45)&&n++,n<e.length&&U(e.charCodeAt(n))){for(n++;n<e.length&&U(e.charCodeAt(n));)n++;m=n}else g=3;return e.substring(u,m)}function T(){let u="",m=n;for(;;){if(n>=i){u+=e.substring(m,n),g=2;break}const c=e.charCodeAt(n);if(c===34){u+=e.substring(m,n),n++;break}if(c===92){if(u+=e.substring(m,n),n++,n>=i){g=2;break}switch(e.charCodeAt(n++)){case 34:u+='"';break;case 92:u+="\\";break;case 47:u+="/";break;case 98:u+="\b";break;case 102:u+="\f";break;case 110:u+=`
2`;break;case 114:u+="\r";break;case 116:u+=" ";break;case 117:const O=$(4,!0);O>=0?u+=String.fromCharCode(O):g=4;break;default:g=5}m=n;continue}if(c>=0&&c<=31)if(_(c)){u+=e.substring(m,n),g=2;break}else g=6;n++}return u}function A(){if(t="",g=0,l=n,f=p,a=k,n>=i)return l=i,o=17;let u=e.charCodeAt(n);if(J(u)){do n++,t+=String.fromCharCode(u),u=e.charCodeAt(n);while(J(u));return o=15}if(_(u))return n++,t+=String.fromCharCode(u),u===13&&e.charCodeAt(n)===10&&(n++,t+=`
3`),p++,k=n,o=14;switch(u){case 123:return n++,o=1;case 125:return n++,o=2;case 91:return n++,o=3;case 93:return n++,o=4;case 58:return n++,o=6;case 44:return n++,o=5;case 34:return n++,t=T(),o=10;case 47:const m=n-1;if(e.charCodeAt(n+1)===47){for(n+=2;n<i&&!_(e.charCodeAt(n));)n++;return t=e.substring(m,n),o=12}if(e.charCodeAt(n+1)===42){n+=2;const c=i-1;let E=!1;for(;n<c;){const O=e.charCodeAt(n);if(O===42&&e.charCodeAt(n+1)===47){n+=2,E=!0;break}n++,_(O)&&(O===13&&e.charCodeAt(n)===10&&n++,p++,k=n)}return E||(n++,g=1),t=e.substring(m,n),o=13}return t+=String.fromCharCode(u),n++,o=16;case 45:if(t+=String.fromCharCode(u),n++,n===i||!U(e.charCodeAt(n)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return t+=v(),o=11;default:for(;n<i&&F(u);)n++,u=e.charCodeAt(n);if(l!==n){switch(t=e.substring(l,n),t){case"true":return o=8;case"false":return o=9;case"null":return o=7}return o=16}return t+=String.fromCharCode(u),n++,o=16}}function F(u){if(J(u)||_(u))return!1;switch(u){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function N(){let u;do u=A();while(u>=12&&u<=15);return u}return{setPosition:w,getPosition:()=>n,scan:s?N:A,getToken:()=>o,getTokenValue:()=>t,getTokenOffset:()=>l,getTokenLength:()=>n-l,getTokenStartLine:()=>f,getTokenStartCharacter:()=>l-a,getTokenError:()=>g}}function J(e){return e===32||e===9}function _(e){return e===10||e===13}function U(e){return e>=48&&e<=57}var Z;(function(e){e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.space=32]="space",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.asterisk=42]="asterisk",e[e.backslash=92]="backslash",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.plus=43]="plus",e[e.slash=47]="slash",e[e.formFeed=12]="formFeed",e[e.tab=9]="tab"})(Z||(Z={}));var D;(function(e){e.DEFAULT={allowTrailingComma:!1}})(D||(D={}));function be(e,s=[],i=D.DEFAULT){let n=null,t=[];const l=[];function o(f){Array.isArray(t)?t.push(f):n!==null&&(t[n]=f)}return Te(e,{onObjectBegin:()=>{const f={};o(f),l.push(t),t=f,n=null},onObjectProperty:f=>{n=f},onObjectEnd:()=>{t=l.pop()},onArrayBegin:()=>{const f=[];o(f),l.push(t),t=f,n=null},onArrayEnd:()=>{t=l.pop()},onLiteralValue:o,onError:(f,k,a)=>{s.push({error:f,offset:k,length:a})}},i),t[0]}function Te(e,s,i=D.DEFAULT){const n=ke(e,!1),t=[];function l(b){return b?()=>b(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function o(b){return b?()=>b(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>t.slice()):()=>!0}function p(b){return b?j=>b(j,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function f(b){return b?j=>b(j,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>t.slice()):()=>!0}const k=o(s.onObjectBegin),a=f(s.onObjectProperty),g=l(s.onObjectEnd),$=o(s.onArrayBegin),w=l(s.onArrayEnd),v=f(s.onLiteralValue),T=p(s.onSeparator),A=l(s.onComment),F=p(s.onError),N=i&&i.disallowComments,u=i&&i.allowTrailingComma;function m(){for(;;){const b=n.scan();switch(n.getTokenError()){case 4:c(14);break;case 5:c(15);break;case 3:c(13);break;case 1:N||c(11);break;case 2:c(12);break;case 6:c(16);break}switch(b){case 12:case 13:N?c(10):A();break;case 16:c(1);break;case 15:case 14:break;default:return b}}}function c(b,j=[],X=[]){if(F(b),j.length+X.length>0){let y=n.getToken();for(;y!==17;){if(j.indexOf(y)!==-1){m();break}else if(X.indexOf(y)!==-1)break;y=m()}}}function E(b){const j=n.getTokenValue();return b?v(j):(a(j),t.push(j)),m(),!0}function O(){switch(n.getToken()){case 11:const b=n.getTokenValue();let j=Number(b);isNaN(j)&&(c(2),j=0),v(j);break;case 7:v(null);break;case 8:v(!0);break;case 9:v(!1);break;default:return!1}return m(),!0}function fe(){return n.getToken()!==10?(c(3,[],[2,5]),!1):(E(!1),n.getToken()===6?(T(":"),m(),S()||c(4,[],[2,5])):c(5,[],[2,5]),t.pop(),!0)}function re(){k(),m();let b=!1;for(;n.getToken()!==2&&n.getToken()!==17;){if(n.getToken()===5){if(b||c(4,[],[]),T(","),m(),n.getToken()===2&&u)break}else b&&c(6,[],[]);fe()||c(4,[],[2,5]),b=!0}return g(),n.getToken()!==2?c(7,[2],[]):m(),!0}function ce(){$(),m();let b=!0,j=!1;for(;n.getToken()!==4&&n.getToken()!==17;){if(n.getToken()===5){if(j||c(4,[],[]),T(","),m(),n.getToken()===4&&u)break}else j&&c(6,[],[]);b?(t.push(0),b=!1):t[t.length-1]++,S()||c(4,[],[4,5]),j=!0}return w(),b||t.pop(),n.getToken()!==4?c(8,[4],[]):m(),!0}function S(){switch(n.getToken()){case 3:return ce();case 1:return re();case 10:return E(!0);default:return O()}}return m(),n.getToken()===17?i.allowEmptyContent?!0:(c(4,[],[]),!1):S()?(n.getToken()!==17&&c(9,[],[]),!0):(c(4,[],[]),!1)}var q;(function(e){e[e.None=0]="None",e[e.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=2]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",e[e.InvalidUnicode=4]="InvalidUnicode",e[e.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",e[e.InvalidCharacter=6]="InvalidCharacter"})(q||(q={}));var K;(function(e){e[e.OpenBraceToken=1]="OpenBraceToken",e[e.CloseBraceToken=2]="CloseBraceToken",e[e.OpenBracketToken=3]="OpenBracketToken",e[e.CloseBracketToken=4]="CloseBracketToken",e[e.CommaToken=5]="CommaToken",e[e.ColonToken=6]="ColonToken",e[e.NullKeyword=7]="NullKeyword",e[e.TrueKeyword=8]="TrueKeyword",e[e.FalseKeyword=9]="FalseKeyword",e[e.StringLiteral=10]="StringLiteral",e[e.NumericLiteral=11]="NumericLiteral",e[e.LineCommentTrivia=12]="LineCommentTrivia",e[e.BlockCommentTrivia=13]="BlockCommentTrivia",e[e.LineBreakTrivia=14]="LineBreakTrivia",e[e.Trivia=15]="Trivia",e[e.Unknown=16]="Unknown",e[e.EOF=17]="EOF"})(K||(K={}));const we=be;var C;(function(e){e[e.InvalidSymbol=1]="InvalidSymbol",e[e.InvalidNumberFormat=2]="InvalidNumberFormat",e[e.PropertyNameExpected=3]="PropertyNameExpected",e[e.ValueExpected=4]="ValueExpected",e[e.ColonExpected=5]="ColonExpected",e[e.CommaExpected=6]="CommaExpected",e[e.CloseBraceExpected=7]="CloseBraceExpected",e[e.CloseBracketExpected=8]="CloseBracketExpected",e[e.EndOfFileExpected=9]="EndOfFileExpected",e[e.InvalidCommentToken=10]="InvalidCommentToken",e[e.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=12]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",e[e.InvalidUnicode=14]="InvalidUnicode",e[e.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",e[e.InvalidCharacter=16]="InvalidCharacter"})(C||(C={}));const ee=(e,s)=>we(ae(s,e,"utf8")),ve=()=>{const{findPnpApi:e}=pe;return e&&e(process.cwd())},M=(e,s,i,n)=>{const t=`resolveFromPackageJsonPath:${e}:${s}:${i}`;if(n!=null&&n.has(t))return n.get(t);const l=ee(e,n);if(!l)return;let o=s||"tsconfig.json";if(!i&&l.exports)try{const[p]=ge(l.exports,s,["require","types"]);o=p}catch{return!1}else!s&&l.tsconfig&&(o=l.tsconfig);return o=r.join(e,"..",o),n==null||n.set(t,o),o},R="package.json",G="tsconfig.json",Oe=(e,s,i)=>{let n=e;if(e===".."&&(n=r.join(n,G)),e[0]==="."&&(n=r.resolve(s,n)),r.isAbsolute(n)){if(B(i,n)){if(P(i,n).isFile())return n}else if(!n.endsWith(".json")){const w=`${n}.json`;if(B(i,w))return w}return}const[t,...l]=e.split("/"),o=t[0]==="@"?`${t}/${l.shift()}`:t,p=l.join("/"),f=ve();if(f){const{resolveRequest:w}=f;try{if(o===e){const v=w(r.join(o,R),s);if(v){const T=M(v,p,!1,i);if(T&&B(i,T))return T}}else{let v;try{v=w(e,s,{extensions:[".json"]})}catch{v=w(r.join(e,G),s)}if(v)return v}}catch{}}const k=Y(s,r.join("node_modules",o),i);if(!k||!P(i,k).isDirectory())return;const a=r.join(k,R);if(B(i,a)){const w=M(a,p,!1,i);if(w===!1)return;if(w&&B(i,w)&&P(i,w).isFile())return w}const g=r.join(k,p),$=g.endsWith(".json");if(!$){const w=`${g}.json`;if(B(i,w))return w}if(B(i,g)){if(P(i,g).isDirectory()){const w=r.join(g,R);if(B(i,w)){const T=M(w,"",!0,i);if(T&&B(i,T))return T}const v=r.join(g,G);if(B(i,v))return v}else if($)return g}},je=(e,s,i,n)=>{const t=Oe(e,s,n);if(!t)throw new Error(`File '${e}' not found.`);if(i.has(t))throw new Error(`Circularity detected while resolving configuration: ${t}`);i.add(t);const l=r.dirname(t),o=ne(t,n,i);delete o.references;const{compilerOptions:p}=o;if(p){const{baseUrl:f=".",paths:k}=p;if(k)for(const g in k)Array.isArray(k[g])&&(k[g]=k[g].map($=>I(r.relative(s,r.join(l,f,$)))));const a=["baseUrl","outDir"];for(const g of a){const $=p[g];$&&(p[g]=L(r.relative(s,r.join(l,$)))||"./")}}return o.files&&(o.files=o.files.map(f=>L(r.relative(s,r.join(l,f))))),o.include&&(o.include=o.include.map(f=>L(r.relative(s,r.join(l,f))))),o.exclude&&(o.exclude=o.exclude.map(f=>L(r.relative(s,r.join(l,f))))),o},ne=(e,s,i=new Set)=>{let n;try{n=me(s,e)}catch{throw new Error(`Cannot resolve tsconfig at path: ${e}`)}let t=ee(n,s)||{};if(typeof t!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${e}`);const l=r.dirname(n);if(t.extends){const o=Array.isArray(t.extends)?t.extends:[t.extends];delete t.extends;for(const p of o.reverse()){const f=je(p,l,i,s),k={...f,...t,compilerOptions:{...f.compilerOptions,...t.compilerOptions}};f.watchOptions&&(k.watchOptions={...f.watchOptions,...t.watchOptions}),t=k}}if(t.compilerOptions){const{compilerOptions:o}=t,p=["baseUrl","rootDir"];for(const k of p){const a=o[k];if(a){const g=r.resolve(l,a),$=I(r.relative(l,g));o[k]=$}}const{outDir:f}=o;f&&(Array.isArray(t.exclude)||(t.exclude=[]),t.exclude.includes(f)||t.exclude.push(f),o.outDir=I(f))}else t.compilerOptions={};if(t.files&&(t.files=t.files.map(I)),t.include&&(t.include=t.include.map(L)),t.watchOptions){const{watchOptions:o}=t;o.excludeDirectories&&(o.excludeDirectories=o.excludeDirectories.map(p=>L(r.resolve(l,p))))}return t},te=(e,s=new Map)=>ne(e,s),Ae=(e=process.cwd(),s="tsconfig.json",i=new Map)=>{const n=Y(L(e),s,i);if(!n)return null;const t=te(n,i);return{path:n,config:t}},$e=/\*/g,ie=(e,s)=>{const i=e.match($e);if(i&&i.length>1)throw new Error(s)},Ee=e=>{if(e.includes("*")){const[s,i]=e.split("*");return{prefix:s,suffix:i}}return e},Le=({prefix:e,suffix:s},i)=>i.startsWith(e)&&i.endsWith(s),Be=(e,s,i)=>Object.entries(e).map(([n,t])=>(ie(n,`Pattern '${n}' can have at most one '*' character.`),{pattern:Ee(n),substitutions:t.map(l=>{if(ie(l,`Substitution '${l}' in pattern '${n}' can have at most one '*' character.`),!s&&!W.test(l))throw new Error("Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?");return r.resolve(i,l)})})),Fe=e=>{if(!e.config.compilerOptions)return null;const{baseUrl:s,paths:i}=e.config.compilerOptions;if(!s&&!i)return null;const n=r.resolve(r.dirname(e.path),s||"."),t=i?Be(i,s,n):[];return l=>{if(W.test(l))return[];const o=[];for(const a of t){if(a.pattern===l)return a.substitutions.map(L);typeof a.pattern!="string"&&o.push(a)}let p,f=-1;for(const a of o)Le(a.pattern,l)&&a.pattern.prefix.length>f&&(f=a.pattern.prefix.length,p=a);if(!p)return s?[L(r.join(n,l))]:[];const k=l.slice(p.pattern.prefix.length,l.length-p.pattern.suffix.length);return p.substitutions.map(a=>L(a.replace("*",k)))}},se=e=>{let s="";for(let i=0;i<e.length;i+=1){const n=e[i],t=n.toUpperCase();s+=n===t?n.toLowerCase():t}return s},Ne=65,Ue=97,_e=()=>Math.floor(Math.random()*26),ye=e=>Array.from({length:e},()=>String.fromCodePoint(_e()+(Math.random()>.5?Ne:Ue))).join(""),xe=(e=h)=>{const s=process.execPath;if(e.existsSync(s))return!e.existsSync(se(s));const i=`/${ye(10)}`;e.writeFileSync(i,"");const n=!e.existsSync(se(i));return e.unlinkSync(i),n},{join:V}=r.posix,z={ts:[".ts",".tsx",".d.ts"],cts:[".cts",".d.cts"],mts:[".mts",".d.mts"]},Pe=e=>{const s=[...z.ts],i=[...z.cts],n=[...z.mts];return e!=null&&e.allowJs&&(s.push(".js",".jsx"),i.push(".cjs"),n.push(".mjs")),[...s,...i,...n]},Ie=e=>{const s=[];if(!e)return s;const{outDir:i,declarationDir:n}=e;return i&&s.push(i),n&&s.push(n),s},oe=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),De=["node_modules","bower_components","jspm_packages"],Q=`(?!(${De.join("|")})(/|$))`,Ve=/(?:^|\/)[^.*?]+$/,le="**/*",d="[^/]",H="[^./]",ue=process.platform==="win32",de=({config:e,path:s},i=xe())=>{if("extends"in e)throw new Error("tsconfig#extends must be resolved. Use getTsconfig or parseTsconfig to resolve it.");if(!r.isAbsolute(s))throw new Error("The tsconfig path must be absolute");ue&&(s=L(s));const n=r.dirname(s),{files:t,include:l,exclude:o,compilerOptions:p}=e,f=t==null?void 0:t.map(T=>V(n,T)),k=Pe(p),a=i?"":"i",$=(o||Ie(p)).map(T=>{const A=V(n,T),F=oe(A).replace(/\\\*\\\*\//g,"(.+/)?").replace(/\\\*/g,`${d}*`).replace(/\\\?/g,d);return new RegExp(`^${F}($|/)`,a)}),w=t||l?l:[le],v=w?w.map(T=>{let A=V(n,T);Ve.test(A)&&(A=V(A,le));const F=oe(A).replace(/\/\\\*\\\*/g,`(/${Q}${H}${d}*)*?`).replace(/(\/)?\\\*/g,(N,u)=>{const m=`(${H}|(\\.(?!min\\.js$))?)*`;return u?`/${Q}${H}${m}`:m}).replace(/(\/)?\\\?/g,(N,u)=>{const m=d;return u?`/${Q}${m}`:m});return new RegExp(`^${F}$`,a)}):void 0;return T=>{if(!r.isAbsolute(T))throw new Error("filePath must be absolute");if(ue&&(T=L(T)),f!=null&&f.includes(T))return e;if(!(!k.some(A=>T.endsWith(A))||$.some(A=>A.test(T)))&&v&&v.some(A=>A.test(T)))return e}};export{de as createFilesMatcher,Fe as createPathsMatcher,Ae as getTsconfig,te as parseTsconfig};