@teacss/vite 0.7.2 → 0.8.1

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/README.md CHANGED
@@ -31,3 +31,16 @@ Astro projects should use `@teacss/astro`. Add `@teacss/inspector` only for
31
31
  development inspection.
32
32
 
33
33
  Pre-1.0. Install this adapter and `teacss` as development dependencies.
34
+
35
+ Development and production watch builds track source-scanned CSS declarations,
36
+ including new files, deleted files, recreated files, and initially missing external
37
+ absolute `@source` roots. This updates shortcuts and safelists; utility extraction
38
+ still follows Vite's loaded module graph and pipeline filters.
39
+ A bounded declaration check every 500 ms also recovers changes omitted by native
40
+ callbacks; unchanged declarations do not reload configuration or rebuild.
41
+
42
+ Glob-matched CSS file symlinks observe their physical file targets through
43
+ filtered shallow parent watches, including recovery after a failed member read.
44
+ Nested source directory symlinks observe physical target changes, including empty
45
+ targets and target deletion or recreation. Missing routes use shallow parent
46
+ observation. Failed reads retain the last accepted configuration.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createHash as e}from"node:crypto";import{basename as t,join as n,resolve as r}from"node:path";import i from"node:process";import{entryDiscoveryFiles as a}from"@teacss/config";import{CSS_PLACEHOLDER as o,isCssId as s}from"@teacss/core";import{applyTransformerPipeline as c,createContext as l,getModuleOutput as u}from"@teacss/runtime";import{normalizePath as d,preprocessCSS as f,transformWithEsbuild as p}from"vite";function m(e){return e.includes(`@apply`)||e.includes(`--at-apply`)||e.includes(`@screen`)||e.includes(`theme(`)||e.includes(`icon(`)}const h=async()=>{let{default:e}=await import(`@teacss/directives`);return e()};function ee(e=h){let t;return{name:`@teacss/directives`,idFilter:s,async transform(n,r,i){if(m(n.original))return await(await(t??=e())).transform?.(n,r,i)}}}function g(e){return e}const _=new Set([`virtual:teacss.css`,`teacss.css`]),v=`/*! ${o} */`,y=`teacss:css-ready`;function b(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 te(e,t,n){let r;try{r=JSON.parse(e)}catch{return e}let i=!1,a=e=>{if(typeof e==`string`){let r=b(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 x(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 S(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 ne(e,t,n){let r=S(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=x(e,i);if(a<0||!e.startsWith(`)))=>i.map(i=>d[i]);`,a+1)||S(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 C={chrome:`chrome`,edge:`edge`,firefox:`firefox`,hermes:!1,ie:`ie`,ios:`ios_saf`,node:!1,opera:`opera`,rhino:!1,safari:`safari`},w={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 re(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=w[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&&C[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 T(o,s={}){let m,h=o;if(o&&typeof o==`object`){m=o.lightningcss;let e={...o};delete e.lightningcss,delete e.mode,h=Object.keys(e).length?e:void 0}let g=l(h,{envMode:i.env.NODE_ENV===`development`?`dev`:`build`,...s,transformers:[...s.transformers??[],ee()]}),b=`/__tea.css`,x,S=!1,C,w,T=!1,E,D,O=new Set,k=new Map,A=new Map,j=new Map,M=new Set,N,P,F=0,I=!1,L,R,z=0,B=0,V,H;function U(){H=void 0}function W(e=g.root){let t=g.getConfigFileList().map(d),i=new Set(t);if(typeof h==`object`){O=i;return}let o=d(typeof h==`string`?r(e,h):e);if(!t.includes(o))for(let e of a)i.add(d(n(o,e)));O=i}async function G(){let{prefix:e}=await g.getVMPRegexes();return b=`/${e}.css`,b}async function K(){await g.flushTasks();let e=H;if(e&&e.config===g.generator.config&&e.tokens.length===g.tokens.size){let t=0,n=!0;for(let r of g.tokens)if(e.tokens[t++]!==r){n=!1;break}if(n)return await e.promise}let t=[...g.tokens],n={config:g.generator.config,promise:g.generator.generate(t,{minify:!1}).then(({css:e})=>e),tokens:t};H=n;try{return await n.promise}catch(e){throw H===n&&(H=void 0),e}}async function q(){let e=await K(),t=x;if(!t||!(`environments`in t))return e;let n=r(t.root,b.slice(1)),i=t.css.transformer===`lightningcss`&&t.build.cssMinify?{...t,build:{...t.build,cssMinify:!1}}:t,a=(await f(e,n,i)).code;if(!t.build.cssMinify)return a;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},o=await p(a,n,{...r,...i,loader:`css`,sourcemap:!1,target:t.build.cssTarget||void 0},void 0,t,void 0,!0);for(let e of o.warnings)t.logger.warn(`[esbuild css minify] ${e.text}`);return o.code}let{transform:o}=await import(`lightningcss`),s=o({...t.css.lightningcss,code:Buffer.from(a),cssModules:void 0,filename:n,minify:!0,targets:re(t.build.cssTarget)});for(let e of s.warnings)t.logger.warn(`[lightningcss minify] ${e.message}`);return new TextDecoder().decode(s.code)}function J(){if(!C)return;let e=C;N&&clearTimeout(N),N=setTimeout(()=>{N=void 0;let t=P,n=(async()=>{if(t&&await t.catch(()=>{}),C!==e||(T?B:z)>=F||(await Q(),await e.waitForRequestsIdle?.(),C!==e||(T?B:z)>=F))return;let n=F,r=e.moduleGraph.getModuleById(b);if(!r){z=n,T&&(B=n);return}T?(e.moduleGraph.invalidateModule(r),e.watcher.emit(`change`,r.file??b),B=n,z=n):(e.moduleGraph.invalidateModule(r),z=n)})();P=n,n.then(()=>{P===n&&(P=void 0,C===e&&(T?B:z)<F&&J())},t=>{P===n&&(P=void 0),e.config.logger.error(`TeaCSS failed to invalidate its virtual stylesheet`,{error:t})})},20)}function ie(){U(),C&&(F++,J())}function ae(e){if(!C)return;let t=!1;for(let n of e){let e=C.moduleGraph.getModuleById(n);e&&(C.moduleGraph.invalidateModule(e),t=!0)}t&&C.ws.send({type:`full-reload`})}function Y(){N&&clearTimeout(N),N=void 0,T=!1,E?.(),E=void 0,D?.(),D=void 0,C=void 0,P=void 0}function X(){w??=g.onInvalidate(ie)}function Z(){U(),Y(),w?.(),w=void 0}async function oe(e,t){let n={};k.set(t,n),A.set(t,e);try{let r=await c(g,e,t);return k.get(t)===n?(r?j.set(t,r.code):j.delete(t),g.filter(e,t)?await g.extract(r?.code??e,t):g.modules.has(t)&&await g.extract(``,t),r??null):r??null}finally{k.get(t)===n&&k.delete(t)}}async function se(e,t){V&&await V;let n=oe(e,t),r=n.then(()=>{},()=>{});M.add(r);try{return await n}finally{M.delete(r)}}async function ce(e){let t=new Set(e),n=new Set([...A.keys(),...j.keys()]),r=[];for(let e of n)t.has(e)||(k.delete(e),A.delete(e),j.delete(e),r.push(g.extract(``,e)));await Promise.all(r)}async function Q(){for(;M.size;)await Promise.all(M)}async function le(){let e=Array.from(A),t=new Map(e.map(([e,t])=>[e,j.get(e)??t]));try{await g.reloadConfig()}finally{W(g.root)}await G();let n=[];for(let[r,i]of e){let e=u(g,r)??i;e===i?j.delete(r):j.set(r,e),e!==t.get(r)&&n.push(r)}ae(n)}async function ue(){let e=V,t=(async()=>{e&&await e.catch(()=>{}),await Q(),await le()})();V=t;try{await t}finally{V===t&&(V=void 0)}}let $={name:`teacss`,enforce:`pre`,config(e){if(m===!1)return;let t=typeof m==`object`?m: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){x=e,S=e.command===`serve`,await g.updateRoot(e.root),W(e.root),await G(),X()},buildStart(){I=!1,L=void 0,R=void 0,X(),W();for(let e of O)this.addWatchFile(e)},async buildEnd(t){if(!(S||t)){if(typeof this.getModuleIds==`function`&&await ce(this.getModuleIds()),!(I||typeof this.getModuleInfo==`function`&&this.getModuleInfo(b)!=null)){R=void 0;return}L=await q(),R=e(`sha256`).update(L).digest(`hex`)}},configureServer(e){Y(),C=e,X();let t=()=>{C===e&&(T=!0,B<F&&J())};if(e.hot?.on(y,t),E=()=>e.hot?.off(y,t),e.httpServer){let t=()=>{C===e&&Z()};e.httpServer.once(`close`,t),D=()=>e.httpServer?.off(`close`,t)}},closeBundle(){Z()},transformIndexHtml:{order:`pre`,async handler(e,{filename:t}){g.filter(e,t)?await g.extract(e,t):g.modules.has(t)&&await g.extract(``,t)}},async resolveId(e){return _.has(e)||_.has(e.replace(/^\//,``))||e.startsWith(`${b}?`)?b:null},async load(e){return e===b?S?await K():(I=!0,v):null},async transform(e,t){return t===b?null:await se(e,t)},async watchChange(e,t){if(O.has(d(e)))try{await ue()}finally{for(let e of O)this.addWatchFile(e)}else V&&await V;if(t.event===`delete`){let t=new Set([e]);for(let n of[...g.modules.keys(),...k.keys(),...A.keys()])(n===e||n.startsWith(`${e}?`))&&t.add(n);for(let e of t)k.delete(e),A.delete(e),j.delete(e);await Promise.all(Array.from(t,e=>g.extract(``,e)))}},async generateBundle(e,n){if(S)return;let r;for(let[i,a]of Object.entries(n)){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(v))continue;r??=L??await q();let s=o.replaceAll(v,r),c=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:s});c=r.includes(`[hash`)||r!==n}if(!x||!(`environments`in x)||!c){a.source=s;continue}let l=this.emitFile({type:`asset`,name:a.name||t(a.fileName),...a.originalFileName?{originalFileName:a.originalFileName}:{},source:s}),u=this.getFileName(l),d=new Set,f=x.build.manifest,p=x.build.ssrManifest;f&&d.add(typeof f==`string`?f:`.vite/manifest.json`),p&&d.add(typeof p==`string`?p:`.vite/ssr-manifest.json`);for(let e of Object.values(n))e.viteMetadata?.importedCss.delete(a.fileName)&&e.viteMetadata.importedCss.add(u),e.type===`chunk`?e.code=ne(e.code,a.fileName,u):e!==a&&typeof e.source==`string`&&d.has(e.fileName)&&(e.source=te(e.source,a.fileName,u));delete n[i]}}};return[$,{name:`teacss:api`,enforce:`post`,api:{getContext:()=>g,getMode:()=>`global`},transform(e,t){return!S||t!==b||!e.includes(`import.meta.hot`)?null:`${e}\nimport.meta.hot.send(${JSON.stringify(y)});`},augmentChunkHash(){return R},generateBundle:{order:`post`,async handler(e,t){let n=$.generateBundle;typeof n==`function`&&await n.call(this,e,t,!1)}}}]}export{g as defineConfig,T 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,resolve as l}from"node:path";import u from"node:process";import{entryDiscoveryFiles as d}from"@teacss/config";import{SourceWatchRegistry as f,createSourceDeclarationCheck as p,planSourceWatches as m,probeSourceDeclarations as h,sourceDeclarationMemberPaths as g,sourceDeclarationStateOf as _,sourceDeclarationWatchTargets as v}from"@teacss/config/internal/source-scan";import{CSS_PLACEHOLDER as y,isCssId as b}from"@teacss/core";import{applyTransformerPipeline as ee,createContext as te,getModuleOutput as ne}from"@teacss/runtime";import{normalizePath as x,preprocessCSS as re,transformWithEsbuild as ie}from"vite";function S(e){return e.includes(`@apply`)||e.includes(`--at-apply`)||e.includes(`@screen`)||e.includes(`theme(`)||e.includes(`icon(`)}const C=async()=>{let{default:e}=await import(`@teacss/directives`);return e()};function ae(e=C){let t;return{name:`@teacss/directives`,idFilter:b,async transform(n,r,i){if(S(n.original))return await(await(t??=e())).transform?.(n,r,i)}}}function oe(e,t,n){let r,a=!1,o=0,s,c=Promise.resolve(),l=new f((e,t,n)=>i(e,{recursive:n},t),()=>g(),n),u=p(e,async e=>{await c,!a&&e.signature!==r?.signature&&await g()},n);function d(){l.reconcile(m(v(e())))}function g(){if(!a)return c=c.then(async()=>{if(a)return;d();let n=o,i=s,c=await h(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 _(){a=!0,u.retire(),l.retire()}return{resolved(){a||(d(),o++,s=h(e(),!0,r),s.catch(n),g())},retire:_,async close(){_(),await u.close(),await c}}}function w(e){return e}const se=new Set([`virtual:teacss.css`,`teacss.css`]),T=`/*! ${y} */`,E=`teacss:css-ready`;function D(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 ce(e,t,n){let r;try{r=JSON.parse(e)}catch{return e}let i=!1,a=e=>{if(typeof e==`string`){let r=D(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 le(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 ue(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,f={}){let p,m=i;if(i&&typeof i==`object`){p=i.lightningcss;let e={...i};delete e.lightningcss,delete e.mode,m=Object.keys(e).length?e:void 0}let h,v=te(m,{envMode:u.env.NODE_ENV===`development`?`dev`:`build`,...f,transformers:[...f.transformers??[],ae()]},e=>{h=_(e)}),y=`/__tea.css`,b,S=!1,C,w,D=!1,O,k,A=new Set,j,M,N,de=0;async function P(){j??=oe(()=>h,async()=>{S?await Te():N&&a(N,String(++de))},e=>b?.logger.error(e instanceof Error?e.message:String(e)));try{await j.resolved()}catch(e){throw j.retire(),j=void 0,e}}async function F(){let e=j;j=void 0,await e?.close(),M&&r(M,{recursive:!0,force:!0}),M=void 0,N=void 0}function I(e){let t=new Set(g(h).map(x));for(let n of A)t.has(n)||e(n);N&&e(N)}let L=new Map,R=new Map,z=new Map,B=new Set,V,H,U=0,W=!1,G,K,q=0,J=0,Y,X;function fe(){X=void 0}function Z(e=v.root){let t=v.getConfigFileList().map(x),n=new Set(t);if(typeof m==`object`){A=n;return}let r=x(typeof m==`string`?l(e,m):e);if(!t.includes(r))for(let e of d)n.add(x(c(r,e)));A=n}async function pe(){let{prefix:e}=await v.getVMPRegexes();return y=`/${e}.css`,y}async function me(){await v.flushTasks();let e=X;if(e&&e.config===v.generator.config&&e.tokens.length===v.tokens.size){let t=0,n=!0;for(let r of v.tokens)if(e.tokens[t++]!==r){n=!1;break}if(n)return await e.promise}let t=[...v.tokens],n={config:v.generator.config,promise:v.generator.generate(t,{minify:!1}).then(({css:e})=>e),tokens:t};X=n;try{return await n.promise}catch(e){throw X===n&&(X=void 0),e}}async function he(){let e=await me(),t=b;if(!t||!(`environments`in t))return e;let n=l(t.root,y.slice(1)),r=t.css.transformer===`lightningcss`&&t.build.cssMinify?{...t,build:{...t.build,cssMinify:!1}}:t,i=(await re(e,n,r)).code;if(!t.build.cssMinify)return i;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},a=e.minifyIdentifiers!=null||e.minifySyntax!=null||e.minifyWhitespace!=null?{minifyIdentifiers:e.minifyIdentifiers??!0,minifySyntax:e.minifySyntax??!0,minifyWhitespace:e.minifyWhitespace??!0}:{minify:!0},o=await ie(i,n,{...r,...a,loader:`css`,sourcemap:!1,target:t.build.cssTarget||void 0},void 0,t,void 0,!0);for(let e of o.warnings)t.logger.warn(`[esbuild css minify] ${e.text}`);return o.code}let{transform:a}=await import(`lightningcss`),o=a({...t.css.lightningcss,code:Buffer.from(i),cssModules:void 0,filename:n,minify:!0,targets:ue(t.build.cssTarget)});for(let e of o.warnings)t.logger.warn(`[lightningcss minify] ${e.message}`);return new TextDecoder().decode(o.code)}function Q(){if(!C)return;let e=C;V&&clearTimeout(V),V=setTimeout(()=>{V=void 0;let t=H,n=(async()=>{if(t&&await t.catch(()=>{}),C!==e||(D?J:q)>=U||(await Ce(),await e.waitForRequestsIdle?.(),C!==e||(D?J:q)>=U))return;let n=U,r=e.moduleGraph.getModuleById(y);if(!r){q=n,D&&(J=n);return}D?(e.moduleGraph.invalidateModule(r),e.watcher.emit(`change`,r.file??y),J=n,q=n):(e.moduleGraph.invalidateModule(r),q=n)})();H=n,n.then(()=>{H===n&&(H=void 0,C===e&&(D?J:q)<U&&Q())},t=>{H===n&&(H=void 0),e.config.logger.error(`TeaCSS failed to invalidate its virtual stylesheet`,{error:t})})},20)}function ge(){fe(),C&&(U++,Q())}function _e(e){if(!C)return;let t=!1;for(let n of e){let e=C.moduleGraph.getModuleById(n);e&&(C.moduleGraph.invalidateModule(e),t=!0)}t&&C.ws.send({type:`full-reload`})}function ve(){V&&clearTimeout(V),V=void 0,D=!1,O?.(),O=void 0,k?.(),k=void 0,C=void 0,H=void 0}function $(){w??=v.onInvalidate(ge)}function ye(){fe(),ve(),w?.(),w=void 0}async function be(e,t){let n={};L.set(t,n),R.set(t,e);try{let r=await ee(v,e,t);return L.get(t)===n?(r?z.set(t,r.code):z.delete(t),v.filter(e,t)?await v.extract(r?.code??e,t):v.modules.has(t)&&await v.extract(``,t),r??null):r??null}finally{L.get(t)===n&&L.delete(t)}}async function xe(e,t){Y&&await Y;let n=be(e,t),r=n.then(()=>{},()=>{});B.add(r);try{return await n}finally{B.delete(r)}}async function Se(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(v.extract(``,e)));await Promise.all(r)}async function Ce(){for(;B.size;)await Promise.all(B)}async function we(){let e=Array.from(R),t=new Map(e.map(([e,t])=>[e,z.get(e)??t]));try{await v.reloadConfig()}finally{Z(v.root),(C||N)&&await P()}await pe();let n=[];for(let[r,i]of e){let e=ne(v,r)??i;e===i?z.delete(r):z.set(r,e),e!==t.get(r)&&n.push(r)}_e(n)}async function Te(){let e=Y,t=(async()=>{e&&await e.catch(()=>{}),await Ce(),await we()})();Y=t;try{await t}finally{Y===t&&(Y=void 0)}}let Ee={name:`teacss`,enforce:`pre`,config(e){if(p===!1)return;let t=typeof p==`object`?p: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){b=e,S=e.command===`serve`,await v.updateRoot(e.root),Z(e.root),await pe(),$()},async buildStart(){W=!1,G=void 0,K=void 0,$(),Z(),!S&&b?.build?.watch?(N||(M=n(t(c(o(),`teacss-vite-watch-`))),N=c(M,`invalidate`),a(N,`0`)),I(e=>this.addWatchFile(e)),await P()):I(e=>this.addWatchFile(e))},async buildEnd(t){if(!(S||t)){if(typeof this.getModuleIds==`function`&&await Se(this.getModuleIds()),!(W||typeof this.getModuleInfo==`function`&&this.getModuleInfo(y)!=null)){K=void 0;return}G=await he(),K=e(`sha256`).update(G).digest(`hex`)}},configureServer(e){ve(),C=e,P().catch(t=>e.config?.logger.error(String(t))),$();let t=()=>{C===e&&(D=!0,J<U&&Q())};if(e.hot?.on(E,t),O=()=>e.hot?.off(E,t),e.httpServer){let t=()=>{C===e&&(ye(),F())};e.httpServer.once(`close`,t),k=()=>e.httpServer?.off(`close`,t)}},async closeBundle(){ye(),(S||!b?.build?.watch)&&await F()},async closeWatcher(){ye(),await F()},transformIndexHtml:{order:`pre`,async handler(e,{filename:t}){v.filter(e,t)?await v.extract(e,t):v.modules.has(t)&&await v.extract(``,t)}},async resolveId(e){return se.has(e)||se.has(e.replace(/^\//,``))||e.startsWith(`${y}?`)?y:null},async load(e){return e===y?S?await me():(W=!0,T):null},async transform(e,t){return t===y?null:await xe(e,t)},async watchChange(e,t){if(e===N||A.has(x(e)))try{await Te()}finally{I(e=>this.addWatchFile(e))}else Y&&await Y;if(t.event===`delete`){let t=new Set([e]);for(let n of[...v.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=>v.extract(``,e)))}},async generateBundle(e,t){if(S)return;let n;for(let[r,i]of Object.entries(t)){if(i.type!==`asset`||!i.fileName.endsWith(`.css`))continue;let a=typeof i.source==`string`?i.source:new TextDecoder().decode(i.source);if(!a.includes(T))continue;n??=G??await he();let o=a.replaceAll(T,n),c=typeof e.assetFileNames!=`string`||e.assetFileNames.includes(`[hash`);if(typeof e.assetFileNames==`function`){let t={name:i.name,names:i.names,originalFileName:i.originalFileName??void 0,originalFileNames:i.originalFileNames,type:`asset`},n=e.assetFileNames({...t,source:i.source}),r=e.assetFileNames({...t,source:o});c=r.includes(`[hash`)||r!==n}if(!b||!(`environments`in b)||!c){i.source=o;continue}let l=this.emitFile({type:`asset`,name:i.name||s(i.fileName),...i.originalFileName?{originalFileName:i.originalFileName}:{},source:o}),u=this.getFileName(l),d=new Set,f=b.build.manifest,p=b.build.ssrManifest;f&&d.add(typeof f==`string`?f:`.vite/manifest.json`),p&&d.add(typeof p==`string`?p:`.vite/ssr-manifest.json`);for(let e of Object.values(t))e.viteMetadata?.importedCss.delete(i.fileName)&&e.viteMetadata.importedCss.add(u),e.type===`chunk`?e.code=le(e.code,i.fileName,u):e!==i&&typeof e.source==`string`&&d.has(e.fileName)&&(e.source=ce(e.source,i.fileName,u));delete t[r]}}};return[Ee,{name:`teacss:api`,enforce:`post`,api:{getContext:()=>v,getMode:()=>`global`},transform(e,t){return!S||t!==y||!e.includes(`import.meta.hot`)?null:`${e}\nimport.meta.hot.send(${JSON.stringify(E)});`},augmentChunkHash(){return K},generateBundle:{order:`post`,async handler(e,t){let n=Ee.generateBundle;typeof n==`function`&&await n.call(this,e,t,!1)}}}]}export{w as defineConfig,M as pluginTeacss};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teacss/vite",
3
- "version": "0.7.2",
3
+ "version": "0.8.1",
4
4
  "description": "Vite plugin for TeaCSS.",
5
5
  "homepage": "https://css.teasim.com",
6
6
  "funding": "https://github.com/sponsors/billgo",
@@ -22,10 +22,10 @@
22
22
  "dev": "tsdown --watch"
23
23
  },
24
24
  "dependencies": {
25
- "@teacss/config": "0.7.2",
26
- "@teacss/core": "0.7.2",
27
- "@teacss/directives": "0.7.2",
28
- "@teacss/runtime": "0.7.2",
25
+ "@teacss/config": "0.8.1",
26
+ "@teacss/core": "0.8.1",
27
+ "@teacss/directives": "0.8.1",
28
+ "@teacss/runtime": "0.8.1",
29
29
  "lightningcss": "^1.33.0"
30
30
  },
31
31
  "devDependencies": {