@teacss/vite 0.8.2 → 0.8.5
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 +13 -0
- package/dist/easing-imports-tv4xC-1o.js +1 -0
- package/dist/index.js +2 -2
- package/package.json +8 -6
package/README.md
CHANGED
|
@@ -27,6 +27,19 @@ passes generated rules through Vite's CSS transform and minifier, and includes
|
|
|
27
27
|
the final CSS digest in dependent chunk hashes. Fixed asset names stay fixed.
|
|
28
28
|
Generated utility CSS has no build sourcemap.
|
|
29
29
|
|
|
30
|
+
When Lightning CSS is configured, calculated Bézier x coordinates are guarded
|
|
31
|
+
before direct CSS/CSS Modules parsing and generated-preflight optimization.
|
|
32
|
+
With the PostCSS transformer, the guard runs after user plugins and imports,
|
|
33
|
+
before Lightning CSS minification. Authored source maps are retained.
|
|
34
|
+
Native Lightning CSS processing captures the exact CSS returned by Vite's
|
|
35
|
+
resolver, including compiled Sass and Less in entries and imports. Original
|
|
36
|
+
source locations identify proven calculated timing values for repair before
|
|
37
|
+
minification. CSS Modules, assets, source maps and user visitors retain their
|
|
38
|
+
native behavior. Preprocessor hooks run once; compiler options, worker selection
|
|
39
|
+
and import resolution remain Vite-owned. No transformer change is needed.
|
|
40
|
+
See the [easing audit](../../docs/knowledge/steps-and-cubic-bezier-easing.md#authored-css-exposure)
|
|
41
|
+
for coverage and limitations.
|
|
42
|
+
|
|
30
43
|
Astro projects should use `@teacss/astro`. Add `@teacss/inspector` only for
|
|
31
44
|
development inspection.
|
|
32
45
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{readFileSync as e}from"node:fs";import{prepareEasingStylesheet as t}from"@teacss/directives/internal/easing";import{composeVisitors as n,transform as r}from"lightningcss";const i=new Set([`animation`,`animation-timing-function`,`transition`,`transition-timing-function`]);function a(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function o(e){if(!a(e)||typeof e.type!=`string`||!a(e.value)||!a(e.value.loc))return;let{line:t,column:n}=e.value.loc;if(typeof t==`number`&&typeof n==`number`&&typeof e.value.loc.source_index==`number`)return{type:e.type,value:e.value,key:`${e.type}:${t}:${n}`}}function s(e,t=[]){if(Array.isArray(e))for(let n of e)s(n,t);else if(a(e)){let n=o(e);n&&t.push(n);for(let n of Object.values(e))s(n,t)}return t}function c(e,t=[]){if(Array.isArray(e))for(let n of e)c(n,t);else if(a(e)){if(o(e))return t;if(Array.isArray(e.declarations)&&Array.isArray(e.importantDeclarations))t.push(e);else for(let n of Object.values(e))c(n,t)}return t}function l(e){return a(e)&&typeof e.property==`string`&&i.has(e.property)}function u(e,t){return JSON.stringify(e)===JSON.stringify(t)}function d(e,t,n){let i=[];return r({...n,filename:t,code:Buffer.from(e),minify:!1,sourceMap:!1,visitor:{StyleSheet(e){i=s(e.rules)}}}),i}function f(n,r,i){let a=new Map;if(i===void 0&&!/\.css$/i.test(n))return a;let o=i??e(n,`utf8`),s=t(o);if(o===s)return a;let f=d(o,n,r),p=d(s,n,r);if(f.length!==p.length)return a;for(let e=0;e<f.length;e++){let t=f[e],n=p[e];if(t.type!==n.type)continue;let r=c(t.value),i=c(n.value);if(r.length!==i.length)continue;let o=[];for(let e=0;e<r.length;e++)for(let t of[`declarations`,`importantDeclarations`]){let n=r[e][t].filter(l),a=i[e][t].filter(l);n.length===a.length&&!u(n,a)&&o.push({before:n,after:a,block:e,field:t})}o.length&&a.set(t.key,o)}return a}function p(e,t=!1){return function(r){function i(e){if(t&&typeof e?.resolver?.read!=`function`&&!(e?.code instanceof Uint8Array))throw Error(`TeaCSS requires the Lightning CSS visitor factory to expose native source input before parsing.`)}i(this);let d=typeof e.visitor==`function`?e.visitor.call(this,r):e.visitor;i(this);let p=new Map;this?.code&&p.set(this.filename,Buffer.from(this.code).toString());let m=this?.resolver,h=m?.read;this&&m&&h&&(this.resolver={...m,resolve:m.resolve?.bind(m),async read(e){let t=await h.call(m,e);return p.set(e,t),t}});let g=n([{Rule(){},RuleExit(){},Declaration(){}},d??{}]),_=[],v=this,y=e,b=!1,x=[],S=new Map,C=[];function w(e){if(!a(e.value.loc))return;let n=e.value.loc.source_index;if(typeof n!=`number`)return;let r=p.get(_[n]);if(t&&r===void 0)throw Error(`TeaCSS did not capture Lightning CSS input for ${_[n]}. The native source boundary is incompatible.`);if(n===0&&r===void 0)return;let i=S.get(n);return i||(i=f(_[n],y,r),S.set(n,i)),i.get(e.key)}function T(e){let t=w(e);if(!t)return;let n=c(e.value);for(let e of t){let t=n[e.block]?.[e.field];if(!t||!u(t.filter(l),e.before))continue;let r=0;for(let n=0;n<t.length;n++)l(t[n])&&(t[n]=e.after[r++])}}return{...d,StyleSheet(t){_=t.sources;let n=/\.module\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/.test(_[0]);if(y=v?{...v,cssModules:v.cssModules??!1}:{...e,cssModules:n?e.cssModules??!0:!1},!d?.StyleSheet)return;for(let e of s(t.rules))T(e);let r=d.StyleSheet(t);return b=!!r,r},Rule(e){C=[];let t=b||x.at(-1)?.authoritative===!0;x.push({authoritative:t,exits:1});let n=o(e),r=!t&&n?w(n):void 0;if(n&&r){let e=c(n.value);for(let t=0;t<e.length;t++)for(let n of[`importantDeclarations`,`declarations`]){let i=e[t][n].filter(l),a=r.find(e=>e.block===t&&e.field===n&&u(i,e.before));for(let e=0;e<i.length;e++)C.push({before:i[e],after:a?.after[e]??i[e]})}}if(!d?.Rule)return;if(!t)for(let t of s(e))T(t);let i=g.Rule(e);if(i){C=[];let e=x[x.length-1];e.authoritative=!0,e.exits=Array.isArray(i)?i.length:1,e.exits===0&&x.pop()}return i},RuleExit(e){let t=x.at(-1);return t&&--t.exits===0&&x.pop(),g.RuleExit(e)},Declaration(e){let t=e;if(l(e)){let n=C.shift();n&&u(e,n.before)?t=n.after:C=[]}let n=g.Declaration(t);if(n)return n;if(!u(e,t))return t}}}}export{p as createEasingImportVisitor};
|
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,resolve as
|
|
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};
|
|
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}}}function E(e){return e}const pe=new Set([`virtual:teacss.css`,`teacss.css`]),D=`/*! ${b} */`,me=`teacss:css-ready`;function O(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=O(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 k(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 A(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=A(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=k(e,i);if(a<0||!e.startsWith(`)))=>i.map(i=>d[i]);`,a+1)||A(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 j={chrome:`chrome`,edge:`edge`,firefox:`firefox`,hermes:!1,ie:`ie`,ios:`ios_saf`,node:!1,opera:`opera`,rhino:!1,safari:`safari`},M={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=M[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&&j[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 N(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,E,O=!1,k,A,j=new Set,M,N,P,ve=0;async function F(){M??=fe(()=>_,async()=>{w?await Re():P&&a(P,String(++ve))},e=>x?.logger.error(e instanceof Error?e.message:String(e)));try{await M.resolved()}catch(e){throw M.retire(),M=void 0,e}}async function I(){let e=M;M=void 0,await e?.close(),N&&r(N,{recursive:!0,force:!0}),N=void 0,P=void 0}function L(e){let t=new Set(v(_).map(C));for(let n of j)t.has(n)||e(n);P&&e(P)}let R=new Map,z=new Map,B=new Map,V=new Set,H,U,W=0,ye=!1,G,K,q=0,J=0,Y,X;function be(){X=void 0}function xe(e=y.root){let t=y.getConfigFileList().map(C),n=new Set(t);if(typeof g==`object`){j=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)));j=n}async function Se(){let{prefix:e}=await y.getVMPRegexes();return b=`/${e}.css`,b}let Ce=new Map,Z=new WeakMap,Q=new WeakMap;function we(e){let t=S(e);return Ce.set(t,e),`${x?.base??`/`}__teacss_fonts/${t}`}async function Te(){return(await se(await Ee(),we)).toString()}async function Ee(){await y.flushTasks();let e=X;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};X=n;try{return await n.promise}catch(e){throw X===n&&(X=void 0),e}}async function De(){let e=await Ee(),t=x;if(!t||!(`environments`in t))return e;let n=u(t.root,b.slice(1)),r=t.css.transformer===`lightningcss`&&t.build.cssMinify?{...t,build:{...t.build,cssMinify:!1}}:t,i=t.css.transformer===`lightningcss`?ne(e):e,a=(await le(i,n,r)).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 ue(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(ne(a)),cssModules:void 0,filename:n,minify:!0,targets:_e(t.build.cssTarget)});for(let e of s.warnings)t.logger.warn(`[lightningcss minify] ${e.message}`);return new TextDecoder().decode(s.code)}function Oe(){if(!T)return;let e=T;H&&clearTimeout(H),H=setTimeout(()=>{H=void 0;let t=U,n=(async()=>{if(t&&await t.catch(()=>{}),T!==e||(O?J:q)>=W||(await Ie(),await e.waitForRequestsIdle?.(),T!==e||(O?J:q)>=W))return;let n=W,r=e.moduleGraph.getModuleById(b);if(!r){q=n,O&&(J=n);return}O?(e.moduleGraph.invalidateModule(r),e.watcher.emit(`change`,r.file??b),J=n,q=n):(e.moduleGraph.invalidateModule(r),q=n)})();U=n,n.then(()=>{U===n&&(U=void 0,T===e&&(O?J:q)<W&&Oe())},t=>{U===n&&(U=void 0),e.config.logger.error(`TeaCSS failed to invalidate its virtual stylesheet`,{error:t})})},20)}function ke(){be(),T&&(W++,Oe())}function Ae(e){if(!T)return;let t=!1;for(let n of e){let e=T.moduleGraph.getModuleById(n);e&&(T.moduleGraph.invalidateModule(e),t=!0)}t&&T.ws.send({type:`full-reload`})}function je(){H&&clearTimeout(H),H=void 0,O=!1,k?.(),k=void 0,A?.(),A=void 0,T=void 0,U=void 0}function $(){E??=y.onInvalidate(ke)}function Me(){be(),je(),E?.(),E=void 0}async function Ne(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 Pe(e,t){Y&&await Y;let n=Ne(e,t),r=n.then(()=>{},()=>{});V.add(r);try{return await n}finally{V.delete(r)}}async function Fe(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 Ie(){for(;V.size;)await Promise.all(V)}async function Le(){let e=Array.from(z),t=new Map(e.map(([e,t])=>[e,B.get(e)??t]));try{await y.reloadConfig()}finally{xe(y.root),(T||P)&&await F()}await Se();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)}Ae(n)}async function Re(){let e=Y,t=(async()=>{e&&await e.catch(()=>{}),await Ie(),await Le()})();Y=t;try{await t}finally{Y===t&&(Y=void 0)}}let ze={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-tv4xC-1o.js`),n=e.css.lightningcss??{};e.css.lightningcss={...n,visitor:t(n,!0)}}w=e.command===`serve`,await y.updateRoot(e.root),xe(e.root),await Se(),$()},async buildStart(){Z.set(this.environment??y,new Map),Q.set(this.environment??y,new Set),ye=!1,G=void 0,K=void 0,$(),xe(),!w&&x?.build?.watch?(P||(N=n(t(c(o(),`teacss-vite-watch-`))),P=c(N,`invalidate`),a(P,`0`)),L(e=>this.addWatchFile(e)),await F()):L(e=>this.addWatchFile(e))},async buildEnd(t){if(w||t)return;if(typeof this.getModuleIds==`function`&&await Fe(this.getModuleIds()),!(ye||typeof this.getModuleInfo==`function`&&this.getModuleInfo(b)!=null)){K=void 0;return}G=await De();let n=Z.get(this.environment??y)??new Map;Z.set(this.environment??y,n);for(let{asset:e}of oe(G))n.has(e.digest)||n.set(e.digest,this.emitFile({type:`asset`,name:S(e),source:e.bytes}));K=e(`sha256`).update(G).digest(`hex`)},configureServer(e){je(),T=e,e.middlewares?.use((t,n,r)=>{let i=`${e.config.base}__teacss_fonts/`,a=t.url?.split(`?`,1)[0],o=a?.startsWith(i)?Ce.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)}),F().catch(t=>e.config?.logger.error(String(t))),$();let t=()=>{T===e&&(O=!0,J<W&&Oe())};if(e.hot?.on(me,t),k=()=>e.hot?.off(me,t),e.httpServer){let t=()=>{T===e&&(Me(),I())};e.httpServer.once(`close`,t),A=()=>e.httpServer?.off(`close`,t)}},async closeBundle(){Me(),(w||!x?.build?.watch)&&await I()},async closeWatcher(){Me(),await I()},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 Te():(ye=!0,D):null},async transform(e,t){if(t===b)return null;let n=await Pe(e,t);if(!w||!/\.css(?:$|\?)/i.test(t))return n;let r=await se(n?.code??e,we);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===P||j.has(C(e)))try{await Re()}finally{L(e=>this.addWatchFile(e))}else Y&&await Y;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(w)return;let n,r=Z.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??=G??await De());let c=new Set,u=async e=>(await se(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=Q.get(this.environment??y)??new Set;if(e.add(m),Q.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]}}},Be={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 K},generateBundle:{order:`post`,async handler(e,t){let n=ze.generateBundle;typeof n==`function`&&await n.call(this,e,t,!1);let r=Q.get(this.environment??y);for(let e of r??[])delete t[e];r?.clear()}}};function Ve(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[ze,Be,Ve(`pre`),Ve()]}export{E as defineConfig,N as pluginTeacss};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teacss/vite",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.5",
|
|
4
4
|
"description": "Vite plugin for TeaCSS.",
|
|
5
5
|
"homepage": "https://css.teasim.com",
|
|
6
6
|
"funding": "https://github.com/sponsors/billgo",
|
|
@@ -22,11 +22,13 @@
|
|
|
22
22
|
"dev": "tsdown --watch"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@
|
|
26
|
-
"@teacss/
|
|
27
|
-
"@teacss/
|
|
28
|
-
"@teacss/
|
|
29
|
-
"
|
|
25
|
+
"@jridgewell/remapping": "^2.3.5",
|
|
26
|
+
"@teacss/config": "0.8.5",
|
|
27
|
+
"@teacss/core": "0.8.5",
|
|
28
|
+
"@teacss/directives": "0.8.5",
|
|
29
|
+
"@teacss/runtime": "0.8.5",
|
|
30
|
+
"lightningcss": "^1.33.0",
|
|
31
|
+
"magic-string": "^1.2.3"
|
|
30
32
|
},
|
|
31
33
|
"devDependencies": {
|
|
32
34
|
"consola": "^3.4.2",
|