mirror of
https://github.com/tailwindlabs/tailwindcss.git
synced 2025-12-08 21:36:08 +00:00
This PR improves the internal DX when working with `u8` classification
into a smaller enum. This is done by implementing a `ClassifyBytes` proc
derive macro. The benefit of this is that the DX is much better and
everything you will see here is done at compile time.
Before:
```rs
#[derive(Debug, Clone, Copy, PartialEq)]
enum Class {
ValidStart,
ValidInside,
OpenBracket,
OpenParen,
Slash,
Other,
}
const CLASS_TABLE: [Class; 256] = {
let mut table = [Class::Other; 256];
macro_rules! set {
($class:expr, $($byte:expr),+ $(,)?) => {
$(table[$byte as usize] = $class;)+
};
}
macro_rules! set_range {
($class:expr, $start:literal ..= $end:literal) => {
let mut i = $start;
while i <= $end {
table[i as usize] = $class;
i += 1;
}
};
}
set_range!(Class::ValidStart, b'a'..=b'z');
set_range!(Class::ValidStart, b'A'..=b'Z');
set_range!(Class::ValidStart, b'0'..=b'9');
set!(Class::OpenBracket, b'[');
set!(Class::OpenParen, b'(');
set!(Class::Slash, b'/');
set!(Class::ValidInside, b'-', b'_', b'.');
table
};
```
After:
```rs
#[derive(Debug, Clone, Copy, PartialEq, ClassifyBytes)]
enum Class {
#[bytes_range(b'a'..=b'z', b'A'..=b'Z', b'0'..=b'9')]
ValidStart,
#[bytes(b'-', b'_', b'.')]
ValidInside,
#[bytes(b'[')]
OpenBracket,
#[bytes(b'(')]
OpenParen,
#[bytes(b'/')]
Slash,
#[fallback]
Other,
}
```
Before we were generating a `CLASS_TABLE` that we could access directly,
but now it will be part of the `Class`. This means that the usage has to
change:
```diff
- CLASS_TABLE[cursor.curr as usize]
+ Class::TABLE[cursor.curr as usize]
```
This is slightly worse UX, and this is where another change comes in. We
implemented the `From<u8> for #enum_name` trait inside of the
`ClassifyBytes` derive macro. This allows us to use `.into()` on any
`u8` as long as we are comparing it to a `Class` instance. In our
scenario:
```diff
- Class::TABLE[cursor.curr as usize]
+ cursor.curr.into()
```
Usage wise, this looks something like this:
```diff
while cursor.pos < len {
- match Class::TABLE[cursor.curr as usize] {
+ match cursor.curr.into() {
- Class::Escape => match Class::Table[cursor.next as usize] {
+ Class::Escape => match cursor.next.into() {
// An escaped whitespace character is not allowed
Class::Whitespace => return MachineState::Idle,
// An escaped character, skip ahead to the next character
_ => cursor.advance(),
},
// End of the string
Class::Quote if cursor.curr == end_char => return self.done(start_pos, cursor),
// Any kind of whitespace is not allowed
Class::Whitespace => return MachineState::Idle,
// Everything else is valid
_ => {}
};
cursor.advance()
}
MachineState::Idle
}
}
```
If you manually look at the `Class::TABLE` in your editor for example,
you can see that it is properly generated at compile time.
Given this input:
```rs
#[derive(Clone, Copy, ClassifyBytes)]
enum Class {
#[bytes_range(b'a'..=b'z')]
AlphaLower,
#[bytes_range(b'A'..=b'Z')]
AlphaUpper,
#[bytes(b'@')]
At,
#[bytes(b':')]
Colon,
#[bytes(b'-')]
Dash,
#[bytes(b'.')]
Dot,
#[bytes(b'\0')]
End,
#[bytes(b'!')]
Exclamation,
#[bytes_range(b'0'..=b'9')]
Number,
#[bytes(b'[')]
OpenBracket,
#[bytes(b']')]
CloseBracket,
#[bytes(b'(')]
OpenParen,
#[bytes(b'%')]
Percent,
#[bytes(b'"', b'\'', b'`')]
Quote,
#[bytes(b'/')]
Slash,
#[bytes(b'_')]
Underscore,
#[bytes(b' ', b'\t', b'\n', b'\r', b'\x0C')]
Whitespace,
#[fallback]
Other,
}
```
This is the result:
<img width="1244" alt="image"
src="https://github.com/user-attachments/assets/6ffd6ad3-0b2f-4381-a24c-593e4c72080e"
/>
782 lines
20 KiB
TOML
782 lines
20 KiB
TOML
# This file is automatically @generated by Cargo.
|
|
# It is not intended for manual editing.
|
|
version = 4
|
|
|
|
[[package]]
|
|
name = "aho-corasick"
|
|
version = "1.1.3"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
|
dependencies = [
|
|
"memchr",
|
|
]
|
|
|
|
[[package]]
|
|
name = "arrayvec"
|
|
version = "0.7.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
|
|
|
|
[[package]]
|
|
name = "bexpand"
|
|
version = "1.2.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "045d7d9db8390cf2c59f39f3bd138f1962ef616b096d1b9f5651c7acba19e5a7"
|
|
dependencies = [
|
|
"itertools",
|
|
"nom",
|
|
]
|
|
|
|
[[package]]
|
|
name = "bitflags"
|
|
version = "2.6.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
|
|
|
[[package]]
|
|
name = "bstr"
|
|
version = "1.11.3"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0"
|
|
dependencies = [
|
|
"memchr",
|
|
"regex-automata 0.4.8",
|
|
"serde",
|
|
]
|
|
|
|
[[package]]
|
|
name = "cfg-if"
|
|
version = "1.0.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
|
|
[[package]]
|
|
name = "classification-macros"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "convert_case"
|
|
version = "0.6.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
|
|
dependencies = [
|
|
"unicode-segmentation",
|
|
]
|
|
|
|
[[package]]
|
|
name = "crossbeam"
|
|
version = "0.8.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
|
|
dependencies = [
|
|
"crossbeam-channel",
|
|
"crossbeam-deque",
|
|
"crossbeam-epoch",
|
|
"crossbeam-queue",
|
|
"crossbeam-utils",
|
|
]
|
|
|
|
[[package]]
|
|
name = "crossbeam-channel"
|
|
version = "0.5.13"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
|
|
dependencies = [
|
|
"crossbeam-utils",
|
|
]
|
|
|
|
[[package]]
|
|
name = "crossbeam-deque"
|
|
version = "0.8.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
|
|
dependencies = [
|
|
"crossbeam-epoch",
|
|
"crossbeam-utils",
|
|
]
|
|
|
|
[[package]]
|
|
name = "crossbeam-epoch"
|
|
version = "0.9.18"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
|
dependencies = [
|
|
"crossbeam-utils",
|
|
]
|
|
|
|
[[package]]
|
|
name = "crossbeam-queue"
|
|
version = "0.3.11"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
|
|
dependencies = [
|
|
"crossbeam-utils",
|
|
]
|
|
|
|
[[package]]
|
|
name = "crossbeam-utils"
|
|
version = "0.8.20"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
|
|
|
|
[[package]]
|
|
name = "ctor"
|
|
version = "0.2.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "990a40740adf249724a6000c0fc4bd574712f50bb17c2d6f6cec837ae2f0ee75"
|
|
dependencies = [
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "dunce"
|
|
version = "1.0.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
|
|
|
|
[[package]]
|
|
name = "either"
|
|
version = "1.8.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
|
|
|
|
[[package]]
|
|
name = "errno"
|
|
version = "0.3.9"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
|
|
dependencies = [
|
|
"libc",
|
|
"windows-sys 0.52.0",
|
|
]
|
|
|
|
[[package]]
|
|
name = "fast-glob"
|
|
version = "0.4.3"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "0eca69ef247d19faa15ac0156968637440824e5ff22baa5ee0cd35b2f7ea6a0f"
|
|
dependencies = [
|
|
"arrayvec",
|
|
]
|
|
|
|
[[package]]
|
|
name = "fastrand"
|
|
version = "2.1.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
|
|
|
|
[[package]]
|
|
name = "globset"
|
|
version = "0.4.15"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19"
|
|
dependencies = [
|
|
"aho-corasick",
|
|
"bstr",
|
|
"log",
|
|
"regex-automata 0.4.8",
|
|
"regex-syntax 0.8.5",
|
|
]
|
|
|
|
[[package]]
|
|
name = "globwalk"
|
|
version = "0.9.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757"
|
|
dependencies = [
|
|
"bitflags",
|
|
"ignore",
|
|
"walkdir",
|
|
]
|
|
|
|
[[package]]
|
|
name = "ignore"
|
|
version = "0.4.23"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b"
|
|
dependencies = [
|
|
"crossbeam-deque",
|
|
"globset",
|
|
"log",
|
|
"memchr",
|
|
"regex-automata 0.4.8",
|
|
"same-file",
|
|
"walkdir",
|
|
"winapi-util",
|
|
]
|
|
|
|
[[package]]
|
|
name = "itertools"
|
|
version = "0.11.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
|
|
dependencies = [
|
|
"either",
|
|
]
|
|
|
|
[[package]]
|
|
name = "lazy_static"
|
|
version = "1.4.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|
|
|
[[package]]
|
|
name = "libc"
|
|
version = "0.2.159"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
|
|
|
|
[[package]]
|
|
name = "libloading"
|
|
version = "0.8.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
|
|
dependencies = [
|
|
"cfg-if",
|
|
"windows-targets",
|
|
]
|
|
|
|
[[package]]
|
|
name = "linux-raw-sys"
|
|
version = "0.4.14"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
|
|
|
|
[[package]]
|
|
name = "log"
|
|
version = "0.4.22"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
|
|
|
[[package]]
|
|
name = "matchers"
|
|
version = "0.1.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
|
|
dependencies = [
|
|
"regex-automata 0.1.10",
|
|
]
|
|
|
|
[[package]]
|
|
name = "memchr"
|
|
version = "2.7.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
|
|
|
[[package]]
|
|
name = "minimal-lexical"
|
|
version = "0.2.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
|
|
|
[[package]]
|
|
name = "napi"
|
|
version = "2.16.16"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "839ae2ee5e62c6348669c50098b187c08115bd3cced658c9c0bf945fca0fec83"
|
|
dependencies = [
|
|
"bitflags",
|
|
"ctor",
|
|
"napi-derive",
|
|
"napi-sys",
|
|
"once_cell",
|
|
]
|
|
|
|
[[package]]
|
|
name = "napi-build"
|
|
version = "2.1.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "db836caddef23662b94e16bf1f26c40eceb09d6aee5d5b06a7ac199320b69b19"
|
|
|
|
[[package]]
|
|
name = "napi-derive"
|
|
version = "2.16.13"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "7cbe2585d8ac223f7d34f13701434b9d5f4eb9c332cccce8dee57ea18ab8ab0c"
|
|
dependencies = [
|
|
"cfg-if",
|
|
"convert_case",
|
|
"napi-derive-backend",
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "napi-derive-backend"
|
|
version = "1.0.75"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "1639aaa9eeb76e91c6ae66da8ce3e89e921cd3885e99ec85f4abacae72fc91bf"
|
|
dependencies = [
|
|
"convert_case",
|
|
"once_cell",
|
|
"proc-macro2",
|
|
"quote",
|
|
"regex",
|
|
"semver",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "napi-sys"
|
|
version = "2.4.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3"
|
|
dependencies = [
|
|
"libloading",
|
|
]
|
|
|
|
[[package]]
|
|
name = "nom"
|
|
version = "7.1.3"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
|
|
dependencies = [
|
|
"memchr",
|
|
"minimal-lexical",
|
|
]
|
|
|
|
[[package]]
|
|
name = "nu-ansi-term"
|
|
version = "0.46.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
|
|
dependencies = [
|
|
"overload",
|
|
"winapi",
|
|
]
|
|
|
|
[[package]]
|
|
name = "once_cell"
|
|
version = "1.19.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
|
|
|
|
[[package]]
|
|
name = "overload"
|
|
version = "0.1.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
|
|
|
[[package]]
|
|
name = "pin-project-lite"
|
|
version = "0.2.9"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
|
|
|
|
[[package]]
|
|
name = "proc-macro2"
|
|
version = "1.0.86"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
|
|
dependencies = [
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "quote"
|
|
version = "1.0.28"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
]
|
|
|
|
[[package]]
|
|
name = "rayon"
|
|
version = "1.10.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
|
|
dependencies = [
|
|
"either",
|
|
"rayon-core",
|
|
]
|
|
|
|
[[package]]
|
|
name = "rayon-core"
|
|
version = "1.12.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
|
|
dependencies = [
|
|
"crossbeam-deque",
|
|
"crossbeam-utils",
|
|
]
|
|
|
|
[[package]]
|
|
name = "regex"
|
|
version = "1.8.3"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "81ca098a9821bd52d6b24fd8b10bd081f47d39c22778cafaa75a2857a62c6390"
|
|
dependencies = [
|
|
"aho-corasick",
|
|
"memchr",
|
|
"regex-syntax 0.7.2",
|
|
]
|
|
|
|
[[package]]
|
|
name = "regex-automata"
|
|
version = "0.1.10"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
|
|
dependencies = [
|
|
"regex-syntax 0.6.29",
|
|
]
|
|
|
|
[[package]]
|
|
name = "regex-automata"
|
|
version = "0.4.8"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
|
|
dependencies = [
|
|
"aho-corasick",
|
|
"memchr",
|
|
"regex-syntax 0.8.5",
|
|
]
|
|
|
|
[[package]]
|
|
name = "regex-syntax"
|
|
version = "0.6.29"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
|
|
|
|
[[package]]
|
|
name = "regex-syntax"
|
|
version = "0.7.2"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78"
|
|
|
|
[[package]]
|
|
name = "regex-syntax"
|
|
version = "0.8.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
|
|
|
[[package]]
|
|
name = "rustc-hash"
|
|
version = "2.1.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
|
|
|
|
[[package]]
|
|
name = "rustix"
|
|
version = "0.38.37"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
|
|
dependencies = [
|
|
"bitflags",
|
|
"errno",
|
|
"libc",
|
|
"linux-raw-sys",
|
|
"windows-sys 0.52.0",
|
|
]
|
|
|
|
[[package]]
|
|
name = "same-file"
|
|
version = "1.0.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
|
dependencies = [
|
|
"winapi-util",
|
|
]
|
|
|
|
[[package]]
|
|
name = "semver"
|
|
version = "1.0.17"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
|
|
|
|
[[package]]
|
|
name = "serde"
|
|
version = "1.0.163"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2"
|
|
|
|
[[package]]
|
|
name = "sharded-slab"
|
|
version = "0.1.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
|
|
dependencies = [
|
|
"lazy_static",
|
|
]
|
|
|
|
[[package]]
|
|
name = "smallvec"
|
|
version = "1.10.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
|
|
|
|
[[package]]
|
|
name = "syn"
|
|
version = "2.0.18"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "tailwind-oxide"
|
|
version = "0.0.0"
|
|
dependencies = [
|
|
"napi",
|
|
"napi-build",
|
|
"napi-derive",
|
|
"rayon",
|
|
"tailwindcss-oxide",
|
|
]
|
|
|
|
[[package]]
|
|
name = "tailwindcss-oxide"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"bexpand",
|
|
"bstr",
|
|
"classification-macros",
|
|
"crossbeam",
|
|
"dunce",
|
|
"fast-glob",
|
|
"globwalk",
|
|
"ignore",
|
|
"log",
|
|
"rayon",
|
|
"rustc-hash",
|
|
"tempfile",
|
|
"tracing",
|
|
"tracing-subscriber",
|
|
"walkdir",
|
|
]
|
|
|
|
[[package]]
|
|
name = "tempfile"
|
|
version = "3.13.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
|
|
dependencies = [
|
|
"cfg-if",
|
|
"fastrand",
|
|
"once_cell",
|
|
"rustix",
|
|
"windows-sys 0.59.0",
|
|
]
|
|
|
|
[[package]]
|
|
name = "thread_local"
|
|
version = "1.1.7"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
|
|
dependencies = [
|
|
"cfg-if",
|
|
"once_cell",
|
|
]
|
|
|
|
[[package]]
|
|
name = "tracing"
|
|
version = "0.1.40"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
|
|
dependencies = [
|
|
"pin-project-lite",
|
|
"tracing-attributes",
|
|
"tracing-core",
|
|
]
|
|
|
|
[[package]]
|
|
name = "tracing-attributes"
|
|
version = "0.1.27"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "tracing-core"
|
|
version = "0.1.32"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
|
|
dependencies = [
|
|
"once_cell",
|
|
"valuable",
|
|
]
|
|
|
|
[[package]]
|
|
name = "tracing-log"
|
|
version = "0.2.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
|
|
dependencies = [
|
|
"log",
|
|
"once_cell",
|
|
"tracing-core",
|
|
]
|
|
|
|
[[package]]
|
|
name = "tracing-subscriber"
|
|
version = "0.3.18"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
|
|
dependencies = [
|
|
"matchers",
|
|
"nu-ansi-term",
|
|
"once_cell",
|
|
"regex",
|
|
"sharded-slab",
|
|
"smallvec",
|
|
"thread_local",
|
|
"tracing",
|
|
"tracing-core",
|
|
"tracing-log",
|
|
]
|
|
|
|
[[package]]
|
|
name = "unicode-ident"
|
|
version = "1.0.9"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0"
|
|
|
|
[[package]]
|
|
name = "unicode-segmentation"
|
|
version = "1.10.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
|
|
|
|
[[package]]
|
|
name = "valuable"
|
|
version = "0.1.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
|
|
|
[[package]]
|
|
name = "walkdir"
|
|
version = "2.5.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
|
|
dependencies = [
|
|
"same-file",
|
|
"winapi-util",
|
|
]
|
|
|
|
[[package]]
|
|
name = "winapi"
|
|
version = "0.3.9"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
|
dependencies = [
|
|
"winapi-i686-pc-windows-gnu",
|
|
"winapi-x86_64-pc-windows-gnu",
|
|
]
|
|
|
|
[[package]]
|
|
name = "winapi-i686-pc-windows-gnu"
|
|
version = "0.4.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
|
|
|
[[package]]
|
|
name = "winapi-util"
|
|
version = "0.1.5"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
|
dependencies = [
|
|
"winapi",
|
|
]
|
|
|
|
[[package]]
|
|
name = "winapi-x86_64-pc-windows-gnu"
|
|
version = "0.4.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
|
|
|
[[package]]
|
|
name = "windows-sys"
|
|
version = "0.52.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
|
dependencies = [
|
|
"windows-targets",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-sys"
|
|
version = "0.59.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
|
dependencies = [
|
|
"windows-targets",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows-targets"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
|
dependencies = [
|
|
"windows_aarch64_gnullvm",
|
|
"windows_aarch64_msvc",
|
|
"windows_i686_gnu",
|
|
"windows_i686_gnullvm",
|
|
"windows_i686_msvc",
|
|
"windows_x86_64_gnu",
|
|
"windows_x86_64_gnullvm",
|
|
"windows_x86_64_msvc",
|
|
]
|
|
|
|
[[package]]
|
|
name = "windows_aarch64_gnullvm"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
|
|
|
[[package]]
|
|
name = "windows_aarch64_msvc"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
|
|
|
[[package]]
|
|
name = "windows_i686_gnu"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
|
|
|
[[package]]
|
|
name = "windows_i686_gnullvm"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
|
|
|
[[package]]
|
|
name = "windows_i686_msvc"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
|
|
|
[[package]]
|
|
name = "windows_x86_64_gnu"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
|
|
|
[[package]]
|
|
name = "windows_x86_64_gnullvm"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
|
|
|
[[package]]
|
|
name = "windows_x86_64_msvc"
|
|
version = "0.52.6"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|