@sugarcube-org/vite
Version:
Vite plugin for sugarcube
5 lines (4 loc) • 4.51 kB
JavaScript
var _=Object.defineProperty;var c=(t,n)=>_(t,"name",{value:n,configurable:!0});import{loadConfig as k,normalizeConfig as C,Instrumentation as w,generateIndex as v,tokenProcessingPipeline as W,generateCSSVariables as D,writeCSSVariablesToDisk as T,generateCSSUtilityClasses as V,writeCSSUtilitiesToDisk as z}from"@sugarcube-org/core";import{normalize as m,relative as G}from"pathe";var I=c((t,n)=>(n=Symbol[t])?n:Symbol.for("Symbol."+t),"__knownSymbol"),P=c(t=>{throw TypeError(t)},"__typeError"),S=c((t,n,u)=>{if(n!=null){typeof n!="object"&&typeof n!="function"&&P("Object expected");var f,d;f===void 0&&(f=n[I("dispose")]),typeof f!="function"&&P("Object not disposable"),d&&(f=c(function(){try{d.call(this)}catch(p){return Promise.reject(p)}},"dispose")),t.push([u,f,n])}return n},"__using"),y=c((t,n,u)=>{var f=typeof SuppressedError=="function"?SuppressedError:function(l,e,i,a){return a=Error(i),a.name="SuppressedError",a.error=l,a.suppressed=e,a},d=c(l=>n=u?new f(l,n,"An error was suppressed during disposal"):(u=!0,l),"fail"),p=c(l=>{for(;l=t.pop();)try{var e=l[1]&&l[1].call(l[2]);if(l[0])return Promise.resolve(e).then(p,i=>(d(i),p()))}catch(i){d(i)}if(u)throw n},"next");return p()},"__callDispose");let b=null;const o=process.env.DEBUG==="true",E=c((t,n)=>{if(!b){console.error(`[sugarcube] ${t}`,n);return}const u=n instanceof Error?n.message:String(n);b.config.logger.error(`[sugarcube] ${t}${u}`)},"reportError"),j=c(t=>{try{return m(G(process.cwd(),t))}catch(n){return o&&console.warn("[sugarcube] Failed to convert path to relative:",t,n),m(t)}},"toRelativePath");function x(){let t=null;const n=c(e=>{if(!t)return!1;const i=j(e),a=t.config.output.tokens;return i.startsWith(a)&&i.endsWith(".json")},"isTokenFile"),u=c(e=>e===t?.configPath,"isSCConfigFile"),f=c(async()=>{var e=[];try{const s=S(e,new w);if(o&&s.start("Process Tokens"),!t)throw new Error("Sugarcube config not initialized");o&&s.start("Token Processing Pipeline");const r=await W({type:"files",config:t.config}),g=[...r.errors.load,...r.errors.flatten,...r.errors.validation,...r.errors.resolution];return g.length>0&&E(`Token processing issues found:
`,g.map(h=>` - ${h.message}`).join(`
`)),o&&s.end("Token Processing Pipeline"),o&&s.end("Process Tokens"),{resolved:r.resolved,trees:r.trees}}catch(s){var i=s,a=!0}finally{y(e,i,a)}},"processTokens"),d=c(async e=>{var i=[];try{const r=S(i,new w);if(o&&r.start("Generate and Write CSS Variables"),!t)throw new Error("Sugarcube config not initialized");o&&r.start("CSS Variables Pipeline");const g=await D(e.trees,e.resolved,t.config);o&&r.end("CSS Variables Pipeline"),o&&r.start("Write CSS Variables to Disk"),await T(g.output),o&&r.end("Write CSS Variables to Disk"),o&&r.end("Generate and Write CSS Variables")}catch(r){var a=r,s=!0}finally{y(i,a,s)}},"generateAndWriteCSSVariables"),p=c(async e=>{var i=[];try{const r=S(i,new w);if(o&&r.start("Generate and Write Utilities"),!t)throw new Error("Sugarcube config not initialized");o&&r.start("Generate Utility CSS");const{output:g}=V(e.resolved,t.config);o&&r.end("Generate Utility CSS"),o&&r.start("Write CSS Utilities to Disk"),await z(g),o&&r.end("Write CSS Utilities to Disk"),o&&r.end("Generate and Write Utilities")}catch(r){var a=r,s=!0}finally{y(i,a,s)}},"generateAndWriteUtilities"),l=c(async()=>{var e=[];try{const s=S(e,new w);o&&s.start("Process and Update");try{const r=await f();await d(r),await p(r)}catch(r){E("Sugarcube processing failed",r)}o&&s.end("Process and Update")}catch(s){var i=s,a=!0}finally{y(e,i,a)}},"processAndUpdate");return{name:"vite-plugin-sugarcube",async config(){try{if(t=await k(),!t)throw new Error("Failed to load Sugarcube config");const e=C(t.config);return t={...t,config:e},{exclude:[t.config.output.css]}}catch(e){throw e instanceof Error?new Error(`[sugarcube] Configuration error:
${e.message}`):e}},async configResolved(e){if(!t)throw new Error("Sugarcube config not initialized")},async buildStart(){await l()},configureServer(e){var i=[];try{const r=S(i,new w);if(b=e,t){e.watcher.add(t.config.output.tokens),e.watcher.add(t.config.output.css);const g=t.config,h=t.config.output.css;e.watcher.on("add",async U=>{await v(h,g)}),e.watcher.on("unlink",async U=>{await v(h,g)})}t?.configPath&&e.watcher.add(t.configPath)}catch(r){var a=r,s=!0}finally{y(i,a,s)}},async handleHotUpdate({file:e}){if(!e.includes("/.astro/")&&(n(e)||u(e))){if(u(e)&&(t=await k(),t)){const i=C(t.config);t={...t,config:i}}return await l(),[]}}}}c(x,"sugarcubePlugin");export{x as default};