esbuild-plugin-class-modules
Version:
> An esbuild plugin to compile your css stylesheets using [Sass-lang](https://sass-lang.com/documentation/js-api/modules#compile), [PostCSS](https://postcss.org) and [CSS Modules.](https://github.com/css-modules/css-modules) > Supports global and local sc
6 lines (5 loc) • 4.64 kB
JavaScript
var X=Object.create;var v=Object.defineProperty,Y=Object.defineProperties,Z=Object.getOwnPropertyDescriptor,ss=Object.getOwnPropertyDescriptors,ts=Object.getOwnPropertyNames,x=Object.getOwnPropertySymbols,es=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,os=Object.prototype.propertyIsEnumerable;var z=(s,t,e)=>t in s?v(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e,G=(s,t)=>{for(var e in t||(t={}))T.call(t,e)&&z(s,e,t[e]);if(x)for(var e of x(t))os.call(t,e)&&z(s,e,t[e]);return s},j=(s,t)=>Y(s,ss(t));var ns=(s,t)=>{for(var e in t)v(s,e,{get:t[e],enumerable:!0})},U=(s,t,e,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ts(t))!T.call(s,n)&&n!==e&&v(s,n,{get:()=>t[n],enumerable:!(p=Z(t,n))||p.enumerable});return s};var F=(s,t,e)=>(e=s!=null?X(es(s)):{},U(t||!s||!s.__esModule?v(e,"default",{value:s,enumerable:!0}):e,s)),is=s=>U(v({},"__esModule",{value:!0}),s);var O=(s,t,e)=>new Promise((p,n)=>{var u=i=>{try{f(e.next(i))}catch(a){n(a)}},h=i=>{try{f(e.throw(i))}catch(a){n(a)}},f=i=>i.done?p(i.value):Promise.resolve(i.value).then(u,h);f((e=e.apply(s,t)).next())});var ds={};ns(ds,{classModules:()=>H,default:()=>fs});module.exports=is(ds);var A=F(require("postcss")),E=F(require("postcss-modules")),w=require("fs/promises"),q=F(require("path"));var as=process.cwd(),b="inqnuam-sass-ns",ls=/\.global\.(s?css|sass)$/,rs=/(^|(\s*))import\s*((".*")|('.*'))/g,ps=/.*require\s?\((\s*(\s*?".*"\s*?)|(\s*'.*'\s*?))\s*?\)/g,_=new Map,cs=s=>q.default.win32.normalize(s).replace(/\\/g,"/"),us=(s,t)=>O(void 0,null,function*(){let e=!1,p=!1,{mtimeMs:n}=yield(0,w.stat)(s),u=_.get(s);if(!u||n>u.mtimeMs){u&&(e=n>u.mtimeMs);let h=yield(0,w.readFile)(s,{encoding:"utf-8"}),f=h.match(rs),i=h.match(ps),a=[];if(f&&(a=f.map(c=>c.trim()).filter(c=>c&&!c.startsWith("//")).map(c=>c.split("import").filter(Boolean).map(l=>l.trim().replace(/"|'/g,""))[0]).filter(Boolean)),i){let c=i.filter(l=>!l.includes("=")).map(l=>l.split("require").filter(Boolean).map(y=>y.replace(/\("|\('|'\)|"\)/g,""))[0]).filter(Boolean);a=a.concat(c)}_.set(s,{mtimeMs:n,globalImport:a}),p=a.includes(t)}else p=u.globalImport.includes(t);return{isOutdatedContent:e,isGlobalScoped:p}}),k={filter:/(\.modules?)?\.((s)?css|sass)$/i,options:{sass:{},postcss:[],cssModules:{globalModulePaths:[ls]}}},I=new Map,ms=(s,t)=>`
import "${s}";
export default ${t};
`,H=(s=k)=>{var u,h,f,i,a,c;let t=(u=s.filter)!=null?u:k.filter,e=(f=(h=s.options)==null?void 0:h.postcss)!=null?f:[],p=(a=(i=s.options)==null?void 0:i.cssModules)!=null?a:k.options.cssModules,n=(c=p.getJSON)!=null?c:(l,y)=>{};return{name:"inqnuam-sass-plugin",setup:l=>O(void 0,null,function*(){let y=yield import("sass"),{compile:K}=y.default,B=l.initialOptions.sourcemap;l.onResolve({filter:/^inqnuam-sass-ns/},o=>({path:o.path,namespace:b,pluginData:{resolveDir:o.resolveDir}})),l.onResolve({filter:t},o=>O(void 0,null,function*(){if(o.namespace==b)return;let m=!1,r=!1;if(o.importer){let{isOutdatedContent:D,isGlobalScoped:P}=yield us(o.importer,o.path);r=D,m=P}let g=[];o.path.startsWith("/")?g=[o.path]:o.path.startsWith(".")?g=[o.resolveDir,o.path]:g=[as,"node_modules",o.path];let M=q.default.resolve(...g);return{path:M,namespace:b,watchFiles:[M],pluginData:{kind:o.kind,isGlobal:m,isOutdated:r,resolveDir:q.default.dirname(M)}}})),l.onLoad({filter:/^inqnuam-sass-ns/},o=>{var m;return{contents:I.get(o.path).value,resolveDir:(m=o.pluginData)==null?void 0:m.resolveDir,loader:"css"}}),l.onLoad({filter:/.*/,namespace:b},o=>O(void 0,null,function*(){var P,N,$;let m=cs(`${b}:${o.path}`),r=I.get(m),g=(yield(0,w.stat)(o.path)).mtimeMs,M=o.pluginData.kind=="entry-point"||o.pluginData.isGlobal;(o.pluginData.isOutdated||g>(r==null?void 0:r.mtimeMs))&&(I.delete(m),r=null);let D="";if(!r){let S=j(G({},(P=s.options)==null?void 0:P.sass),{charset:!1});B&&(S.sourceMap=!0,S.sourceMapIncludeSources=!0);let J=K(o.path,S);if(D=J.css,B){let d=JSON.stringify(J.sourceMap),V="/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+(Buffer.from(d,"utf8")||"").toString("base64")+" */";D+=`
`.repeat(2)+V}let R="",L="",W=j(G({},p),{getJSON(d,C){R=JSON.stringify(C),n(d,C)}});M&&(W.scopeBehaviour="global");try{let d={from:o.path};B&&(d.map={inline:!0});let{css:C}=yield(0,A.default)([...e,(0,E.default)(W)]).process(D,d);L=C}catch(d){console.error(d)}let Q=L;r={mtimeMs:Date.now(),value:Q,pure:D,json:R,kind:o.pluginData.kind},I.set(m,r)}return M?{resolveDir:(N=o.pluginData)==null?void 0:N.resolveDir,contents:r.pure,loader:"css"}:{contents:ms(m,r.json),loader:"js",resolveDir:($=o.pluginData)==null?void 0:$.resolveDir}}))})}},fs=H;0&&(module.exports={classModules});