@tailwindcss/cli 4.3.0 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +22 -18
  2. package/package.json +6 -6
package/dist/index.mjs CHANGED
@@ -1,24 +1,28 @@
1
1
  #!/usr/bin/env node
2
- var he=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),ge=e=>{throw TypeError(e)};var te=(e,t,n)=>{if(t!=null){typeof t!="object"&&typeof t!="function"&&ge("Object expected");var i,o;n&&(i=t[he("asyncDispose")]),i===void 0&&(i=t[he("dispose")],n&&(o=i)),typeof i!="function"&&ge("Object not disposable"),o&&(i=function(){try{o.call(this)}catch(r){return Promise.reject(r)}}),e.push([n,i,t])}else n&&e.push([n]);return t},ne=(e,t,n)=>{var i=typeof SuppressedError=="function"?SuppressedError:function(a,s,l,c){return c=Error(l),c.name="SuppressedError",c.error=a,c.suppressed=s,c},o=a=>t=n?new i(a,t,"An error was suppressed during disposal"):(n=!0,a),r=a=>{for(;a=e.pop();)try{var s=a[1]&&a[1].call(a[2]);if(a[0])return Promise.resolve(s).then(r,l=>(o(l),r()))}catch(l){o(l)}if(n)throw t};return r()};import De from"mri";function v(e,t=process.argv.slice(2)){for(let[o,r]of t.entries())r==="-"&&(t[o]="__IO_DEFAULT_VALUE__");let n=De(t);for(let o in n){let r=n[o];o!=="_"&&Array.isArray(r)&&(r=r[r.length-1]),r==="__IO_DEFAULT_VALUE__"&&(r="-"),n[o]=r}let i={_:n._};for(let[o,{type:r,alias:a,default:s=r==="boolean"?!1:null}]of Object.entries(e)){if(i[o]=s,a){let l=a.slice(1);n[l]!==void 0&&(i[o]=we(n[l],r))}{let l=o.slice(2);n[l]!==void 0&&(i[o]=we(n[l],r))}}return i}function we(e,t){switch(t){case"string":return z(e);case"boolean":return j(e);case"number":return U(e);case"boolean | string":return j(e)??z(e);case"number | string":return U(e)??z(e);case"boolean | number":return j(e)??U(e);case"boolean | number | string":return j(e)??U(e)??z(e);default:throw new Error(`Unhandled type: ${t}`)}}function j(e){if(e===!0||e===!1)return e;if(e==="true")return!0;if(e==="false")return!1}function U(e){if(typeof e=="number")return e;{let t=Number(e);if(!Number.isNaN(t))return t}}function z(e){return`${e}`}import Qe from"@parcel/watcher";import{compile as He,env as Ze,Instrumentation as xe,optimize as Xe,toSourceMap as Y}from"@tailwindcss/node";import{clearRequireCache as et}from"@tailwindcss/node/require-cache";import{Scanner as tt}from"@tailwindcss/oxide";import{existsSync as nt}from"fs";import ae from"fs/promises";import T from"path";var k=class{#e=new Set([]);queueMacrotask(t){let n=setTimeout(t,0);return this.add(()=>{clearTimeout(n)})}add(t){return this.#e.add(t),()=>{this.#e.delete(t),t()}}async dispose(){for(let t of this.#e)await t();this.#e.clear()}};import Ye from"fs";import Ce from"path";import{stripVTControlCharacters as Ve}from"util";import w from"picocolors";import be from"enhanced-resolve";import We from"fs";import{createRequire as Ge}from"module";var Ke=Ge(import.meta.url).resolve;function ye(e){if(typeof globalThis.__tw_resolve=="function"){let t=globalThis.__tw_resolve(e);if(t)return t}return Ke(e)}var $t=be.ResolverFactory.createResolver({fileSystem:new be.CachedInputFileSystem(We,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"]});function Se(e){let t=typeof e=="number"?BigInt(e):e;return t<1000n?`${t}ns`:(t/=1000n,t<1000n?`${t}\xB5s`:(t/=1000n,t<1000n?`${t}ms`:(t/=1000n,t<60n?`${t}s`:(t/=60n,t<60n?`${t}m`:(t/=60n,t<24n?`${t}h`:(t/=24n,`${t}d`))))))}var I={indent:2};function M(){return`${w.italic(w.bold(w.blue("\u2248")))} tailwindcss ${w.blue(`v${qe()}`)}`}function A(e){return`${w.dim(w.blue("`"))}${w.blue(e)}${w.dim(w.blue("`"))}`}function D(e,t=process.cwd(),{preferAbsoluteIfShorter:n=!0}={}){let i=Ce.relative(t,e);return i.startsWith("..")||(i=`.${Ce.sep}${i}`),n&&i.length>e.length?e:i}function ie(e,t){let n=e.split(" "),i=[],o="",r=0;for(let a of n){let s=Ve(a).length;r+s+1>t&&(i.push(o),o="",r=0),o+=(r?" ":"")+a,r+=s+(r?1:0)}return r&&i.push(o),i}function W(e){let t=Se(e);return e<=50*1e6?w.green(t):e<=300*1e6?w.blue(t):e<=1e3*1e6?w.yellow(t):w.red(t)}function P(e,t=0){return`${" ".repeat(t+I.indent)}${e}`}function _(e=""){process.stderr.write(`${e}
3
- `)}function G(e=""){process.stdout.write(`${e}
4
- `)}function qe(){if(typeof globalThis.__tw_version=="string")return globalThis.__tw_version;let{version:e}=JSON.parse(Ye.readFileSync(ye("tailwindcss/package.json"),"utf-8"));return e}import K from"fs/promises";import Je from"path";function re(){return new Promise((e,t)=>{let n="";process.stdin.on("data",i=>{n+=i}),process.stdin.on("end",()=>e(n)),process.stdin.on("error",i=>t(i))})}async function se(e,t){if(!await K.stat(e).then(i=>i.isCharacterDevice()||i.isFIFO()).catch(()=>!1))try{if(await K.readFile(e,"utf8")===t)return}catch{}await K.mkdir(Je.dirname(e),{recursive:!0}),await K.writeFile(e,t,"utf8")}var _e=String.raw,u=Ze.DEBUG;function $(){return{"--input":{type:"string",description:"Input file",alias:"-i"},"--output":{type:"string",description:"Output file",alias:"-o",default:"-"},"--watch":{type:"boolean | string",description:"Watch for changes and rebuild as needed, and use `always` to keep watching when stdin is closed",alias:"-w",values:["always"]},"--minify":{type:"boolean",description:"Optimize and minify the output",alias:"-m"},"--optimize":{type:"boolean",description:"Optimize the output without minifying"},"--cwd":{type:"string",description:"The current working directory",default:"."},"--map":{type:"boolean | string",description:"Generate a source map",default:!1}}}async function oe(e){try{return await e()}catch(t){t instanceof Error&&_(t.toString()),process.exit(1)}}async function le(e){var L=[];try{_(M());_();let t=te(L,new xe);u&&t.start("[@tailwindcss/cli] (initial build)");let n=T.resolve(e["--cwd"]);e["--output"]&&e["--output"]!=="-"&&(e["--output"]=T.resolve(n,e["--output"]));e["--input"]&&e["--input"]!=="-"&&(e["--input"]=T.resolve(n,e["--input"]),nt(e["--input"])||(_(`Specified input file ${A(D(e["--input"]))} does not exist.`),process.exit(1)));e["--input"]===e["--output"]&&e["--input"]!=="-"&&(_(`Specified input file ${A(D(e["--input"]))} and output file ${A(D(e["--output"]))} are identical.`),process.exit(1));e["--map"]==="-"&&(_("Use --map without a value to inline the source map"),process.exit(1));e["--map"]&&e["--map"]!==!0&&(e["--map"]=T.resolve(n,e["--map"]));let i=process.hrtime.bigint();let o=e["--input"]?e["--input"]==="-"?await re():await ae.readFile(e["--input"],"utf-8"):_e`
2
+ var ge=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),be=e=>{throw TypeError(e)};var re=(e,t,n)=>{if(t!=null){typeof t!="object"&&typeof t!="function"&&be("Object expected");var i,s;n&&(i=t[ge("asyncDispose")]),i===void 0&&(i=t[ge("dispose")],n&&(s=i)),typeof i!="function"&&be("Object not disposable"),s&&(i=function(){try{s.call(this)}catch(r){return Promise.reject(r)}}),e.push([n,i,t])}else n&&e.push([n]);return t},se=(e,t,n)=>{var i=typeof SuppressedError=="function"?SuppressedError:function(a,o,l,u){return u=Error(l),u.name="SuppressedError",u.error=a,u.suppressed=o,u},s=a=>t=n?new i(a,t,"An error was suppressed during disposal"):(n=!0,a),r=a=>{for(;a=e.pop();)try{var o=a[1]&&a[1].call(a[2]);if(a[0])return Promise.resolve(o).then(r,l=>(s(l),r()))}catch(l){s(l)}if(n)throw t};return r()};import Ke from"mri";function R(e,t=process.argv.slice(2)){for(let[s,r]of t.entries())r==="-"&&(t[s]="__IO_DEFAULT_VALUE__");let n=Ke(t);for(let s in n){let r=n[s];s!=="_"&&Array.isArray(r)&&(r=r[r.length-1]),r==="__IO_DEFAULT_VALUE__"&&(r="-"),n[s]=r}let i={_:n._};for(let[s,{type:r,alias:a,default:o=r==="boolean"?!1:null}]of Object.entries(e)){if(i[s]=o,a){let l=a.slice(1);n[l]!==void 0&&(i[s]=we(n[l],r))}{let l=s.slice(2);n[l]!==void 0&&(i[s]=we(n[l],r))}}return i}function we(e,t){switch(t){case"string":return K(e);case"boolean":return W(e);case"number":return G(e);case"boolean | string":return W(e)??K(e);case"number | string":return G(e)??K(e);case"boolean | number":return W(e)??G(e);case"boolean | number | string":return W(e)??G(e)??K(e);default:throw new Error(`Unhandled type: ${t}`)}}function W(e){if(e===!0||e===!1)return e;if(e==="true")return!0;if(e==="false")return!1}function G(e){if(typeof e=="number")return e;{let t=Number(e);if(!Number.isNaN(t))return t}}function K(e){return`${e}`}import Xe from"@parcel/watcher";import{compile as et,env as tt,Instrumentation as _e,optimize as nt,toSourceMap as H}from"@tailwindcss/node";import{clearRequireCache as it}from"@tailwindcss/node/require-cache";import{Scanner as rt}from"@tailwindcss/oxide";import{existsSync as st}from"fs";import ce from"fs/promises";import y from"path";var L=class{#e=new Set([]);queueMacrotask(t){let n=setTimeout(t,0);return this.add(()=>{clearTimeout(n)})}add(t){return this.#e.add(t),()=>{this.#e.delete(t),t()}}async dispose(){for(let t of this.#e)await t();this.#e.clear()}};import Je from"fs";import xe from"path";import{stripVTControlCharacters as Qe}from"util";import w from"picocolors";import ye from"enhanced-resolve";import Ye from"fs";import{createRequire as Ve}from"module";var qe=Ve(import.meta.url).resolve;function Se(e){if(typeof globalThis.__tw_resolve=="function"){let t=globalThis.__tw_resolve(e);if(t)return t}return qe(e)}var Pt=ye.ResolverFactory.createResolver({fileSystem:new ye.CachedInputFileSystem(Ye,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"]});function Ce(e){let t=typeof e=="number"?BigInt(e):e;return t<1000n?`${t}ns`:(t/=1000n,t<1000n?`${t}\xB5s`:(t/=1000n,t<1000n?`${t}ms`:(t/=1000n,t<60n?`${t}s`:(t/=60n,t<60n?`${t}m`:(t/=60n,t<24n?`${t}h`:(t/=24n,`${t}d`))))))}var Y={indent:2};function V(){return`${w.italic(w.bold(w.blue("\u2248")))} tailwindcss ${w.blue(`v${He()}`)}`}function v(e){return`${w.dim(w.blue("`"))}${w.blue(e)}${w.dim(w.blue("`"))}`}function q(e,t=process.cwd(),{preferAbsoluteIfShorter:n=!0}={}){let i=xe.relative(t,e);return i.startsWith("..")||(i=`.${xe.sep}${i}`),n&&i.length>e.length?e:i}function oe(e,t){let n=e.split(" "),i=[],s="",r=0;for(let a of n){let o=Qe(a).length;r+o+1>t&&(i.push(s),s="",r=0),s+=(r?" ":"")+a,r+=o+(r?1:0)}return r&&i.push(s),i}function P(e){let t=Ce(e);return e<=50*1e6?w.green(t):e<=300*1e6?w.blue(t):e<=1e3*1e6?w.yellow(t):w.red(t)}function B(e,t=0){return`${" ".repeat(t+Y.indent)}${e}`}function x(e=""){process.stderr.write(`${e}
3
+ `)}function J(e=""){process.stdout.write(`${e}
4
+ `)}function He(){if(typeof globalThis.__tw_version=="string")return globalThis.__tw_version;let{version:e}=JSON.parse(Je.readFileSync(Se("tailwindcss/package.json"),"utf-8"));return e}import Q from"fs/promises";import Ze from"path";function ae(){return new Promise((e,t)=>{let n="";process.stdin.on("data",i=>{n+=i}),process.stdin.on("end",()=>e(n)),process.stdin.on("error",i=>t(i))})}async function le(e,t){if(!await Q.stat(e).then(i=>i.isCharacterDevice()||i.isFIFO()).catch(()=>!1))try{if(await Q.readFile(e,"utf8")===t)return}catch{}await Q.mkdir(Ze.dirname(e),{recursive:!0}),await Q.writeFile(e,t,"utf8")}var Te=String.raw,c=tt.DEBUG;function N(){return{"--input":{type:"string",description:"Input file",alias:"-i"},"--output":{type:"string",description:"Output file",alias:"-o",default:"-"},"--watch":{type:"boolean | string",description:"Watch for changes and rebuild as needed, and use `always` to keep watching when stdin is closed",alias:"-w",values:["always"]},"--minify":{type:"boolean",description:"Optimize and minify the output",alias:"-m"},"--optimize":{type:"boolean",description:"Optimize the output without minifying"},"--cwd":{type:"string",description:"The current working directory",default:"."},"--map":{type:"boolean | string",description:"Generate a source map",default:!1},"--silent":{type:"boolean",description:"Suppress non-error output"}}}async function ue(e){try{return await e()}catch(t){x([Oe("Error:"),A("\u250C")].concat(`${t}`.split(`
5
+ `).map(n=>`${A("\u2502")} ${n}`)).concat(A("\u2514")).join(`
6
+ `)),process.exit(1)}}async function pe(e){var I=[];try{e["--silent"]||x(V());e["--silent"]||x();let t=re(I,new _e);c&&t.start("[@tailwindcss/cli] (initial build)");let n=y.resolve(e["--cwd"]);e["--output"]&&e["--output"]!=="-"&&(e["--output"]=y.resolve(n,e["--output"]));e["--input"]&&e["--input"]!=="-"&&(e["--input"]=y.resolve(n,e["--input"]),st(e["--input"])||(x(`Specified input file ${v(q(e["--input"]))} does not exist.`),process.exit(1)));e["--input"]===e["--output"]&&e["--input"]!=="-"&&(x(`Specified input file ${v(q(e["--input"]))} and output file ${v(q(e["--output"]))} are identical.`),process.exit(1));e["--map"]==="-"&&(x("Use --map without a value to inline the source map"),process.exit(1));e["--map"]&&e["--map"]!==!0&&(e["--map"]=y.resolve(n,e["--map"]));let i=process.hrtime.bigint();let s=e["--input"]?e["--input"]==="-"?await ae():await ce.readFile(e["--input"],"utf-8"):Te`
5
7
  @import 'tailwindcss';
6
- `;let r={css:"",optimizedCss:""};async function a(C,g,f,x){let y=C;if(f["--minify"]||f["--optimize"])if(C!==r.css){u&&x.start("Optimize CSS");let E=Xe(C,{file:f["--input"]??"input.css",minify:f["--minify"]??!1,map:g?.raw??void 0});u&&x.end("Optimize CSS"),r.css=C,r.optimizedCss=E.code,E.map&&(g=Y(E.map)),y=E.code}else y=r.optimizedCss;if(g){if(f["--map"]===!0)y+=`
7
- `,y+=g.inline;else if(typeof f["--map"]=="string"){let E=f["--output"]&&f["--output"]!=="-"?T.dirname(T.resolve(f["--output"])):process.cwd(),Q=T.resolve(f["--map"]),m=T.relative(E,Q);y+=`
8
- `,y+=g.comment(m),u&&x.start("Write source map"),await se(f["--map"],g.raw),u&&x.end("Write source map")}}u&&x.start("Write output"),f["--output"]&&f["--output"]!=="-"?await se(f["--output"],y):G(y),u&&x.end("Write output")}let s=e["--input"]&&e["--input"]!=="-"?T.resolve(e["--input"]):null;let l=s?T.dirname(s):process.cwd();let c=s?[s]:[];async function b(C,g){u&&g.start("Setup compiler");let f=await He(C,{from:e["--output"]?s??"stdin.css":void 0,base:l,onDependency(E){c.push(E)}}),x=(f.root==="none"?[]:f.root===null?[{base:n,pattern:"**/*",negated:!1}]:[{...f.root,negated:!1}]).concat(f.sources),y=new tt({sources:x});return u&&g.end("Setup compiler"),[f,y]}let[p,d]=await oe(()=>b(o,t));if(e["--watch"]){let C=[];C.push(await Te(Ee(d),async function g(f){try{var x=[];try{if(f.length===1&&f[0]===e["--output"])return;let m=te(x,new xe);u&&m.start("[@tailwindcss/cli] (watcher)");let de=process.hrtime.bigint();let fe=[];let H="incremental";let me=c;for(let O of f){if(me.includes(O)){H="full";break}fe.push({file:O,extension:T.extname(O).slice(1)})}let Z="";let X=null;if(H==="full"){let O=e["--input"]?e["--input"]==="-"?await re():await ae.readFile(e["--input"],"utf-8"):_e`
8
+ `;let r={css:"",optimizedCss:""};async function a(T,b,d,S){let C=T;if(d["--minify"]||d["--optimize"])if(T!==r.css){c&&S.start("Optimize CSS");let E=nt(T,{file:d["--input"]??"input.css",minify:d["--minify"]??!1,map:b?.raw??void 0});c&&S.end("Optimize CSS"),r.css=T,r.optimizedCss=E.code,E.map&&(b=H(E.map)),C=E.code}else C=r.optimizedCss;if(b){if(d["--map"]===!0)C+=`
9
+ `,C+=b.inline;else if(typeof d["--map"]=="string"){let E=d["--output"]&&d["--output"]!=="-"?y.dirname(y.resolve(d["--output"])):process.cwd(),X=y.resolve(d["--map"]),f=y.relative(E,X);C+=`
10
+ `,C+=b.comment(f),c&&S.start("Write source map"),await le(d["--map"],b.raw),c&&S.end("Write source map")}}c&&S.start("Write output"),d["--output"]&&d["--output"]!=="-"?await le(d["--output"],C):J(C),c&&S.end("Write output")}let o=e["--input"]&&e["--input"]!=="-"?y.resolve(e["--input"]):null;let l=o?y.dirname(o):process.cwd();let u=o?[o]:[];let g=u;async function m(T,b){c&&b.start("Setup compiler");let d=await et(T,{from:e["--output"]?o??"stdin.css":void 0,base:l,onDependency(E){u.push(E)}}),S=(d.root==="none"?[]:d.root===null?[{base:n,pattern:"**/*",negated:!1}]:[{...d.root,negated:!1}]).concat(d.sources);S.push({base:y.dirname(process.execPath),pattern:y.basename(process.execPath),negated:!0});let C=new rt({sources:S});return c&&b.end("Setup compiler"),[d,C]}let[p,h]=await ue(()=>m(s,t));if(e["--watch"]){let T=[];T.push(await Ee($e(h),async function b(d){try{var S=[];try{if(d.length===1&&d[0]===e["--output"])return;let f=re(S,new _e);c&&f.start("[@tailwindcss/cli] (watcher)");let D=process.hrtime.bigint();let M=[];let ee="incremental";let he=u;for(let $ of d){if(he.includes($)){ee="full";break}M.push({file:$,extension:y.extname($).slice(1)})}let te="";let ne=null;if(ee==="full"){let $=e["--input"]?e["--input"]==="-"?await ae():await ce.readFile(e["--input"],"utf-8"):Te`
9
11
  @import 'tailwindcss';
10
- `;et(me),c=s?[s]:[],[p,d]=await b(O,m),u&&m.start("Scan for candidates");let ee=d.scan();u&&m.end("Scan for candidates"),u&&m.start("Setup new watchers");let Ie=await Te(Ee(d),g);u&&m.end("Setup new watchers"),u&&m.start("Cleanup old watchers"),await Promise.all(C.splice(0).map(Me=>Me())),u&&m.end("Cleanup old watchers"),C.push(Ie),u&&m.start("Build CSS"),Z=p.build(ee),u&&m.end("Build CSS"),e["--map"]&&(u&&m.start("Build Source Map"),X=Y(p.buildSourceMap()),u&&m.end("Build Source Map"))}else if(H==="incremental"){u&&m.start("Scan for candidates");let O=d.scanFiles(fe);if(u&&m.end("Scan for candidates"),O.length<=0){let ee=process.hrtime.bigint();_(`Done in ${W(ee-de)}`);return}u&&m.start("Build CSS"),Z=p.build(O),u&&m.end("Build CSS"),e["--map"]&&(u&&m.start("Build Source Map"),X=Y(p.buildSourceMap()),u&&m.end("Build Source Map"))}await a(Z,X,e,m);let ze=process.hrtime.bigint();_(`Done in ${W(ze-de)}`)}catch(y){var E=y,Q=!0}finally{ne(x,E,Q)}}catch(m){m instanceof Error&&_(m.toString())}})),e["--watch"]!=="always"&&process.stdin.on("end",()=>{Promise.all(C.map(g=>g())).then(()=>process.exit(0),()=>process.exit(1))}),process.stdin.resume()}u&&t.start("Scan for candidates");let h=d.scan();u&&t.end("Scan for candidates");u&&t.start("Build CSS");let S=await oe(()=>p.build(h));u&&t.end("Build CSS");let N=null;e["--map"]&&(u&&t.start("Build Source Map"),N=await oe(()=>Y(p.buildSourceMap())),u&&t.end("Build Source Map"));await a(S,N,e,t);let q=process.hrtime.bigint();_(`Done in ${W(q-i)}`)}catch(J){var je=J,Ue=!0}finally{ne(L,je,Ue)}}async function Te(e,t){e=e.sort((s,l)=>s.length-l.length);let n=[];for(let s=0;s<e.length;++s)for(let l=0;l<s;++l)e[s].startsWith(`${e[l]}/`)&&n.push(e[s]);e=e.filter(s=>!n.includes(s));let i=new k,o=new Set,r=new k;async function a(){await r.dispose(),r.queueMacrotask(()=>{t(Array.from(o)),o.clear()})}for(let s of e){let{unsubscribe:l}=await Qe.subscribe(s,async(c,b)=>{if(c){console.error(c);return}await Promise.all(b.map(async p=>{if(p.type==="delete")return;let d=null;try{d=await ae.lstat(p.path)}catch{}!d?.isFile()&&!d?.isSymbolicLink()||o.add(p.path)})),await a()});i.add(l)}return async()=>{await i.dispose(),await r.dispose()}}function Ee(e){return[...new Set(e.normalizedSources.flatMap(t=>t.base))]}import{__unstable__loadDesignSystem as Re}from"@tailwindcss/node";import rt from"fs/promises";import ve from"path";import{createInterface as st}from"readline";function ue(e,t){let n=e.length,i=t.length,o=n<i?n:i;for(let r=0;r<o;r++){let a=e.charCodeAt(r),s=t.charCodeAt(r);if(a>=48&&a<=57&&s>=48&&s<=57){let l=r,c=r+1,b=r,p=r+1;for(a=e.charCodeAt(c);a>=48&&a<=57;)a=e.charCodeAt(++c);for(s=t.charCodeAt(p);s>=48&&s<=57;)s=t.charCodeAt(++p);let d=e.slice(l,c),h=t.slice(b,p),S=Number(d)-Number(h);if(S)return S;if(d<h)return-1;if(d>h)return 1;continue}if(a!==s)return a-s}return e.length-t.length}var V=new Uint8Array(256);function Oe(e,t){let n=0,i=[],o=0,r=e.length,a=t.charCodeAt(0);for(let s=0;s<r;s++){let l=e.charCodeAt(s);if(n===0&&l===a){i.push(e.slice(o,s)),o=s+1;continue}switch(l){case 92:s+=1;break;case 39:case 34:for(;++s<r;){let c=e.charCodeAt(s);if(c===92){s+=1;continue}if(c===l)break}break;case 40:V[n]=41,n++;break;case 91:V[n]=93,n++;break;case 123:V[n]=125,n++;break;case 93:case 125:case 41:n>0&&l===V[n-1]&&n--;break}}return i.push(e.slice(o)),i}import R from"picocolors";function F({render:e=!0,invalid:t,usage:n,options:i}){let o=process.stdout.columns??80,r=[],a=e?G:(s="")=>void r.push(s);if(a(M()),t&&(a(),a(`${R.dim("Invalid command:")} ${t}`)),n&&n.length>0){a(),a(R.dim("Usage:"));for(let[s,l]of n.entries()){let c=l.slice(0,l.indexOf("[")),b=l.slice(l.indexOf("["));b=b.replace(/\[.*?\]/g,h=>R.dim(h));let d=ie(b,o-I.indent-c.length-1);d.length>1&&s!==0&&a(),a(P(`${c}${d.shift()}`));for(let h of d)a(P(h,c.length))}}if(i){let s=0;for(let{alias:p}of Object.values(i))p&&(s=Math.max(s,p.length));let l=[],c=0;for(let[p,{alias:d,values:h}]of Object.entries(i)){h?.length&&(p+=`[=${h.join(", ")}]`);let S=[d&&`${d.padStart(s)}`,d?p:" ".repeat(s+2)+p].filter(Boolean).join(", ");l.push(S),c=Math.max(c,S.length)}a(),a(R.dim("Options:"));let b=8;for(let{description:p,default:d=null}of Object.values(i)){let h=l.shift(),S=b+(c-h.length),N=2,q=o-h.length-S-N-I.indent,L=ie(d!==null?`${p} ${R.dim(`[default:\u202F${A(`${d}`)}]`)}`:p,q);a(P(`${R.blue(h)} ${R.dim(R.gray("\xB7")).repeat(S)} ${L.shift()}`));for(let J of L)a(P(`${" ".repeat(h.length+S+N)}${J}`))}}if(!e)return r.join(`
11
- `)}var ot=String.raw;function ce(){return"tailwindcss canonicalize [classes...]"}function at(){return"tailwindcss canonicalize --css input.css [classes...]"}function lt(){return"tailwindcss canonicalize --stream [--css input.css]"}function $e(){return{"--css":{type:"string",description:'CSS entry file used to load the Tailwind design system (defaults to `@import "tailwindcss";`)'},"--format":{type:"string",description:"Output format",default:"text",values:["text","json","jsonl"]},"--stream":{type:"boolean",description:"Read candidate groups from stdin line by line and write results to stdout",default:!1}}}var Ne={"--help":{type:"boolean",description:"Display usage information",alias:"-h",default:!1}};async function Le({argv:e=process.argv.slice(2),cwd:t=process.cwd(),stdin:n=null,stdinIsTTY:i=process.stdin.isTTY,stdoutIsTTY:o=process.stdout.isTTY}={}){try{let r=v({...$e(),...Ne},e),a=mt(r["--format"]??"text");if(o&&e.length===0||r["--help"])return{exitCode:0,stdout:ke()??"",stderr:""};if(r["--stream"])return await ut({css:r["--css"],cwd:t,format:a,input:process.stdin,output:process.stdout}),{exitCode:0,stdout:"",stderr:""};let s=r._.length>0?r._:await ct({stdin:n,stdinIsTTY:i});if(s.length===0)return ht("No candidate groups provided");let l=await dt({css:r["--css"],cwd:t,inputs:s});return{exitCode:0,stdout:ft(l,a),stderr:""}}catch(r){return{exitCode:1,stdout:"",stderr:r instanceof Error?r.message:String(r)}}}async function ut({css:e,cwd:t,format:n,input:i,output:o}){let r=await Pe(e,t),a=st({input:i}),s=!0;n==="json"&&o.write("[");for await(let l of a){let c=Fe(r,l);switch(n){case"text":{o.write(c.output+`
12
- `);break}case"jsonl":{o.write(JSON.stringify(c)+`
13
- `);break}case"json":{s?o.write(`
14
- `):o.write(`,
15
- `),o.write(bt(JSON.stringify(c,null,2),2)),s=!1;break}}}n==="json"&&o.write(s?"]":`
16
- ]`)}function ct({stdin:e,stdinIsTTY:t}){return e!==null?Promise.resolve(Ae(e)):t?Promise.resolve([]):pt().then(Ae)}async function pt(){return new Promise((e,t)=>{let n="";process.stdin.on("data",i=>{n+=i}),process.stdin.on("end",()=>e(n)),process.stdin.on("error",i=>t(i))})}async function dt({css:e,cwd:t=process.cwd(),inputs:n}){let i=await Pe(e,t);return n.map(o=>Fe(i,o))}function ft(e,t){switch(t){case"json":return JSON.stringify(e,null,2);case"jsonl":return e.map(n=>JSON.stringify(n)).join(`
12
+ `;it(he),g=u.slice(),u=o?[o]:[],[p,h]=await m($,f),g=u.slice(),c&&f.start("Scan for candidates");let ie=h.scan();c&&f.end("Scan for candidates"),c&&f.start("Setup new watchers");let We=await Ee($e(h),b);c&&f.end("Setup new watchers"),c&&f.start("Cleanup old watchers"),await Promise.all(T.splice(0).map(Ge=>Ge())),c&&f.end("Cleanup old watchers"),T.push(We),c&&f.start("Build CSS"),te=p.build(ie),c&&f.end("Build CSS"),e["--map"]&&(c&&f.start("Build Source Map"),ne=H(p.buildSourceMap()),c&&f.end("Build Source Map"))}else if(ee==="incremental"){c&&f.start("Scan for candidates");let $=h.scanFiles(M);if(c&&f.end("Scan for candidates"),$.length<=0){let ie=process.hrtime.bigint();e["--silent"]||x(`Done in ${P(ie-D)}`);return}c&&f.start("Build CSS"),te=p.build($),c&&f.end("Build CSS"),e["--map"]&&(c&&f.start("Build Source Map"),ne=H(p.buildSourceMap()),c&&f.end("Build Source Map"))}await a(te,ne,e,f);let Me=process.hrtime.bigint();e["--silent"]||x(`Done in ${P(Me-D)}`)}catch(C){var E=C,X=!0}finally{se(S,E,X)}}catch(f){u=g,x([Oe("Error:"),A("\u250C")].concat(`${f}`.split(`
13
+ `).map(M=>`${A("\u2502")} ${M}`)).concat(A("\u2514")).join(`
14
+ `));let D=process.hrtime.bigint();e["--silent"]||x(`Done in ${P(D-i)}`)}})),e["--watch"]!=="always"&&process.stdin.on("end",()=>{Promise.all(T.map(b=>b())).then(()=>process.exit(0),()=>process.exit(1))}),process.stdin.resume()}c&&t.start("Scan for candidates");let _=h.scan();c&&t.end("Scan for candidates");c&&t.start("Build CSS");let j=await ue(()=>p.build(_));c&&t.end("Build CSS");let U=null;e["--map"]&&(c&&t.start("Build Source Map"),U=await ue(()=>H(p.buildSourceMap())),c&&t.end("Build Source Map"));await a(j,U,e,t);let z=process.hrtime.bigint();e["--silent"]||x(`Done in ${P(z-i)}`)}catch(ze){var Ie=ze,De=!0}finally{se(I,Ie,De)}}async function Ee(e,t){e=e.sort((o,l)=>o.length-l.length);let n=[];for(let o=0;o<e.length;++o)for(let l=0;l<o;++l)e[o].startsWith(`${e[l]}/`)&&n.push(e[o]);e=e.filter(o=>!n.includes(o));let i=new L,s=new Set,r=new L;async function a(){await r.dispose(),r.queueMacrotask(()=>{t(Array.from(s)),s.clear()})}for(let o of e){let{unsubscribe:l}=await Xe.subscribe(o,async(u,g)=>{if(u){console.error(u);return}await Promise.all(g.map(async m=>{if(m.type==="delete"){s.add(m.path);return}let p=null;try{p=await ce.lstat(m.path)}catch{}!p?.isFile()&&!p?.isSymbolicLink()||s.add(m.path)})),await a()});i.add(l)}return async()=>{await i.dispose(),await r.dispose()}}function $e(e){return[...new Set(e.normalizedSources.flatMap(t=>t.base))]}function A(e){return`\x1B[2m${e}\x1B[22m`}function Oe(e){return`\x1B[31m${e}\x1B[39m`}import{__unstable__loadDesignSystem as ve}from"@tailwindcss/node";import at from"fs/promises";import Ae from"path";import{createInterface as lt}from"readline";function de(e,t){let n=e.length,i=t.length,s=n<i?n:i;for(let r=0;r<s;r++){let a=e.charCodeAt(r),o=t.charCodeAt(r);if(a>=48&&a<=57&&o>=48&&o<=57){let l=r,u=r+1,g=r,m=r+1;for(a=e.charCodeAt(u);a>=48&&a<=57;)a=e.charCodeAt(++u);for(o=t.charCodeAt(m);o>=48&&o<=57;)o=t.charCodeAt(++m);let p=e.slice(l,u),h=t.slice(g,m),_=Number(p)-Number(h);if(_)return _;if(p<h)return-1;if(p>h)return 1;continue}if(a!==o)return a-o}return e.length-t.length}var Z=new Uint8Array(256);function Re(e,t){let n=0,i=[],s=0,r=e.length,a=t.charCodeAt(0);for(let o=0;o<r;o++){let l=e.charCodeAt(o);if(n===0&&l===a){i.push(e.slice(s,o)),s=o+1;continue}switch(l){case 92:o+=1;break;case 39:case 34:for(;++o<r;){let u=e.charCodeAt(o);if(u===92){o+=1;continue}if(u===l)break}break;case 40:Z[n]=41,n++;break;case 91:Z[n]=93,n++;break;case 123:Z[n]=125,n++;break;case 93:case 125:case 41:n>0&&l===Z[n-1]&&n--;break}}return i.push(e.slice(s)),i}import O from"picocolors";function k({render:e=!0,invalid:t,usage:n,options:i}){let s=process.stdout.columns??80,r=[],a=e?J:(o="")=>{r.push(o)};if(a(V()),t&&(a(),a(`${O.dim("Invalid command:")} ${t}`)),n&&n.length>0){a(),a(O.dim("Usage:"));for(let[o,l]of n.entries()){let u=l.slice(0,l.indexOf("[")),g=l.slice(l.indexOf("["));g=g.replace(/\[.*?\]/g,h=>O.dim(h));let p=oe(g,s-Y.indent-u.length-1);p.length>1&&o!==0&&a(),a(B(`${u}${p.shift()}`));for(let h of p)a(B(h,u.length))}}if(i){let o=0;for(let{alias:m}of Object.values(i))m&&(o=Math.max(o,m.length));let l=[],u=0;for(let[m,{alias:p,values:h}]of Object.entries(i)){h?.length&&(m+=`[=${h.join(", ")}]`);let _=[p&&`${p.padStart(o)}`,p?m:" ".repeat(o+2)+m].filter(Boolean).join(", ");l.push(_),u=Math.max(u,_.length)}a(),a(O.dim("Options:"));let g=8;for(let{description:m,default:p=null}of Object.values(i)){let h=l.shift(),_=g+(u-h.length),j=2,U=s-h.length-_-j-Y.indent,z=oe(p!==null?`${m} ${O.dim(`[default:\u202F${v(`${p}`)}]`)}`:m,U);a(B(`${O.blue(h)} ${O.dim(O.gray("\xB7")).repeat(_)} ${z.shift()}`));for(let I of z)a(B(`${" ".repeat(h.length+_+j)}${I}`))}}if(!e)return r.join(`
15
+ `)}var ut=String.raw;function fe(){return"tailwindcss canonicalize [classes...]"}function ct(){return"tailwindcss canonicalize --css input.css [classes...]"}function pt(){return"tailwindcss canonicalize --stream [--css input.css]"}function Le(){return{"--css":{type:"string",description:'CSS entry file used to load the Tailwind design system (defaults to `@import "tailwindcss";`)'},"--format":{type:"string",description:"Output format",default:"text",values:["text","json","jsonl"]},"--stream":{type:"boolean",description:"Read candidate groups from stdin line by line and write results to stdout",default:!1}}}var Pe={"--help":{type:"boolean",description:"Display usage information",alias:"-h",default:!1}};async function Be({argv:e=process.argv.slice(2),cwd:t=process.cwd(),stdin:n=null,stdinIsTTY:i=process.stdin.isTTY,stdoutIsTTY:s=process.stdout.isTTY}={}){try{let r=R({...Le(),...Pe},e),a=bt(r["--format"]??"text");if(s&&e.length===0||r["--help"])return{exitCode:0,stdout:ke()??"",stderr:""};if(r["--stream"])return await dt({css:r["--css"],cwd:t,format:a,input:process.stdin,output:process.stdout}),{exitCode:0,stdout:"",stderr:""};let o=r._.length>0?r._:await ft({stdin:n,stdinIsTTY:i});if(o.length===0)return wt("No candidate groups provided");let l=await ht({css:r["--css"],cwd:t,inputs:o});return{exitCode:0,stdout:gt(l,a),stderr:""}}catch(r){return{exitCode:1,stdout:"",stderr:r instanceof Error?r.message:String(r)}}}async function dt({css:e,cwd:t,format:n,input:i,output:s}){let r=await Fe(e,t),a=lt({input:i}),o=!0;n==="json"&&s.write("[");for await(let l of a){let u=je(r,l);switch(n){case"text":{s.write(u.output+`
16
+ `);break}case"jsonl":{s.write(JSON.stringify(u)+`
17
+ `);break}case"json":{o?s.write(`
18
+ `):s.write(`,
19
+ `),s.write(Ct(JSON.stringify(u,null,2),2)),o=!1;break}}}n==="json"&&s.write(o?"]":`
20
+ ]`)}function ft({stdin:e,stdinIsTTY:t}){return e!==null?Promise.resolve(Ne(e)):t?Promise.resolve([]):mt().then(Ne)}async function mt(){return new Promise((e,t)=>{let n="";process.stdin.on("data",i=>{n+=i}),process.stdin.on("end",()=>e(n)),process.stdin.on("error",i=>t(i))})}async function ht({css:e,cwd:t=process.cwd(),inputs:n}){let i=await Fe(e,t);return n.map(s=>je(i,s))}function gt(e,t){switch(t){case"json":return JSON.stringify(e,null,2);case"jsonl":return e.map(n=>JSON.stringify(n)).join(`
17
21
  `);case"text":return e.map(n=>n.output).join(`
18
- `)}}function ke(){return F({render:!1,usage:[ce(),at(),lt()],options:{...$e(),...Ne}})}async function Pe(e,t){if(e===null)return Re(ot`
22
+ `)}}function ke(){return k({render:!1,usage:[fe(),ct(),pt()],options:{...Le(),...Pe}})}async function Fe(e,t){if(e===null)return ve(ut`
19
23
  @import 'tailwindcss';
20
- `,{base:t});let n=ve.resolve(t,e),i=await rt.readFile(n,"utf8");return Re(i,{base:ve.dirname(n)})}function Ae(e){return e.split(/\r?\n/g).map(t=>t.trim()).filter(t=>t.length>0)}function mt(e){if(e==="text"||e==="json"||e==="jsonl")return e;throw new Error(`Invalid value for --format: ${e}`)}function ht(e){return{exitCode:1,stdout:ke()??"",stderr:e}}function gt(e){let t=e.trim();return t.length===0?[]:Oe(t," ").map(n=>n.trim()).filter(n=>n.length>0)}function wt(e,t){let n=gt(t);return n=e.canonicalizeCandidates(n,{collapse:!0,logicalToPhysical:!0}),yt(e.getClassOrder(n)).join(" ")}function Fe(e,t){let n=wt(e,t);return{input:t,output:n,changed:n!==t}}function bt(e,t){let n=" ".repeat(t);return e.split(`
24
+ `,{base:t});let n=Ae.resolve(t,e),i=await at.readFile(n,"utf8");return ve(i,{base:Ae.dirname(n)})}function Ne(e){return e.split(/\r?\n/g).map(t=>t.trim()).filter(t=>t.length>0)}function bt(e){if(e==="text"||e==="json"||e==="jsonl")return e;throw new Error(`Invalid value for --format: ${e}`)}function wt(e){return{exitCode:1,stdout:ke()??"",stderr:e}}function yt(e){let t=e.trim();return t.length===0?[]:Re(t," ").map(n=>n.trim()).filter(n=>n.length>0)}function St(e,t){let n=yt(t);return n=e.canonicalizeCandidates(n,{collapse:!0,logicalToPhysical:!0}),xt(e.getClassOrder(n)).join(" ")}function je(e,t){let n=St(e,t);return{input:t,output:n,changed:n!==t}}function Ct(e,t){let n=" ".repeat(t);return e.split(`
21
25
  `).map(i=>n+i).join(`
22
- `)}function yt(e){return e.slice().sort(([t,n],[i,o])=>n===o?ue(t,i):n===null?-1:o===null?1:St(n-o)||ue(t,i)).map(([t])=>t)}function St(e){return e>0n?1:e===0n?0:-1}var B={"--help":{type:"boolean",description:"Display usage information",alias:"-h"}};function pe(e="tailwindcss"){return`${e} [--input input.css] [--output output.css] [--watch] [options\u2026]`}function Be({invalid:e}={}){F({invalid:e,usage:[pe("tailwindcss"),pe("tailwindcss build"),ce()],commands:{build:"Build your CSS",canonicalize:"Canonicalize candidate lists"},options:{...$(),...B}})}async function xt(){let e=process.argv.slice(2),t=e[0],n=v({...$(),...B},e);if(t==="build"){let o=v({...$(),...B},e.slice(1));(process.stdout.isTTY&&e.length===1||o["--help"])&&(F({usage:[pe("tailwindcss build")],options:{...$(),...B}}),process.exit(0)),await le(o);return}if(t==="canonicalize"){let o=await Le({argv:e.slice(1)});o.stdout.length>0&&process.stdout.write(`${o.stdout}
23
- `),o.stderr.length>0&&process.stderr.write(`${o.stderr}
24
- `),process.exitCode=o.exitCode;return}(process.stdout.isTTY&&t===void 0||n["--help"])&&(Be(),process.exit(0)),t&&!t.startsWith("-")&&(Be({invalid:t}),process.exit(1));let i=v({...$(),...B});await le(i)}await xt();
26
+ `)}function xt(e){return e.slice().sort(([t,n],[i,s])=>n===s?de(t,i):n===null?-1:s===null?1:_t(n-s)||de(t,i)).map(([t])=>t)}function _t(e){return e>0n?1:e===0n?0:-1}var F={"--help":{type:"boolean",description:"Display usage information",alias:"-h"}};function me(e="tailwindcss"){return`${e} [--input input.css] [--output output.css] [--watch] [options\u2026]`}function Ue({invalid:e}={}){k({invalid:e,usage:[me("tailwindcss"),me("tailwindcss build"),fe()],commands:{build:"Build your CSS",canonicalize:"Canonicalize candidate lists"},options:{...N(),...F}})}async function Et(){let e=process.argv.slice(2),t=e[0],n=R({...N(),...F},e);if(t==="build"){let s=R({...N(),...F},e.slice(1));(process.stdout.isTTY&&e.length===1||s["--help"])&&(k({usage:[me("tailwindcss build")],options:{...N(),...F}}),process.exit(0)),await pe(s);return}if(t==="canonicalize"){let s=await Be({argv:e.slice(1)});s.stdout.length>0&&process.stdout.write(`${s.stdout}
27
+ `),s.stderr.length>0&&process.stderr.write(`${s.stderr}
28
+ `),process.exitCode=s.exitCode;return}(process.stdout.isTTY&&t===void 0||n["--help"])&&(Ue(),process.exit(0)),t&&!t.startsWith("-")&&(Ue({invalid:t}),process.exit(1));let i=R({...N(),...F});await pe(i)}await Et();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailwindcss/cli",
3
- "version": "4.3.0",
3
+ "version": "4.3.1",
4
4
  "description": "A utility-first CSS framework for rapidly building custom user interfaces.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -24,13 +24,13 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@parcel/watcher": "^2.5.1",
28
- "enhanced-resolve": "^5.21.0",
27
+ "@parcel/watcher": "2.5.1",
28
+ "enhanced-resolve": "5.21.6",
29
29
  "mri": "^1.2.0",
30
30
  "picocolors": "^1.1.1",
31
- "@tailwindcss/node": "4.3.0",
32
- "@tailwindcss/oxide": "4.3.0",
33
- "tailwindcss": "4.3.0"
31
+ "@tailwindcss/oxide": "4.3.1",
32
+ "@tailwindcss/node": "4.3.1",
33
+ "tailwindcss": "4.3.1"
34
34
  },
35
35
  "scripts": {
36
36
  "lint": "tsc --noEmit",