UNPKG

@winter-love/vite-plugin-monorepo-alias

Version:
2 lines (1 loc) 1.73 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("node:path"),i=(e,t)=>e.replace(/\\?\/*$/u,t),g=(e,t)=>e.replace(/^\\?\/*/u,t),m=e=>{const t=i(g(e,"/"),"/[-._a-zA-Z0-9]+/");return new RegExp(`${t}`,"u")},R=e=>m(typeof e=="string"?e:e.source),d=e=>e.map(R),k=(e,t,r)=>{for(const n of t){const s=r.match(n);if(s){const[a]=s,[c,l]=r.split(a);if(typeof l=="string"&&c===i(e,""))return{relativePath:l,relativeWorkspaceRoot:a,root:e,workspaceRoot:`${c}${i(a,"")}`}}}},z=(e,t=[])=>{for(const[r,n]of t){const s=e.replace(r,"");if(s!==e)return`${n}${s}`}return e},E=e=>e.replaceAll(new RegExp(String.raw`[.*+?^${"$"}()|[\]\\]`,"gu"),t=>`\\${t}`),$=e=>new RegExp(`^${E(e)}`,"u"),x=e=>Object.entries(e).map(([t,r])=>[$(t),r]),W=e=>i(g(e,"/"),"/"),S=e=>Object.fromEntries(Object.entries(e).map(([t,r])=>[W(t),x(r)])),h=(e,t)=>e.replaceAll(t,"/"),I=(e,t)=>e.replaceAll("/",t),y=e=>{const{workspacePaths:t=[],alias:r={DEFAULT:{src:"src"}},root:n=process.cwd(),separator:s=T.sep}=e,a=S({DEFAULT:{src:"src"},...r}),c=d(t),l=h(n,s);return{name:"monorepo-alias",resolveId(o,p,v){if(!p||o.startsWith("virtual:"))return o;if(o.includes("\0"))return null;const w=h(p,s),u=k(l,c,w);if(!u)return o;const L=a[u.relativeWorkspaceRoot]??a["/DEFAULT/"],A=I(`${u.workspaceRoot}/${z(o,L)}`,s);return this.resolve(A,p,{skipSelf:!0,...v}).then(f=>f||{id:A})}}},P=y;exports.createAlias=y;exports.getAliasId=z;exports.getWorkspaceRegex=R;exports.getWorkspaceRegexList=d;exports.getWorkspaceRegexString=m;exports.matchWorkspace=k;exports.monorepoAlias=P;exports.normalizeAlias=x;exports.normalizeAliasKey=$;exports.normalizeAliasTree=S;exports.normalizeAliasTreeKey=W;exports.trimFirstSlash=g;exports.trimLastSlash=i;