Added new_site as a raw tailwind+html site; initialized npm modules; demo template

This commit is contained in:
BlueFox committed 2025-02-10 07:08:13 +01:00
1 parent 20316167ce
commit 17b3c9e9e9
306 files changed
+70895

No files matched your search

+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Tailwind Labs, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+40
View File
@@ -0,0 +1,40 @@
<p align="center">
<a href="https://tailwindcss.com" target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-dark.svg">
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg">
<img alt="Tailwind CSS" src="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg" width="350" height="70" style="max-width: 100%;">
</picture>
</a>
</p>
<p align="center">
A utility-first CSS framework for rapidly building custom user interfaces.
</p>
<p align="center">
<a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=next" alt="Build Status"></a>
<a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
<a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
<a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
</p>
---
## Documentation
For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
## Community
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
For chatting with others using the framework:
[Join the Tailwind CSS Discord Server](https://discord.gg/7NF8GNe)
## Contributing
If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/next/.github/CONTRIBUTING.md) **before submitting a pull request**.
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env node
var it=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t),rt=t=>{throw TypeError(t)};var V=(t,e,n)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&rt("Object expected");var i,r;n&&(i=e[it("asyncDispose")]),i===void 0&&(i=e[it("dispose")],n&&(r=i)),typeof i!="function"&&rt("Object not disposable"),r&&(i=function(){try{r.call(this)}catch(o){return Promise.reject(o)}}),t.push([n,i,e])}else n&&t.push([n]);return e},q=(t,e,n)=>{var i=typeof SuppressedError=="function"?SuppressedError:function(a,s,l,u){return u=Error(l),u.name="SuppressedError",u.error=a,u.suppressed=s,u},r=a=>e=n?new i(a,e,"An error was suppressed during disposal"):(n=!0,a),o=a=>{for(;a=t.pop();)try{var s=a[1]&&a[1].call(a[2]);if(a[0])return Promise.resolve(s).then(o,l=>(r(l),o()))}catch(l){r(l)}if(n)throw e};return o()};import vt from"mri";function st(t,e=process.argv.slice(2)){for(let[r,o]of e.entries())o==="-"&&(e[r]="__IO_DEFAULT_VALUE__");let n=vt(e);for(let r in n)n[r]==="__IO_DEFAULT_VALUE__"&&(n[r]="-");let i={_:n._};for(let[r,{type:o,alias:a,default:s=o==="boolean"?!1:null}]of Object.entries(t)){if(i[r]=s,a){let l=a.slice(1);n[l]!==void 0&&(i[r]=ot(n[l],o))}{let l=r.slice(2);n[l]!==void 0&&(i[r]=ot(n[l],o))}}return i}function ot(t,e){switch(e){case"string":return B(t);case"boolean":return R(t);case"number":return O(t);case"boolean | string":return R(t)??B(t);case"number | string":return O(t)??B(t);case"boolean | number":return R(t)??O(t);case"boolean | number | string":return R(t)??O(t)??B(t);default:throw new Error(`Unhandled type: ${e}`)}}function R(t){if(t===!0||t===!1)return t;if(t==="true")return!0;if(t==="false")return!1}function O(t){if(typeof t=="number")return t;{let e=Number(t);if(!Number.isNaN(e))return e}}function B(t){return`${t}`}import Nt from"@parcel/watcher";import{compile as zt,env as Lt,Instrumentation as dt}from"@tailwindcss/node";import{clearRequireCache as Ut}from"@tailwindcss/node/require-cache";import{Scanner as Wt}from"@tailwindcss/oxide";import{Features as L,transform as It}from"lightningcss";import{existsSync as Et}from"node:fs";import Q from"node:fs/promises";import C from"node:path";var v=class{#t=new Set([]);queueMacrotask(e){let n=setTimeout(e,0);return this.add(()=>{clearTimeout(n)})}add(e){return this.#t.add(e),()=>{this.#t.delete(e),e()}}async dispose(){for(let e of this.#t)await e();this.#t.clear()}};import Rt from"node:fs";import pt from"node:path";import{stripVTControlCharacters as Ot}from"node:util";import g from"picocolors";import lt from"enhanced-resolve";import At from"node:fs";import{createRequire as Ft}from"node:module";var kt=Ft(import.meta.url).resolve;function at(t){if(typeof globalThis.__tw_resolve=="function"){let e=globalThis.__tw_resolve(t);if(e)return e}return kt(t)}var Yt=lt.ResolverFactory.createResolver({fileSystem:new lt.CachedInputFileSystem(At,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"]});function ut(t){let e=typeof t=="number"?BigInt(t):t;return e<1000n?`${e}ns`:(e/=1000n,e<1000n?`${e}\xB5s`:(e/=1000n,e<1000n?`${e}ms`:(e/=1000n,e<60n?`${e}s`:(e/=60n,e<60n?`${e}m`:(e/=60n,e<24n?`${e}h`:(e/=24n,`${e}d`))))))}var D={indent:2};function A(){return`${g.italic(g.bold(g.blue("\u2248")))} tailwindcss ${g.blue(`v${Bt()}`)}`}function N(t){return`${g.dim(g.blue("`"))}${g.blue(t)}${g.dim(g.blue("`"))}`}function ct(t,e=process.cwd(),{preferAbsoluteIfShorter:n=!0}={}){let i=pt.relative(e,t);return i.startsWith("..")||(i=`.${pt.sep}${i}`),n&&i.length>t.length?t:i}function K(t,e){let n=t.split(" "),i=[],r="",o=0;for(let a of n){let s=Ot(a).length;o+s+1>e&&(i.push(r),r="",o=0),r+=(o?" ":"")+a,o+=s+(o?1:0)}return o&&i.push(r),i}function z(t){let e=ut(t);return t<=50*1e6?g.green(e):t<=300*1e6?g.blue(e):t<=1e3*1e6?g.yellow(e):g.red(e)}function F(t,e=0){return`${" ".repeat(e+D.indent)}${t}`}function w(t=""){process.stderr.write(`${t}
`)}function d(t=""){process.stdout.write(`${t}
`)}function Bt(){if(typeof globalThis.__tw_version=="string")return globalThis.__tw_version;let{version:t}=JSON.parse(Rt.readFileSync(at("tailwindcss/package.json"),"utf-8"));return t}import G from"node:fs/promises";import Dt from"node:path";function J(){return new Promise((t,e)=>{let n="";process.stdin.on("data",i=>{n+=i}),process.stdin.on("end",()=>t(n)),process.stdin.on("error",i=>e(i))})}async function ft(t,e){try{if(await G.readFile(t,"utf8")===e)return}catch{}await G.mkdir(Dt.dirname(t),{recursive:!0}),await G.writeFile(t,e,"utf8")}var mt=String.raw,p=Lt.DEBUG;function U(){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",alias:"-w"},"--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:"."}}}async function ht(t){try{return await t()}catch(e){e instanceof Error&&w(e.toString()),process.exit(1)}}async function bt(t){var Z=[];try{let e=V(Z,new dt);p&&e.start("[@tailwindcss/cli] (initial build)");let n=C.resolve(t["--cwd"]);t["--output"]&&t["--output"]!=="-"&&(t["--output"]=C.resolve(n,t["--output"]));t["--input"]&&t["--input"]!=="-"&&(t["--input"]=C.resolve(n,t["--input"]),Et(t["--input"])||(w(A()),w(),w(`Specified input file ${N(ct(t["--input"]))} does not exist.`),process.exit(1)));let i=process.hrtime.bigint();let r=t["--input"]?t["--input"]==="-"?await J():await Q.readFile(t["--input"],"utf-8"):mt`
@import 'tailwindcss';
`;let o={css:"",optimizedCss:""};async function a(S,b,m){let x=S;if(b["--minify"]||b["--optimize"])if(S!==o.css){p&&m.start("Optimize CSS");let $=Pt(S,{file:b["--input"]??"input.css",minify:b["--minify"]??!1});p&&m.end("Optimize CSS"),o.css=S,o.optimizedCss=$,x=$}else x=o.optimizedCss;p&&m.start("Write output"),b["--output"]&&b["--output"]!=="-"?await ft(b["--output"],x):d(x),p&&m.end("Write output")}let s=t["--input"]&&t["--input"]!=="-"?C.resolve(t["--input"]):null;let l=s?C.dirname(s):process.cwd();let u=s?[s]:[];async function f(S,b){p&&b.start("Setup compiler");let m=await zt(S,{base:l,onDependency(E){u.push(E)}}),x=(m.root==="none"?[]:m.root===null?[{base:n,pattern:"**/*"}]:[m.root]).concat(m.globs),$=new Wt({sources:x});return p&&b.end("Setup compiler"),[m,$]}let[y,h]=await ht(()=>f(r,e));if(t["--watch"]){let S=await yt(gt(h),async function b(m){try{var x=[];try{if(m.length===1&&m[0]===t["--output"])return;let c=V(x,new dt);p&&c.start("[@tailwindcss/cli] (watcher)");let tt=process.hrtime.bigint();let et=[];let P="incremental";let nt=u;for(let T of m){if(nt.includes(T)){P="full";break}et.push({file:T,extension:C.extname(T).slice(1)})}let j="";if(P==="full"){let T=t["--input"]?t["--input"]==="-"?await J():await Q.readFile(t["--input"],"utf-8"):mt`
@import 'tailwindcss';
`;Ut(nt),u=s?[s]:[],[y,h]=await f(T,c),p&&c.start("Scan for candidates");let M=h.scan();p&&c.end("Scan for candidates"),p&&c.start("Setup new watchers");let Ct=await yt(gt(h),b);p&&c.end("Setup new watchers"),p&&c.start("Cleanup old watchers"),await S(),p&&c.end("Cleanup old watchers"),S=Ct,p&&c.start("Build CSS"),j=y.build(M),p&&c.end("Build CSS")}else if(P==="incremental"){p&&c.start("Scan for candidates");let T=h.scanFiles(et);if(p&&c.end("Scan for candidates"),T.length<=0){let M=process.hrtime.bigint();w(`Done in ${z(M-tt)}`);return}p&&c.start("Build CSS"),j=y.build(T),p&&c.end("Build CSS")}await a(j,t,c);let $t=process.hrtime.bigint();w(`Done in ${z($t-tt)}`)}catch($){var E=$,_t=!0}finally{q(x,E,_t)}}catch(c){c instanceof Error&&w(c.toString())}});t["--watch"]!=="always"&&process.stdin.on("end",()=>{S().then(()=>process.exit(0),()=>process.exit(1))}),process.stdin.resume()}p&&e.start("Scan for candidates");let W=h.scan();p&&e.end("Scan for candidates");p&&e.start("Build CSS");let k=await ht(()=>y.build(W));p&&e.end("Build CSS");await a(k,t,e);let I=process.hrtime.bigint();w(A());w();w(`Done in ${z(I-i)}`)}catch(St){var xt=St,Tt=!0}finally{q(Z,xt,Tt)}}function gt(t){return t.globs.flatMap(e=>e.pattern[0]==="!"?[]:e.pattern===""?[]:e.base)}async function yt(t,e){t=t.sort((s,l)=>s.length-l.length);let n=[];for(let s=0;s<t.length;++s)for(let l=0;l<s;++l)t[s].startsWith(`${t[l]}/`)&&n.push(t[s]);t=t.filter(s=>!n.includes(s));let i=new v,r=new Set,o=new v;async function a(){await o.dispose(),o.queueMacrotask(()=>{e(Array.from(r)),r.clear()})}for(let s of t){let{unsubscribe:l}=await Nt.subscribe(s,async(u,f)=>{if(u){console.error(u);return}await Promise.all(f.map(async y=>{if(y.type==="delete")return;let h=null;try{h=await Q.lstat(y.path)}catch{}!h?.isFile()&&!h?.isSymbolicLink()||r.add(y.path)})),await a()});i.add(l)}return async()=>{await i.dispose(),await o.dispose()}}function Pt(t,{file:e="input.css",minify:n=!1}={}){function i(r){return It({filename:e,code:r,minify:n,sourceMap:!1,drafts:{customMedia:!0},nonStandard:{deepSelectorCombinator:!0},include:L.Nesting,exclude:L.LogicalProperties|L.DirSelector|L.LightDark,targets:{safari:16<<16|1024,ios_saf:16<<16|1024,firefox:8388608,chrome:7274496},errorRecovery:!0}).code}return i(i(Buffer.from(t))).toString()}import _ from"picocolors";function Y({invalid:t,usage:e,options:n}){let i=process.stdout.columns;if(d(A()),t&&(d(),d(`${_.dim("Invalid command:")} ${t}`)),e&&e.length>0){d(),d(_.dim("Usage:"));for(let[r,o]of e.entries()){let a=o.slice(0,o.indexOf("[")),s=o.slice(o.indexOf("["));s=s.replace(/\[.*?\]/g,f=>_.dim(f));let u=K(s,i-D.indent-a.length-1);u.length>1&&r!==0&&d(),d(F(`${a}${u.shift()}`));for(let f of u)d(F(f,a.length))}}if(n){let r=0;for(let{alias:l}of Object.values(n))l&&(r=Math.max(r,l.length));let o=[],a=0;for(let[l,{alias:u}]of Object.entries(n)){let f=[u&&`${u.padStart(r)}`,u?l:" ".repeat(r+2)+l].filter(Boolean).join(", ");o.push(f),a=Math.max(a,f.length)}d(),d(_.dim("Options:"));let s=8;for(let{description:l,default:u=null}of Object.values(n)){let f=o.shift(),y=s+(a-f.length),h=2,W=i-f.length-y-h-D.indent,k=K(u!==null?`${l} ${_.dim(`[default:\u202F${N(`${u}`)}]`)}`:l,W);d(F(`${_.blue(f)} ${_.dim(_.gray("\xB7")).repeat(y)} ${k.shift()}`));for(let I of k)d(F(`${" ".repeat(f.length+y+h)}${I}`))}}}var H={"--help":{type:"boolean",description:"Display usage information",alias:"-h"}},X=st({...U(),...H}),wt=X._[0];wt&&(Y({invalid:wt,usage:["tailwindcss [options]"],options:{...U(),...H}}),process.exit(1));(process.stdout.isTTY&&process.argv[2]===void 0||X["--help"])&&(Y({usage:["tailwindcss [--input input.css] [--output output.css] [--watch] [options\u2026]"],options:{...U(),...H}}),process.exit(0));bt(X);
+41
View File
@@ -0,0 +1,41 @@
{
"name": "@tailwindcss/cli",
"version": "4.0.5",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/tailwindlabs/tailwindcss.git",
"directory": "packages/@tailwindcss-cli"
},
"bugs": "https://github.com/tailwindlabs/tailwindcss/issues",
"homepage": "https://tailwindcss.com",
"bin": {
"tailwindcss": "./dist/index.mjs"
},
"exports": {
"./package.json": "./package.json"
},
"files": [
"dist"
],
"publishConfig": {
"provenance": true,
"access": "public"
},
"dependencies": {
"@parcel/watcher": "^2.5.1",
"enhanced-resolve": "^5.18.0",
"lightningcss": "^1.29.1",
"mri": "^1.2.0",
"picocolors": "^1.1.1",
"@tailwindcss/node": "^4.0.5",
"@tailwindcss/oxide": "^4.0.5",
"tailwindcss": "4.0.5"
},
"scripts": {
"lint": "tsc --noEmit",
"build": "tsup-node",
"dev": "pnpm run build -- --watch"
}
}
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Tailwind Labs, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+40
View File
@@ -0,0 +1,40 @@
<p align="center">
<a href="https://tailwindcss.com" target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-dark.svg">
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg">
<img alt="Tailwind CSS" src="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg" width="350" height="70" style="max-width: 100%;">
</picture>
</a>
</p>
<p align="center">
A utility-first CSS framework for rapidly building custom user interfaces.
</p>
<p align="center">
<a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=next" alt="Build Status"></a>
<a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
<a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
<a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
</p>
---
## Documentation
For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
## Community
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
For chatting with others using the framework:
[Join the Tailwind CSS Discord Server](https://discord.gg/7NF8GNe)
## Contributing
If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/next/.github/CONTRIBUTING.md) **before submitting a pull request**.
+5
View File
@@ -0,0 +1,5 @@
import { ResolveHook } from 'node:module';
declare let resolve: ResolveHook;
export { resolve };
+1
View File
@@ -0,0 +1 @@
import{isBuiltin as i}from"node:module";var o=async(a,e,u)=>{let r=await u(a,e);if(r.url===import.meta.url||i(r.url)||!e.parentURL)return r;let t=new URL(e.parentURL).searchParams.get("id");if(t===null)return r;let l=new URL(r.url);return l.searchParams.set("id",t),{...r,url:`${l}`}};export{o as resolve};
+117
View File
@@ -0,0 +1,117 @@
import { Candidate, Variant } from './candidate';
import { compileAstNodes } from './compile';
import { ClassEntry, VariantEntry } from './intellisense';
import { Theme } from './theme';
import { Utilities } from './utilities';
import { Variants } from './variants';
import { Features } from 'tailwindcss';
export { Features } from 'tailwindcss';
declare const DEBUG: boolean;
declare const env_DEBUG: typeof DEBUG;
declare namespace env {
export { env_DEBUG as DEBUG };
}
type DesignSystem = {
theme: Theme;
utilities: Utilities;
variants: Variants;
invalidCandidates: Set<string>;
important: boolean;
getClassOrder(classes: string[]): [string, bigint | null][];
getClassList(): ClassEntry[];
getVariants(): VariantEntry[];
parseCandidate(candidate: string): Readonly<Candidate>[];
parseVariant(variant: string): Readonly<Variant> | null;
compileAstNodes(candidate: Candidate): ReturnType<typeof compileAstNodes>;
getVariantOrder(): Map<Variant, number>;
resolveThemeValue(path: string): string | undefined;
trackUsedVariables(raw: string): void;
candidatesToCss(classes: string[]): (string | null)[];
};
type StyleRule = {
kind: 'rule';
selector: string;
nodes: AstNode[];
};
type AtRule = {
kind: 'at-rule';
name: string;
params: string;
nodes: AstNode[];
};
type Declaration = {
kind: 'declaration';
property: string;
value: string | undefined;
important: boolean;
};
type Comment = {
kind: 'comment';
value: string;
};
type Context = {
kind: 'context';
context: Record<string, string | boolean>;
nodes: AstNode[];
};
type AtRoot = {
kind: 'at-root';
nodes: AstNode[];
};
type AstNode = StyleRule | AtRule | Declaration | Comment | Context | AtRoot;
type Resolver = (id: string, base: string) => Promise<string | false | undefined>;
interface CompileOptions {
base: string;
onDependency: (path: string) => void;
shouldRewriteUrls?: boolean;
customCssResolver?: Resolver;
customJsResolver?: Resolver;
}
declare function compileAst(ast: AstNode[], options: CompileOptions): Promise<{
globs: {
base: string;
pattern: string;
}[];
root: "none" | {
base: string;
pattern: string;
} | null;
features: Features;
build(candidates: string[]): AstNode[];
}>;
declare function compile(css: string, options: CompileOptions): Promise<{
globs: {
base: string;
pattern: string;
}[];
root: "none" | {
base: string;
pattern: string;
} | null;
features: Features;
build(candidates: string[]): string;
}>;
declare function __unstable__loadDesignSystem(css: string, { base }: {
base: string;
}): Promise<DesignSystem>;
declare class Instrumentation implements Disposable {
#private;
private defaultFlush;
constructor(defaultFlush?: (message: string) => undefined);
hit(label: string): void;
start(label: string): void;
end(label: string): void;
reset(): void;
report(flush?: (message: string) => undefined): void;
[Symbol.dispose](): void;
}
declare function normalizePath(originalPath: string): string;
export { Instrumentation, __unstable__loadDesignSystem, compile, compileAst, env, normalizePath };
+121
View File
@@ -0,0 +1,121 @@
import { Candidate, Variant } from './candidate';
import { compileAstNodes } from './compile';
import { ClassEntry, VariantEntry } from './intellisense';
import { Theme } from './theme';
import { Utilities } from './utilities';
import { Variants } from './variants';
import { Features } from 'tailwindcss';
export { Features } from 'tailwindcss';
declare const DEBUG: boolean;
declare const env_DEBUG: typeof DEBUG;
declare namespace env {
export { env_DEBUG as DEBUG };
}
type DesignSystem = {
theme: Theme;
utilities: Utilities;
variants: Variants;
invalidCandidates: Set<string>;
important: boolean;
getClassOrder(classes: string[]): [string, bigint | null][];
getClassList(): ClassEntry[];
getVariants(): VariantEntry[];
parseCandidate(candidate: string): Readonly<Candidate>[];
parseVariant(variant: string): Readonly<Variant> | null;
compileAstNodes(candidate: Candidate): ReturnType<typeof compileAstNodes>;
getVariantOrder(): Map<Variant, number>;
resolveThemeValue(path: string): string | undefined;
trackUsedVariables(raw: string): void;
candidatesToCss(classes: string[]): (string | null)[];
};
type StyleRule = {
kind: 'rule';
selector: string;
nodes: AstNode[];
};
type AtRule = {
kind: 'at-rule';
name: string;
params: string;
nodes: AstNode[];
};
type Declaration = {
kind: 'declaration';
property: string;
value: string | undefined;
important: boolean;
};
type Comment = {
kind: 'comment';
value: string;
};
type Context = {
kind: 'context';
context: Record<string, string | boolean>;
nodes: AstNode[];
};
type AtRoot = {
kind: 'at-root';
nodes: AstNode[];
};
type AstNode = StyleRule | AtRule | Declaration | Comment | Context | AtRoot;
type Resolver = (id: string, base: string) => Promise<string | false | undefined>;
interface CompileOptions {
base: string;
onDependency: (path: string) => void;
shouldRewriteUrls?: boolean;
customCssResolver?: Resolver;
customJsResolver?: Resolver;
}
declare function compileAst(ast: AstNode[], options: CompileOptions): Promise<{
globs: {
base: string;
pattern: string;
}[];
root: "none" | {
base: string;
pattern: string;
} | null;
features: Features;
build(candidates: string[]): AstNode[];
}>;
declare function compile(css: string, options: CompileOptions): Promise<{
globs: {
base: string;
pattern: string;
}[];
root: "none" | {
base: string;
pattern: string;
} | null;
features: Features;
build(candidates: string[]): string;
}>;
declare function __unstable__loadDesignSystem(css: string, { base }: {
base: string;
}): Promise<DesignSystem>;
declare function loadModule(id: string, base: string, onDependency: (path: string) => void, customJsResolver?: Resolver): Promise<{
base: string;
module: any;
}>;
declare class Instrumentation implements Disposable {
#private;
private defaultFlush;
constructor(defaultFlush?: (message: string) => undefined);
hit(label: string): void;
start(label: string): void;
end(label: string): void;
reset(): void;
report(flush?: (message: string) => undefined): void;
[Symbol.dispose](): void;
}
declare function normalizePath(originalPath: string): string;
export { type CompileOptions, Instrumentation, type Resolver, __unstable__loadDesignSystem, compile, compileAst, env, loadModule, normalizePath };
+15
View File
@@ -0,0 +1,15 @@
"use strict";var Ce=Object.create;var N=Object.defineProperty;var Ne=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var ke=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var X=(e,t)=>{for(var r in t)N(e,r,{get:t[r],enumerable:!0})},Z=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of $e(t))!Te.call(e,i)&&i!==r&&N(e,i,{get:()=>t[i],enumerable:!(s=Ne(t,i))||s.enumerable});return e};var g=(e,t,r)=>(r=e!=null?Ce(ke(e)):{},Z(t||!e||!e.__esModule?N(r,"default",{value:e,enumerable:!0}):r,e)),_e=e=>Z(N({},"__esModule",{value:!0}),e);var dt={};X(dt,{Features:()=>h.Features,Instrumentation:()=>Y,__unstable__loadDesignSystem:()=>at,compile:()=>ot,compileAst:()=>lt,env:()=>$,loadModule:()=>q,normalizePath:()=>U});module.exports=_e(dt);var Re=g(require("module")),Ee=require("url");var $={};X($,{DEBUG:()=>K});var K=be(process.env.DEBUG);function be(e){if(e===void 0)return!1;if(e==="true"||e==="1")return!0;if(e==="false"||e==="0")return!1;if(e==="*")return!0;let t=e.split(",").map(r=>r.split(":")[0]);return t.includes("-tailwindcss")?!1:!!t.includes("tailwindcss")}var y=g(require("enhanced-resolve")),ye=require("jiti"),I=g(require("fs")),J=g(require("fs/promises")),v=g(require("path")),H=require("url"),h=require("tailwindcss");var k=g(require("fs/promises")),w=g(require("path")),De=[/import[\s\S]*?['"](.{3,}?)['"]/gi,/import[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi,/export[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi,/require\(['"`](.+)['"`]\)/gi],Oe=[".js",".cjs",".mjs"],Ue=["",".js",".cjs",".mjs",".ts",".cts",".mts",".jsx",".tsx"],Ie=["",".ts",".cts",".mts",".tsx",".js",".cjs",".mjs",".jsx"];async function Pe(e,t){for(let r of t){let s=`${e}${r}`;if((await k.default.stat(s).catch(()=>null))?.isFile())return s}for(let r of t){let s=`${e}/index${r}`;if(await k.default.access(s).then(()=>!0,()=>!1))return s}return null}async function ee(e,t,r,s){let i=Oe.includes(s)?Ue:Ie,l=await Pe(w.default.resolve(r,t),i);if(l===null||e.has(l))return;e.add(l),r=w.default.dirname(l),s=w.default.extname(l);let n=await k.default.readFile(l,"utf-8"),a=[];for(let o of De)for(let u of n.matchAll(o))u[1].startsWith(".")&&a.push(ee(e,u[1],r,s));await Promise.all(a)}async function te(e){let t=new Set;return await ee(t,e,w.default.dirname(e),w.default.extname(e)),Array.from(t)}var z=g(require("path"));var R=92,T=47,_=42,Fe=34,Ke=39,je=58,b=59,x=10,E=32,D=9,re=123,j=125,W=40,se=41,Le=91,Me=93,ie=45,L=64,We=33;function ne(e){e=e.replaceAll(`\r
`,`
`);let t=[],r=[],s=[],i=null,l=null,n="",a="",o;for(let u=0;u<e.length;u++){let f=e.charCodeAt(u);if(f===R)n+=e.slice(u,u+2),u+=1;else if(f===T&&e.charCodeAt(u+1)===_){let c=u;for(let d=u+2;d<e.length;d++)if(o=e.charCodeAt(d),o===R)d+=1;else if(o===_&&e.charCodeAt(d+1)===T){u=d+1;break}let p=e.slice(c,u+1);p.charCodeAt(2)===We&&r.push(ae(p.slice(2,-2)))}else if(f===Ke||f===Fe){let c=u;for(let p=u+1;p<e.length;p++)if(o=e.charCodeAt(p),o===R)p+=1;else if(o===f){u=p;break}else{if(o===b&&e.charCodeAt(p+1)===x)throw new Error(`Unterminated string: ${e.slice(c,p+1)+String.fromCharCode(f)}`);if(o===x)throw new Error(`Unterminated string: ${e.slice(c,p)+String.fromCharCode(f)}`)}n+=e.slice(c,u+1)}else{if((f===E||f===x||f===D)&&(o=e.charCodeAt(u+1))&&(o===E||o===x||o===D))continue;if(f===x){if(n.length===0)continue;o=n.charCodeAt(n.length-1),o!==E&&o!==x&&o!==D&&(n+=" ")}else if(f===ie&&e.charCodeAt(u+1)===ie&&n.length===0){let c="",p=u,d=-1;for(let m=u+2;m<e.length;m++)if(o=e.charCodeAt(m),o===R)m+=1;else if(o===T&&e.charCodeAt(m+1)===_){for(let A=m+2;A<e.length;A++)if(o=e.charCodeAt(A),o===R)A+=1;else if(o===_&&e.charCodeAt(A+1)===T){m=A+1;break}}else if(d===-1&&o===je)d=n.length+m-p;else if(o===b&&c.length===0){n+=e.slice(p,m),u=m;break}else if(o===W)c+=")";else if(o===Le)c+="]";else if(o===re)c+="}";else if((o===j||e.length-1===m)&&c.length===0){u=m-1,n+=e.slice(p,m);break}else(o===se||o===Me||o===j)&&c.length>0&&e[m]===c[c.length-1]&&(c=c.slice(0,-1));let F=M(n,d);if(!F)throw new Error("Invalid custom property, expected a value");i?i.nodes.push(F):t.push(F),n=""}else if(f===b&&n.charCodeAt(0)===L)l=C(n),i?i.nodes.push(l):t.push(l),n="",l=null;else if(f===b&&a[a.length-1]!==")"){let c=M(n);if(!c)throw n.length===0?new Error("Unexpected semicolon"):new Error(`Invalid declaration: \`${n.trim()}\``);i?i.nodes.push(c):t.push(c),n=""}else if(f===re&&a[a.length-1]!==")")a+="}",l=le(n.trim()),i&&i.nodes.push(l),s.push(i),i=l,n="",l=null;else if(f===j&&a[a.length-1]!==")"){if(a==="")throw new Error("Missing opening {");if(a=a.slice(0,-1),n.length>0)if(n.charCodeAt(0)===L)l=C(n),i?i.nodes.push(l):t.push(l),n="",l=null;else{let p=n.indexOf(":");if(i){let d=M(n,p);if(!d)throw new Error(`Invalid declaration: \`${n.trim()}\``);i.nodes.push(d)}}let c=s.pop()??null;c===null&&i&&t.push(i),i=c,n="",l=null}else if(f===W)a+=")",n+="(";else if(f===se){if(a[a.length-1]!==")")throw new Error("Missing opening (");a=a.slice(0,-1),n+=")"}else{if(n.length===0&&(f===E||f===x||f===D))continue;n+=String.fromCharCode(f)}}}if(n.charCodeAt(0)===L&&t.push(C(n)),a.length>0&&i){if(i.kind==="rule")throw new Error(`Missing closing } at ${i.selector}`);if(i.kind==="at-rule")throw new Error(`Missing closing } at ${i.name} ${i.params}`)}return r.length>0?r.concat(t):t}function C(e,t=[]){for(let r=5;r<e.length;r++){let s=e.charCodeAt(r);if(s===E||s===W){let i=e.slice(0,r).trim(),l=e.slice(r).trim();return B(i,l,t)}}return B(e.trim(),"",t)}function M(e,t=e.indexOf(":")){if(t===-1)return null;let r=e.indexOf("!important",t+1);return oe(e.slice(0,t).trim(),e.slice(t+1,r===-1?e.length:r).trim(),r!==-1)}var S=class extends Map{constructor(r){super();this.factory=r}get(r){let s=super.get(r);return s===void 0&&(s=this.factory(r,this),this.set(r,s)),s}};var Be=64;function ze(e,t=[]){return{kind:"rule",selector:e,nodes:t}}function B(e,t="",r=[]){return{kind:"at-rule",name:e,params:t,nodes:r}}function le(e,t=[]){return e.charCodeAt(0)===Be?C(e,t):ze(e,t)}function oe(e,t,r=!1){return{kind:"declaration",property:e,value:t,important:r}}function ae(e){return{kind:"comment",value:e}}function O(e,t,r=[],s={}){for(let i=0;i<e.length;i++){let l=e[i],n=r[r.length-1]??null;if(l.kind==="context"){if(O(l.nodes,t,r,{...s,...l.context})===2)return 2;continue}r.push(l);let a=!1,o=0,u=t(l,{parent:n,context:s,path:r,replaceWith(f){a=!0,Array.isArray(f)?f.length===0?(e.splice(i,1),o=0):f.length===1?(e[i]=f[0],o=1):(e.splice(i,1,...f),o=f.length):(e[i]=f,o=1)}})??0;if(r.pop(),a){u===0?i--:i+=o-1;continue}if(u===2)return 2;if(u!==1&&"nodes"in l){r.push(l);let f=O(l.nodes,t,r,s);if(r.pop(),f===2)return 2}}}function fe(e){function t(s,i=0){let l="",n=" ".repeat(i);if(s.kind==="declaration")l+=`${n}${s.property}: ${s.value}${s.important?" !important":""};
`;else if(s.kind==="rule"){l+=`${n}${s.selector} {
`;for(let a of s.nodes)l+=t(a,i+1);l+=`${n}}
`}else if(s.kind==="at-rule"){if(s.nodes.length===0)return`${n}${s.name} ${s.params};
`;l+=`${n}${s.name}${s.params?` ${s.params} `:" "}{
`;for(let a of s.nodes)l+=t(a,i+1);l+=`${n}}
`}else if(s.kind==="comment")l+=`${n}/*${s.value}*/
`;else if(s.kind==="context"||s.kind==="at-root")return"";return l}let r="";for(let s of e){let i=t(s);i!==""&&(r+=i)}return r}function Ge(e,t){if(typeof e!="string")throw new TypeError("expected path to be a string");if(e==="\\"||e==="/")return"/";var r=e.length;if(r<=1)return e;var s="";if(r>4&&e[3]==="\\"){var i=e[2];(i==="?"||i===".")&&e.slice(0,2)==="\\\\"&&(e=e.slice(2),s="//")}var l=e.split(/[/\\]+/);return t!==!1&&l[l.length-1]===""&&l.pop(),s+l.join("/")}function U(e){let t=Ge(e);return e.startsWith("\\\\")&&t.startsWith("/")&&!t.startsWith("//")?`/${t}`:t}var G=/(?<!@import\s+)(?<=^|[^\w\-\u0080-\uffff])url\((\s*('[^']+'|"[^"]+")\s*|[^'")]+)\)/,ue=/(?<=image-set\()((?:[\w-]{1,256}\([^)]*\)|[^)])*)(?=\))/,He=/(?:gradient|element|cross-fade|image)\(/,Ve=/^\s*data:/i,Je=/^([a-z]+:)?\/\//,qe=/^[A-Z_][.\w-]*\(/i,Qe=/(?:^|\s)(?<url>[\w-]+\([^)]*\)|"[^"]*"|'[^']*'|[^,]\S*[^,])\s*(?:\s(?<descriptor>\w[^,]+))?(?:,|$)/g,Ye=/(?<!\\)"/g,Xe=/(?: |\\t|\\n|\\f|\\r)+/g,Ze=e=>Ve.test(e),et=e=>Je.test(e);async function ce({css:e,base:t,root:r}){if(!e.includes("url(")&&!e.includes("image-set("))return e;let s=ne(e),i=[];function l(n){if(n[0]==="/")return n;let a=z.posix.join(U(t),n),o=z.posix.relative(U(r),a);return o.startsWith(".")||(o="./"+o),o}return O(s,n=>{if(n.kind!=="declaration"||!n.value)return;let a=G.test(n.value),o=ue.test(n.value);if(a||o){let u=o?tt:pe;i.push(u(n.value,l).then(f=>{n.value=f}))}}),i.length&&await Promise.all(i),fe(s)}function pe(e,t){return de(e,G,async r=>{let[s,i]=r;return await me(i.trim(),s,t)})}async function tt(e,t){return await de(e,ue,async r=>{let[,s]=r;return await st(s,async({url:l})=>G.test(l)?await pe(l,t):He.test(l)?l:await me(l,l,t))})}async function me(e,t,r,s="url"){let i="",l=e[0];if((l==='"'||l==="'")&&(i=l,e=e.slice(1,-1)),rt(e))return t;let n=await r(e);return i===""&&n!==encodeURI(n)&&(i='"'),i==="'"&&n.includes("'")&&(i='"'),i==='"'&&n.includes('"')&&(n=n.replace(Ye,'\\"')),`${s}(${i}${n}${i})`}function rt(e,t){return et(e)||Ze(e)||!e[0].match(/[\.a-zA-Z0-9_]/)||qe.test(e)}function st(e,t){return Promise.all(it(e).map(async({url:r,descriptor:s})=>({url:await t({url:r,descriptor:s}),descriptor:s}))).then(nt)}function it(e){let t=e.trim().replace(Xe," ").replace(/\r?\n/,"").replace(/,\s+/,", ").replaceAll(/\s+/g," ").matchAll(Qe);return Array.from(t,({groups:r})=>({url:r?.url?.trim()??"",descriptor:r?.descriptor?.trim()??""})).filter(({url:r})=>!!r)}function nt(e){return e.map(({url:t,descriptor:r})=>t+(r?` ${r}`:"")).join(", ")}async function de(e,t,r){let s,i=e,l="";for(;s=t.exec(i);)l+=i.slice(0,s.index),l+=await r(s),i=i.slice(s.index+s[0].length);return l+=i,l}var mt={};function ve({base:e,onDependency:t,shouldRewriteUrls:r,customCssResolver:s,customJsResolver:i}){return{base:e,async loadModule(l,n){return q(l,n,t,i)},async loadStylesheet(l,n){let a=await we(l,n,t,s);return r&&(a.content=await ce({css:a.content,root:n,base:a.base})),a}}}async function Ae(e,t){if(e.root&&e.root!=="none"){let r=/[*{]/,s=[];for(let l of e.root.pattern.split("/")){if(r.test(l))break;s.push(l)}if(!await J.default.stat(v.default.resolve(t,s.join("/"))).then(l=>l.isDirectory()).catch(()=>!1))throw new Error(`The \`source(${e.root.pattern})\` does not exist`)}}async function lt(e,t){let r=await(0,h.compileAst)(e,ve(t));return await Ae(r,t.base),r}async function ot(e,t){let r=await(0,h.compile)(e,ve(t));return await Ae(r,t.base),r}async function at(e,{base:t}){return(0,h.__unstable__loadDesignSystem)(e,{base:t,async loadModule(r,s){return q(r,s,()=>{})},async loadStylesheet(r,s){return we(r,s,()=>{})}})}async function q(e,t,r,s){if(e[0]!=="."){let a=await xe(e,t,s);if(!a)throw new Error(`Could not resolve '${e}' from '${t}'`);let o=await he((0,H.pathToFileURL)(a).href);return{base:(0,v.dirname)(a),module:o.default??o}}let i=await xe(e,t,s);if(!i)throw new Error(`Could not resolve '${e}' from '${t}'`);let[l,n]=await Promise.all([he((0,H.pathToFileURL)(i).href+"?id="+Date.now()),te(i)]);for(let a of n)r(a);return{base:(0,v.dirname)(i),module:l.default??l}}async function we(e,t,r,s){let i=await ut(e,t,s);if(!i)throw new Error(`Could not resolve '${e}' from '${t}'`);if(r(i),typeof globalThis.__tw_readFile=="function"){let n=await globalThis.__tw_readFile(i,"utf-8");if(n)return{base:v.default.dirname(i),content:n}}let l=await J.default.readFile(i,"utf-8");return{base:v.default.dirname(i),content:l}}var ge=null;async function he(e){if(typeof globalThis.__tw_load=="function"){let t=await globalThis.__tw_load(e);if(t)return t}try{return await import(e)}catch{return ge??=(0,ye.createJiti)(mt.url,{moduleCache:!1,fsCache:!1}),await ge.import(e)}}var Q=["node_modules",...process.env.NODE_PATH?[process.env.NODE_PATH]:[]],ft=y.default.ResolverFactory.createResolver({fileSystem:new y.default.CachedInputFileSystem(I.default,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"],modules:Q});async function ut(e,t,r){if(typeof globalThis.__tw_resolve=="function"Line truncated
`)){this.defaultFlush=t}#r=new S(()=>({value:0}));#t=new S(()=>({value:0n}));#e=[];hit(t){this.#r.get(t).value++}start(t){let r=this.#e.map(i=>i.label).join("//"),s=`${r}${r.length===0?"":"//"}${t}`;this.#r.get(s).value++,this.#t.get(s),this.#e.push({id:s,label:t,namespace:r,value:process.hrtime.bigint()})}end(t){let r=process.hrtime.bigint();if(this.#e[this.#e.length-1].label!==t)throw new Error(`Mismatched timer label: \`${t}\`, expected \`${this.#e[this.#e.length-1].label}\``);let s=this.#e.pop(),i=r-s.value;this.#t.get(s.id).value+=i}reset(){this.#r.clear(),this.#t.clear(),this.#e.splice(0)}report(t=this.defaultFlush){let r=[],s=!1;for(let n=this.#e.length-1;n>=0;n--)this.end(this.#e[n].label);for(let[n,{value:a}]of this.#r.entries()){if(this.#t.has(n))continue;r.length===0&&(s=!0,r.push("Hits:"));let o=n.split("//").length;r.push(`${" ".repeat(o)}${n} ${P(Se(`\xD7 ${a}`))}`)}this.#t.size>0&&s&&r.push(`
Timers:`);let i=-1/0,l=new Map;for(let[n,{value:a}]of this.#t){let o=`${(Number(a)/1e6).toFixed(2)}ms`;l.set(n,o),i=Math.max(i,o.length)}for(let n of this.#t.keys()){let a=n.split("//").length;r.push(`${P(`[${l.get(n).padStart(i," ")}]`)}${" ".repeat(a-1)}${a===1?" ":P(" \u21B3 ")}${n.split("//").pop()} ${this.#r.get(n).value===1?"":P(Se(`\xD7 ${this.#r.get(n).value}`))}`.trimEnd())}t(`
${r.join(`
`)}
`),this.reset()}[Symbol.dispose](){K&&this.report()}};function P(e){return`\x1B[2m${e}\x1B[22m`}function Se(e){return`\x1B[34m${e}\x1B[39m`}process.versions.bun||Re.register?.((0,Ee.pathToFileURL)(require.resolve("@tailwindcss/node/esm-cache-loader")));0&&(module.exports={Features,Instrumentation,__unstable__loadDesignSystem,compile,compileAst,env,loadModule,normalizePath});
+15
View File
@@ -0,0 +1,15 @@
var ve=Object.defineProperty;var Ae=(e,t)=>{for(var r in t)ve(e,r,{get:t[r],enumerable:!0})};import*as k from"node:module";import{pathToFileURL as at}from"node:url";var D={};Ae(D,{DEBUG:()=>b});var b=we(process.env.DEBUG);function we(e){if(e===void 0)return!1;if(e==="true"||e==="1")return!0;if(e==="false"||e==="0")return!1;if(e==="*")return!0;let t=e.split(",").map(r=>r.split(":")[0]);return t.includes("-tailwindcss")?!1:!!t.includes("tailwindcss")}import y from"enhanced-resolve";import{createJiti as Qe}from"jiti";import z from"node:fs";import me from"node:fs/promises";import W,{dirname as oe}from"node:path";import{pathToFileURL as ae}from"node:url";import{__unstable__loadDesignSystem as Ye,compile as Xe,compileAst as Ze,Features as et}from"tailwindcss";import O from"node:fs/promises";import v from"node:path";var Se=[/import[\s\S]*?['"](.{3,}?)['"]/gi,/import[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi,/export[\s\S]*from[\s\S]*?['"](.{3,}?)['"]/gi,/require\(['"`](.+)['"`]\)/gi],Re=[".js",".cjs",".mjs"],Ee=["",".js",".cjs",".mjs",".ts",".cts",".mts",".jsx",".tsx"],Ce=["",".ts",".cts",".mts",".tsx",".js",".cjs",".mjs",".jsx"];async function Ne(e,t){for(let r of t){let s=`${e}${r}`;if((await O.stat(s).catch(()=>null))?.isFile())return s}for(let r of t){let s=`${e}/index${r}`;if(await O.access(s).then(()=>!0,()=>!1))return s}return null}async function H(e,t,r,s){let i=Re.includes(s)?Ee:Ce,l=await Ne(v.resolve(r,t),i);if(l===null||e.has(l))return;e.add(l),r=v.dirname(l),s=v.extname(l);let n=await O.readFile(l,"utf-8"),a=[];for(let o of Se)for(let f of n.matchAll(o))f[1].startsWith(".")&&a.push(H(e,f[1],r,s));await Promise.all(a)}async function V(e){let t=new Set;return await H(t,e,v.dirname(e),v.extname(e)),Array.from(t)}import*as L from"node:path";var A=92,R=47,E=42,$e=34,_e=39,ke=58,C=59,g=10,w=32,N=9,q=123,U=125,F=40,J=41,Te=91,be=93,Q=45,I=64,De=33;function Y(e){e=e.replaceAll(`\r
`,`
`);let t=[],r=[],s=[],i=null,l=null,n="",a="",o;for(let f=0;f<e.length;f++){let u=e.charCodeAt(f);if(u===A)n+=e.slice(f,f+2),f+=1;else if(u===R&&e.charCodeAt(f+1)===E){let c=f;for(let d=f+2;d<e.length;d++)if(o=e.charCodeAt(d),o===A)d+=1;else if(o===E&&e.charCodeAt(d+1)===R){f=d+1;break}let m=e.slice(c,f+1);m.charCodeAt(2)===De&&r.push(ee(m.slice(2,-2)))}else if(u===_e||u===$e){let c=f;for(let m=f+1;m<e.length;m++)if(o=e.charCodeAt(m),o===A)m+=1;else if(o===u){f=m;break}else{if(o===C&&e.charCodeAt(m+1)===g)throw new Error(`Unterminated string: ${e.slice(c,m+1)+String.fromCharCode(u)}`);if(o===g)throw new Error(`Unterminated string: ${e.slice(c,m)+String.fromCharCode(u)}`)}n+=e.slice(c,f+1)}else{if((u===w||u===g||u===N)&&(o=e.charCodeAt(f+1))&&(o===w||o===g||o===N))continue;if(u===g){if(n.length===0)continue;o=n.charCodeAt(n.length-1),o!==w&&o!==g&&o!==N&&(n+=" ")}else if(u===Q&&e.charCodeAt(f+1)===Q&&n.length===0){let c="",m=f,d=-1;for(let p=f+2;p<e.length;p++)if(o=e.charCodeAt(p),o===A)p+=1;else if(o===R&&e.charCodeAt(p+1)===E){for(let h=p+2;h<e.length;h++)if(o=e.charCodeAt(h),o===A)h+=1;else if(o===E&&e.charCodeAt(h+1)===R){p=h+1;break}}else if(d===-1&&o===ke)d=n.length+p-m;else if(o===C&&c.length===0){n+=e.slice(m,p),f=p;break}else if(o===F)c+=")";else if(o===Te)c+="]";else if(o===q)c+="}";else if((o===U||e.length-1===p)&&c.length===0){f=p-1,n+=e.slice(m,p);break}else(o===J||o===be||o===U)&&c.length>0&&e[p]===c[c.length-1]&&(c=c.slice(0,-1));let T=P(n,d);if(!T)throw new Error("Invalid custom property, expected a value");i?i.nodes.push(T):t.push(T),n=""}else if(u===C&&n.charCodeAt(0)===I)l=S(n),i?i.nodes.push(l):t.push(l),n="",l=null;else if(u===C&&a[a.length-1]!==")"){let c=P(n);if(!c)throw n.length===0?new Error("Unexpected semicolon"):new Error(`Invalid declaration: \`${n.trim()}\``);i?i.nodes.push(c):t.push(c),n=""}else if(u===q&&a[a.length-1]!==")")a+="}",l=X(n.trim()),i&&i.nodes.push(l),s.push(i),i=l,n="",l=null;else if(u===U&&a[a.length-1]!==")"){if(a==="")throw new Error("Missing opening {");if(a=a.slice(0,-1),n.length>0)if(n.charCodeAt(0)===I)l=S(n),i?i.nodes.push(l):t.push(l),n="",l=null;else{let m=n.indexOf(":");if(i){let d=P(n,m);if(!d)throw new Error(`Invalid declaration: \`${n.trim()}\``);i.nodes.push(d)}}let c=s.pop()??null;c===null&&i&&t.push(i),i=c,n="",l=null}else if(u===F)a+=")",n+="(";else if(u===J){if(a[a.length-1]!==")")throw new Error("Missing opening (");a=a.slice(0,-1),n+=")"}else{if(n.length===0&&(u===w||u===g||u===N))continue;n+=String.fromCharCode(u)}}}if(n.charCodeAt(0)===I&&t.push(S(n)),a.length>0&&i){if(i.kind==="rule")throw new Error(`Missing closing } at ${i.selector}`);if(i.kind==="at-rule")throw new Error(`Missing closing } at ${i.name} ${i.params}`)}return r.length>0?r.concat(t):t}function S(e,t=[]){for(let r=5;r<e.length;r++){let s=e.charCodeAt(r);if(s===w||s===F){let i=e.slice(0,r).trim(),l=e.slice(r).trim();return K(i,l,t)}}return K(e.trim(),"",t)}function P(e,t=e.indexOf(":")){if(t===-1)return null;let r=e.indexOf("!important",t+1);return Z(e.slice(0,t).trim(),e.slice(t+1,r===-1?e.length:r).trim(),r!==-1)}var x=class extends Map{constructor(r){super();this.factory=r}get(r){let s=super.get(r);return s===void 0&&(s=this.factory(r,this),this.set(r,s)),s}};var Oe=64;function Ue(e,t=[]){return{kind:"rule",selector:e,nodes:t}}function K(e,t="",r=[]){return{kind:"at-rule",name:e,params:t,nodes:r}}function X(e,t=[]){return e.charCodeAt(0)===Oe?S(e,t):Ue(e,t)}function Z(e,t,r=!1){return{kind:"declaration",property:e,value:t,important:r}}function ee(e){return{kind:"comment",value:e}}function $(e,t,r=[],s={}){for(let i=0;i<e.length;i++){let l=e[i],n=r[r.length-1]??null;if(l.kind==="context"){if($(l.nodes,t,r,{...s,...l.context})===2)return 2;continue}r.push(l);let a=!1,o=0,f=t(l,{parent:n,context:s,path:r,replaceWith(u){a=!0,Array.isArray(u)?u.length===0?(e.splice(i,1),o=0):u.length===1?(e[i]=u[0],o=1):(e.splice(i,1,...u),o=u.length):(e[i]=u,o=1)}})??0;if(r.pop(),a){f===0?i--:i+=o-1;continue}if(f===2)return 2;if(f!==1&&"nodes"in l){r.push(l);let u=$(l.nodes,t,r,s);if(r.pop(),u===2)return 2}}}function te(e){function t(s,i=0){let l="",n=" ".repeat(i);if(s.kind==="declaration")l+=`${n}${s.property}: ${s.value}${s.important?" !important":""};
`;else if(s.kind==="rule"){l+=`${n}${s.selector} {
`;for(let a of s.nodes)l+=t(a,i+1);l+=`${n}}
`}else if(s.kind==="at-rule"){if(s.nodes.length===0)return`${n}${s.name} ${s.params};
`;l+=`${n}${s.name}${s.params?` ${s.params} `:" "}{
`;for(let a of s.nodes)l+=t(a,i+1);l+=`${n}}
`}else if(s.kind==="comment")l+=`${n}/*${s.value}*/
`;else if(s.kind==="context"||s.kind==="at-root")return"";return l}let r="";for(let s of e){let i=t(s);i!==""&&(r+=i)}return r}function Ie(e,t){if(typeof e!="string")throw new TypeError("expected path to be a string");if(e==="\\"||e==="/")return"/";var r=e.length;if(r<=1)return e;var s="";if(r>4&&e[3]==="\\"){var i=e[2];(i==="?"||i===".")&&e.slice(0,2)==="\\\\"&&(e=e.slice(2),s="//")}var l=e.split(/[/\\]+/);return t!==!1&&l[l.length-1]===""&&l.pop(),s+l.join("/")}function j(e){let t=Ie(e);return e.startsWith("\\\\")&&t.startsWith("/")&&!t.startsWith("//")?`/${t}`:t}var M=/(?<!@import\s+)(?<=^|[^\w\-\u0080-\uffff])url\((\s*('[^']+'|"[^"]+")\s*|[^'")]+)\)/,re=/(?<=image-set\()((?:[\w-]{1,256}\([^)]*\)|[^)])*)(?=\))/,Pe=/(?:gradient|element|cross-fade|image)\(/,Fe=/^\s*data:/i,Ke=/^([a-z]+:)?\/\//,je=/^[A-Z_][.\w-]*\(/i,Le=/(?:^|\s)(?<url>[\w-]+\([^)]*\)|"[^"]*"|'[^']*'|[^,]\S*[^,])\s*(?:\s(?<descriptor>\w[^,]+))?(?:,|$)/g,Me=/(?<!\\)"/g,We=/(?: |\\t|\\n|\\f|\\r)+/g,Be=e=>Fe.test(e),ze=e=>Ke.test(e);async function se({css:e,base:t,root:r}){if(!e.includes("url(")&&!e.includes("image-set("))return e;let s=Y(e),i=[];function l(n){if(n[0]==="/")return n;let a=L.posix.join(j(t),n),o=L.posix.relative(j(r),a);return o.startsWith(".")||(o="./"+o),o}return $(s,n=>{if(n.kind!=="declaration"||!n.value)return;let a=M.test(n.value),o=re.test(n.value);if(a||o){let f=o?Ge:ie;i.push(f(n.value,l).then(u=>{n.value=u}))}}),i.length&&await Promise.all(i),te(s)}function ie(e,t){return le(e,M,async r=>{let[s,i]=r;return await ne(i.trim(),s,t)})}async function Ge(e,t){return await le(e,re,async r=>{let[,s]=r;return await Ve(s,async({url:l})=>M.test(l)?await ie(l,t):Pe.test(l)?l:await ne(l,l,t))})}async function ne(e,t,r,s="url"){let i="",l=e[0];if((l==='"'||l==="'")&&(i=l,e=e.slice(1,-1)),He(e))return t;let n=await r(e);return i===""&&n!==encodeURI(n)&&(i='"'),i==="'"&&n.includes("'")&&(i='"'),i==='"'&&n.includes('"')&&(n=n.replace(Me,'\\"')),`${s}(${i}${n}${i})`}function He(e,t){return ze(e)||Be(e)||!e[0].match(/[\.a-zA-Z0-9_]/)||je.test(e)}function Ve(e,t){return Promise.all(qe(e).map(async({url:r,descriptor:s})=>({url:await t({url:r,descriptor:s}),descriptor:s}))).then(Je)}function qe(e){let t=e.trim().replace(We," ").replace(/\r?\n/,"").replace(/,\s+/,", ").replaceAll(/\s+/g," ").matchAll(Le);return Array.from(t,({groups:r})=>({url:r?.url?.trim()??"",descriptor:r?.descriptor?.trim()??""})).filter(({url:r})=>!!r)}function Je(e){return e.map(({url:t,descriptor:r})=>t+(r?` ${r}`:"")).join(", ")}async function le(e,t,r){let s,i=e,l="";for(;s=t.exec(i);)l+=i.slice(0,s.index),l+=await r(s),i=i.slice(s.index+s[0].length);return l+=i,l}function pe({base:e,onDependency:t,shouldRewriteUrls:r,customCssResolver:s,customJsResolver:i}){return{base:e,async loadModule(l,n){return ge(l,n,t,i)},async loadStylesheet(l,n){let a=await he(l,n,t,s);return r&&(a.content=await se({css:a.content,root:n,base:a.base})),a}}}async function de(e,t){if(e.root&&e.root!=="none"){let r=/[*{]/,s=[];for(let l of e.root.pattern.split("/")){if(r.test(l))break;s.push(l)}if(!await me.stat(W.resolve(t,s.join("/"))).then(l=>l.isDirectory()).catch(()=>!1))throw new Error(`The \`source(${e.root.pattern})\` does not exist`)}}async function tt(e,t){let r=await Ze(e,pe(t));return await de(r,t.base),r}async function rt(e,t){let r=await Xe(e,pe(t));return await de(r,t.base),r}async function st(e,{base:t}){return Ye(e,{base:t,async loadModule(r,s){return ge(r,s,()=>{})},async loadStylesheet(r,s){return he(r,s,()=>{})}})}async function ge(e,t,r,s){if(e[0]!=="."){let a=await ce(e,t,s);if(!a)throw new Error(`Could not resolve '${e}' from '${t}'`);let o=await fe(ae(a).href);return{base:oe(a),module:o.default??o}}let i=await ce(e,t,s);if(!i)throw new Error(`Could not resolve '${e}' from '${t}'`);let[l,n]=await Promise.all([fe(ae(i).href+"?id="+Date.now()),V(i)]);for(let a of n)r(a);return{base:oe(i),module:l.default??l}}async function he(e,t,r,s){let i=await nt(e,t,s);if(!i)throw new Error(`Could not resolve '${e}' from '${t}'`);if(r(i),typeof globalThis.__tw_readFile=="function"){let n=await globalThis.__tw_readFile(i,"utf-8");if(n)return{base:W.dirname(i),content:n}}let l=await me.readFile(i,"utf-8");return{base:W.dirname(i),content:l}}var ue=null;async function fe(e){if(typeof globalThis.__tw_load=="function"){let t=await globalThis.__tw_load(e);if(t)return t}try{return await import(e)}catch{return ue??=Qe(import.meta.url,{moduleCache:!1,fsCache:!1}),await ue.import(e)}}var G=["node_modules",...process.env.NODE_PATH?[process.env.NODE_PATH]:[]],it=y.ResolverFactory.createResolver({fileSystem:new y.CachedInputFileSystem(z,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"],modules:G});async function nt(e,t,r){if(typeof globalThis.__tw_resolve=="function"){let s=globalThis.__tw_resolve(e,t);if(s)return Promise.resolve(s)}if(r){let s=await r(e,t);if(s)return s}return B(it,e,t)}var lt=y.ResolverFactory.createResolver({fileSystem:new y.CacheLine truncated
`)){this.defaultFlush=t}#r=new x(()=>({value:0}));#t=new x(()=>({value:0n}));#e=[];hit(t){this.#r.get(t).value++}start(t){let r=this.#e.map(i=>i.label).join("//"),s=`${r}${r.length===0?"":"//"}${t}`;this.#r.get(s).value++,this.#t.get(s),this.#e.push({id:s,label:t,namespace:r,value:process.hrtime.bigint()})}end(t){let r=process.hrtime.bigint();if(this.#e[this.#e.length-1].label!==t)throw new Error(`Mismatched timer label: \`${t}\`, expected \`${this.#e[this.#e.length-1].label}\``);let s=this.#e.pop(),i=r-s.value;this.#t.get(s.id).value+=i}reset(){this.#r.clear(),this.#t.clear(),this.#e.splice(0)}report(t=this.defaultFlush){let r=[],s=!1;for(let n=this.#e.length-1;n>=0;n--)this.end(this.#e[n].label);for(let[n,{value:a}]of this.#r.entries()){if(this.#t.has(n))continue;r.length===0&&(s=!0,r.push("Hits:"));let o=n.split("//").length;r.push(`${" ".repeat(o)}${n} ${_(ye(`\xD7 ${a}`))}`)}this.#t.size>0&&s&&r.push(`
Timers:`);let i=-1/0,l=new Map;for(let[n,{value:a}]of this.#t){let o=`${(Number(a)/1e6).toFixed(2)}ms`;l.set(n,o),i=Math.max(i,o.length)}for(let n of this.#t.keys()){let a=n.split("//").length;r.push(`${_(`[${l.get(n).padStart(i," ")}]`)}${" ".repeat(a-1)}${a===1?" ":_(" \u21B3 ")}${n.split("//").pop()} ${this.#r.get(n).value===1?"":_(ye(`\xD7 ${this.#r.get(n).value}`))}`.trimEnd())}t(`
${r.join(`
`)}
`),this.reset()}[Symbol.dispose](){b&&this.report()}};function _(e){return`\x1B[2m${e}\x1B[22m`}function ye(e){return`\x1B[34m${e}\x1B[39m`}if(!process.versions.bun){let e=k.createRequire(import.meta.url);k.register?.(at(e.resolve("@tailwindcss/node/esm-cache-loader")))}export{et as Features,xe as Instrumentation,st as __unstable__loadDesignSystem,rt as compile,tt as compileAst,D as env,j as normalizePath};
+3
View File
@@ -0,0 +1,3 @@
declare function clearRequireCache(files: string[]): void;
export { clearRequireCache };
+1
View File
@@ -0,0 +1 @@
"use strict";var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var n=(r,e)=>{for(var t in e)i(r,t,{get:e[t],enumerable:!0})},u=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of f(e))!l.call(r,c)&&c!==t&&i(r,c,{get:()=>e[c],enumerable:!(o=a(e,c))||o.enumerable});return r};var h=r=>u(i({},"__esModule",{value:!0}),r);var d={};n(d,{clearRequireCache:()=>q});module.exports=h(d);function q(r){for(let e of r)delete require.cache[e]}0&&(module.exports={clearRequireCache});
+44
View File
@@ -0,0 +1,44 @@
{
"name": "@tailwindcss/node",
"version": "4.0.5",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/tailwindlabs/tailwindcss.git",
"directory": "packages/@tailwindcss-node"
},
"bugs": "https://github.com/tailwindlabs/tailwindcss/issues",
"homepage": "https://tailwindcss.com",
"files": [
"dist/"
],
"publishConfig": {
"provenance": true,
"access": "public"
},
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.mjs",
"require": "./dist/index.js"
},
"./require-cache": {
"types": "./dist/require-cache.d.ts",
"default": "./dist/require-cache.js"
},
"./esm-cache-loader": {
"types": "./dist/esm-cache.loader.d.mts",
"default": "./dist/esm-cache.loader.mjs"
}
},
"dependencies": {
"enhanced-resolve": "^5.18.0",
"jiti": "^2.4.2",
"tailwindcss": "4.0.5"
},
"scripts": {
"build": "tsup-node",
"dev": "pnpm run build -- --watch"
}
}
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Tailwind Labs, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+3
View File
@@ -0,0 +1,3 @@
# `@tailwindcss/oxide-linux-x64-gnu`
This is the **x86_64-unknown-linux-gnu** binary for `@tailwindcss/oxide`
+30
View File
@@ -0,0 +1,30 @@
{
"name": "@tailwindcss/oxide-linux-x64-gnu",
"version": "4.0.5",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
"directory": "crates/node/npm/linux-x64-gnu"
},
"os": [
"linux"
],
"cpu": [
"x64"
],
"main": "tailwindcss-oxide.linux-x64-gnu.node",
"files": [
"tailwindcss-oxide.linux-x64-gnu.node"
],
"publishConfig": {
"provenance": true,
"access": "public"
},
"license": "MIT",
"engines": {
"node": ">= 10"
},
"libc": [
"glibc"
]
}
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) Tailwind Labs, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+37
View File
@@ -0,0 +1,37 @@
/* tslint:disable */
/* eslint-disable */
/* auto-generated by NAPI-RS */
export interface ChangedContent {
/** File path to the changed file */
file?: string
/** Contents of the changed file */
content?: string
/** File extension */
extension: string
}
export interface GlobEntry {
/** Base path of the glob */
base: string
/** Glob pattern */
pattern: string
}
export interface ScannerOptions {
/** Glob sources */
sources?: Array<GlobEntry>
}
export interface CandidateWithPosition {
/** The candidate string */
candidate: string
/** The position of the candidate inside the content file */
position: number
}
export declare class Scanner {
constructor(opts: ScannerOptions)
scan(): Array<string>
scanFiles(input: Array<ChangedContent>): Array<string>
getCandidatesWithPositions(input: ChangedContent): Array<CandidateWithPosition>
get files(): Array<string>
get globs(): Array<GlobEntry>
}
+315
View File
@@ -0,0 +1,315 @@
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */
/* auto-generated by NAPI-RS */
const { existsSync, readFileSync } = require('fs')
const { join } = require('path')
const { platform, arch } = process
let nativeBinding = null
let localFileExisted = false
let loadError = null
function isMusl() {
// For Node 10
if (!process.report || typeof process.report.getReport !== 'function') {
try {
const lddPath = require('child_process').execSync('which ldd').toString().trim()
return readFileSync(lddPath, 'utf8').includes('musl')
} catch (e) {
return true
}
} else {
const { glibcVersionRuntime } = process.report.getReport().header
return !glibcVersionRuntime
}
}
switch (platform) {
case 'android':
switch (arch) {
case 'arm64':
localFileExisted = existsSync(join(__dirname, 'tailwindcss-oxide.android-arm64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.android-arm64.node')
} else {
nativeBinding = require('@tailwindcss/oxide-android-arm64')
}
} catch (e) {
loadError = e
}
break
case 'arm':
localFileExisted = existsSync(join(__dirname, 'tailwindcss-oxide.android-arm-eabi.node'))
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.android-arm-eabi.node')
} else {
nativeBinding = require('@tailwindcss/oxide-android-arm-eabi')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Android ${arch}`)
}
break
case 'win32':
switch (arch) {
case 'x64':
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.win32-x64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.win32-x64-msvc.node')
} else {
nativeBinding = require('@tailwindcss/oxide-win32-x64-msvc')
}
} catch (e) {
loadError = e
}
break
case 'ia32':
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.win32-ia32-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.win32-ia32-msvc.node')
} else {
nativeBinding = require('@tailwindcss/oxide-win32-ia32-msvc')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.win32-arm64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.win32-arm64-msvc.node')
} else {
nativeBinding = require('@tailwindcss/oxide-win32-arm64-msvc')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Windows: ${arch}`)
}
break
case 'darwin':
localFileExisted = existsSync(join(__dirname, 'tailwindcss-oxide.darwin-universal.node'))
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.darwin-universal.node')
} else {
nativeBinding = require('@tailwindcss/oxide-darwin-universal')
}
break
} catch {}
switch (arch) {
case 'x64':
localFileExisted = existsSync(join(__dirname, 'tailwindcss-oxide.darwin-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.darwin-x64.node')
} else {
nativeBinding = require('@tailwindcss/oxide-darwin-x64')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.darwin-arm64.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.darwin-arm64.node')
} else {
nativeBinding = require('@tailwindcss/oxide-darwin-arm64')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on macOS: ${arch}`)
}
break
case 'freebsd':
if (arch !== 'x64') {
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
}
localFileExisted = existsSync(join(__dirname, 'tailwindcss-oxide.freebsd-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.freebsd-x64.node')
} else {
nativeBinding = require('@tailwindcss/oxide-freebsd-x64')
}
} catch (e) {
loadError = e
}
break
case 'linux':
switch (arch) {
case 'x64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-x64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-x64-musl.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-x64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-x64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-x64-gnu.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-x64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-arm64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-arm64-musl.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-arm64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-arm64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-arm64-gnu.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-arm64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-arm-musleabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-arm-musleabihf.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-arm-musleabihf')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-arm-gnueabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-arm-gnueabihf.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-arm-gnueabihf')
}
} catch (e) {
loadError = e
}
}
break
case 'riscv64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-riscv64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-riscv64-musl.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-riscv64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-riscv64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-riscv64-gnu.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-riscv64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 's390x':
localFileExisted = existsSync(
join(__dirname, 'tailwindcss-oxide.linux-s390x-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./tailwindcss-oxide.linux-s390x-gnu.node')
} else {
nativeBinding = require('@tailwindcss/oxide-linux-s390x-gnu')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Linux: ${arch}`)
}
break
default:
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
}
if (!nativeBinding) {
if (loadError) {
throw loadError
}
throw new Error(`Failed to load native binding`)
}
const { Scanner } = nativeBinding
module.exports.Scanner = Scanner
+63
View File
@@ -0,0 +1,63 @@
{
"name": "@tailwindcss/oxide",
"version": "4.0.5",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
"directory": "crates/node"
},
"main": "index.js",
"types": "index.d.ts",
"napi": {
"name": "tailwindcss-oxide",
"triples": {
"additional": [
"armv7-linux-androideabi",
"aarch64-linux-android",
"aarch64-apple-darwin",
"aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl",
"armv7-unknown-linux-gnueabihf",
"x86_64-unknown-linux-musl",
"x86_64-unknown-freebsd",
"i686-pc-windows-msvc",
"aarch64-pc-windows-msvc"
]
}
},
"license": "MIT",
"devDependencies": {
"@napi-rs/cli": "^2.18.4"
},
"engines": {
"node": ">= 10"
},
"files": [
"index.js",
"index.d.ts"
],
"publishConfig": {
"provenance": true,
"access": "public"
},
"optionalDependencies": {
"@tailwindcss/oxide-android-arm64": "4.0.5",
"@tailwindcss/oxide-darwin-arm64": "4.0.5",
"@tailwindcss/oxide-darwin-x64": "4.0.5",
"@tailwindcss/oxide-freebsd-x64": "4.0.5",
"@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.5",
"@tailwindcss/oxide-linux-arm64-gnu": "4.0.5",
"@tailwindcss/oxide-linux-arm64-musl": "4.0.5",
"@tailwindcss/oxide-linux-x64-gnu": "4.0.5",
"@tailwindcss/oxide-win32-x64-msvc": "4.0.5",
"@tailwindcss/oxide-linux-x64-musl": "4.0.5",
"@tailwindcss/oxide-win32-arm64-msvc": "4.0.5"
},
"scripts": {
"artifacts": "napi artifacts",
"build": "napi build --platform --release --no-const-enum",
"dev": "cargo watch --quiet --shell 'npm run build'",
"build:debug": "napi build --platform --no-const-enum",
"version": "napi version"
}
}