@teacss/vite 0.9.1 → 0.9.3

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/impl.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { n as TeacssVitePluginConfig } from "./types-BplrH0_C.js";
2
+ import { UserConfigDefaults } from "@teacss/core";
3
+ import { Plugin } from "vite";
4
+ //#region src/impl.d.ts
5
+ export declare function createTeacssPlugins<Theme extends object>(configOrPath?: TeacssVitePluginConfig<Theme> | string, defaults?: UserConfigDefaults): Plugin[];
6
+ //#endregion
package/dist/impl.js ADDED
@@ -0,0 +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 se}from"@teacss/runtime/internal/bundled-assets";import ce from"magic-string";import{normalizePath as C,preprocessCSS as le,transformWithEsbuild as ue}from"vite";function w(e){return e.includes(`@apply`)||e.includes(`--at-apply`)||e.includes(`@screen`)||e.includes(`theme(`)||e.includes(`icon(`)}const T=async()=>{let{default:e}=await import(`@teacss/directives`);return e()};function de(e=T){let t;return{name:`@teacss/directives`,idFilter:x,async transform(n,r,i){if(w(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}}}const pe=new Set([`virtual:teacss.css`,`teacss.css`]),E=`/*! ${b} */`,me=`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 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=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 ge(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 O(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=O(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=ge(e,i);if(a<0||!e.startsWith(`)))=>i.map(i=>d[i]);`,a+1)||O(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 k={chrome:`chrome`,edge:`edge`,firefox:`firefox`,hermes:!1,ie:`ie`,ios:`ios_saf`,node:!1,opera:`opera`,rhino:!1,safari:`safari`},A={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=A[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&&k[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 j(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,w=!1,T=!0,D,ge,O,k,A=!1,j,M,N=new Set,P,F,I,ye=0;async function L(){P??=fe(()=>_,async()=>{w?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 R(){let e=P;P=void 0,await e?.close(),F&&r(F,{recursive:!0,force:!0}),F=void 0,I=void 0}function be(e){let t=new Set(v(_).map(C));for(let n of N)t.has(n)||e(n);I&&e(I)}let z=new Map,B=new Map,V=new Map,H=new Set,U,W,G=0,xe=!1,K,q,J=0,Y=0,X,Z;function Se(){Z=void 0}function Ce(e=y.root){let t=y.getConfigFileList().map(C),n=new Set(t);if(typeof g==`object`){N=n;return}let r=C(typeof g==`string`?u(e,g):e);if(!t.includes(r))for(let e of p)n.add(C(c(r,e)));N=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=S(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 se(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===D?ge: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 je(){if(!O)return;let e=O;U&&clearTimeout(U),U=setTimeout(()=>{U=void 0;let t=W,n=(async()=>{if(t&&await t.catch(()=>{}),O!==e||(A?Y:J)>=G||(await Be(),await e.waitForRequestsIdle?.(),O!==e||(A?Y:J)>=G))return;let n=G,r=e.moduleGraph.getModuleById(b);if(!r){J=n,A&&(Y=n);return}A?(e.moduleGraph.invalidateModule(r),e.watcher.emit(`change`,r.file??b),Y=n,J=n):(e.moduleGraph.invalidateModule(r),J=n)})();W=n,n.then(()=>{W===n&&(W=void 0,O===e&&(A?Y:J)<G&&je())},t=>{W===n&&(W=void 0),e.config.logger.error(`TeaCSS failed to invalidate its virtual stylesheet`,{error:t})})},20)}function Me(){Se(),O&&(G++,je())}function Ne(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 Pe(){U&&clearTimeout(U),U=void 0,A=!1,j?.(),j=void 0,M?.(),M=void 0,O=void 0,W=void 0}function Fe(){k??=y.onInvalidate(Me)}function Ie(){Se(),Pe(),k?.(),k=void 0}async function Le(e,t){let n={};z.set(t,n),B.set(t,e);try{let r=await re(y,e,t);return z.get(t)===n?(r?V.set(t,r.code):V.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{z.get(t)===n&&z.delete(t)}}async function Re(e,t){X&&await X;let n=Le(e,t),r=n.then(()=>{},()=>{});H.add(r);try{return await n}finally{H.delete(r)}}async function ze(e){let t=new Set(e),n=new Set([...B.keys(),...V.keys()]),r=[];for(let e of n)t.has(e)||(z.delete(e),B.delete(e),V.delete(e),r.push(y.extract(``,e)));await Promise.all(r)}async function Be(){for(;H.size;)await Promise.all(H)}async function Ve(){let e=Array.from(B),t=new Map(e.map(([e,t])=>[e,V.get(e)??t]));try{await y.reloadConfig()}finally{Ce(y.root),(O||I)&&await L()}await we();let n=[];for(let[r,i]of e){let e=ae(y,r)??i;e===i?V.delete(r):V.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??{};ge=n.visitor,D=t(n,!0,e=>w&&e===b&&!T),e.css.lightningcss={...n,visitor:D}}w=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),xe=!1,K=void 0,q=void 0,Fe(),Ce(),!w&&x?.build?.watch?(I||(F=n(t(c(o(),`teacss-vite-watch-`))),I=c(F,`invalidate`),a(I,`0`)),be(e=>this.addWatchFile(e)),await L()):be(e=>this.addWatchFile(e))},async buildEnd(t){if(w||t)return;if(typeof this.getModuleIds==`function`&&await ze(this.getModuleIds()),!(xe||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 oe(K))n.has(e.digest)||n.set(e.digest,this.emitFile({type:`asset`,name:S(e),source:e.bytes}));q=e(`sha256`).update(K).digest(`hex`)},configureServer(e){Pe(),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)?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)}),L().catch(t=>e.config?.logger.error(String(t))),Fe();let t=()=>{O===e&&(A=!0,Y<G&&je())};if(e.hot?.on(me,t),j=()=>e.hot?.off(me,t),e.httpServer){let t=()=>{O===e&&(Ie(),R())};e.httpServer.once(`close`,t),M=()=>e.httpServer?.off(`close`,t)}},async closeBundle(){Ie(),(w||!x?.build?.watch)&&await R()},async closeWatcher(){Ie(),await R()},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?w?await De():(xe=!0,E):null},async transform(e,t){if(t===b)return null;let n=await Re(e,t);if(!w||!/\.css(?:$|\?)/i.test(t))return n;let r=await se(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===I||N.has(C(e)))try{await He()}finally{be(e=>this.addWatchFile(e))}else X&&await X;if(t.event===`delete`){let t=new Set([e]);for(let n of[...y.modules.keys(),...z.keys(),...B.keys()])(n===e||n.startsWith(`${e}?`))&&t.add(n);for(let e of t)z.delete(e),B.delete(e),V.delete(e);await Promise.all(Array.from(t,e=>y.extract(``,e)))}},async generateBundle(e,t){if(w)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(E)&&!o.includes(`;teacss=v1-`))continue;o.includes(E)&&(n??=K??await ke());let c=new Set,u=async e=>(await se(o.replaceAll(E,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=$.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=_e(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!w||t!==b||!e.includes(`import.meta.hot`)?null:`${e}\nimport.meta.hot.send(${JSON.stringify(me)});`},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{j as createTeacssPlugins};
package/dist/index.d.ts CHANGED
@@ -1,35 +1,8 @@
1
- import { TeacssPluginContext, UserConfig, UserConfigDefaults } from "@teacss/core";
2
- import { LightningCSSOptions, Plugin } from "vite";
3
- //#region src/types.d.ts
4
- export interface TeacssVitePluginConfig<Theme extends object = object> extends UserConfig<Theme> {
5
- /**
6
- * Generation mode. Only `global` is supported (a single virtual stylesheet
7
- * collecting every utility found across the project).
8
- *
9
- * @default "global"
10
- */
11
- mode?: "global";
12
- /**
13
- * Drive Vite's CSS pipeline with **lightningcss** instead of PostCSS + esbuild:
14
- * sets `css.transformer: "lightningcss"` (replaces PostCSS) and
15
- * `build.cssMinify: "lightningcss"` (replaces esbuild's CSS minifier). On by
16
- * default — pass `false` to keep Vite's PostCSS + esbuild pipeline, or an
17
- * object to forward lightningcss options (e.g. `targets`, `drafts`). Only
18
- * fields you haven't set yourself are touched, so an explicit
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.
22
- *
23
- * @default true
24
- */
25
- lightningcss?: boolean | LightningCSSOptions;
26
- }
27
- //#endregion
1
+ import { n as TeacssVitePluginConfig, t as TeacssVitePluginAPI } from "./types-BplrH0_C.js";
2
+ import { UserConfigDefaults } from "@teacss/core";
3
+ import { Plugin } from "vite";
28
4
  //#region src/index.d.ts
29
5
  export declare function defineConfig<Theme extends object>(config: TeacssVitePluginConfig<Theme>): TeacssVitePluginConfig<Theme>;
30
- export interface TeacssVitePluginAPI {
31
- getContext: () => TeacssPluginContext<TeacssVitePluginConfig>;
32
- getMode: () => "global";
33
- }
34
6
  export declare function pluginTeacss<Theme extends object>(configOrPath?: TeacssVitePluginConfig<Theme> | string, defaults?: UserConfigDefaults): Plugin[];
35
- //#endregion
7
+ //#endregion
8
+ export { TeacssVitePluginAPI, TeacssVitePluginConfig };
package/dist/index.js CHANGED
@@ -1,2 +1 @@
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=`url(${JSON.stringify(`${x?.base??`/`}__teacss_fonts/`).slice(0,-1)}`,t=(await C(await Ae(),Oe)).toString().replaceAll(e,`URL${e.slice(3)}`);return ue=/@import/i.test(t),t}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,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??{};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{createRequire as e}from"node:module";import{enableNodeCompileCache as t}from"@teacss/runtime/internal/compile-cache";function n(e){return e}t();const r=e(import.meta.url);function i(e,t={}){let n,i=()=>(n??=r("./impl.js").createTeacssPlugins(e,t),n),a=(e,t)=>function(...n){return i()[e][t].call(this,...n)},o=(e,t)=>function(...n){return i()[e][t].handler.call(this,...n)};return[{name:`teacss`,enforce:`pre`,config:a(0,`config`),configResolved:a(0,`configResolved`),buildStart:a(0,`buildStart`),buildEnd:a(0,`buildEnd`),configureServer:a(0,`configureServer`),closeBundle:a(0,`closeBundle`),closeWatcher:a(0,`closeWatcher`),transformIndexHtml:{order:`pre`,handler:o(0,`transformIndexHtml`)},resolveId:a(0,`resolveId`),load:a(0,`load`),transform:a(0,`transform`),watchChange:a(0,`watchChange`),generateBundle:a(0,`generateBundle`)},{name:`teacss:api`,enforce:`post`,api:{getContext:()=>i()[1].api?.getContext(),getMode:()=>`global`},transform:a(1,`transform`),augmentChunkHash:a(1,`augmentChunkHash`),generateBundle:{order:`post`,handler:o(1,`generateBundle`)}},{name:`teacss:easing-source`,enforce:`pre`,transform:a(2,`transform`)},{name:`teacss:easing-output`,enforce:void 0,transform:a(3,`transform`)}]}export{n as defineConfig,i as pluginTeacss};
@@ -0,0 +1,32 @@
1
+ import { TeacssPluginContext, UserConfig } from "@teacss/core";
2
+ import { LightningCSSOptions } from "vite";
3
+ //#region src/types.d.ts
4
+ interface TeacssVitePluginConfig<Theme extends object = object> extends UserConfig<Theme> {
5
+ /**
6
+ * Generation mode. Only `global` is supported (a single virtual stylesheet
7
+ * collecting every utility found across the project).
8
+ *
9
+ * @default "global"
10
+ */
11
+ mode?: "global";
12
+ /**
13
+ * Drive Vite's CSS pipeline with **lightningcss** instead of PostCSS + esbuild:
14
+ * sets `css.transformer: "lightningcss"` (replaces PostCSS) and
15
+ * `build.cssMinify: "lightningcss"` (replaces esbuild's CSS minifier). On by
16
+ * default — pass `false` to keep Vite's PostCSS + esbuild pipeline, or an
17
+ * object to forward lightningcss options (e.g. `targets`, `drafts`). Only
18
+ * fields you haven't set yourself are touched, so an explicit
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.
22
+ *
23
+ * @default true
24
+ */
25
+ lightningcss?: boolean | LightningCSSOptions;
26
+ }
27
+ interface TeacssVitePluginAPI {
28
+ getContext: () => TeacssPluginContext<TeacssVitePluginConfig>;
29
+ getMode: () => "global";
30
+ }
31
+ //#endregion
32
+ export { TeacssVitePluginConfig as n, TeacssVitePluginAPI as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teacss/vite",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
4
  "description": "Vite plugin for TeaCSS.",
5
5
  "homepage": "https://css.teasim.com",
6
6
  "funding": "https://github.com/sponsors/billgo",
@@ -10,6 +10,7 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": "./dist/index.js",
13
+ "./impl": "./dist/impl.js",
13
14
  "./package.json": "./package.json"
14
15
  },
15
16
  "types": "./dist/index.d.ts",
@@ -23,11 +24,11 @@
23
24
  },
24
25
  "dependencies": {
25
26
  "@jridgewell/remapping": "^2.3.5",
26
- "@teacss/config": "0.9.1",
27
- "@teacss/core": "0.9.1",
28
- "@teacss/directives": "0.9.1",
29
- "@teacss/engine": "0.9.1",
30
- "@teacss/runtime": "0.9.1",
27
+ "@teacss/config": "0.9.3",
28
+ "@teacss/core": "0.9.3",
29
+ "@teacss/directives": "0.9.3",
30
+ "@teacss/engine": "0.9.3",
31
+ "@teacss/runtime": "0.9.3",
31
32
  "lightningcss": "^1.33.0",
32
33
  "magic-string": "^1.2.3"
33
34
  },