@teacss/bun 0.8.4 → 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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{AsyncLocalStorage as e}from"node:async_hooks";import{existsSync as t,watch as n}from"node:fs";import{readFile as r,stat as i}from"node:fs/promises";import{dirname as a,isAbsolute as o,resolve as s}from"node:path";import c from"node:process";import{entryDiscoveryFiles as l}from"@teacss/config";import{SourceWatchRegistry as u,createSourceDeclarationCheck as d,planSourceWatches as f,probeSourceDeclarations as p,scanSourceFiles as m,sourceDeclarationStateOf as h,sourceDeclarationWatchTargets as ee,sourceWatchTargets as g}from"@teacss/config/internal/source-scan";import _ from"@teacss/directives";import{applyTransformerPipeline as v,createContext as y,defaultFilesystemGlobs as b}from"@teacss/runtime";import{DEFAULT_SOURCE_IGNORE as x,generateSources as S,readSourceFile as C}from"@teacss/runtime/source-generation";function te(e,t,n=Bun.version){let r={...e};return delete r.metafile,Bun.semver.satisfies(n,`>=1.3.6`)&&(r.metafile=!0),{...r,plugins:t}}const w=/^(?:virtual:)?teacss\.css$/,ne=/\.css$/,T=`teacss`;function E(e){return e===void 0?{globs:b,ignore:x}:{globs:e,ignore:[]}}function re(e,t={}){return{name:`teacss`,async setup(n){let i=y(e,{...t,transformers:[...t.transformers??[],_()]}),o=n.config.root??c.cwd();await i.updateRoot(o);let s=new Set,l=new Set,u=!0;function d(){let e=i.getConfigFileList()[0];return e?a(e):o}async function f(e){let t=e();s.add(t);try{return await t}finally{s.delete(t)}}n.onStart(async()=>{if(u){u=!1;return}await Promise.allSettled(s);for(let e of l)await i.extract(``,e);l.clear(),await i.reloadConfig()}),n.onResolve({filter:w},()=>({path:`teacss.css`,namespace:T})),n.onLoad({filter:/.*/,namespace:T},()=>f(async()=>{let{globs:e,ignore:t}=E((await i.getConfig()).content?.filesystem),n=await m(e,{cwd:d(),ignore:t,expandDirectories:!0}),r=n.map(C),{css:a}=await S(i.generator,n,r,{minify:!1});return{contents:a,loader:`css`}})),n.onLoad({filter:ne},e=>f(async()=>{let t=await r(e.path,`utf8`);return l.add(e.path),{contents:(await v(i,t,e.path))?.code??t,loader:`css`}}))}}}function ie(e){return`${e.mtimeMs}:${e.ctimeMs}:${e.size}:${e.ino}`}async function D(r,_={}){let v=s(r.root??c.cwd()),x=r.entrypoints.map(e=>o(e)?e:s(v,e)),{configOrPath:S,defaults:C={},debounce:w=50,onBuild:ne,onError:T}=_,D=y(S,C),O=new Set,k=!1,A=!1,ae,j,M=!1,N,P=!1,F=!1,I=0,L=!1,oe=``,R=new Set,z,B,V=0,H=new Set,U=new e;function W(){let e=D.getConfigFileList()[0];return e?a(e):v}async function G(){let{globs:e,ignore:t}=E(D.generator.config.content?.filesystem);return await m(e,{cwd:W(),ignore:t,expandDirectories:!0})}function se(e){let t=e.content?.filesystem;if(!t)return e;let n=W();return{...e,content:{...e.content,filesystem:t.map(e=>e.startsWith(`!`)?`!${s(n,e.slice(1))}`:s(n,e))}}}function K(e,t,n){if(!t)return Promise.resolve();let r={active:!0},i;return i=U.run(r,()=>Promise.resolve().then(()=>t(n)).catch(t=>console.error(`[@teacss/bun] watch ${e} callback failed:`,t)).finally(()=>{r.active=!1,H.delete(i)})),H.add(i),i}async function ce(){for(;H.size>0;)await Promise.all(H)}function q(e){return A?Promise.resolve():(z=e,K(`error`,T,e))}function le(e,t=O){let n=[...D.getConfigFileList(),...x,...t,...e].map(e=>({kind:`exact`,path:e}));if(typeof S!=`object`){let e=typeof S==`string`?s(v,S):v;if(e.endsWith(`.css`))n.push({kind:`exact`,path:e});else for(let t of l)n.push({kind:`exact`,path:s(e,t)})}return n.push(...g(D.generator.config.content?.filesystem??b,W(),!0)),n.push(...ee(h(D))),n}function J(e,t=O){return new Set([...D.getConfigFileList(),...x,...t,...e])}async function Y(e){let t=new Set(e.flatMap(e=>[...e])),n=new Map(await Promise.all([...t].map(async e=>{try{return[e,`${e}:${ie(await i(e))}`]}catch(t){if(t.code===`ENOENT`)return[e,`${e}:missing`];throw t}})));return e.map(e=>[...e].sort().map(e=>n.get(e)).join(`|`))}async function ue(e,t=O){return(await Y([J(e,t)]))[0]}let de=new u((e,t,r)=>n(e,{recursive:r},t),e=>{if(e!==void 0&&R.has(e)&&I++,!P){F=!0;return}$()},e=>{q(e)});function X(e,t=O){de.reconcile(f(le(e,t))),R=J(e,t)}function fe(e,t,n){return AggregateError([e,t],n)}function pe(e,n){return new Set(Object.keys(e.metafile?.inputs??{}).map(e=>o(e)?e:s(v,e)).filter(e=>!n||t(e)))}let Z,Q;async function me(e,t=O){if(A)return;let n=e,r=[];try{r=await G()}catch(e){n=fe(n,e,`TeaCSS build and source discovery failed`)}if(!A){try{X(r,t);let e=h(D),n=await p(e,!0,Z);Q=n,(await p(e)).signature!==n.signature&&(L=!0,P?M=!0:F=!0)}catch(e){n=fe(n,e,`TeaCSS build and watcher reconciliation failed`)}await q(n)}}async function he(){if(A)return;Z=await p(h(D));let e=I,t=new Set(R),[n]=await Y([t]);if(k?await D.reloadConfig():(k=!0,await D.updateRoot(v)),A)return;let i=await G();if(A||(X(i),A))return;let a=h(D),o=await p(a,!0,Z);Q=o;let s=await p(a),c=o.signature!==s.signature,[l]=await Y([t]),u=n!==l||c,d=await ue(i);if(A)return;let f=L;if(L=!1,!f&&!u&&V>0&&z===void 0&&d===oe)return;let m=se(await D.getConfig());if(A)return;let ee=[...(r.plugins??[]).filter(e=>e.name!==`teacss`),re(m)],g=await Bun.build(te(r,ee));if(A)return;if(!g.success){await me(g,new Set([...O,...pe(g,!1)]));return}let _=pe(g,!0),y=await G();if(A)return;let b=[..._].some(e=>!R.has(e));if(X(y,_),A)return;let[x,S]=await Y([J(y),J(y,_)]);if(A)return;let C=await p(a),w=u||o?.signature!==C?.signature||b||x!==d||I!==e;B=g,z=void 0,V++,O=_,oe=S,await K(`build`,ne,g),w&&(L=!0,P?M=!0:F=!0)}async function ge(){try{await he()}catch(e){await me(e)}}async function _e(){do M=!1,await ge();while(M&&!A)}function $(){A||(j&&clearTimeout(j),j=setTimeout(()=>{j=void 0,M=!0,N||=_e().finally(()=>{N=void 0,M&&!A&&$()})},w))}function ve(){A=!0,ye.retire(),j&&clearTimeout(j),j=void 0,de.retire()}await ge(),P=!0;let ye=d(()=>h(D),async e=>{A||j||M||e.signature===Q?.signature||(N?M=!0:$())},q);return F&&$(),{get error(){return z},get result(){return B},get version(){return V},dispose(){return U.getStore()?.active?(ve(),Promise.resolve()):(ae??=(async()=>{ve(),await ye.close(),await N,await ce()})(),ae)}}}export{re as pluginTeacss,D as watchTeacssBuild};
1
+ import{AsyncLocalStorage as e}from"node:async_hooks";import{existsSync as t,watch as n}from"node:fs";import{mkdir as r,readFile as i,stat as a,writeFile as o}from"node:fs/promises";import{dirname as s,isAbsolute as c,join as l,resolve as u}from"node:path";import d from"node:process";import{entryDiscoveryFiles as f}from"@teacss/config";import{SourceWatchRegistry as p,createSourceDeclarationCheck as m,planSourceWatches as h,probeSourceDeclarations as g,scanSourceFiles as _,sourceDeclarationStateOf as v,sourceDeclarationWatchTargets as y,sourceWatchTargets as b}from"@teacss/config/internal/source-scan";import x from"@teacss/directives";import{applyTransformerPipeline as S,createContext as C,defaultFilesystemGlobs as w}from"@teacss/runtime";import{bundledAssetName as T,rewriteBundledAssets as E}from"@teacss/runtime/internal/bundled-assets";import{DEFAULT_SOURCE_IGNORE as ee,generateSources as D,readSourceFile as O}from"@teacss/runtime/source-generation";function te(e,t,n=Bun.version){let r={...e};return delete r.metafile,Bun.semver.satisfies(n,`>=1.3.6`)&&(r.metafile=!0),{...r,plugins:t}}const k=/^(?:virtual:)?teacss\.css$/,A=/\.css$/,j=`teacss`;function ne(e){return e===void 0?{globs:w,ignore:ee}:{globs:e,ignore:[]}}function re(e,t={}){return{name:`teacss`,async setup(n){let a=C(e,{...t,transformers:[...t.transformers??[],x()]}),c=n.config.root??d.cwd();await a.updateRoot(c);let u=new Set,f=new Set,p=!0,m=new Map;async function h(e){return n.config.outdir?(await E(e,e=>(m.set(e.digest,e),`./teacss-fonts/${T(e)}`))).toString():e}n.config.outdir&&(n.onResolve({filter:/^\.\/teacss-fonts\/teacss-[a-f0-9]{64}\.woff2$/},e=>{let t=e.path.slice(15);if([...m.values()].some(e=>T(e)===t))return{path:e.path,external:!0}}),n.onEnd(async e=>{if(e.success)for(let t of e.outputs){if(!t.path.endsWith(`.css`))continue;let e=await t.text(),n=l(s(t.path),`teacss-fonts`);for(let t of m.values()){let i=T(t);e.includes(`teacss-fonts/${i}`)&&(await r(n,{recursive:!0}),await o(l(n,i),t.bytes))}}}));function g(){let e=a.getConfigFileList()[0];return e?s(e):c}async function v(e){let t=e();u.add(t);try{return await t}finally{u.delete(t)}}n.onStart(async()=>{if(p){p=!1;return}await Promise.allSettled(u),m.clear();for(let e of f)await a.extract(``,e);f.clear(),await a.reloadConfig()}),n.onResolve({filter:k},()=>({path:`teacss.css`,namespace:j})),n.onLoad({filter:/.*/,namespace:j},()=>v(async()=>{let{globs:e,ignore:t}=ne((await a.getConfig()).content?.filesystem),n=await _(e,{cwd:g(),ignore:t,expandDirectories:!0}),r=n.map(O),{css:i}=await D(a.generator,n,r,{minify:!1});return{contents:await h(i),loader:`css`}})),n.onLoad({filter:A},e=>v(async()=>{let t=await i(e.path,`utf8`);return f.add(e.path),{contents:await h((await S(a,t,e.path))?.code??t),loader:`css`}}))}}}function ie(e){return`${e.mtimeMs}:${e.ctimeMs}:${e.size}:${e.ino}`}async function M(r,i={}){let o=u(r.root??d.cwd()),l=r.entrypoints.map(e=>c(e)?e:u(o,e)),{configOrPath:x,defaults:S={},debounce:T=50,onBuild:E,onError:ee}=i,D=C(x,S),O=new Set,k=!1,A=!1,j,M,N=!1,P,F=!1,I=!1,L=0,R=!1,z=``,B=new Set,V,ae,H=0,U=new Set,oe=new e;function W(){let e=D.getConfigFileList()[0];return e?s(e):o}async function G(){let{globs:e,ignore:t}=ne(D.generator.config.content?.filesystem);return await _(e,{cwd:W(),ignore:t,expandDirectories:!0})}function se(e){let t=e.content?.filesystem;if(!t)return e;let n=W();return{...e,content:{...e.content,filesystem:t.map(e=>e.startsWith(`!`)?`!${u(n,e.slice(1))}`:u(n,e))}}}function K(e,t,n){if(!t)return Promise.resolve();let r={active:!0},i;return i=oe.run(r,()=>Promise.resolve().then(()=>t(n)).catch(t=>console.error(`[@teacss/bun] watch ${e} callback failed:`,t)).finally(()=>{r.active=!1,U.delete(i)})),U.add(i),i}async function ce(){for(;U.size>0;)await Promise.all(U)}function q(e){return A?Promise.resolve():(V=e,K(`error`,ee,e))}function le(e,t=O){let n=[...D.getConfigFileList(),...l,...t,...e].map(e=>({kind:`exact`,path:e}));if(typeof x!=`object`){let e=typeof x==`string`?u(o,x):o;if(e.endsWith(`.css`))n.push({kind:`exact`,path:e});else for(let t of f)n.push({kind:`exact`,path:u(e,t)})}return n.push(...b(D.generator.config.content?.filesystem??w,W(),!0)),n.push(...y(v(D))),n}function J(e,t=O){return new Set([...D.getConfigFileList(),...l,...t,...e])}async function Y(e){let t=new Set(e.flatMap(e=>[...e])),n=new Map(await Promise.all([...t].map(async e=>{try{return[e,`${e}:${ie(await a(e))}`]}catch(t){if(t.code===`ENOENT`)return[e,`${e}:missing`];throw t}})));return e.map(e=>[...e].sort().map(e=>n.get(e)).join(`|`))}async function ue(e,t=O){return(await Y([J(e,t)]))[0]}let de=new p((e,t,r)=>n(e,{recursive:r},t),e=>{if(e!==void 0&&B.has(e)&&L++,!F){I=!0;return}$()},e=>{q(e)});function X(e,t=O){de.reconcile(h(le(e,t))),B=J(e,t)}function fe(e,t,n){return AggregateError([e,t],n)}function pe(e,n){return new Set(Object.keys(e.metafile?.inputs??{}).map(e=>c(e)?e:u(o,e)).filter(e=>!n||t(e)))}let Z,Q;async function me(e,t=O){if(A)return;let n=e,r=[];try{r=await G()}catch(e){n=fe(n,e,`TeaCSS build and source discovery failed`)}if(!A){try{X(r,t);let e=v(D),n=await g(e,!0,Z);Q=n,(await g(e)).signature!==n.signature&&(R=!0,F?N=!0:I=!0)}catch(e){n=fe(n,e,`TeaCSS build and watcher reconciliation failed`)}await q(n)}}async function he(){if(A)return;Z=await g(v(D));let e=L,t=new Set(B),[n]=await Y([t]);if(k?await D.reloadConfig():(k=!0,await D.updateRoot(o)),A)return;let i=await G();if(A||(X(i),A))return;let a=v(D),s=await g(a,!0,Z);Q=s;let c=await g(a),l=s.signature!==c.signature,[u]=await Y([t]),d=n!==u||l,f=await ue(i);if(A)return;let p=R;if(R=!1,!p&&!d&&H>0&&V===void 0&&f===z)return;let m=se(await D.getConfig());if(A)return;let h=[...(r.plugins??[]).filter(e=>e.name!==`teacss`),re(m)],_=await Bun.build(te(r,h));if(A)return;if(!_.success){await me(_,new Set([...O,...pe(_,!1)]));return}let y=pe(_,!0),b=await G();if(A)return;let x=[...y].some(e=>!B.has(e));if(X(b,y),A)return;let[S,C]=await Y([J(b),J(b,y)]);if(A)return;let w=await g(a),T=d||s?.signature!==w?.signature||x||S!==f||L!==e;ae=_,V=void 0,H++,O=y,z=C,await K(`build`,E,_),T&&(R=!0,F?N=!0:I=!0)}async function ge(){try{await he()}catch(e){await me(e)}}async function _e(){do N=!1,await ge();while(N&&!A)}function $(){A||(M&&clearTimeout(M),M=setTimeout(()=>{M=void 0,N=!0,P||=_e().finally(()=>{P=void 0,N&&!A&&$()})},T))}function ve(){A=!0,ye.retire(),M&&clearTimeout(M),M=void 0,de.retire()}await ge(),F=!0;let ye=m(()=>v(D),async e=>{A||M||N||e.signature===Q?.signature||(P?N=!0:$())},q);return I&&$(),{get error(){return V},get result(){return ae},get version(){return H},dispose(){return oe.getStore()?.active?(ve(),Promise.resolve()):(j??=(async()=>{ve(),await ye.close(),await P,await ce()})(),j)}}}export{re as pluginTeacss,M as watchTeacssBuild};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teacss/bun",
3
- "version": "0.8.4",
3
+ "version": "0.8.5",
4
4
  "description": "Bun plugin for TeaCSS — generate utilities and inline @apply via Bun.build.",
5
5
  "homepage": "https://css.teasim.com",
6
6
  "funding": "https://github.com/sponsors/billgo",
@@ -22,14 +22,14 @@
22
22
  "dev": "tsdown --watch"
23
23
  },
24
24
  "dependencies": {
25
- "@teacss/config": "0.8.4",
26
- "@teacss/core": "0.8.4",
27
- "@teacss/directives": "0.8.4",
28
- "@teacss/runtime": "0.8.4",
25
+ "@teacss/config": "0.8.5",
26
+ "@teacss/core": "0.8.5",
27
+ "@teacss/directives": "0.8.5",
28
+ "@teacss/runtime": "0.8.5",
29
29
  "tinyglobby": "^0.2.17"
30
30
  },
31
31
  "devDependencies": {
32
- "@teacss/preset-standard": "0.8.4",
32
+ "@teacss/preset-standard": "0.8.5",
33
33
  "bun-types": "^1.4.1",
34
34
  "consola": "^3.4.2"
35
35
  },