@teacss/vite 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -16,7 +16,9 @@ export interface TeacssVitePluginConfig<Theme extends object = object> extends U
16
16
  * default — pass `false` to keep Vite's PostCSS + esbuild pipeline, or an
17
17
  * object to forward lightningcss options (e.g. `targets`, `drafts`). Only
18
18
  * fields you haven't set yourself are touched, so an explicit
19
- * `css.transformer` / `build.cssMinify` always wins.
19
+ * `css.transformer` / `build.cssMinify` always wins. Left unset, the
20
+ * transformer applies to builds only and the dev server keeps PostCSS;
21
+ * `true` or an options object applies it to the dev server too.
20
22
  *
21
23
  * @default true
22
24
  */
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createHash as e}from"node:crypto";import{mkdtempSync as t,realpathSync as n,rmSync as r,watch as i,writeFileSync as a}from"node:fs";import{tmpdir as o}from"node:os";import{basename as s,join as c,posix as l,resolve as u}from"node:path";import d from"node:process";import f from"@jridgewell/remapping";import{entryDiscoveryFiles as p}from"@teacss/config";import{SourceWatchRegistry as m,createSourceDeclarationCheck as h,planSourceWatches as g,probeSourceDeclarations as _,sourceDeclarationMemberPaths as v,sourceDeclarationStateOf as ee,sourceDeclarationWatchTargets as y}from"@teacss/config/internal/source-scan";import{CSS_PLACEHOLDER as b,isCssId as x}from"@teacss/core";import{prepareEasingCss as te,prepareEasingStylesheet as ne}from"@teacss/directives/internal/easing";import{applyTransformerPipeline as re,createContext as ie,getModuleOutput as ae}from"@teacss/runtime";import{bundledAssetName as S,collectBundledAssets as oe,rewriteBundledAssets as C}from"@teacss/runtime/internal/bundled-assets";import se from"magic-string";import{normalizePath as w,preprocessCSS as ce,transformWithEsbuild as le}from"vite";function T(e){return e.includes(`@apply`)||e.includes(`--at-apply`)||e.includes(`@screen`)||e.includes(`theme(`)||e.includes(`icon(`)}const ue=async()=>{let{default:e}=await import(`@teacss/directives`);return e()};function de(e=ue){let t;return{name:`@teacss/directives`,idFilter:x,async transform(n,r,i){if(T(n.original))return await(await(t??=e())).transform?.(n,r,i)}}}function fe(e,t,n){let r,a=!1,o=0,s,c=Promise.resolve(),l=new m((e,t,n)=>i(e,{recursive:n},t),()=>f(),n),u=h(e,async e=>{await c,!a&&e.signature!==r?.signature&&await f()},n);function d(){l.reconcile(g(y(e())))}function f(){if(!a)return c=c.then(async()=>{if(a)return;d();let n=o,i=s,c=await _(e()),l=await i;if(a||n!==o||(l&&(r=l),s=void 0,c.signature===r?.signature))return;let u=r;r=c;try{await t()}catch(e){throw r=u,e}!a&&n===o&&(r=c)}).catch(n),c}function p(){a=!0,u.retire(),l.retire()}return{resolved(){a||(d(),o++,s=_(e(),!0,r),s.catch(n),f())},retire:p,async close(){p(),await u.close(),await c}}}function E(e){return e}const pe=new Set([`virtual:teacss.css`,`teacss.css`]),D=`/*! ${b} */`,me=`teacss:css-ready`;function he(e,t,n){let r=e.lastIndexOf(t);return r<0||r+t.length!==e.length||r>0&&e[r-1]!==`/`?e:`${e.slice(0,r)}${n}`}function ge(e,t,n){let r;try{r=JSON.parse(e)}catch{return e}let i=!1,a=e=>{if(typeof e==`string`){let r=he(e,t,n);return i||=r!==e,r}if(Array.isArray(e))return e.map(a);if(e&&typeof e==`object`)for(let[t,n]of Object.entries(e))e[t]=a(n);return e};return a(r),i?JSON.stringify(r,void 0,2):e}function O(e,t){let n=0,r=``;for(let i=t;i<e.length;i++){let t=e[i];if(r){t===`\\`?i++:t===r&&(r=``);continue}if(t===`"`||t===`'`||t==="`")r=t;else if(t===`[`)n++;else if(t===`]`&&--n===0)return i}return-1}function k(e,t,n=0){for(let r=n;r<e.length;r++){let n=e[r];if(n===`'`||n===`"`||n==="`"){let t=n;for(r++;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t)break;continue}if(n===`/`&&e[r+1]===`/`){let t=e.indexOf(`
2
- `,r+2);if(t<0)return-1;r=t;continue}if(n===`/`&&e[r+1]===`*`){let t=e.indexOf(`*/`,r+2);if(t<0)return-1;r=t+1;continue}if(e.startsWith(t,r))return r}return-1}function _e(e,t,n){let r=k(e,`const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=`);if(r<0)return e;let i=r+56;if(e[i]!==`[`)return e;let a=O(e,i);if(a<0||!e.startsWith(`)))=>i.map(i=>d[i]);`,a+1)||k(e,`__vite__mapDeps([`,a+20+1)<0)return e;let o=JSON.stringify(t),s=e.slice(i,a+1),c=s.replaceAll(o,JSON.stringify(n));return c===s?e:`${e.slice(0,i)}${c}${e.slice(a+1)}`}const A={chrome:`chrome`,edge:`edge`,firefox:`firefox`,hermes:!1,ie:`ie`,ios:`ios_saf`,node:!1,opera:`opera`,rhino:!1,safari:`safari`},j={2015:[`chrome49`,`edge13`,`safari10`,`ios10`,`firefox44`,`opera36`],2016:[`chrome50`,`edge13`,`safari10`,`ios10`,`firefox43`,`opera37`],2017:[`chrome58`,`edge15`,`safari11`,`ios11`,`firefox52`,`opera45`],2018:[`chrome63`,`edge79`,`safari12`,`ios12`,`firefox58`,`opera50`],2019:[`chrome73`,`edge79`,`safari12.1`,`ios12.1`,`firefox64`,`opera60`],2020:[`chrome80`,`edge80`,`safari14.1`,`ios14.5`,`firefox80`,`opera67`],2021:[`chrome85`,`edge85`,`safari14.1`,`ios14.5`,`firefox80`,`opera71`],2022:[`chrome94`,`edge94`,`safari16.4`,`ios16.4`,`firefox93`,`opera80`],2023:[`chrome110`,`edge110`,`safari16.4`,`ios16.4`,`firefox146`,`opera96`],2024:[`chrome119`,`edge119`,`safari17.4`,`ios17.4`,`firefox145`,`opera105`],2025:[`chrome136`,`edge136`,`safari26.0`,`ios26.0`,`firefox138`,`opera121`]};function ve(e){let t={},n=(Array.isArray(e)?e:e?[e]:[]).flatMap(e=>{let t=/^es(6|\d{4})$/.exec(e);if(!t)return e;let n=t[1]===`6`?2015:Number(t[1]),r=j[n];if(!r)throw Error(`Unsupported target "${e}"`);return r});for(let e of n){if(e===`esnext`)continue;let n=/^([a-z_]+)(\d+)(?:\.(\d+))?$/i.exec(e),r=n&&A[n[1].toLowerCase()];if(r===!1)continue;if(!n||!r)throw Error(`Unsupported target "${e}"`);let i=Number(n[2])<<16|Number(n[3]??0)<<8;(!t[r]||i<t[r])&&(t[r]=i)}return t}function M(i,m={}){let h,g=i;if(i&&typeof i==`object`){h=i.lightningcss;let e={...i};delete e.lightningcss,delete e.mode,g=Object.keys(e).length?e:void 0}let _,y=ie(g,{envMode:d.env.NODE_ENV===`development`?`dev`:`build`,...m,transformers:[...m.transformers??[],de()]},e=>{_=ee(e)}),b=`/__tea.css`,x,T=!1,ue=!0,E,he,O,k,A=!1,j,M,N=new Set,P,F,I,ye=0;async function be(){P??=fe(()=>_,async()=>{T?await He():I&&a(I,String(++ye))},e=>x?.logger.error(e instanceof Error?e.message:String(e)));try{await P.resolved()}catch(e){throw P.retire(),P=void 0,e}}async function xe(){let e=P;P=void 0,await e?.close(),F&&r(F,{recursive:!0,force:!0}),F=void 0,I=void 0}function Se(e){let t=new Set(v(_).map(w));for(let n of N)t.has(n)||e(n);I&&e(I)}let L=new Map,R=new Map,z=new Map,B=new Set,V,H,U=0,Ce=!1,W,G,K=0,q=0,J,Y;function we(){Y=void 0}function Te(e=y.root){let t=y.getConfigFileList().map(w),n=new Set(t);if(typeof g==`object`){N=n;return}let r=w(typeof g==`string`?u(e,g):e);if(!t.includes(r))for(let e of p)n.add(w(c(r,e)));N=n}async function Ee(){let{prefix:e}=await y.getVMPRegexes();return b=`/${e}.css`,b}let De=new Map,X=new WeakMap,Z=new WeakMap;function Oe(e){let t=S(e);return De.set(t,e),`${x?.base??`/`}__teacss_fonts/${t}`}async function ke(){let e=(await C(await Ae(),Oe)).toString();return ue=/@import/i.test(e),e}async function Ae(){await y.flushTasks();let e=Y;if(e&&e.config===y.generator.config&&e.tokens.length===y.tokens.size){let t=0,n=!0;for(let r of y.tokens)if(e.tokens[t++]!==r){n=!1;break}if(n)return await e.promise}let t=[...y.tokens],n={config:y.generator.config,promise:y.generator.generate(t,{minify:!1}).then(({css:e})=>e),tokens:t};Y=n;try{return await n.promise}catch(e){throw Y===n&&(Y=void 0),e}}async function je(){let e=await Ae(),t=x;if(!t||!(`environments`in t))return e;let n=u(t.root,b.slice(1)),r=t.css.transformer===`lightningcss`,i=r?ne(e):e;if(r&&t.build.cssMinify===`lightningcss`&&!/@import/i.test(i))return Me(i,n,t);let a=r&&t.build.cssMinify?{...t,build:{...t.build,cssMinify:!1}}:t,o=(await ce(i,n,a)).code;if(!t.build.cssMinify)return o;if(t.build.cssMinify===`esbuild`){let e=t.esbuild||{},r={charset:e.charset,legalComments:e.legalComments,logLevel:e.logLevel,logLimit:e.logLimit,logOverride:e.logOverride},i=e.minifyIdentifiers!=null||e.minifySyntax!=null||e.minifyWhitespace!=null?{minifyIdentifiers:e.minifyIdentifiers??!0,minifySyntax:e.minifySyntax??!0,minifyWhitespace:e.minifyWhitespace??!0}:{minify:!0},a=await le(o,n,{...r,...i,loader:`css`,sourcemap:!1,target:t.build.cssTarget||void 0},void 0,t,void 0,!0);for(let e of a.warnings)t.logger.warn(`[esbuild css minify] ${e.text}`);return a.code}return Me(ne(o),n,t)}async function Me(e,t,n){let{transform:r}=await import(`lightningcss`),i=n.css.lightningcss?.visitor,a=r({...n.css.lightningcss,visitor:i===E?he:i,code:Buffer.from(e),cssModules:void 0,filename:t,minify:!0,targets:ve(n.build.cssTarget)});for(let e of a.warnings)n.logger.warn(`[lightningcss minify] ${e.message}`);return new TextDecoder().decode(a.code)}function Ne(){if(!O)return;let e=O;V&&clearTimeout(V),V=setTimeout(()=>{V=void 0;let t=H,n=(async()=>{if(t&&await t.catch(()=>{}),O!==e||(A?q:K)>=U||(await Be(),await e.waitForRequestsIdle?.(),O!==e||(A?q:K)>=U))return;let n=U,r=e.moduleGraph.getModuleById(b);if(!r){K=n,A&&(q=n);return}A?(e.moduleGraph.invalidateModule(r),e.watcher.emit(`change`,r.file??b),q=n,K=n):(e.moduleGraph.invalidateModule(r),K=n)})();H=n,n.then(()=>{H===n&&(H=void 0,O===e&&(A?q:K)<U&&Ne())},t=>{H===n&&(H=void 0),e.config.logger.error(`TeaCSS failed to invalidate its virtual stylesheet`,{error:t})})},20)}function Pe(){we(),O&&(U++,Ne())}function Fe(e){if(!O)return;let t=!1;for(let n of e){let e=O.moduleGraph.getModuleById(n);e&&(O.moduleGraph.invalidateModule(e),t=!0)}t&&O.ws.send({type:`full-reload`})}function Ie(){V&&clearTimeout(V),V=void 0,A=!1,j?.(),j=void 0,M?.(),M=void 0,O=void 0,H=void 0}function Q(){k??=y.onInvalidate(Pe)}function $(){we(),Ie(),k?.(),k=void 0}async function Le(e,t){let n={};L.set(t,n),R.set(t,e);try{let r=await re(y,e,t);return L.get(t)===n?(r?z.set(t,r.code):z.delete(t),y.filter(e,t)?await y.extract(r?.code??e,t):y.modules.has(t)&&await y.extract(``,t),r??null):r??null}finally{L.get(t)===n&&L.delete(t)}}async function Re(e,t){J&&await J;let n=Le(e,t),r=n.then(()=>{},()=>{});B.add(r);try{return await n}finally{B.delete(r)}}async function ze(e){let t=new Set(e),n=new Set([...R.keys(),...z.keys()]),r=[];for(let e of n)t.has(e)||(L.delete(e),R.delete(e),z.delete(e),r.push(y.extract(``,e)));await Promise.all(r)}async function Be(){for(;B.size;)await Promise.all(B)}async function Ve(){let e=Array.from(R),t=new Map(e.map(([e,t])=>[e,z.get(e)??t]));try{await y.reloadConfig()}finally{Te(y.root),(O||I)&&await be()}await Ee();let n=[];for(let[r,i]of e){let e=ae(y,r)??i;e===i?z.delete(r):z.set(r,e),e!==t.get(r)&&n.push(r)}Fe(n)}async function He(){let e=J,t=(async()=>{e&&await e.catch(()=>{}),await Be(),await Ve()})();J=t;try{await t}finally{J===t&&(J=void 0)}}let Ue={name:`teacss`,enforce:`pre`,config(e){if(h===!1)return;let t=typeof h==`object`?h:void 0,n={};return e.css?.transformer===void 0&&(n.css={transformer:`lightningcss`,...t?{lightningcss:t}:{}}),e.build?.cssMinify===void 0&&(n.build={cssMinify:`lightningcss`}),n},async configResolved(e){if(x=e,e.css.transformer===`lightningcss`){let{createEasingImportVisitor:t}=await import(`./easing-imports-DvRhTc2n.js`),n=e.css.lightningcss??{};he=n.visitor,E=t(n,!0,e=>T&&e===b&&!ue),e.css.lightningcss={...n,visitor:E}}T=e.command===`serve`,await y.updateRoot(e.root),Te(e.root),await Ee(),Q()},async buildStart(){X.set(this.environment??y,new Map),Z.set(this.environment??y,new Set),Ce=!1,W=void 0,G=void 0,Q(),Te(),!T&&x?.build?.watch?(I||(F=n(t(c(o(),`teacss-vite-watch-`))),I=c(F,`invalidate`),a(I,`0`)),Se(e=>this.addWatchFile(e)),await be()):Se(e=>this.addWatchFile(e))},async buildEnd(t){if(T||t)return;if(typeof this.getModuleIds==`function`&&await ze(this.getModuleIds()),!(Ce||typeof this.getModuleInfo==`function`&&this.getModuleInfo(b)!=null)){G=void 0;return}W=await je();let n=X.get(this.environment??y)??new Map;X.set(this.environment??y,n);for(let{asset:e}of oe(W))n.has(e.digest)||n.set(e.digest,this.emitFile({type:`asset`,name:S(e),source:e.bytes}));G=e(`sha256`).update(W).digest(`hex`)},configureServer(e){Ie(),O=e,e.middlewares?.use((t,n,r)=>{let i=`${e.config.base}__teacss_fonts/`,a=t.url?.split(`?`,1)[0],o=a?.startsWith(i)?De.get(a.slice(i.length)):void 0;if(!o)return r();n.setHeader(`Content-Type`,`font/woff2`),n.setHeader(`Cache-Control`,`public, max-age=31536000, immutable`),n.end(o.bytes)}),be().catch(t=>e.config?.logger.error(String(t))),Q();let t=()=>{O===e&&(A=!0,q<U&&Ne())};if(e.hot?.on(me,t),j=()=>e.hot?.off(me,t),e.httpServer){let t=()=>{O===e&&($(),xe())};e.httpServer.once(`close`,t),M=()=>e.httpServer?.off(`close`,t)}},async closeBundle(){$(),(T||!x?.build?.watch)&&await xe()},async closeWatcher(){$(),await xe()},transformIndexHtml:{order:`pre`,async handler(e,{filename:t}){y.filter(e,t)?await y.extract(e,t):y.modules.has(t)&&await y.extract(``,t)}},async resolveId(e){return pe.has(e)||pe.has(e.replace(/^\//,``))||e.startsWith(`${b}?`)?b:null},async load(e){return e===b?T?await ke():(Ce=!0,D):null},async transform(e,t){if(t===b)return null;let n=await Re(e,t);if(!T||!/\.css(?:$|\?)/i.test(t))return n;let r=await C(n?.code??e,Oe);if(!r.hasChanged())return n;let i=r.generateMap({hires:!0,includeContent:!0,source:t});return{code:r.toString(),map:n?.map?f([i,n.map],()=>null).toString():i}},async watchChange(e,t){if(e===I||N.has(w(e)))try{await He()}finally{Se(e=>this.addWatchFile(e))}else J&&await J;if(t.event===`delete`){let t=new Set([e]);for(let n of[...y.modules.keys(),...L.keys(),...R.keys()])(n===e||n.startsWith(`${e}?`))&&t.add(n);for(let e of t)L.delete(e),R.delete(e),z.delete(e);await Promise.all(Array.from(t,e=>y.extract(``,e)))}},async generateBundle(e,t){if(T)return;let n,r=X.get(this.environment??y)??new Map;for(let[i,a]of Object.entries(t)){if(a.type!==`asset`||!a.fileName.endsWith(`.css`))continue;let o=typeof a.source==`string`?a.source:new TextDecoder().decode(a.source);if(!o.includes(D)&&!o.includes(`;teacss=v1-`))continue;o.includes(D)&&(n??=W??await je());let c=new Set,u=async e=>(await C(o.replaceAll(D,n??``),t=>{let n=r.get(t.digest);n||(n=this.emitFile({type:`asset`,name:S(t),source:t.bytes}),r.set(t.digest,n));let i=this.getFileName(n);c.add(i);let a=x?.base??`/`;return a===`./`||a===``?`./${l.relative(l.dirname(e),i)}`:`${a}${i}`})).toString(),d=await u(a.fileName);for(let e of Object.values(t))if(e.type===`chunk`&&e.viteMetadata?.importedCss.has(a.fileName))for(let t of c)e.viteMetadata.importedAssets.add(t);let f=typeof e.assetFileNames!=`string`||e.assetFileNames.includes(`[hash`);if(typeof e.assetFileNames==`function`){let t={name:a.name,names:a.names,originalFileName:a.originalFileName??void 0,originalFileNames:a.originalFileNames,type:`asset`},n=e.assetFileNames({...t,source:a.source}),r=e.assetFileNames({...t,source:d});f=r.includes(`[hash`)||r!==n}if(!x||!(`environments`in x)||!f){a.source=d;continue}let p=e=>this.getFileName(this.emitFile({type:`asset`,name:a.name||s(a.fileName),...a.originalFileName?{originalFileName:a.originalFileName}:{},source:e})),m=p(d),h=await u(m);if(h!==d){let e=Z.get(this.environment??y)??new Set;if(e.add(m),Z.set(this.environment??y,e),d=h,m=p(d),await u(m)!==d)throw Error(`TeaCSS CSS output naming changes its font-relative directory after URL resolution`)}let g=new Set,_=x.build.manifest,v=x.build.ssrManifest;_&&g.add(typeof _==`string`?_:`.vite/manifest.json`),v&&g.add(typeof v==`string`?v:`.vite/ssr-manifest.json`);for(let e of Object.values(t))e.viteMetadata?.importedCss.delete(a.fileName)&&e.viteMetadata.importedCss.add(m),e.type===`chunk`?e.code=_e(e.code,a.fileName,m):e!==a&&typeof e.source==`string`&&g.has(e.fileName)&&(e.source=ge(e.source,a.fileName,m));delete t[i]}}},We={name:`teacss:api`,enforce:`post`,api:{getContext:()=>y,getMode:()=>`global`},transform(e,t){return!T||t!==b||!e.includes(`import.meta.hot`)?null:`${e}\nimport.meta.hot.send(${JSON.stringify(me)});`},augmentChunkHash(){return G},generateBundle:{order:`post`,async handler(e,t){let n=Ue.generateBundle;typeof n==`function`&&await n.call(this,e,t,!1);let r=Z.get(this.environment??y);for(let e of r??[])delete t[e];r?.clear()}}};function Ge(e){return{name:e?`teacss:easing-source`:`teacss:easing-output`,enforce:e,transform(t,n){let r=x;if(!r||r.css.transformer!==`lightningcss`&&r.build.cssMinify!==`lightningcss`||!/\.(?:css|scss|sass|less|styl|stylus|sss)(?:$|\?)/i.test(n)||/[?&](?:raw|url)(?:&|$)/.test(n)||e&&(r.css.transformer!==`lightningcss`||!/\.css(?:$|\?)/i.test(n)))return null;let i=new se(t);return te(i),i.hasChanged()?{code:i.toString(),map:i.generateMap({hires:!0,includeContent:!0,source:n})}:null}}}return[Ue,We,Ge(`pre`),Ge()]}export{E as defineConfig,M as pluginTeacss};
1
+ import{createHash as e}from"node:crypto";import{mkdtempSync as t,realpathSync as n,rmSync as r,watch as i,writeFileSync as a}from"node:fs";import{tmpdir as o}from"node:os";import{basename as s,join as c,posix as l,resolve as u}from"node:path";import d from"node:process";import f from"@jridgewell/remapping";import{entryDiscoveryFiles as p}from"@teacss/config";import{SourceWatchRegistry as m,createSourceDeclarationCheck as h,planSourceWatches as g,probeSourceDeclarations as _,sourceDeclarationMemberPaths as v,sourceDeclarationStateOf as ee,sourceDeclarationWatchTargets as y}from"@teacss/config/internal/source-scan";import{CSS_PLACEHOLDER as b,isCssId as x}from"@teacss/core";import{prepareEasingCss as te,prepareEasingStylesheet as ne}from"@teacss/directives/internal/easing";import{applyTransformerPipeline as re,createContext as ie,getModuleOutput as ae}from"@teacss/runtime";import{bundledAssetName as oe,collectBundledAssets as se,rewriteBundledAssets as S}from"@teacss/runtime/internal/bundled-assets";import{enableNodeCompileCache as C}from"@teacss/runtime/internal/compile-cache";import ce from"magic-string";import{normalizePath as w,preprocessCSS as le,transformWithEsbuild as ue}from"vite";function T(e){return e.includes(`@apply`)||e.includes(`--at-apply`)||e.includes(`@screen`)||e.includes(`theme(`)||e.includes(`icon(`)}const E=async()=>{let{default:e}=await import(`@teacss/directives`);return e()};function de(e=E){let t;return{name:`@teacss/directives`,idFilter:x,async transform(n,r,i){if(T(n.original))return await(await(t??=e())).transform?.(n,r,i)}}}function fe(e,t,n){let r,a=!1,o=0,s,c=Promise.resolve(),l=new m((e,t,n)=>i(e,{recursive:n},t),()=>f(),n),u=h(e,async e=>{await c,!a&&e.signature!==r?.signature&&await f()},n);function d(){l.reconcile(g(y(e())))}function f(){if(!a)return c=c.then(async()=>{if(a)return;d();let n=o,i=s,c=await _(e()),l=await i;if(a||n!==o||(l&&(r=l),s=void 0,c.signature===r?.signature))return;let u=r;r=c;try{await t()}catch(e){throw r=u,e}!a&&n===o&&(r=c)}).catch(n),c}function p(){a=!0,u.retire(),l.retire()}return{resolved(){a||(d(),o++,s=_(e(),!0,r),s.catch(n),f())},retire:p,async close(){p(),await u.close(),await c}}}function pe(e){return e}C();const me=new Set([`virtual:teacss.css`,`teacss.css`]),D=`/*! ${b} */`,O=`teacss:css-ready`;function k(e,t,n){let r=e.lastIndexOf(t);return r<0||r+t.length!==e.length||r>0&&e[r-1]!==`/`?e:`${e.slice(0,r)}${n}`}function he(e,t,n){let r;try{r=JSON.parse(e)}catch{return e}let i=!1,a=e=>{if(typeof e==`string`){let r=k(e,t,n);return i||=r!==e,r}if(Array.isArray(e))return e.map(a);if(e&&typeof e==`object`)for(let[t,n]of Object.entries(e))e[t]=a(n);return e};return a(r),i?JSON.stringify(r,void 0,2):e}function A(e,t){let n=0,r=``;for(let i=t;i<e.length;i++){let t=e[i];if(r){t===`\\`?i++:t===r&&(r=``);continue}if(t===`"`||t===`'`||t==="`")r=t;else if(t===`[`)n++;else if(t===`]`&&--n===0)return i}return-1}function j(e,t,n=0){for(let r=n;r<e.length;r++){let n=e[r];if(n===`'`||n===`"`||n==="`"){let t=n;for(r++;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t)break;continue}if(n===`/`&&e[r+1]===`/`){let t=e.indexOf(`
2
+ `,r+2);if(t<0)return-1;r=t;continue}if(n===`/`&&e[r+1]===`*`){let t=e.indexOf(`*/`,r+2);if(t<0)return-1;r=t+1;continue}if(e.startsWith(t,r))return r}return-1}function ge(e,t,n){let r=j(e,`const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=`);if(r<0)return e;let i=r+56;if(e[i]!==`[`)return e;let a=A(e,i);if(a<0||!e.startsWith(`)))=>i.map(i=>d[i]);`,a+1)||j(e,`__vite__mapDeps([`,a+20+1)<0)return e;let o=JSON.stringify(t),s=e.slice(i,a+1),c=s.replaceAll(o,JSON.stringify(n));return c===s?e:`${e.slice(0,i)}${c}${e.slice(a+1)}`}const M={chrome:`chrome`,edge:`edge`,firefox:`firefox`,hermes:!1,ie:`ie`,ios:`ios_saf`,node:!1,opera:`opera`,rhino:!1,safari:`safari`},N={2015:[`chrome49`,`edge13`,`safari10`,`ios10`,`firefox44`,`opera36`],2016:[`chrome50`,`edge13`,`safari10`,`ios10`,`firefox43`,`opera37`],2017:[`chrome58`,`edge15`,`safari11`,`ios11`,`firefox52`,`opera45`],2018:[`chrome63`,`edge79`,`safari12`,`ios12`,`firefox58`,`opera50`],2019:[`chrome73`,`edge79`,`safari12.1`,`ios12.1`,`firefox64`,`opera60`],2020:[`chrome80`,`edge80`,`safari14.1`,`ios14.5`,`firefox80`,`opera67`],2021:[`chrome85`,`edge85`,`safari14.1`,`ios14.5`,`firefox80`,`opera71`],2022:[`chrome94`,`edge94`,`safari16.4`,`ios16.4`,`firefox93`,`opera80`],2023:[`chrome110`,`edge110`,`safari16.4`,`ios16.4`,`firefox146`,`opera96`],2024:[`chrome119`,`edge119`,`safari17.4`,`ios17.4`,`firefox145`,`opera105`],2025:[`chrome136`,`edge136`,`safari26.0`,`ios26.0`,`firefox138`,`opera121`]};function _e(e){let t={},n=(Array.isArray(e)?e:e?[e]:[]).flatMap(e=>{let t=/^es(6|\d{4})$/.exec(e);if(!t)return e;let n=t[1]===`6`?2015:Number(t[1]),r=N[n];if(!r)throw Error(`Unsupported target "${e}"`);return r});for(let e of n){if(e===`esnext`)continue;let n=/^([a-z_]+)(\d+)(?:\.(\d+))?$/i.exec(e),r=n&&M[n[1].toLowerCase()];if(r===!1)continue;if(!n||!r)throw Error(`Unsupported target "${e}"`);let i=Number(n[2])<<16|Number(n[3]??0)<<8;(!t[r]||i<t[r])&&(t[r]=i)}return t}function P(i,m={}){let h,g=i;if(i&&typeof i==`object`){h=i.lightningcss;let e={...i};delete e.lightningcss,delete e.mode,g=Object.keys(e).length?e:void 0}let _,y=ie(g,{envMode:d.env.NODE_ENV===`development`?`dev`:`build`,...m,transformers:[...m.transformers??[],de()]},e=>{_=ee(e)}),b=`/__tea.css`,x,C=!1,T=!0,E,pe,k,A,j=!1,M,N,P=new Set,F,I,L,ve=0;async function ye(){F??=fe(()=>_,async()=>{C?await He():L&&a(L,String(++ve))},e=>x?.logger.error(e instanceof Error?e.message:String(e)));try{await F.resolved()}catch(e){throw F.retire(),F=void 0,e}}async function be(){let e=F;F=void 0,await e?.close(),I&&r(I,{recursive:!0,force:!0}),I=void 0,L=void 0}function xe(e){let t=new Set(v(_).map(w));for(let n of P)t.has(n)||e(n);L&&e(L)}let R=new Map,z=new Map,B=new Map,V=new Set,H,U,W=0,G=!1,K,q,J=0,Y=0,X,Z;function Se(){Z=void 0}function Ce(e=y.root){let t=y.getConfigFileList().map(w),n=new Set(t);if(typeof g==`object`){P=n;return}let r=w(typeof g==`string`?u(e,g):e);if(!t.includes(r))for(let e of p)n.add(w(c(r,e)));P=n}async function we(){let{prefix:e}=await y.getVMPRegexes();return b=`/${e}.css`,b}let Te=new Map,Q=new WeakMap,$=new WeakMap;function Ee(e){let t=oe(e);return Te.set(t,e),`${x?.base??`/`}__teacss_fonts/${t}`}async function De(){let e=`url(${JSON.stringify(`${x?.base??`/`}__teacss_fonts/`).slice(0,-1)}`,t=(await S(await Oe(),Ee)).toString().replaceAll(e,`URL${e.slice(3)}`);return T=/@import/i.test(t),t}async function Oe(){await y.flushTasks();let e=Z;if(e&&e.config===y.generator.config&&e.tokens.length===y.tokens.size){let t=0,n=!0;for(let r of y.tokens)if(e.tokens[t++]!==r){n=!1;break}if(n)return await e.promise}let t=[...y.tokens],n={config:y.generator.config,promise:y.generator.generate(t,{minify:!1}).then(({css:e})=>e),tokens:t};Z=n;try{return await n.promise}catch(e){throw Z===n&&(Z=void 0),e}}async function ke(){let e=await Oe(),t=x;if(!t||!(`environments`in t))return e;let n=u(t.root,b.slice(1)),r=t.css.transformer===`lightningcss`,i=r?ne(e):e;if(r&&t.build.cssMinify===`lightningcss`&&!/@import/i.test(i))return Ae(i,n,t);let a=r&&t.build.cssMinify?{...t,build:{...t.build,cssMinify:!1}}:t,o=(await le(i,n,a)).code;if(!t.build.cssMinify)return o;if(t.build.cssMinify===`esbuild`){let e=t.esbuild||{},r={charset:e.charset,legalComments:e.legalComments,logLevel:e.logLevel,logLimit:e.logLimit,logOverride:e.logOverride},i=e.minifyIdentifiers!=null||e.minifySyntax!=null||e.minifyWhitespace!=null?{minifyIdentifiers:e.minifyIdentifiers??!0,minifySyntax:e.minifySyntax??!0,minifyWhitespace:e.minifyWhitespace??!0}:{minify:!0},a=await ue(o,n,{...r,...i,loader:`css`,sourcemap:!1,target:t.build.cssTarget||void 0},void 0,t,void 0,!0);for(let e of a.warnings)t.logger.warn(`[esbuild css minify] ${e.text}`);return a.code}return Ae(ne(o),n,t)}async function Ae(e,t,n){let{transform:r}=await import(`lightningcss`),i=n.css.lightningcss?.visitor,a=r({...n.css.lightningcss,visitor:i===E?pe:i,code:Buffer.from(e),cssModules:void 0,filename:t,minify:!0,targets:_e(n.build.cssTarget)});for(let e of a.warnings)n.logger.warn(`[lightningcss minify] ${e.message}`);return new TextDecoder().decode(a.code)}function je(){if(!k)return;let e=k;H&&clearTimeout(H),H=setTimeout(()=>{H=void 0;let t=U,n=(async()=>{if(t&&await t.catch(()=>{}),k!==e||(j?Y:J)>=W||(await Be(),await e.waitForRequestsIdle?.(),k!==e||(j?Y:J)>=W))return;let n=W,r=e.moduleGraph.getModuleById(b);if(!r){J=n,j&&(Y=n);return}j?(e.moduleGraph.invalidateModule(r),e.watcher.emit(`change`,r.file??b),Y=n,J=n):(e.moduleGraph.invalidateModule(r),J=n)})();U=n,n.then(()=>{U===n&&(U=void 0,k===e&&(j?Y:J)<W&&je())},t=>{U===n&&(U=void 0),e.config.logger.error(`TeaCSS failed to invalidate its virtual stylesheet`,{error:t})})},20)}function Me(){Se(),k&&(W++,je())}function Ne(e){if(!k)return;let t=!1;for(let n of e){let e=k.moduleGraph.getModuleById(n);e&&(k.moduleGraph.invalidateModule(e),t=!0)}t&&k.ws.send({type:`full-reload`})}function Pe(){H&&clearTimeout(H),H=void 0,j=!1,M?.(),M=void 0,N?.(),N=void 0,k=void 0,U=void 0}function Fe(){A??=y.onInvalidate(Me)}function Ie(){Se(),Pe(),A?.(),A=void 0}async function Le(e,t){let n={};R.set(t,n),z.set(t,e);try{let r=await re(y,e,t);return R.get(t)===n?(r?B.set(t,r.code):B.delete(t),y.filter(e,t)?await y.extract(r?.code??e,t):y.modules.has(t)&&await y.extract(``,t),r??null):r??null}finally{R.get(t)===n&&R.delete(t)}}async function Re(e,t){X&&await X;let n=Le(e,t),r=n.then(()=>{},()=>{});V.add(r);try{return await n}finally{V.delete(r)}}async function ze(e){let t=new Set(e),n=new Set([...z.keys(),...B.keys()]),r=[];for(let e of n)t.has(e)||(R.delete(e),z.delete(e),B.delete(e),r.push(y.extract(``,e)));await Promise.all(r)}async function Be(){for(;V.size;)await Promise.all(V)}async function Ve(){let e=Array.from(z),t=new Map(e.map(([e,t])=>[e,B.get(e)??t]));try{await y.reloadConfig()}finally{Ce(y.root),(k||L)&&await ye()}await we();let n=[];for(let[r,i]of e){let e=ae(y,r)??i;e===i?B.delete(r):B.set(r,e),e!==t.get(r)&&n.push(r)}Ne(n)}async function He(){let e=X,t=(async()=>{e&&await e.catch(()=>{}),await Be(),await Ve()})();X=t;try{await t}finally{X===t&&(X=void 0)}}let Ue={name:`teacss`,enforce:`pre`,config(e,t){if(h===!1)return;let n=typeof h==`object`?h:void 0,r={};return e.css?.transformer===void 0&&(t.command===`build`||h!==void 0)&&(r.css={transformer:`lightningcss`,...n?{lightningcss:n}:{}}),e.build?.cssMinify===void 0&&(r.build={cssMinify:`lightningcss`}),r},async configResolved(e){if(x=e,e.css.transformer===`lightningcss`){let{createEasingImportVisitor:t}=await import(`./easing-imports-DvRhTc2n.js`),n=e.css.lightningcss??{};pe=n.visitor,E=t(n,!0,e=>C&&e===b&&!T),e.css.lightningcss={...n,visitor:E}}C=e.command===`serve`,await y.updateRoot(e.root),Ce(e.root),await we(),Fe()},async buildStart(){Q.set(this.environment??y,new Map),$.set(this.environment??y,new Set),G=!1,K=void 0,q=void 0,Fe(),Ce(),!C&&x?.build?.watch?(L||(I=n(t(c(o(),`teacss-vite-watch-`))),L=c(I,`invalidate`),a(L,`0`)),xe(e=>this.addWatchFile(e)),await ye()):xe(e=>this.addWatchFile(e))},async buildEnd(t){if(C||t)return;if(typeof this.getModuleIds==`function`&&await ze(this.getModuleIds()),!(G||typeof this.getModuleInfo==`function`&&this.getModuleInfo(b)!=null)){q=void 0;return}K=await ke();let n=Q.get(this.environment??y)??new Map;Q.set(this.environment??y,n);for(let{asset:e}of se(K))n.has(e.digest)||n.set(e.digest,this.emitFile({type:`asset`,name:oe(e),source:e.bytes}));q=e(`sha256`).update(K).digest(`hex`)},configureServer(e){Pe(),k=e,e.middlewares?.use((t,n,r)=>{let i=`${e.config.base}__teacss_fonts/`,a=t.url?.split(`?`,1)[0],o=a?.startsWith(i)?Te.get(a.slice(i.length)):void 0;if(!o)return r();n.setHeader(`Content-Type`,`font/woff2`),n.setHeader(`Cache-Control`,`public, max-age=31536000, immutable`),n.end(o.bytes)}),ye().catch(t=>e.config?.logger.error(String(t))),Fe();let t=()=>{k===e&&(j=!0,Y<W&&je())};if(e.hot?.on(O,t),M=()=>e.hot?.off(O,t),e.httpServer){let t=()=>{k===e&&(Ie(),be())};e.httpServer.once(`close`,t),N=()=>e.httpServer?.off(`close`,t)}},async closeBundle(){Ie(),(C||!x?.build?.watch)&&await be()},async closeWatcher(){Ie(),await be()},transformIndexHtml:{order:`pre`,async handler(e,{filename:t}){y.filter(e,t)?await y.extract(e,t):y.modules.has(t)&&await y.extract(``,t)}},async resolveId(e){return me.has(e)||me.has(e.replace(/^\//,``))||e.startsWith(`${b}?`)?b:null},async load(e){return e===b?C?await De():(G=!0,D):null},async transform(e,t){if(t===b)return null;let n=await Re(e,t);if(!C||!/\.css(?:$|\?)/i.test(t))return n;let r=await S(n?.code??e,Ee);if(!r.hasChanged())return n;let i=r.generateMap({hires:!0,includeContent:!0,source:t});return{code:r.toString(),map:n?.map?f([i,n.map],()=>null).toString():i}},async watchChange(e,t){if(e===L||P.has(w(e)))try{await He()}finally{xe(e=>this.addWatchFile(e))}else X&&await X;if(t.event===`delete`){let t=new Set([e]);for(let n of[...y.modules.keys(),...R.keys(),...z.keys()])(n===e||n.startsWith(`${e}?`))&&t.add(n);for(let e of t)R.delete(e),z.delete(e),B.delete(e);await Promise.all(Array.from(t,e=>y.extract(``,e)))}},async generateBundle(e,t){if(C)return;let n,r=Q.get(this.environment??y)??new Map;for(let[i,a]of Object.entries(t)){if(a.type!==`asset`||!a.fileName.endsWith(`.css`))continue;let o=typeof a.source==`string`?a.source:new TextDecoder().decode(a.source);if(!o.includes(D)&&!o.includes(`;teacss=v1-`))continue;o.includes(D)&&(n??=K??await ke());let c=new Set,u=async e=>(await S(o.replaceAll(D,n??``),t=>{let n=r.get(t.digest);n||(n=this.emitFile({type:`asset`,name:oe(t),source:t.bytes}),r.set(t.digest,n));let i=this.getFileName(n);c.add(i);let a=x?.base??`/`;return a===`./`||a===``?`./${l.relative(l.dirname(e),i)}`:`${a}${i}`})).toString(),d=await u(a.fileName);for(let e of Object.values(t))if(e.type===`chunk`&&e.viteMetadata?.importedCss.has(a.fileName))for(let t of c)e.viteMetadata.importedAssets.add(t);let f=typeof e.assetFileNames!=`string`||e.assetFileNames.includes(`[hash`);if(typeof e.assetFileNames==`function`){let t={name:a.name,names:a.names,originalFileName:a.originalFileName??void 0,originalFileNames:a.originalFileNames,type:`asset`},n=e.assetFileNames({...t,source:a.source}),r=e.assetFileNames({...t,source:d});f=r.includes(`[hash`)||r!==n}if(!x||!(`environments`in x)||!f){a.source=d;continue}let p=e=>this.getFileName(this.emitFile({type:`asset`,name:a.name||s(a.fileName),...a.originalFileName?{originalFileName:a.originalFileName}:{},source:e})),m=p(d),h=await u(m);if(h!==d){let e=$.get(this.environment??y)??new Set;if(e.add(m),$.set(this.environment??y,e),d=h,m=p(d),await u(m)!==d)throw Error(`TeaCSS CSS output naming changes its font-relative directory after URL resolution`)}let g=new Set,_=x.build.manifest,v=x.build.ssrManifest;_&&g.add(typeof _==`string`?_:`.vite/manifest.json`),v&&g.add(typeof v==`string`?v:`.vite/ssr-manifest.json`);for(let e of Object.values(t))e.viteMetadata?.importedCss.delete(a.fileName)&&e.viteMetadata.importedCss.add(m),e.type===`chunk`?e.code=ge(e.code,a.fileName,m):e!==a&&typeof e.source==`string`&&g.has(e.fileName)&&(e.source=he(e.source,a.fileName,m));delete t[i]}}},We={name:`teacss:api`,enforce:`post`,api:{getContext:()=>y,getMode:()=>`global`},transform(e,t){return!C||t!==b||!e.includes(`import.meta.hot`)?null:`${e}\nimport.meta.hot.send(${JSON.stringify(O)});`},augmentChunkHash(){return q},generateBundle:{order:`post`,async handler(e,t){let n=Ue.generateBundle;typeof n==`function`&&await n.call(this,e,t,!1);let r=$.get(this.environment??y);for(let e of r??[])delete t[e];r?.clear()}}};function Ge(e){return{name:e?`teacss:easing-source`:`teacss:easing-output`,enforce:e,transform(t,n){let r=x;if(!r||r.css.transformer!==`lightningcss`&&r.build.cssMinify!==`lightningcss`||!/\.(?:css|scss|sass|less|styl|stylus|sss)(?:$|\?)/i.test(n)||/[?&](?:raw|url)(?:&|$)/.test(n)||e&&(r.css.transformer!==`lightningcss`||!/\.css(?:$|\?)/i.test(n)))return null;let i=new ce(t);return te(i),i.hasChanged()?{code:i.toString(),map:i.generateMap({hires:!0,includeContent:!0,source:n})}:null}}}return[Ue,We,Ge(`pre`),Ge()]}export{pe as defineConfig,P as pluginTeacss};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teacss/vite",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "Vite plugin for TeaCSS.",
5
5
  "homepage": "https://css.teasim.com",
6
6
  "funding": "https://github.com/sponsors/billgo",
@@ -23,11 +23,11 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@jridgewell/remapping": "^2.3.5",
26
- "@teacss/config": "0.9.0",
27
- "@teacss/core": "0.9.0",
28
- "@teacss/directives": "0.9.0",
29
- "@teacss/engine": "0.9.0",
30
- "@teacss/runtime": "0.9.0",
26
+ "@teacss/config": "0.9.2",
27
+ "@teacss/core": "0.9.2",
28
+ "@teacss/directives": "0.9.2",
29
+ "@teacss/engine": "0.9.3",
30
+ "@teacss/runtime": "0.9.2",
31
31
  "lightningcss": "^1.33.0",
32
32
  "magic-string": "^1.2.3"
33
33
  },