tailwint 1.1.8 → 1.1.9

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/edits.js CHANGED
@@ -1,2 +1,2 @@
1
- import{writeFileSync as v}from"fs";import{send as D,notify as $,fileUri as B,waitForDiagnostic as F}from"./lsp.js";function k(t,n){if(n.length===0)return t;const r=[0];for(let e=0;e<t.length;e++)t[e]===`
2
- `&&r.push(e+1);function c(e,o){return e>=r.length?t.length:Math.min(r[e]+o,t.length)}const a=n.map(e=>({start:c(e.range.start.line,e.range.start.character),end:c(e.range.end.line,e.range.end.character),newText:e.newText}));a.sort((e,o)=>e.start-o.start);const u=[];let i=0;for(const e of a)e.start>i&&u.push(t.slice(i,e.start)),u.push(e.newText),i=e.end;return i<t.length&&u.push(t.slice(i)),u.join("")}function C(t){return`${t.start.line}:${t.start.character}-${t.end.line}:${t.end.character}`}function b(t,n){return t.line<n.line||t.line===n.line&&t.character<=n.character}function M(t,n){return b(t.range.start,n.range.start)&&b(n.range.end,t.range.end)}function A(t){const n=[];for(const r of t)t.some(a=>a!==r&&M(a,r))||n.push(r);return n}async function U(t){return F(t)}async function R(t,n,r,c,a){const u=process.env.DEBUG==="1",i=B(t);let e=r.get(t),o=c.get(t);const y=n.length;let g=n;for(let d=0;g.length>0;d++){a?.(d+1),u&&console.error(` pass ${d+1}: ${g.length} remaining`);const E=await Promise.all(g.map(s=>D("textDocument/codeAction",{textDocument:{uri:i},range:s.range,context:{diagnostics:[s],only:["quickfix"]}}).catch(()=>null))),m=new Map;for(let s=0;s<g.length;s++){const f=E[s];if(!f||f.length===0)continue;const h=f[0],x=h.edit?.changes?.[i]||h.edit?.documentChanges?.[0]?.edits||[];if(x.length!==0)for(const p of x){const w=C(p.range);m.set(w,p)}}let l=[...m.values()];if(l.length===0)break;l=A(l);const T=e;if(e=k(e,l),e===T)break;o++,$("textDocument/didChange",{textDocument:{uri:i,version:o},contentChanges:[{text:e}]}),g=(await U(i)).filter(s=>s.severity===1||s.severity===2)}return e!==r.get(t)&&(v(t,e),r.set(t,e),c.set(t,o)),y}export{k as applyEdits,R as fixFile};
1
+ import{writeFileSync as v}from"fs";import{send as D,notify as $,fileUri as B,waitForDiagnostic as k}from"./lsp.js";function C(t,n){if(n.length===0)return t;const r=[0];for(let e=0;e<t.length;e++)t[e]===`
2
+ `&&r.push(e+1);function c(e,o){return e>=r.length?t.length:Math.min(r[e]+o,t.length)}const a=n.map(e=>({start:c(e.range.start.line,e.range.start.character),end:c(e.range.end.line,e.range.end.character),newText:e.newText}));a.sort((e,o)=>e.start-o.start);const u=[];let i=0;for(const e of a)e.start>i&&u.push(t.slice(i,e.start)),u.push(e.newText),i=e.end;return i<t.length&&u.push(t.slice(i)),u.join("")}function M(t){return`${t.start.line}:${t.start.character}-${t.end.line}:${t.end.character}`}function b(t,n){return t.line<n.line||t.line===n.line&&t.character<=n.character}function A(t,n){return b(t.range.start,n.range.start)&&b(n.range.end,t.range.end)}function F(t){const n=[];for(const r of t)t.some(a=>a!==r&&A(a,r))||n.push(r);return n}async function O(t,n,r,c,a){const u=process.env.DEBUG==="1",i=B(t);let e=r.get(t),o=c.get(t);const y=n.length;let g=n;for(let d=0;g.length>0;d++){a?.(d+1),u&&console.error(` pass ${d+1}: ${g.length} remaining`);const E=await Promise.all(g.map(s=>D("textDocument/codeAction",{textDocument:{uri:i},range:s.range,context:{diagnostics:[s],only:["quickfix"]}}).catch(()=>null))),m=new Map;for(let s=0;s<g.length;s++){const f=E[s];if(!f||f.length===0)continue;const h=f[0],x=h.edit?.changes?.[i]||h.edit?.documentChanges?.[0]?.edits||[];if(x.length!==0)for(const p of x){const w=M(p.range);m.set(w,p)}}let l=[...m.values()];if(l.length===0)break;l=F(l);const T=e;if(e=C(e,l),e===T)break;o++,$("textDocument/didChange",{textDocument:{uri:i,version:o},contentChanges:[{text:e}]}),g=(await k(i)).filter(s=>s.severity===1||s.severity===2)}return e!==r.get(t)&&(v(t,e),r.set(t,e),c.set(t,o)),y}export{C as applyEdits,O as fixFile};
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{resolve as ne,relative as M}from"path";import{readFileSync as re}from"fs";import{glob as ie}from"glob";import{startServer as le,send as ce,notify as _,shutdown as C,fileUri as F,langId as $e,diagnosticsReceived as I,settledProjects as ae,brokenProjects as de,warnings as fe,waitForAllProjects as ge,resetState as ue}from"./lsp.js";import{fixFile as pe}from"./edits.js";import{prescanCssFiles as me}from"./prescan.js";import{c as e,setTitle as a,windTrail as r,braille as A,windWave as P,dots as V,tick as y,advanceTick as we,startSpinner as j,progressBar as E,banner as he,fileBadge as q,diagLine as xe,rainbowText as be,celebrationAnimation as G}from"./ui.js";import{applyEdits as Ve}from"./edits.js";const ve=["**/*.{tsx,jsx,html,vue,svelte,astro,mdx,css}"];async function Ce(S={}){ue();const T=Date.now(),d=ne(S.cwd||process.cwd()),K=S.fix??!1,Y=S.patterns??ve,L=new Set;for(const t of Y){const o=await ie(t,{cwd:d,absolute:!0,nodir:!0,ignore:["**/node_modules/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/public/**","**/tmp/**","**/.tmp/**","**/.cache/**","**/vendor/**","**/storybook-static/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.svelte-kit/**","**/.astro/**","**/.vercel/**","**/.expo/**"]});for(const s of o)L.add(s)}const x=[...L];if(await he(),x.length===0){const o="the wind blows",s="but there is nothing here",n="~ no files matched ~",i=Math.floor((54-s.length-2)/2),c=54-n.length-8,$=4,v=50-o.length-2,g=i,w=54-i-s.length-2,h=c,u=54-c-n.length-2;return console.error(` ${r($)} ${e.dim}${o}${e.reset} ${r(v,4)}`),console.error(` ${r(g,2)} ${e.dim}${s}${e.reset} ${r(w,7)}`),console.error(` ${r(h,5)} ${e.dim}${e.italic}${n}${e.reset} ${r(u,9)}`),console.error(""),0}a("tailwint ~ booting...");const H=j(()=>(a(`tailwint ~ booting${".".repeat(Date.now()%4)}`),` ${A()} ${e.dim}booting language server${V()}${e.reset} ${r(24,y)}`));le(d),await ce("initialize",{processId:process.pid,rootUri:F(d),capabilities:{textDocument:{publishDiagnostics:{relatedInformation:!0},codeAction:{codeActionLiteralSupport:{codeActionKind:{valueSet:["quickfix"]}}}},workspace:{workspaceFolders:!0,configuration:!0}},workspaceFolders:[{uri:F(d),name:"workspace"}]}),_("initialized",{}),H(),console.error(` ${e.green}\u2714${e.reset} ${e.dim}language server ready${e.reset} ${r(30)}`);const p=me(x),U=new Map,B=new Map,Pe=x.length,k=p.unrelatedCssFiles.size;let f=0;for(const t of x){if(p.unrelatedCssFiles.has(t))continue;let o;try{o=re(t,"utf-8")}catch{continue}U.set(t,o),B.set(t,1),_("textDocument/didOpen",{textDocument:{uri:F(t),languageId:$e(t),version:1,text:o}}),f++}const O=`sent ${f} file${f===1?"":"s"} to lsp`,J=52-O.length-1;if(console.error(` ${e.green}\u2714${e.reset} ${e.dim}${O}${e.reset} ${r(J)}`),k>0){const t=`${k} file${k===1?"":"s"} skipped`,o=52-t.length-1;console.error(` ${e.dim}\u2500${e.reset} ${e.dim}${t}${e.reset} ${r(o)}`);for(const s of p.unrelatedCssFiles){const n=M(d,s);console.error(` ${e.dim}${q(n)}${e.reset}`)}}a("tailwint ~ scanning...");const Q=j(()=>{const t=I.size,o=ae+de,s=t>0?"scanning":"initializing";a(`tailwint ~ ${s} ${o}/${p.maxProjects}`);const n=f>0?Math.round(t/f*100):0,b=E(n,18,!0),i=String(f),c=String(t).padStart(i.length),$=25+s.length+3+1-2,v=Math.max(0,54-$),g=`${c}/${i}`,w=" ".repeat(Math.max(0,25-g.length-1)),h="files received",u=w.length+g.length+1+h.length+1-2,D=Math.max(0,54-u);return` ${A()} ${b} ${e.dim}${s}${V()}${e.reset} ${r(v,y)}
2
- ${w}${e.bold}${g}${e.reset} ${e.dim}${h}${e.reset} ${r(D,y+3)}`},80);await ge(p.predictedRoots,p.maxProjects),Q();for(const t of fe)console.error(` ${e.yellow}\u26A0${e.reset} ${e.dim}${t}${e.reset}`);const z=I.size,R=`${z}/${f} files received`,Z=52-R.length-1;console.error(` ${e.green}\u2714${e.reset} ${e.dim}${R}${e.reset} ${r(Z)}`),console.error("");let m=0;const l=new Map;for(const t of x){const s=(I.get(F(t))||[]).filter(n=>n.severity===1||n.severity===2);s.length>0&&(l.set(t,s),m+=s.length)}const N=[...l.values()].flat().filter(t=>t.code==="cssConflict").length,ee=m-N;if(m===0){const t=((Date.now()-T)/1e3).toFixed(1);return a("tailwint \u2714 all clear"),await G(),console.error(` ${e.green}\u2714${e.reset} ${e.bold}${z}${e.reset} files scanned ${e.dim}// ${be("all clear")} ${e.dim}${t}s${e.reset}`),console.error(""),await C(),0}console.error(` ${e.bold}${e.white}${z}${e.reset} files scanned ${e.dim}//${e.reset} ${e.orange}${e.bold}${N}${e.reset}${e.orange} conflicts${e.reset} ${e.dim}\u2502${e.reset} ${e.yellow}${e.bold}${ee}${e.reset}${e.yellow} canonical${e.reset}`),console.error("");let W=0;for(const[t,o]of l){W>0&&console.log(` ${e.dim}${P()}${e.reset}`),W++;const s=M(d,t);console.log(` ${e.dim}\u250C${e.reset} ${q(s)} ${e.dim}(${o.length})${e.reset}`);for(const n of o)console.log(xe(n));console.log(` ${e.dim}\u2514${r(3)}${e.reset}`),we()}if(K){console.error(""),console.error(` ${e.bgCyan}${e.bold} \u2699 FIX ${e.reset} ${e.dim}conflicts first, then canonical${e.reset}`),console.error("");let t=0,o=0;for(const[n,b]of l){o++;const i=M(d,n);let c=0;const $=i.includes("/")?i.slice(i.lastIndexOf("/")+1):i;a(`tailwint ~ fixing ${$} (${o}/${l.size})`);const v=j(()=>{const u=Math.round((o-1+c/10)/l.size*100),D=E(u,18,!0),X=`pass ${c}`,oe=22+$.length+1+X.length+3+1,se=Math.max(0,56-oe);return` ${A()} ${D} ${e.bold}${e.white}${$}${e.reset} ${e.dim}${X}${V()}${e.reset} ${r(se,y)}`}),g=await pe(n,b,U,B,u=>{c=u});v(),t+=g;const w=Math.round(o/l.size*100),h=E(w,18);console.error(` ${e.green}\u2714${e.reset} ${h} ${e.bold}${e.white}${$}${e.reset} ${e.green}${b.length} fixed${e.reset}`)}console.error("");const s=((Date.now()-T)/1e3).toFixed(1);return a(`tailwint \u2714 fixed ${t} issues`),await G(),console.error(` ${P()} ${e.bgGreen}${e.bold} \u2714 FIXED ${e.reset} ${e.green}${e.bold}${t}${e.reset} of ${e.bold}${m}${e.reset} issues across ${e.bold}${l.size}${e.reset} files ${e.dim}${s}s${e.reset} ${P()}`),console.error(""),await C(),0}const te=((Date.now()-T)/1e3).toFixed(1);return a(`tailwint \u2718 ${m} issues`),console.log(""),console.log(` ${P()} ${e.bgRed}${e.bold} \u2718 FAIL ${e.reset} ${e.red}${e.bold}${m}${e.reset} issues in ${e.bold}${l.size}${e.reset} files ${e.dim}${te}s${e.reset} ${P()}`),console.log(` ${e.dim}run with ${e.white}--fix${e.dim} to auto-fix${e.reset}`),console.log(""),await C(),1}export{Ve as applyEdits,Ce as run};
1
+ import{resolve as ne,relative as M}from"path";import{readFileSync as re}from"fs";import{glob as ie}from"glob";import{startServer as le,send as ce,notify as _,shutdown as C,fileUri as F,langId as $e,diagnosticsReceived as I,settledProjects as ae,brokenProjects as de,warnings as fe,waitForAllProjects as ge,resetState as ue}from"./lsp.js";import{fixFile as pe}from"./edits.js";import{prescanCssFiles as me}from"./prescan.js";import{c as e,setTitle as a,windTrail as r,braille as A,windWave as v,dots as V,tick as y,advanceTick as we,startSpinner as j,progressBar as E,banner as he,fileBadge as q,diagLine as xe,rainbowText as be,celebrationAnimation as G}from"./ui.js";import{applyEdits as Ae}from"./edits.js";const ve=["**/*.{tsx,jsx,html,vue,svelte,astro,mdx,css}"];async function Me(S={}){ue();const T=Date.now(),d=ne(S.cwd||process.cwd()),K=S.fix??!1,Y=S.patterns??ve,L=new Set;for(const t of Y){const o=await ie(t,{cwd:d,absolute:!0,nodir:!0,ignore:["**/node_modules/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/public/**","**/tmp/**","**/.tmp/**","**/.cache/**","**/vendor/**","**/storybook-static/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.svelte-kit/**","**/.astro/**","**/.vercel/**","**/.expo/**"]});for(const s of o)L.add(s)}const P=[...L];if(await he(),P.length===0){const o="the wind blows",s="but there is nothing here",n="~ no files matched ~",i=Math.floor((54-s.length-2)/2),c=54-n.length-8,$=4,b=50-o.length-2,g=i,w=54-i-s.length-2,h=c,u=54-c-n.length-2;return console.error(` ${r($)} ${e.dim}${o}${e.reset} ${r(b,4)}`),console.error(` ${r(g,2)} ${e.dim}${s}${e.reset} ${r(w,7)}`),console.error(` ${r(h,5)} ${e.dim}${e.italic}${n}${e.reset} ${r(u,9)}`),console.error(""),0}a("tailwint ~ booting...");const H=j(()=>(a(`tailwint ~ booting${".".repeat(Date.now()%4)}`),` ${A()} ${e.dim}booting language server${V()}${e.reset} ${r(24,y)}`));le(d),await ce("initialize",{processId:process.pid,rootUri:F(d),capabilities:{textDocument:{publishDiagnostics:{relatedInformation:!0},codeAction:{codeActionLiteralSupport:{codeActionKind:{valueSet:["quickfix"]}}}},workspace:{workspaceFolders:!0,configuration:!0}},workspaceFolders:[{uri:F(d),name:"workspace"}]}),_("initialized",{}),H(),console.error(` ${e.green}\u2714${e.reset} ${e.dim}language server ready${e.reset} ${r(30)}`);const p=me(P),U=new Map,B=new Map,k=p.unrelatedCssFiles.size;let f=0;for(const t of P){if(p.unrelatedCssFiles.has(t))continue;let o;try{o=re(t,"utf-8")}catch{continue}U.set(t,o),B.set(t,1),_("textDocument/didOpen",{textDocument:{uri:F(t),languageId:$e(t),version:1,text:o}}),f++}const O=`sent ${f} file${f===1?"":"s"} to lsp`,J=52-O.length-1;if(console.error(` ${e.green}\u2714${e.reset} ${e.dim}${O}${e.reset} ${r(J)}`),k>0){const t=`${k} file${k===1?"":"s"} skipped`,o=52-t.length-1;console.error(` ${e.dim}\u2500${e.reset} ${e.dim}${t}${e.reset} ${r(o)}`);for(const s of p.unrelatedCssFiles){const n=M(d,s);console.error(` ${e.dim}${q(n)}${e.reset}`)}}a("tailwint ~ scanning...");const Q=j(()=>{const t=I.size,o=ae+de,s=t>0?"scanning":"initializing";a(`tailwint ~ ${s} ${o}/${p.maxProjects}`);const n=f>0?Math.round(t/f*100):0,x=E(n,18,!0),i=String(f),c=String(t).padStart(i.length),$=25+s.length+3+1-2,b=Math.max(0,54-$),g=`${c}/${i}`,w=" ".repeat(Math.max(0,25-g.length-1)),h="files received",u=w.length+g.length+1+h.length+1-2,D=Math.max(0,54-u);return` ${A()} ${x} ${e.dim}${s}${V()}${e.reset} ${r(b,y)}
2
+ ${w}${e.bold}${g}${e.reset} ${e.dim}${h}${e.reset} ${r(D,y+3)}`},80);await ge(p.predictedRoots,p.maxProjects),Q();for(const t of fe)console.error(` ${e.yellow}\u26A0${e.reset} ${e.dim}${t}${e.reset}`);const z=I.size,R=`${z}/${f} files received`,Z=52-R.length-1;console.error(` ${e.green}\u2714${e.reset} ${e.dim}${R}${e.reset} ${r(Z)}`),console.error("");let m=0;const l=new Map;for(const t of P){const s=(I.get(F(t))||[]).filter(n=>n.severity===1||n.severity===2);s.length>0&&(l.set(t,s),m+=s.length)}const N=[...l.values()].flat().filter(t=>t.code==="cssConflict").length,ee=m-N;if(m===0){const t=((Date.now()-T)/1e3).toFixed(1);return a("tailwint \u2714 all clear"),await G(),console.error(` ${e.green}\u2714${e.reset} ${e.bold}${z}${e.reset} files scanned ${e.dim}// ${be("all clear")} ${e.dim}${t}s${e.reset}`),console.error(""),await C(),0}console.error(` ${e.bold}${e.white}${z}${e.reset} files scanned ${e.dim}//${e.reset} ${e.orange}${e.bold}${N}${e.reset}${e.orange} conflicts${e.reset} ${e.dim}\u2502${e.reset} ${e.yellow}${e.bold}${ee}${e.reset}${e.yellow} canonical${e.reset}`),console.error("");let W=0;for(const[t,o]of l){W>0&&console.log(` ${e.dim}${v()}${e.reset}`),W++;const s=M(d,t);console.log(` ${e.dim}\u250C${e.reset} ${q(s)} ${e.dim}(${o.length})${e.reset}`);for(const n of o)console.log(xe(n));console.log(` ${e.dim}\u2514${r(3)}${e.reset}`),we()}if(K){console.error(""),console.error(` ${e.bgCyan}${e.bold} \u2699 FIX ${e.reset} ${e.dim}conflicts first, then canonical${e.reset}`),console.error("");let t=0,o=0;for(const[n,x]of l){o++;const i=M(d,n);let c=0;const $=i.includes("/")?i.slice(i.lastIndexOf("/")+1):i;a(`tailwint ~ fixing ${$} (${o}/${l.size})`);const b=j(()=>{const u=Math.round((o-1+c/10)/l.size*100),D=E(u,18,!0),X=`pass ${c}`,oe=22+$.length+1+X.length+3+1,se=Math.max(0,56-oe);return` ${A()} ${D} ${e.bold}${e.white}${$}${e.reset} ${e.dim}${X}${V()}${e.reset} ${r(se,y)}`}),g=await pe(n,x,U,B,u=>{c=u});b(),t+=g;const w=Math.round(o/l.size*100),h=E(w,18);console.error(` ${e.green}\u2714${e.reset} ${h} ${e.bold}${e.white}${$}${e.reset} ${e.green}${x.length} fixed${e.reset}`)}console.error("");const s=((Date.now()-T)/1e3).toFixed(1);return a(`tailwint \u2714 fixed ${t} issues`),await G(),console.error(` ${v()} ${e.bgGreen}${e.bold} \u2714 FIXED ${e.reset} ${e.green}${e.bold}${t}${e.reset} of ${e.bold}${m}${e.reset} issues across ${e.bold}${l.size}${e.reset} files ${e.dim}${s}s${e.reset} ${v()}`),console.error(""),await C(),0}const te=((Date.now()-T)/1e3).toFixed(1);return a(`tailwint \u2718 ${m} issues`),console.log(""),console.log(` ${v()} ${e.bgRed}${e.bold} \u2718 FAIL ${e.reset} ${e.red}${e.bold}${m}${e.reset} issues in ${e.bold}${l.size}${e.reset} files ${e.dim}${te}s${e.reset} ${v()}`),console.log(` ${e.dim}run with ${e.white}--fix${e.dim} to auto-fix${e.reset}`),console.log(""),await C(),1}export{Ae as applyEdits,Me as run};
package/dist/lsp.js CHANGED
@@ -1,7 +1,7 @@
1
- import{spawn as q}from"child_process";import{resolve as I}from"path";import{existsSync as $,readFileSync as V}from"fs";const N=process.env.DEBUG==="1";let O="",m=null;function H(){if(m!==null)return m;const e=I(O,".vscode/settings.json");if(!$(e))return m={},m;try{const r=V(e,"utf-8").replace(/\/\/[^\n]*/g,"").replace(/,\s*([\]}])/g,"$1");m=JSON.parse(r)}catch{m={}}return m}function K(e){const r=H(),t=e+".",o={};for(const[l,y]of Object.entries(r)){if(!l.startsWith(t))continue;const c=l.slice(t.length).split(".");let p=o;for(let n=0;n<c.length-1;n++)(!(c[n]in p)||typeof p[c[n]]!="object")&&(p[c[n]]={}),p=p[c[n]];p[c[c.length-1]]=y}return o}let a,d=!1,L=0;const f=[];let T=0;const h=new Map,P=new Map;let A=!1,F=0,D=0,M=0,R=0,B=!1,x=!1,j=0;const J=[];let v=null,i=null,s=null,w=null;const g=new Map;let k={predictedRoots:0,maxProjects:0,initTimeoutMs:5e3,debounceMs:500};function ce(){L=0,d=!1,f.length=0,T=0,h.clear(),P.clear(),A=!1,F=0,D=0,M=0,R=0,B=!1,x=!1,j=0,J.length=0,v=null,i&&(clearTimeout(i),i=null),s&&(clearTimeout(s),s=null),w&&(clearTimeout(w),w=null),g.clear(),m=null}function Q(){i&&(clearTimeout(i),i=null),s&&(clearTimeout(s),s=null),w&&(clearTimeout(w),w=null)}function S(){if(!v)return;const e=v;v=null,Q(),e()}function _(){return D+M>=k.maxProjects}function W(){s&&clearTimeout(s),s=setTimeout(()=>{j>0&&!x?z():S()},k.initTimeoutMs)}function X(){F++;const e=Date.now();A=!0,R>0&&e-R<500?B||(B=!0,M++,J.push("A CSS file failed to initialize (likely an @apply referencing an unknown utility). That project's files will not receive diagnostics. See https://github.com/tailwindlabs/tailwindcss-intellisense/issues/1121"),i&&(clearTimeout(i),i=null)):(B=!1,x=!0,j=0,s&&(clearTimeout(s),s=null),i&&(clearTimeout(i),i=null),W()),R=e,_()&&S()}function z(){D++,_()?S():W()}function Y(){i&&clearTimeout(i),s&&(clearTimeout(s),s=null),i=setTimeout(z,k.debounceMs)}function Z(){v&&(j++,x?x=!1:j>=2&&Y())}function ae(e,r,t=5e3,o=500){return d||r===0?Promise.resolve():(k={predictedRoots:e,maxProjects:r,initTimeoutMs:t,debounceMs:o},new Promise(l=>{v=l,W();const y=t+r*3e3+5e3;w=setTimeout(S,Math.min(y,3e4))}))}function ue(e,r=1e4){return d?Promise.resolve([]):(P.delete(e),new Promise(t=>{const o=setTimeout(()=>{g.has(e)&&(g.delete(e),t([]))},r);g.set(e,l=>{clearTimeout(o),t(l)})}))}function C(e){const r=JSON.stringify(e);return`Content-Length: ${Buffer.byteLength(r)}\r
1
+ import{spawn as q}from"child_process";import{resolve as I}from"path";import{existsSync as $,readFileSync as V}from"fs";const N=process.env.DEBUG==="1";let O="",m=null;function H(){if(m!==null)return m;const e=I(O,".vscode/settings.json");if(!$(e))return m={},m;try{const t=V(e,"utf-8").replace(/\/\/[^\n]*/g,"").replace(/,\s*([\]}])/g,"$1");m=JSON.parse(t)}catch{m={}}return m}function K(e){const t=H(),n=e+".",o={};for(const[l,y]of Object.entries(t)){if(!l.startsWith(n))continue;const c=l.slice(n.length).split(".");let p=o;for(let r=0;r<c.length-1;r++)(!(c[r]in p)||typeof p[c[r]]!="object")&&(p[c[r]]={}),p=p[c[r]];p[c[c.length-1]]=y}return o}let a,d=!1,L=0;const f=[];let T=0;const h=new Map,P=new Map;let A=!1,F=0,D=0,M=0,R=0,B=!1,x=!1,j=0;const J=[];let w=null,i=null,s=null,v=null;const g=new Map;let k={predictedRoots:0,maxProjects:0,initTimeoutMs:5e3,debounceMs:500};function ce(){L=0,d=!1,f.length=0,T=0,h.clear(),P.clear(),A=!1,F=0,D=0,M=0,R=0,B=!1,x=!1,j=0,J.length=0,w=null,i&&(clearTimeout(i),i=null),s&&(clearTimeout(s),s=null),v&&(clearTimeout(v),v=null),g.clear(),m=null}function Q(){i&&(clearTimeout(i),i=null),s&&(clearTimeout(s),s=null),v&&(clearTimeout(v),v=null)}function S(){if(!w)return;const e=w;w=null,Q(),e()}function _(){return D+M>=k.maxProjects}function W(){s&&clearTimeout(s),s=setTimeout(()=>{j>0&&!x?z():S()},k.initTimeoutMs)}function X(){F++;const e=Date.now();A=!0,R>0&&e-R<500?B||(B=!0,M++,J.push("A CSS file failed to initialize (likely an @apply referencing an unknown utility). That project's files will not receive diagnostics. See https://github.com/tailwindlabs/tailwindcss-intellisense/issues/1121"),i&&(clearTimeout(i),i=null)):(B=!1,x=!0,j=0,s&&(clearTimeout(s),s=null),i&&(clearTimeout(i),i=null),W()),R=e,_()&&S()}function z(){D++,_()?S():W()}function Y(){i&&clearTimeout(i),s&&(clearTimeout(s),s=null),i=setTimeout(z,k.debounceMs)}function Z(){w&&(j++,x?x=!1:j>=2&&Y())}function ae(e,t,n=5e3,o=500){return d||t===0?Promise.resolve():(k={predictedRoots:e,maxProjects:t,initTimeoutMs:n,debounceMs:o},new Promise(l=>{w=l,W();const y=n+t*3e3+5e3;v=setTimeout(S,Math.min(y,3e4))}))}function ue(e,t=1e4){return d?Promise.resolve([]):(P.delete(e),new Promise(n=>{const o=setTimeout(()=>{g.has(e)&&(g.delete(e),n([]))},t);g.set(e,l=>{clearTimeout(o),n(l)})}))}function C(e){const t=JSON.stringify(e);return`Content-Length: ${Buffer.byteLength(t)}\r
2
2
  \r
3
- ${r}`}function ee(){if(f.length===0)return Buffer.alloc(0);if(f.length===1)return f[0];const e=Buffer.concat(f,T);return f.length=0,f.push(e),e}function E(e){f.length=0,e.length>0?(f.push(e),T=e.length):T=0}function te(){for(;;){const e=ee();if(e.length===0)break;const r=e.toString("ascii",0,Math.min(e.length,256)),t=r.indexOf(`\r
3
+ ${t}`}function ee(){if(f.length===0)return Buffer.alloc(0);if(f.length===1)return f[0];const e=Buffer.concat(f,T);return f.length=0,f.push(e),e}function E(e){f.length=0,e.length>0?(f.push(e),T=e.length):T=0}function te(){for(;;){const e=ee();if(e.length===0)break;const t=e.toString("ascii",0,Math.min(e.length,256)),n=t.indexOf(`\r
4
4
  \r
5
- `);if(t===-1){E(e);break}const l=r.slice(0,t).match(/Content-Length:\s*(\d+)/i);if(!l){E(e.subarray(t+4));continue}const y=parseInt(l[1],10),c=t+4;if(e.length<c+y){E(e);break}const p=e.subarray(c,c+y).toString("utf-8");E(e.subarray(c+y));let n;try{n=JSON.parse(p)}catch{continue}if(N&&console.error(`<- ${n.method||`response#${n.id}`}`),n.id!=null&&!n.method&&h.has(n.id)){const u=h.get(n.id);h.delete(n.id),n.error?u.reject(n.error):u.resolve(n.result);continue}if(n.id!=null&&n.method){let u=null;n.method==="workspace/configuration"&&(u=(n.params?.items||[]).map(b=>b.section?K(b.section):{})),a.stdin.write(C({jsonrpc:"2.0",id:n.id,result:u}));continue}if(n.method==="textDocument/publishDiagnostics"&&n.params){const u=n.params.uri,b=n.params.diagnostics||[];if(P.set(u,b),g.has(u)){const G=g.get(u);g.delete(u),G(b)}Z()}n.method==="@/tailwindCSS/projectInitialized"&&X()}}function ne(e){const r=I(e,"node_modules/.bin/tailwindcss-language-server");return $(r)?r:"tailwindcss-language-server"}function U(e){d=!0;for(const[r,t]of h)t.reject(e),h.delete(r);S();for(const[r,t]of g)t([]);g.clear()}function fe(e){O=e;const r=ne(e);a=q(r,["--stdio"],{stdio:["pipe","pipe","pipe"]}),a.on("error",t=>{t.code==="ENOENT"&&(console.error(`
5
+ `);if(n===-1){E(e);break}const l=t.slice(0,n).match(/Content-Length:\s*(\d+)/i);if(!l){E(e.subarray(n+4));continue}const y=parseInt(l[1],10),c=n+4;if(e.length<c+y){E(e);break}const p=e.subarray(c,c+y).toString("utf-8");E(e.subarray(c+y));let r;try{r=JSON.parse(p)}catch{continue}if(N&&console.error(`<- ${r.method||`response#${r.id}`}`),r.id!=null&&!r.method&&h.has(r.id)){const u=h.get(r.id);h.delete(r.id),r.error?u.reject(r.error):u.resolve(r.result);continue}if(r.id!=null&&r.method){let u=null;r.method==="workspace/configuration"&&(u=(r.params?.items||[]).map(b=>b.section?K(b.section):{})),a.stdin.write(C({jsonrpc:"2.0",id:r.id,result:u}));continue}if(r.method==="textDocument/publishDiagnostics"&&r.params){const u=r.params.uri,b=r.params.diagnostics||[];if(P.set(u,b),g.has(u)){const G=g.get(u);g.delete(u),G(b)}Z()}r.method==="@/tailwindCSS/projectInitialized"&&X()}}function ne(e){const t=I(e,"node_modules/.bin/tailwindcss-language-server");return $(t)?t:"tailwindcss-language-server"}function U(e){d=!0;for(const t of h.values())t.reject(e);h.clear(),S();for(const t of g.values())t([]);g.clear()}function fe(e){O=e;const t=ne(e);a=q(t,["--stdio"],{stdio:["pipe","pipe","pipe"]}),a.on("error",n=>{n.code==="ENOENT"&&(console.error(`
6
6
  \x1B[38;5;203m\x1B[1mERROR\x1B[0m @tailwindcss/language-server not found.`),console.error(` Install it: \x1B[1mnpm install -D @tailwindcss/language-server\x1B[0m
7
- `)),U(new Error(t.code==="ENOENT"?"@tailwindcss/language-server not found":`language server error: ${t.message}`))}),a.on("close",(t,o)=>{d||U(new Error(o?`language server killed by ${o}`:`language server exited with code ${t}`))}),a.stdout.on("data",t=>{f.push(t),T+=t.length,te()}),a.stderr.on("data",t=>{N&&process.stderr.write(t)})}function re(e,r){if(d)return Promise.reject(new Error("language server is not running"));const t=++L;return new Promise((o,l)=>{h.set(t,{resolve:o,reject:l});try{a.stdin.write(C({jsonrpc:"2.0",id:t,method:e,params:r}))}catch{h.delete(t),l(new Error("language server is not running"))}})}function ie(e,r){if(!d)try{a.stdin.write(C({jsonrpc:"2.0",method:e,params:r}))}catch{}}async function de(){if(!d){await Promise.race([re("shutdown",{}).catch(()=>{}),new Promise(e=>setTimeout(e,500))]),ie("exit",{}),d=!0;try{a.stdin.end()}catch{}try{a.stdout.destroy()}catch{}try{a.stderr.destroy()}catch{}a.kill()}}function ge(e){return`file://${e}`}function pe(e){return e.endsWith(".css")?"css":e.endsWith(".html")||e.endsWith(".vue")||e.endsWith(".svelte")||e.endsWith(".astro")?"html":e.endsWith(".mdx")?"mdx":e.endsWith(".jsx")?"javascriptreact":"typescriptreact"}export{M as brokenProjects,P as diagnosticsReceived,ge as fileUri,pe as langId,ie as notify,F as projectInitCount,A as projectReady,ce as resetState,re as send,D as settledProjects,de as shutdown,fe as startServer,ae as waitForAllProjects,ue as waitForDiagnostic,J as warnings};
7
+ `)),U(new Error(n.code==="ENOENT"?"@tailwindcss/language-server not found":`language server error: ${n.message}`))}),a.on("close",(n,o)=>{d||U(new Error(o?`language server killed by ${o}`:`language server exited with code ${n}`))}),a.stdout.on("data",n=>{f.push(n),T+=n.length,te()}),a.stderr.on("data",n=>{N&&process.stderr.write(n)})}function re(e,t){if(d)return Promise.reject(new Error("language server is not running"));const n=++L;return new Promise((o,l)=>{h.set(n,{resolve:o,reject:l});try{a.stdin.write(C({jsonrpc:"2.0",id:n,method:e,params:t}))}catch{h.delete(n),l(new Error("language server is not running"))}})}function ie(e,t){if(!d)try{a.stdin.write(C({jsonrpc:"2.0",method:e,params:t}))}catch{}}async function de(){if(!d){await Promise.race([re("shutdown",{}).catch(()=>{}),new Promise(e=>setTimeout(e,500))]),ie("exit",{}),d=!0;try{a.stdin.end()}catch{}try{a.stdout.destroy()}catch{}try{a.stderr.destroy()}catch{}a.kill()}}function ge(e){return`file://${e}`}function pe(e){return e.endsWith(".css")?"css":e.endsWith(".html")||e.endsWith(".vue")||e.endsWith(".svelte")||e.endsWith(".astro")?"html":e.endsWith(".mdx")?"mdx":e.endsWith(".jsx")?"javascriptreact":"typescriptreact"}export{M as brokenProjects,P as diagnosticsReceived,ge as fileUri,pe as langId,ie as notify,F as projectInitCount,A as projectReady,ce as resetState,re as send,D as settledProjects,de as shutdown,fe as startServer,ae as waitForAllProjects,ue as waitForDiagnostic,J as warnings};
package/dist/prescan.js CHANGED
@@ -1 +1 @@
1
- import{readFileSync as a}from"fs";const c=/@import\s*['"]tailwindcss(?:\/[^'"]+)?['"]/,p=/@(theme|plugin|utility|custom-variant|variant|reference)\s*[^;{]+[;{]/,f=/--(alpha|spacing|theme)\(/,u=/@tailwind\s*(base|preflight|components|variants|screens)+;/,d=/@tailwind\s*utilities\s*[^;]*;/,m=/@tailwind\s*[^;]+;/,I=/@(config|apply)\s*[^;{]+[;{]/,x=/@import\s*['"](?!([a-z]+:|\/\/))/;function _(e){return c.test(e)?{root:!0,versions:["4"],explicitImport:!0}:p.test(e)?d.test(e)?{root:!0,versions:["4"],explicitImport:!1}:{root:!1,versions:["4"],explicitImport:!1}:f.test(e)?{root:!1,versions:["4"],explicitImport:!1}:u.test(e)?{root:!1,versions:["3"],explicitImport:!1}:m.test(e)?{root:!0,versions:["4","3"],explicitImport:!1}:I.test(e)?{root:!1,versions:["4","3"],explicitImport:!1}:x.test(e)?{root:!0,versions:["4","3"],explicitImport:!1}:{root:!1,versions:[],explicitImport:!1}}function T(e){let t=0,s=0,r=0;const o=new Set;for(const i of e){if(!i.endsWith(".css"))continue;let n;try{n=a(i,"utf-8")}catch{continue}const l=_(n);l.versions.length===0?(r++,o.add(i)):l.root?t++:s++}return{totalCssFiles:t+s+r,predictedRoots:t,predictedNonRoots:s,unrelatedCssFiles:o,predictedUnrelated:r,maxProjects:t+s}}export{_ as analyzeStylesheet,T as prescanCssFiles};
1
+ import{readFileSync as a}from"fs";const c=/@import\s*['"]tailwindcss(?:\/[^'"]+)?['"]/,p=/@(theme|plugin|utility|custom-variant|variant|reference)\s*[^;{]+[;{]/,f=/--(alpha|spacing|theme)\(/,u=/@tailwind\s*(base|preflight|components|variants|screens)+;/,d=/@tailwind\s*utilities\s*[^;]*;/,m=/@tailwind\s*[^;]+;/,I=/@(config|apply)\s*[^;{]+[;{]/,x=/@import\s*['"](?!([a-z]+:|\/\/))/;function _(e){return c.test(e)?{root:!0,versions:["4"],explicitImport:!0}:p.test(e)?d.test(e)?{root:!0,versions:["4"],explicitImport:!1}:{root:!1,versions:["4"],explicitImport:!1}:f.test(e)?{root:!1,versions:["4"],explicitImport:!1}:u.test(e)?{root:!1,versions:["3"],explicitImport:!1}:m.test(e)?{root:!0,versions:["4","3"],explicitImport:!1}:I.test(e)?{root:!1,versions:["4","3"],explicitImport:!1}:x.test(e)?{root:!0,versions:["4","3"],explicitImport:!1}:{root:!1,versions:[],explicitImport:!1}}function v(e){let t=0,s=0,r=0;const o=new Set;for(const i of e){if(!i.endsWith(".css"))continue;let n;try{n=a(i,"utf-8")}catch{continue}const l=_(n);l.versions.length===0?(r++,o.add(i)):l.root?t++:s++}return{totalCssFiles:t+s+r,predictedRoots:t,predictedNonRoots:s,unrelatedCssFiles:o,predictedUnrelated:r,maxProjects:t+s}}export{_ as analyzeStylesheet,v as prescanCssFiles};
package/dist/ui.js CHANGED
@@ -1,3 +1,3 @@
1
- function g(r){return new Promise(t=>setTimeout(t,r))}const n=!!(process.stderr.isTTY&&process.stdout.isTTY),e={reset:n?"\x1B[0m":"",bold:n?"\x1B[1m":"",dim:n?"\x1B[2m":"",italic:n?"\x1B[3m":"",under:n?"\x1B[4m":"",red:n?"\x1B[38;5;203m":"",orange:n?"\x1B[38;5;208m":"",yellow:n?"\x1B[38;5;221m":"",green:n?"\x1B[38;5;114m":"",cyan:n?"\x1B[38;5;80m":"",blue:n?"\x1B[38;5;75m":"",purple:n?"\x1B[38;5;141m":"",pink:n?"\x1B[38;5;211m":"",gray:n?"\x1B[38;5;243m":"",white:n?"\x1B[38;5;255m":"",bgRed:n?"\x1B[48;5;52m":"",bgGreen:n?"\x1B[48;5;22m":"",bgOrange:n?"\x1B[48;5;94m":"",bgCyan:n?"\x1B[48;5;30m":"",hide:n?"\x1B[?25l":"",show:n?"\x1B[?25h":"",clear:n?"\x1B[2K\r":""};function A(r){n&&process.stderr.write(`\x1B]2;${r}\x07`)}const x=["~","\u2248","\u223C","\u301C"],I=[1,1,1,2],p=[e.cyan,e.blue,e.purple,e.pink,e.cyan,e.blue];function u(r,t=0){const s=[];let o=0,i=0;for(;o<r;){const c=(i+t)%x.length,l=(i+t)%p.length,$=I[c];if(o+$>r)break;s.push(`${p[l]}${x[c]}${e.reset}`),o+=$,i++}for(;o<r;){const c=(i+t)%p.length;s.push(`${p[c]}~${e.reset}`),o++,i++}return s.join("")}const m=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2807"];let a=0;function B(){a++}const f=[e.cyan,e.blue,e.purple,e.pink,e.purple,e.blue];function M(){return`${f[Math.floor(a/2)%f.length]}${m[a%m.length]}${e.reset}`}function O(){return u(6,a%24)}function S(){const r=a%4;return`${e.dim}${".".repeat(r)}${" ".repeat(3-r)}${e.reset}`}function _(r,t=100){if(!n)return()=>{};process.stderr.write(e.hide);let s=1;const o=setInterval(()=>{a++;const i=r(),c=i.split(`
2
- `).length;let l="\x1B[2K\r";for(let $=1;$<s;$++)l="\x1B[A\x1B[2K"+l;process.stderr.write(`${l}${i}`),s=c},t);return()=>{clearInterval(o);for(let i=1;i<s;i++)process.stderr.write("\x1B[A");process.stderr.write(`\x1B[2K\x1B[J\r${e.show}`)}}function v(r,t,s=!1){const o=Math.round(r/100*t),i=t-o,c=[e.cyan,e.cyan,e.blue,e.blue,e.purple,e.purple,e.pink],l=Array.from({length:o},(k,d)=>{const w=Math.floor(d/t*c.length),y=s?(a+d)%c.length:w;return`${c[Math.min(y,c.length-1)]}\u2501${e.reset}`}).join(""),$=`${e.dim}${"\u2501".repeat(i)}${e.reset}`;return`${e.dim}\u2503${e.reset}${l}${$}${e.dim}\u2503${e.reset}`}const T=54,b=Math.floor((T-10)/2);async function D(){if(console.error(""),n){process.stderr.write(e.hide);for(let r=0;r<8;r++){const t=Math.min(r+2,b),s=" ".repeat(b-t),o=u(t,r),i=u(t,r+6),c=r<4?e.dim:e.bold;process.stderr.write(`${e.clear} ${s}${o} ${c}${e.cyan}tailwint${e.reset} ${i}`),await g(60)}process.stderr.write(`${e.clear}${e.show}`)}console.error(` ${u(b)} ${e.bold}${e.cyan}tailwint${e.reset} ${u(b,6)}`),console.error(""),console.error(` ${e.dim}tailwind css linter ${e.gray}// powered by the official lsp${e.reset}`),console.error("")}function h(){const r=["\u2728","\u2727","\u2726","\u2729","\xB7","\u2728"],t=[e.cyan,e.blue,e.purple,e.pink,e.yellow,e.green];return Array.from({length:6},(s,o)=>`${t[o%t.length]}${r[o%r.length]}${e.reset}`).join(" ")}function L(r){const t=[e.cyan,e.blue,e.purple,e.pink,e.orange,e.yellow,e.green];return r.split("").map((s,o)=>s===" "?s:`${t[o%t.length]}${s}${e.reset}`).join("")}async function R(){if(!n)return;const r=s=>" ".repeat(Math.floor((56-s)/2));process.stderr.write(e.hide);const t=[`${r(5)}${e.dim}. ${e.reset}${e.cyan}\u2728${e.reset}${e.dim} .${e.reset}`,`${r(5)}${e.blue}\u2727${e.reset} ${e.purple}\u2728${e.reset} ${e.pink}\u2727${e.reset}`,`${r(7)}${e.cyan}\u2728${e.reset} ${e.yellow}\u2726${e.reset} ${e.green}\u2728${e.reset} ${e.purple}\u2729${e.reset}`,`${r(11)}${h()}`];for(const s of t)process.stderr.write(`${e.clear}${s}`),await g(150);process.stderr.write(`${e.clear}${e.show}`),console.error(`${r(11)}${h()}
3
- `)}function W(r){const t=r.includes("/")?`${e.dim}${r.slice(0,r.lastIndexOf("/")+1)}${e.reset}`:"",s=r.includes("/")?r.slice(r.lastIndexOf("/")+1):r;return`${t}${e.bold}${e.white}${s}${e.reset}`}function N(r){const t=(r.range?.start?.line??0)+1,s=(r.range?.start?.character??0)+1,o=`${e.dim}${t}:${s}${e.reset}`,i=r.code==="cssConflict",c=i?`${e.orange}\u26A1${e.reset}`:`${e.yellow}\u25CB${e.reset}`,l=i?`${e.bgOrange}${e.bold} conflict ${e.reset}`:`${e.yellow}canonical${e.reset}`;return` ${c} ${o} ${l} ${e.white}${r.message}${e.reset}`}export{B as advanceTick,D as banner,M as braille,e as c,R as celebrationAnimation,N as diagLine,S as dots,W as fileBadge,n as isTTY,v as progressBar,L as rainbowText,A as setTitle,_ as startSpinner,a as tick,u as windTrail,O as windWave};
1
+ function g(r){return new Promise(t=>setTimeout(t,r))}const n=!!(process.stderr.isTTY&&process.stdout.isTTY),e={reset:n?"\x1B[0m":"",bold:n?"\x1B[1m":"",dim:n?"\x1B[2m":"",italic:n?"\x1B[3m":"",under:n?"\x1B[4m":"",red:n?"\x1B[38;5;203m":"",orange:n?"\x1B[38;5;208m":"",yellow:n?"\x1B[38;5;221m":"",green:n?"\x1B[38;5;114m":"",cyan:n?"\x1B[38;5;80m":"",blue:n?"\x1B[38;5;75m":"",purple:n?"\x1B[38;5;141m":"",pink:n?"\x1B[38;5;211m":"",gray:n?"\x1B[38;5;243m":"",white:n?"\x1B[38;5;255m":"",bgRed:n?"\x1B[48;5;52m":"",bgGreen:n?"\x1B[48;5;22m":"",bgOrange:n?"\x1B[48;5;94m":"",bgCyan:n?"\x1B[48;5;30m":"",hide:n?"\x1B[?25l":"",show:n?"\x1B[?25h":"",clear:n?"\x1B[2K\r":""};function A(r){n&&process.stderr.write(`\x1B]2;${r}\x07`)}const x=["~","\u2248","\u223C","\u301C"],I=[1,1,1,2],p=[e.cyan,e.blue,e.purple,e.pink,e.cyan,e.blue];function u(r,t=0){const o=[];let s=0,i=0;for(;s<r;){const c=(i+t)%x.length,l=(i+t)%p.length,$=I[c];if(s+$>r)break;o.push(`${p[l]}${x[c]}${e.reset}`),s+=$,i++}for(;s<r;){const c=(i+t)%p.length;o.push(`${p[c]}~${e.reset}`),s++,i++}return o.join("")}const m=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2807"];let a=0;function B(){a++}const f=[e.cyan,e.blue,e.purple,e.pink,e.purple,e.blue];function M(){return`${f[Math.floor(a/2)%f.length]}${m[a%m.length]}${e.reset}`}function S(){return u(6,a%24)}function _(){const r=a%4;return`${e.dim}${".".repeat(r)}${" ".repeat(3-r)}${e.reset}`}function O(r,t=100){if(!n)return()=>{};process.stderr.write(e.hide);let o=1;const s=setInterval(()=>{a++;const i=r(),c=i.split(`
2
+ `).length;let l="\x1B[2K\r";for(let $=1;$<o;$++)l="\x1B[A\x1B[2K"+l;process.stderr.write(`${l}${i}`),o=c},t);return()=>{clearInterval(s);for(let i=1;i<o;i++)process.stderr.write("\x1B[A");process.stderr.write(`\x1B[2K\x1B[J\r${e.show}`)}}function v(r,t,o=!1){const s=Math.round(r/100*t),i=t-s,c=[e.cyan,e.cyan,e.blue,e.blue,e.purple,e.purple,e.pink],l=Array.from({length:s},(k,d)=>{const w=Math.floor(d/t*c.length),y=o?(a+d)%c.length:w;return`${c[Math.min(y,c.length-1)]}\u2501${e.reset}`}).join(""),$=`${e.dim}${"\u2501".repeat(i)}${e.reset}`;return`${e.dim}\u2503${e.reset}${l}${$}${e.dim}\u2503${e.reset}`}const T=54,b=Math.floor((T-10)/2);async function D(){if(console.error(""),n){process.stderr.write(e.hide);for(let r=0;r<8;r++){const t=Math.min(r+2,b),o=" ".repeat(b-t),s=u(t,r),i=u(t,r+6),c=r<4?e.dim:e.bold;process.stderr.write(`${e.clear} ${o}${s} ${c}${e.cyan}tailwint${e.reset} ${i}`),await g(60)}process.stderr.write(`${e.clear}${e.show}`)}console.error(` ${u(b)} ${e.bold}${e.cyan}tailwint${e.reset} ${u(b,6)}`),console.error(""),console.error(` ${e.dim}tailwind css linter ${e.gray}// powered by the official lsp${e.reset}`),console.error("")}function h(){const r=["\u2728","\u2727","\u2726","\u2729","\xB7","\u2728"],t=[e.cyan,e.blue,e.purple,e.pink,e.yellow,e.green];return Array.from({length:6},(o,s)=>`${t[s%t.length]}${r[s%r.length]}${e.reset}`).join(" ")}function L(r){const t=[e.cyan,e.blue,e.purple,e.pink,e.orange,e.yellow,e.green];return r.split("").map((o,s)=>o===" "?o:`${t[s%t.length]}${o}${e.reset}`).join("")}async function R(){if(!n)return;const r=o=>" ".repeat(Math.floor((56-o)/2));process.stderr.write(e.hide);const t=[`${r(5)}${e.dim}. ${e.reset}${e.cyan}\u2728${e.reset}${e.dim} .${e.reset}`,`${r(5)}${e.blue}\u2727${e.reset} ${e.purple}\u2728${e.reset} ${e.pink}\u2727${e.reset}`,`${r(7)}${e.cyan}\u2728${e.reset} ${e.yellow}\u2726${e.reset} ${e.green}\u2728${e.reset} ${e.purple}\u2729${e.reset}`,`${r(11)}${h()}`];for(const o of t)process.stderr.write(`${e.clear}${o}`),await g(150);process.stderr.write(`${e.clear}${e.show}`),console.error(`${r(11)}${h()}
3
+ `)}function W(r){const t=r.lastIndexOf("/"),o=t>=0?`${e.dim}${r.slice(0,t+1)}${e.reset}`:"",s=t>=0?r.slice(t+1):r;return`${o}${e.bold}${e.white}${s}${e.reset}`}function N(r){const t=(r.range?.start?.line??0)+1,o=(r.range?.start?.character??0)+1,s=`${e.dim}${t}:${o}${e.reset}`,i=r.code==="cssConflict",c=i?`${e.orange}\u26A1${e.reset}`:`${e.yellow}\u25CB${e.reset}`,l=i?`${e.bgOrange}${e.bold} conflict ${e.reset}`:`${e.yellow}canonical${e.reset}`;return` ${c} ${s} ${l} ${e.white}${r.message}${e.reset}`}export{B as advanceTick,D as banner,M as braille,e as c,R as celebrationAnimation,N as diagLine,_ as dots,W as fileBadge,n as isTTY,v as progressBar,L as rainbowText,A as setTitle,O as startSpinner,a as tick,u as windTrail,S as windWave};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tailwint",
3
- "version": "1.1.8",
3
+ "version": "1.1.9",
4
4
  "description": "Tailwind CSS linter for CI — drives the official language server to catch class issues and auto-fix them",
5
5
  "license": "MIT",
6
6
  "author": "Peter Wang",