@visulima/packem
Version:
A fast and modern bundler for Node.js and TypeScript.
11 lines (8 loc) • 7.43 kB
JavaScript
var T=Object.defineProperty;var h=(e,t)=>T(e,"name",{value:t,configurable:!0});import{fileURLToPath as y}from"node:url";import{isAbsolute as g,dirname as L,extname as A,join as b,resolve as C,normalize as x}from"@visulima/path";import{isRelative as z}from"@visulima/path/utils";import{r as D}from"../../../../../packem_shared/resolve-C7N_MxXM.mjs";import{n as O,g as U,h as _}from"../../../../../packem_shared/url-BJXna-1T.mjs";import{readFileSync as k}from"@visulima/fs";import{pathToFileURL as R}from"mlly";import{d as H}from"../../../../../packem_shared/index-9vzYje1-.mjs";import __cjs_mod__ from "node:module"; // -- packem CommonJS require shim --
const require = __cjs_mod__.createRequire(import.meta.url);
var N=Object.defineProperty,E=h((e,t)=>N(e,"name",{value:t,configurable:!0}),"s");const W=[".scss",".sass",".css"],J=["sass","style"],q=E((e,t,a)=>{const s=[],o=O(e);if(s.push(U(o),o),!_(e)&&!g(e)&&!z(e)){const n=O(`~${e}`);s.push(U(n),n)}const i={baseDirs:[L(t)],caller:"Sass importer",extensions:W,mainFields:J};return a(s,i)},"importerImpl"),Z=E(e=>({file:e.replace(/\.css$/i,"")}),"finalize"),B=E((e,t)=>{try{return Z(q(e,t,D))}catch{return null}},"importer");var V=Object.defineProperty,G=h((e,t)=>V(e,"name",{value:t,configurable:!0}),"e$1");const I=G(e=>{switch(e.toLowerCase()){case".css":return"css";case".sass":return"indented";case".scss":return"scss";default:return}},"resolveSyntax");var K=Object.defineProperty,Q=h((e,t)=>K(e,"name",{value:t,configurable:!0}),"i$1");const X=[".scss",".sass",".css"],Y=["sass","style"],ee=Q((e,t)=>({canonicalize(a,s){const o=s.containingUrl?y(s.containingUrl.toString()):e;let i;const n=O(a),v=U(n);try{i=D([v,n],{baseDirs:[L(o)],caller:"Sass modern importer",extensions:X,mainFields:Y})}catch{return null}return new URL(R(i))},load(a){const s=A(a.pathname),o=s?I(s.toLowerCase())??"scss":"scss";try{let i=k(a);return t&&(i=`/* ${a.pathname} */
${i}`),{contents:i,sourceMapUrl:a,syntax:o}}catch{return null}}}),"importer");var te=Object.defineProperty,re=h((e,t)=>te(e,"name",{value:t,configurable:!0}),"d$1");let $;const se=re(async(e,t)=>{if(e.compileString!==void 0)return t==="modern"?a=>{const{data:s,...o}=a;return e.compileString(s,o)}:t==="modern-compiler"?a=>{const{data:s,...o}=a;return e.compileString(s,o)}:a=>e.renderSync(a);if(t==="modern"||t==="modern-compiler")throw new Error("Modern API is not supported for 'node-sass'");if(!$){const a=Number(process.env.UV_THREADPOOL_SIZE??4);$=new H({concurrency:a-1})}return async a=>await $.add(async()=>await new Promise((s,o)=>{e.render.bind(e)(a,(i,n)=>{if(i){o(i);return}s(n)})}))},"getCompileFunction");var ae=Object.defineProperty,M=h((e,t)=>ae(e,"name",{value:t,configurable:!0}),"o");const oe=M(()=>{const e=["sass-embedded","sass","node-sass"];for(const t of e)try{return require.resolve(t),t}catch{}throw new Error("No supported Sass implementation found. Please install 'sass-embedded', 'sass', or 'node-sass'.")},"getDefaultSassImplementation"),ne=M(e=>{let t=e;typeof t=="string"&&(t=require(t));const{info:a=void 0}=t;if(!a)throw new Error(`Sass implementation is missing 'info' property. Implementation: ${JSON.stringify(t)}`);const s=a.split(" ");if(s.length<2)throw new Error(`Invalid Sass implementation info format. Expected at least 2 parts, got: "${a}".`);const[o]=s;if(o==="dart-sass"||o==="node-sass"||o==="sass-embedded")return t;throw new Error(`Unsupported Sass implementation: "${o}". Supported implementations are: dart-sass, node-sass, sass-embedded.`)},"getSassImplementation");var ie=Object.defineProperty,P=h((e,t)=>ie(e,"name",{value:t,configurable:!0}),"d");const ce=P(async(e,t,a,s,o,i,n)=>{const{warnRuleAsWarning:v,...m}=s,r={...m,data:s.additionalData?typeof s.additionalData=="function"?await s.additionalData(o,e):`${s.additionalData}
${o}`:o};if(!r.logger){const d=v!==!1,S=P(l=>`Warning on line ${l.start.line}, column ${l.start.column} of ${l.url??"-"}:${l.start.line}:${l.start.column}:
`,"formatSpan"),F=P(l=>`[debug:${l.start.line}:${l.start.column}] `,"formatDebugSpan");r.logger={debug(l,p){let u="";p.span&&(u=F(p.span)),u+=l,t.debug(u)},warn(l,p){let u="";if(p.deprecation&&(u+="Deprecation "),p.span&&(u+=S(p.span)),u+=l,p.span?.context&&(u+=`
${p.span.start.line} | ${p.span.context}`),p.stack&&p.stack!=="undefined"&&(u+=`
${p.stack}`),d){const w=new Error(u);w.name="SassWarning",w.stack=void 0,a(w)}else t.warn(u)}}}const c=n==="modern"||n==="modern-compiler",{resourcePath:f}=e;if(c){if(r.url=new URL(R(f)),i&&(r.sourceMap=!0),r.syntax===void 0){const d=A(f);d&&(r.syntax=I(d.toLowerCase()))}r.loadPaths=[...(r.loadPaths?[...r.loadPaths]:[]).map(d=>g(d)?d:b(process.cwd(),d)),...process.env.SASS_PATH?process.env.SASS_PATH.split(process.platform==="win32"?";":":"):[]],r.importers=r.importers?Array.isArray(r.importers)?[...r.importers]:r.importers:[]}else{r.file=f,i&&(r.sourceMap=!0,r.outFile=b(e.rootContext,"style.css.map"),r.sourceMapContents=!0,r.omitSourceMapUrl=!0,r.sourceMapEmbed=!1);const d=A(f);r.indentedSyntax=d&&d.toLowerCase()===".sass"&&r.indentedSyntax===void 0?!0:!!r.indentedSyntax,r.importer=r.importer?Array.isArray(r.importer)?[...r.importer]:[r.importer]:[],r.importer.length===0&&(r.importer=void 0),r.includePaths=[...[process.cwd()].flat(),...(r.includePaths?[...r.includePaths]:[]).map(S=>g(S)?S:b(process.cwd(),S)),...process.env.SASS_PATH?process.env.SASS_PATH.split(process.platform==="win32"?";":":"):[]],r.charset===void 0&&(r.charset=!0)}return r},"getSassOptions");var le=Object.defineProperty,j=h((e,t)=>le(e,"name",{value:t,configurable:!0}),"i");const pe=/^[a-z]:[/\\]|^\\\\/i,me=/^[A-Z0-9+\-.]+:/i,de=j(e=>e.startsWith("/")?e.length>1&&e[1]==="/"?"scheme-relative":"path-absolute":pe.test(e)?"path-absolute":me.test(e)?"absolute":"path-relative","getURLType"),ue=j((e,t)=>{const a=e;return a.file!==void 0&&delete a.file,a.sourceRoot="",a.sources=a.sources.map(s=>{const o=de(s);return o==="absolute"&&/^file:/i.test(s)?y(s):o==="path-relative"?C(t,x(s)):s}),a},"normalizeSourceMap");var fe=Object.defineProperty,he=h((e,t)=>fe(e,"name",{value:t,configurable:!0}),"r");const ve=he((e,t)=>{const a=(e.formatted??e.message??String(e)).replace(/^.*?Error:\s*/i,""),s=new Error(a,{cause:e});return s.name=e.name,s.stack=void 0,s.id=t,e.span?.start&&(s.line=e.span.start.line+1,s.column=e.span.start.column+1),s},"errorFactory"),Oe={name:"sass",async process({code:e,map:t}){let a="modern-compiler";const s=this.options.implementation??oe();s==="sass"?a="modern":s==="node-sass"&&(a="legacy");const o=a==="modern"||a==="modern-compiler",i=ne(s),n=await ce({environment:this.environment,resourcePath:this.id,rootContext:this.cwd},this.logger,this.warn,this.options,e,this.useSourcemap,a);o?n.importers.push(ee(this.id,this.debug??!1)):(n.importer&&!Array.isArray(n.importer)&&(n.importer=[n.importer]),n.importer=[...n.importer??[],B]);const v=await se(i,a);let m;try{m=await v(n)}catch(c){throw c.span&&c.span.url!==void 0?this.deps.add(y(c.span.url)):c.file&&this.deps.add(x(c.file)),ve(c,this.id)}let r=m.sourceMap??(m.map?JSON.parse(m.map.toString()):void 0);return r&&this.useSourcemap&&(r=ue(r,this.cwd)),m.loadedUrls?m.loadedUrls.filter(c=>c.protocol==="file:").forEach(c=>{const f=y(c);g(f)&&this.deps.add(f)}):m.stats.includedFiles&&m.stats.includedFiles.forEach(c=>{const f=x(c);g(f)&&this.deps.add(f)}),{code:Buffer.from(m.css).toString(),map:r?JSON.stringify(r):t}},test:/\.(sass|scss)$/i};export{Oe as default};