From dd23e0f029891bb3329cdd0eed6849cdb6a29222 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Mon, 3 Nov 2025 12:31:24 -0500
Subject: [PATCH 001/353] Handle utilities with `1` keys in a JS config
---
.../src/compat/apply-config-to-theme.test.ts | 48 +++++++++++-
.../src/compat/apply-config-to-theme.ts | 73 +++++++++++--------
.../tailwindcss/src/compat/config.test.ts | 68 +++++++++++++++++
3 files changed, 158 insertions(+), 31 deletions(-)
diff --git a/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts b/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
index 83fc2f2c9..3fe171dfc 100644
--- a/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
+++ b/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
@@ -1,7 +1,11 @@
import { describe, expect, test } from 'vitest'
import { buildDesignSystem } from '../design-system'
import { Theme, ThemeOptions } from '../theme'
-import { applyConfigToTheme, keyPathToCssProperty } from './apply-config-to-theme'
+import {
+ applyConfigToTheme,
+ keyPathToCssProperty,
+ keyPathsToCssProperty,
+} from './apply-config-to-theme'
import { resolveConfig } from './config/resolve-config'
test('config values can be merged into the theme', () => {
@@ -213,6 +217,48 @@ describe('keyPathToCssProperty', () => {
})
})
+describe('keyPathsToCssProperty', () => {
+ test.each([
+ // No "1" entries - should return single result
+ [['width', '40', '2/5'], ['width-40-2/5']],
+ [['spacing', '0.5'], ['spacing-0_5']],
+
+ // Single "1" entry before the end - should return two variants
+ [
+ ['fontSize', 'xs', '1', 'lineHeight'],
+ ['text-xs--line-height', 'text-xs-1-line-height'],
+ ],
+
+ // Multiple "1" entries before the end - should only split the last "1"
+ [
+ ['test', '1', 'middle', '1', 'end'],
+ ['test-1-middle--end', 'test-1-middle-1-end'],
+ ],
+
+ // A "1" at the end means everything should be kept as-is
+ [['spacing', '1'], ['spacing-1']],
+
+ // Even when there are other 1s in the path
+ [['test', '1', 'middle', '1'], ['test-1-middle-1']],
+
+ [['colors', 'a', '1', 'DEFAULT'], ['color-a-1']],
+ [
+ ['colors', 'a', '1', 'foo'],
+ ['color-a--foo', 'color-a-1-foo'],
+ ],
+ ])('converts %s to %s', (keyPath, expected) => {
+ expect(keyPathsToCssProperty(keyPath)).toEqual(expected)
+ })
+
+ test('returns empty array for container path', () => {
+ expect(keyPathsToCssProperty(['container', 'sm'])).toEqual([])
+ })
+
+ test('returns empty array for invalid keys', () => {
+ expect(keyPathsToCssProperty(['test', 'invalid@key'])).toEqual([])
+ })
+})
+
test('converts opacity modifiers from decimal to percentage values', () => {
let theme = new Theme()
let design = buildDesignSystem(theme)
diff --git a/packages/tailwindcss/src/compat/apply-config-to-theme.ts b/packages/tailwindcss/src/compat/apply-config-to-theme.ts
index a430f9faa..60f42c3bd 100644
--- a/packages/tailwindcss/src/compat/apply-config-to-theme.ts
+++ b/packages/tailwindcss/src/compat/apply-config-to-theme.ts
@@ -25,10 +25,9 @@ export function applyConfigToTheme(
replacedThemeKeys: Set,
) {
for (let replacedThemeKey of replacedThemeKeys) {
- let name = keyPathToCssProperty([replacedThemeKey])
- if (!name) continue
-
- designSystem.theme.clearNamespace(`--${name}`, ThemeOptions.DEFAULT)
+ for (let name of keyPathsToCssProperty([replacedThemeKey])) {
+ designSystem.theme.clearNamespace(`--${name}`, ThemeOptions.DEFAULT)
+ }
}
for (let [path, value] of themeableValues(theme)) {
@@ -50,14 +49,13 @@ export function applyConfigToTheme(
}
}
- let name = keyPathToCssProperty(path)
- if (!name) continue
-
- designSystem.theme.add(
- `--${name}`,
- '' + value,
- ThemeOptions.INLINE | ThemeOptions.REFERENCE | ThemeOptions.DEFAULT,
- )
+ for (let name of keyPathsToCssProperty(path)) {
+ designSystem.theme.add(
+ `--${name}`,
+ '' + value,
+ ThemeOptions.INLINE | ThemeOptions.REFERENCE | ThemeOptions.DEFAULT,
+ )
+ }
}
// If someone has updated `fontFamily.sans` or `fontFamily.mono` in a JS
@@ -150,8 +148,12 @@ export function themeableValues(config: ResolvedConfig['theme']): [string[], unk
const IS_VALID_KEY = /^[a-zA-Z0-9-_%/\.]+$/
export function keyPathToCssProperty(path: string[]) {
+ return keyPathsToCssProperty(path)[0] ?? null
+}
+
+export function keyPathsToCssProperty(path: string[]): string[] {
// The legacy container component config should not be included in the Theme
- if (path[0] === 'container') return null
+ if (path[0] === 'container') return []
path = path.slice()
@@ -170,32 +172,43 @@ export function keyPathToCssProperty(path: string[]) {
if (path[0] === 'transitionTimingFunction') path[0] = 'ease'
for (let part of path) {
- if (!IS_VALID_KEY.test(part)) return null
+ if (!IS_VALID_KEY.test(part)) return []
}
- return (
- path
- // [1] should move into the nested object tuple. To create the CSS variable
- // name for this, we replace it with an empty string that will result in two
- // subsequent dashes when joined.
- //
- // E.g.:
- // - `fontSize.xs.1.lineHeight` -> `font-size-xs--line-height`
- // - `spacing.1` -> `--spacing-1`
- .map((path, idx, all) => (path === '1' && idx !== all.length - 1 ? '' : path))
+ // Find the position of the last `1` as long as it's not at the end
+ let lastOnePosition = path.lastIndexOf('1')
+ if (lastOnePosition === path.length - 1) lastOnePosition = -1
- // Resolve the key path to a CSS variable segment
+ // Generate two combinations based on tuple access:
+ let paths: string[][] = []
+
+ // Option 1: Replace the last "1" with empty string if it exists
+ //
+ // We place this first as we "prefer" treating this as a tuple access. The exception to this is if
+ // the keypath ends in `DEFAULT` otherwise we'd see a key that ends in a dash like `--color-a-`
+ if (lastOnePosition !== -1 && path.at(-1) !== 'DEFAULT') {
+ let modified = path.slice()
+ modified[lastOnePosition] = ''
+ paths.push(modified)
+ }
+
+ // Option 2: The path as is
+ paths.push(path)
+
+ return paths.map((path) => {
+ // Remove the `DEFAULT` key at the end of a path
+ // We're reading from CSS anyway so it'll be a string
+ if (path.at(-1) === 'DEFAULT') path = path.slice(0, -1)
+
+ // Resolve the key path to a CSS variable segment
+ return path
.map((part) =>
part
.replaceAll('.', '_')
.replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}-${b.toLowerCase()}`),
)
-
- // Remove the `DEFAULT` key at the end of a path
- // We're reading from CSS anyway so it'll be a string
- .filter((part, index) => part !== 'DEFAULT' || index !== path.length - 1)
.join('-')
- )
+ })
}
function isValidThemePrimitive(value: unknown) {
diff --git a/packages/tailwindcss/src/compat/config.test.ts b/packages/tailwindcss/src/compat/config.test.ts
index d86d5304b..94cfd1ad6 100644
--- a/packages/tailwindcss/src/compat/config.test.ts
+++ b/packages/tailwindcss/src/compat/config.test.ts
@@ -297,6 +297,74 @@ test('Variants in CSS overwrite variants from plugins', async () => {
`)
})
+test('A `1` key is treated like a nested theme key *and* a normal theme key', async () => {
+ let input = css`
+ @tailwind utilities;
+ @config "./config.js";
+ `
+
+ let compiler = await compile(input, {
+ loadModule: async () => ({
+ module: {
+ theme: {
+ fontSize: {
+ xs: ['0.5rem', { lineHeight: '0.25rem' }],
+ },
+ colors: {
+ a: {
+ 1: { DEFAULT: '#ffffff', hovered: '#000000' },
+ 2: { DEFAULT: '#000000', hovered: '#c0ffee' },
+ },
+ b: {
+ 1: '#ffffff',
+ 2: '#000000',
+ },
+ },
+ },
+ },
+ base: '/root',
+ path: '',
+ }),
+ })
+
+ expect(
+ compiler.build([
+ 'text-xs',
+
+ 'text-a-1',
+ 'text-a-2',
+ 'text-a-1-hovered',
+ 'text-a-2-hovered',
+ 'text-b-1',
+ 'text-b-2',
+ ]),
+ ).toMatchInlineSnapshot(`
+ ".text-xs {
+ font-size: 0.5rem;
+ line-height: var(--tw-leading, 0.25rem);
+ }
+ .text-a-1 {
+ color: #ffffff;
+ }
+ .text-a-1-hovered {
+ color: #000000;
+ }
+ .text-a-2 {
+ color: #000000;
+ }
+ .text-a-2-hovered {
+ color: #c0ffee;
+ }
+ .text-b-1 {
+ color: #ffffff;
+ }
+ .text-b-2 {
+ color: #000000;
+ }
+ "
+ `)
+})
+
describe('theme callbacks', () => {
test('tuple values from the config overwrite `@theme default` tuple-ish values from the CSS theme', async ({
expect,
From 027097d94e5e1ce833f238d7a3a9d971388953bb Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Mon, 3 Nov 2025 12:37:26 -0500
Subject: [PATCH 002/353] Update changelog
---
CHANGELOG.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2a405a1c4..0e8f259c8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Fixed
+
+- Handle utilities with `1` keys in a JS config ([#19254](https://github.com/tailwindlabs/tailwindcss/pull/19254))
+
### Added
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
From e9c9c4f79db00a7a1dc7a3e2a13ced3b19f55555 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 6 Nov 2025 10:20:36 -0500
Subject: [PATCH 003/353] Release v4.1.17 (#19272)
---
CHANGELOG.md | 14 +++++++++-----
crates/node/npm/android-arm-eabi/package.json | 2 +-
crates/node/npm/android-arm64/package.json | 2 +-
crates/node/npm/darwin-arm64/package.json | 2 +-
crates/node/npm/darwin-x64/package.json | 2 +-
crates/node/npm/freebsd-x64/package.json | 2 +-
crates/node/npm/linux-arm-gnueabihf/package.json | 2 +-
crates/node/npm/linux-arm64-gnu/package.json | 2 +-
crates/node/npm/linux-arm64-musl/package.json | 2 +-
crates/node/npm/linux-x64-gnu/package.json | 2 +-
crates/node/npm/linux-x64-musl/package.json | 2 +-
crates/node/npm/wasm32-wasi/package.json | 2 +-
crates/node/npm/win32-arm64-msvc/package.json | 2 +-
crates/node/npm/win32-x64-msvc/package.json | 2 +-
crates/node/package.json | 2 +-
packages/@tailwindcss-browser/package.json | 2 +-
packages/@tailwindcss-cli/package.json | 2 +-
packages/@tailwindcss-node/package.json | 2 +-
packages/@tailwindcss-postcss/package.json | 2 +-
packages/@tailwindcss-standalone/package.json | 2 +-
packages/@tailwindcss-upgrade/package.json | 2 +-
packages/@tailwindcss-vite/package.json | 2 +-
packages/tailwindcss/package.json | 2 +-
23 files changed, 31 insertions(+), 27 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99b35a7d7..6f3b0b977 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,14 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
-### Fixed
-
-- Substitute `@variant` inside legacy JS APIs ([#19263](https://github.com/tailwindlabs/tailwindcss/pull/19263))
-
### Added
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
+## [4.1.17] - 2025-11-06
+
+### Fixed
+
+- Substitute `@variant` inside legacy JS APIs ([#19263](https://github.com/tailwindlabs/tailwindcss/pull/19263))
+- Prevent occasional crash on Windows when loaded into a worker thread ([#19242](https://github.com/tailwindlabs/tailwindcss/pull/19242))
+
## [4.1.16] - 2025-10-23
### Fixed
@@ -3874,7 +3877,8 @@ No release notes
- Everything!
-[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.16...HEAD
+[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.17...HEAD
+[4.1.17]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.16...v4.1.17
[4.1.16]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.15...v4.1.16
[4.1.15]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.14...v4.1.15
[4.1.14]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.13...v4.1.14
diff --git a/crates/node/npm/android-arm-eabi/package.json b/crates/node/npm/android-arm-eabi/package.json
index c941aad39..f1adb084c 100644
--- a/crates/node/npm/android-arm-eabi/package.json
+++ b/crates/node/npm/android-arm-eabi/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-android-arm-eabi",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/android-arm64/package.json b/crates/node/npm/android-arm64/package.json
index 98368c21c..53de99c88 100644
--- a/crates/node/npm/android-arm64/package.json
+++ b/crates/node/npm/android-arm64/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-android-arm64",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/darwin-arm64/package.json b/crates/node/npm/darwin-arm64/package.json
index 11d4c137f..51a49b205 100644
--- a/crates/node/npm/darwin-arm64/package.json
+++ b/crates/node/npm/darwin-arm64/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-darwin-arm64",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/darwin-x64/package.json b/crates/node/npm/darwin-x64/package.json
index d3a460f5a..46ef28397 100644
--- a/crates/node/npm/darwin-x64/package.json
+++ b/crates/node/npm/darwin-x64/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-darwin-x64",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/freebsd-x64/package.json b/crates/node/npm/freebsd-x64/package.json
index 4a90b1ab2..b52abc69f 100644
--- a/crates/node/npm/freebsd-x64/package.json
+++ b/crates/node/npm/freebsd-x64/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-freebsd-x64",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-arm-gnueabihf/package.json b/crates/node/npm/linux-arm-gnueabihf/package.json
index f1dde6638..b64401cd4 100644
--- a/crates/node/npm/linux-arm-gnueabihf/package.json
+++ b/crates/node/npm/linux-arm-gnueabihf/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-arm-gnueabihf",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-arm64-gnu/package.json b/crates/node/npm/linux-arm64-gnu/package.json
index c94a234fc..b5b464bb0 100644
--- a/crates/node/npm/linux-arm64-gnu/package.json
+++ b/crates/node/npm/linux-arm64-gnu/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-arm64-gnu",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-arm64-musl/package.json b/crates/node/npm/linux-arm64-musl/package.json
index f08112f9f..e59e36952 100644
--- a/crates/node/npm/linux-arm64-musl/package.json
+++ b/crates/node/npm/linux-arm64-musl/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-arm64-musl",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-x64-gnu/package.json b/crates/node/npm/linux-x64-gnu/package.json
index 6c08ff6c6..bd2e7638d 100644
--- a/crates/node/npm/linux-x64-gnu/package.json
+++ b/crates/node/npm/linux-x64-gnu/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-x64-gnu",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-x64-musl/package.json b/crates/node/npm/linux-x64-musl/package.json
index 73a5b3868..fc69e5035 100644
--- a/crates/node/npm/linux-x64-musl/package.json
+++ b/crates/node/npm/linux-x64-musl/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-x64-musl",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/wasm32-wasi/package.json b/crates/node/npm/wasm32-wasi/package.json
index b57e14604..f67f5265b 100644
--- a/crates/node/npm/wasm32-wasi/package.json
+++ b/crates/node/npm/wasm32-wasi/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-wasm32-wasi",
- "version": "4.1.16",
+ "version": "4.1.17",
"cpu": [
"wasm32"
],
diff --git a/crates/node/npm/win32-arm64-msvc/package.json b/crates/node/npm/win32-arm64-msvc/package.json
index b39945151..13853d380 100644
--- a/crates/node/npm/win32-arm64-msvc/package.json
+++ b/crates/node/npm/win32-arm64-msvc/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-win32-arm64-msvc",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/win32-x64-msvc/package.json b/crates/node/npm/win32-x64-msvc/package.json
index 8f437816e..b6f9f768b 100644
--- a/crates/node/npm/win32-x64-msvc/package.json
+++ b/crates/node/npm/win32-x64-msvc/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-win32-x64-msvc",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/package.json b/crates/node/package.json
index b05745eee..043f04f9b 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide",
- "version": "4.1.16",
+ "version": "4.1.17",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/packages/@tailwindcss-browser/package.json b/packages/@tailwindcss-browser/package.json
index 31f1d01ec..fbf1d4f69 100644
--- a/packages/@tailwindcss-browser/package.json
+++ b/packages/@tailwindcss-browser/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/browser",
- "version": "4.1.16",
+ "version": "4.1.17",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"main": "./dist/index.global.js",
diff --git a/packages/@tailwindcss-cli/package.json b/packages/@tailwindcss-cli/package.json
index d07bea635..4a4674f2c 100644
--- a/packages/@tailwindcss-cli/package.json
+++ b/packages/@tailwindcss-cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/cli",
- "version": "4.1.16",
+ "version": "4.1.17",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
diff --git a/packages/@tailwindcss-node/package.json b/packages/@tailwindcss-node/package.json
index 78f3bb439..d9d3ca67c 100644
--- a/packages/@tailwindcss-node/package.json
+++ b/packages/@tailwindcss-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/node",
- "version": "4.1.16",
+ "version": "4.1.17",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
diff --git a/packages/@tailwindcss-postcss/package.json b/packages/@tailwindcss-postcss/package.json
index 6f83e7ae3..5d8da0dd9 100644
--- a/packages/@tailwindcss-postcss/package.json
+++ b/packages/@tailwindcss-postcss/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/postcss",
- "version": "4.1.16",
+ "version": "4.1.17",
"description": "PostCSS plugin for Tailwind CSS, a utility-first CSS framework for rapidly building custom user interfaces",
"license": "MIT",
"repository": {
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index 4260c6708..9f78c0b2c 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/standalone",
- "version": "4.1.16",
+ "version": "4.1.17",
"private": true,
"description": "Standalone CLI for Tailwind CSS",
"license": "MIT",
diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json
index e9ef280a1..a1dfb5ee6 100644
--- a/packages/@tailwindcss-upgrade/package.json
+++ b/packages/@tailwindcss-upgrade/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/upgrade",
- "version": "4.1.16",
+ "version": "4.1.17",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
diff --git a/packages/@tailwindcss-vite/package.json b/packages/@tailwindcss-vite/package.json
index 5d591854d..150e7106b 100644
--- a/packages/@tailwindcss-vite/package.json
+++ b/packages/@tailwindcss-vite/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/vite",
- "version": "4.1.16",
+ "version": "4.1.17",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
diff --git a/packages/tailwindcss/package.json b/packages/tailwindcss/package.json
index a18284c63..45941768a 100644
--- a/packages/tailwindcss/package.json
+++ b/packages/tailwindcss/package.json
@@ -1,6 +1,6 @@
{
"name": "tailwindcss",
- "version": "4.1.16",
+ "version": "4.1.17",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
From 4363426384d98c3545491738b26afd6a0c03e22c Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 6 Nov 2025 16:24:17 -0500
Subject: [PATCH 004/353] =?UTF-8?q?Fix=20validation=20of=20`source(?=
=?UTF-8?q?=E2=80=A6)`=20paths=20(#19274)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes #18833
- [x] Needs tests
Basically we were correctly resolving the path given to `source()`
inside Oxide *but* inside `@tailwindcss/node` when we validated that the
path was a directory we were not.
We incorrectly used the base path of the input file rather than the file
the `source(…)` directive was defined in. This PR fixes that.
---
CHANGELOG.md | 4 ++
integrations/cli/index.test.ts | 59 +++++++++++++++++
integrations/postcss/index.test.ts | 70 ++++++++++++++++++++
integrations/vite/index.test.ts | 80 +++++++++++++++++++++++
packages/@tailwindcss-node/src/compile.ts | 17 ++---
5 files changed, 222 insertions(+), 8 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6f3b0b977..682b66628 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Fixed
+
+- Ensure validation of `source(…)` happens relative to the file it is in ([#19274](https://github.com/tailwindlabs/tailwindcss/pull/19274))
+
### Added
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
diff --git a/integrations/cli/index.test.ts b/integrations/cli/index.test.ts
index be48a2ac4..9b666f4ec 100644
--- a/integrations/cli/index.test.ts
+++ b/integrations/cli/index.test.ts
@@ -1332,6 +1332,65 @@ test(
},
)
+test(
+ 'source(…) and `@source` are relative to the file they are in',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "dependencies": {
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/cli": "workspace:^"
+ }
+ }
+ `,
+ 'index.css': css` @import './project-a/src/index.css'; `,
+
+ 'project-a/src/index.css': css`
+ /* Run auto-content detection in ../../project-b */
+ @import 'tailwindcss/utilities' source('../../project-b');
+
+ /* Explicitly using node_modules in the @source allows git ignored folders */
+ @source '../../project-c';
+ `,
+
+ // Project A is the current folder, but we explicitly configured
+ // `source(project-b)`, therefore project-a should not be included in
+ // the output.
+ 'project-a/src/index.html': html`
+
+ `,
+
+ // Project B is the configured `source(…)`, therefore auto source
+ // detection should include known extensions and folders in the output.
+ 'project-b/src/index.html': html`
+
+ `,
+
+ // Project C should apply auto source detection, therefore known
+ // extensions and folders should be included in the output.
+ 'project-c/src/index.html': html`
+
+ `,
+ },
+ },
+ async ({ fs, exec, spawn, root, expect }) => {
+ await exec('pnpm tailwindcss --input ./index.css --output dist/out.css', { cwd: root })
+
+ let content = await fs.dumpFiles('./dist/*.css')
+
+ expect(content).not.toContain(candidate`content-['project-a/src/index.html']`)
+ expect(content).toContain(candidate`content-['project-b/src/index.html']`)
+ expect(content).toContain(candidate`content-['project-c/src/index.html']`)
+ },
+)
+
test(
'auto source detection disabled',
{
diff --git a/integrations/postcss/index.test.ts b/integrations/postcss/index.test.ts
index dd07fd90e..08ea852f9 100644
--- a/integrations/postcss/index.test.ts
+++ b/integrations/postcss/index.test.ts
@@ -825,3 +825,73 @@ test(
})
},
)
+
+test(
+ 'source(…) and `@source` are relative to the file they are in',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "dependencies": {
+ "postcss": "^8",
+ "postcss-cli": "^10",
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/postcss": "workspace:^"
+ }
+ }
+ `,
+
+ 'postcss.config.js': js`
+ module.exports = {
+ plugins: {
+ '@tailwindcss/postcss': {},
+ },
+ }
+ `,
+
+ 'index.css': css` @import './project-a/src/index.css'; `,
+
+ 'project-a/src/index.css': css`
+ /* Run auto-content detection in ../../project-b */
+ @import 'tailwindcss/utilities' source('../../project-b');
+
+ /* Explicitly using node_modules in the @source allows git ignored folders */
+ @source '../../project-c';
+ `,
+
+ // Project A is the current folder, but we explicitly configured
+ // `source(project-b)`, therefore project-a should not be included in
+ // the output.
+ 'project-a/src/index.html': html`
+
+ `,
+
+ // Project B is the configured `source(…)`, therefore auto source
+ // detection should include known extensions and folders in the output.
+ 'project-b/src/index.html': html`
+
+ `,
+
+ // Project C should apply auto source detection, therefore known
+ // extensions and folders should be included in the output.
+ 'project-c/src/index.html': html`
+
+ `,
+ },
+ },
+ async ({ fs, exec, root, expect }) => {
+ await exec('pnpm postcss ./index.css --output dist/out.css', { cwd: root })
+
+ let content = await fs.dumpFiles('./dist/*.css')
+
+ expect(content).not.toContain(candidate`content-['project-a/src/index.html']`)
+ expect(content).toContain(candidate`content-['project-b/src/index.html']`)
+ expect(content).toContain(candidate`content-['project-c/src/index.html']`)
+ },
+)
diff --git a/integrations/vite/index.test.ts b/integrations/vite/index.test.ts
index ead71b472..91570a6fc 100644
--- a/integrations/vite/index.test.ts
+++ b/integrations/vite/index.test.ts
@@ -730,6 +730,86 @@ describe.each(['postcss', 'lightningcss'])('%s', (transformer) => {
expect(files).toHaveLength(0)
},
)
+
+ test(
+ 'source(…) and `@source` are relative to the file they are in',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "type": "module",
+ "dependencies": {
+ "@tailwindcss/vite": "workspace:^",
+ "tailwindcss": "workspace:^"
+ },
+ "devDependencies": {
+ ${transformer === 'lightningcss' ? `"lightningcss": "^1",` : ''}
+ "vite": "^7"
+ }
+ }
+ `,
+ 'vite.config.ts': ts`
+ import tailwindcss from '@tailwindcss/vite'
+ import { defineConfig } from 'vite'
+
+ export default defineConfig({
+ css: ${transformer === 'postcss' ? '{}' : "{ transformer: 'lightningcss' }"},
+ build: { cssMinify: false },
+ plugins: [tailwindcss()],
+ })
+ `,
+ 'index.html': html`
+
+
+
+
+ `,
+ 'index.css': css` @import './project-a/src/index.css'; `,
+
+ 'project-a/src/index.css': css`
+ /* Run auto-content detection in ../../project-b */
+ @import 'tailwindcss/utilities' source('../../project-b');
+
+ /* Explicitly using node_modules in the @source allows git ignored folders */
+ @source '../../project-c';
+ `,
+
+ // Project A is the current folder, but we explicitly configured
+ // `source(project-b)`, therefore project-a should not be included in
+ // the output.
+ 'project-a/src/index.html': html`
+
+ `,
+
+ // Project B is the configured `source(…)`, therefore auto source
+ // detection should include known extensions and folders in the output.
+ 'project-b/src/index.html': html`
+
+ `,
+
+ // Project C should apply auto source detection, therefore known
+ // extensions and folders should be included in the output.
+ 'project-c/src/index.html': html`
+
+ `,
+ },
+ },
+ async ({ fs, exec, spawn, root, expect }) => {
+ await exec('pnpm vite build', { cwd: root })
+
+ let content = await fs.dumpFiles('./dist/assets/*.css')
+
+ expect(content).not.toContain(candidate`content-['project-a/src/index.html']`)
+ expect(content).toContain(candidate`content-['project-b/src/index.html']`)
+ expect(content).toContain(candidate`content-['project-c/src/index.html']`)
+ },
+ )
})
test(
diff --git a/packages/@tailwindcss-node/src/compile.ts b/packages/@tailwindcss-node/src/compile.ts
index 5ce6299af..ac7cc6f15 100644
--- a/packages/@tailwindcss-node/src/compile.ts
+++ b/packages/@tailwindcss-node/src/compile.ts
@@ -63,10 +63,9 @@ function createCompileOptions({
}
}
-async function ensureSourceDetectionRootExists(
- compiler: { root: Awaited>['root'] },
- base: string,
-) {
+async function ensureSourceDetectionRootExists(compiler: {
+ root: Awaited>['root']
+}) {
// Verify if the `source(…)` path exists (until the glob pattern starts)
if (compiler.root && compiler.root !== 'none') {
let globSymbols = /[*{]/
@@ -80,25 +79,27 @@ async function ensureSourceDetectionRootExists(
}
let exists = await fsPromises
- .stat(path.resolve(base, basePath.join('/')))
+ .stat(path.resolve(compiler.root.base, basePath.join('/')))
.then((stat) => stat.isDirectory())
.catch(() => false)
if (!exists) {
- throw new Error(`The \`source(${compiler.root.pattern})\` does not exist`)
+ throw new Error(
+ `The \`source(${compiler.root.pattern})\` does not exist or is not a directory.`,
+ )
}
}
}
export async function compileAst(ast: AstNode[], options: CompileOptions) {
let compiler = await _compileAst(ast, createCompileOptions(options))
- await ensureSourceDetectionRootExists(compiler, options.base)
+ await ensureSourceDetectionRootExists(compiler)
return compiler
}
export async function compile(css: string, options: CompileOptions) {
let compiler = await _compile(css, createCompileOptions(options))
- await ensureSourceDetectionRootExists(compiler, options.base)
+ await ensureSourceDetectionRootExists(compiler)
return compiler
}
From 5a89571efda7a3218ece005051028d3c3eb02cb5 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Sun, 9 Nov 2025 07:31:49 -0500
Subject: [PATCH 005/353] =?UTF-8?q?Update=20eslint=209.37.0=20=E2=86=92=20?=
=?UTF-8?q?9.39.1=20(minor)=20(#19287)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ eslint (9.37.0 → 9.39.1) ·
[Repo](https://github.com/eslint/eslint) ·
[Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
Release Notes
Bug Fixes
650753e fix: Only pass node to JS lang
visitor methods (#20283 )
(Nicholas C. Zakas)
Documentation
51b51f4 docs: add a section on when to
use extends vs cascading (#20268 )
(Tanuj Kanti)
b44d426 docs: Update README (GitHub
Actions Bot)
Chores
92db329 chore: update @eslint/js version to 9.39.1 (#20284 )
(Francesco Trotta)
c7ebefc chore: package.json update for
@eslint/js release (Jenkins)
61778f6 chore: update
eslint-config-eslint dependency @eslint/js to ^9.39.0 (#20275 )
(renovate[bot])
d9ca2fc ci: Add rangeStrategy to eslint
group in renovate config (#20266 )
(唯然)
009e507 test: fix version tests for
ESLint v10 (#20274 )
(Milos Djermanovic)
Features
cc57d87 feat: update error loc to key in
no-dupe-class-members (#20259 )
(Tanuj Kanti)
126552f feat: update error location in
for-direction and no-dupe-args (#20258 )
(Tanuj Kanti)
167d097 feat: update complexity rule to highlight only static
block header (#20245 )
(jaymarvelz)
Bug Fixes
15f5c7c fix: forward traversal step.args to visitors (#20253 )
(jaymarvelz)
5a1a534 fix: allow JSDoc comments in
object-shorthand rule (#20167 )
(Nitin Kumar)
e86b813 fix: Use more types from
@eslint/core (#20257 )
(Nicholas C. Zakas)
927272d fix: correct Scope typings (#20198 )
(jaymarvelz)
37f76d9 fix: use AST.Program type for Program node (#20244 )
(Francesco Trotta)
ae07f0b fix: unify timing report for
concurrent linting (#20188 )
(jaymarvelz)
b165d47 fix: correct Rule typings (#20199 )
(jaymarvelz)
fb97cda fix: improve error message for
missing fix function in suggestions (#20218 )
(jaymarvelz)
Documentation
d3e81e3 docs: Always recommend to include
a files property (#20158 )
(Percy Ma)
0f0385f docs: use consistent naming
recommendation (#20250 )
(Alex M. Spieslechner)
a3b1456 docs: Update README (GitHub
Actions Bot)
cf5f2dd docs: fix correct tag of no-useless-constructor (#20255 )
(Tanuj Kanti)
10b995c docs: add TS options and examples
for nofunc in no-use-before-define (#20249 )
(Tanuj Kanti)
2584187 docs: remove repetitive word in
comment (#20242 )
(reddaisyy)
637216b docs: update CLI flags migration
instructions (#20238 )
(jaymarvelz)
e7cda3b docs: Update README (GitHub
Actions Bot)
7b9446f docs: handle empty flags sections
on the feature flags page (#20222 )
(sethamus)
Chores
dfe3c1b chore: update @eslint/js version to 9.39.0 (#20270 )
(Francesco Trotta)
2375a6d chore: package.json update for
@eslint/js release (Jenkins)
a1f4e52 chore: update @eslint dependencies (#20265 )
(Francesco Trotta)
c7d3229 chore: update dependency
@eslint/core to ^0.17.0 (#20256 )
(renovate[bot])
27549bc chore: update fuzz testing to not
error if code sample minimizer fails (#20252 )
(Milos Djermanovic)
a1370ee ci: bump actions/setup-node from
5 to 6 (#20230 )
(dependabot[bot])
9e7fad4 chore: add script to
auto-generate eslint:recommended configuration (#20208 )
(唯然)
Features
ce40f74 feat: update complexity rule to only highlight function
header (#20048 )
(Atul Nair)
e37e590 feat: correct no-loss-of-precision false positives with
e notation (#20187 )
(Francesco Trotta)
Bug Fixes
50c3dfd fix: improve type support for
isolated dependencies in pnpm (#20201 )
(Francesco Trotta)
a1f06a3 fix: correct SourceCode typings
(#20114 )
(Pixel998)
Documentation
462675a docs: improve web accessibility
by hiding non-semantic character (#20205 )
(루밀LuMir)
c070e65 docs: correct formatting in no-irregular-whitespace rule documentation
(#20203 )
(루밀LuMir)
b39e71a docs: Update README (GitHub
Actions Bot)
cd39983 docs: move custom-formatters type descriptions to nodejs-api (#20190 )
(Percy Ma)
Chores
d17c795 chore: upgrade @eslint/js@9.38.0
(#20221 )
(Milos Djermanovic)
25d0e33 chore: package.json update for
@eslint/js release (Jenkins)
c82b5ef refactor: Use types from
@eslint/core (#20168 )
(Nicholas C. Zakas)
ff31609 ci: add Node.js 25 to ci.yml (#20220 )
(루밀LuMir)
004577e ci: bump github/codeql-action
from 3 to 4 (#20211 )
(dependabot[bot])
eac71fb test: remove use of nodejsScope option of eslint-scope from tests
(#20206 )
(Milos Djermanovic)
4168a18 chore: fix typo in
legacy-eslint.js (#20202 )
(Sweta Tanwar)
205dbd2 chore: fix typos (#20200 )
(ntnyq)
dbb200e chore: use team member's username
when name is not available in data (#20194 )
(Milos Djermanovic)
8962089 chore: mark deprecated rules as
available until v11.0.0 (#20184 )
(Pixel998)
Does any of this look wrong? Please let us
know.
Commits
See
the full diff on Github . The new version differs by 59 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/nextjs/package.json | 2 +-
playgrounds/v3/package.json | 2 +-
pnpm-lock.yaml | 221 ++++++++++++++++----------------
3 files changed, 112 insertions(+), 113 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index a822b0dd9..af85e1c5d 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -20,7 +20,7 @@
"@types/node": "catalog:",
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.2",
- "eslint": "^9.37.0",
+ "eslint": "^9.39.1",
"eslint-config-next": "^15.5.6",
"typescript": "^5.5.4"
}
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index 121f31e52..424125031 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -19,7 +19,7 @@
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.2",
"autoprefixer": "^10.4.21",
- "eslint": "^9.37.0",
+ "eslint": "^9.39.1",
"eslint-config-next": "^15.5.6",
"typescript": "^5.5.4"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 23f775083..d4c95dcdc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -502,11 +502,11 @@ importers:
specifier: ^19.2.2
version: 19.2.2(@types/react@19.2.2)
eslint:
- specifier: ^9.37.0
- version: 9.37.0(jiti@2.6.1)
+ specifier: ^9.39.1
+ version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^15.5.6
- version: 15.5.6(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
+ version: 15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -539,11 +539,11 @@ importers:
specifier: ^10.4.21
version: 10.4.21(postcss@8.4.47)
eslint:
- specifier: ^9.37.0
- version: 9.37.0(jiti@2.6.1)
+ specifier: ^9.39.1
+ version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^15.5.6
- version: 15.5.6(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
+ version: 15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -1129,32 +1129,32 @@ packages:
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/config-array@0.21.0':
- resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==}
+ '@eslint/config-array@0.21.1':
+ resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/config-helpers@0.4.0':
- resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==}
+ '@eslint/config-helpers@0.4.2':
+ resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/core@0.16.0':
- resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
+ '@eslint/core@0.17.0':
+ resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@3.3.1':
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@9.37.0':
- resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==}
+ '@eslint/js@9.39.1':
+ resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/object-schema@2.1.6':
- resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
+ '@eslint/object-schema@2.1.7':
+ resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/plugin-kit@0.4.0':
- resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==}
+ '@eslint/plugin-kit@0.4.1':
+ resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@humanfs/core@0.19.1':
@@ -3067,8 +3067,8 @@ packages:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@9.37.0:
- resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==}
+ eslint@9.39.1:
+ resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
@@ -5019,26 +5019,26 @@ snapshots:
'@esbuild/win32-x64@0.25.0':
optional: true
- '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.1))':
+ '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))':
dependencies:
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
- '@eslint/config-array@0.21.0':
+ '@eslint/config-array@0.21.1':
dependencies:
- '@eslint/object-schema': 2.1.6
+ '@eslint/object-schema': 2.1.7
debug: 4.4.3
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
- '@eslint/config-helpers@0.4.0':
+ '@eslint/config-helpers@0.4.2':
dependencies:
- '@eslint/core': 0.16.0
+ '@eslint/core': 0.17.0
- '@eslint/core@0.16.0':
+ '@eslint/core@0.17.0':
dependencies:
'@types/json-schema': 7.0.15
@@ -5056,13 +5056,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@9.37.0': {}
+ '@eslint/js@9.39.1': {}
- '@eslint/object-schema@2.1.6': {}
+ '@eslint/object-schema@2.1.7': {}
- '@eslint/plugin-kit@0.4.0':
+ '@eslint/plugin-kit@0.4.1':
dependencies:
- '@eslint/core': 0.16.0
+ '@eslint/core': 0.17.0
levn: 0.4.1
'@humanfs/core@0.19.1': {}
@@ -6058,15 +6058,15 @@ snapshots:
'@types/semver@7.7.1': {}
- '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
'@typescript-eslint/scope-manager': 8.11.0
- '@typescript-eslint/type-utils': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/utils': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/type-utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
'@typescript-eslint/visitor-keys': 8.11.0
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@@ -6076,15 +6076,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
'@typescript-eslint/scope-manager': 8.11.0
- '@typescript-eslint/type-utils': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/utils': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/type-utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.11.0
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@@ -6094,27 +6094,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
'@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4)
'@typescript-eslint/visitor-keys': 8.11.0
debug: 4.4.3
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.11.0
debug: 4.4.3
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
@@ -6125,10 +6125,10 @@ snapshots:
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/visitor-keys': 8.11.0
- '@typescript-eslint/type-utils@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
debug: 4.4.3
ts-api-utils: 1.3.0(typescript@5.5.4)
optionalDependencies:
@@ -6137,10 +6137,10 @@ snapshots:
- eslint
- supports-color
- '@typescript-eslint/type-utils@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/type-utils@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
- '@typescript-eslint/utils': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
debug: 4.4.3
ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies:
@@ -6181,24 +6181,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4)
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/utils@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/utils@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/types': 8.11.0
'@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
transitivePeerDependencies:
- supports-color
- typescript
@@ -6820,19 +6820,19 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@15.5.6(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 15.5.6
'@rushstack/eslint-patch': 1.10.4
- '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/parser': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
- eslint: 9.37.0(jiti@2.6.1)
+ '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1))
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint@9.37.0(jiti@2.6.1))
- eslint-plugin-jsx-a11y: 6.10.1(eslint@9.37.0(jiti@2.6.1))
- eslint-plugin-react: 7.37.2(eslint@9.37.0(jiti@2.6.1))
- eslint-plugin-react-hooks: 5.0.0(eslint@9.37.0(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-react-hooks: 5.0.0(eslint@9.39.1(jiti@2.6.1))
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
@@ -6840,19 +6840,19 @@ snapshots:
- eslint-plugin-import-x
- supports-color
- eslint-config-next@15.5.6(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 15.5.6
'@rushstack/eslint-patch': 1.10.4
- '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/parser': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
- eslint: 9.37.0(jiti@2.6.1)
+ '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1))
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.37.0(jiti@2.6.1))
- eslint-plugin-jsx-a11y: 6.10.1(eslint@9.37.0(jiti@2.6.1))
- eslint-plugin-react: 7.37.2(eslint@9.37.0(jiti@2.6.1))
- eslint-plugin-react-hooks: 5.0.0(eslint@9.37.0(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-react-hooks: 5.0.0(eslint@9.39.1(jiti@2.6.1))
optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
@@ -6868,67 +6868,67 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.3
- eslint: 9.37.0(jiti@2.6.1)
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))
+ eslint: 9.39.1(jiti@2.6.1)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint@9.37.0(jiti@2.6.1))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.3
- eslint: 9.37.0(jiti@2.6.1)
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))
+ eslint: 9.39.1(jiti@2.6.1)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.37.0(jiti@2.6.1))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
- eslint: 9.37.0(jiti@2.6.1)
+ '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1)):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
- eslint: 9.37.0(jiti@2.6.1)
+ '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint@9.37.0(jiti@2.6.1)):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -6937,9 +6937,9 @@ snapshots:
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -6951,13 +6951,13 @@ snapshots:
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.37.0(jiti@2.6.1)):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -6966,9 +6966,9 @@ snapshots:
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.37.0(jiti@2.6.1)))(eslint@9.37.0(jiti@2.6.1))
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -6980,13 +6980,13 @@ snapshots:
string.prototype.trimend: 1.0.8
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.11.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jsx-a11y@6.10.1(eslint@9.37.0(jiti@2.6.1)):
+ eslint-plugin-jsx-a11y@6.10.1(eslint@9.39.1(jiti@2.6.1)):
dependencies:
aria-query: 5.3.2
array-includes: 3.1.8
@@ -6997,7 +6997,7 @@ snapshots:
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
es-iterator-helpers: 1.1.0
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
hasown: 2.0.2
jsx-ast-utils: 3.3.5
language-tags: 1.0.9
@@ -7006,11 +7006,11 @@ snapshots:
safe-regex-test: 1.0.3
string.prototype.includes: 2.0.1
- eslint-plugin-react-hooks@5.0.0(eslint@9.37.0(jiti@2.6.1)):
+ eslint-plugin-react-hooks@5.0.0(eslint@9.39.1(jiti@2.6.1)):
dependencies:
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
- eslint-plugin-react@7.37.2(eslint@9.37.0(jiti@2.6.1)):
+ eslint-plugin-react@7.37.2(eslint@9.39.1(jiti@2.6.1)):
dependencies:
array-includes: 3.1.8
array.prototype.findlast: 1.2.5
@@ -7018,7 +7018,7 @@ snapshots:
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.1.0
- eslint: 9.37.0(jiti@2.6.1)
+ eslint: 9.39.1(jiti@2.6.1)
estraverse: 5.3.0
hasown: 2.0.2
jsx-ast-utils: 3.3.5
@@ -7041,21 +7041,20 @@ snapshots:
eslint-visitor-keys@4.2.1: {}
- eslint@9.37.0(jiti@2.6.1):
+ eslint@9.39.1(jiti@2.6.1):
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
- '@eslint/config-array': 0.21.0
- '@eslint/config-helpers': 0.4.0
- '@eslint/core': 0.16.0
+ '@eslint/config-array': 0.21.1
+ '@eslint/config-helpers': 0.4.2
+ '@eslint/core': 0.17.0
'@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.37.0
- '@eslint/plugin-kit': 0.4.0
+ '@eslint/js': 9.39.1
+ '@eslint/plugin-kit': 0.4.1
'@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.2
'@types/estree': 1.0.8
- '@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
From 5bc90dd2e0e009a6ccc0870367708ca724af23dc Mon Sep 17 00:00:00 2001
From: Ishita SIngh
Date: Mon, 10 Nov 2025 23:59:23 +0530
Subject: [PATCH 006/353] Include filename and line numbers in CSS parse errors
(#19282)
Co-authored-by: Jordan Pittman
---
CHANGELOG.md | 1 +
integrations/cli/index.test.ts | 30 +++++++
packages/tailwindcss/src/css-parser.test.ts | 97 +++++++++++++++++++--
packages/tailwindcss/src/css-parser.ts | 78 ++++++++++++++---
4 files changed, 185 insertions(+), 21 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 682b66628..e44a8358a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Ensure validation of `source(…)` happens relative to the file it is in ([#19274](https://github.com/tailwindlabs/tailwindcss/pull/19274))
+- Include filename and line numbers in CSS parse errors ([#19282](https://github.com/tailwindlabs/tailwindcss/pull/19282))
### Added
diff --git a/integrations/cli/index.test.ts b/integrations/cli/index.test.ts
index 9b666f4ec..5f3b0fcb4 100644
--- a/integrations/cli/index.test.ts
+++ b/integrations/cli/index.test.ts
@@ -1,9 +1,12 @@
import dedent from 'dedent'
import os from 'node:os'
import path from 'node:path'
+import { fileURLToPath } from 'node:url'
import { describe } from 'vitest'
import { candidate, css, html, js, json, test, ts, yaml } from '../utils'
+const __dirname = path.dirname(fileURLToPath(import.meta.url))
+
const STANDALONE_BINARY = (() => {
switch (os.platform()) {
case 'win32':
@@ -2101,6 +2104,33 @@ test(
},
)
+test(
+ 'CSS parse errors should include filename and line number',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "dependencies": {
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/cli": "workspace:^"
+ }
+ }
+ `,
+ 'input.css': css`
+ .test {
+ color: red;
+ */
+ }
+ `,
+ },
+ },
+ async ({ exec, expect }) => {
+ await expect(exec('pnpm tailwindcss --input input.css --output dist/out.css')).rejects.toThrow(
+ /CssSyntaxError: .*input.css:3:3: Invalid declaration: `\*\/`/,
+ )
+ },
+)
+
function withBOM(text: string): string {
return '\uFEFF' + text
}
diff --git a/packages/tailwindcss/src/css-parser.test.ts b/packages/tailwindcss/src/css-parser.test.ts
index 25657d9db..5f0aa2287 100644
--- a/packages/tailwindcss/src/css-parser.test.ts
+++ b/packages/tailwindcss/src/css-parser.test.ts
@@ -8,6 +8,12 @@ describe.each(['Unix', 'Windows'])('Line endings: %s', (lineEndings) => {
return CSS.parse(string.replaceAll(/\r?\n/g, lineEndings === 'Windows' ? '\r\n' : '\n'))
}
+ function parseWithLoc(string: string) {
+ return CSS.parse(string.replaceAll(/\r?\n/g, lineEndings === 'Windows' ? '\r\n' : '\n'), {
+ from: 'input.css',
+ })
+ }
+
describe('comments', () => {
it('should parse a comment and ignore it', () => {
expect(
@@ -1145,7 +1151,20 @@ describe.each(['Unix', 'Windows'])('Line endings: %s', (lineEndings) => {
color: blue;
}
`),
- ).toThrowErrorMatchingInlineSnapshot(`[Error: Missing opening {]`)
+ ).toThrowErrorMatchingInlineSnapshot(`[CssSyntaxError: Missing opening {]`)
+
+ expect(() =>
+ parseWithLoc(`
+ .foo {
+ color: red;
+ }
+
+ .bar
+ /* ^ Missing opening { */
+ color: blue;
+ }
+ `),
+ ).toThrowErrorMatchingInlineSnapshot(`[CssSyntaxError: input.css:9:11: Missing opening {]`)
})
it('should error when curly brackets are unbalanced (closing)', () => {
@@ -1160,7 +1179,22 @@ describe.each(['Unix', 'Windows'])('Line endings: %s', (lineEndings) => {
/* ^ Missing closing } */
`),
- ).toThrowErrorMatchingInlineSnapshot(`[Error: Missing closing } at .bar]`)
+ ).toThrowErrorMatchingInlineSnapshot(`[CssSyntaxError: Missing closing } at .bar]`)
+
+ expect(() =>
+ parseWithLoc(`
+ .foo {
+ color: red;
+ }
+
+ .bar {
+ color: blue;
+
+ /* ^ Missing closing } */
+ `),
+ ).toThrowErrorMatchingInlineSnapshot(
+ `[CssSyntaxError: input.css:6:11: Missing closing } at .bar]`,
+ )
})
it('should error when an unterminated string is used', () => {
@@ -1172,7 +1206,19 @@ describe.each(['Unix', 'Windows'])('Line endings: %s', (lineEndings) => {
font-weight: bold;
}
`),
- ).toThrowErrorMatchingInlineSnapshot(`[Error: Unterminated string: "Hello world!"]`)
+ ).toThrowErrorMatchingInlineSnapshot(`[CssSyntaxError: Unterminated string: "Hello world!"]`)
+
+ expect(() =>
+ parseWithLoc(css`
+ .foo {
+ content: "Hello world!
+ /* ^ missing " */
+ font-weight: bold;
+ }
+ `),
+ ).toThrowErrorMatchingInlineSnapshot(
+ `[CssSyntaxError: input.css:3:22: Unterminated string: "Hello world!"]`,
+ )
})
it('should error when an unterminated string is used with a `;`', () => {
@@ -1184,18 +1230,38 @@ describe.each(['Unix', 'Windows'])('Line endings: %s', (lineEndings) => {
font-weight: bold;
}
`),
- ).toThrowErrorMatchingInlineSnapshot(`[Error: Unterminated string: "Hello world!;"]`)
+ ).toThrowErrorMatchingInlineSnapshot(`[CssSyntaxError: Unterminated string: "Hello world!;"]`)
+
+ expect(() =>
+ parseWithLoc(css`
+ .foo {
+ content: "Hello world!;
+ /* ^ missing " */
+ font-weight: bold;
+ }
+ `),
+ ).toThrowErrorMatchingInlineSnapshot(
+ `[CssSyntaxError: input.css:3:22: Unterminated string: "Hello world!;"]`,
+ )
})
it('should error when incomplete custom properties are used', () => {
expect(() => parse('--foo')).toThrowErrorMatchingInlineSnapshot(
- `[Error: Invalid custom property, expected a value]`,
+ `[CssSyntaxError: Invalid custom property, expected a value]`,
+ )
+
+ expect(() => parseWithLoc('--foo')).toThrowErrorMatchingInlineSnapshot(
+ `[CssSyntaxError: input.css:1:1: Invalid custom property, expected a value]`,
)
})
it('should error when incomplete custom properties are used inside rules', () => {
expect(() => parse('.foo { --bar }')).toThrowErrorMatchingInlineSnapshot(
- `[Error: Invalid custom property, expected a value]`,
+ `[CssSyntaxError: Invalid custom property, expected a value]`,
+ )
+
+ expect(() => parseWithLoc('.foo { --bar }')).toThrowErrorMatchingInlineSnapshot(
+ `[CssSyntaxError: input.css:1:8: Invalid custom property, expected a value]`,
)
})
@@ -1207,12 +1273,27 @@ describe.each(['Unix', 'Windows'])('Line endings: %s', (lineEndings) => {
/* ^ missing ' * /;
}
`),
- ).toThrowErrorMatchingInlineSnapshot(`[Error: Unterminated string: 'Hello world!']`)
+ ).toThrowErrorMatchingInlineSnapshot(`[CssSyntaxError: Unterminated string: 'Hello world!']`)
+
+ expect(() =>
+ parseWithLoc(css`
+ .foo {
+ --bar: 'Hello world!
+ /* ^ missing ' * /;
+ }
+ `),
+ ).toThrowErrorMatchingInlineSnapshot(
+ `[CssSyntaxError: input.css:3:20: Unterminated string: 'Hello world!']`,
+ )
})
it('should error when a declaration is incomplete', () => {
expect(() => parse('.foo { bar }')).toThrowErrorMatchingInlineSnapshot(
- `[Error: Invalid declaration: \`bar\`]`,
+ `[CssSyntaxError: Invalid declaration: \`bar\`]`,
+ )
+
+ expect(() => parseWithLoc('.foo { bar }')).toThrowErrorMatchingInlineSnapshot(
+ `[CssSyntaxError: input.css:1:8: Invalid declaration: \`bar\`]`,
)
})
})
diff --git a/packages/tailwindcss/src/css-parser.ts b/packages/tailwindcss/src/css-parser.ts
index 1653c3789..3dd5e6ffe 100644
--- a/packages/tailwindcss/src/css-parser.ts
+++ b/packages/tailwindcss/src/css-parser.ts
@@ -9,7 +9,8 @@ import {
type Declaration,
type Rule,
} from './ast'
-import type { Source } from './source-maps/source'
+import { createLineTable } from './source-maps/line-table'
+import type { Source, SourceLocation } from './source-maps/source'
const BACKSLASH = 0x5c
const SLASH = 0x2f
@@ -36,6 +37,30 @@ export interface ParseOptions {
from?: string
}
+/**
+ * CSS syntax error with source location information.
+ */
+export class CssSyntaxError extends Error {
+ loc: SourceLocation | null
+
+ constructor(message: string, loc: SourceLocation | null) {
+ if (loc) {
+ let source = loc[0]
+ let start = createLineTable(source.code).find(loc[1])
+ message = `${source.file}:${start.line}:${start.column + 1}: ${message}`
+ }
+
+ super(message)
+
+ this.name = 'CssSyntaxError'
+ this.loc = loc
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, CssSyntaxError)
+ }
+ }
+}
+
export function parse(input: string, opts?: ParseOptions) {
let source: Source | null = opts?.from ? { file: opts.from, code: input } : null
@@ -138,7 +163,7 @@ export function parse(input: string, opts?: ParseOptions) {
// Start of a string.
else if (currentChar === SINGLE_QUOTE || currentChar === DOUBLE_QUOTE) {
- let end = parseString(input, i, currentChar)
+ let end = parseString(input, i, currentChar, source)
// Adjust `buffer` to include the string.
buffer += input.slice(i, end + 1)
@@ -192,7 +217,7 @@ export function parse(input: string, opts?: ParseOptions) {
// Start of a string.
else if (peekChar === SINGLE_QUOTE || peekChar === DOUBLE_QUOTE) {
- j = parseString(input, j, peekChar)
+ j = parseString(input, j, peekChar, source)
}
// Start of a comment.
@@ -269,7 +294,12 @@ export function parse(input: string, opts?: ParseOptions) {
}
let declaration = parseDeclaration(buffer, colonIdx)
- if (!declaration) throw new Error(`Invalid custom property, expected a value`)
+ if (!declaration) {
+ throw new CssSyntaxError(
+ `Invalid custom property, expected a value`,
+ source ? [source, start, i] : null,
+ )
+ }
if (source) {
declaration.src = [source, start, i]
@@ -334,7 +364,10 @@ export function parse(input: string, opts?: ParseOptions) {
let declaration = parseDeclaration(buffer)
if (!declaration) {
if (buffer.length === 0) continue
- throw new Error(`Invalid declaration: \`${buffer.trim()}\``)
+ throw new CssSyntaxError(
+ `Invalid declaration: \`${buffer.trim()}\``,
+ source ? [source, bufferStart, i] : null,
+ )
}
if (source) {
@@ -391,7 +424,7 @@ export function parse(input: string, opts?: ParseOptions) {
closingBracketStack[closingBracketStack.length - 1] !== ')'
) {
if (closingBracketStack === '') {
- throw new Error('Missing opening {')
+ throw new CssSyntaxError('Missing opening {', source ? [source, i, i] : null)
}
closingBracketStack = closingBracketStack.slice(0, -1)
@@ -453,7 +486,12 @@ export function parse(input: string, opts?: ParseOptions) {
// Attach the declaration to the parent.
if (parent) {
let node = parseDeclaration(buffer, colonIdx)
- if (!node) throw new Error(`Invalid declaration: \`${buffer.trim()}\``)
+ if (!node) {
+ throw new CssSyntaxError(
+ `Invalid declaration: \`${buffer.trim()}\``,
+ source ? [source, bufferStart, i] : null,
+ )
+ }
if (source) {
node.src = [source, bufferStart, i]
@@ -492,7 +530,7 @@ export function parse(input: string, opts?: ParseOptions) {
// `)`
else if (currentChar === CLOSE_PAREN) {
if (closingBracketStack[closingBracketStack.length - 1] !== ')') {
- throw new Error('Missing opening (')
+ throw new CssSyntaxError('Missing opening (', source ? [source, i, i] : null)
}
closingBracketStack = closingBracketStack.slice(0, -1)
@@ -534,10 +572,17 @@ export function parse(input: string, opts?: ParseOptions) {
// have a leftover `parent`, then it means that we have an unterminated block.
if (closingBracketStack.length > 0 && parent) {
if (parent.kind === 'rule') {
- throw new Error(`Missing closing } at ${parent.selector}`)
+ throw new CssSyntaxError(
+ `Missing closing } at ${parent.selector}`,
+ parent.src ? [parent.src[0], parent.src[1], parent.src[1]] : null,
+ )
}
+
if (parent.kind === 'at-rule') {
- throw new Error(`Missing closing } at ${parent.name} ${parent.params}`)
+ throw new CssSyntaxError(
+ `Missing closing } at ${parent.name} ${parent.params}`,
+ parent.src ? [parent.src[0], parent.src[1], parent.src[1]] : null,
+ )
}
}
@@ -594,7 +639,12 @@ function parseDeclaration(
)
}
-function parseString(input: string, startIdx: number, quoteChar: number): number {
+function parseString(
+ input: string,
+ startIdx: number,
+ quoteChar: number,
+ source: Source | null = null,
+): number {
let peekChar: number
// We need to ensure that the closing quote is the same as the opening
@@ -636,8 +686,9 @@ function parseString(input: string, startIdx: number, quoteChar: number): number
(input.charCodeAt(i + 1) === LINE_BREAK ||
(input.charCodeAt(i + 1) === CARRIAGE_RETURN && input.charCodeAt(i + 2) === LINE_BREAK))
) {
- throw new Error(
+ throw new CssSyntaxError(
`Unterminated string: ${input.slice(startIdx, i + 1) + String.fromCharCode(quoteChar)}`,
+ source ? [source, startIdx, i + 1] : null,
)
}
@@ -655,8 +706,9 @@ function parseString(input: string, startIdx: number, quoteChar: number): number
peekChar === LINE_BREAK ||
(peekChar === CARRIAGE_RETURN && input.charCodeAt(i + 1) === LINE_BREAK)
) {
- throw new Error(
+ throw new CssSyntaxError(
`Unterminated string: ${input.slice(startIdx, i) + String.fromCharCode(quoteChar)}`,
+ source ? [source, startIdx, i + 1] : null,
)
}
}
From 4455051c48ea4012a751cb0c65a2c7c867cd1552 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 13 Nov 2025 05:53:39 -0500
Subject: [PATCH 007/353] Skip comments in Ruby files when checking for class
names (#19243)
Fixes #19239
---
CHANGELOG.md | 2 +
.../extractor/arbitrary_property_machine.rs | 12 ++
.../src/extractor/pre_processors/ruby.rs | 126 +++++++++++++++++-
.../test-fixtures/haml/dst-17051.haml | 2 -
4 files changed, 137 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e44a8358a..07b1eeb90 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Ensure validation of `source(…)` happens relative to the file it is in ([#19274](https://github.com/tailwindlabs/tailwindcss/pull/19274))
- Include filename and line numbers in CSS parse errors ([#19282](https://github.com/tailwindlabs/tailwindcss/pull/19282))
+- Skip comments in Ruby files when checking for class names ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
+- Skip over arbitrary property utilities with a top-level `!` in the value ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
### Added
diff --git a/crates/oxide/src/extractor/arbitrary_property_machine.rs b/crates/oxide/src/extractor/arbitrary_property_machine.rs
index 8ed3f1763..8fd13e394 100644
--- a/crates/oxide/src/extractor/arbitrary_property_machine.rs
+++ b/crates/oxide/src/extractor/arbitrary_property_machine.rs
@@ -231,6 +231,12 @@ impl Machine for ArbitraryPropertyMachine {
return self.restart()
}
+ // An `!` at the top-level is invalid. We don't allow things to end with
+ // `!important` either as we have dedicated syntax for this.
+ Class::Exclamation if self.bracket_stack.is_empty() => {
+ return self.restart();
+ }
+
// Everything else is valid
_ => cursor.advance(),
};
@@ -293,6 +299,9 @@ enum Class {
#[bytes(b'/')]
Slash,
+ #[bytes(b'!')]
+ Exclamation,
+
#[bytes(b' ', b'\t', b'\n', b'\r', b'\x0C')]
Whitespace,
@@ -369,6 +378,9 @@ mod tests {
"[background:url(https://example.com?q={[{[([{[[2]]}])]}]})]",
vec!["[background:url(https://example.com?q={[{[([{[[2]]}])]}]})]"],
),
+ // A property containing `!` at the top-level is invalid
+ ("[color:red!]", vec![]),
+ ("[color:red!important]", vec![]),
] {
for wrapper in [
// No wrapper
diff --git a/crates/oxide/src/extractor/pre_processors/ruby.rs b/crates/oxide/src/extractor/pre_processors/ruby.rs
index 6bb1d4923..c94bd945f 100644
--- a/crates/oxide/src/extractor/pre_processors/ruby.rs
+++ b/crates/oxide/src/extractor/pre_processors/ruby.rs
@@ -77,8 +77,74 @@ impl PreProcessor for Ruby {
// Ruby extraction
while cursor.pos < len {
- // Looking for `%w` or `%W`
- if cursor.curr != b'%' && !matches!(cursor.next, b'w' | b'W') {
+ match cursor.curr {
+ b'"' => {
+ cursor.advance();
+
+ while cursor.pos < len {
+ match cursor.curr {
+ // Escaped character, skip ahead to the next character
+ b'\\' => cursor.advance_twice(),
+
+ // End of the string
+ b'"' => break,
+
+ // Everything else is valid
+ _ => cursor.advance(),
+ };
+ }
+
+ cursor.advance();
+ continue;
+ }
+
+ b'\'' => {
+ cursor.advance();
+
+ while cursor.pos < len {
+ match cursor.curr {
+ // Escaped character, skip ahead to the next character
+ b'\\' => cursor.advance_twice(),
+
+ // End of the string
+ b'\'' => break,
+
+ // Everything else is valid
+ _ => cursor.advance(),
+ };
+ }
+
+ cursor.advance();
+ continue;
+ }
+
+ // Replace comments in Ruby files
+ b'#' => {
+ result[cursor.pos] = b' ';
+ cursor.advance();
+
+ while cursor.pos < len {
+ match cursor.curr {
+ // End of the comment
+ b'\n' => break,
+
+ // Everything else is part of the comment and replaced
+ _ => {
+ result[cursor.pos] = b' ';
+ cursor.advance();
+ }
+ };
+ }
+
+ cursor.advance();
+ continue;
+ }
+
+ _ => {}
+ }
+
+ // Looking for `%w`, `%W`, or `%p`
+ if cursor.curr != b'%' || !matches!(cursor.next, b'w' | b'W' | b'p') {
cursor.advance();
continue;
}
@@ -90,6 +156,8 @@ impl PreProcessor for Ruby {
b'[' => b']',
b'(' => b')',
b'{' => b'}',
+ b'#' => b'#',
+ b' ' => b'\n',
_ => {
cursor.advance();
continue;
@@ -131,7 +199,10 @@ impl PreProcessor for Ruby {
// End of the pattern, replace the boundary character with a space
_ if cursor.curr == boundary => {
- result[cursor.pos] = b' ';
+ if boundary != b'\n' {
+ result[cursor.pos] = b' ';
+ }
+
break;
}
@@ -173,12 +244,51 @@ mod tests {
"%w(flex data-[state=pending]:bg-(--my-color) flex-col)",
"%w flex data-[state=pending]:bg-(--my-color) flex-col ",
),
+
+ // %w …\n
+ ("%w flex px-2.5\n", "%w flex px-2.5\n"),
+
// Use backslash to embed spaces in the strings.
(r#"%w[foo\ bar baz\ bat]"#, r#"%w foo bar baz bat "#),
(r#"%W[foo\ bar baz\ bat]"#, r#"%W foo bar baz bat "#),
+
// The nested delimiters evaluated to a flat array of strings
// (not nested array).
(r#"%w[foo[bar baz]qux]"#, r#"%w foo[bar baz]qux "#),
+
+ (
+ "# test\n# test\n# {ActiveRecord::Base#save!}[rdoc-ref:Persistence#save!]\n%w[flex px-2.5]",
+ " \n \n \n%w flex px-2.5 "
+ ),
+
+ (r#""foo # bar""#, r#""foo # bar""#),
+ (r#"'foo # bar'"#, r#"'foo # bar'"#),
+ (
+ r#"def call = tag.span "Foo", class: %w[rounded-full h-0.75 w-0.75]"#,
+ r#"def call = tag.span "Foo", class: %w rounded-full h-0.75 w-0.75 "#
+ ),
+
+ (r#"%w[foo ' bar]"#, r#"%w foo ' bar "#),
+ (r#"%w[foo " bar]"#, r#"%w foo " bar "#),
+ (r#"%W[foo ' bar]"#, r#"%W foo ' bar "#),
+ (r#"%W[foo " bar]"#, r#"%W foo " bar "#),
+
+ (r#"%p foo ' bar "#, r#"%p foo ' bar "#),
+ (r#"%p foo " bar "#, r#"%p foo " bar "#),
+
+ (
+ "%p has a ' quote\n# this should be removed\n%p has a ' quote",
+ "%p has a ' quote\n \n%p has a ' quote"
+ ),
+ (
+ "%p has a \" quote\n# this should be removed\n%p has a \" quote",
+ "%p has a \" quote\n \n%p has a \" quote"
+ ),
+
+ (
+ "%w#this text is kept# # this text is not",
+ "%w this text is kept ",
+ ),
] {
Ruby::test(input, expected);
}
@@ -211,6 +321,16 @@ mod tests {
"%w(flex data-[state=pending]:bg-(--my-color) flex-col)",
vec!["flex", "data-[state=pending]:bg-(--my-color)", "flex-col"],
),
+
+ (
+ "# test\n# test\n# {ActiveRecord::Base#save!}[rdoc-ref:Persistence#save!]\n%w[flex px-2.5]",
+ vec!["flex", "px-2.5"],
+ ),
+
+ (r#""foo # bar""#, vec!["foo", "bar"]),
+ (r#"'foo # bar'"#, vec!["foo", "bar"]),
+
+ (r#"%w[foo ' bar]"#, vec!["foo", "bar"]),
] {
Ruby::test_extract_contains(input, expected);
}
diff --git a/crates/oxide/src/extractor/pre_processors/test-fixtures/haml/dst-17051.haml b/crates/oxide/src/extractor/pre_processors/test-fixtures/haml/dst-17051.haml
index b233f3b8b..4a3543379 100644
--- a/crates/oxide/src/extractor/pre_processors/test-fixtures/haml/dst-17051.haml
+++ b/crates/oxide/src/extractor/pre_processors/test-fixtures/haml/dst-17051.haml
@@ -7,7 +7,6 @@
.relative
^^^^^^^^
- # Blurred background star
- ^^^^^^^^^^ ^^^^
.absolute.left-0.z-0{ class: "-top-[400px] -right-[400px]" }
^^^^^^^^ ^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^
.flex.justify-end.blur-3xl
@@ -196,7 +195,6 @@
^^^^^^^^ ^^^^ ^^^ ^^^^ ^^
:escaped
- # app/components/character_component.html.haml
- ^^^^
= part(:component) do
^^
= part(:head)
From 21f2bf99b9764929b5268ce2174840086ef191cc Mon Sep 17 00:00:00 2001
From: Alexander Lichter
Date: Fri, 14 Nov 2025 16:44:07 +0100
Subject: [PATCH 008/353] perf(vite): add plugin hook filter (#19308)
## Summary
This PR adds plugin [hook
filters](https://vite.dev/guide/api-plugin#hook-filters) to the Vite
plugin. They are backwards-compatible, having no impact on older Vite
versions as the check for `isPotentialCssRootFile` is still included.
It can be dropped once you don't need to support older Vite versions.
## See also
https://github.com/e18e/ecosystem-issues/issues/171
---------
Co-authored-by: Jordan Pittman
---
packages/@tailwindcss-vite/src/index.ts | 81 +++++++++++++++----------
1 file changed, 48 insertions(+), 33 deletions(-)
diff --git a/packages/@tailwindcss-vite/src/index.ts b/packages/@tailwindcss-vite/src/index.ts
index ab9635d10..29b85b2be 100644
--- a/packages/@tailwindcss-vite/src/index.ts
+++ b/packages/@tailwindcss-vite/src/index.ts
@@ -97,23 +97,30 @@ export default function tailwindcss(opts: PluginOptions = {}): Plugin[] {
name: '@tailwindcss/vite:generate:serve',
apply: 'serve',
enforce: 'pre',
+ transform: {
+ filter: {
+ id: {
+ exclude: [/\/\.vite\//, SPECIAL_QUERY_RE, COMMON_JS_PROXY_RE],
+ include: [/\.css(?:\?.*)?$/, /&lang\.css/, INLINE_STYLE_ID_RE],
+ },
+ },
+ async handler(src, id) {
+ if (!isPotentialCssRootFile(id)) return
- async transform(src, id, options) {
- if (!isPotentialCssRootFile(id)) return
+ using I = new Instrumentation()
+ DEBUG && I.start('[@tailwindcss/vite] Generate CSS (serve)')
- using I = new Instrumentation()
- DEBUG && I.start('[@tailwindcss/vite] Generate CSS (serve)')
+ let root = roots.get(id)
- let root = roots.get(id)
+ let result = await root.generate(src, (file) => this.addWatchFile(file), I)
+ if (!result) {
+ roots.delete(id)
+ return src
+ }
- let result = await root.generate(src, (file) => this.addWatchFile(file), I)
- if (!result) {
- roots.delete(id)
- return src
- }
-
- DEBUG && I.end('[@tailwindcss/vite] Generate CSS (serve)')
- return result
+ DEBUG && I.end('[@tailwindcss/vite] Generate CSS (serve)')
+ return result
+ },
},
},
@@ -123,31 +130,39 @@ export default function tailwindcss(opts: PluginOptions = {}): Plugin[] {
apply: 'build',
enforce: 'pre',
- async transform(src, id) {
- if (!isPotentialCssRootFile(id)) return
+ transform: {
+ filter: {
+ id: {
+ exclude: [/\/\.vite\//, SPECIAL_QUERY_RE, COMMON_JS_PROXY_RE],
+ include: [/\.css(?:\?.*)?$/, /&lang\.css/, INLINE_STYLE_ID_RE],
+ },
+ },
+ async handler(src, id) {
+ if (!isPotentialCssRootFile(id)) return
- using I = new Instrumentation()
- DEBUG && I.start('[@tailwindcss/vite] Generate CSS (build)')
+ using I = new Instrumentation()
+ DEBUG && I.start('[@tailwindcss/vite] Generate CSS (build)')
- let root = roots.get(id)
+ let root = roots.get(id)
- let result = await root.generate(src, (file) => this.addWatchFile(file), I)
- if (!result) {
- roots.delete(id)
- return src
- }
- DEBUG && I.end('[@tailwindcss/vite] Generate CSS (build)')
+ let result = await root.generate(src, (file) => this.addWatchFile(file), I)
+ if (!result) {
+ roots.delete(id)
+ return src
+ }
+ DEBUG && I.end('[@tailwindcss/vite] Generate CSS (build)')
- if (shouldOptimize) {
- DEBUG && I.start('[@tailwindcss/vite] Optimize CSS')
- result = optimize(result.code, {
- minify,
- map: result.map,
- })
- DEBUG && I.end('[@tailwindcss/vite] Optimize CSS')
- }
+ if (shouldOptimize) {
+ DEBUG && I.start('[@tailwindcss/vite] Optimize CSS')
+ result = optimize(result.code, {
+ minify,
+ map: result.map,
+ })
+ DEBUG && I.end('[@tailwindcss/vite] Optimize CSS')
+ }
- return result
+ return result
+ },
},
},
] satisfies Plugin[]
From c532955dd14d2ec282a18ebd5126e08c514180a0 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Mon, 17 Nov 2025 17:22:37 -0500
Subject: [PATCH 009/353] =?UTF-8?q?Update=20autoprefixer=2010.4.21=20?=
=?UTF-8?q?=E2=86=92=2010.4.22=20(patch)=20(#19322)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ autoprefixer (10.4.21 → 10.4.22) ·
[Repo](https://github.com/postcss/autoprefixer) ·
[Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
Release Notes
Fixed stretch prefixes on new Can I
Use database.
Updated fraction.js.
Does any of this look wrong? Please let
us know.
Commits
See
the full diff on Github . The new version differs by 6 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/v3/package.json | 2 +-
pnpm-lock.yaml | 70 ++++++++++++++++++++++++++++++-------
2 files changed, 59 insertions(+), 13 deletions(-)
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index 424125031..6f5d1276a 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -18,7 +18,7 @@
"@types/node": "^20.14.8",
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.2",
- "autoprefixer": "^10.4.21",
+ "autoprefixer": "^10.4.22",
"eslint": "^9.39.1",
"eslint-config-next": "^15.5.6",
"typescript": "^5.5.4"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d4c95dcdc..4c0223ce2 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -536,8 +536,8 @@ importers:
specifier: ^19.2.2
version: 19.2.2(@types/react@19.2.2)
autoprefixer:
- specifier: ^10.4.21
- version: 10.4.21(postcss@8.4.47)
+ specifier: ^10.4.22
+ version: 10.4.22(postcss@8.4.47)
eslint:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
@@ -2615,8 +2615,8 @@ packages:
ast-types-flow@0.0.8:
resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
- autoprefixer@10.4.21:
- resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==}
+ autoprefixer@10.4.22:
+ resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
@@ -2637,6 +2637,10 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ baseline-browser-mapping@2.8.29:
+ resolution: {integrity: sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==}
+ hasBin: true
+
before-after-hook@4.0.0:
resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==}
@@ -2659,6 +2663,11 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
+ browserslist@4.28.0:
+ resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -2698,6 +2707,9 @@ packages:
caniuse-lite@1.0.30001705:
resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==}
+ caniuse-lite@1.0.30001755:
+ resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==}
+
chai@5.1.1:
resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
engines: {node: '>=12'}
@@ -2906,6 +2918,9 @@ packages:
electron-to-chromium@1.5.119:
resolution: {integrity: sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==}
+ electron-to-chromium@1.5.255:
+ resolution: {integrity: sha512-Z9oIp4HrFF/cZkDPMpz2XSuVpc1THDpT4dlmATFlJUIBVCy9Vap5/rIXsASP1CscBacBqhabwh8vLctqBwEerQ==}
+
emnapi@1.6.0:
resolution: {integrity: sha512-Hx0FqhPchuwkDauQdgamWAn6MHbOX1CPIFfObXqxTEmngZUYM9mZLcPS/civeVT5x73xkBV1ZIwKWfessIFTgQ==}
peerDependencies:
@@ -3168,8 +3183,8 @@ packages:
resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
engines: {node: '>=14'}
- fraction.js@4.3.7:
- resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+ fraction.js@5.3.4:
+ resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
fsevents@2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
@@ -3764,6 +3779,9 @@ packages:
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
+ node-releases@2.0.27:
+ resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -4487,6 +4505,12 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
+ update-browserslist-db@1.1.4:
+ resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
uqr@0.1.2:
resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==}
@@ -6360,11 +6384,11 @@ snapshots:
ast-types-flow@0.0.8: {}
- autoprefixer@10.4.21(postcss@8.4.47):
+ autoprefixer@10.4.22(postcss@8.4.47):
dependencies:
- browserslist: 4.24.4
- caniuse-lite: 1.0.30001705
- fraction.js: 4.3.7
+ browserslist: 4.28.0
+ caniuse-lite: 1.0.30001755
+ fraction.js: 5.3.4
normalize-range: 0.1.2
picocolors: 1.1.1
postcss: 8.4.47
@@ -6380,6 +6404,8 @@ snapshots:
balanced-match@1.0.2: {}
+ baseline-browser-mapping@2.8.29: {}
+
before-after-hook@4.0.0: {}
binary-extensions@2.3.0: {}
@@ -6399,11 +6425,19 @@ snapshots:
browserslist@4.24.4:
dependencies:
- caniuse-lite: 1.0.30001705
+ caniuse-lite: 1.0.30001755
electron-to-chromium: 1.5.119
node-releases: 2.0.19
update-browserslist-db: 1.1.1(browserslist@4.24.4)
+ browserslist@4.28.0:
+ dependencies:
+ baseline-browser-mapping: 2.8.29
+ caniuse-lite: 1.0.30001755
+ electron-to-chromium: 1.5.255
+ node-releases: 2.0.27
+ update-browserslist-db: 1.1.4(browserslist@4.28.0)
+
buffer-from@1.1.2:
optional: true
@@ -6447,6 +6481,8 @@ snapshots:
caniuse-lite@1.0.30001705: {}
+ caniuse-lite@1.0.30001755: {}
+
chai@5.1.1:
dependencies:
assertion-error: 2.0.1
@@ -6627,6 +6663,8 @@ snapshots:
electron-to-chromium@1.5.119: {}
+ electron-to-chromium@1.5.255: {}
+
emnapi@1.6.0(node-addon-api@8.3.0):
optionalDependencies:
node-addon-api: 8.3.0
@@ -7185,7 +7223,7 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
- fraction.js@4.3.7: {}
+ fraction.js@5.3.4: {}
fsevents@2.3.2:
optional: true
@@ -7720,6 +7758,8 @@ snapshots:
node-releases@2.0.19: {}
+ node-releases@2.0.27: {}
+
normalize-path@3.0.0: {}
normalize-range@0.1.2: {}
@@ -8539,6 +8579,12 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
+ update-browserslist-db@1.1.4(browserslist@4.28.0):
+ dependencies:
+ browserslist: 4.28.0
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
uqr@0.1.2: {}
uri-js@4.4.1:
From e4b6c67bcb528a51b5482356fdf66e44816fafeb Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 18 Nov 2025 12:38:57 -0500
Subject: [PATCH 010/353] Support Vite Environment API (#18970)
Fixes #18002
Very much a work in progress b/c I don't (yet) understand how the newer
APIs are intended to function.
- [x] Needs env specific tests that verify the environment API is being
used
---
CHANGELOG.md | 1 +
integrations/vite/index.test.ts | 60 ++++++++++++++++++
packages/@tailwindcss-vite/src/index.ts | 83 ++++++++++++++++++-------
3 files changed, 120 insertions(+), 24 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 07b1eeb90..206e0bc0a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Include filename and line numbers in CSS parse errors ([#19282](https://github.com/tailwindlabs/tailwindcss/pull/19282))
- Skip comments in Ruby files when checking for class names ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
- Skip over arbitrary property utilities with a top-level `!` in the value ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
+- Support environment API in `@tailwindcss/vite` ([#18970](https://github.com/tailwindlabs/tailwindcss/pull/18970))
### Added
diff --git a/integrations/vite/index.test.ts b/integrations/vite/index.test.ts
index 91570a6fc..b8b2ad6e3 100644
--- a/integrations/vite/index.test.ts
+++ b/integrations/vite/index.test.ts
@@ -1103,3 +1103,63 @@ test(
expect(content).toContain('display: flex;')
},
)
+
+test(
+ `the plugin works when using the environment API`,
+ {
+ fs: {
+ 'package.json': txt`
+ {
+ "type": "module",
+ "dependencies": {
+ "@tailwindcss/vite": "workspace:^",
+ "tailwindcss": "workspace:^"
+ },
+ "devDependencies": {
+ "vite": "^7"
+ }
+ }
+ `,
+ 'vite.config.ts': ts`
+ import tailwindcss from '@tailwindcss/vite'
+ import { defineConfig } from 'vite'
+
+ export default defineConfig({
+ plugins: [tailwindcss()],
+ builder: {},
+ environments: {
+ server: {
+ build: {
+ cssMinify: false,
+ emitAssets: true,
+ rollupOptions: { input: './src/server.ts' },
+ },
+ },
+ },
+ })
+ `,
+ // Has to exist or the build fails
+ 'index.html': html`
+
+ `,
+ 'src/server.ts': js`
+ // Import the stylesheet in the server build
+ import a from './index.css?url'
+ console.log(a)
+ `,
+ 'src/index.css': css`
+ @reference 'tailwindcss/theme';
+ @import 'tailwindcss/utilities';
+ `,
+ },
+ },
+ async ({ root, fs, exec, expect }) => {
+ await exec('pnpm vite build', { cwd: root })
+
+ let files = await fs.glob('dist/**/*.css')
+ expect(files).toHaveLength(1)
+ let [filename] = files[0]
+
+ await fs.expectFileToContain(filename, [candidate`content-['index.html']`])
+ },
+)
diff --git a/packages/@tailwindcss-vite/src/index.ts b/packages/@tailwindcss-vite/src/index.ts
index 29b85b2be..709ab9db0 100644
--- a/packages/@tailwindcss-vite/src/index.ts
+++ b/packages/@tailwindcss-vite/src/index.ts
@@ -11,7 +11,8 @@ import { clearRequireCache } from '@tailwindcss/node/require-cache'
import { Scanner } from '@tailwindcss/oxide'
import fs from 'node:fs/promises'
import path from 'node:path'
-import type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'
+import type { Environment, Plugin, ResolvedConfig, ViteDevServer } from 'vite'
+import * as vite from 'vite'
const DEBUG = env.DEBUG
const SPECIAL_QUERY_RE = /[?&](?:worker|sharedworker|raw|url)\b/
@@ -28,28 +29,51 @@ export type PluginOptions = {
export default function tailwindcss(opts: PluginOptions = {}): Plugin[] {
let servers: ViteDevServer[] = []
let config: ResolvedConfig | null = null
+ let rootsByEnv = new DefaultMap>((env: string) => new Map())
let isSSR = false
let shouldOptimize = true
let minify = true
- let roots: DefaultMap = new DefaultMap((id) => {
- let cssResolver = config!.createResolver({
- ...config!.resolve,
- extensions: ['.css'],
- mainFields: ['style'],
- conditions: ['style', 'development|production'],
- tryIndex: false,
- preferRelative: true,
- })
- function customCssResolver(id: string, base: string) {
- return cssResolver(id, base, true, isSSR)
+ function createRoot(env: Environment | null, id: string) {
+ type ResolveFn = (id: string, base: string) => Promise
+
+ let customCssResolver: ResolveFn
+ let customJsResolver: ResolveFn
+
+ if (!env) {
+ // Older, pre-environment Vite API
+ // TODO: Can we drop this??
+ let cssResolver = config!.createResolver({
+ ...config!.resolve,
+ extensions: ['.css'],
+ mainFields: ['style'],
+ conditions: ['style', 'development|production'],
+ tryIndex: false,
+ preferRelative: true,
+ })
+
+ let jsResolver = config!.createResolver(config!.resolve)
+
+ customCssResolver = (id: string, base: string) => cssResolver(id, base, true, isSSR)
+ customJsResolver = (id: string, base: string) => jsResolver(id, base, true, isSSR)
+ } else {
+ // Newer Vite versions
+ let cssResolver = vite.createIdResolver(env.config, {
+ ...env.config.resolve,
+ extensions: ['.css'],
+ mainFields: ['style'],
+ conditions: ['style', 'development|production'],
+ tryIndex: false,
+ preferRelative: true,
+ })
+
+ let jsResolver = vite.createIdResolver(env.config, env.config.resolve)
+
+ customCssResolver = (id: string, base: string) => cssResolver(env, id, base, true)
+ customJsResolver = (id: string, base: string) => jsResolver(env, id, base, true)
}
- let jsResolver = config!.createResolver(config!.resolve)
- function customJsResolver(id: string, base: string) {
- return jsResolver(id, base, true, isSSR)
- }
return new Root(
id,
config!.root,
@@ -59,7 +83,7 @@ export default function tailwindcss(opts: PluginOptions = {}): Plugin[] {
customCssResolver,
customJsResolver,
)
- })
+ }
return [
{
@@ -110,7 +134,12 @@ export default function tailwindcss(opts: PluginOptions = {}): Plugin[] {
using I = new Instrumentation()
DEBUG && I.start('[@tailwindcss/vite] Generate CSS (serve)')
+ let roots = rootsByEnv.get(this.environment?.name ?? 'default')
let root = roots.get(id)
+ if (!root) {
+ root ??= createRoot(this.environment ?? null, id)
+ roots.set(id, root)
+ }
let result = await root.generate(src, (file) => this.addWatchFile(file), I)
if (!result) {
@@ -129,7 +158,6 @@ export default function tailwindcss(opts: PluginOptions = {}): Plugin[] {
name: '@tailwindcss/vite:generate:build',
apply: 'build',
enforce: 'pre',
-
transform: {
filter: {
id: {
@@ -143,7 +171,12 @@ export default function tailwindcss(opts: PluginOptions = {}): Plugin[] {
using I = new Instrumentation()
DEBUG && I.start('[@tailwindcss/vite] Generate CSS (build)')
+ let roots = rootsByEnv.get(this.environment?.name ?? 'default')
let root = roots.get(id)
+ if (!root) {
+ root ??= createRoot(this.environment ?? null, id)
+ roots.set(id, root)
+ }
let result = await root.generate(src, (file) => this.addWatchFile(file), I)
if (!result) {
@@ -174,13 +207,15 @@ function getExtension(id: string) {
}
function isPotentialCssRootFile(id: string) {
- if (id.includes('/.vite/')) return
+ if (id.includes('/.vite/')) return false
+
+ // Don't intercept special static asset resources
+ if (SPECIAL_QUERY_RE.test(id)) return false
+ if (COMMON_JS_PROXY_RE.test(id)) return false
+
let extension = getExtension(id)
- let isCssFile =
- (extension === 'css' || id.includes('&lang.css') || id.match(INLINE_STYLE_ID_RE)) &&
- // Don't intercept special static asset resources
- !SPECIAL_QUERY_RE.test(id) &&
- !COMMON_JS_PROXY_RE.test(id)
+ let isCssFile = extension === 'css' || id.includes('&lang.css') || id.match(INLINE_STYLE_ID_RE)
+
return isCssFile
}
From a7c968efb1d97e642b45071a221bce8728a6935e Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 18 Nov 2025 15:14:24 -0500
Subject: [PATCH 011/353] bump turbo (#19179)
The Bun build issue was caused by Turborepo passing through
`USERPROFILE` from the env. Probably need to file a bug with Bun:
```
Works:
env: USERPROFILE: undefined
CWD: `D:\a\tailwindcss\tailwindcss\packages\@tailwindcss-standalone`
Fails:
env: USERPROFILE: "C:\Users\runneradmin"
CWD: `D:\a\tailwindcss\tailwindcss\packages\@tailwindcss-standalone`
```
---
integrations/upgrade/index.test.ts | 4 +-
package.json | 2 +-
.../@tailwindcss-standalone/scripts/build.ts | 4 +
.../@tailwindcss-upgrade/src/utils/git.ts | 4 +-
pnpm-lock.yaml | 73 ++++++++-----------
5 files changed, 38 insertions(+), 49 deletions(-)
diff --git a/integrations/upgrade/index.test.ts b/integrations/upgrade/index.test.ts
index 75e21c590..614d202a9 100644
--- a/integrations/upgrade/index.test.ts
+++ b/integrations/upgrade/index.test.ts
@@ -2818,7 +2818,7 @@ test(
`,
},
},
- async ({ exec, fs, expect }) => {
+ async ({ exec, root, fs, expect }) => {
await exec('npx @tailwindcss/upgrade')
let before = await fs.dumpFiles('./src/**/*.{css,html}')
@@ -2855,7 +2855,7 @@ test(
`)
// Commit the changes
- if (isRepoDirty()) {
+ if (isRepoDirty(root)) {
await exec('git add .')
await exec('git commit -m "upgrade"')
}
diff --git a/package.json b/package.json
index 2810b0d7c..86912d548 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"prettier-plugin-embed": "^0.5.0",
"prettier-plugin-organize-imports": "^4.3.0",
"tsup": "^8.5.0",
- "turbo": "^2.5.4",
+ "turbo": "^2.6.1",
"typescript": "^5.5.4",
"vitest": "^2.0.5"
},
diff --git a/packages/@tailwindcss-standalone/scripts/build.ts b/packages/@tailwindcss-standalone/scripts/build.ts
index f37bdfd20..584175cfd 100644
--- a/packages/@tailwindcss-standalone/scripts/build.ts
+++ b/packages/@tailwindcss-standalone/scripts/build.ts
@@ -16,6 +16,10 @@ async function buildForPlatform(triple: string, outfile: string) {
// statically bundle the proper binaries for musl vs glibc
cmd = cmd.env({
PLATFORM_LIBC: triple.includes('-musl') ? 'musl' : 'glibc',
+
+ // Workaround for Bun binary downloads failing on Windows CI when
+ // USERPROFILE is passed through by Turborepo.
+ USERPROFILE: '',
})
return await cmd
diff --git a/packages/@tailwindcss-upgrade/src/utils/git.ts b/packages/@tailwindcss-upgrade/src/utils/git.ts
index d716fbb8a..75f64b1c1 100644
--- a/packages/@tailwindcss-upgrade/src/utils/git.ts
+++ b/packages/@tailwindcss-upgrade/src/utils/git.ts
@@ -1,8 +1,8 @@
import { execSync } from 'node:child_process'
-export function isRepoDirty() {
+export function isRepoDirty(cwd?: string) {
try {
- let stdout = execSync('git status --porcelain', { encoding: 'utf-8' })
+ let stdout = execSync('git status --porcelain', { encoding: 'utf-8', cwd })
return stdout.trim() !== ''
} catch (error) {
// If it's not a git repository we don't know if it's dirty or not. But we
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4c0223ce2..2521882df 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -77,8 +77,8 @@ importers:
specifier: ^8.5.0
version: 8.5.0(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.6.0)
turbo:
- specifier: ^2.5.4
- version: 2.5.4
+ specifier: ^2.6.1
+ version: 2.6.1
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -2007,7 +2007,6 @@ packages:
'@parcel/watcher-darwin-arm64@2.5.1':
resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.0':
@@ -2019,7 +2018,6 @@ packages:
'@parcel/watcher-darwin-x64@2.5.1':
resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.0':
@@ -2067,7 +2065,6 @@ packages:
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-arm64-musl@2.5.0':
@@ -2079,7 +2076,6 @@ packages:
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-x64-glibc@2.5.0':
@@ -2091,7 +2087,6 @@ packages:
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [linux]
'@parcel/watcher-linux-x64-musl@2.5.0':
@@ -2103,7 +2098,6 @@ packages:
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [linux]
'@parcel/watcher-wasm@2.5.0':
@@ -2145,7 +2139,6 @@ packages:
'@parcel/watcher-win32-x64@2.5.1':
resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [win32]
'@parcel/watcher@2.5.0':
@@ -2678,7 +2671,6 @@ packages:
bun@1.3.0:
resolution: {integrity: sha512-YI7mFs7iWc/VsGsh2aw6eAPD2cjzn1j+LKdYVk09x1CrdTWKYIHyd+dG5iQoN9//3hCDoZj8U6vKpZzEf5UARA==}
- cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -3547,13 +3539,11 @@ packages:
lightningcss-darwin-arm64@1.30.2:
resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.30.2:
resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.30.2:
@@ -3571,25 +3561,21 @@ packages:
lightningcss-linux-arm64-gnu@1.30.2:
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [linux]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [linux]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [linux]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [linux]
lightningcss-win32-arm64-msvc@1.30.2:
@@ -3601,7 +3587,6 @@ packages:
lightningcss-win32-x64-msvc@1.30.2:
resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [win32]
lightningcss@1.30.2:
@@ -4399,38 +4384,38 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- turbo-darwin-64@2.5.4:
- resolution: {integrity: sha512-ah6YnH2dErojhFooxEzmvsoZQTMImaruZhFPfMKPBq8sb+hALRdvBNLqfc8NWlZq576FkfRZ/MSi4SHvVFT9PQ==}
+ turbo-darwin-64@2.6.1:
+ resolution: {integrity: sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.5.4:
- resolution: {integrity: sha512-2+Nx6LAyuXw2MdXb7pxqle3MYignLvS7OwtsP9SgtSBaMlnNlxl9BovzqdYAgkUW3AsYiQMJ/wBRb7d+xemM5A==}
+ turbo-darwin-arm64@2.6.1:
+ resolution: {integrity: sha512-U0PIPTPyxdLsrC3jN7jaJUwgzX5sVUBsKLO7+6AL+OASaa1NbT1pPdiZoTkblBAALLP76FM0LlnsVQOnmjYhyw==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.5.4:
- resolution: {integrity: sha512-5May2kjWbc8w4XxswGAl74GZ5eM4Gr6IiroqdLhXeXyfvWEdm2mFYCSWOzz0/z5cAgqyGidF1jt1qzUR8hTmOA==}
+ turbo-linux-64@2.6.1:
+ resolution: {integrity: sha512-eM1uLWgzv89bxlK29qwQEr9xYWBhmO/EGiH22UGfq+uXr+QW1OvNKKMogSN65Ry8lElMH4LZh0aX2DEc7eC0Mw==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.5.4:
- resolution: {integrity: sha512-/2yqFaS3TbfxV3P5yG2JUI79P7OUQKOUvAnx4MV9Bdz6jqHsHwc9WZPpO4QseQm+NvmgY6ICORnoVPODxGUiJg==}
+ turbo-linux-arm64@2.6.1:
+ resolution: {integrity: sha512-MFFh7AxAQAycXKuZDrbeutfWM5Ep0CEZ9u7zs4Hn2FvOViTCzIfEhmuJou3/a5+q5VX1zTxQrKGy+4Lf5cdpsA==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.5.4:
- resolution: {integrity: sha512-EQUO4SmaCDhO6zYohxIjJpOKRN3wlfU7jMAj3CgcyTPvQR/UFLEKAYHqJOnJtymbQmiiM/ihX6c6W6Uq0yC7mA==}
+ turbo-windows-64@2.6.1:
+ resolution: {integrity: sha512-buq7/VAN7KOjMYi4tSZT5m+jpqyhbRU2EUTTvp6V0Ii8dAkY2tAAjQN1q5q2ByflYWKecbQNTqxmVploE0LVwQ==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.5.4:
- resolution: {integrity: sha512-oQ8RrK1VS8lrxkLriotFq+PiF7iiGgkZtfLKF4DDKsmdbPo0O9R2mQxm7jHLuXraRCuIQDWMIw6dpcr7Iykf4A==}
+ turbo-windows-arm64@2.6.1:
+ resolution: {integrity: sha512-7w+AD5vJp3R+FB0YOj1YJcNcOOvBior7bcHTodqp90S3x3bLgpr7tE6xOea1e8JkP7GK6ciKVUpQvV7psiwU5Q==}
cpu: [arm64]
os: [win32]
- turbo@2.5.4:
- resolution: {integrity: sha512-kc8ZibdRcuWUG1pbYSBFWqmIjynlD8Lp7IB6U3vIzvOv9VG+6Sp8bzyeBWE3Oi8XV5KsQrznyRTBPvrf99E4mA==}
+ turbo@2.6.1:
+ resolution: {integrity: sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA==}
hasBin: true
typanion@3.14.0:
@@ -8475,32 +8460,32 @@ snapshots:
fsevents: 2.3.3
optional: true
- turbo-darwin-64@2.5.4:
+ turbo-darwin-64@2.6.1:
optional: true
- turbo-darwin-arm64@2.5.4:
+ turbo-darwin-arm64@2.6.1:
optional: true
- turbo-linux-64@2.5.4:
+ turbo-linux-64@2.6.1:
optional: true
- turbo-linux-arm64@2.5.4:
+ turbo-linux-arm64@2.6.1:
optional: true
- turbo-windows-64@2.5.4:
+ turbo-windows-64@2.6.1:
optional: true
- turbo-windows-arm64@2.5.4:
+ turbo-windows-arm64@2.6.1:
optional: true
- turbo@2.5.4:
+ turbo@2.6.1:
optionalDependencies:
- turbo-darwin-64: 2.5.4
- turbo-darwin-arm64: 2.5.4
- turbo-linux-64: 2.5.4
- turbo-linux-arm64: 2.5.4
- turbo-windows-64: 2.5.4
- turbo-windows-arm64: 2.5.4
+ turbo-darwin-64: 2.6.1
+ turbo-darwin-arm64: 2.6.1
+ turbo-linux-64: 2.6.1
+ turbo-linux-arm64: 2.6.1
+ turbo-windows-64: 2.6.1
+ turbo-windows-arm64: 2.6.1
typanion@3.14.0: {}
From 5f243dbb0f29a88eeae5b8b6d5810623db8f4962 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Wed, 19 Nov 2025 11:25:28 +0100
Subject: [PATCH 012/353] =?UTF-8?q?Update=20bun=201.3.0=20=E2=86=92=201.3.?=
=?UTF-8?q?2=20(patch)=20(#19334)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/@tailwindcss-standalone/package.json | 2 +-
playgrounds/vite/package.json | 2 +-
pnpm-lock.yaml | 117 ++++++++++--------
3 files changed, 68 insertions(+), 53 deletions(-)
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index 9f78c0b2c..e21a2ec46 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -43,7 +43,7 @@
"@parcel/watcher-linux-x64-musl": "^2.5.1",
"@parcel/watcher-win32-x64": "^2.5.1",
"@types/bun": "^1.3.0",
- "bun": "^1.3.0",
+ "bun": "^1.3.2",
"lightningcss-darwin-arm64": "catalog:",
"lightningcss-darwin-x64": "catalog:",
"lightningcss-linux-arm64-gnu": "catalog:",
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index e0e696d5d..d520030b3 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -18,7 +18,7 @@
"devDependencies": {
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.2",
- "bun": "^1.3.0",
+ "bun": "^1.3.2",
"vite": "catalog:"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2521882df..2ade6b24d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -335,8 +335,8 @@ importers:
specifier: ^1.3.0
version: 1.3.0(@types/react@19.2.2)
bun:
- specifier: ^1.3.0
- version: 1.3.0
+ specifier: ^1.3.2
+ version: 1.3.2
lightningcss-darwin-arm64:
specifier: 'catalog:'
version: 1.30.2
@@ -573,8 +573,8 @@ importers:
specifier: ^19.2.2
version: 19.2.2(@types/react@19.2.2)
bun:
- specifier: ^1.3.0
- version: 1.3.0
+ specifier: ^1.3.2
+ version: 1.3.2
vite:
specifier: 'catalog:'
version: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
@@ -1931,58 +1931,58 @@ packages:
'@octokit/types@15.0.0':
resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==}
- '@oven/bun-darwin-aarch64@1.3.0':
- resolution: {integrity: sha512-WeXSaL29ylJEZMYHHW28QZ6rgAbxQ1KuNSZD9gvd3fPlo0s6s2PglvPArjjP07nmvIK9m4OffN0k4M98O7WmAg==}
+ '@oven/bun-darwin-aarch64@1.3.2':
+ resolution: {integrity: sha512-licBDIbbLP5L5/S0+bwtJynso94XD3KyqSP48K59Sq7Mude6C7dR5ZujZm4Ut4BwZqUFfNOfYNMWBU5nlL7t1A==}
cpu: [arm64]
os: [darwin]
- '@oven/bun-darwin-x64-baseline@1.3.0':
- resolution: {integrity: sha512-+FSr/ub5vA/EkD3fMhHJUzYioSf/sXd50OGxNDAntVxcDu4tXL/81Ka3R/gkZmjznpLFIzovU/1Ts+b7dlkrfw==}
+ '@oven/bun-darwin-x64-baseline@1.3.2':
+ resolution: {integrity: sha512-UHxdtbyxdtNJUNcXtIrjx3Lmq8ji3KywlXtIHV/0vn9A8W5mulqOcryqUWMFVH9JTIIzmNn6Q/qVmXHTME63Ww==}
cpu: [x64]
os: [darwin]
- '@oven/bun-darwin-x64@1.3.0':
- resolution: {integrity: sha512-CFKjoUWQH0Oz3UHYfKbdKLq0wGryrFsTJEYq839qAwHQSECvVZYAnxVVDYUDa0yQFonhO2qSHY41f6HK+b7xtw==}
+ '@oven/bun-darwin-x64@1.3.2':
+ resolution: {integrity: sha512-hn8lLzsYyyh6ULo2E8v2SqtrWOkdQKJwapeVy1rDw7juTTeHY3KDudGWf4mVYteC9riZU6HD88Fn3nGwyX0eIg==}
cpu: [x64]
os: [darwin]
- '@oven/bun-linux-aarch64-musl@1.3.0':
- resolution: {integrity: sha512-HT5sr7N8NDYbQRjAnT7ISpx64y+ewZZRQozOJb0+KQObKvg4UUNXGm4Pn1xA4/WPMZDDazjO8E2vtOQw1nJlAQ==}
+ '@oven/bun-linux-aarch64-musl@1.3.2':
+ resolution: {integrity: sha512-OD9DYkjes7WXieBn4zQZGXWhRVZhIEWMDGCetZ3H4vxIuweZ++iul/CNX5jdpNXaJ17myb1ROMvmRbrqW44j3w==}
cpu: [arm64]
os: [linux]
- '@oven/bun-linux-aarch64@1.3.0':
- resolution: {integrity: sha512-WHthS/eLkCNcp9pk4W8aubRl9fIUgt2XhHyLrP0GClB1FVvmodu/zIOtG0NXNpzlzB8+gglOkGo4dPjfVf4Z+g==}
+ '@oven/bun-linux-aarch64@1.3.2':
+ resolution: {integrity: sha512-5uZzxzvHU/z+3cZwN/A0H8G+enQ+9FkeJVZkE2fwK2XhiJZFUGAuWajCpy7GepvOWlqV7VjPaKi2+Qmr4IX7nQ==}
cpu: [arm64]
os: [linux]
- '@oven/bun-linux-x64-baseline@1.3.0':
- resolution: {integrity: sha512-OmlEH3nlxQyv7HOvTH21vyNAZGv9DIPnrTznzvKiOQxkOphhCyKvPTlF13ydw4s/i18iwaUrhHy+YG9HSSxa4Q==}
+ '@oven/bun-linux-x64-baseline@1.3.2':
+ resolution: {integrity: sha512-m9Ov9YH8KjRLui87eNtQQFKVnjGsNk3xgbrR9c8d2FS3NfZSxmVjSeBvEsDjzNf1TXLDriHb/NYOlpiMf/QzDg==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64-musl-baseline@1.3.0':
- resolution: {integrity: sha512-hrr7mDvUjMX1tuJaXz448tMsgKIqGJBY8+rJqztKOw1U5+a/v2w5HuIIW1ce7ut0ZwEn+KIDvAujlPvpH33vpQ==}
+ '@oven/bun-linux-x64-musl-baseline@1.3.2':
+ resolution: {integrity: sha512-q8Hto8hcpofPJjvuvjuwyYvhOaAzPw1F5vRUUeOJDmDwZ4lZhANFM0rUwchMzfWUJCD6jg8/EVQ8MiixnZWU0A==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64-musl@1.3.0':
- resolution: {integrity: sha512-rtzUEzCynl3Rhgn/iR9DQezSFiZMcAXAbU+xfROqsweMGKwvwIA2ckyyckO08psEP8XcUZTs3LT9CH7PnaMiEA==}
+ '@oven/bun-linux-x64-musl@1.3.2':
+ resolution: {integrity: sha512-3TuOsRVoG8K+soQWRo+Cp5ACpRs6rTFSu5tAqc/6WrqwbNWmqjov/eWJPTgz3gPXnC7uNKVG7RxxAmV8r2EYTQ==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64@1.3.0':
- resolution: {integrity: sha512-sGEWoJQXO4GDr0x4t/yJQ/Bq1yNkOdX9tHbZZ+DBGJt3z3r7jeb4Digv8xQUk6gdTFC9vnGHuin+KW3/yD1Aww==}
+ '@oven/bun-linux-x64@1.3.2':
+ resolution: {integrity: sha512-EoEuRP9bxAxVKuvi6tZ0ZENjueP4lvjz0mKsMzdG0kwg/2apGKiirH1l0RIcdmvfDGGuDmNiv/XBpkoXq1x8ug==}
cpu: [x64]
os: [linux]
- '@oven/bun-windows-x64-baseline@1.3.0':
- resolution: {integrity: sha512-/jVZ8eYjpYHLDFNoT86cP+AjuWvpkzFY+0R0a1bdeu0sQ6ILuy1FV6hz1hUAP390E09VCo5oP76fnx29giHTtA==}
+ '@oven/bun-windows-x64-baseline@1.3.2':
+ resolution: {integrity: sha512-s00T99MjB+xLOWq+t+wVaVBrry+oBOZNiTJijt+bmkp/MJptYS3FGvs7a+nkjLNzoNDoWQcXgKew6AaHES37Bg==}
cpu: [x64]
os: [win32]
- '@oven/bun-windows-x64@1.3.0':
- resolution: {integrity: sha512-xXwtpZVVP7T+vkxcF/TUVVOGRjEfkByO4mKveKYb4xnHWV4u4NnV0oNmzyMKkvmj10to5j2h0oZxA4ZVVv4gfA==}
+ '@oven/bun-windows-x64@1.3.2':
+ resolution: {integrity: sha512-nZJUa5NprPYQ4Ii4cMwtP9PzlJJTp1XhxJ+A9eSn1Jfr6YygVWyN2KLjenyI93IcuBouBAaepDAVZZjH2lFBhg==}
cpu: [x64]
os: [win32]
@@ -2007,6 +2007,7 @@ packages:
'@parcel/watcher-darwin-arm64@2.5.1':
resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.0':
@@ -2018,6 +2019,7 @@ packages:
'@parcel/watcher-darwin-x64@2.5.1':
resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.0':
@@ -2065,6 +2067,7 @@ packages:
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-arm64-musl@2.5.0':
@@ -2076,6 +2079,7 @@ packages:
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-x64-glibc@2.5.0':
@@ -2087,6 +2091,7 @@ packages:
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [linux]
'@parcel/watcher-linux-x64-musl@2.5.0':
@@ -2098,6 +2103,7 @@ packages:
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [linux]
'@parcel/watcher-wasm@2.5.0':
@@ -2139,6 +2145,7 @@ packages:
'@parcel/watcher-win32-x64@2.5.1':
resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [win32]
'@parcel/watcher@2.5.0':
@@ -2669,8 +2676,9 @@ packages:
peerDependencies:
'@types/react': ^19
- bun@1.3.0:
- resolution: {integrity: sha512-YI7mFs7iWc/VsGsh2aw6eAPD2cjzn1j+LKdYVk09x1CrdTWKYIHyd+dG5iQoN9//3hCDoZj8U6vKpZzEf5UARA==}
+ bun@1.3.2:
+ resolution: {integrity: sha512-x75mPJiEfhO1j4Tfc65+PtW6ZyrAB6yTZInydnjDZXF9u9PRAnr6OK3v0Q9dpDl0dxRHkXlYvJ8tteJxc8t4Sw==}
+ cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -3539,11 +3547,13 @@ packages:
lightningcss-darwin-arm64@1.30.2:
resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.30.2:
resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.30.2:
@@ -3561,21 +3571,25 @@ packages:
lightningcss-linux-arm64-gnu@1.30.2:
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [linux]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [linux]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [linux]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [linux]
lightningcss-win32-arm64-msvc@1.30.2:
@@ -3587,6 +3601,7 @@ packages:
lightningcss-win32-x64-msvc@1.30.2:
resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [win32]
lightningcss@1.30.2:
@@ -5703,37 +5718,37 @@ snapshots:
dependencies:
'@octokit/openapi-types': 26.0.0
- '@oven/bun-darwin-aarch64@1.3.0':
+ '@oven/bun-darwin-aarch64@1.3.2':
optional: true
- '@oven/bun-darwin-x64-baseline@1.3.0':
+ '@oven/bun-darwin-x64-baseline@1.3.2':
optional: true
- '@oven/bun-darwin-x64@1.3.0':
+ '@oven/bun-darwin-x64@1.3.2':
optional: true
- '@oven/bun-linux-aarch64-musl@1.3.0':
+ '@oven/bun-linux-aarch64-musl@1.3.2':
optional: true
- '@oven/bun-linux-aarch64@1.3.0':
+ '@oven/bun-linux-aarch64@1.3.2':
optional: true
- '@oven/bun-linux-x64-baseline@1.3.0':
+ '@oven/bun-linux-x64-baseline@1.3.2':
optional: true
- '@oven/bun-linux-x64-musl-baseline@1.3.0':
+ '@oven/bun-linux-x64-musl-baseline@1.3.2':
optional: true
- '@oven/bun-linux-x64-musl@1.3.0':
+ '@oven/bun-linux-x64-musl@1.3.2':
optional: true
- '@oven/bun-linux-x64@1.3.0':
+ '@oven/bun-linux-x64@1.3.2':
optional: true
- '@oven/bun-windows-x64-baseline@1.3.0':
+ '@oven/bun-windows-x64-baseline@1.3.2':
optional: true
- '@oven/bun-windows-x64@1.3.0':
+ '@oven/bun-windows-x64@1.3.2':
optional: true
'@parcel/watcher-android-arm64@2.5.0':
@@ -6431,19 +6446,19 @@ snapshots:
'@types/node': 20.19.1
'@types/react': 19.2.2
- bun@1.3.0:
+ bun@1.3.2:
optionalDependencies:
- '@oven/bun-darwin-aarch64': 1.3.0
- '@oven/bun-darwin-x64': 1.3.0
- '@oven/bun-darwin-x64-baseline': 1.3.0
- '@oven/bun-linux-aarch64': 1.3.0
- '@oven/bun-linux-aarch64-musl': 1.3.0
- '@oven/bun-linux-x64': 1.3.0
- '@oven/bun-linux-x64-baseline': 1.3.0
- '@oven/bun-linux-x64-musl': 1.3.0
- '@oven/bun-linux-x64-musl-baseline': 1.3.0
- '@oven/bun-windows-x64': 1.3.0
- '@oven/bun-windows-x64-baseline': 1.3.0
+ '@oven/bun-darwin-aarch64': 1.3.2
+ '@oven/bun-darwin-x64': 1.3.2
+ '@oven/bun-darwin-x64-baseline': 1.3.2
+ '@oven/bun-linux-aarch64': 1.3.2
+ '@oven/bun-linux-aarch64-musl': 1.3.2
+ '@oven/bun-linux-x64': 1.3.2
+ '@oven/bun-linux-x64-baseline': 1.3.2
+ '@oven/bun-linux-x64-musl': 1.3.2
+ '@oven/bun-linux-x64-musl-baseline': 1.3.2
+ '@oven/bun-windows-x64': 1.3.2
+ '@oven/bun-windows-x64-baseline': 1.3.2
bundle-require@5.1.0(esbuild@0.25.0):
dependencies:
From 3d899f73f83b40b8539b7370b595268c04f2ccf6 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Wed, 19 Nov 2025 10:30:36 +0000
Subject: [PATCH 013/353] Update @types/react-dom to version 19.2.3
---
playgrounds/nextjs/package.json | 2 +-
playgrounds/v3/package.json | 2 +-
playgrounds/vite/package.json | 2 +-
pnpm-lock.yaml | 18 +++++++++---------
4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index af85e1c5d..bd1b36cd2 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -19,7 +19,7 @@
"devDependencies": {
"@types/node": "catalog:",
"@types/react": "^19.2.2",
- "@types/react-dom": "^19.2.2",
+ "@types/react-dom": "^19.2.3",
"eslint": "^9.39.1",
"eslint-config-next": "^15.5.6",
"typescript": "^5.5.4"
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index 6f5d1276a..b09718ea7 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -17,7 +17,7 @@
"devDependencies": {
"@types/node": "^20.14.8",
"@types/react": "^19.2.2",
- "@types/react-dom": "^19.2.2",
+ "@types/react-dom": "^19.2.3",
"autoprefixer": "^10.4.22",
"eslint": "^9.39.1",
"eslint-config-next": "^15.5.6",
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index d520030b3..5c2d0d60c 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -17,7 +17,7 @@
},
"devDependencies": {
"@types/react": "^19.2.2",
- "@types/react-dom": "^19.2.2",
+ "@types/react-dom": "^19.2.3",
"bun": "^1.3.2",
"vite": "catalog:"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2ade6b24d..ba52f8f35 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -499,8 +499,8 @@ importers:
specifier: ^19.2.2
version: 19.2.2
'@types/react-dom':
- specifier: ^19.2.2
- version: 19.2.2(@types/react@19.2.2)
+ specifier: ^19.2.3
+ version: 19.2.3(@types/react@19.2.2)
eslint:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
@@ -533,8 +533,8 @@ importers:
specifier: ^19.2.2
version: 19.2.2
'@types/react-dom':
- specifier: ^19.2.2
- version: 19.2.2(@types/react@19.2.2)
+ specifier: ^19.2.3
+ version: 19.2.3(@types/react@19.2.2)
autoprefixer:
specifier: ^10.4.22
version: 10.4.22(postcss@8.4.47)
@@ -570,8 +570,8 @@ importers:
specifier: ^19.2.2
version: 19.2.2
'@types/react-dom':
- specifier: ^19.2.2
- version: 19.2.2(@types/react@19.2.2)
+ specifier: ^19.2.3
+ version: 19.2.3(@types/react@19.2.2)
bun:
specifier: ^1.3.2
version: 1.3.2
@@ -2433,8 +2433,8 @@ packages:
'@types/postcss-import@14.0.3':
resolution: {integrity: sha512-raZhRVTf6Vw5+QbmQ7LOHSDML71A5rj4+EqDzAbrZPfxfoGzFxMHRCq16VlddGIZpHELw0BG4G0YE2ANkdZiIQ==}
- '@types/react-dom@19.2.2':
- resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==}
+ '@types/react-dom@19.2.3':
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
peerDependencies:
'@types/react': ^19.2.0
@@ -6072,7 +6072,7 @@ snapshots:
dependencies:
postcss: 8.4.41
- '@types/react-dom@19.2.2(@types/react@19.2.2)':
+ '@types/react-dom@19.2.3(@types/react@19.2.2)':
dependencies:
'@types/react': 19.2.2
From 172c663bd60ec8a6f854330889b8a4c8bd568b02 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Wed, 19 Nov 2025 18:18:45 -0500
Subject: [PATCH 014/353] =?UTF-8?q?Update=20tsup=208.5.0=20=E2=86=92=208.5?=
=?UTF-8?q?.1=20(patch)=20(#19338)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ tsup (8.5.0 → 8.5.1)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 535 ++++++++++++++++++++++++++-----------------------
2 files changed, 286 insertions(+), 251 deletions(-)
diff --git a/package.json b/package.json
index 86912d548..bd0eb5491 100644
--- a/package.json
+++ b/package.json
@@ -55,7 +55,7 @@
"prettier": "catalog:",
"prettier-plugin-embed": "^0.5.0",
"prettier-plugin-organize-imports": "^4.3.0",
- "tsup": "^8.5.0",
+ "tsup": "^8.5.1",
"turbo": "^2.6.1",
"typescript": "^5.5.4",
"vitest": "^2.0.5"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ba52f8f35..4555cf507 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -74,8 +74,8 @@ importers:
specifier: ^4.3.0
version: 4.3.0(prettier@3.6.2)(typescript@5.5.4)
tsup:
- specifier: ^8.5.0
- version: 8.5.0(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.6.0)
+ specifier: ^8.5.1
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.6.0)
turbo:
specifier: ^2.6.1
version: 2.6.1
@@ -705,6 +705,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.27.0':
+ resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/android-arm64@0.21.5':
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
engines: {node: '>=12'}
@@ -723,6 +729,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.27.0':
+ resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm@0.21.5':
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
engines: {node: '>=12'}
@@ -741,6 +753,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.27.0':
+ resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-x64@0.21.5':
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
engines: {node: '>=12'}
@@ -759,6 +777,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.27.0':
+ resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/darwin-arm64@0.21.5':
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
engines: {node: '>=12'}
@@ -777,6 +801,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.27.0':
+ resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.21.5':
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
engines: {node: '>=12'}
@@ -795,6 +825,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.27.0':
+ resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/freebsd-arm64@0.21.5':
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
engines: {node: '>=12'}
@@ -813,6 +849,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.27.0':
+ resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.21.5':
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
engines: {node: '>=12'}
@@ -831,6 +873,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.27.0':
+ resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/linux-arm64@0.21.5':
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
engines: {node: '>=12'}
@@ -849,6 +897,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.27.0':
+ resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm@0.21.5':
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
engines: {node: '>=12'}
@@ -867,6 +921,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.27.0':
+ resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-ia32@0.21.5':
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
engines: {node: '>=12'}
@@ -885,6 +945,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.27.0':
+ resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-loong64@0.21.5':
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
engines: {node: '>=12'}
@@ -903,6 +969,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.27.0':
+ resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.21.5':
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
engines: {node: '>=12'}
@@ -921,6 +993,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.27.0':
+ resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.21.5':
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
engines: {node: '>=12'}
@@ -939,6 +1017,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.27.0':
+ resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.21.5':
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
engines: {node: '>=12'}
@@ -957,6 +1041,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.27.0':
+ resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-s390x@0.21.5':
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
engines: {node: '>=12'}
@@ -975,6 +1065,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.27.0':
+ resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-x64@0.21.5':
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
engines: {node: '>=12'}
@@ -993,12 +1089,24 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.27.0':
+ resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/netbsd-arm64@0.25.0':
resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-arm64@0.27.0':
+ resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.21.5':
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
@@ -1017,6 +1125,12 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.27.0':
+ resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/openbsd-arm64@0.23.1':
resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
engines: {node: '>=18'}
@@ -1029,6 +1143,12 @@ packages:
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.27.0':
+ resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.21.5':
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
engines: {node: '>=12'}
@@ -1047,6 +1167,18 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.27.0':
+ resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.27.0':
+ resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/sunos-x64@0.21.5':
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
engines: {node: '>=12'}
@@ -1065,6 +1197,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.27.0':
+ resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/win32-arm64@0.21.5':
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
engines: {node: '>=12'}
@@ -1083,6 +1221,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.27.0':
+ resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-ia32@0.21.5':
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
engines: {node: '>=12'}
@@ -1101,6 +1245,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.27.0':
+ resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-x64@0.21.5':
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
engines: {node: '>=12'}
@@ -1119,6 +1269,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.27.0':
+ resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@eslint-community/eslint-utils@4.9.0':
resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -2168,131 +2324,66 @@ packages:
'@rolldown/pluginutils@1.0.0-beta.43':
resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==}
- '@rollup/rollup-android-arm-eabi@4.34.9':
- resolution: {integrity: sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==}
- cpu: [arm]
- os: [android]
-
'@rollup/rollup-android-arm-eabi@4.44.0':
resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.34.9':
- resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==}
- cpu: [arm64]
- os: [android]
-
'@rollup/rollup-android-arm64@4.44.0':
resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.34.9':
- resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==}
- cpu: [arm64]
- os: [darwin]
-
'@rollup/rollup-darwin-arm64@4.44.0':
resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.34.9':
- resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==}
- cpu: [x64]
- os: [darwin]
-
'@rollup/rollup-darwin-x64@4.44.0':
resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.34.9':
- resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==}
- cpu: [arm64]
- os: [freebsd]
-
'@rollup/rollup-freebsd-arm64@4.44.0':
resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.34.9':
- resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==}
- cpu: [x64]
- os: [freebsd]
-
'@rollup/rollup-freebsd-x64@4.44.0':
resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.34.9':
- resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==}
- cpu: [arm]
- os: [linux]
-
'@rollup/rollup-linux-arm-gnueabihf@4.44.0':
resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.34.9':
- resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==}
- cpu: [arm]
- os: [linux]
-
'@rollup/rollup-linux-arm-musleabihf@4.44.0':
resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.34.9':
- resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==}
- cpu: [arm64]
- os: [linux]
-
'@rollup/rollup-linux-arm64-gnu@4.44.0':
resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.34.9':
- resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==}
- cpu: [arm64]
- os: [linux]
-
'@rollup/rollup-linux-arm64-musl@4.44.0':
resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loongarch64-gnu@4.34.9':
- resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==}
- cpu: [loong64]
- os: [linux]
-
'@rollup/rollup-linux-loongarch64-gnu@4.44.0':
resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.34.9':
- resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==}
- cpu: [ppc64]
- os: [linux]
-
'@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.34.9':
- resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==}
- cpu: [riscv64]
- os: [linux]
-
'@rollup/rollup-linux-riscv64-gnu@4.44.0':
resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==}
cpu: [riscv64]
@@ -2303,61 +2394,31 @@ packages:
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.34.9':
- resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==}
- cpu: [s390x]
- os: [linux]
-
'@rollup/rollup-linux-s390x-gnu@4.44.0':
resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.34.9':
- resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==}
- cpu: [x64]
- os: [linux]
-
'@rollup/rollup-linux-x64-gnu@4.44.0':
resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.34.9':
- resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==}
- cpu: [x64]
- os: [linux]
-
'@rollup/rollup-linux-x64-musl@4.44.0':
resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.34.9':
- resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==}
- cpu: [arm64]
- os: [win32]
-
'@rollup/rollup-win32-arm64-msvc@4.44.0':
resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.34.9':
- resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==}
- cpu: [ia32]
- os: [win32]
-
'@rollup/rollup-win32-ia32-msvc@4.44.0':
resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.34.9':
- resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==}
- cpu: [x64]
- os: [win32]
-
'@rollup/rollup-win32-x64-msvc@4.44.0':
resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==}
cpu: [x64]
@@ -2846,15 +2907,6 @@ packages:
supports-color:
optional: true
- debug@4.4.0:
- resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
@@ -2988,6 +3040,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.27.0:
+ resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
@@ -3634,9 +3691,6 @@ packages:
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
- lodash.sortby@4.7.0:
- resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
-
loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@@ -4104,11 +4158,6 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rollup@4.34.9:
- resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
rollup@4.44.0:
resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@@ -4189,10 +4238,9 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
- source-map@0.8.0-beta.0:
- resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
- engines: {node: '>= 8'}
- deprecated: The work that was done in this beta branch won't be included in future versions
+ source-map@0.7.6:
+ resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ engines: {node: '>= 12'}
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
@@ -4310,10 +4358,6 @@ packages:
tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
- tinyglobby@0.2.12:
- resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
- engines: {node: '>=12.0.0'}
-
tinyglobby@0.2.14:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
@@ -4334,9 +4378,6 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
- tr46@1.0.1:
- resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
-
tree-kill@1.2.2:
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
hasBin: true
@@ -4375,8 +4416,8 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tsup@8.5.0:
- resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==}
+ tsup@8.5.1:
+ resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==}
engines: {node: '>=18'}
hasBin: true
peerDependencies:
@@ -4621,12 +4662,6 @@ packages:
jsdom:
optional: true
- webidl-conversions@4.0.2:
- resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
-
- whatwg-url@7.1.0:
- resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
-
which-boxed-primitive@1.0.2:
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
@@ -4836,6 +4871,9 @@ snapshots:
'@esbuild/aix-ppc64@0.25.0':
optional: true
+ '@esbuild/aix-ppc64@0.27.0':
+ optional: true
+
'@esbuild/android-arm64@0.21.5':
optional: true
@@ -4845,6 +4883,9 @@ snapshots:
'@esbuild/android-arm64@0.25.0':
optional: true
+ '@esbuild/android-arm64@0.27.0':
+ optional: true
+
'@esbuild/android-arm@0.21.5':
optional: true
@@ -4854,6 +4895,9 @@ snapshots:
'@esbuild/android-arm@0.25.0':
optional: true
+ '@esbuild/android-arm@0.27.0':
+ optional: true
+
'@esbuild/android-x64@0.21.5':
optional: true
@@ -4863,6 +4907,9 @@ snapshots:
'@esbuild/android-x64@0.25.0':
optional: true
+ '@esbuild/android-x64@0.27.0':
+ optional: true
+
'@esbuild/darwin-arm64@0.21.5':
optional: true
@@ -4872,6 +4919,9 @@ snapshots:
'@esbuild/darwin-arm64@0.25.0':
optional: true
+ '@esbuild/darwin-arm64@0.27.0':
+ optional: true
+
'@esbuild/darwin-x64@0.21.5':
optional: true
@@ -4881,6 +4931,9 @@ snapshots:
'@esbuild/darwin-x64@0.25.0':
optional: true
+ '@esbuild/darwin-x64@0.27.0':
+ optional: true
+
'@esbuild/freebsd-arm64@0.21.5':
optional: true
@@ -4890,6 +4943,9 @@ snapshots:
'@esbuild/freebsd-arm64@0.25.0':
optional: true
+ '@esbuild/freebsd-arm64@0.27.0':
+ optional: true
+
'@esbuild/freebsd-x64@0.21.5':
optional: true
@@ -4899,6 +4955,9 @@ snapshots:
'@esbuild/freebsd-x64@0.25.0':
optional: true
+ '@esbuild/freebsd-x64@0.27.0':
+ optional: true
+
'@esbuild/linux-arm64@0.21.5':
optional: true
@@ -4908,6 +4967,9 @@ snapshots:
'@esbuild/linux-arm64@0.25.0':
optional: true
+ '@esbuild/linux-arm64@0.27.0':
+ optional: true
+
'@esbuild/linux-arm@0.21.5':
optional: true
@@ -4917,6 +4979,9 @@ snapshots:
'@esbuild/linux-arm@0.25.0':
optional: true
+ '@esbuild/linux-arm@0.27.0':
+ optional: true
+
'@esbuild/linux-ia32@0.21.5':
optional: true
@@ -4926,6 +4991,9 @@ snapshots:
'@esbuild/linux-ia32@0.25.0':
optional: true
+ '@esbuild/linux-ia32@0.27.0':
+ optional: true
+
'@esbuild/linux-loong64@0.21.5':
optional: true
@@ -4935,6 +5003,9 @@ snapshots:
'@esbuild/linux-loong64@0.25.0':
optional: true
+ '@esbuild/linux-loong64@0.27.0':
+ optional: true
+
'@esbuild/linux-mips64el@0.21.5':
optional: true
@@ -4944,6 +5015,9 @@ snapshots:
'@esbuild/linux-mips64el@0.25.0':
optional: true
+ '@esbuild/linux-mips64el@0.27.0':
+ optional: true
+
'@esbuild/linux-ppc64@0.21.5':
optional: true
@@ -4953,6 +5027,9 @@ snapshots:
'@esbuild/linux-ppc64@0.25.0':
optional: true
+ '@esbuild/linux-ppc64@0.27.0':
+ optional: true
+
'@esbuild/linux-riscv64@0.21.5':
optional: true
@@ -4962,6 +5039,9 @@ snapshots:
'@esbuild/linux-riscv64@0.25.0':
optional: true
+ '@esbuild/linux-riscv64@0.27.0':
+ optional: true
+
'@esbuild/linux-s390x@0.21.5':
optional: true
@@ -4971,6 +5051,9 @@ snapshots:
'@esbuild/linux-s390x@0.25.0':
optional: true
+ '@esbuild/linux-s390x@0.27.0':
+ optional: true
+
'@esbuild/linux-x64@0.21.5':
optional: true
@@ -4980,9 +5063,15 @@ snapshots:
'@esbuild/linux-x64@0.25.0':
optional: true
+ '@esbuild/linux-x64@0.27.0':
+ optional: true
+
'@esbuild/netbsd-arm64@0.25.0':
optional: true
+ '@esbuild/netbsd-arm64@0.27.0':
+ optional: true
+
'@esbuild/netbsd-x64@0.21.5':
optional: true
@@ -4992,12 +5081,18 @@ snapshots:
'@esbuild/netbsd-x64@0.25.0':
optional: true
+ '@esbuild/netbsd-x64@0.27.0':
+ optional: true
+
'@esbuild/openbsd-arm64@0.23.1':
optional: true
'@esbuild/openbsd-arm64@0.25.0':
optional: true
+ '@esbuild/openbsd-arm64@0.27.0':
+ optional: true
+
'@esbuild/openbsd-x64@0.21.5':
optional: true
@@ -5007,6 +5102,12 @@ snapshots:
'@esbuild/openbsd-x64@0.25.0':
optional: true
+ '@esbuild/openbsd-x64@0.27.0':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.27.0':
+ optional: true
+
'@esbuild/sunos-x64@0.21.5':
optional: true
@@ -5016,6 +5117,9 @@ snapshots:
'@esbuild/sunos-x64@0.25.0':
optional: true
+ '@esbuild/sunos-x64@0.27.0':
+ optional: true
+
'@esbuild/win32-arm64@0.21.5':
optional: true
@@ -5025,6 +5129,9 @@ snapshots:
'@esbuild/win32-arm64@0.25.0':
optional: true
+ '@esbuild/win32-arm64@0.27.0':
+ optional: true
+
'@esbuild/win32-ia32@0.21.5':
optional: true
@@ -5034,6 +5141,9 @@ snapshots:
'@esbuild/win32-ia32@0.25.0':
optional: true
+ '@esbuild/win32-ia32@0.27.0':
+ optional: true
+
'@esbuild/win32-x64@0.21.5':
optional: true
@@ -5043,6 +5153,9 @@ snapshots:
'@esbuild/win32-x64@0.25.0':
optional: true
+ '@esbuild/win32-x64@0.27.0':
+ optional: true
+
'@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))':
dependencies:
eslint: 9.39.1(jiti@2.6.1)
@@ -5878,120 +5991,63 @@ snapshots:
'@rolldown/pluginutils@1.0.0-beta.43': {}
- '@rollup/rollup-android-arm-eabi@4.34.9':
- optional: true
-
'@rollup/rollup-android-arm-eabi@4.44.0':
optional: true
- '@rollup/rollup-android-arm64@4.34.9':
- optional: true
-
'@rollup/rollup-android-arm64@4.44.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.34.9':
- optional: true
-
'@rollup/rollup-darwin-arm64@4.44.0':
optional: true
- '@rollup/rollup-darwin-x64@4.34.9':
- optional: true
-
'@rollup/rollup-darwin-x64@4.44.0':
optional: true
- '@rollup/rollup-freebsd-arm64@4.34.9':
- optional: true
-
'@rollup/rollup-freebsd-arm64@4.44.0':
optional: true
- '@rollup/rollup-freebsd-x64@4.34.9':
- optional: true
-
'@rollup/rollup-freebsd-x64@4.44.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.34.9':
- optional: true
-
'@rollup/rollup-linux-arm-gnueabihf@4.44.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.34.9':
- optional: true
-
'@rollup/rollup-linux-arm-musleabihf@4.44.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.34.9':
- optional: true
-
'@rollup/rollup-linux-arm64-gnu@4.44.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.34.9':
- optional: true
-
'@rollup/rollup-linux-arm64-musl@4.44.0':
optional: true
- '@rollup/rollup-linux-loongarch64-gnu@4.34.9':
- optional: true
-
'@rollup/rollup-linux-loongarch64-gnu@4.44.0':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.34.9':
- optional: true
-
'@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.34.9':
- optional: true
-
'@rollup/rollup-linux-riscv64-gnu@4.44.0':
optional: true
'@rollup/rollup-linux-riscv64-musl@4.44.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.34.9':
- optional: true
-
'@rollup/rollup-linux-s390x-gnu@4.44.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.34.9':
- optional: true
-
'@rollup/rollup-linux-x64-gnu@4.44.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.34.9':
- optional: true
-
'@rollup/rollup-linux-x64-musl@4.44.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.34.9':
- optional: true
-
'@rollup/rollup-win32-arm64-msvc@4.44.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.34.9':
- optional: true
-
'@rollup/rollup-win32-ia32-msvc@4.44.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.34.9':
- optional: true
-
'@rollup/rollup-win32-x64-msvc@4.44.0':
optional: true
@@ -6460,9 +6516,9 @@ snapshots:
'@oven/bun-windows-x64': 1.3.2
'@oven/bun-windows-x64-baseline': 1.3.2
- bundle-require@5.1.0(esbuild@0.25.0):
+ bundle-require@5.1.0(esbuild@0.27.0):
dependencies:
- esbuild: 0.25.0
+ esbuild: 0.27.0
load-tsconfig: 0.2.5
cac@6.7.14: {}
@@ -6617,10 +6673,6 @@ snapshots:
dependencies:
ms: 2.1.2
- debug@4.4.0:
- dependencies:
- ms: 2.1.3
-
debug@4.4.3:
dependencies:
ms: 2.1.3
@@ -6854,6 +6906,35 @@ snapshots:
'@esbuild/win32-ia32': 0.25.0
'@esbuild/win32-x64': 0.25.0
+ esbuild@0.27.0:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.0
+ '@esbuild/android-arm': 0.27.0
+ '@esbuild/android-arm64': 0.27.0
+ '@esbuild/android-x64': 0.27.0
+ '@esbuild/darwin-arm64': 0.27.0
+ '@esbuild/darwin-x64': 0.27.0
+ '@esbuild/freebsd-arm64': 0.27.0
+ '@esbuild/freebsd-x64': 0.27.0
+ '@esbuild/linux-arm': 0.27.0
+ '@esbuild/linux-arm64': 0.27.0
+ '@esbuild/linux-ia32': 0.27.0
+ '@esbuild/linux-loong64': 0.27.0
+ '@esbuild/linux-mips64el': 0.27.0
+ '@esbuild/linux-ppc64': 0.27.0
+ '@esbuild/linux-riscv64': 0.27.0
+ '@esbuild/linux-s390x': 0.27.0
+ '@esbuild/linux-x64': 0.27.0
+ '@esbuild/netbsd-arm64': 0.27.0
+ '@esbuild/netbsd-x64': 0.27.0
+ '@esbuild/openbsd-arm64': 0.27.0
+ '@esbuild/openbsd-x64': 0.27.0
+ '@esbuild/openharmony-arm64': 0.27.0
+ '@esbuild/sunos-x64': 0.27.0
+ '@esbuild/win32-arm64': 0.27.0
+ '@esbuild/win32-ia32': 0.27.0
+ '@esbuild/win32-x64': 0.27.0
+
escalade@3.2.0: {}
escape-string-regexp@4.0.0: {}
@@ -7632,8 +7713,6 @@ snapshots:
lodash.merge@4.6.2: {}
- lodash.sortby@4.7.0: {}
-
loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
@@ -8064,31 +8143,6 @@ snapshots:
reusify@1.0.4: {}
- rollup@4.34.9:
- dependencies:
- '@types/estree': 1.0.6
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.34.9
- '@rollup/rollup-android-arm64': 4.34.9
- '@rollup/rollup-darwin-arm64': 4.34.9
- '@rollup/rollup-darwin-x64': 4.34.9
- '@rollup/rollup-freebsd-arm64': 4.34.9
- '@rollup/rollup-freebsd-x64': 4.34.9
- '@rollup/rollup-linux-arm-gnueabihf': 4.34.9
- '@rollup/rollup-linux-arm-musleabihf': 4.34.9
- '@rollup/rollup-linux-arm64-gnu': 4.34.9
- '@rollup/rollup-linux-arm64-musl': 4.34.9
- '@rollup/rollup-linux-loongarch64-gnu': 4.34.9
- '@rollup/rollup-linux-powerpc64le-gnu': 4.34.9
- '@rollup/rollup-linux-riscv64-gnu': 4.34.9
- '@rollup/rollup-linux-s390x-gnu': 4.34.9
- '@rollup/rollup-linux-x64-gnu': 4.34.9
- '@rollup/rollup-linux-x64-musl': 4.34.9
- '@rollup/rollup-win32-arm64-msvc': 4.34.9
- '@rollup/rollup-win32-ia32-msvc': 4.34.9
- '@rollup/rollup-win32-x64-msvc': 4.34.9
- fsevents: 2.3.3
-
rollup@4.44.0:
dependencies:
'@types/estree': 1.0.8
@@ -8221,9 +8275,7 @@ snapshots:
source-map@0.6.1:
optional: true
- source-map@0.8.0-beta.0:
- dependencies:
- whatwg-url: 7.1.0
+ source-map@0.7.6: {}
stackback@0.0.2: {}
@@ -8374,11 +8426,6 @@ snapshots:
tinyexec@0.3.2: {}
- tinyglobby@0.2.12:
- dependencies:
- fdir: 6.4.6(picomatch@4.0.2)
- picomatch: 4.0.2
-
tinyglobby@0.2.14:
dependencies:
fdir: 6.4.6(picomatch@4.0.2)
@@ -8394,10 +8441,6 @@ snapshots:
dependencies:
is-number: 7.0.0
- tr46@1.0.1:
- dependencies:
- punycode: 2.3.1
-
tree-kill@1.2.2: {}
tree-sitter-javascript@0.23.1(tree-sitter@0.22.4):
@@ -8439,24 +8482,24 @@ snapshots:
tslib@2.8.1: {}
- tsup@8.5.0(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.6.0):
+ tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.6.0):
dependencies:
- bundle-require: 5.1.0(esbuild@0.25.0)
+ bundle-require: 5.1.0(esbuild@0.27.0)
cac: 6.7.14
chokidar: 4.0.3
consola: 3.4.0
- debug: 4.4.0
- esbuild: 0.25.0
+ debug: 4.4.3
+ esbuild: 0.27.0
fix-dts-default-cjs-exports: 1.0.1
joycon: 3.1.1
picocolors: 1.1.1
postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(yaml@2.6.0)
resolve-from: 5.0.0
- rollup: 4.34.9
- source-map: 0.8.0-beta.0
+ rollup: 4.44.0
+ source-map: 0.7.6
sucrase: 3.35.0
tinyexec: 0.3.2
- tinyglobby: 0.2.12
+ tinyglobby: 0.2.14
tree-kill: 1.2.2
optionalDependencies:
postcss: 8.5.6
@@ -8672,14 +8715,6 @@ snapshots:
- supports-color
- terser
- webidl-conversions@4.0.2: {}
-
- whatwg-url@7.1.0:
- dependencies:
- lodash.sortby: 4.7.0
- tr46: 1.0.1
- webidl-conversions: 4.0.2
-
which-boxed-primitive@1.0.2:
dependencies:
is-bigint: 1.0.4
From 7c0eeaa3a61bcd9b79e89b22b87bd7580f376ff3 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Thu, 20 Nov 2025 10:54:23 -0500
Subject: [PATCH 015/353] =?UTF-8?q?Update=20all=20of=20nextjs=2015.5.6=20?=
=?UTF-8?q?=E2=86=92=2016.0.3=20(major)=20(#19341)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this upgrade. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ eslint-config-next (15.5.6 → 16.0.3)
Sorry, we couldn't find anything useful about this release.
#### ✳️ next (15.5.6 → 16.0.3) ·
[Repo](https://github.com/vercel/next.js)
Release Notes
More info than we can show here.
More info than we can show here.
More info than we can show here.
More info than we can show here.
Does any of this look wrong? Please let us
know.
Commits
See
the full diff on Github . The new version differs by more commits
than we can show here.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
---------
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
Co-authored-by: Jordan Pittman
---
playgrounds/nextjs/package.json | 6 +-
playgrounds/v3/package.json | 6 +-
pnpm-lock.yaml | 1816 ++++++++++++++++++-------------
3 files changed, 1046 insertions(+), 782 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index bd1b36cd2..32968272b 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -11,17 +11,17 @@
"dependencies": {
"@tailwindcss/postcss": "workspace:^",
"fast-glob": "^3.3.3",
- "next": "15.5.6",
+ "next": "^16.0.3",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"tailwindcss": "workspace:^"
},
"devDependencies": {
"@types/node": "catalog:",
- "@types/react": "^19.2.2",
+ "@types/react": "^19.2.6",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.1",
- "eslint-config-next": "^15.5.6",
+ "eslint-config-next": "^16.0.3",
"typescript": "^5.5.4"
}
}
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index b09718ea7..d1c31ed61 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -9,18 +9,18 @@
"upgrade": "node scripts/upgrade.mjs"
},
"dependencies": {
- "next": "15.5.6",
+ "next": "^16.0.3",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"tailwindcss": "^3"
},
"devDependencies": {
"@types/node": "^20.14.8",
- "@types/react": "^19.2.2",
+ "@types/react": "^19.2.6",
"@types/react-dom": "^19.2.3",
"autoprefixer": "^10.4.22",
"eslint": "^9.39.1",
- "eslint-config-next": "^15.5.6",
+ "eslint-config-next": "^16.0.3",
"typescript": "^5.5.4"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4555cf507..8078a85e6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -127,7 +127,7 @@ importers:
devDependencies:
'@napi-rs/cli':
specifier: ^3.4.1
- version: 3.4.1(@emnapi/runtime@1.6.0)(@types/node@20.19.1)(node-addon-api@8.3.0)
+ version: 3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
specifier: ^1.0.7
version: 1.0.7
@@ -333,7 +333,7 @@ importers:
version: 2.5.1
'@types/bun':
specifier: ^1.3.0
- version: 1.3.0(@types/react@19.2.2)
+ version: 1.3.0(@types/react@19.2.6)
bun:
specifier: ^1.3.2
version: 1.3.2
@@ -480,8 +480,8 @@ importers:
specifier: ^3.3.3
version: 3.3.3
next:
- specifier: 15.5.6
- version: 15.5.6(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ specifier: ^16.0.3
+ version: 16.0.3(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -496,17 +496,17 @@ importers:
specifier: 'catalog:'
version: 20.19.1
'@types/react':
- specifier: ^19.2.2
- version: 19.2.2
+ specifier: ^19.2.6
+ version: 19.2.6
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.2)
+ version: 19.2.3(@types/react@19.2.6)
eslint:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: ^15.5.6
- version: 15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ specifier: ^16.0.3
+ version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -514,8 +514,8 @@ importers:
playgrounds/v3:
dependencies:
next:
- specifier: 15.5.6
- version: 15.5.6(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ specifier: ^16.0.3
+ version: 16.0.3(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -530,11 +530,11 @@ importers:
specifier: ^20.14.8
version: 20.14.13
'@types/react':
- specifier: ^19.2.2
- version: 19.2.2
+ specifier: ^19.2.6
+ version: 19.2.6
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.2)
+ version: 19.2.3(@types/react@19.2.6)
autoprefixer:
specifier: ^10.4.22
version: 10.4.22(postcss@8.4.47)
@@ -542,8 +542,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: ^15.5.6
- version: 15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ specifier: ^16.0.3
+ version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -684,6 +684,9 @@ packages:
'@emnapi/runtime@1.6.0':
resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==}
+ '@emnapi/runtime@1.7.1':
+ resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
+
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
@@ -1333,124 +1336,139 @@ packages:
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
engines: {node: '>=18.18'}
- '@img/sharp-darwin-arm64@0.34.3':
- resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==}
+ '@img/colour@1.0.0':
+ resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
+ engines: {node: '>=18'}
+
+ '@img/sharp-darwin-arm64@0.34.5':
+ resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-x64@0.34.3':
- resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==}
+ '@img/sharp-darwin-x64@0.34.5':
+ resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-darwin-arm64@1.2.0':
- resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==}
+ '@img/sharp-libvips-darwin-arm64@1.2.4':
+ resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
cpu: [arm64]
os: [darwin]
- '@img/sharp-libvips-darwin-x64@1.2.0':
- resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==}
+ '@img/sharp-libvips-darwin-x64@1.2.4':
+ resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-linux-arm64@1.2.0':
- resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==}
+ '@img/sharp-libvips-linux-arm64@1.2.4':
+ resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linux-arm@1.2.0':
- resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==}
+ '@img/sharp-libvips-linux-arm@1.2.4':
+ resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
cpu: [arm]
os: [linux]
- '@img/sharp-libvips-linux-ppc64@1.2.0':
- resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==}
+ '@img/sharp-libvips-linux-ppc64@1.2.4':
+ resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
cpu: [ppc64]
os: [linux]
- '@img/sharp-libvips-linux-s390x@1.2.0':
- resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==}
+ '@img/sharp-libvips-linux-riscv64@1.2.4':
+ resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-s390x@1.2.4':
+ resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
cpu: [s390x]
os: [linux]
- '@img/sharp-libvips-linux-x64@1.2.0':
- resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==}
+ '@img/sharp-libvips-linux-x64@1.2.4':
+ resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
cpu: [x64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-arm64@1.2.0':
- resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==}
+ '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+ resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-x64@1.2.0':
- resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==}
+ '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+ resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
cpu: [x64]
os: [linux]
- '@img/sharp-linux-arm64@0.34.3':
- resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==}
+ '@img/sharp-linux-arm64@0.34.5':
+ resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
- '@img/sharp-linux-arm@0.34.3':
- resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==}
+ '@img/sharp-linux-arm@0.34.5':
+ resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
- '@img/sharp-linux-ppc64@0.34.3':
- resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==}
+ '@img/sharp-linux-ppc64@0.34.5':
+ resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ppc64]
os: [linux]
- '@img/sharp-linux-s390x@0.34.3':
- resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==}
+ '@img/sharp-linux-riscv64@0.34.5':
+ resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@img/sharp-linux-s390x@0.34.5':
+ resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
- '@img/sharp-linux-x64@0.34.3':
- resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==}
+ '@img/sharp-linux-x64@0.34.5':
+ resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
- '@img/sharp-linuxmusl-arm64@0.34.3':
- resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==}
+ '@img/sharp-linuxmusl-arm64@0.34.5':
+ resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
- '@img/sharp-linuxmusl-x64@0.34.3':
- resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==}
+ '@img/sharp-linuxmusl-x64@0.34.5':
+ resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
- '@img/sharp-wasm32@0.34.3':
- resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==}
+ '@img/sharp-wasm32@0.34.5':
+ resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
- '@img/sharp-win32-arm64@0.34.3':
- resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==}
+ '@img/sharp-win32-arm64@0.34.5':
+ resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [win32]
- '@img/sharp-win32-ia32@0.34.3':
- resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==}
+ '@img/sharp-win32-ia32@0.34.5':
+ resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-x64@0.34.3':
- resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==}
+ '@img/sharp-win32-x64@0.34.5':
+ resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [win32]
@@ -1959,56 +1977,56 @@ packages:
resolution: {integrity: sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ==}
engines: {node: '>= 10'}
- '@next/env@15.5.6':
- resolution: {integrity: sha512-3qBGRW+sCGzgbpc5TS1a0p7eNxnOarGVQhZxfvTdnV0gFI61lX7QNtQ4V1TSREctXzYn5NetbUsLvyqwLFJM6Q==}
+ '@next/env@16.0.3':
+ resolution: {integrity: sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ==}
- '@next/eslint-plugin-next@15.5.6':
- resolution: {integrity: sha512-YxDvsT2fwy1j5gMqk3ppXlsgDopHnkM4BoxSVASbvvgh5zgsK8lvWerDzPip8k3WVzsTZ1O7A7si1KNfN4OZfQ==}
+ '@next/eslint-plugin-next@16.0.3':
+ resolution: {integrity: sha512-6sPWmZetzFWMsz7Dhuxsdmbu3fK+/AxKRtj7OB0/3OZAI2MHB/v2FeYh271LZ9abvnM1WIwWc/5umYjx0jo5sQ==}
- '@next/swc-darwin-arm64@15.5.6':
- resolution: {integrity: sha512-ES3nRz7N+L5Umz4KoGfZ4XX6gwHplwPhioVRc25+QNsDa7RtUF/z8wJcbuQ2Tffm5RZwuN2A063eapoJ1u4nPg==}
+ '@next/swc-darwin-arm64@16.0.3':
+ resolution: {integrity: sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.5.6':
- resolution: {integrity: sha512-JIGcytAyk9LQp2/nuVZPAtj8uaJ/zZhsKOASTjxDug0SPU9LAM3wy6nPU735M1OqacR4U20LHVF5v5Wnl9ptTA==}
+ '@next/swc-darwin-x64@16.0.3':
+ resolution: {integrity: sha512-i70C4O1VmbTivYdRlk+5lj9xRc2BlK3oUikt3yJeHT1unL4LsNtN7UiOhVanFdc7vDAgZn1tV/9mQwMkWOJvHg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.5.6':
- resolution: {integrity: sha512-qvz4SVKQ0P3/Im9zcS2RmfFL/UCQnsJKJwQSkissbngnB/12c6bZTCB0gHTexz1s6d/mD0+egPKXAIRFVS7hQg==}
+ '@next/swc-linux-arm64-gnu@16.0.3':
+ resolution: {integrity: sha512-O88gCZ95sScwD00mn/AtalyCoykhhlokxH/wi1huFK+rmiP5LAYVs/i2ruk7xST6SuXN4NI5y4Xf5vepb2jf6A==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.5.6':
- resolution: {integrity: sha512-FsbGVw3SJz1hZlvnWD+T6GFgV9/NYDeLTNQB2MXoPN5u9VA9OEDy6fJEfePfsUKAhJufFbZLgp0cPxMuV6SV0w==}
+ '@next/swc-linux-arm64-musl@16.0.3':
+ resolution: {integrity: sha512-CEErFt78S/zYXzFIiv18iQCbRbLgBluS8z1TNDQoyPi8/Jr5qhR3e8XHAIxVxPBjDbEMITprqELVc5KTfFj0gg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.5.6':
- resolution: {integrity: sha512-3QnHGFWlnvAgyxFxt2Ny8PTpXtQD7kVEeaFat5oPAHHI192WKYB+VIKZijtHLGdBBvc16tiAkPTDmQNOQ0dyrA==}
+ '@next/swc-linux-x64-gnu@16.0.3':
+ resolution: {integrity: sha512-Tc3i+nwt6mQ+Dwzcri/WNDj56iWdycGVh5YwwklleClzPzz7UpfaMw1ci7bLl6GRYMXhWDBfe707EXNjKtiswQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.5.6':
- resolution: {integrity: sha512-OsGX148sL+TqMK9YFaPFPoIaJKbFJJxFzkXZljIgA9hjMjdruKht6xDCEv1HLtlLNfkx3c5w2GLKhj7veBQizQ==}
+ '@next/swc-linux-x64-musl@16.0.3':
+ resolution: {integrity: sha512-zTh03Z/5PBBPdTurgEtr6nY0vI9KR9Ifp/jZCcHlODzwVOEKcKRBtQIGrkc7izFgOMuXDEJBmirwpGqdM/ZixA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.5.6':
- resolution: {integrity: sha512-ONOMrqWxdzXDJNh2n60H6gGyKed42Ieu6UTVPZteXpuKbLZTH4G4eBMsr5qWgOBA+s7F+uB4OJbZnrkEDnZ5Fg==}
+ '@next/swc-win32-arm64-msvc@16.0.3':
+ resolution: {integrity: sha512-Jc1EHxtZovcJcg5zU43X3tuqzl/sS+CmLgjRP28ZT4vk869Ncm2NoF8qSTaL99gh6uOzgM99Shct06pSO6kA6g==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.5.6':
- resolution: {integrity: sha512-pxK4VIjFRx1MY92UycLOOw7dTdvccWsNETQ0kDHkBlcFH1GrTLUjSiHU1ohrznnux6TqRHgv5oflhfIWZwVROQ==}
+ '@next/swc-win32-x64-msvc@16.0.3':
+ resolution: {integrity: sha512-N7EJ6zbxgIYpI/sWNzpVKRMbfEGgsWuOIvzkML7wxAAZhPk1Msxuo/JDu1PKjWGrAoOLaZcIX5s+/pF5LIbBBg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -2163,7 +2181,6 @@ packages:
'@parcel/watcher-darwin-arm64@2.5.1':
resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.0':
@@ -2175,7 +2192,6 @@ packages:
'@parcel/watcher-darwin-x64@2.5.1':
resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.0':
@@ -2223,7 +2239,6 @@ packages:
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-arm64-musl@2.5.0':
@@ -2235,7 +2250,6 @@ packages:
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-x64-glibc@2.5.0':
@@ -2247,7 +2261,6 @@ packages:
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [linux]
'@parcel/watcher-linux-x64-musl@2.5.0':
@@ -2259,7 +2272,6 @@ packages:
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [linux]
'@parcel/watcher-wasm@2.5.0':
@@ -2301,7 +2313,6 @@ packages:
'@parcel/watcher-win32-x64@2.5.1':
resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [win32]
'@parcel/watcher@2.5.0':
@@ -2427,9 +2438,6 @@ packages:
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
- '@rushstack/eslint-patch@1.10.4':
- resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==}
-
'@sindresorhus/merge-streams@4.0.0':
resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
engines: {node: '>=18'}
@@ -2502,64 +2510,69 @@ packages:
'@types/react@19.2.2':
resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==}
+ '@types/react@19.2.6':
+ resolution: {integrity: sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==}
+
'@types/semver@7.7.1':
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
- '@typescript-eslint/eslint-plugin@8.11.0':
- resolution: {integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==}
+ '@typescript-eslint/eslint-plugin@8.47.0':
+ resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
+ '@typescript-eslint/parser': ^8.47.0
eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.11.0':
- resolution: {integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==}
+ '@typescript-eslint/parser@8.47.0':
+ resolution: {integrity: sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.11.0':
- resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/type-utils@8.11.0':
- resolution: {integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==}
+ '@typescript-eslint/project-service@8.47.0':
+ resolution: {integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@8.11.0':
- resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==}
+ '@typescript-eslint/scope-manager@8.47.0':
+ resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.11.0':
- resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==}
+ '@typescript-eslint/tsconfig-utils@8.47.0':
+ resolution: {integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.11.0':
- resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==}
+ '@typescript-eslint/type-utils@8.47.0':
+ resolution: {integrity: sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@8.11.0':
- resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==}
+ '@typescript-eslint/types@8.47.0':
+ resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/typescript-estree@8.47.0':
+ resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/utils@8.47.0':
+ resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/visitor-keys@8.47.0':
+ resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitejs/plugin-react@5.1.0':
@@ -2637,36 +2650,36 @@ packages:
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
engines: {node: '>= 0.4'}
- array-buffer-byte-length@1.0.1:
- resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ array-buffer-byte-length@1.0.2:
+ resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
engines: {node: '>= 0.4'}
- array-includes@3.1.8:
- resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
+ array-includes@3.1.9:
+ resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
engines: {node: '>= 0.4'}
array.prototype.findlast@1.2.5:
resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
engines: {node: '>= 0.4'}
- array.prototype.findlastindex@1.2.5:
- resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
+ array.prototype.findlastindex@1.2.6:
+ resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
engines: {node: '>= 0.4'}
- array.prototype.flat@1.3.2:
- resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
+ array.prototype.flat@1.3.3:
+ resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
engines: {node: '>= 0.4'}
- array.prototype.flatmap@1.3.2:
- resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
+ array.prototype.flatmap@1.3.3:
+ resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
engines: {node: '>= 0.4'}
array.prototype.tosorted@1.1.4:
resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
engines: {node: '>= 0.4'}
- arraybuffer.prototype.slice@1.0.3:
- resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
+ arraybuffer.prototype.slice@1.0.4:
+ resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'}
assertion-error@2.0.1:
@@ -2739,7 +2752,6 @@ packages:
bun@1.3.2:
resolution: {integrity: sha512-x75mPJiEfhO1j4Tfc65+PtW6ZyrAB6yTZInydnjDZXF9u9PRAnr6OK3v0Q9dpDl0dxRHkXlYvJ8tteJxc8t4Sw==}
- cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -2753,8 +2765,16 @@ packages:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
- call-bind@1.0.7:
- resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bind@1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
engines: {node: '>= 0.4'}
callsites@3.1.0:
@@ -2765,9 +2785,6 @@ packages:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
- caniuse-lite@1.0.30001705:
- resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==}
-
caniuse-lite@1.0.30001755:
resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==}
@@ -2820,13 +2837,6 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- color-string@1.9.1:
- resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
-
- color@4.2.3:
- resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
- engines: {node: '>=12.5.0'}
-
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
@@ -2875,19 +2885,22 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
damerau-levenshtein@1.0.8:
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
- data-view-buffer@1.0.1:
- resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
+ data-view-buffer@1.0.2:
+ resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
engines: {node: '>= 0.4'}
- data-view-byte-length@1.0.1:
- resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
+ data-view-byte-length@1.0.2:
+ resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
engines: {node: '>= 0.4'}
- data-view-byte-offset@1.0.0:
- resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
+ data-view-byte-offset@1.0.1:
+ resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
engines: {node: '>= 0.4'}
debug@3.2.7:
@@ -2954,6 +2967,10 @@ packages:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
engines: {node: '>=8'}
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@@ -2964,6 +2981,10 @@ packages:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
@@ -2991,12 +3012,12 @@ packages:
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
engines: {node: '>=10.13.0'}
- es-abstract@1.23.3:
- resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
+ es-abstract@1.24.0:
+ resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
engines: {node: '>= 0.4'}
- es-define-property@1.0.0:
- resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
engines: {node: '>= 0.4'}
es-errors@1.3.0:
@@ -3007,19 +3028,20 @@ packages:
resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==}
engines: {node: '>= 0.4'}
- es-object-atoms@1.0.0:
- resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
- es-set-tostringtag@2.0.3:
- resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
engines: {node: '>= 0.4'}
- es-shim-unscopables@1.0.2:
- resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+ es-shim-unscopables@1.1.0:
+ resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
+ engines: {node: '>= 0.4'}
- es-to-primitive@1.2.1:
- resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ es-to-primitive@1.3.0:
+ resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
es-toolkit@1.39.10:
@@ -3053,10 +3075,10 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- eslint-config-next@15.5.6:
- resolution: {integrity: sha512-cGr3VQlPsZBEv8rtYp4BpG1KNXDqGvPo9VC1iaCgIA11OfziC/vczng+TnAS3WpRIR3Q5ye/6yl+CRUuZ1fPGg==}
+ eslint-config-next@16.0.3:
+ resolution: {integrity: sha512-5F6qDjcZldf0Y0ZbqvWvap9xzYUxyDf7/of37aeyhvkrQokj/4bT1JYWZdlWUr283aeVa+s52mPq9ogmGg+5dw==}
peerDependencies:
- eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
+ eslint: '>=9.0.0'
typescript: '>=3.3.1'
peerDependenciesMeta:
typescript:
@@ -3078,8 +3100,8 @@ packages:
eslint-plugin-import-x:
optional: true
- eslint-module-utils@2.12.0:
- resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
+ eslint-module-utils@2.12.1:
+ resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
@@ -3099,8 +3121,8 @@ packages:
eslint-import-resolver-webpack:
optional: true
- eslint-plugin-import@2.31.0:
- resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
+ eslint-plugin-import@2.32.0:
+ resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
@@ -3115,9 +3137,9 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
- eslint-plugin-react-hooks@5.0.0:
- resolution: {integrity: sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==}
- engines: {node: '>=10'}
+ eslint-plugin-react-hooks@7.0.1:
+ resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==}
+ engines: {node: '>=18'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
@@ -3233,8 +3255,9 @@ packages:
flatted@3.3.1:
resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
- for-each@0.3.3:
- resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+ for-each@0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
foreground-child@3.3.0:
resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
@@ -3256,8 +3279,8 @@ packages:
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
- function.prototype.name@1.1.6:
- resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
+ function.prototype.name@1.1.8:
+ resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
engines: {node: '>= 0.4'}
functions-have-names@1.2.3:
@@ -3270,19 +3293,23 @@ packages:
get-func-name@2.0.2:
resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
- get-intrinsic@1.2.4:
- resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
get-port-please@3.1.2:
resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==}
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
get-stream@8.0.1:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
- get-symbol-description@1.0.2:
- resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
+ get-symbol-description@1.1.0:
+ resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
get-tsconfig@4.10.0:
@@ -3304,6 +3331,10 @@ packages:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
+ globals@16.4.0:
+ resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==}
+ engines: {node: '>=18'}
+
globalthis@1.0.4:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
@@ -3312,8 +3343,9 @@ packages:
resolution: {integrity: sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==}
engines: {node: '>=20'}
- gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
@@ -3334,12 +3366,12 @@ packages:
has-property-descriptors@1.0.2:
resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
- has-proto@1.0.3:
- resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ has-proto@1.2.0:
+ resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
engines: {node: '>= 0.4'}
- has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
engines: {node: '>= 0.4'}
has-tostringtag@1.0.2:
@@ -3350,6 +3382,12 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
+ hermes-estree@0.25.1:
+ resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==}
+
+ hermes-parser@0.25.1:
+ resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
+
http-shutdown@1.2.2:
resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==}
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
@@ -3378,33 +3416,31 @@ packages:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
- internal-slot@1.0.7:
- resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+ internal-slot@1.1.0:
+ resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
iron-webcrypto@1.2.1:
resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
- is-array-buffer@3.0.4:
- resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ is-array-buffer@3.0.5:
+ resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
engines: {node: '>= 0.4'}
- is-arrayish@0.3.2:
- resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
-
is-async-function@2.0.0:
resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
engines: {node: '>= 0.4'}
- is-bigint@1.0.4:
- resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+ is-bigint@1.1.0:
+ resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
+ engines: {node: '>= 0.4'}
is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
- is-boolean-object@1.1.2:
- resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ is-boolean-object@1.2.2:
+ resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
engines: {node: '>= 0.4'}
is-bun-module@1.2.1:
@@ -3418,12 +3454,16 @@ packages:
resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
engines: {node: '>= 0.4'}
- is-data-view@1.0.1:
- resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
+ is-core-module@2.16.1:
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
engines: {node: '>= 0.4'}
- is-date-object@1.0.5:
- resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ is-data-view@1.0.2:
+ resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
+ engines: {node: '>= 0.4'}
+
+ is-date-object@1.1.0:
+ resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
engines: {node: '>= 0.4'}
is-docker@3.0.0:
@@ -3435,8 +3475,9 @@ packages:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
- is-finalizationregistry@1.0.2:
- resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
+ is-finalizationregistry@1.1.1:
+ resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
+ engines: {node: '>= 0.4'}
is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
@@ -3463,48 +3504,49 @@ packages:
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
- is-number-object@1.0.7:
- resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ is-number-object@1.1.1:
+ resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
engines: {node: '>= 0.4'}
is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- is-regex@1.1.4:
- resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ is-regex@1.2.1:
+ resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
is-set@2.0.3:
resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
engines: {node: '>= 0.4'}
- is-shared-array-buffer@1.0.3:
- resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ is-shared-array-buffer@1.0.4:
+ resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
engines: {node: '>= 0.4'}
is-stream@3.0.0:
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- is-string@1.0.7:
- resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ is-string@1.1.1:
+ resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
engines: {node: '>= 0.4'}
- is-symbol@1.0.4:
- resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ is-symbol@1.1.1:
+ resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
engines: {node: '>= 0.4'}
- is-typed-array@1.1.13:
- resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+ is-typed-array@1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
engines: {node: '>= 0.4'}
is-weakmap@2.0.2:
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
engines: {node: '>= 0.4'}
- is-weakref@1.0.2:
- resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+ is-weakref@1.1.1:
+ resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
+ engines: {node: '>= 0.4'}
is-weakset@2.0.3:
resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
@@ -3604,13 +3646,11 @@ packages:
lightningcss-darwin-arm64@1.30.2:
resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.30.2:
resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.30.2:
@@ -3628,25 +3668,21 @@ packages:
lightningcss-linux-arm64-gnu@1.30.2:
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [linux]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [linux]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [linux]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [linux]
lightningcss-win32-arm64-msvc@1.30.2:
@@ -3658,7 +3694,6 @@ packages:
lightningcss-win32-x64-msvc@1.30.2:
resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [win32]
lightningcss@1.30.2:
@@ -3707,6 +3742,10 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -3783,9 +3822,9 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- next@15.5.6:
- resolution: {integrity: sha512-zTxsnI3LQo3c9HSdSf91O1jMNsEzIXDShXd4wVdg9y5shwLqBXi4ZtUUJyB86KGVSJLZx0PFONvO54aheGX8QQ==}
- engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
+ next@16.0.3:
+ resolution: {integrity: sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w==}
+ engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
@@ -3856,16 +3895,16 @@ packages:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
- object-inspect@1.13.2:
- resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
- object.assign@4.1.5:
- resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+ object.assign@4.1.7:
+ resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
engines: {node: '>= 0.4'}
object.entries@1.1.8:
@@ -3880,8 +3919,8 @@ packages:
resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
engines: {node: '>= 0.4'}
- object.values@1.2.0:
- resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
+ object.values@1.2.1:
+ resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
onetime@6.0.0:
@@ -3892,6 +3931,10 @@ packages:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
+ own-keys@1.0.1:
+ resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
+ engines: {node: '>= 0.4'}
+
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -4127,12 +4170,12 @@ packages:
resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==}
engines: {node: '>= 14.18.0'}
- reflect.getprototypeof@1.0.6:
- resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
+ reflect.getprototypeof@1.0.10:
+ resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
- regexp.prototype.flags@1.5.2:
- resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
+ regexp.prototype.flags@1.5.4:
+ resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
engines: {node: '>= 0.4'}
resolve-from@4.0.0:
@@ -4166,12 +4209,16 @@ packages:
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- safe-array-concat@1.1.2:
- resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
+ safe-array-concat@1.1.3:
+ resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
- safe-regex-test@1.0.3:
- resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+ safe-push-apply@1.0.0:
+ resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
+ engines: {node: '>= 0.4'}
+
+ safe-regex-test@1.1.0:
+ resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
engines: {node: '>= 0.4'}
safer-buffer@2.1.2:
@@ -4197,8 +4244,12 @@ packages:
resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
engines: {node: '>= 0.4'}
- sharp@0.34.3:
- resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==}
+ set-proto@1.0.0:
+ resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
+ engines: {node: '>= 0.4'}
+
+ sharp@0.34.5:
+ resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
shebang-command@2.0.0:
@@ -4209,8 +4260,20 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
siginfo@2.0.0:
@@ -4220,9 +4283,6 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
- simple-swizzle@0.2.2:
- resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
-
slash@5.1.0:
resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
engines: {node: '>=14.16'}
@@ -4248,6 +4308,10 @@ packages:
std-env@3.7.0:
resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
+ stop-iteration-iterator@1.1.0:
+ resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
+ engines: {node: '>= 0.4'}
+
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -4267,12 +4331,13 @@ packages:
string.prototype.repeat@1.0.0:
resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
- string.prototype.trim@1.2.9:
- resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
+ string.prototype.trim@1.2.10:
+ resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
engines: {node: '>= 0.4'}
- string.prototype.trimend@1.0.8:
- resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
+ string.prototype.trimend@1.0.9:
+ resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+ engines: {node: '>= 0.4'}
string.prototype.trimstart@1.0.8:
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
@@ -4401,11 +4466,11 @@ packages:
tree-sitter@0.22.4:
resolution: {integrity: sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg==}
- ts-api-utils@1.3.0:
- resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
- engines: {node: '>=16'}
+ ts-api-utils@2.1.0:
+ resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
+ engines: {node: '>=18.12'}
peerDependencies:
- typescript: '>=4.2.0'
+ typescript: '>=4.8.4'
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
@@ -4485,22 +4550,29 @@ packages:
resolution: {integrity: sha512-3T/PUdKTCnkUmhQU6FFJEHsLwadsRegktX3TNHk+2JJB9HlA8gp1/VXblXVDI93kSnXF2rdPx0GMbHtJIV2LPg==}
engines: {node: '>=16'}
- typed-array-buffer@1.0.2:
- resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
+ typed-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
engines: {node: '>= 0.4'}
- typed-array-byte-length@1.0.1:
- resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
+ typed-array-byte-length@1.0.3:
+ resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
engines: {node: '>= 0.4'}
- typed-array-byte-offset@1.0.2:
- resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
+ typed-array-byte-offset@1.0.4:
+ resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
engines: {node: '>= 0.4'}
- typed-array-length@1.0.6:
- resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
+ typed-array-length@1.0.7:
+ resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
engines: {node: '>= 0.4'}
+ typescript-eslint@8.47.0:
+ resolution: {integrity: sha512-Lwe8i2XQ3WoMjua/r1PHrCTpkubPYJCAfOurtn+mtTzqB6jNd+14n9UN1bJ4s3F49x9ixAm0FLflB/JzQ57M8Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
typescript@5.5.4:
resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
engines: {node: '>=14.17'}
@@ -4517,8 +4589,9 @@ packages:
ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
- unbox-primitive@1.0.2:
- resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+ unbox-primitive@1.1.0:
+ resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
+ engines: {node: '>= 0.4'}
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
@@ -4662,19 +4735,20 @@ packages:
jsdom:
optional: true
- which-boxed-primitive@1.0.2:
- resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+ which-boxed-primitive@1.1.1:
+ resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
+ engines: {node: '>= 0.4'}
- which-builtin-type@1.1.4:
- resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==}
+ which-builtin-type@1.2.1:
+ resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
engines: {node: '>= 0.4'}
which-collection@1.0.2:
resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
engines: {node: '>= 0.4'}
- which-typed-array@1.1.15:
- resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
+ which-typed-array@1.1.19:
+ resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
engines: {node: '>= 0.4'}
which@2.0.2:
@@ -4719,6 +4793,15 @@ packages:
resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
engines: {node: '>=18'}
+ zod-validation-error@4.0.2:
+ resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ zod: ^3.25.0 || ^4.0.0
+
+ zod@4.1.12:
+ resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==}
+
snapshots:
'@alloc/quick-lru@5.2.0': {}
@@ -4858,6 +4941,11 @@ snapshots:
dependencies:
tslib: 2.8.1
+ '@emnapi/runtime@1.7.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@emnapi/wasi-threads@1.1.0':
dependencies:
tslib: 2.8.1
@@ -5215,90 +5303,101 @@ snapshots:
'@humanwhocodes/retry@0.4.2': {}
- '@img/sharp-darwin-arm64@0.34.3':
+ '@img/colour@1.0.0':
+ optional: true
+
+ '@img/sharp-darwin-arm64@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.2.0
+ '@img/sharp-libvips-darwin-arm64': 1.2.4
optional: true
- '@img/sharp-darwin-x64@0.34.3':
+ '@img/sharp-darwin-x64@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.2.0
+ '@img/sharp-libvips-darwin-x64': 1.2.4
optional: true
- '@img/sharp-libvips-darwin-arm64@1.2.0':
+ '@img/sharp-libvips-darwin-arm64@1.2.4':
optional: true
- '@img/sharp-libvips-darwin-x64@1.2.0':
+ '@img/sharp-libvips-darwin-x64@1.2.4':
optional: true
- '@img/sharp-libvips-linux-arm64@1.2.0':
+ '@img/sharp-libvips-linux-arm64@1.2.4':
optional: true
- '@img/sharp-libvips-linux-arm@1.2.0':
+ '@img/sharp-libvips-linux-arm@1.2.4':
optional: true
- '@img/sharp-libvips-linux-ppc64@1.2.0':
+ '@img/sharp-libvips-linux-ppc64@1.2.4':
optional: true
- '@img/sharp-libvips-linux-s390x@1.2.0':
+ '@img/sharp-libvips-linux-riscv64@1.2.4':
optional: true
- '@img/sharp-libvips-linux-x64@1.2.0':
+ '@img/sharp-libvips-linux-s390x@1.2.4':
optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.2.0':
+ '@img/sharp-libvips-linux-x64@1.2.4':
optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.2.0':
+ '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
optional: true
- '@img/sharp-linux-arm64@0.34.3':
+ '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+ optional: true
+
+ '@img/sharp-linux-arm64@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.2.0
+ '@img/sharp-libvips-linux-arm64': 1.2.4
optional: true
- '@img/sharp-linux-arm@0.34.3':
+ '@img/sharp-linux-arm@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.2.0
+ '@img/sharp-libvips-linux-arm': 1.2.4
optional: true
- '@img/sharp-linux-ppc64@0.34.3':
+ '@img/sharp-linux-ppc64@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-linux-ppc64': 1.2.0
+ '@img/sharp-libvips-linux-ppc64': 1.2.4
optional: true
- '@img/sharp-linux-s390x@0.34.3':
+ '@img/sharp-linux-riscv64@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.2.0
+ '@img/sharp-libvips-linux-riscv64': 1.2.4
optional: true
- '@img/sharp-linux-x64@0.34.3':
+ '@img/sharp-linux-s390x@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.2.0
+ '@img/sharp-libvips-linux-s390x': 1.2.4
optional: true
- '@img/sharp-linuxmusl-arm64@0.34.3':
+ '@img/sharp-linux-x64@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.0
+ '@img/sharp-libvips-linux-x64': 1.2.4
optional: true
- '@img/sharp-linuxmusl-x64@0.34.3':
+ '@img/sharp-linuxmusl-arm64@0.34.5':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.2.0
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
optional: true
- '@img/sharp-wasm32@0.34.3':
+ '@img/sharp-linuxmusl-x64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+ optional: true
+
+ '@img/sharp-wasm32@0.34.5':
dependencies:
- '@emnapi/runtime': 1.6.0
+ '@emnapi/runtime': 1.7.1
optional: true
- '@img/sharp-win32-arm64@0.34.3':
+ '@img/sharp-win32-arm64@0.34.5':
optional: true
- '@img/sharp-win32-ia32@0.34.3':
+ '@img/sharp-win32-ia32@0.34.5':
optional: true
- '@img/sharp-win32-x64@0.34.3':
+ '@img/sharp-win32-x64@0.34.5':
optional: true
'@inquirer/ansi@1.0.0': {}
@@ -5475,7 +5574,7 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
- '@napi-rs/cli@3.4.1(@emnapi/runtime@1.6.0)(@types/node@20.19.1)(node-addon-api@8.3.0)':
+ '@napi-rs/cli@3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
dependencies:
'@inquirer/prompts': 7.8.6(@types/node@20.19.1)
'@napi-rs/cross-toolchain': 1.0.3
@@ -5490,7 +5589,7 @@ snapshots:
semver: 7.7.3
typanion: 3.14.0
optionalDependencies:
- '@emnapi/runtime': 1.6.0
+ '@emnapi/runtime': 1.7.1
transitivePeerDependencies:
- '@napi-rs/cross-toolchain-arm64-target-aarch64'
- '@napi-rs/cross-toolchain-arm64-target-armv7'
@@ -5719,34 +5818,34 @@ snapshots:
'@napi-rs/wasm-tools-win32-ia32-msvc': 1.0.1
'@napi-rs/wasm-tools-win32-x64-msvc': 1.0.1
- '@next/env@15.5.6': {}
+ '@next/env@16.0.3': {}
- '@next/eslint-plugin-next@15.5.6':
+ '@next/eslint-plugin-next@16.0.3':
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@15.5.6':
+ '@next/swc-darwin-arm64@16.0.3':
optional: true
- '@next/swc-darwin-x64@15.5.6':
+ '@next/swc-darwin-x64@16.0.3':
optional: true
- '@next/swc-linux-arm64-gnu@15.5.6':
+ '@next/swc-linux-arm64-gnu@16.0.3':
optional: true
- '@next/swc-linux-arm64-musl@15.5.6':
+ '@next/swc-linux-arm64-musl@16.0.3':
optional: true
- '@next/swc-linux-x64-gnu@15.5.6':
+ '@next/swc-linux-x64-gnu@16.0.3':
optional: true
- '@next/swc-linux-x64-musl@15.5.6':
+ '@next/swc-linux-x64-musl@16.0.3':
optional: true
- '@next/swc-win32-arm64-msvc@15.5.6':
+ '@next/swc-win32-arm64-msvc@16.0.3':
optional: true
- '@next/swc-win32-x64-msvc@15.5.6':
+ '@next/swc-win32-x64-msvc@16.0.3':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -6053,8 +6152,6 @@ snapshots:
'@rtsao/scc@1.1.0': {}
- '@rushstack/eslint-patch@1.10.4': {}
-
'@sindresorhus/merge-streams@4.0.0': {}
'@swc/helpers@0.5.15':
@@ -6102,9 +6199,9 @@ snapshots:
'@types/braces@3.0.5': {}
- '@types/bun@1.3.0(@types/react@19.2.2)':
+ '@types/bun@1.3.0(@types/react@19.2.6)':
dependencies:
- bun-types: 1.3.0(@types/react@19.2.2)
+ bun-types: 1.3.0(@types/react@19.2.6)
transitivePeerDependencies:
- '@types/react'
@@ -6132,161 +6229,193 @@ snapshots:
dependencies:
'@types/react': 19.2.2
+ '@types/react-dom@19.2.3(@types/react@19.2.6)':
+ dependencies:
+ '@types/react': 19.2.6
+
'@types/react@19.2.2':
dependencies:
csstype: 3.1.3
+ '@types/react@19.2.6':
+ dependencies:
+ csstype: 3.2.3
+
'@types/semver@7.7.1': {}
- '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.11.0
- '@typescript-eslint/type-utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.11.0
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.47.0
+ '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.47.0
eslint: 9.39.1(jiti@2.6.1)
graphemer: 1.4.0
- ignore: 5.3.2
+ ignore: 7.0.5
natural-compare: 1.4.0
- ts-api-utils: 1.3.0(typescript@5.5.4)
- optionalDependencies:
+ ts-api-utils: 2.1.0(typescript@5.5.4)
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/scope-manager': 8.11.0
- '@typescript-eslint/type-utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/visitor-keys': 8.11.0
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/scope-manager': 8.47.0
+ '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/visitor-keys': 8.47.0
eslint: 9.39.1(jiti@2.6.1)
graphemer: 1.4.0
- ignore: 5.3.2
+ ignore: 7.0.5
natural-compare: 1.4.0
- ts-api-utils: 1.3.0(typescript@5.6.3)
- optionalDependencies:
+ ts-api-utils: 2.1.0(typescript@5.6.3)
typescript: 5.6.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/scope-manager': 8.11.0
- '@typescript-eslint/types': 8.11.0
- '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.11.0
+ '@typescript-eslint/scope-manager': 8.47.0
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.47.0
debug: 4.4.3
eslint: 9.39.1(jiti@2.6.1)
- optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.11.0
- '@typescript-eslint/types': 8.11.0
- '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
- '@typescript-eslint/visitor-keys': 8.11.0
+ '@typescript-eslint/scope-manager': 8.47.0
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
+ '@typescript-eslint/visitor-keys': 8.47.0
debug: 4.4.3
eslint: 9.39.1(jiti@2.6.1)
- optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.11.0':
+ '@typescript-eslint/project-service@8.47.0(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/types': 8.11.0
- '@typescript-eslint/visitor-keys': 8.11.0
-
- '@typescript-eslint/type-utils@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
- dependencies:
- '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/types': 8.47.0
debug: 4.4.3
- ts-api-utils: 1.3.0(typescript@5.5.4)
- optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
- - eslint
- supports-color
- '@typescript-eslint/type-utils@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/project-service@8.47.0(typescript@5.6.3)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
- '@typescript-eslint/utils': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.6.3)
+ '@typescript-eslint/types': 8.47.0
debug: 4.4.3
- ts-api-utils: 1.3.0(typescript@5.6.3)
- optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
- - eslint
- supports-color
- '@typescript-eslint/types@8.11.0': {}
-
- '@typescript-eslint/typescript-estree@8.11.0(typescript@5.5.4)':
+ '@typescript-eslint/scope-manager@8.47.0':
dependencies:
- '@typescript-eslint/types': 8.11.0
- '@typescript-eslint/visitor-keys': 8.11.0
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/visitor-keys': 8.47.0
+
+ '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.5.4)':
+ dependencies:
+ typescript: 5.5.4
+
+ '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.6.3)':
+ dependencies:
+ typescript: 5.6.3
+
+ '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
+ dependencies:
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ debug: 4.4.3
+ eslint: 9.39.1(jiti@2.6.1)
+ ts-api-utils: 2.1.0(typescript@5.5.4)
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ debug: 4.4.3
+ eslint: 9.39.1(jiti@2.6.1)
+ ts-api-utils: 2.1.0(typescript@5.6.3)
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@8.47.0': {}
+
+ '@typescript-eslint/typescript-estree@8.47.0(typescript@5.5.4)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/visitor-keys': 8.47.0
debug: 4.4.3
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.7.3
- ts-api-utils: 1.3.0(typescript@5.5.4)
- optionalDependencies:
+ ts-api-utils: 2.1.0(typescript@5.5.4)
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.11.0(typescript@5.6.3)':
+ '@typescript-eslint/typescript-estree@8.47.0(typescript@5.6.3)':
dependencies:
- '@typescript-eslint/types': 8.11.0
- '@typescript-eslint/visitor-keys': 8.11.0
+ '@typescript-eslint/project-service': 8.47.0(typescript@5.6.3)
+ '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.6.3)
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/visitor-keys': 8.47.0
debug: 4.4.3
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.7.3
- ts-api-utils: 1.3.0(typescript@5.6.3)
- optionalDependencies:
+ ts-api-utils: 2.1.0(typescript@5.6.3)
typescript: 5.6.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.11.0
- '@typescript-eslint/types': 8.11.0
- '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.47.0
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
eslint: 9.39.1(jiti@2.6.1)
+ typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- - typescript
- '@typescript-eslint/utils@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.11.0
- '@typescript-eslint/types': 8.11.0
- '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
+ '@typescript-eslint/scope-manager': 8.47.0
+ '@typescript-eslint/types': 8.47.0
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
eslint: 9.39.1(jiti@2.6.1)
+ typescript: 5.6.3
transitivePeerDependencies:
- supports-color
- - typescript
- '@typescript-eslint/visitor-keys@8.11.0':
+ '@typescript-eslint/visitor-keys@8.47.0':
dependencies:
- '@typescript-eslint/types': 8.11.0
- eslint-visitor-keys: 3.4.3
+ '@typescript-eslint/types': 8.47.0
+ eslint-visitor-keys: 4.2.1
'@vitejs/plugin-react@5.1.0(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
dependencies:
@@ -6371,70 +6500,72 @@ snapshots:
aria-query@5.3.2: {}
- array-buffer-byte-length@1.0.1:
+ array-buffer-byte-length@1.0.2:
dependencies:
- call-bind: 1.0.7
- is-array-buffer: 3.0.4
+ call-bound: 1.0.4
+ is-array-buffer: 3.0.5
- array-includes@3.1.8:
+ array-includes@3.1.9:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
- get-intrinsic: 1.2.4
- is-string: 1.0.7
+ es-abstract: 1.24.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ is-string: 1.1.1
+ math-intrinsics: 1.1.0
array.prototype.findlast@1.2.5:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
es-errors: 1.3.0
- es-object-atoms: 1.0.0
- es-shim-unscopables: 1.0.2
+ es-object-atoms: 1.1.1
+ es-shim-unscopables: 1.1.0
- array.prototype.findlastindex@1.2.5:
+ array.prototype.findlastindex@1.2.6:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
es-errors: 1.3.0
- es-object-atoms: 1.0.0
- es-shim-unscopables: 1.0.2
+ es-object-atoms: 1.1.1
+ es-shim-unscopables: 1.1.0
- array.prototype.flat@1.3.2:
+ array.prototype.flat@1.3.3:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
- es-shim-unscopables: 1.0.2
+ es-abstract: 1.24.0
+ es-shim-unscopables: 1.1.0
- array.prototype.flatmap@1.3.2:
+ array.prototype.flatmap@1.3.3:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
- es-shim-unscopables: 1.0.2
+ es-abstract: 1.24.0
+ es-shim-unscopables: 1.1.0
array.prototype.tosorted@1.1.4:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
es-errors: 1.3.0
- es-shim-unscopables: 1.0.2
+ es-shim-unscopables: 1.1.0
- arraybuffer.prototype.slice@1.0.3:
+ arraybuffer.prototype.slice@1.0.4:
dependencies:
- array-buffer-byte-length: 1.0.1
- call-bind: 1.0.7
+ array-buffer-byte-length: 1.0.2
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
es-errors: 1.3.0
- get-intrinsic: 1.2.4
- is-array-buffer: 3.0.4
- is-shared-array-buffer: 1.0.3
+ get-intrinsic: 1.3.0
+ is-array-buffer: 3.0.5
assertion-error@2.0.1: {}
@@ -6497,10 +6628,10 @@ snapshots:
buffer-from@1.1.2:
optional: true
- bun-types@1.3.0(@types/react@19.2.2):
+ bun-types@1.3.0(@types/react@19.2.6):
dependencies:
'@types/node': 20.19.1
- '@types/react': 19.2.2
+ '@types/react': 19.2.6
bun@1.3.2:
optionalDependencies:
@@ -6523,20 +6654,27 @@ snapshots:
cac@6.7.14: {}
- call-bind@1.0.7:
+ call-bind-apply-helpers@1.0.2:
dependencies:
- es-define-property: 1.0.0
es-errors: 1.3.0
function-bind: 1.1.2
- get-intrinsic: 1.2.4
+
+ call-bind@1.0.8:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
set-function-length: 1.2.2
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
callsites@3.1.0: {}
camelcase-css@2.0.1: {}
- caniuse-lite@1.0.30001705: {}
-
caniuse-lite@1.0.30001755: {}
chai@5.1.1:
@@ -6596,18 +6734,6 @@ snapshots:
color-name@1.1.4: {}
- color-string@1.9.1:
- dependencies:
- color-name: 1.1.4
- simple-swizzle: 0.2.2
- optional: true
-
- color@4.2.3:
- dependencies:
- color-convert: 2.0.1
- color-string: 1.9.1
- optional: true
-
colorette@2.0.20: {}
commander@2.20.3:
@@ -6645,25 +6771,27 @@ snapshots:
csstype@3.1.3: {}
+ csstype@3.2.3: {}
+
damerau-levenshtein@1.0.8: {}
- data-view-buffer@1.0.1:
+ data-view-buffer@1.0.2:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
es-errors: 1.3.0
- is-data-view: 1.0.1
+ is-data-view: 1.0.2
- data-view-byte-length@1.0.1:
+ data-view-byte-length@1.0.2:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
es-errors: 1.3.0
- is-data-view: 1.0.1
+ is-data-view: 1.0.2
- data-view-byte-offset@1.0.0:
+ data-view-byte-offset@1.0.1:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
es-errors: 1.3.0
- is-data-view: 1.0.1
+ is-data-view: 1.0.2
debug@3.2.7:
dependencies:
@@ -6685,9 +6813,9 @@ snapshots:
define-data-property@1.1.4:
dependencies:
- es-define-property: 1.0.0
+ es-define-property: 1.0.1
es-errors: 1.3.0
- gopd: 1.0.1
+ gopd: 1.2.0
define-properties@1.2.1:
dependencies:
@@ -6703,6 +6831,9 @@ snapshots:
detect-libc@2.0.4: {}
+ detect-libc@2.1.2:
+ optional: true
+
didyoumean@1.2.2: {}
dlv@1.1.3: {}
@@ -6711,6 +6842,12 @@ snapshots:
dependencies:
esutils: 2.0.3
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
eastasianwidth@0.2.0: {}
electron-to-chromium@1.5.119: {}
@@ -6730,97 +6867,104 @@ snapshots:
graceful-fs: 4.2.11
tapable: 2.2.1
- es-abstract@1.23.3:
+ es-abstract@1.24.0:
dependencies:
- array-buffer-byte-length: 1.0.1
- arraybuffer.prototype.slice: 1.0.3
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- data-view-buffer: 1.0.1
- data-view-byte-length: 1.0.1
- data-view-byte-offset: 1.0.0
- es-define-property: 1.0.0
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
es-errors: 1.3.0
- es-object-atoms: 1.0.0
- es-set-tostringtag: 2.0.3
- es-to-primitive: 1.2.1
- function.prototype.name: 1.1.6
- get-intrinsic: 1.2.4
- get-symbol-description: 1.0.2
+ es-object-atoms: 1.1.1
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.0
+ function.prototype.name: 1.1.8
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
globalthis: 1.0.4
- gopd: 1.0.1
+ gopd: 1.2.0
has-property-descriptors: 1.0.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
hasown: 2.0.2
- internal-slot: 1.0.7
- is-array-buffer: 3.0.4
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
is-callable: 1.2.7
- is-data-view: 1.0.1
+ is-data-view: 1.0.2
is-negative-zero: 2.0.3
- is-regex: 1.1.4
- is-shared-array-buffer: 1.0.3
- is-string: 1.0.7
- is-typed-array: 1.1.13
- is-weakref: 1.0.2
- object-inspect: 1.13.2
+ is-regex: 1.2.1
+ is-set: 2.0.3
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.1
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.4
object-keys: 1.1.1
- object.assign: 4.1.5
- regexp.prototype.flags: 1.5.2
- safe-array-concat: 1.1.2
- safe-regex-test: 1.0.3
- string.prototype.trim: 1.2.9
- string.prototype.trimend: 1.0.8
+ object.assign: 4.1.7
+ own-keys: 1.0.1
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.3
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ stop-iteration-iterator: 1.1.0
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.2
- typed-array-byte-length: 1.0.1
- typed-array-byte-offset: 1.0.2
- typed-array-length: 1.0.6
- unbox-primitive: 1.0.2
- which-typed-array: 1.1.15
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.7
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.19
- es-define-property@1.0.0:
- dependencies:
- get-intrinsic: 1.2.4
+ es-define-property@1.0.1: {}
es-errors@1.3.0: {}
es-iterator-helpers@1.1.0:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
es-errors: 1.3.0
- es-set-tostringtag: 2.0.3
+ es-set-tostringtag: 2.1.0
function-bind: 1.1.2
- get-intrinsic: 1.2.4
+ get-intrinsic: 1.3.0
globalthis: 1.0.4
has-property-descriptors: 1.0.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- internal-slot: 1.0.7
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
iterator.prototype: 1.1.3
- safe-array-concat: 1.1.2
+ safe-array-concat: 1.1.3
- es-object-atoms@1.0.0:
+ es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
- es-set-tostringtag@2.0.3:
+ es-set-tostringtag@2.1.0:
dependencies:
- get-intrinsic: 1.2.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
has-tostringtag: 1.0.2
hasown: 2.0.2
- es-shim-unscopables@1.0.2:
+ es-shim-unscopables@1.1.0:
dependencies:
hasown: 2.0.2
- es-to-primitive@1.2.1:
+ es-to-primitive@1.3.0:
dependencies:
is-callable: 1.2.7
- is-date-object: 1.0.5
- is-symbol: 1.0.4
+ is-date-object: 1.1.0
+ is-symbol: 1.1.1
es-toolkit@1.39.10: {}
@@ -6939,42 +7083,42 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
- '@next/eslint-plugin-next': 15.5.6
- '@rushstack/eslint-patch': 1.10.4
- '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react-hooks: 5.0.0(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
+ globals: 16.4.0
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
+ - '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@15.5.6(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
- '@next/eslint-plugin-next': 15.5.6
- '@rushstack/eslint-patch': 1.10.4
- '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react-hooks: 5.0.0(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
+ globals: 16.4.0
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
+ - '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
@@ -6982,124 +7126,121 @@ snapshots:
eslint-import-resolver-node@0.3.9:
dependencies:
debug: 3.2.7
- is-core-module: 2.15.1
+ is-core-module: 2.16.1
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.3
eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.3
eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
- array-includes: 3.1.8
- array.prototype.findlastindex: 1.2.5
- array.prototype.flat: 1.3.2
- array.prototype.flatmap: 1.3.2
+ array-includes: 3.1.9
+ array.prototype.findlastindex: 1.2.6
+ array.prototype.flat: 1.3.3
+ array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
- is-core-module: 2.15.1
+ is-core-module: 2.16.1
is-glob: 4.0.3
minimatch: 3.1.2
object.fromentries: 2.0.8
object.groupby: 1.0.3
- object.values: 1.2.0
+ object.values: 1.2.1
semver: 6.3.1
- string.prototype.trimend: 1.0.8
+ string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
- array-includes: 3.1.8
- array.prototype.findlastindex: 1.2.5
- array.prototype.flat: 1.3.2
- array.prototype.flatmap: 1.3.2
+ array-includes: 3.1.9
+ array.prototype.findlastindex: 1.2.6
+ array.prototype.flat: 1.3.3
+ array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
- is-core-module: 2.15.1
+ is-core-module: 2.16.1
is-glob: 4.0.3
minimatch: 3.1.2
object.fromentries: 2.0.8
object.groupby: 1.0.3
- object.values: 1.2.0
+ object.values: 1.2.1
semver: 6.3.1
- string.prototype.trimend: 1.0.8
+ string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
- optionalDependencies:
- '@typescript-eslint/parser': 8.11.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7108,8 +7249,8 @@ snapshots:
eslint-plugin-jsx-a11y@6.10.1(eslint@9.39.1(jiti@2.6.1)):
dependencies:
aria-query: 5.3.2
- array-includes: 3.1.8
- array.prototype.flatmap: 1.3.2
+ array-includes: 3.1.9
+ array.prototype.flatmap: 1.3.3
ast-types-flow: 0.0.8
axe-core: 4.10.2
axobject-query: 4.1.0
@@ -7122,18 +7263,25 @@ snapshots:
language-tags: 1.0.9
minimatch: 3.1.2
object.fromentries: 2.0.8
- safe-regex-test: 1.0.3
+ safe-regex-test: 1.1.0
string.prototype.includes: 2.0.1
- eslint-plugin-react-hooks@5.0.0(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)):
dependencies:
+ '@babel/core': 7.28.4
+ '@babel/parser': 7.28.4
eslint: 9.39.1(jiti@2.6.1)
+ hermes-parser: 0.25.1
+ zod: 4.1.12
+ zod-validation-error: 4.0.2(zod@4.1.12)
+ transitivePeerDependencies:
+ - supports-color
eslint-plugin-react@7.37.2(eslint@9.39.1(jiti@2.6.1)):
dependencies:
- array-includes: 3.1.8
+ array-includes: 3.1.9
array.prototype.findlast: 1.2.5
- array.prototype.flatmap: 1.3.2
+ array.prototype.flatmap: 1.3.3
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.1.0
@@ -7144,7 +7292,7 @@ snapshots:
minimatch: 3.1.2
object.entries: 1.1.8
object.fromentries: 2.0.8
- object.values: 1.2.0
+ object.values: 1.2.1
prop-types: 15.8.1
resolve: 2.0.0-next.5
semver: 6.3.1
@@ -7295,7 +7443,7 @@ snapshots:
flatted@3.3.1: {}
- for-each@0.3.3:
+ for-each@0.3.5:
dependencies:
is-callable: 1.2.7
@@ -7314,12 +7462,14 @@ snapshots:
function-bind@1.1.2: {}
- function.prototype.name@1.1.6:
+ function.prototype.name@1.1.8:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
define-properties: 1.2.1
- es-abstract: 1.23.3
functions-have-names: 1.2.3
+ hasown: 2.0.2
+ is-callable: 1.2.7
functions-have-names@1.2.3: {}
@@ -7327,23 +7477,33 @@ snapshots:
get-func-name@2.0.2: {}
- get-intrinsic@1.2.4:
+ get-intrinsic@1.3.0:
dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
es-errors: 1.3.0
+ es-object-atoms: 1.1.1
function-bind: 1.1.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
hasown: 2.0.2
+ math-intrinsics: 1.1.0
get-port-please@3.1.2: {}
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
get-stream@8.0.1: {}
- get-symbol-description@1.0.2:
+ get-symbol-description@1.1.0:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
es-errors: 1.3.0
- get-intrinsic: 1.2.4
+ get-intrinsic: 1.3.0
get-tsconfig@4.10.0:
dependencies:
@@ -7368,10 +7528,12 @@ snapshots:
globals@14.0.0: {}
+ globals@16.4.0: {}
+
globalthis@1.0.4:
dependencies:
define-properties: 1.2.1
- gopd: 1.0.1
+ gopd: 1.2.0
globby@15.0.0:
dependencies:
@@ -7382,9 +7544,7 @@ snapshots:
slash: 5.1.0
unicorn-magic: 0.3.0
- gopd@1.0.1:
- dependencies:
- get-intrinsic: 1.2.4
+ gopd@1.2.0: {}
graceful-fs@4.2.11: {}
@@ -7408,20 +7568,28 @@ snapshots:
has-property-descriptors@1.0.2:
dependencies:
- es-define-property: 1.0.0
+ es-define-property: 1.0.1
- has-proto@1.0.3: {}
+ has-proto@1.2.0:
+ dependencies:
+ dunder-proto: 1.0.1
- has-symbols@1.0.3: {}
+ has-symbols@1.1.0: {}
has-tostringtag@1.0.2:
dependencies:
- has-symbols: 1.0.3
+ has-symbols: 1.1.0
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
+ hermes-estree@0.25.1: {}
+
+ hermes-parser@0.25.1:
+ dependencies:
+ hermes-estree: 0.25.1
+
http-shutdown@1.2.2: {}
human-signals@5.0.0: {}
@@ -7441,27 +7609,25 @@ snapshots:
imurmurhash@0.1.4: {}
- internal-slot@1.0.7:
+ internal-slot@1.1.0:
dependencies:
es-errors: 1.3.0
hasown: 2.0.2
- side-channel: 1.0.6
+ side-channel: 1.1.0
iron-webcrypto@1.2.1: {}
- is-array-buffer@3.0.4:
+ is-array-buffer@3.0.5:
dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
-
- is-arrayish@0.3.2:
- optional: true
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
is-async-function@2.0.0:
dependencies:
has-tostringtag: 1.0.2
- is-bigint@1.0.4:
+ is-bigint@1.1.0:
dependencies:
has-bigints: 1.0.2
@@ -7469,9 +7635,9 @@ snapshots:
dependencies:
binary-extensions: 2.3.0
- is-boolean-object@1.1.2:
+ is-boolean-object@1.2.2:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
has-tostringtag: 1.0.2
is-bun-module@1.2.1:
@@ -7484,21 +7650,28 @@ snapshots:
dependencies:
hasown: 2.0.2
- is-data-view@1.0.1:
+ is-core-module@2.16.1:
dependencies:
- is-typed-array: 1.1.13
+ hasown: 2.0.2
- is-date-object@1.0.5:
+ is-data-view@1.0.2:
dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ is-typed-array: 1.1.15
+
+ is-date-object@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
has-tostringtag: 1.0.2
is-docker@3.0.0: {}
is-extglob@2.1.1: {}
- is-finalizationregistry@1.0.2:
+ is-finalizationregistry@1.1.1:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
is-fullwidth-code-point@3.0.0: {}
@@ -7518,47 +7691,53 @@ snapshots:
is-negative-zero@2.0.3: {}
- is-number-object@1.0.7:
+ is-number-object@1.1.1:
dependencies:
+ call-bound: 1.0.4
has-tostringtag: 1.0.2
is-number@7.0.0: {}
- is-regex@1.1.4:
+ is-regex@1.2.1:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
+ gopd: 1.2.0
has-tostringtag: 1.0.2
+ hasown: 2.0.2
is-set@2.0.3: {}
- is-shared-array-buffer@1.0.3:
+ is-shared-array-buffer@1.0.4:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
is-stream@3.0.0: {}
- is-string@1.0.7:
+ is-string@1.1.1:
dependencies:
+ call-bound: 1.0.4
has-tostringtag: 1.0.2
- is-symbol@1.0.4:
+ is-symbol@1.1.1:
dependencies:
- has-symbols: 1.0.3
+ call-bound: 1.0.4
+ has-symbols: 1.1.0
+ safe-regex-test: 1.1.0
- is-typed-array@1.1.13:
+ is-typed-array@1.1.15:
dependencies:
- which-typed-array: 1.1.15
+ which-typed-array: 1.1.19
is-weakmap@2.0.2: {}
- is-weakref@1.0.2:
+ is-weakref@1.1.1:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
is-weakset@2.0.3:
dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
+ call-bind: 1.0.8
+ get-intrinsic: 1.3.0
is-wsl@3.1.0:
dependencies:
@@ -7575,9 +7754,9 @@ snapshots:
iterator.prototype@1.1.3:
dependencies:
define-properties: 1.2.1
- get-intrinsic: 1.2.4
- has-symbols: 1.0.3
- reflect.getprototypeof: 1.0.6
+ get-intrinsic: 1.3.0
+ has-symbols: 1.1.0
+ reflect.getprototypeof: 1.0.10
set-function-name: 2.0.2
jackspeak@3.4.3:
@@ -7616,10 +7795,10 @@ snapshots:
jsx-ast-utils@3.3.5:
dependencies:
- array-includes: 3.1.8
- array.prototype.flat: 1.3.2
- object.assign: 4.1.5
- object.values: 1.2.0
+ array-includes: 3.1.9
+ array.prototype.flat: 1.3.3
+ object.assign: 4.1.7
+ object.values: 1.2.1
keyv@4.5.4:
dependencies:
@@ -7731,6 +7910,8 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
+ math-intrinsics@1.1.0: {}
+
merge-stream@2.0.0: {}
merge2@1.4.1: {}
@@ -7797,26 +7978,26 @@ snapshots:
natural-compare@1.4.0: {}
- next@15.5.6(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.3(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
- '@next/env': 15.5.6
+ '@next/env': 16.0.3
'@swc/helpers': 0.5.15
- caniuse-lite: 1.0.30001705
+ caniuse-lite: 1.0.30001755
postcss: 8.4.31
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
styled-jsx: 5.1.6(react@19.2.0)
optionalDependencies:
- '@next/swc-darwin-arm64': 15.5.6
- '@next/swc-darwin-x64': 15.5.6
- '@next/swc-linux-arm64-gnu': 15.5.6
- '@next/swc-linux-arm64-musl': 15.5.6
- '@next/swc-linux-x64-gnu': 15.5.6
- '@next/swc-linux-x64-musl': 15.5.6
- '@next/swc-win32-arm64-msvc': 15.5.6
- '@next/swc-win32-x64-msvc': 15.5.6
+ '@next/swc-darwin-arm64': 16.0.3
+ '@next/swc-darwin-x64': 16.0.3
+ '@next/swc-linux-arm64-gnu': 16.0.3
+ '@next/swc-linux-arm64-musl': 16.0.3
+ '@next/swc-linux-x64-gnu': 16.0.3
+ '@next/swc-linux-x64-musl': 16.0.3
+ '@next/swc-win32-arm64-msvc': 16.0.3
+ '@next/swc-win32-x64-msvc': 16.0.3
'@playwright/test': 1.56.1
- sharp: 0.34.3
+ sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
@@ -7851,41 +8032,44 @@ snapshots:
object-hash@3.0.0: {}
- object-inspect@1.13.2: {}
+ object-inspect@1.13.4: {}
object-keys@1.1.1: {}
- object.assign@4.1.5:
+ object.assign@4.1.7:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
define-properties: 1.2.1
- has-symbols: 1.0.3
+ es-object-atoms: 1.1.1
+ has-symbols: 1.1.0
object-keys: 1.1.1
object.entries@1.1.8:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-object-atoms: 1.0.0
+ es-object-atoms: 1.1.1
object.fromentries@2.0.8:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
+ es-abstract: 1.24.0
+ es-object-atoms: 1.1.1
object.groupby@1.0.3:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
- object.values@1.2.0:
+ object.values@1.2.1:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
define-properties: 1.2.1
- es-object-atoms: 1.0.0
+ es-object-atoms: 1.1.1
onetime@6.0.0:
dependencies:
@@ -7900,6 +8084,12 @@ snapshots:
type-check: 0.4.0
word-wrap: 1.2.5
+ own-keys@1.0.1:
+ dependencies:
+ get-intrinsic: 1.3.0
+ object-keys: 1.1.1
+ safe-push-apply: 1.0.0
+
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
@@ -8106,21 +8296,24 @@ snapshots:
readdirp@4.1.1: {}
- reflect.getprototypeof@1.0.6:
+ reflect.getprototypeof@1.0.10:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
es-errors: 1.3.0
- get-intrinsic: 1.2.4
- globalthis: 1.0.4
- which-builtin-type: 1.1.4
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ which-builtin-type: 1.2.1
- regexp.prototype.flags@1.5.2:
+ regexp.prototype.flags@1.5.4:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
es-errors: 1.3.0
+ get-proto: 1.0.1
+ gopd: 1.2.0
set-function-name: 2.0.2
resolve-from@4.0.0: {}
@@ -8137,7 +8330,7 @@ snapshots:
resolve@2.0.0-next.5:
dependencies:
- is-core-module: 2.15.1
+ is-core-module: 2.16.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -8173,18 +8366,24 @@ snapshots:
dependencies:
queue-microtask: 1.2.3
- safe-array-concat@1.1.2:
+ safe-array-concat@1.1.3:
dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- has-symbols: 1.0.3
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ has-symbols: 1.1.0
isarray: 2.0.5
- safe-regex-test@1.0.3:
+ safe-push-apply@1.0.0:
dependencies:
- call-bind: 1.0.7
es-errors: 1.3.0
- is-regex: 1.1.4
+ isarray: 2.0.5
+
+ safe-regex-test@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-regex: 1.2.1
safer-buffer@2.1.2: {}
@@ -8199,8 +8398,8 @@ snapshots:
define-data-property: 1.1.4
es-errors: 1.3.0
function-bind: 1.1.2
- get-intrinsic: 1.2.4
- gopd: 1.0.1
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
has-property-descriptors: 1.0.2
set-function-name@2.0.2:
@@ -8210,34 +8409,42 @@ snapshots:
functions-have-names: 1.2.3
has-property-descriptors: 1.0.2
- sharp@0.34.3:
+ set-proto@1.0.0:
dependencies:
- color: 4.2.3
- detect-libc: 2.0.4
+ dunder-proto: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+
+ sharp@0.34.5:
+ dependencies:
+ '@img/colour': 1.0.0
+ detect-libc: 2.1.2
semver: 7.7.3
optionalDependencies:
- '@img/sharp-darwin-arm64': 0.34.3
- '@img/sharp-darwin-x64': 0.34.3
- '@img/sharp-libvips-darwin-arm64': 1.2.0
- '@img/sharp-libvips-darwin-x64': 1.2.0
- '@img/sharp-libvips-linux-arm': 1.2.0
- '@img/sharp-libvips-linux-arm64': 1.2.0
- '@img/sharp-libvips-linux-ppc64': 1.2.0
- '@img/sharp-libvips-linux-s390x': 1.2.0
- '@img/sharp-libvips-linux-x64': 1.2.0
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.0
- '@img/sharp-libvips-linuxmusl-x64': 1.2.0
- '@img/sharp-linux-arm': 0.34.3
- '@img/sharp-linux-arm64': 0.34.3
- '@img/sharp-linux-ppc64': 0.34.3
- '@img/sharp-linux-s390x': 0.34.3
- '@img/sharp-linux-x64': 0.34.3
- '@img/sharp-linuxmusl-arm64': 0.34.3
- '@img/sharp-linuxmusl-x64': 0.34.3
- '@img/sharp-wasm32': 0.34.3
- '@img/sharp-win32-arm64': 0.34.3
- '@img/sharp-win32-ia32': 0.34.3
- '@img/sharp-win32-x64': 0.34.3
+ '@img/sharp-darwin-arm64': 0.34.5
+ '@img/sharp-darwin-x64': 0.34.5
+ '@img/sharp-libvips-darwin-arm64': 1.2.4
+ '@img/sharp-libvips-darwin-x64': 1.2.4
+ '@img/sharp-libvips-linux-arm': 1.2.4
+ '@img/sharp-libvips-linux-arm64': 1.2.4
+ '@img/sharp-libvips-linux-ppc64': 1.2.4
+ '@img/sharp-libvips-linux-riscv64': 1.2.4
+ '@img/sharp-libvips-linux-s390x': 1.2.4
+ '@img/sharp-libvips-linux-x64': 1.2.4
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+ '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+ '@img/sharp-linux-arm': 0.34.5
+ '@img/sharp-linux-arm64': 0.34.5
+ '@img/sharp-linux-ppc64': 0.34.5
+ '@img/sharp-linux-riscv64': 0.34.5
+ '@img/sharp-linux-s390x': 0.34.5
+ '@img/sharp-linux-x64': 0.34.5
+ '@img/sharp-linuxmusl-arm64': 0.34.5
+ '@img/sharp-linuxmusl-x64': 0.34.5
+ '@img/sharp-wasm32': 0.34.5
+ '@img/sharp-win32-arm64': 0.34.5
+ '@img/sharp-win32-ia32': 0.34.5
+ '@img/sharp-win32-x64': 0.34.5
optional: true
shebang-command@2.0.0:
@@ -8246,22 +8453,38 @@ snapshots:
shebang-regex@3.0.0: {}
- side-channel@1.0.6:
+ side-channel-list@1.0.0:
dependencies:
- call-bind: 1.0.7
es-errors: 1.3.0
- get-intrinsic: 1.2.4
- object-inspect: 1.13.2
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
siginfo@2.0.0: {}
signal-exit@4.1.0: {}
- simple-swizzle@0.2.2:
- dependencies:
- is-arrayish: 0.3.2
- optional: true
-
slash@5.1.0: {}
source-map-js@1.2.1: {}
@@ -8281,6 +8504,11 @@ snapshots:
std-env@3.7.0: {}
+ stop-iteration-iterator@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ internal-slot: 1.1.0
+
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -8295,48 +8523,52 @@ snapshots:
string.prototype.includes@2.0.1:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
string.prototype.matchall@4.0.11:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
es-errors: 1.3.0
- es-object-atoms: 1.0.0
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-symbols: 1.0.3
- internal-slot: 1.0.7
- regexp.prototype.flags: 1.5.2
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ regexp.prototype.flags: 1.5.4
set-function-name: 2.0.2
- side-channel: 1.0.6
+ side-channel: 1.1.0
string.prototype.repeat@1.0.0:
dependencies:
define-properties: 1.2.1
- es-abstract: 1.23.3
+ es-abstract: 1.24.0
- string.prototype.trim@1.2.9:
+ string.prototype.trim@1.2.10:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-data-property: 1.1.4
define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
+ es-abstract: 1.24.0
+ es-object-atoms: 1.1.1
+ has-property-descriptors: 1.0.2
- string.prototype.trimend@1.0.8:
+ string.prototype.trimend@1.0.9:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
define-properties: 1.2.1
- es-object-atoms: 1.0.0
+ es-object-atoms: 1.1.1
string.prototype.trimstart@1.0.8:
dependencies:
- call-bind: 1.0.7
+ call-bind: 1.0.8
define-properties: 1.2.1
- es-object-atoms: 1.0.0
+ es-object-atoms: 1.1.1
strip-ansi@6.0.1:
dependencies:
@@ -8463,11 +8695,11 @@ snapshots:
node-addon-api: 8.3.0
node-gyp-build: 4.8.4
- ts-api-utils@1.3.0(typescript@5.5.4):
+ ts-api-utils@2.1.0(typescript@5.5.4):
dependencies:
typescript: 5.5.4
- ts-api-utils@1.3.0(typescript@5.6.3):
+ ts-api-utils@2.1.0(typescript@5.6.3):
dependencies:
typescript: 5.6.3
@@ -8553,37 +8785,60 @@ snapshots:
type-fest@4.36.0: {}
- typed-array-buffer@1.0.2:
+ typed-array-buffer@1.0.3:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
es-errors: 1.3.0
- is-typed-array: 1.1.13
+ is-typed-array: 1.1.15
- typed-array-byte-length@1.0.1:
+ typed-array-byte-length@1.0.3:
dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
- typed-array-byte-offset@1.0.2:
+ typed-array-byte-offset@1.0.4:
dependencies:
available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ reflect.getprototypeof: 1.0.10
- typed-array-length@1.0.6:
+ typed-array-length@1.0.7:
dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ is-typed-array: 1.1.15
possible-typed-array-names: 1.0.0
+ reflect.getprototypeof: 1.0.10
+
+ typescript-eslint@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ eslint: 9.39.1(jiti@2.6.1)
+ typescript: 5.5.4
+ transitivePeerDependencies:
+ - supports-color
+
+ typescript-eslint@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ eslint: 9.39.1(jiti@2.6.1)
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - supports-color
typescript@5.5.4: {}
@@ -8593,12 +8848,12 @@ snapshots:
ufo@1.6.1: {}
- unbox-primitive@1.0.2:
+ unbox-primitive@1.1.0:
dependencies:
- call-bind: 1.0.7
+ call-bound: 1.0.4
has-bigints: 1.0.2
- has-symbols: 1.0.3
- which-boxed-primitive: 1.0.2
+ has-symbols: 1.1.0
+ which-boxed-primitive: 1.1.1
uncrypto@0.1.3: {}
@@ -8715,28 +8970,29 @@ snapshots:
- supports-color
- terser
- which-boxed-primitive@1.0.2:
+ which-boxed-primitive@1.1.1:
dependencies:
- is-bigint: 1.0.4
- is-boolean-object: 1.1.2
- is-number-object: 1.0.7
- is-string: 1.0.7
- is-symbol: 1.0.4
+ is-bigint: 1.1.0
+ is-boolean-object: 1.2.2
+ is-number-object: 1.1.1
+ is-string: 1.1.1
+ is-symbol: 1.1.1
- which-builtin-type@1.1.4:
+ which-builtin-type@1.2.1:
dependencies:
- function.prototype.name: 1.1.6
+ call-bound: 1.0.4
+ function.prototype.name: 1.1.8
has-tostringtag: 1.0.2
is-async-function: 2.0.0
- is-date-object: 1.0.5
- is-finalizationregistry: 1.0.2
+ is-date-object: 1.1.0
+ is-finalizationregistry: 1.1.1
is-generator-function: 1.0.10
- is-regex: 1.1.4
- is-weakref: 1.0.2
+ is-regex: 1.2.1
+ is-weakref: 1.1.1
isarray: 2.0.5
- which-boxed-primitive: 1.0.2
+ which-boxed-primitive: 1.1.1
which-collection: 1.0.2
- which-typed-array: 1.1.15
+ which-typed-array: 1.1.19
which-collection@1.0.2:
dependencies:
@@ -8745,12 +9001,14 @@ snapshots:
is-weakmap: 2.0.2
is-weakset: 2.0.3
- which-typed-array@1.1.15:
+ which-typed-array@1.1.19:
dependencies:
available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
has-tostringtag: 1.0.2
which@2.0.2:
@@ -8789,3 +9047,9 @@ snapshots:
yocto-queue@0.1.0: {}
yoctocolors-cjs@2.1.2: {}
+
+ zod-validation-error@4.0.2(zod@4.1.12):
+ dependencies:
+ zod: 4.1.12
+
+ zod@4.1.12: {}
From 68337df3db3fed49fb0f3d6b17dd2eb8e95146f0 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Thu, 20 Nov 2025 21:55:36 +0000
Subject: [PATCH 016/353] Update @types/bun to version 1.3.2
---
packages/@tailwindcss-standalone/package.json | 2 +-
pnpm-lock.yaml | 39 +++++++++++++------
2 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index e21a2ec46..cbe2fabb1 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -42,7 +42,7 @@
"@parcel/watcher-linux-x64-glibc": "^2.5.1",
"@parcel/watcher-linux-x64-musl": "^2.5.1",
"@parcel/watcher-win32-x64": "^2.5.1",
- "@types/bun": "^1.3.0",
+ "@types/bun": "^1.3.2",
"bun": "^1.3.2",
"lightningcss-darwin-arm64": "catalog:",
"lightningcss-darwin-x64": "catalog:",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8078a85e6..f240b8e76 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -332,8 +332,8 @@ importers:
specifier: ^2.5.1
version: 2.5.1
'@types/bun':
- specifier: ^1.3.0
- version: 1.3.0(@types/react@19.2.6)
+ specifier: ^1.3.2
+ version: 1.3.2(@types/react@19.2.6)
bun:
specifier: ^1.3.2
version: 1.3.2
@@ -2181,6 +2181,7 @@ packages:
'@parcel/watcher-darwin-arm64@2.5.1':
resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.0':
@@ -2192,6 +2193,7 @@ packages:
'@parcel/watcher-darwin-x64@2.5.1':
resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.0':
@@ -2239,6 +2241,7 @@ packages:
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-arm64-musl@2.5.0':
@@ -2250,6 +2253,7 @@ packages:
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-x64-glibc@2.5.0':
@@ -2261,6 +2265,7 @@ packages:
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [linux]
'@parcel/watcher-linux-x64-musl@2.5.0':
@@ -2272,6 +2277,7 @@ packages:
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [linux]
'@parcel/watcher-wasm@2.5.0':
@@ -2313,6 +2319,7 @@ packages:
'@parcel/watcher-win32-x64@2.5.1':
resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [win32]
'@parcel/watcher@2.5.0':
@@ -2478,8 +2485,8 @@ packages:
'@types/braces@3.0.5':
resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==}
- '@types/bun@1.3.0':
- resolution: {integrity: sha512-+lAGCYjXjip2qY375xX/scJeVRmZ5cY0wyHYyCYxNcdEXrQ4AOe3gACgd4iQ8ksOslJtW4VNxBJ8llUwc3a6AA==}
+ '@types/bun@1.3.2':
+ resolution: {integrity: sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg==}
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
@@ -2745,13 +2752,14 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
- bun-types@1.3.0:
- resolution: {integrity: sha512-u8X0thhx+yJ0KmkxuEo9HAtdfgCBaM/aI9K90VQcQioAmkVp3SG3FkwWGibUFz3WdXAdcsqOcbU40lK7tbHdkQ==}
+ bun-types@1.3.2:
+ resolution: {integrity: sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg==}
peerDependencies:
'@types/react': ^19
bun@1.3.2:
resolution: {integrity: sha512-x75mPJiEfhO1j4Tfc65+PtW6ZyrAB6yTZInydnjDZXF9u9PRAnr6OK3v0Q9dpDl0dxRHkXlYvJ8tteJxc8t4Sw==}
+ cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -3646,11 +3654,13 @@ packages:
lightningcss-darwin-arm64@1.30.2:
resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.30.2:
resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.30.2:
@@ -3668,21 +3678,25 @@ packages:
lightningcss-linux-arm64-gnu@1.30.2:
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [linux]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [linux]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [linux]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [linux]
lightningcss-win32-arm64-msvc@1.30.2:
@@ -3694,6 +3708,7 @@ packages:
lightningcss-win32-x64-msvc@1.30.2:
resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [win32]
lightningcss@1.30.2:
@@ -6199,9 +6214,9 @@ snapshots:
'@types/braces@3.0.5': {}
- '@types/bun@1.3.0(@types/react@19.2.6)':
+ '@types/bun@1.3.2(@types/react@19.2.6)':
dependencies:
- bun-types: 1.3.0(@types/react@19.2.6)
+ bun-types: 1.3.2(@types/react@19.2.6)
transitivePeerDependencies:
- '@types/react'
@@ -6628,7 +6643,7 @@ snapshots:
buffer-from@1.1.2:
optional: true
- bun-types@1.3.0(@types/react@19.2.6):
+ bun-types@1.3.2(@types/react@19.2.6):
dependencies:
'@types/node': 20.19.1
'@types/react': 19.2.6
@@ -7089,7 +7104,7 @@ snapshots:
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
@@ -7143,7 +7158,7 @@ snapshots:
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -7190,7 +7205,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
From 5a8e8783190ea9e44a01342f4a08624703e2d9a4 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 20 Nov 2025 17:11:43 -0500
Subject: [PATCH 017/353] Handle `future` and `experimental` config keys during
upgrade (#19344)
Fixes #19342
---
CHANGELOG.md | 1 +
integrations/upgrade/js-config.test.ts | 240 ++++++++++++++++++
.../src/codemods/config/migrate-js-config.ts | 25 ++
.../src/compat/config/resolve-config.ts | 1 +
.../tailwindcss/src/compat/config/types.ts | 9 +
5 files changed, 276 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 206e0bc0a..7dcb564a2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Skip comments in Ruby files when checking for class names ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
- Skip over arbitrary property utilities with a top-level `!` in the value ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
- Support environment API in `@tailwindcss/vite` ([#18970](https://github.com/tailwindlabs/tailwindcss/pull/18970))
+- Upgrade: Handle `future` and `experimental` config keys ([#19344](https://github.com/tailwindlabs/tailwindcss/pull/19344))
### Added
diff --git a/integrations/upgrade/js-config.test.ts b/integrations/upgrade/js-config.test.ts
index 039f3dc8d..22da265c5 100644
--- a/integrations/upgrade/js-config.test.ts
+++ b/integrations/upgrade/js-config.test.ts
@@ -1841,3 +1841,243 @@ describe('border compatibility', () => {
},
)
})
+
+test(
+ `future and experimental keys are supported`,
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "dependencies": {
+ "tailwindcss": "^3",
+ "@tailwindcss/upgrade": "workspace:^"
+ }
+ }
+ `,
+ 'tailwind.config.ts': ts`
+ import { type Config } from 'tailwindcss'
+ import defaultTheme from 'tailwindcss/defaultTheme'
+
+ module.exports = {
+ darkMode: 'selector',
+ content: ['./src/**/*.{html,js}'],
+ future: {
+ hoverOnlyWhenSupported: true,
+ respectDefaultRingColorOpacity: true,
+ disableColorOpacityUtilitiesByDefault: true,
+ relativeContentPathsByDefault: true,
+ },
+ experimental: {
+ generalizedModifiers: true,
+ },
+ theme: {
+ colors: {
+ red: {
+ 400: '#f87171',
+ 500: 'red',
+ },
+ },
+ },
+ plugins: [],
+ } satisfies Config
+ `,
+ 'src/input.css': css`
+ @tailwind base;
+ @tailwind components;
+ @tailwind utilities;
+ `,
+ },
+ },
+ async ({ exec, fs, expect }) => {
+ await exec('npx @tailwindcss/upgrade')
+
+ expect(await fs.dumpFiles('src/**/*.css')).toMatchInlineSnapshot(`
+ "
+ --- src/input.css ---
+ @import 'tailwindcss';
+
+ @custom-variant dark (&:where(.dark, .dark *));
+
+ @theme {
+ --color-*: initial;
+ --color-red-400: #f87171;
+ --color-red-500: red;
+ }
+
+ /*
+ The default border color has changed to \`currentcolor\` in Tailwind CSS v4,
+ so we've added these compatibility styles to make sure everything still
+ looks the same as it did with Tailwind CSS v3.
+
+ If we ever want to remove these styles, we need to add an explicit border
+ color utility to any element that depends on these defaults.
+ */
+ @layer base {
+ *,
+ ::after,
+ ::before,
+ ::backdrop,
+ ::file-selector-button {
+ border-color: var(--color-gray-200, currentcolor);
+ }
+ }
+ "
+ `)
+
+ expect((await fs.dumpFiles('tailwind.config.ts')).trim()).toBe('')
+ },
+)
+
+test(
+ `unknown future keys dont migrate the config`,
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "dependencies": {
+ "tailwindcss": "^3",
+ "@tailwindcss/upgrade": "workspace:^"
+ }
+ }
+ `,
+ 'tailwind.config.ts': ts`
+ import { type Config } from 'tailwindcss'
+ import defaultTheme from 'tailwindcss/defaultTheme'
+
+ module.exports = {
+ darkMode: 'selector',
+ content: ['./src/**/*.{html,js}'],
+ future: {
+ something: true,
+ },
+ } satisfies Config
+ `,
+ 'src/input.css': css`
+ @tailwind base;
+ @tailwind components;
+ @tailwind utilities;
+ `,
+ },
+ },
+ async ({ exec, fs, expect }) => {
+ await exec('npx @tailwindcss/upgrade')
+
+ expect(await fs.dumpFiles('src/**/*.css')).toMatchInlineSnapshot(`
+ "
+ --- src/input.css ---
+ @import 'tailwindcss';
+
+ @config '../tailwind.config.ts';
+
+ /*
+ The default border color has changed to \`currentcolor\` in Tailwind CSS v4,
+ so we've added these compatibility styles to make sure everything still
+ looks the same as it did with Tailwind CSS v3.
+
+ If we ever want to remove these styles, we need to add an explicit border
+ color utility to any element that depends on these defaults.
+ */
+ @layer base {
+ *,
+ ::after,
+ ::before,
+ ::backdrop,
+ ::file-selector-button {
+ border-color: var(--color-gray-200, currentcolor);
+ }
+ }
+ "
+ `)
+
+ expect((await fs.dumpFiles('tailwind.config.ts')).trim()).toMatchInlineSnapshot(`
+ "--- tailwind.config.ts ---
+ import { type Config } from 'tailwindcss'
+ import defaultTheme from 'tailwindcss/defaultTheme'
+
+ module.exports = {
+ darkMode: 'selector',
+ content: ['./src/**/*.{html,js}'],
+ future: {
+ something: true,
+ },
+ } satisfies Config"
+ `)
+ },
+)
+
+test(
+ `unknown experimental keys dont migrate the config`,
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "dependencies": {
+ "tailwindcss": "^3",
+ "@tailwindcss/upgrade": "workspace:^"
+ }
+ }
+ `,
+ 'tailwind.config.ts': ts`
+ import { type Config } from 'tailwindcss'
+ import defaultTheme from 'tailwindcss/defaultTheme'
+
+ module.exports = {
+ darkMode: 'selector',
+ content: ['./src/**/*.{html,js}'],
+ experimental: {
+ something: true,
+ },
+ } satisfies Config
+ `,
+ 'src/input.css': css`
+ @tailwind base;
+ @tailwind components;
+ @tailwind utilities;
+ `,
+ },
+ },
+ async ({ exec, fs, expect }) => {
+ await exec('npx @tailwindcss/upgrade')
+
+ expect(await fs.dumpFiles('src/**/*.css')).toMatchInlineSnapshot(`
+ "
+ --- src/input.css ---
+ @import 'tailwindcss';
+
+ @config '../tailwind.config.ts';
+
+ /*
+ The default border color has changed to \`currentcolor\` in Tailwind CSS v4,
+ so we've added these compatibility styles to make sure everything still
+ looks the same as it did with Tailwind CSS v3.
+
+ If we ever want to remove these styles, we need to add an explicit border
+ color utility to any element that depends on these defaults.
+ */
+ @layer base {
+ *,
+ ::after,
+ ::before,
+ ::backdrop,
+ ::file-selector-button {
+ border-color: var(--color-gray-200, currentcolor);
+ }
+ }
+ "
+ `)
+
+ expect((await fs.dumpFiles('tailwind.config.ts')).trim()).toMatchInlineSnapshot(`
+ "--- tailwind.config.ts ---
+ import { type Config } from 'tailwindcss'
+ import defaultTheme from 'tailwindcss/defaultTheme'
+
+ module.exports = {
+ darkMode: 'selector',
+ content: ['./src/**/*.{html,js}'],
+ experimental: {
+ something: true,
+ },
+ } satisfies Config"
+ `)
+ },
+)
diff --git a/packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts b/packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts
index 24afe56b8..1b2b066ab 100644
--- a/packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts
+++ b/packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts
@@ -411,6 +411,8 @@ function canMigrateConfig(unresolvedConfig: Config, source: string): boolean {
'presets',
'prefix', // Prefix is handled in the dedicated prefix migrator
'corePlugins',
+ 'future',
+ 'experimental',
]
if (Object.keys(unresolvedConfig).some((key) => !knownProperties.includes(key))) {
@@ -425,6 +427,29 @@ function canMigrateConfig(unresolvedConfig: Config, source: string): boolean {
return false
}
+ // If there are unknown "future" flags we should bail
+ if (unresolvedConfig.future && unresolvedConfig.future !== 'all') {
+ let knownFlags = [
+ 'hoverOnlyWhenSupported',
+ 'respectDefaultRingColorOpacity',
+ 'disableColorOpacityUtilitiesByDefault',
+ 'relativeContentPathsByDefault',
+ ]
+
+ if (Object.keys(unresolvedConfig.future).some((key) => !knownFlags.includes(key))) {
+ return false
+ }
+ }
+
+ // If there are unknown "experimental" flags we should bail
+ if (unresolvedConfig.experimental && unresolvedConfig.experimental !== 'all') {
+ let knownFlags = ['generalizedModifiers']
+
+ if (Object.keys(unresolvedConfig.experimental).some((key) => !knownFlags.includes(key))) {
+ return false
+ }
+ }
+
// Only migrate the config file if all top-level theme keys are allowed to be
// migrated
if (theme && typeof theme === 'object') {
diff --git a/packages/tailwindcss/src/compat/config/resolve-config.ts b/packages/tailwindcss/src/compat/config/resolve-config.ts
index 3fdc1f454..858f4bbbe 100644
--- a/packages/tailwindcss/src/compat/config/resolve-config.ts
+++ b/packages/tailwindcss/src/compat/config/resolve-config.ts
@@ -33,6 +33,7 @@ interface ResolutionContext {
let minimal: ResolvedConfig = {
blocklist: [],
future: {},
+ experimental: {},
prefix: '',
important: false,
darkMode: null,
diff --git a/packages/tailwindcss/src/compat/config/types.ts b/packages/tailwindcss/src/compat/config/types.ts
index f70afa2cb..76851a397 100644
--- a/packages/tailwindcss/src/compat/config/types.ts
+++ b/packages/tailwindcss/src/compat/config/types.ts
@@ -105,3 +105,12 @@ export interface UserConfig {
export interface ResolvedConfig {
future: Record
}
+
+// `experimental` key support
+export interface UserConfig {
+ experimental?: 'all' | Record
+}
+
+export interface ResolvedConfig {
+ experimental: Record
+}
From 642b9b8576941a4bb1ab66a4fc8c5c5e9862fad8 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 20 Nov 2025 17:39:55 -0500
Subject: [PATCH 018/353] =?UTF-8?q?Don=E2=80=99t=20unconditionally=20conve?=
=?UTF-8?q?rt=20config=20keys=20to=20`kebab-case`=20(#19337)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes #18114
Closes #18115
This PR changes JS config handling such that we always preserve casing
for theme keys (when possible).
Now there are *two* exceptions to this rule:
1. Top-level keys in the theme *do* get converted to kebab-case. As CSS
variables are not generated from these this shouldn't be a big issue.
All of our internal plugins look for kebab-case keys. So, for example,
take the path `backgroundColor.red.500`. This must translate to
`--background-color-red-500`. But if you had something like
`backgroundColor.lightBlue` it would be perfectly fine for that to
translate to `--background-color-lightBlue` internally (and thus the
utility be written as `bg-lightBlue`.
2. Tuple object keys are converted to kebab-case as well.
These keys are converted to "nested" key syntax internally and
typtically represent CSS property names.
For example:
```js
export default {
theme: {
fontSize: {
xs: ["1.5rem", { lineHeight: "1.3" }]
},
fontFamily: {
sans: ["Potato Mono", { fontVariationSettings: '"XHGT" 0.7' }]
}
}
}
```
The `lineHeight` key here must be converted to `line-height` because it
represents a CSS property name. The theme key that represents this value
is `--text-xs--line-height`. The same situation applies for the
`fontVariationSettings` where the theme key is
`--font-sans--font-variation-settings`.
---
CHANGELOG.md | 1 +
integrations/upgrade/js-config.test.ts | 12 ++---
.../src/compat/apply-config-to-theme.test.ts | 4 +-
.../src/compat/apply-config-to-theme.ts | 26 ++++++++--
.../tailwindcss/src/compat/config.test.ts | 52 +++++++++++++++++++
5 files changed, 82 insertions(+), 13 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7dcb564a2..1fba8eaf9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Skip comments in Ruby files when checking for class names ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
- Skip over arbitrary property utilities with a top-level `!` in the value ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
- Support environment API in `@tailwindcss/vite` ([#18970](https://github.com/tailwindlabs/tailwindcss/pull/18970))
+- Preserve case of theme keys from JS configs and plugins ([#19337](https://github.com/tailwindlabs/tailwindcss/pull/19337))
- Upgrade: Handle `future` and `experimental` config keys ([#19344](https://github.com/tailwindlabs/tailwindcss/pull/19344))
### Added
diff --git a/integrations/upgrade/js-config.test.ts b/integrations/upgrade/js-config.test.ts
index 22da265c5..eaa04df96 100644
--- a/integrations/upgrade/js-config.test.ts
+++ b/integrations/upgrade/js-config.test.ts
@@ -167,9 +167,9 @@ test(
"
--- src/index.html ---
-
+
--- src/input.css ---
@import 'tailwindcss';
@@ -187,12 +187,12 @@ test(
--color-red-500: #ef4444;
--color-red-600: #dc2626;
- --color-super-red: #ff0000;
+ --color-superRed: #ff0000;
--color-steel: rgb(70 130 180);
--color-smoke: rgba(245, 245, 245, var(--smoke-alpha, 1));
--opacity-*: initial;
- --opacity-super-opaque: 95%;
+ --opacity-superOpaque: 95%;
--text-*: initial;
--text-xs: 0.75rem;
@@ -265,9 +265,9 @@ test(
--animate-spin-clockwise: spin-clockwise 1s linear infinite;
--animate-spin-counterclockwise: spin-counterclockwise 1s linear infinite;
- --tracking-super-wide: 0.25em;
+ --tracking-superWide: 0.25em;
- --leading-super-loose: 3;
+ --leading-superLoose: 3;
@keyframes spin-clockwise {
0% {
diff --git a/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts b/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
index 83fc2f2c9..f36e5ab15 100644
--- a/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
+++ b/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
@@ -118,8 +118,8 @@ test('config values can be merged into the theme', () => {
])
expect(theme.resolve('2xl', ['--text'])).toEqual('2rem')
expect(theme.resolveWith('2xl', ['--text'], ['--line-height'])).toEqual(['2rem', {}])
- expect(theme.resolve('super-wide', ['--tracking'])).toEqual('0.25em')
- expect(theme.resolve('super-loose', ['--leading'])).toEqual('3')
+ expect(theme.resolve('superWide', ['--tracking'])).toEqual('0.25em')
+ expect(theme.resolve('superLoose', ['--leading'])).toEqual('3')
expect(theme.resolve('1/2', ['--width'])).toEqual('60%')
expect(theme.resolve('0.5', ['--width'])).toEqual('60%')
expect(theme.resolve('100%', ['--width'])).toEqual('100%')
diff --git a/packages/tailwindcss/src/compat/apply-config-to-theme.ts b/packages/tailwindcss/src/compat/apply-config-to-theme.ts
index a430f9faa..ce3958eb3 100644
--- a/packages/tailwindcss/src/compat/apply-config-to-theme.ts
+++ b/packages/tailwindcss/src/compat/apply-config-to-theme.ts
@@ -185,11 +185,27 @@ export function keyPathToCssProperty(path: string[]) {
.map((path, idx, all) => (path === '1' && idx !== all.length - 1 ? '' : path))
// Resolve the key path to a CSS variable segment
- .map((part) =>
- part
- .replaceAll('.', '_')
- .replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}-${b.toLowerCase()}`),
- )
+ .map((part, idx) => {
+ part = part.replaceAll('.', '_')
+
+ let shouldConvert =
+ // The first "namespace" part should be converted to kebab-case
+ // This converts things like backgroundColor to `background-color`
+ idx === 0 ||
+ // Any tuple nested key should be converted to kebab-case
+ // These are identified with a leading `-`
+ // e.g. `fontSize.xs.1.lineHeight` -> `font-size-xs--line-height`
+ part.startsWith('-') ||
+ // `lineHeight` is a bit of a special case in which it does not
+ // always begin with a leading `-` even when as a nested tuple key
+ part === 'lineHeight'
+
+ if (shouldConvert) {
+ part = part.replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}-${b.toLowerCase()}`)
+ }
+
+ return part
+ })
// Remove the `DEFAULT` key at the end of a path
// We're reading from CSS anyway so it'll be a string
diff --git a/packages/tailwindcss/src/compat/config.test.ts b/packages/tailwindcss/src/compat/config.test.ts
index d86d5304b..25bd893d1 100644
--- a/packages/tailwindcss/src/compat/config.test.ts
+++ b/packages/tailwindcss/src/compat/config.test.ts
@@ -1719,3 +1719,55 @@ test('The theme() function does not try indexing into strings', async () => {
"
`)
})
+
+test('camel case keys are preserved', async () => {
+ let compiler = await compile(
+ css`
+ @tailwind utilities;
+ @theme {
+ --color-blue-green: slate;
+ }
+ @config "./plugin.js";
+ `,
+ {
+ loadModule: async () => {
+ return {
+ base: '/',
+ path: '',
+ module: {
+ theme: {
+ extend: {
+ backgroundColor: {
+ lightGreen: '#c0ffee',
+ },
+ },
+ },
+ },
+ }
+ },
+ },
+ )
+
+ expect(
+ compiler.build([
+ // From CSS
+ 'bg-blue-green', // should be output
+ 'bg-blueGreen', // should not
+
+ // From JS config
+ 'bg-light-green', // should not be output
+ 'bg-lightGreen', // should be
+ ]),
+ ).toMatchInlineSnapshot(`
+ ".bg-blue-green {
+ background-color: var(--color-blue-green);
+ }
+ .bg-lightGreen {
+ background-color: #c0ffee;
+ }
+ :root, :host {
+ --color-blue-green: slate;
+ }
+ "
+ `)
+})
From 479b725cd33f9b3b00e0ccd0a4473d0f96deae1d Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Fri, 21 Nov 2025 00:16:20 +0100
Subject: [PATCH 019/353] Bump Vitest to v4 (#19216)
This PR bumps Vitest from v2 to v4. As far as I know we don't use any
Vitest specific features in our tests, but had to upgrade the
`vitest.workspace.ts` file to a `vitest.config.ts` file instead.
The only features we use are the typical `describe`, `it`, `test`, and
`expect` functions.
The only other part we use is `vi.spyOn` and `vi.fn` but those didn't
change in API either.
The test shards were removed to prevent errors. Not all suites have
enough files / tests to be broken up into 3 parts so Vitest now errors
when that happens.
### Test plan
1. All tests should pass in CI.
2. All integration tests should pass in CI.
---------
Co-authored-by: Jordan Pittman
---
.github/workflows/integration-tests.yml | 14 +-
integrations/upgrade/index.test.ts | 2 +
integrations/utils.ts | 3 +-
package.json | 2 +-
.../src/codemods/css/migrate-at-apply.test.ts | 68 +-
.../template/is-safe-migration.test.ts | 18 +-
.../src/canonicalize-candidates.test.ts | 179 +++--
pnpm-lock.yaml | 616 +++++-------------
vitest.config.ts | 8 +
vitest.workspace.ts | 1 -
10 files changed, 346 insertions(+), 565 deletions(-)
create mode 100644 vitest.config.ts
delete mode 100644 vitest.workspace.ts
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index b84ba2140..475570615 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -103,18 +103,8 @@ jobs:
CARGO_PROFILE_RELEASE_LTO: 'off'
CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER: 'lld-link'
- - name: Test ${{ matrix.integration }} 1/3
- run: pnpm run test:integrations ./integrations/${{ matrix.integration }} --shard 1/3
- env:
- GITHUB_WORKSPACE: ${{ github.workspace }}
-
- - name: Test ${{ matrix.integration }} 2/3
- run: pnpm run test:integrations ./integrations/${{ matrix.integration }} --shard 2/3
- env:
- GITHUB_WORKSPACE: ${{ github.workspace }}
-
- - name: Test ${{ matrix.integration }} 3/3
- run: pnpm run test:integrations ./integrations/${{ matrix.integration }} --shard 3/3
+ - name: Test ${{ matrix.integration }}
+ run: pnpm run test:integrations ./integrations/${{ matrix.integration }}
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
diff --git a/integrations/upgrade/index.test.ts b/integrations/upgrade/index.test.ts
index 614d202a9..a9d71b3d5 100644
--- a/integrations/upgrade/index.test.ts
+++ b/integrations/upgrade/index.test.ts
@@ -174,6 +174,8 @@ test(
test(
`upgrades a v3 project with prefixes to v4`,
{
+ // Somehow this test takes *way* longer than the rest (but not always?)
+ timeout: 120_000,
fs: {
'package.json': json`
{
diff --git a/integrations/utils.ts b/integrations/utils.ts
index 03c4c4e71..a2fc0d58a 100644
--- a/integrations/utils.ts
+++ b/integrations/utils.ts
@@ -37,6 +37,7 @@ interface TestConfig {
[filePath: string]: string | Uint8Array
}
+ timeout?: number
installDependencies?: boolean
}
interface TestContext {
@@ -86,7 +87,7 @@ export function test(
return defaultTest(
name,
{
- timeout: TEST_TIMEOUT,
+ timeout: config.timeout ?? TEST_TIMEOUT,
retry: process.env.CI ? 2 : 0,
only: only || (!process.env.CI && debug),
skip,
diff --git a/package.json b/package.json
index bd0eb5491..747303a78 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,7 @@
"tsup": "^8.5.1",
"turbo": "^2.6.1",
"typescript": "^5.5.4",
- "vitest": "^2.0.5"
+ "vitest": "^4.0.3"
},
"packageManager": "pnpm@9.6.0",
"pnpm": {
diff --git a/packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-apply.test.ts b/packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-apply.test.ts
index d0b722c9c..b8b309e54 100644
--- a/packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-apply.test.ts
+++ b/packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-apply.test.ts
@@ -13,6 +13,11 @@ async function migrate(input: string, config: Config = {}) {
let designSystem = await __unstable__loadDesignSystem(
css`
@import 'tailwindcss';
+
+ /* TODO(perf): Only here to speed up the tests */
+ @theme {
+ --*: initial;
+ }
`,
{ base: __dirname },
)
@@ -85,35 +90,44 @@ it('should move the legacy `!` prefix, to the new `!` postfix notation', async (
`)
})
-it('should apply all candidate migration when migrating with a config', async () => {
- async function migrateWithPrefix(input: string) {
- return postcss()
- .use(
- migrateAtApply({
- designSystem: await __unstable__loadDesignSystem(
- css`
- @import 'tailwindcss' prefix(tw);
- `,
- { base: __dirname },
- ),
- userConfig: {
- prefix: 'tw_',
- },
- }),
- )
- .process(input, { from: expect.getState().testPath })
- .then((result) => result.css)
- }
+it(
+ 'should apply all candidate migration when migrating with a config',
+ { timeout: 10_000 },
+ async () => {
+ async function migrateWithPrefix(input: string) {
+ return postcss()
+ .use(
+ migrateAtApply({
+ designSystem: await __unstable__loadDesignSystem(
+ css`
+ @import 'tailwindcss' prefix(tw);
- expect(
- await migrateWithPrefix(css`
- .foo {
- @apply !tw_flex [color:--my-color] tw_bg-gradient-to-t;
- }
- `),
- ).toMatchInlineSnapshot(`
+ /* TODO(perf): Only here to speed up the tests */
+ @theme {
+ --*: initial;
+ }
+ `,
+ { base: __dirname },
+ ),
+ userConfig: {
+ prefix: 'tw_',
+ },
+ }),
+ )
+ .process(input, { from: expect.getState().testPath })
+ .then((result) => result.css)
+ }
+
+ expect(
+ await migrateWithPrefix(css`
+ .foo {
+ @apply !tw_flex [color:--my-color] tw_bg-gradient-to-t;
+ }
+ `),
+ ).toMatchInlineSnapshot(`
".foo {
@apply tw:flex! tw:text-(--my-color) tw:bg-linear-to-t;
}"
`)
-})
+ },
+)
diff --git a/packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts b/packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts
index 2061f27d4..7efb7b48d 100644
--- a/packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts
+++ b/packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts
@@ -4,10 +4,22 @@ import * as versions from '../../utils/version'
import { migrateCandidate } from './migrate'
vi.spyOn(versions, 'isMajor').mockReturnValue(true)
+const css = String.raw
+
describe('is-safe-migration', async () => {
- let designSystem = await __unstable__loadDesignSystem('@import "tailwindcss";', {
- base: __dirname,
- })
+ let designSystem = await __unstable__loadDesignSystem(
+ css`
+ @import 'tailwindcss';
+
+ /* TODO(perf): Only here to speed up the tests */
+ @theme {
+ --*: initial;
+ --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
+ }
+ `,
+ { base: __dirname },
+ )
test.each([
[`let notBorder = !border \n`, '!border'],
diff --git a/packages/tailwindcss/src/canonicalize-candidates.test.ts b/packages/tailwindcss/src/canonicalize-candidates.test.ts
index c5599d181..26a34b964 100644
--- a/packages/tailwindcss/src/canonicalize-candidates.test.ts
+++ b/packages/tailwindcss/src/canonicalize-candidates.test.ts
@@ -6,6 +6,7 @@ import type { CanonicalizeOptions } from './intellisense'
import { DefaultMap } from './utils/default-map'
const css = String.raw
+const timeout = 25_000
const defaultTheme = fs.readFileSync(path.resolve(__dirname, '../theme.css'), 'utf8')
const designSystems = new DefaultMap((base: string) => {
@@ -20,6 +21,25 @@ const designSystems = new DefaultMap((base: string) => {
@tailwind utilities;
${defaultTheme}
+
+ /* TODO(perf): Only here to speed up the tests */
+ @theme {
+ --*: initial;
+ --breakpoint-lg: 64rem;
+ --breakpoint-md: 48rem;
+ --color-blue-200: oklch(88.2% 0.059 254.128);
+ --color-blue-500: oklch(62.3% 0.214 259.815);
+ --color-red-500: oklch(63.7% 0.237 25.331);
+ --color-white: #fff;
+ --container-md: 28rem;
+ --font-weight-normal: 400;
+ --leading-relaxed: 1.625;
+ --spacing: 0.25rem;
+ --text-sm--line-height: calc(1.25 / 0.875);
+ --text-sm: 0.875rem;
+ --text-xs--line-height: calc(1 / 0.75);
+ --text-xs: 0.75rem;
+ }
`,
}
},
@@ -261,7 +281,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
['[font-weight:400]', 'font-normal'],
['[line-height:0]', 'leading-0'],
['[border-style:solid]', 'border-solid'],
- ])(testName, async (candidate, expected) => {
+ ])(testName, { timeout }, async (candidate, expected) => {
await expectCanonicalization(
css`
@import 'tailwindcss';
@@ -341,7 +361,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
// Arbitrary percentage value must be a whole number. Should not migrate to
// a bare value.
['from-[2.5%]', 'from-[2.5%]'],
- ])(testName, async (candidate, expected) => {
+ ])(testName, { timeout }, async (candidate, expected) => {
let input = css`
@import 'tailwindcss';
@@ -358,7 +378,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('migrate with custom static utility `@utility custom {…}`', async () => {
+ test('migrate with custom static utility `@utility custom {…}`', { timeout }, async () => {
let candidate = '[--key:value]'
let expected = 'custom'
@@ -375,39 +395,47 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('migrate with custom functional utility `@utility custom-* {…}`', async () => {
- let candidate = '[--key:value]'
- let expected = 'custom-value'
+ test(
+ 'migrate with custom functional utility `@utility custom-* {…}`',
+ { timeout },
+ async () => {
+ let candidate = '[--key:value]'
+ let expected = 'custom-value'
- let input = css`
- @import 'tailwindcss';
- @theme {
- --*: initial;
- }
- @utility custom-* {
- --key: --value('value');
- }
- `
+ let input = css`
+ @import 'tailwindcss';
+ @theme {
+ --*: initial;
+ }
+ @utility custom-* {
+ --key: --value('value');
+ }
+ `
- await expectCanonicalization(input, candidate, expected)
- })
+ await expectCanonicalization(input, candidate, expected)
+ },
+ )
- test('migrate with custom functional utility `@utility custom-* {…}` that supports bare values', async () => {
- let candidate = '[tab-size:4]'
- let expected = 'tab-4'
+ test(
+ 'migrate with custom functional utility `@utility custom-* {…}` that supports bare values',
+ { timeout },
+ async () => {
+ let candidate = '[tab-size:4]'
+ let expected = 'tab-4'
- let input = css`
- @import 'tailwindcss';
- @theme {
- --*: initial;
- }
- @utility tab-* {
- tab-size: --value(integer);
- }
- `
+ let input = css`
+ @import 'tailwindcss';
+ @theme {
+ --*: initial;
+ }
+ @utility tab-* {
+ tab-size: --value(integer);
+ }
+ `
- await expectCanonicalization(input, candidate, expected)
- })
+ await expectCanonicalization(input, candidate, expected)
+ },
+ )
test.each([
['[tab-size:0]', 'tab-0'],
@@ -462,33 +490,41 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
// the semantics of the value.
['max-w-(--breakpoint-md)', 'max-w-(--breakpoint-md)'],
['max-w-(--container-3xl)', 'max-w-3xl'],
- ])(`migrate arbitrary value to theme value ${testName}`, async (candidate, expected) => {
+ ])(
+ `migrate arbitrary value to theme value ${testName}`,
+ { timeout },
+ async (candidate, expected) => {
+ let input = css`
+ @import 'tailwindcss';
+ ${theme} {
+ --*: initial;
+ --breakpoint-md: 48rem;
+ --container-3xl: 48rem;
+ }
+ `
+
+ await expectCanonicalization(input, candidate, expected)
+ },
+ )
+ })
+
+ test(
+ 'migrate an arbitrary property without spaces, to a theme value with spaces (canonicalization)',
+ { timeout },
+ async () => {
+ let candidate = 'font-[foo,bar,baz]'
+ let expected = 'font-example'
let input = css`
@import 'tailwindcss';
- ${theme} {
+ @theme {
--*: initial;
- --breakpoint-md: 48rem;
- --container-3xl: 48rem;
+ --font-example: foo, bar, baz;
}
`
await expectCanonicalization(input, candidate, expected)
- })
- })
-
- test('migrate an arbitrary property without spaces, to a theme value with spaces (canonicalization)', async () => {
- let candidate = 'font-[foo,bar,baz]'
- let expected = 'font-example'
- let input = css`
- @import 'tailwindcss';
- @theme {
- --*: initial;
- --font-example: foo, bar, baz;
- }
- `
-
- await expectCanonicalization(input, candidate, expected)
- })
+ },
+ )
test.each([
// Default spacing scale
@@ -503,7 +539,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
// Custom pixel based spacing scale
['w-[123px]', 'w-123', '1px'],
['w-[256px]', 'w-128', '2px'],
- ])(`${testName} (spacing = \`%s\`)`, async (candidate, expected, spacing) => {
+ ])(`${testName} (spacing = \`%s\`)`, { timeout }, async (candidate, expected, spacing) => {
let input = css`
@import 'tailwindcss';
@@ -538,13 +574,13 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
// Custom utility with bare value integer
['tab-8', 'tab-github'],
- ])(testName, async (candidate, expected) => {
+ ])(testName, { timeout }, async (candidate, expected) => {
await expectCanonicalization(input, candidate, expected)
})
})
describe('deprecated utilities', () => {
- test('`order-none` → `order-0`', async () => {
+ test('`order-none` → `order-0`', { timeout }, async () => {
let candidate = 'order-none'
let expected = 'order-0'
@@ -555,7 +591,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('`order-none` → `order-none` with custom implementation', async () => {
+ test('`order-none` → `order-none` with custom implementation', { timeout }, async () => {
let candidate = 'order-none'
let expected = 'order-none'
@@ -570,7 +606,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('`break-words` → `wrap-break-word`', async () => {
+ test('`break-words` → `wrap-break-word`', { timeout }, async () => {
let candidate = 'break-words'
let expected = 'wrap-break-word'
@@ -581,7 +617,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('`[overflow-wrap:break-word]` → `wrap-break-word`', async () => {
+ test('`[overflow-wrap:break-word]` → `wrap-break-word`', { timeout }, async () => {
let candidate = '[overflow-wrap:break-word]'
let expected = 'wrap-break-word'
@@ -592,7 +628,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('`break-words` → `break-words` with custom implementation', async () => {
+ test('`break-words` → `break-words` with custom implementation', { timeout }, async () => {
let candidate = 'break-words'
let expected = 'break-words'
@@ -635,11 +671,11 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
['group-[&:focus]:flex', 'group-focus:flex'],
['peer-[&:focus]:flex', 'peer-focus:flex'],
['in-[&:focus]:flex', 'in-focus:flex'],
- ])(testName, async (candidate, expected) => {
+ ])(testName, { timeout }, async (candidate, expected) => {
await expectCanonicalization(input, candidate, expected)
})
- test('unsafe migrations keep the candidate as-is', async () => {
+ test('unsafe migrations keep the candidate as-is', { timeout }, async () => {
// `hover:` also includes an `@media` query in addition to the `&:hover`
// state. Migration is not safe because the functionality would be different.
let candidate = '[&:hover]:flex'
@@ -654,7 +690,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('make unsafe migration safe (1)', async () => {
+ test('make unsafe migration safe (1)', { timeout }, async () => {
// Overriding the `hover:` variant to only use a selector will make the
// migration safe.
let candidate = '[&:hover]:flex'
@@ -670,7 +706,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('make unsafe migration safe (2)', async () => {
+ test('make unsafe migration safe (2)', { timeout }, async () => {
// Overriding the `hover:` variant to only use a selector will make the
// migration safe. This time with the long-hand `@variant` syntax.
let candidate = '[&:hover]:flex'
@@ -690,7 +726,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('custom selector-based variants', async () => {
+ test('custom selector-based variants', { timeout }, async () => {
let candidate = '[&.macos]:flex'
let expected = 'is-macos:flex'
let input = css`
@@ -704,7 +740,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
await expectCanonicalization(input, candidate, expected)
})
- test('custom @media-based variants', async () => {
+ test('custom @media-based variants', { timeout }, async () => {
let candidate = '[@media(prefers-reduced-transparency:reduce)]:flex'
let expected = 'transparency-safe:flex'
let input = css`
@@ -741,7 +777,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
// A color with a known theme variable migrates to the full utility
['bg-(color:--color-red-500)', 'bg-red-500'],
- ])(testName, async (candidate, expected) => {
+ ])(testName, { timeout }, async (candidate, expected) => {
await expectCanonicalization(input, candidate, expected)
})
})
@@ -828,7 +864,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
'data-[selected]:aria-[selected="true"]:aspect-[12/34]',
'data-selected:aria-selected:aspect-12/34',
],
- ])(testName, async (candidate, expected) => {
+ ])(testName, { timeout }, async (candidate, expected) => {
let input = css`
@import 'tailwindcss';
`
@@ -935,7 +971,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
['has-[[aria-visible]]:flex', 'has-aria-[visible]:flex'],
['has-[&:not(:nth-child(even))]:flex', 'has-odd:flex'],
- ])(testName, async (candidate, expected) => {
+ ])(testName, { timeout }, async (candidate, expected) => {
let input = css`
@import 'tailwindcss';
`
@@ -968,7 +1004,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
// Keep modifiers on classes that don't _really_ exist
['group/name', 'group/name'],
- ])(testName, async (candidate, expected) => {
+ ])(testName, { timeout }, async (candidate, expected) => {
await expectCanonicalization(input, candidate, expected)
})
})
@@ -996,6 +1032,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
['[font-size:14px] [line-height:1.625]', 'text-sm/relaxed'],
])(
'should canonicalize multiple classes `%s` into a shorthand `%s`',
+ { timeout },
async (candidates, expected) => {
let input = css`
@import 'tailwindcss';
@@ -1006,7 +1043,7 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
})
describe('theme to var', () => {
- test('extended space scale converts to var or calc', async () => {
+ test('extended space scale converts to var or calc', { timeout }, async () => {
let designSystem = await __unstable__loadDesignSystem(
css`
@tailwind utilities;
@@ -1033,7 +1070,7 @@ describe('theme to var', () => {
])
})
- test('custom space scale converts to var', async () => {
+ test('custom space scale converts to var', { timeout }, async () => {
let designSystem = await __unstable__loadDesignSystem(
css`
@tailwind utilities;
@@ -1060,7 +1097,7 @@ describe('theme to var', () => {
})
describe('options', () => {
- test('normalize `rem` units to `px`', async () => {
+ test('normalize `rem` units to `px`', { timeout }, async () => {
let designSystem = await __unstable__loadDesignSystem(
css`
@tailwind utilities;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f240b8e76..980eb62f9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -83,8 +83,8 @@ importers:
specifier: ^5.5.4
version: 5.5.4
vitest:
- specifier: ^2.0.5
- version: 2.0.5(@types/node@20.19.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)
+ specifier: ^4.0.3
+ version: 4.0.12(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
crates/node:
optionalDependencies:
@@ -585,10 +585,6 @@ packages:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
'@babel/code-frame@7.27.1':
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
@@ -690,12 +686,6 @@ packages:
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
- '@esbuild/aix-ppc64@0.21.5':
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
'@esbuild/aix-ppc64@0.23.1':
resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
engines: {node: '>=18'}
@@ -714,12 +704,6 @@ packages:
cpu: [ppc64]
os: [aix]
- '@esbuild/android-arm64@0.21.5':
- resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
'@esbuild/android-arm64@0.23.1':
resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
engines: {node: '>=18'}
@@ -738,12 +722,6 @@ packages:
cpu: [arm64]
os: [android]
- '@esbuild/android-arm@0.21.5':
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
'@esbuild/android-arm@0.23.1':
resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
engines: {node: '>=18'}
@@ -762,12 +740,6 @@ packages:
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.21.5':
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
'@esbuild/android-x64@0.23.1':
resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
engines: {node: '>=18'}
@@ -786,12 +758,6 @@ packages:
cpu: [x64]
os: [android]
- '@esbuild/darwin-arm64@0.21.5':
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
'@esbuild/darwin-arm64@0.23.1':
resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
engines: {node: '>=18'}
@@ -810,12 +776,6 @@ packages:
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.21.5':
- resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
'@esbuild/darwin-x64@0.23.1':
resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
engines: {node: '>=18'}
@@ -834,12 +794,6 @@ packages:
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.21.5':
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
'@esbuild/freebsd-arm64@0.23.1':
resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
engines: {node: '>=18'}
@@ -858,12 +812,6 @@ packages:
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.21.5':
- resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
'@esbuild/freebsd-x64@0.23.1':
resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
engines: {node: '>=18'}
@@ -882,12 +830,6 @@ packages:
cpu: [x64]
os: [freebsd]
- '@esbuild/linux-arm64@0.21.5':
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
'@esbuild/linux-arm64@0.23.1':
resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
engines: {node: '>=18'}
@@ -906,12 +848,6 @@ packages:
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm@0.21.5':
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
'@esbuild/linux-arm@0.23.1':
resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
engines: {node: '>=18'}
@@ -930,12 +866,6 @@ packages:
cpu: [arm]
os: [linux]
- '@esbuild/linux-ia32@0.21.5':
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
'@esbuild/linux-ia32@0.23.1':
resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
engines: {node: '>=18'}
@@ -954,12 +884,6 @@ packages:
cpu: [ia32]
os: [linux]
- '@esbuild/linux-loong64@0.21.5':
- resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
'@esbuild/linux-loong64@0.23.1':
resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
engines: {node: '>=18'}
@@ -978,12 +902,6 @@ packages:
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.21.5':
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
'@esbuild/linux-mips64el@0.23.1':
resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
engines: {node: '>=18'}
@@ -1002,12 +920,6 @@ packages:
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.21.5':
- resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
'@esbuild/linux-ppc64@0.23.1':
resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
engines: {node: '>=18'}
@@ -1026,12 +938,6 @@ packages:
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-riscv64@0.21.5':
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
'@esbuild/linux-riscv64@0.23.1':
resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
engines: {node: '>=18'}
@@ -1050,12 +956,6 @@ packages:
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.21.5':
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
'@esbuild/linux-s390x@0.23.1':
resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
engines: {node: '>=18'}
@@ -1074,12 +974,6 @@ packages:
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.21.5':
- resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
'@esbuild/linux-x64@0.23.1':
resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
engines: {node: '>=18'}
@@ -1110,12 +1004,6 @@ packages:
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.21.5':
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
'@esbuild/netbsd-x64@0.23.1':
resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
engines: {node: '>=18'}
@@ -1152,12 +1040,6 @@ packages:
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.21.5':
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
'@esbuild/openbsd-x64@0.23.1':
resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
engines: {node: '>=18'}
@@ -1182,12 +1064,6 @@ packages:
cpu: [arm64]
os: [openharmony]
- '@esbuild/sunos-x64@0.21.5':
- resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
'@esbuild/sunos-x64@0.23.1':
resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
engines: {node: '>=18'}
@@ -1206,12 +1082,6 @@ packages:
cpu: [x64]
os: [sunos]
- '@esbuild/win32-arm64@0.21.5':
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
'@esbuild/win32-arm64@0.23.1':
resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
engines: {node: '>=18'}
@@ -1230,12 +1100,6 @@ packages:
cpu: [arm64]
os: [win32]
- '@esbuild/win32-ia32@0.21.5':
- resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
'@esbuild/win32-ia32@0.23.1':
resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
engines: {node: '>=18'}
@@ -1254,12 +1118,6 @@ packages:
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.21.5':
- resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
'@esbuild/win32-x64@0.23.1':
resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
engines: {node: '>=18'}
@@ -2449,6 +2307,9 @@ packages:
resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
engines: {node: '>=18'}
+ '@standard-schema/spec@1.0.0':
+ resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
+
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
@@ -2488,6 +2349,12 @@ packages:
'@types/bun@1.3.2':
resolution: {integrity: sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg==}
+ '@types/chai@5.2.3':
+ resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
+
+ '@types/deep-eql@4.0.2':
+ resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
@@ -2588,23 +2455,34 @@ packages:
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
- '@vitest/expect@2.0.5':
- resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==}
+ '@vitest/expect@4.0.12':
+ resolution: {integrity: sha512-is+g0w8V3/ZhRNrRizrJNr8PFQKwYmctWlU4qg8zy5r9aIV5w8IxXLlfbbxJCwSpsVl2PXPTm2/zruqTqz3QSg==}
- '@vitest/pretty-format@2.0.5':
- resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==}
+ '@vitest/mocker@4.0.12':
+ resolution: {integrity: sha512-GsmA/tD5Ht3RUFoz41mZsMU1AXch3lhmgbTnoSPTdH231g7S3ytNN1aU0bZDSyxWs8WA7KDyMPD5L4q6V6vj9w==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^6.0.0 || ^7.0.0-0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
- '@vitest/runner@2.0.5':
- resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==}
+ '@vitest/pretty-format@4.0.12':
+ resolution: {integrity: sha512-R7nMAcnienG17MvRN8TPMJiCG8rrZJblV9mhT7oMFdBXvS0x+QD6S1G4DxFusR2E0QIS73f7DqSR1n87rrmE+g==}
- '@vitest/snapshot@2.0.5':
- resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==}
+ '@vitest/runner@4.0.12':
+ resolution: {integrity: sha512-hDlCIJWuwlcLumfukPsNfPDOJokTv79hnOlf11V+n7E14rHNPz0Sp/BO6h8sh9qw4/UjZiKyYpVxK2ZNi+3ceQ==}
- '@vitest/spy@2.0.5':
- resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==}
+ '@vitest/snapshot@4.0.12':
+ resolution: {integrity: sha512-2jz9zAuBDUSbnfyixnyOd1S2YDBrZO23rt1bicAb6MA/ya5rHdKFRikPIDpBj/Dwvh6cbImDmudegnDAkHvmRQ==}
- '@vitest/utils@2.0.5':
- resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
+ '@vitest/spy@4.0.12':
+ resolution: {integrity: sha512-GZjI9PPhiOYNX8Nsyqdw7JQB+u0BptL5fSnXiottAUBHlcMzgADV58A7SLTXXQwcN1yZ6gfd1DH+2bqjuUlCzw==}
+
+ '@vitest/utils@4.0.12':
+ resolution: {integrity: sha512-DVS/TLkLdvGvj1avRy0LSmKfrcI9MNFvNGN6ECjTUHWJdlcgPDOXhjMis5Dh7rBH62nAmSXnkPbE+DZ5YD75Rw==}
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
@@ -2796,9 +2674,9 @@ packages:
caniuse-lite@1.0.30001755:
resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==}
- chai@5.1.1:
- resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
- engines: {node: '>=12'}
+ chai@6.2.1:
+ resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==}
+ engines: {node: '>=18'}
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@@ -2807,10 +2685,6 @@ packages:
chardet@2.1.0:
resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==}
- check-error@2.1.1:
- resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
- engines: {node: '>= 16'}
-
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -2919,15 +2793,6 @@ packages:
supports-color:
optional: true
- debug@4.3.6:
- resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
@@ -2945,10 +2810,6 @@ packages:
babel-plugin-macros:
optional: true
- deep-eql@5.0.2:
- resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
- engines: {node: '>=6'}
-
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
@@ -3036,6 +2897,9 @@ packages:
resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==}
engines: {node: '>= 0.4'}
+ es-module-lexer@1.7.0:
+ resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
+
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
@@ -3055,11 +2919,6 @@ packages:
es-toolkit@1.39.10:
resolution: {integrity: sha512-E0iGnTtbDhkeczB0T+mxmoVlT4YNweEKBLq7oaU4p11mecdsZpNWOglI4895Vh4usbQ+LsJiuLuI2L0Vdmfm2w==}
- esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
- hasBin: true
-
esbuild@0.23.1:
resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
engines: {node: '>=18'}
@@ -3206,6 +3065,10 @@ packages:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
+ expect-type@1.2.2:
+ resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
+ engines: {node: '>=12.0.0'}
+
fast-content-type-parse@3.0.0:
resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==}
@@ -3237,6 +3100,15 @@ packages:
picomatch:
optional: true
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
@@ -3298,9 +3170,6 @@ packages:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
- get-func-name@2.0.2:
- resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
-
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -3745,9 +3614,6 @@ packages:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
- loupe@3.1.1:
- resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==}
-
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -3811,9 +3677,6 @@ packages:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
- ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -3998,10 +3861,6 @@ packages:
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
- pathval@2.0.0:
- resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
- engines: {node: '>= 14.16'}
-
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -4013,6 +3872,10 @@ packages:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+
pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
@@ -4320,6 +4183,9 @@ packages:
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+ std-env@3.10.0:
+ resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
+
std-env@3.7.0:
resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
@@ -4442,16 +4308,12 @@ packages:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
- tinypool@1.0.0:
- resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ tinyglobby@0.2.15:
+ resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+ engines: {node: '>=12.0.0'}
- tinyrainbow@1.2.0:
- resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
- engines: {node: '>=14.0.0'}
-
- tinyspy@3.0.0:
- resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==}
+ tinyrainbow@3.0.3:
+ resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==}
engines: {node: '>=14.0.0'}
to-regex-range@5.0.1:
@@ -4649,42 +4511,6 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- vite-node@2.0.5:
- resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
-
- vite@5.4.0:
- resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
vite@7.0.0:
resolution: {integrity: sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -4725,23 +4551,35 @@ packages:
yaml:
optional: true
- vitest@2.0.5:
- resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ vitest@4.0.12:
+ resolution: {integrity: sha512-pmW4GCKQ8t5Ko1jYjC3SqOr7TUKN7uHOHB/XGsAIb69eYu6d1ionGSsb5H9chmPf+WeXt0VE7jTXsB1IvWoNbw==}
+ engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
- '@types/node': ^18.0.0 || >=20.0.0
- '@vitest/browser': 2.0.5
- '@vitest/ui': 2.0.5
+ '@opentelemetry/api': ^1.9.0
+ '@types/debug': ^4.1.12
+ '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
+ '@vitest/browser-playwright': 4.0.12
+ '@vitest/browser-preview': 4.0.12
+ '@vitest/browser-webdriverio': 4.0.12
+ '@vitest/ui': 4.0.12
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
+ '@opentelemetry/api':
+ optional: true
+ '@types/debug':
+ optional: true
'@types/node':
optional: true
- '@vitest/browser':
+ '@vitest/browser-playwright':
+ optional: true
+ '@vitest/browser-preview':
+ optional: true
+ '@vitest/browser-webdriverio':
optional: true
'@vitest/ui':
optional: true
@@ -4821,11 +4659,6 @@ snapshots:
'@alloc/quick-lru@5.2.0': {}
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
-
'@babel/code-frame@7.27.1':
dependencies:
'@babel/helper-validator-identifier': 7.27.1
@@ -4965,9 +4798,6 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@esbuild/aix-ppc64@0.21.5':
- optional: true
-
'@esbuild/aix-ppc64@0.23.1':
optional: true
@@ -4977,9 +4807,6 @@ snapshots:
'@esbuild/aix-ppc64@0.27.0':
optional: true
- '@esbuild/android-arm64@0.21.5':
- optional: true
-
'@esbuild/android-arm64@0.23.1':
optional: true
@@ -4989,9 +4816,6 @@ snapshots:
'@esbuild/android-arm64@0.27.0':
optional: true
- '@esbuild/android-arm@0.21.5':
- optional: true
-
'@esbuild/android-arm@0.23.1':
optional: true
@@ -5001,9 +4825,6 @@ snapshots:
'@esbuild/android-arm@0.27.0':
optional: true
- '@esbuild/android-x64@0.21.5':
- optional: true
-
'@esbuild/android-x64@0.23.1':
optional: true
@@ -5013,9 +4834,6 @@ snapshots:
'@esbuild/android-x64@0.27.0':
optional: true
- '@esbuild/darwin-arm64@0.21.5':
- optional: true
-
'@esbuild/darwin-arm64@0.23.1':
optional: true
@@ -5025,9 +4843,6 @@ snapshots:
'@esbuild/darwin-arm64@0.27.0':
optional: true
- '@esbuild/darwin-x64@0.21.5':
- optional: true
-
'@esbuild/darwin-x64@0.23.1':
optional: true
@@ -5037,9 +4852,6 @@ snapshots:
'@esbuild/darwin-x64@0.27.0':
optional: true
- '@esbuild/freebsd-arm64@0.21.5':
- optional: true
-
'@esbuild/freebsd-arm64@0.23.1':
optional: true
@@ -5049,9 +4861,6 @@ snapshots:
'@esbuild/freebsd-arm64@0.27.0':
optional: true
- '@esbuild/freebsd-x64@0.21.5':
- optional: true
-
'@esbuild/freebsd-x64@0.23.1':
optional: true
@@ -5061,9 +4870,6 @@ snapshots:
'@esbuild/freebsd-x64@0.27.0':
optional: true
- '@esbuild/linux-arm64@0.21.5':
- optional: true
-
'@esbuild/linux-arm64@0.23.1':
optional: true
@@ -5073,9 +4879,6 @@ snapshots:
'@esbuild/linux-arm64@0.27.0':
optional: true
- '@esbuild/linux-arm@0.21.5':
- optional: true
-
'@esbuild/linux-arm@0.23.1':
optional: true
@@ -5085,9 +4888,6 @@ snapshots:
'@esbuild/linux-arm@0.27.0':
optional: true
- '@esbuild/linux-ia32@0.21.5':
- optional: true
-
'@esbuild/linux-ia32@0.23.1':
optional: true
@@ -5097,9 +4897,6 @@ snapshots:
'@esbuild/linux-ia32@0.27.0':
optional: true
- '@esbuild/linux-loong64@0.21.5':
- optional: true
-
'@esbuild/linux-loong64@0.23.1':
optional: true
@@ -5109,9 +4906,6 @@ snapshots:
'@esbuild/linux-loong64@0.27.0':
optional: true
- '@esbuild/linux-mips64el@0.21.5':
- optional: true
-
'@esbuild/linux-mips64el@0.23.1':
optional: true
@@ -5121,9 +4915,6 @@ snapshots:
'@esbuild/linux-mips64el@0.27.0':
optional: true
- '@esbuild/linux-ppc64@0.21.5':
- optional: true
-
'@esbuild/linux-ppc64@0.23.1':
optional: true
@@ -5133,9 +4924,6 @@ snapshots:
'@esbuild/linux-ppc64@0.27.0':
optional: true
- '@esbuild/linux-riscv64@0.21.5':
- optional: true
-
'@esbuild/linux-riscv64@0.23.1':
optional: true
@@ -5145,9 +4933,6 @@ snapshots:
'@esbuild/linux-riscv64@0.27.0':
optional: true
- '@esbuild/linux-s390x@0.21.5':
- optional: true
-
'@esbuild/linux-s390x@0.23.1':
optional: true
@@ -5157,9 +4942,6 @@ snapshots:
'@esbuild/linux-s390x@0.27.0':
optional: true
- '@esbuild/linux-x64@0.21.5':
- optional: true
-
'@esbuild/linux-x64@0.23.1':
optional: true
@@ -5175,9 +4957,6 @@ snapshots:
'@esbuild/netbsd-arm64@0.27.0':
optional: true
- '@esbuild/netbsd-x64@0.21.5':
- optional: true
-
'@esbuild/netbsd-x64@0.23.1':
optional: true
@@ -5196,9 +4975,6 @@ snapshots:
'@esbuild/openbsd-arm64@0.27.0':
optional: true
- '@esbuild/openbsd-x64@0.21.5':
- optional: true
-
'@esbuild/openbsd-x64@0.23.1':
optional: true
@@ -5211,9 +4987,6 @@ snapshots:
'@esbuild/openharmony-arm64@0.27.0':
optional: true
- '@esbuild/sunos-x64@0.21.5':
- optional: true
-
'@esbuild/sunos-x64@0.23.1':
optional: true
@@ -5223,9 +4996,6 @@ snapshots:
'@esbuild/sunos-x64@0.27.0':
optional: true
- '@esbuild/win32-arm64@0.21.5':
- optional: true
-
'@esbuild/win32-arm64@0.23.1':
optional: true
@@ -5235,9 +5005,6 @@ snapshots:
'@esbuild/win32-arm64@0.27.0':
optional: true
- '@esbuild/win32-ia32@0.21.5':
- optional: true
-
'@esbuild/win32-ia32@0.23.1':
optional: true
@@ -5247,9 +5014,6 @@ snapshots:
'@esbuild/win32-ia32@0.27.0':
optional: true
- '@esbuild/win32-x64@0.21.5':
- optional: true
-
'@esbuild/win32-x64@0.23.1':
optional: true
@@ -6169,6 +5933,8 @@ snapshots:
'@sindresorhus/merge-streams@4.0.0': {}
+ '@standard-schema/spec@1.0.0': {}
+
'@swc/helpers@0.5.15':
dependencies:
tslib: 2.8.1
@@ -6220,6 +5986,13 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
+ '@types/chai@5.2.3':
+ dependencies:
+ '@types/deep-eql': 4.0.2
+ assertion-error: 2.0.1
+
+ '@types/deep-eql@4.0.2': {}
+
'@types/estree@1.0.6': {}
'@types/estree@1.0.8': {}
@@ -6444,38 +6217,44 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vitest/expect@2.0.5':
+ '@vitest/expect@4.0.12':
dependencies:
- '@vitest/spy': 2.0.5
- '@vitest/utils': 2.0.5
- chai: 5.1.1
- tinyrainbow: 1.2.0
+ '@standard-schema/spec': 1.0.0
+ '@types/chai': 5.2.3
+ '@vitest/spy': 4.0.12
+ '@vitest/utils': 4.0.12
+ chai: 6.2.1
+ tinyrainbow: 3.0.3
- '@vitest/pretty-format@2.0.5':
+ '@vitest/mocker@4.0.12(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
dependencies:
- tinyrainbow: 1.2.0
-
- '@vitest/runner@2.0.5':
- dependencies:
- '@vitest/utils': 2.0.5
- pathe: 1.1.2
-
- '@vitest/snapshot@2.0.5':
- dependencies:
- '@vitest/pretty-format': 2.0.5
- magic-string: 0.30.21
- pathe: 1.1.2
-
- '@vitest/spy@2.0.5':
- dependencies:
- tinyspy: 3.0.0
-
- '@vitest/utils@2.0.5':
- dependencies:
- '@vitest/pretty-format': 2.0.5
+ '@vitest/spy': 4.0.12
estree-walker: 3.0.3
- loupe: 3.1.1
- tinyrainbow: 1.2.0
+ magic-string: 0.30.21
+ optionalDependencies:
+ vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
+
+ '@vitest/pretty-format@4.0.12':
+ dependencies:
+ tinyrainbow: 3.0.3
+
+ '@vitest/runner@4.0.12':
+ dependencies:
+ '@vitest/utils': 4.0.12
+ pathe: 2.0.3
+
+ '@vitest/snapshot@4.0.12':
+ dependencies:
+ '@vitest/pretty-format': 4.0.12
+ magic-string: 0.30.21
+ pathe: 2.0.3
+
+ '@vitest/spy@4.0.12': {}
+
+ '@vitest/utils@4.0.12':
+ dependencies:
+ '@vitest/pretty-format': 4.0.12
+ tinyrainbow: 3.0.3
acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
@@ -6692,13 +6471,7 @@ snapshots:
caniuse-lite@1.0.30001755: {}
- chai@5.1.1:
- dependencies:
- assertion-error: 2.0.1
- check-error: 2.1.1
- deep-eql: 5.0.2
- loupe: 3.1.1
- pathval: 2.0.0
+ chai@6.2.1: {}
chalk@4.1.2:
dependencies:
@@ -6707,8 +6480,6 @@ snapshots:
chardet@2.1.0: {}
- check-error@2.1.1: {}
-
chokidar@3.6.0:
dependencies:
anymatch: 3.1.3
@@ -6812,18 +6583,12 @@ snapshots:
dependencies:
ms: 2.1.3
- debug@4.3.6:
- dependencies:
- ms: 2.1.2
-
debug@4.4.3:
dependencies:
ms: 2.1.3
dedent@1.7.0: {}
- deep-eql@5.0.2: {}
-
deep-is@0.1.4: {}
define-data-property@1.1.4:
@@ -6960,6 +6725,8 @@ snapshots:
iterator.prototype: 1.1.3
safe-array-concat: 1.1.3
+ es-module-lexer@1.7.0: {}
+
es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
@@ -6983,32 +6750,6 @@ snapshots:
es-toolkit@1.39.10: {}
- esbuild@0.21.5:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.21.5
- '@esbuild/android-arm': 0.21.5
- '@esbuild/android-arm64': 0.21.5
- '@esbuild/android-x64': 0.21.5
- '@esbuild/darwin-arm64': 0.21.5
- '@esbuild/darwin-x64': 0.21.5
- '@esbuild/freebsd-arm64': 0.21.5
- '@esbuild/freebsd-x64': 0.21.5
- '@esbuild/linux-arm': 0.21.5
- '@esbuild/linux-arm64': 0.21.5
- '@esbuild/linux-ia32': 0.21.5
- '@esbuild/linux-loong64': 0.21.5
- '@esbuild/linux-mips64el': 0.21.5
- '@esbuild/linux-ppc64': 0.21.5
- '@esbuild/linux-riscv64': 0.21.5
- '@esbuild/linux-s390x': 0.21.5
- '@esbuild/linux-x64': 0.21.5
- '@esbuild/netbsd-x64': 0.21.5
- '@esbuild/openbsd-x64': 0.21.5
- '@esbuild/sunos-x64': 0.21.5
- '@esbuild/win32-arm64': 0.21.5
- '@esbuild/win32-ia32': 0.21.5
- '@esbuild/win32-x64': 0.21.5
-
esbuild@0.23.1:
optionalDependencies:
'@esbuild/aix-ppc64': 0.23.1
@@ -7398,6 +7139,8 @@ snapshots:
signal-exit: 4.1.0
strip-final-newline: 3.0.0
+ expect-type@1.2.2: {}
+
fast-content-type-parse@3.0.0: {}
fast-deep-equal@3.1.3: {}
@@ -7430,6 +7173,10 @@ snapshots:
optionalDependencies:
picomatch: 4.0.2
+ fdir@6.5.0(picomatch@4.0.3):
+ optionalDependencies:
+ picomatch: 4.0.3
+
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
@@ -7490,8 +7237,6 @@ snapshots:
gensync@1.0.0-beta.2: {}
- get-func-name@2.0.2: {}
-
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -7911,10 +7656,6 @@ snapshots:
dependencies:
js-tokens: 4.0.0
- loupe@3.1.1:
- dependencies:
- get-func-name: 2.0.2
-
lru-cache@10.4.3: {}
lru-cache@5.1.1:
@@ -7975,8 +7716,6 @@ snapshots:
mri@1.2.0: {}
- ms@2.1.2: {}
-
ms@2.1.3: {}
mute-stream@2.0.0: {}
@@ -8142,14 +7881,14 @@ snapshots:
pathe@2.0.3: {}
- pathval@2.0.0: {}
-
picocolors@1.1.1: {}
picomatch@2.3.1: {}
picomatch@4.0.2: {}
+ picomatch@4.0.3: {}
+
pify@2.3.0: {}
pirates@4.0.6: {}
@@ -8517,6 +8256,8 @@ snapshots:
stackback@0.0.2: {}
+ std-env@3.10.0: {}
+
std-env@3.7.0: {}
stop-iteration-iterator@1.1.0:
@@ -8678,11 +8419,12 @@ snapshots:
fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
- tinypool@1.0.0: {}
+ tinyglobby@0.2.15:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
- tinyrainbow@1.2.0: {}
-
- tinyspy@3.0.0: {}
+ tinyrainbow@3.0.3: {}
to-regex-range@5.0.1:
dependencies:
@@ -8906,35 +8648,6 @@ snapshots:
util-deprecate@1.0.2: {}
- vite-node@2.0.5(@types/node@20.19.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6):
- dependencies:
- cac: 6.7.14
- debug: 4.4.3
- pathe: 1.1.2
- tinyrainbow: 1.2.0
- vite: 5.4.0(@types/node@20.19.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)
- transitivePeerDependencies:
- - '@types/node'
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
-
- vite@5.4.0(@types/node@20.19.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6):
- dependencies:
- esbuild: 0.21.5
- postcss: 8.5.6
- rollup: 4.44.0
- optionalDependencies:
- '@types/node': 20.19.1
- fsevents: 2.3.3
- lightningcss: 1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
- terser: 5.31.6
-
vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0):
dependencies:
esbuild: 0.25.0
@@ -8952,38 +8665,43 @@ snapshots:
tsx: 4.19.1
yaml: 2.6.0
- vitest@2.0.5(@types/node@20.19.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6):
+ vitest@4.0.12(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0):
dependencies:
- '@ampproject/remapping': 2.3.0
- '@vitest/expect': 2.0.5
- '@vitest/pretty-format': 2.0.5
- '@vitest/runner': 2.0.5
- '@vitest/snapshot': 2.0.5
- '@vitest/spy': 2.0.5
- '@vitest/utils': 2.0.5
- chai: 5.1.1
- debug: 4.3.6
- execa: 8.0.1
+ '@vitest/expect': 4.0.12
+ '@vitest/mocker': 4.0.12(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
+ '@vitest/pretty-format': 4.0.12
+ '@vitest/runner': 4.0.12
+ '@vitest/snapshot': 4.0.12
+ '@vitest/spy': 4.0.12
+ '@vitest/utils': 4.0.12
+ debug: 4.4.3
+ es-module-lexer: 1.7.0
+ expect-type: 1.2.2
magic-string: 0.30.21
- pathe: 1.1.2
- std-env: 3.7.0
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ std-env: 3.10.0
tinybench: 2.9.0
- tinypool: 1.0.0
- tinyrainbow: 1.2.0
- vite: 5.4.0(@types/node@20.19.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)
- vite-node: 2.0.5(@types/node@20.19.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)
+ tinyexec: 0.3.2
+ tinyglobby: 0.2.15
+ tinyrainbow: 3.0.3
+ vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 20.19.1
transitivePeerDependencies:
+ - jiti
- less
- lightningcss
+ - msw
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
+ - tsx
+ - yaml
which-boxed-primitive@1.1.1:
dependencies:
diff --git a/vitest.config.ts b/vitest.config.ts
new file mode 100644
index 000000000..3ef999be2
--- /dev/null
+++ b/vitest.config.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from 'vitest/config'
+
+export default defineConfig({
+ test: {
+ projects: ['./packages/*', '!./packages/tsconfig.base.json'],
+ exclude: ['**/*.spec.?(c|m)[jt]s?(x)', 'integrations/**/*'],
+ },
+})
diff --git a/vitest.workspace.ts b/vitest.workspace.ts
deleted file mode 100644
index 4ccde0667..000000000
--- a/vitest.workspace.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default ['packages/*']
From 98d221f24b6d732ff6e1ff82b8fd5cceae7351a5 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 09:40:51 -0500
Subject: [PATCH 020/353] =?UTF-8?q?Update=20@emnapi/runtime=201.6.0=20?=
=?UTF-8?q?=E2=86=92=201.7.1=20(minor)=20(#19349)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @emnapi/runtime (1.6.0 → 1.7.1) ·
[Repo](https://github.com/toyobayashi/emnapi)
Release Notes
What's Changed
Full Changelog : v1.7.0...v1.7.1
What's Changed
Full Changelog : v1.6.0...v1.7.0
Does any of this look wrong? Please
let us know.
Commits
See
the full diff on Github . The new version differs by 6 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
crates/node/npm/wasm32-wasi/package.json | 2 +-
pnpm-lock.yaml | 50 ++++++++++--------------
2 files changed, 22 insertions(+), 30 deletions(-)
diff --git a/crates/node/npm/wasm32-wasi/package.json b/crates/node/npm/wasm32-wasi/package.json
index f67f5265b..efdb31967 100644
--- a/crates/node/npm/wasm32-wasi/package.json
+++ b/crates/node/npm/wasm32-wasi/package.json
@@ -29,7 +29,7 @@
"dependencies": {
"@napi-rs/wasm-runtime": "^1.0.7",
"@emnapi/core": "^1.6.0",
- "@emnapi/runtime": "^1.6.0",
+ "@emnapi/runtime": "^1.7.1",
"@tybys/wasm-util": "^0.10.1",
"@emnapi/wasi-threads": "^1.1.0",
"tslib": "^2.4.0"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 980eb62f9..cabda74d4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -161,8 +161,8 @@ importers:
specifier: ^1.6.0
version: 1.6.0
'@emnapi/runtime':
- specifier: ^1.6.0
- version: 1.6.0
+ specifier: ^1.7.1
+ version: 1.7.1
'@emnapi/wasi-threads':
specifier: ^1.1.0
version: 1.1.0
@@ -506,7 +506,7 @@ importers:
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^16.0.3
- version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^16.0.3
- version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -677,9 +677,6 @@ packages:
'@emnapi/runtime@1.5.0':
resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
- '@emnapi/runtime@1.6.0':
- resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==}
-
'@emnapi/runtime@1.7.1':
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
@@ -4785,14 +4782,9 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@emnapi/runtime@1.6.0':
- dependencies:
- tslib: 2.8.1
-
'@emnapi/runtime@1.7.1':
dependencies:
tslib: 2.8.1
- optional: true
'@emnapi/wasi-threads@1.1.0':
dependencies:
@@ -6839,27 +6831,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
@@ -6870,9 +6862,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6887,19 +6879,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.3
eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6925,14 +6917,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6946,7 +6938,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6957,7 +6949,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6969,7 +6961,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
From 251fe2765835b7f98837836ca69bf88610b8be34 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 09:41:12 -0500
Subject: [PATCH 021/353] =?UTF-8?q?Update=20@vitejs/plugin-react=205.1.0?=
=?UTF-8?q?=20=E2=86=92=205.1.1=20(patch)=20(#19355)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @vitejs/plugin-react (5.1.0 → 5.1.1) ·
[Repo](https://github.com/vitejs/vite-plugin-react) ·
[Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
Release Notes
5.1.1 (from changelog)
Update code to support newer rolldown-vite (#976 )
rolldown-vite will remove
optimizeDeps.rollupOptions in favor of
optimizeDeps.rolldownOptions soon. This
plugin now uses optimizeDeps.rolldownOptions to support newer
rolldown-vite. Please update rolldown-vite to the latest version if you
are using an older version.
Does any of this look wrong? Please
let us know.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/vite/package.json | 2 +-
pnpm-lock.yaml | 189 ++++++++++++++++++++++------------
2 files changed, 122 insertions(+), 69 deletions(-)
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index 5c2d0d60c..9bca1e99d 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -10,7 +10,7 @@
},
"dependencies": {
"@tailwindcss/vite": "workspace:^",
- "@vitejs/plugin-react": "^5.1.0",
+ "@vitejs/plugin-react": "^5.1.1",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"tailwindcss": "workspace:^"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cabda74d4..45be92d96 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -481,7 +481,7 @@ importers:
version: 3.3.3
next:
specifier: ^16.0.3
- version: 16.0.3(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.3(@babel/core@7.28.4)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -515,7 +515,7 @@ importers:
dependencies:
next:
specifier: ^16.0.3
- version: 16.0.3(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.3(@babel/core@7.28.4)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -554,8 +554,8 @@ importers:
specifier: workspace:^
version: link:../../packages/@tailwindcss-vite
'@vitejs/plugin-react':
- specifier: ^5.1.0
- version: 5.1.0(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
+ specifier: ^5.1.1
+ version: 5.1.1(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
react:
specifier: ^19.2.0
version: 19.2.0
@@ -597,10 +597,18 @@ packages:
resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==}
engines: {node: '>=6.9.0'}
+ '@babel/core@7.28.5':
+ resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/generator@7.28.3':
resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==}
engines: {node: '>=6.9.0'}
+ '@babel/generator@7.28.5':
+ resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-compilation-targets@7.27.2':
resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
engines: {node: '>=6.9.0'}
@@ -631,6 +639,10 @@ packages:
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-option@7.27.1':
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
engines: {node: '>=6.9.0'}
@@ -644,6 +656,11 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
+ '@babel/parser@7.28.5':
+ resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
'@babel/plugin-transform-react-jsx-self@7.27.1':
resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==}
engines: {node: '>=6.9.0'}
@@ -664,10 +681,18 @@ packages:
resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==}
engines: {node: '>=6.9.0'}
+ '@babel/traverse@7.28.5':
+ resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/types@7.28.4':
resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==}
engines: {node: '>=6.9.0'}
+ '@babel/types@7.28.5':
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+ engines: {node: '>=6.9.0'}
+
'@emnapi/core@1.5.0':
resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==}
@@ -2194,8 +2219,8 @@ packages:
engines: {node: '>=18'}
hasBin: true
- '@rolldown/pluginutils@1.0.0-beta.43':
- resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==}
+ '@rolldown/pluginutils@1.0.0-beta.47':
+ resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==}
'@rollup/rollup-android-arm-eabi@4.44.0':
resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==}
@@ -2446,8 +2471,8 @@ packages:
resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@vitejs/plugin-react@5.1.0':
- resolution: {integrity: sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==}
+ '@vitejs/plugin-react@5.1.1':
+ resolution: {integrity: sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA==}
engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
@@ -2614,11 +2639,6 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.24.4:
- resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
browserslist@4.28.0:
resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
@@ -2854,9 +2874,6 @@ packages:
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- electron-to-chromium@1.5.119:
- resolution: {integrity: sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==}
-
electron-to-chromium@1.5.255:
resolution: {integrity: sha512-Z9oIp4HrFF/cZkDPMpz2XSuVpc1THDpT4dlmATFlJUIBVCy9Vap5/rIXsASP1CscBacBqhabwh8vLctqBwEerQ==}
@@ -3744,9 +3761,6 @@ packages:
node-mock-http@1.0.2:
resolution: {integrity: sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g==}
- node-releases@2.0.19:
- resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
-
node-releases@2.0.27:
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
@@ -4487,12 +4501,6 @@ packages:
resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==}
hasBin: true
- update-browserslist-db@1.1.1:
- resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
update-browserslist-db@1.1.4:
resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
hasBin: true
@@ -4684,6 +4692,26 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/core@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
+ '@babel/helpers': 7.28.4
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/generator@7.28.3':
dependencies:
'@babel/parser': 7.28.4
@@ -4692,11 +4720,19 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.29
jsesc: 3.1.0
+ '@babel/generator@7.28.5':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/gen-mapping': 0.3.12
+ '@jridgewell/trace-mapping': 0.3.29
+ jsesc: 3.1.0
+
'@babel/helper-compilation-targets@7.27.2':
dependencies:
'@babel/compat-data': 7.27.5
'@babel/helper-validator-option': 7.27.1
- browserslist: 4.24.4
+ browserslist: 4.28.0
lru-cache: 5.1.1
semver: 6.3.1
@@ -4704,8 +4740,8 @@ snapshots:
'@babel/helper-module-imports@7.27.1':
dependencies:
- '@babel/traverse': 7.28.4
- '@babel/types': 7.28.4
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -4714,7 +4750,16 @@ snapshots:
'@babel/core': 7.28.4
'@babel/helper-module-imports': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.28.4
+ '@babel/traverse': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -4724,32 +4769,38 @@ snapshots:
'@babel/helper-validator-identifier@7.27.1': {}
+ '@babel/helper-validator-identifier@7.28.5': {}
+
'@babel/helper-validator-option@7.27.1': {}
'@babel/helpers@7.28.4':
dependencies:
'@babel/template': 7.27.2
- '@babel/types': 7.28.4
+ '@babel/types': 7.28.5
'@babel/parser@7.28.4':
dependencies:
'@babel/types': 7.28.4
- '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)':
+ '@babel/parser@7.28.5':
dependencies:
- '@babel/core': 7.28.4
+ '@babel/types': 7.28.5
+
+ '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)':
+ '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)':
dependencies:
- '@babel/core': 7.28.4
+ '@babel/core': 7.28.5
'@babel/helper-plugin-utils': 7.27.1
'@babel/template@7.27.2':
dependencies:
'@babel/code-frame': 7.27.1
- '@babel/parser': 7.28.4
- '@babel/types': 7.28.4
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
'@babel/traverse@7.28.4':
dependencies:
@@ -4763,11 +4814,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/traverse@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/types@7.28.4':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
+ '@babel/types@7.28.5':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
'@emnapi/core@1.5.0':
dependencies:
'@emnapi/wasi-threads': 1.1.0
@@ -5859,7 +5927,7 @@ snapshots:
dependencies:
playwright: 1.56.1
- '@rolldown/pluginutils@1.0.0-beta.43': {}
+ '@rolldown/pluginutils@1.0.0-beta.47': {}
'@rollup/rollup-android-arm-eabi@4.44.0':
optional: true
@@ -5951,24 +6019,24 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.28.4
- '@babel/types': 7.28.4
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
'@types/babel__generator@7.6.8':
dependencies:
- '@babel/types': 7.28.4
+ '@babel/types': 7.28.5
'@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.28.4
- '@babel/types': 7.28.4
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
'@types/babel__traverse@7.20.6':
dependencies:
- '@babel/types': 7.28.4
+ '@babel/types': 7.28.5
'@types/braces@3.0.5': {}
@@ -6197,12 +6265,12 @@ snapshots:
'@typescript-eslint/types': 8.47.0
eslint-visitor-keys: 4.2.1
- '@vitejs/plugin-react@5.1.0(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
+ '@vitejs/plugin-react@5.1.1(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
dependencies:
- '@babel/core': 7.28.4
- '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4)
- '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4)
- '@rolldown/pluginutils': 1.0.0-beta.43
+ '@babel/core': 7.28.5
+ '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5)
+ '@rolldown/pluginutils': 1.0.0-beta.47
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
@@ -6396,13 +6464,6 @@ snapshots:
dependencies:
fill-range: 7.1.1
- browserslist@4.24.4:
- dependencies:
- caniuse-lite: 1.0.30001755
- electron-to-chromium: 1.5.119
- node-releases: 2.0.19
- update-browserslist-db: 1.1.1(browserslist@4.24.4)
-
browserslist@4.28.0:
dependencies:
baseline-browser-mapping: 2.8.29
@@ -6622,8 +6683,6 @@ snapshots:
eastasianwidth@0.2.0: {}
- electron-to-chromium@1.5.119: {}
-
electron-to-chromium@1.5.255: {}
emnapi@1.6.0(node-addon-api@8.3.0):
@@ -7724,7 +7783,7 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.3(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.3(@babel/core@7.28.4)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
'@next/env': 16.0.3
'@swc/helpers': 0.5.15
@@ -7732,7 +7791,7 @@ snapshots:
postcss: 8.4.31
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- styled-jsx: 5.1.6(react@19.2.0)
+ styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.2.0)
optionalDependencies:
'@next/swc-darwin-arm64': 16.0.3
'@next/swc-darwin-x64': 16.0.3
@@ -7762,8 +7821,6 @@ snapshots:
node-mock-http@1.0.2: {}
- node-releases@2.0.19: {}
-
node-releases@2.0.27: {}
normalize-path@3.0.0: {}
@@ -8332,10 +8389,12 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(react@19.2.0):
+ styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.2.0):
dependencies:
client-only: 0.0.1
react: 19.2.0
+ optionalDependencies:
+ '@babel/core': 7.28.4
sucrase@3.35.0:
dependencies:
@@ -8620,12 +8679,6 @@ snapshots:
consola: 3.2.3
pathe: 1.1.2
- update-browserslist-db@1.1.1(browserslist@4.24.4):
- dependencies:
- browserslist: 4.24.4
- escalade: 3.2.0
- picocolors: 1.1.1
-
update-browserslist-db@1.1.4(browserslist@4.28.0):
dependencies:
browserslist: 4.28.0
From 385edfb80d2dc483d9451de9a6b1fe9f49fbc129 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 09:41:20 -0500
Subject: [PATCH 022/353] =?UTF-8?q?Update=20emnapi=201.6.0=20=E2=86=92=201?=
=?UTF-8?q?.7.1=20(minor)=20(#19351)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this upgrade. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ emnapi (1.6.0 → 1.7.1) ·
[Repo](https://github.com/toyobayashi/emnapi)
Release Notes
What's Changed
Full Changelog : v1.7.0...v1.7.1
What's Changed
Full Changelog : v1.6.0...v1.7.0
Does any of this look wrong? Please let us
know.
Commits
See
the full diff on Github . The new version differs by 6 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
crates/node/package.json | 2 +-
pnpm-lock.yaml | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/crates/node/package.json b/crates/node/package.json
index 043f04f9b..037d0c354 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -35,7 +35,7 @@
"devDependencies": {
"@napi-rs/cli": "^3.4.1",
"@napi-rs/wasm-runtime": "^1.0.7",
- "emnapi": "1.6.0"
+ "emnapi": "1.7.1"
},
"engines": {
"node": ">= 10"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 45be92d96..c5751c29f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -132,8 +132,8 @@ importers:
specifier: ^1.0.7
version: 1.0.7
emnapi:
- specifier: 1.6.0
- version: 1.6.0(node-addon-api@8.3.0)
+ specifier: 1.7.1
+ version: 1.7.1(node-addon-api@8.3.0)
crates/node/npm/android-arm-eabi: {}
@@ -2877,8 +2877,8 @@ packages:
electron-to-chromium@1.5.255:
resolution: {integrity: sha512-Z9oIp4HrFF/cZkDPMpz2XSuVpc1THDpT4dlmATFlJUIBVCy9Vap5/rIXsASP1CscBacBqhabwh8vLctqBwEerQ==}
- emnapi@1.6.0:
- resolution: {integrity: sha512-Hx0FqhPchuwkDauQdgamWAn6MHbOX1CPIFfObXqxTEmngZUYM9mZLcPS/civeVT5x73xkBV1ZIwKWfessIFTgQ==}
+ emnapi@1.7.1:
+ resolution: {integrity: sha512-wlLK2xFq+T+rCBlY6+lPlFVDEyE93b7hSn9dMrfWBIcPf4ArwUvymvvMnN9M5WWuiryYQe9M+UJrkqw4trdyRA==}
peerDependencies:
node-addon-api: '>= 6.1.0'
peerDependenciesMeta:
@@ -5422,7 +5422,7 @@ snapshots:
clipanion: 4.0.0-rc.4(typanion@3.14.0)
colorette: 2.0.20
debug: 4.4.3
- emnapi: 1.6.0(node-addon-api@8.3.0)
+ emnapi: 1.7.1(node-addon-api@8.3.0)
es-toolkit: 1.39.10
js-yaml: 4.1.0
semver: 7.7.3
@@ -6685,7 +6685,7 @@ snapshots:
electron-to-chromium@1.5.255: {}
- emnapi@1.6.0(node-addon-api@8.3.0):
+ emnapi@1.7.1(node-addon-api@8.3.0):
optionalDependencies:
node-addon-api: 8.3.0
From a1f533a0e04ab7f94a31ced50843e638dc99ecac Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Fri, 21 Nov 2025 14:45:33 +0000
Subject: [PATCH 023/353] Update @emnapi/core to version 1.7.1
---
crates/node/npm/wasm32-wasi/package.json | 2 +-
pnpm-lock.yaml | 48 ++++++++++++------------
2 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/crates/node/npm/wasm32-wasi/package.json b/crates/node/npm/wasm32-wasi/package.json
index efdb31967..e7c1184f3 100644
--- a/crates/node/npm/wasm32-wasi/package.json
+++ b/crates/node/npm/wasm32-wasi/package.json
@@ -28,7 +28,7 @@
"browser": "tailwindcss-oxide.wasi-browser.js",
"dependencies": {
"@napi-rs/wasm-runtime": "^1.0.7",
- "@emnapi/core": "^1.6.0",
+ "@emnapi/core": "^1.7.1",
"@emnapi/runtime": "^1.7.1",
"@tybys/wasm-util": "^0.10.1",
"@emnapi/wasi-threads": "^1.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c5751c29f..aed49f994 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -158,8 +158,8 @@ importers:
crates/node/npm/wasm32-wasi:
dependencies:
'@emnapi/core':
- specifier: ^1.6.0
- version: 1.6.0
+ specifier: ^1.7.1
+ version: 1.7.1
'@emnapi/runtime':
specifier: ^1.7.1
version: 1.7.1
@@ -506,7 +506,7 @@ importers:
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^16.0.3
- version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^16.0.3
- version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -696,8 +696,8 @@ packages:
'@emnapi/core@1.5.0':
resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==}
- '@emnapi/core@1.6.0':
- resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==}
+ '@emnapi/core@1.7.1':
+ resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
'@emnapi/runtime@1.5.0':
resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
@@ -4841,7 +4841,7 @@ snapshots:
'@emnapi/wasi-threads': 1.1.0
tslib: 2.8.1
- '@emnapi/core@1.6.0':
+ '@emnapi/core@1.7.1':
dependencies:
'@emnapi/wasi-threads': 1.1.0
tslib: 2.8.1
@@ -6890,27 +6890,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
@@ -6921,9 +6921,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6938,19 +6938,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.3
eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6976,14 +6976,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6997,7 +6997,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7008,7 +7008,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -7020,7 +7020,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
From 28670a9b91033b6361a73b7e42c15da96fa96409 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Tue, 25 Nov 2025 09:27:57 -0500
Subject: [PATCH 024/353] =?UTF-8?q?Update=20globby=2015.0.0=20=E2=86=92=20?=
=?UTF-8?q?16.0.0=20(major)=20(#19357)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this upgrade. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ globby (15.0.0 → 16.0.0) ·
[Repo](https://github.com/sindresorhus/globby)
Release Notes
Breaking
Respect parent .gitignore files when gitignore option is enabled b9a9a84
When {gitignore: true}, Globby now
searches for .gitignore files up to the Git repo root (if detected).
This matches Git's actual behavior where parent .gitignore patterns
apply to subdirectories. Previously, only .gitignore files within the
glob search path were considered. This change could break existing code
that relied on the previous, more limited behavior.
Improvements
Support negation-only patterns 1273541
Respect custom fs implementation from options c2eb272
Add some more options to isGitIgnored functions e794ff9
Improve error message for invalid cwd option 7535e6d
Fixes
Fix {gitignore: true} performance
issue fcb07c3
Fix bundler compatibility e6c72c9
Fix parent directory patterns with gitignore option 11dd2df
Fix ignore patterns with parent directory references a58d117
Fix types for stats option c10f600
v15.0.0...v16.0.0
Does any of this look wrong? Please let us
know.
Commits
See
the full diff on Github . The new version differs by 22 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
packages/@tailwindcss-upgrade/package.json | 2 +-
pnpm-lock.yaml | 72 +++++++++++-----------
2 files changed, 37 insertions(+), 37 deletions(-)
diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json
index a1dfb5ee6..bfd748d33 100644
--- a/packages/@tailwindcss-upgrade/package.json
+++ b/packages/@tailwindcss-upgrade/package.json
@@ -32,7 +32,7 @@
"braces": "^3.0.3",
"dedent": "1.7.0",
"enhanced-resolve": "^5.18.3",
- "globby": "^15.0.0",
+ "globby": "^16.0.0",
"jiti": "^2.0.0-beta.3",
"mri": "^1.2.0",
"picocolors": "^1.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index aed49f994..5c69d06e0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -377,8 +377,8 @@ importers:
specifier: ^5.18.3
version: 5.18.3
globby:
- specifier: ^15.0.0
- version: 15.0.0
+ specifier: ^16.0.0
+ version: 16.0.0
jiti:
specifier: ^2.0.0-beta.3
version: 2.6.1
@@ -506,7 +506,7 @@ importers:
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^16.0.3
- version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^16.0.3
- version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -3230,8 +3230,8 @@ packages:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
- globby@15.0.0:
- resolution: {integrity: sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==}
+ globby@16.0.0:
+ resolution: {integrity: sha512-ejy4TJFga99yW6Q0uhM3pFawKWZmtZzZD/v/GwI5+9bCV5Ew+D2pSND6W7fUes5UykqSsJkUfxFVdRh7Q1+P3Q==}
engines: {node: '>=20'}
gopd@1.2.0:
@@ -3403,6 +3403,10 @@ packages:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
+ is-path-inside@4.0.0:
+ resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==}
+ engines: {node: '>=12'}
+
is-regex@1.2.1:
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
@@ -3862,10 +3866,6 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
- path-type@6.0.0:
- resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
- engines: {node: '>=18'}
-
pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
@@ -4490,9 +4490,9 @@ packages:
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
- unicorn-magic@0.3.0:
- resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
- engines: {node: '>=18'}
+ unicorn-magic@0.4.0:
+ resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==}
+ engines: {node: '>=20'}
universal-user-agent@7.0.2:
resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
@@ -6890,27 +6890,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
@@ -6921,9 +6921,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6938,19 +6938,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.3
eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6976,14 +6976,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6997,7 +6997,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7008,7 +7008,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -7020,7 +7020,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7346,14 +7346,14 @@ snapshots:
define-properties: 1.2.1
gopd: 1.2.0
- globby@15.0.0:
+ globby@16.0.0:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
fast-glob: 3.3.3
ignore: 7.0.5
- path-type: 6.0.0
+ is-path-inside: 4.0.0
slash: 5.1.0
- unicorn-magic: 0.3.0
+ unicorn-magic: 0.4.0
gopd@1.2.0: {}
@@ -7509,6 +7509,8 @@ snapshots:
is-number@7.0.0: {}
+ is-path-inside@4.0.0: {}
+
is-regex@1.2.1:
dependencies:
call-bound: 1.0.4
@@ -7924,8 +7926,6 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
- path-type@6.0.0: {}
-
pathe@1.1.2: {}
pathe@2.0.3: {}
@@ -8669,7 +8669,7 @@ snapshots:
undici-types@6.21.0: {}
- unicorn-magic@0.3.0: {}
+ unicorn-magic@0.4.0: {}
universal-user-agent@7.0.2: {}
From 0e8f075ca265845470d50ed9241e9e1095376a42 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 25 Nov 2025 12:22:57 -0500
Subject: [PATCH 025/353] Fix source map generation during when watching files
on the CLI (#19373)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes #19362
We were overwriting the source map with the "decoded" map returned by
the compiler but didn't wrap it in the helper intended to help inline vs
file maps. This resulted in two issues:
1. `undefined` being appended to the CSS file when using `--map`
2. `undefined` being passed to `writeFile(…)` when using `--map `
This PR fixes both.
---
CHANGELOG.md | 1 +
integrations/cli/index.test.ts | 477 +++++++++++++++++-
.../src/commands/build/index.ts | 4 +-
3 files changed, 479 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1fba8eaf9..61eeebe95 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Skip over arbitrary property utilities with a top-level `!` in the value ([#19243](https://github.com/tailwindlabs/tailwindcss/pull/19243))
- Support environment API in `@tailwindcss/vite` ([#18970](https://github.com/tailwindlabs/tailwindcss/pull/18970))
- Preserve case of theme keys from JS configs and plugins ([#19337](https://github.com/tailwindlabs/tailwindcss/pull/19337))
+- Write source maps correctly on the CLI when using `--watch` ([#19373](https://github.com/tailwindlabs/tailwindcss/pull/19373))
- Upgrade: Handle `future` and `experimental` config keys ([#19344](https://github.com/tailwindlabs/tailwindcss/pull/19344))
### Added
diff --git a/integrations/cli/index.test.ts b/integrations/cli/index.test.ts
index 5f3b0fcb4..867d4d777 100644
--- a/integrations/cli/index.test.ts
+++ b/integrations/cli/index.test.ts
@@ -3,7 +3,7 @@ import os from 'node:os'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { describe } from 'vitest'
-import { candidate, css, html, js, json, test, ts, yaml } from '../utils'
+import { candidate, css, html, js, json, retryAssertion, test, ts, yaml } from '../utils'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
@@ -819,6 +819,481 @@ describe.each([
})
},
)
+
+ test(
+ 'watch mode + inline source maps',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "dependencies": {
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/cli": "workspace:^"
+ }
+ }
+ `,
+ 'ssrc/index.html': html`
+
+ `,
+ 'src/index.css': css`
+ @import 'tailwindcss/utilities';
+ /* */
+ `,
+ },
+ },
+ async ({ spawn, expect, fs, parseSourceMap }) => {
+ let process = await spawn(
+ `${command} --input src/index.css --output dist/out.css --map --watch`,
+ )
+ await process.onStderr((m) => m.includes('Done in'))
+
+ await fs.expectFileToContain('dist/out.css', [candidate`flex`])
+
+ let originalCss = await fs.read('dist/out.css')
+ let currentCss = originalCss
+
+ // Make sure we can find a source map
+ let map = parseSourceMap(currentCss)
+
+ expect(map.at(1, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '/*! tailwi...',
+ })
+
+ expect(map.at(2, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.flex {...',
+ })
+
+ expect(map.at(3, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'display: f...',
+ })
+
+ expect(map.at(4, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}...',
+ })
+
+ // Write to project source files
+ await fs.write('src/index.html', html`
+
+ `)
+
+ // Wait for the CSS to be rebuilt
+ await retryAssertion(async () => {
+ currentCss = await fs.read('dist/out.css')
+ expect(currentCss).not.toEqual(originalCss)
+ originalCss = currentCss
+ })
+
+ // Make sure the source map was updated
+ map = parseSourceMap(currentCss)
+
+ expect(map.at(1, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '/*! tailwi...',
+ })
+
+ expect(map.at(2, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.flex {...',
+ })
+
+ expect(map.at(3, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'display: f...',
+ })
+
+ expect(map.at(4, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}\n.underli...',
+ })
+
+ expect(map.at(5, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.underline...',
+ })
+
+ expect(map.at(6, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'text-decor...',
+ })
+
+ expect(map.at(7, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}...',
+ })
+
+ // Write to the main CSS file
+ await fs.write(
+ 'src/index.css',
+ css`
+ @import 'tailwindcss/utilities';
+ @source inline("w-auto");
+ `,
+ )
+
+ // Wait for the CSS to be rebuilt
+ await retryAssertion(async () => {
+ currentCss = await fs.read('dist/out.css')
+ expect(currentCss).not.toEqual(originalCss)
+ originalCss = currentCss
+ })
+
+ // Make sure the source map was updated
+ map = parseSourceMap(currentCss)
+
+ expect(map.at(1, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '/*! tailwi...',
+ })
+
+ expect(map.at(2, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.flex {...',
+ })
+
+ expect(map.at(3, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'display: f...',
+ })
+
+ expect(map.at(4, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}\n.w-auto...',
+ })
+
+ expect(map.at(5, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.w-auto {...',
+ })
+
+ expect(map.at(6, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'width: aut...',
+ })
+
+ expect(map.at(7, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}\n.underli...',
+ })
+
+ expect(map.at(8, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.underline...',
+ })
+
+ expect(map.at(9, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'text-decor...',
+ })
+
+ expect(map.at(10, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}...',
+ })
+ },
+ )
+
+ test(
+ 'watch mode + separate source maps',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "dependencies": {
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/cli": "workspace:^"
+ }
+ }
+ `,
+ 'ssrc/index.html': html`
+
+ `,
+ 'src/index.css': css`
+ @import 'tailwindcss/utilities';
+ /* */
+ `,
+ },
+ },
+ async ({ spawn, expect, fs, parseSourceMap }) => {
+ let process = await spawn(
+ `${command} --input src/index.css --output dist/out.css --map dist/out.css.map --watch`,
+ )
+ await process.onStderr((m) => m.includes('Done in'))
+
+ await fs.expectFileToContain('dist/out.css', [candidate`flex`])
+
+ // Make sure we can find a source map
+ let originalCss = await fs.read('dist/out.css')
+ let originalMap = await fs.read('dist/out.css.map')
+ let currentCss = originalCss
+ let currentMap = originalMap
+
+ // Make sure we can find a source map
+ let map = parseSourceMap({ map: currentMap, content: currentCss })
+
+ expect(map.at(1, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '/*! tailwi...',
+ })
+
+ expect(map.at(2, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.flex {...',
+ })
+
+ expect(map.at(3, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'display: f...',
+ })
+
+ expect(map.at(4, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}...',
+ })
+
+ // Write to project source files
+ await fs.write('src/index.html', html`
+
+ `)
+
+ // Wait for the CSS to be rebuilt
+ await retryAssertion(async () => {
+ currentCss = await fs.read('dist/out.css')
+ currentMap = await fs.read('dist/out.css.map')
+ expect(currentCss).not.toEqual(originalCss)
+ expect(currentMap).not.toEqual(originalMap)
+ originalCss = currentCss
+ originalMap = currentMap
+ })
+
+ // Make sure the source map was updated
+ map = parseSourceMap({ map: currentMap, content: currentCss })
+
+ expect(map.at(1, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '/*! tailwi...',
+ })
+
+ expect(map.at(2, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.flex {...',
+ })
+
+ expect(map.at(3, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'display: f...',
+ })
+
+ expect(map.at(4, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}\n.underli...',
+ })
+
+ expect(map.at(5, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.underline...',
+ })
+
+ expect(map.at(6, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'text-decor...',
+ })
+
+ expect(map.at(7, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}...',
+ })
+
+ // Write to the main CSS file
+ await fs.write(
+ 'src/index.css',
+ css`
+ @import 'tailwindcss/utilities';
+ @source inline("w-auto");
+ `,
+ )
+
+ // Wait for the CSS to be rebuilt
+ await retryAssertion(async () => {
+ currentCss = await fs.read('dist/out.css')
+ currentMap = await fs.read('dist/out.css.map')
+ expect(currentCss).not.toEqual(originalCss)
+ expect(currentMap).not.toEqual(originalMap)
+ originalCss = currentCss
+ originalMap = currentMap
+ })
+
+ // Make sure the source map was updated
+ map = parseSourceMap({ map: currentMap, content: currentCss })
+
+ expect(map.at(1, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '/*! tailwi...',
+ })
+
+ expect(map.at(2, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.flex {...',
+ })
+
+ expect(map.at(3, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'display: f...',
+ })
+
+ expect(map.at(4, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}\n.w-auto...',
+ })
+
+ expect(map.at(5, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.w-auto {...',
+ })
+
+ expect(map.at(6, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'width: aut...',
+ })
+
+ expect(map.at(7, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}\n.underli...',
+ })
+
+ expect(map.at(8, 0)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: '.underline...',
+ })
+
+ expect(map.at(9, 2)).toMatchObject({
+ source:
+ kind === 'CLI'
+ ? expect.stringContaining('utilities.css')
+ : expect.stringMatching(/\/utilities-\w+\.css$/),
+ original: '@tailwind...',
+ generated: 'text-decor...',
+ })
+
+ expect(map.at(10, 0)).toMatchObject({
+ source: null,
+ original: '(none)',
+ generated: '}...',
+ })
+ },
+ )
})
test(
diff --git a/packages/@tailwindcss-cli/src/commands/build/index.ts b/packages/@tailwindcss-cli/src/commands/build/index.ts
index 794b54ae3..f0d441fe2 100644
--- a/packages/@tailwindcss-cli/src/commands/build/index.ts
+++ b/packages/@tailwindcss-cli/src/commands/build/index.ts
@@ -321,7 +321,7 @@ export async function handle(args: Result>) {
if (args['--map']) {
DEBUG && I.start('Build Source Map')
- compiledMap = compiler.buildSourceMap() as any
+ compiledMap = toSourceMap(compiler.buildSourceMap())
DEBUG && I.end('Build Source Map')
}
}
@@ -346,7 +346,7 @@ export async function handle(args: Result>) {
if (args['--map']) {
DEBUG && I.start('Build Source Map')
- compiledMap = compiler.buildSourceMap() as any
+ compiledMap = toSourceMap(compiler.buildSourceMap())
DEBUG && I.end('Build Source Map')
}
}
From 117433a1003024c944169b05872fa333eb83ad50 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 25 Nov 2025 13:13:08 -0500
Subject: [PATCH 026/353] =?UTF-8?q?Revert=20"Update=20globby=2015.0.0=20?=
=?UTF-8?q?=E2=86=92=2016.0.0=20(major)=20(#19357)"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit 28670a9b91033b6361a73b7e42c15da96fa96409.
---
packages/@tailwindcss-upgrade/package.json | 2 +-
pnpm-lock.yaml | 72 +++++++++++-----------
2 files changed, 37 insertions(+), 37 deletions(-)
diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json
index bfd748d33..a1dfb5ee6 100644
--- a/packages/@tailwindcss-upgrade/package.json
+++ b/packages/@tailwindcss-upgrade/package.json
@@ -32,7 +32,7 @@
"braces": "^3.0.3",
"dedent": "1.7.0",
"enhanced-resolve": "^5.18.3",
- "globby": "^16.0.0",
+ "globby": "^15.0.0",
"jiti": "^2.0.0-beta.3",
"mri": "^1.2.0",
"picocolors": "^1.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5c69d06e0..aed49f994 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -377,8 +377,8 @@ importers:
specifier: ^5.18.3
version: 5.18.3
globby:
- specifier: ^16.0.0
- version: 16.0.0
+ specifier: ^15.0.0
+ version: 15.0.0
jiti:
specifier: ^2.0.0-beta.3
version: 2.6.1
@@ -506,7 +506,7 @@ importers:
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^16.0.3
- version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
specifier: ^16.0.3
- version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -3230,8 +3230,8 @@ packages:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
- globby@16.0.0:
- resolution: {integrity: sha512-ejy4TJFga99yW6Q0uhM3pFawKWZmtZzZD/v/GwI5+9bCV5Ew+D2pSND6W7fUes5UykqSsJkUfxFVdRh7Q1+P3Q==}
+ globby@15.0.0:
+ resolution: {integrity: sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==}
engines: {node: '>=20'}
gopd@1.2.0:
@@ -3403,10 +3403,6 @@ packages:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- is-path-inside@4.0.0:
- resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==}
- engines: {node: '>=12'}
-
is-regex@1.2.1:
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
@@ -3866,6 +3862,10 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
+ path-type@6.0.0:
+ resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
+ engines: {node: '>=18'}
+
pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
@@ -4490,9 +4490,9 @@ packages:
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
- unicorn-magic@0.4.0:
- resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==}
- engines: {node: '>=20'}
+ unicorn-magic@0.3.0:
+ resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
+ engines: {node: '>=18'}
universal-user-agent@7.0.2:
resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
@@ -6890,27 +6890,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1)
@@ -6921,9 +6921,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6938,19 +6938,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.3
eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6976,14 +6976,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6997,7 +6997,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7008,7 +7008,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -7020,7 +7020,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7346,14 +7346,14 @@ snapshots:
define-properties: 1.2.1
gopd: 1.2.0
- globby@16.0.0:
+ globby@15.0.0:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
fast-glob: 3.3.3
ignore: 7.0.5
- is-path-inside: 4.0.0
+ path-type: 6.0.0
slash: 5.1.0
- unicorn-magic: 0.4.0
+ unicorn-magic: 0.3.0
gopd@1.2.0: {}
@@ -7509,8 +7509,6 @@ snapshots:
is-number@7.0.0: {}
- is-path-inside@4.0.0: {}
-
is-regex@1.2.1:
dependencies:
call-bound: 1.0.4
@@ -7926,6 +7924,8 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
+ path-type@6.0.0: {}
+
pathe@1.1.2: {}
pathe@2.0.3: {}
@@ -8669,7 +8669,7 @@ snapshots:
undici-types@6.21.0: {}
- unicorn-magic@0.4.0: {}
+ unicorn-magic@0.3.0: {}
universal-user-agent@7.0.2: {}
From 9e436f7751e7f68d7bd44d28c4f58293ae0a4c7e Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Wed, 26 Nov 2025 12:07:21 +0100
Subject: [PATCH 027/353] Try to canonicalize any arbitrary utility to a bare
value (#19379)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR adds an improvement to our canonicalization logic when dealing
with arbitrary values. When trying to canonicalize utilities, we make
use of the intellisense suggestions list where we typically use
multiples of the spacing scale.
This means that a value like `gap-[128px]` gets properly canonicalized
to `gap-32`. However, when you try a value that we typically don't
suggest such as `gap-[116px]` then it doesn't get canonicalized at all.
This PR fixes that by trying to use the spacing scale and convert `116px
/ 4px` and try the `gap-29` utility instead.
This is done by canonicalizing the incoming arbitrary value and the
spacing multipliers such that `--spacing: 0.25rem` and `--spacing: 4px`
both work as expected.
### Test plan
1. Added some tests with a spacing scale of `0.25rem` (which is the
default)
2. Added some tests with the same spacing scale in a different unit
`4px`
3. Added some tests with a different spacing scale `1px`
Also had to update 1 test that now gets canonicalized properly, e.g.:
`w-[124px]` → `w-31`.
---
CHANGELOG.md | 1 +
.../src/canonicalize-candidates.test.ts | 18 ++++++++-
.../src/canonicalize-candidates.ts | 37 +++++++++++++++++++
3 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 61eeebe95..3a497ac4a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Preserve case of theme keys from JS configs and plugins ([#19337](https://github.com/tailwindlabs/tailwindcss/pull/19337))
- Write source maps correctly on the CLI when using `--watch` ([#19373](https://github.com/tailwindlabs/tailwindcss/pull/19373))
- Upgrade: Handle `future` and `experimental` config keys ([#19344](https://github.com/tailwindlabs/tailwindcss/pull/19344))
+- Try to canonicalize any arbitrary utility to a bare value ([#19379](https://github.com/tailwindlabs/tailwindcss/pull/19379))
### Added
diff --git a/packages/tailwindcss/src/canonicalize-candidates.test.ts b/packages/tailwindcss/src/canonicalize-candidates.test.ts
index 26a34b964..fd5826c4d 100644
--- a/packages/tailwindcss/src/canonicalize-candidates.test.ts
+++ b/packages/tailwindcss/src/canonicalize-candidates.test.ts
@@ -530,8 +530,24 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
// Default spacing scale
['w-[64rem]', 'w-256', '0.25rem'],
+ // Non-suggested numbers
+ ['gap-[7.25rem]', 'gap-29', '0.25rem'],
+ ['gap-[calc(7rem+0.25rem)]', 'gap-29', '0.25rem'],
+ ['gap-[116px]', 'gap-29', '0.25rem'],
+
+ // Non-suggested numbers, with the same spacing scale with different
+ // units
+ ['gap-[7.25rem]', 'gap-29', '4px'],
+ ['gap-[calc(7rem+0.25rem)]', 'gap-29', '4px'],
+ ['gap-[116px]', 'gap-29', '4px'],
+
+ // Non-suggested numbers, with a different spacing scale
+ ['gap-[7.25rem]', 'gap-116', '1px'],
+ ['gap-[calc(7rem+0.25rem)]', 'gap-116', '1px'],
+ ['gap-[116px]', 'gap-116', '1px'],
+
// Keep arbitrary value if units are different
- ['w-[124px]', 'w-[124px]', '0.25rem'],
+ ['w-[124px]', 'w-31', '0.25rem'],
// Keep arbitrary value if bare value doesn't fit in steps of .25
['w-[0.123rem]', 'w-[0.123rem]', '0.25rem'],
diff --git a/packages/tailwindcss/src/canonicalize-candidates.ts b/packages/tailwindcss/src/canonicalize-candidates.ts
index 13c3bc257..69f50c51f 100644
--- a/packages/tailwindcss/src/canonicalize-candidates.ts
+++ b/packages/tailwindcss/src/canonicalize-candidates.ts
@@ -990,6 +990,43 @@ function arbitraryUtilities(candidate: Candidate, options: InternalCanonicalizeO
candidate.kind === 'arbitrary' ? candidate.value : (candidate.value?.value ?? null)
if (value === null) return
+ // Try to canonicalize any incoming arbitrary value. Canonicalization of
+ // `rem` and `px` values will be converted to `px`, so we have to
+ // canonicalize the spacing multiplier as well.
+ if (
+ options.signatureOptions.rem !== null &&
+ candidate.kind === 'functional' &&
+ candidate.value?.kind === 'arbitrary'
+ ) {
+ let spacingMultiplier = designSystem.resolveThemeValue('--spacing')
+ if (spacingMultiplier !== undefined) {
+ // Canonicalizing the spacing multiplier allows us to handle both
+ // `--spacing: 0.25rem` and `--spacing: 4px` values correctly.
+ let canonicalizedSpacingMultiplier = constantFoldDeclaration(
+ spacingMultiplier,
+ options.signatureOptions.rem,
+ )
+ if (canonicalizedSpacingMultiplier !== null) {
+ let canonicalizedValue = constantFoldDeclaration(value, options.signatureOptions.rem)
+ let valueDimension = dimensions.get(canonicalizedValue)
+ let spacingMultiplierDimension = dimensions.get(canonicalizedSpacingMultiplier)
+ if (
+ valueDimension &&
+ spacingMultiplierDimension &&
+ valueDimension[1] === spacingMultiplierDimension[1] && // Ensure the units match
+ spacingMultiplierDimension[0] !== 0
+ ) {
+ let bareValue = `${valueDimension[0] / spacingMultiplierDimension[0]}`
+ if (isValidSpacingMultiplier(bareValue)) {
+ yield Object.assign({}, candidate, {
+ value: { kind: 'named', value: bareValue, fraction: null },
+ })
+ }
+ }
+ }
+ }
+ }
+
let spacingMultiplier = designSystem.storage[SPACING_KEY]?.get(value) ?? null
let rootPrefix = ''
if (spacingMultiplier !== null && spacingMultiplier < 0) {
From af481175e775c46a9ab78e6764c2fbaeec058474 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Wed, 26 Nov 2025 12:34:42 +0100
Subject: [PATCH 028/353] remove unnecessary intermediate check
---
.../src/canonicalize-candidates.ts | 31 +++++++++----------
1 file changed, 15 insertions(+), 16 deletions(-)
diff --git a/packages/tailwindcss/src/canonicalize-candidates.ts b/packages/tailwindcss/src/canonicalize-candidates.ts
index 69f50c51f..437ec60b4 100644
--- a/packages/tailwindcss/src/canonicalize-candidates.ts
+++ b/packages/tailwindcss/src/canonicalize-candidates.ts
@@ -1006,22 +1006,21 @@ function arbitraryUtilities(candidate: Candidate, options: InternalCanonicalizeO
spacingMultiplier,
options.signatureOptions.rem,
)
- if (canonicalizedSpacingMultiplier !== null) {
- let canonicalizedValue = constantFoldDeclaration(value, options.signatureOptions.rem)
- let valueDimension = dimensions.get(canonicalizedValue)
- let spacingMultiplierDimension = dimensions.get(canonicalizedSpacingMultiplier)
- if (
- valueDimension &&
- spacingMultiplierDimension &&
- valueDimension[1] === spacingMultiplierDimension[1] && // Ensure the units match
- spacingMultiplierDimension[0] !== 0
- ) {
- let bareValue = `${valueDimension[0] / spacingMultiplierDimension[0]}`
- if (isValidSpacingMultiplier(bareValue)) {
- yield Object.assign({}, candidate, {
- value: { kind: 'named', value: bareValue, fraction: null },
- })
- }
+
+ let canonicalizedValue = constantFoldDeclaration(value, options.signatureOptions.rem)
+ let valueDimension = dimensions.get(canonicalizedValue)
+ let spacingMultiplierDimension = dimensions.get(canonicalizedSpacingMultiplier)
+ if (
+ valueDimension &&
+ spacingMultiplierDimension &&
+ valueDimension[1] === spacingMultiplierDimension[1] && // Ensure the units match
+ spacingMultiplierDimension[0] !== 0
+ ) {
+ let bareValue = `${valueDimension[0] / spacingMultiplierDimension[0]}`
+ if (isValidSpacingMultiplier(bareValue)) {
+ yield Object.assign({}, candidate, {
+ value: { kind: 'named', value: bareValue, fraction: null },
+ })
}
}
}
From 764275143eaac5f6ef7abb6dd22e51a6cd2f9dd1 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Fri, 28 Nov 2025 15:45:10 -0500
Subject: [PATCH 029/353] Improve compatibility with special default values in
JS configs (#19348)
Fixes #19345
In v3 the `ringColor.DEFAULT` option was used as the default color for
ring utilities (when it was defined). This currently gets translated as
`--ring-color` but that doesn't work this way in v4. Instead it should
translate to `--default-ring-color` and *not* `--ring-color`.
I've also tweaked the upgrade tool to handle this properly as well.
---
CHANGELOG.md | 1 +
integrations/upgrade/index.test.ts | 3 +-
integrations/upgrade/js-config.test.ts | 5 ++
.../src/codemods/config/migrate-js-config.ts | 21 ++++---
.../template/migrate-legacy-classes.ts | 2 +-
.../src/compat/apply-config-to-theme.test.ts | 35 ++++++++++++
.../src/compat/apply-config-to-theme.ts | 57 +++++++++++++------
7 files changed, 97 insertions(+), 27 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3a497ac4a..f3fbec4ad 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Support environment API in `@tailwindcss/vite` ([#18970](https://github.com/tailwindlabs/tailwindcss/pull/18970))
- Preserve case of theme keys from JS configs and plugins ([#19337](https://github.com/tailwindlabs/tailwindcss/pull/19337))
- Write source maps correctly on the CLI when using `--watch` ([#19373](https://github.com/tailwindlabs/tailwindcss/pull/19373))
+- Handle special defaults (like `ringColor.DEFAULT`) in JS configs ([#19348](https://github.com/tailwindlabs/tailwindcss/pull/19348))
- Upgrade: Handle `future` and `experimental` config keys ([#19344](https://github.com/tailwindlabs/tailwindcss/pull/19344))
- Try to canonicalize any arbitrary utility to a bare value ([#19379](https://github.com/tailwindlabs/tailwindcss/pull/19379))
diff --git a/integrations/upgrade/index.test.ts b/integrations/upgrade/index.test.ts
index a9d71b3d5..029ed77a8 100644
--- a/integrations/upgrade/index.test.ts
+++ b/integrations/upgrade/index.test.ts
@@ -2347,8 +2347,7 @@ test(
--shadow-*: initial;
--shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
- --ring-width-*: initial;
- --ring-width: 4px;
+ --default-ring-width: 4px;
--blur: var(--custom-default-blur);
diff --git a/integrations/upgrade/js-config.test.ts b/integrations/upgrade/js-config.test.ts
index eaa04df96..450d8254c 100644
--- a/integrations/upgrade/js-config.test.ts
+++ b/integrations/upgrade/js-config.test.ts
@@ -34,6 +34,9 @@ test(
steel: 'rgb(70 130 180 / )',
smoke: 'rgba(245, 245, 245, var(--smoke-alpha, ))',
},
+ ringColor: {
+ DEFAULT: '#c0ffee',
+ },
opacity: {
superOpaque: '0.95',
},
@@ -191,6 +194,8 @@ test(
--color-steel: rgb(70 130 180);
--color-smoke: rgba(245, 245, 245, var(--smoke-alpha, 1));
+ --default-ring-color: #c0ffee;
+
--opacity-*: initial;
--opacity-superOpaque: 95%;
diff --git a/packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts b/packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts
index 1b2b066ab..6a451333e 100644
--- a/packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts
+++ b/packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts
@@ -237,16 +237,21 @@ async function migrateTheme(
prevSectionKey = sectionKey
}
- if (resetNamespaces.has(key[0]) && resetNamespaces.get(key[0]) === false) {
- resetNamespaces.set(key[0], true)
- let property = keyPathToCssProperty([key[0]])
- if (property !== null) {
- themeSection.push(` ${escape(`--${property}`)}-*: initial;`)
- }
- }
-
let property = keyPathToCssProperty(key)
+
if (property !== null) {
+ if (
+ !property.startsWith('default-') &&
+ resetNamespaces.has(key[0]) &&
+ resetNamespaces.get(key[0]) === false
+ ) {
+ resetNamespaces.set(key[0], true)
+ let ns = keyPathToCssProperty([key[0]])
+ if (ns !== null) {
+ themeSection.push(` ${escape(`--${ns}`)}-*: initial;`)
+ }
+ }
+
themeSection.push(` ${escape(`--${property}`)}: ${value};`)
}
}
diff --git a/packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.ts b/packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.ts
index 614b4017b..2b088aa2e 100644
--- a/packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.ts
+++ b/packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.ts
@@ -59,7 +59,7 @@ const THEME_KEYS = new Map([
['backdrop-blur-sm', '--backdrop-blur-sm'],
['backdrop-blur-xs', '--backdrop-blur-xs'],
- ['ring', '--ring-width'],
+ ['ring', '--default-ring-width'],
['ring-3', '--ring-width-3'],
])
diff --git a/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts b/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
index f36e5ab15..12f195e94 100644
--- a/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
+++ b/packages/tailwindcss/src/compat/apply-config-to-theme.test.ts
@@ -31,6 +31,16 @@ test('config values can be merged into the theme', () => {
normal: '0 1px 3px black',
},
+ borderWidth: {
+ DEFAULT: '1.5px',
+ },
+ outlineWidth: {
+ DEFAULT: '2.5px',
+ },
+ ringWidth: {
+ DEFAULT: '3.5px',
+ },
+
borderRadius: {
sm: '0.33rem',
},
@@ -57,6 +67,10 @@ test('config values can be merged into the theme', () => {
'2xl': ['2rem'],
},
+ ringColor: {
+ DEFAULT: '#fff',
+ },
+
letterSpacing: {
superWide: '0.25em',
},
@@ -77,8 +91,12 @@ test('config values can be merged into the theme', () => {
},
transitionTimingFunction: {
+ DEFAULT: 'ease-in-out',
fast: 'cubic-bezier(0, 0.55, 0.45, 1)',
},
+ transitionDuration: {
+ DEFAULT: '1234ms',
+ },
},
},
base: '/root',
@@ -125,6 +143,23 @@ test('config values can be merged into the theme', () => {
expect(theme.resolve('100%', ['--width'])).toEqual('100%')
expect(theme.resolve('9xs', ['--container'])).toEqual('6rem')
expect(theme.resolve('fast', ['--ease'])).toEqual('cubic-bezier(0, 0.55, 0.45, 1)')
+
+ expect(theme.get(['--border'])).toEqual(null)
+ expect(theme.get(['--default-border-width'])).toEqual('1.5px')
+
+ expect(theme.get(['--outline'])).toEqual(null)
+ expect(theme.get(['--default-outline-width'])).toEqual('2.5px')
+
+ expect(theme.get(['--ring-color'])).toEqual(null)
+ expect(theme.get(['--default-ring-color'])).toEqual('#fff')
+
+ expect(theme.get(['--ring-width'])).toEqual(null)
+ expect(theme.get(['--default-ring-width'])).toEqual('3.5px')
+
+ expect(theme.get(['--default-transition-duration'])).toEqual('1234ms')
+
+ expect(theme.get(['--ease'])).toEqual(null)
+ expect(theme.get(['--default-transition-timing-function'])).toEqual('ease-in-out')
})
test('will reset default theme values with overwriting theme values', () => {
diff --git a/packages/tailwindcss/src/compat/apply-config-to-theme.ts b/packages/tailwindcss/src/compat/apply-config-to-theme.ts
index ce3958eb3..885d2d9ba 100644
--- a/packages/tailwindcss/src/compat/apply-config-to-theme.ts
+++ b/packages/tailwindcss/src/compat/apply-config-to-theme.ts
@@ -147,32 +147,57 @@ export function themeableValues(config: ResolvedConfig['theme']): [string[], unk
return toAdd
}
+const SPECIAL_DEFAULT_KEYS: Record = {
+ borderWidth: 'border-width',
+ outlineWidth: 'outline-width',
+ ringColor: 'ring-color',
+ ringWidth: 'ring-width',
+ transitionDuration: 'transition-duration',
+ transitionTimingFunction: 'transition-timing-function',
+}
+
+const OLD_TO_NEW_NAMESPACE: Record = {
+ animation: 'animate',
+ aspectRatio: 'aspect',
+ borderRadius: 'radius',
+ boxShadow: 'shadow',
+ colors: 'color',
+ containers: 'container',
+ fontFamily: 'font',
+ fontSize: 'text',
+ letterSpacing: 'tracking',
+ lineHeight: 'leading',
+ maxWidth: 'container',
+ screens: 'breakpoint',
+ transitionTimingFunction: 'ease',
+}
+
const IS_VALID_KEY = /^[a-zA-Z0-9-_%/\.]+$/
export function keyPathToCssProperty(path: string[]) {
+ // In some special cases the `DEFAULT` key did not map to a "default" utility
+ // e.g. `ringColor.DEFAULT` wasn't *just* used for `ring`. It was used for
+ // all ring utilities as the color when one wasn't specified.
+ //
+ // We place these specialty values under the `--default-*` namespace to signal
+ // that they are defaults used by (potentially) multiple utilities.
+ let specialDefault = SPECIAL_DEFAULT_KEYS[path[0]]
+ if (specialDefault && path[1] === 'DEFAULT') return `default-${specialDefault}`
+
// The legacy container component config should not be included in the Theme
if (path[0] === 'container') return null
- path = path.slice()
-
- if (path[0] === 'animation') path[0] = 'animate'
- if (path[0] === 'aspectRatio') path[0] = 'aspect'
- if (path[0] === 'borderRadius') path[0] = 'radius'
- if (path[0] === 'boxShadow') path[0] = 'shadow'
- if (path[0] === 'colors') path[0] = 'color'
- if (path[0] === 'containers') path[0] = 'container'
- if (path[0] === 'fontFamily') path[0] = 'font'
- if (path[0] === 'fontSize') path[0] = 'text'
- if (path[0] === 'letterSpacing') path[0] = 'tracking'
- if (path[0] === 'lineHeight') path[0] = 'leading'
- if (path[0] === 'maxWidth') path[0] = 'container'
- if (path[0] === 'screens') path[0] = 'breakpoint'
- if (path[0] === 'transitionTimingFunction') path[0] = 'ease'
-
for (let part of path) {
if (!IS_VALID_KEY.test(part)) return null
}
+ // Map old v3 namespaces to new theme namespaces
+ let ns = OLD_TO_NEW_NAMESPACE[path[0]]
+ if (ns) {
+ path = path.slice()
+ path[0] = ns
+ }
+
return (
path
// [1] should move into the nested object tuple. To create the CSS variable
From 243615e3f228d20bd04fd4c173bf515d40dd184d Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Sat, 29 Nov 2025 11:19:37 -0500
Subject: [PATCH 030/353] Handle backwards compatibility for `content` theme
from JS configs (#19381)
Fixes #19343
This PR makes it so the `content-*` utilities read from the
`--content-*` theme namespace. This change is **purely for backwards
compatibility with Tailwind CSS v3**. It is recommended you use
arbitrary values with the `content-*` utility instead.
---
CHANGELOG.md | 1 +
packages/tailwindcss/src/utilities.test.ts | 21 ++++++++++++++++++++-
packages/tailwindcss/src/utilities.ts | 4 +++-
3 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f3fbec4ad..e9f52b544 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Preserve case of theme keys from JS configs and plugins ([#19337](https://github.com/tailwindlabs/tailwindcss/pull/19337))
- Write source maps correctly on the CLI when using `--watch` ([#19373](https://github.com/tailwindlabs/tailwindcss/pull/19373))
- Handle special defaults (like `ringColor.DEFAULT`) in JS configs ([#19348](https://github.com/tailwindlabs/tailwindcss/pull/19348))
+- Improve backwards compatibility for `content` theme key from JS configs ([#19381](https://github.com/tailwindlabs/tailwindcss/pull/19381))
- Upgrade: Handle `future` and `experimental` config keys ([#19344](https://github.com/tailwindlabs/tailwindcss/pull/19344))
- Try to canonicalize any arbitrary utility to a bare value ([#19379](https://github.com/tailwindlabs/tailwindcss/pull/19379))
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index 233d3fa23..732e4ab9a 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -23259,7 +23259,17 @@ test('contain', async () => {
})
test('content', async () => {
- expect(await run(['content-["hello_world"]'])).toMatchInlineSnapshot(`
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --content-slash: '/';
+ }
+ @tailwind utilities;
+ `,
+ ['content-slash', 'content-["hello_world"]'],
+ ),
+ ).toMatchInlineSnapshot(`
"@layer properties {
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
*, :before, :after, ::backdrop {
@@ -23268,11 +23278,20 @@ test('content', async () => {
}
}
+ :root, :host {
+ --content-slash: "/";
+ }
+
.content-\\[\\"hello_world\\"\\] {
--tw-content: "hello world";
content: var(--tw-content);
}
+ .content-slash {
+ --tw-content: var(--content-slash);
+ content: var(--tw-content);
+ }
+
@property --tw-content {
syntax: "*";
inherits: false;
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index 521cf974d..5e7877825 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -4688,7 +4688,9 @@ export function createUtilities(theme: Theme) {
['content', 'none'],
])
functionalUtility('content', {
- themeKeys: [],
+ // BC: We only read from the `--content` theme key for compatibility reasons. It's recommended
+ // to use the utility with arbitrary values instead.
+ themeKeys: ['--content'],
handle: (value) => [
atRoot([property('--tw-content', '""')]),
decl('--tw-content', value),
From 229121dd1476d38d5916b2ada01a37df1bf33e33 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Mon, 1 Dec 2025 16:01:24 +0100
Subject: [PATCH 031/353] Canonicalization: combine `text-*` and `leading-*`
classes (#19396)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR improves the canonicalization when using `text-*` and
`leading-*` utilities together.
When using classes such as:
```html
```
Then the canonical way of writing this is:
```html
```
Similarly, if you already have a modifier applied, and add a new
line-height utility. It will also combine them into the canonical form:
```html
```
becomes:
```html
```
This is because the final CSS output of `text-sm/6 leading-7` is:
```css
/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */
.text-sm\/6 {
font-size: var(--text-sm, 0.875rem);
line-height: calc(var(--spacing, 0.25rem) * 6);
}
.leading-7 {
--tw-leading: calc(var(--spacing, 0.25rem) * 7);
line-height: calc(var(--spacing, 0.25rem) * 7);
}
@property --tw-leading {
syntax: "*";
inherits: false;
}
```
Where the `line-height` of the `leading-7` class wins over the
`line-height` of the `text-sm/6` class.
### Implementation
#### On the fly pre-computation
Right now, we are not using any AST based transformations yet and
instead rely on a pre-computed list. However, with arbitrary values we
don't have pre-computed values for `text-sm/123` for example.
What we do instead is if we see a utility that sets `line-height` and
other utilities set `font-size` then we pre-compute those computations
on the fly.
We will prefer named font-sizes (such as `sm`, `lg`, etc). We will also
prefer bare values for line-height (such as `7`) over arbitrary values
(such as `[123px]`).
#### Canonicalization of the CSS AST
Another thing we had to do is to make sure that when multiple
declarations of the same property exist, that we only keep the last one.
In the real world, multiple declarations of the same value is typically
used for fallback values (e.g.: `background-color: #fff;
background-color: oklab(255 255 255 / 1);`).
But for our use case, I believe we can safely remove the earlier
declarations to make the most modern and thus the last declaration win.
#### Trying combinations based on `property` only
One small change we had to make is that we try combinations of utilities
based on property only instead of property _and_ value. This is
important for cases such as `text-sm/6 leading-7`. These 2 classes will
set a `lin-height` of `24px` and `28px` respectively so they will never
match.
However, once combined together, there will be 2 line-height values, and
the last one wins. The signature of `text-sm/6 leading-7` becomes:
```css
.x {
font-size: 14px; /* From text-sm/6 */
line-height: 24px; /* From text-sm/6 */
line-height: 28px; /* From leading-7 */
}
```
↓↓↓↓↓↓↓↓↓
```css
.x {
font-size: 14px; /* From text-sm/6 */
line-height: 28px; /* From leading-7 */
}
```
This now shows that just `text-sm/7` is the canonical form. Because it
produces the same final CSS output.
## Test plan
1. All existing tests pass
2. Added a bunch of new tests where we combine `text-*` and `leading-*`
utilities with named, bare and arbitrary values. Even with existing
modifiers on the text utilities.
---
CHANGELOG.md | 1 +
.../src/canonicalize-candidates.test.ts | 77 ++++++---
.../src/canonicalize-candidates.ts | 151 +++++++++++++-----
packages/tailwindcss/src/cartesian.ts | 45 ++++++
4 files changed, 209 insertions(+), 65 deletions(-)
create mode 100644 packages/tailwindcss/src/cartesian.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e9f52b544..8399fa1c2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improve backwards compatibility for `content` theme key from JS configs ([#19381](https://github.com/tailwindlabs/tailwindcss/pull/19381))
- Upgrade: Handle `future` and `experimental` config keys ([#19344](https://github.com/tailwindlabs/tailwindcss/pull/19344))
- Try to canonicalize any arbitrary utility to a bare value ([#19379](https://github.com/tailwindlabs/tailwindcss/pull/19379))
+- Canonicalization: combine `text-*` and `leading-*` classes ([#19396](https://github.com/tailwindlabs/tailwindcss/pull/19396))
### Added
diff --git a/packages/tailwindcss/src/canonicalize-candidates.test.ts b/packages/tailwindcss/src/canonicalize-candidates.test.ts
index fd5826c4d..b8ca59d67 100644
--- a/packages/tailwindcss/src/canonicalize-candidates.test.ts
+++ b/packages/tailwindcss/src/canonicalize-candidates.test.ts
@@ -2,6 +2,7 @@ import fs from 'node:fs'
import path from 'node:path'
import { describe, expect, test } from 'vitest'
import { __unstable__loadDesignSystem } from '.'
+import { cartesian } from './cartesian'
import type { CanonicalizeOptions } from './intellisense'
import { DefaultMap } from './utils/default-map'
@@ -54,7 +55,7 @@ const DEFAULT_CANONICALIZATION_OPTIONS: CanonicalizeOptions = {
}
describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s', (strategy) => {
- let testName = '`%s` → `%s` (%#)'
+ let testName = '%s → %s (%#)'
if (strategy === 'with-variant') {
testName = testName.replaceAll('%s', 'focus:%s')
} else if (strategy === 'important') {
@@ -1025,37 +1026,69 @@ describe.each([['default'], ['with-variant'], ['important'], ['prefix']])('%s',
})
})
- test.each([
- // 4 to 1
- ['mt-1 mr-1 mb-1 ml-1', 'm-1'],
+ describe('combine to shorthand utilities', () => {
+ test.each([
+ // 4 to 1
+ ['mt-1 mr-1 mb-1 ml-1', 'm-1'],
- // 2 to 1
- ['mt-1 mb-1', 'my-1'],
+ // 2 to 1
+ ['mt-1 mb-1', 'my-1'],
- // Different order as above
- ['mb-1 mt-1', 'my-1'],
+ // Different order as above
+ ['mb-1 mt-1', 'my-1'],
- // To completely different utility
- ['w-4 h-4', 'size-4'],
+ // To completely different utility
+ ['w-4 h-4', 'size-4'],
- // Do not touch if not operating on the same variants
- ['hover:w-4 h-4', 'hover:w-4 h-4'],
+ // Do not touch if not operating on the same variants
+ ['hover:w-4 h-4', 'hover:w-4 h-4'],
- // Arbitrary properties to combined class
- ['[width:_16px_] [height:16px]', 'size-4'],
+ // Arbitrary properties to combined class
+ ['[width:_16px_] [height:16px]', 'size-4'],
- // Arbitrary properties to combined class with modifier
- ['[font-size:14px] [line-height:1.625]', 'text-sm/relaxed'],
- ])(
- 'should canonicalize multiple classes `%s` into a shorthand `%s`',
- { timeout },
- async (candidates, expected) => {
+ // Arbitrary properties to combined class with modifier
+ ['[font-size:14px] [line-height:1.625]', 'text-sm/relaxed'],
+ ])(testName, { timeout }, async (candidates, expected) => {
let input = css`
@import 'tailwindcss';
`
await expectCombinedCanonicalization(input, candidates, expected)
- },
- )
+ })
+ })
+
+ describe('font-size/line-height to text-{x}/{y}', () => {
+ test.each([
+ ...Array.from(
+ cartesian(
+ ['[font-size:14px]', 'text-[14px]', 'text-[14px]/6', 'text-sm', 'text-sm/6'],
+ ['[line-height:28px]', 'leading-[28px]', 'leading-7'],
+ ),
+ ).map((classes) => [classes.join(' ').padEnd(40, ' '), 'text-sm/7']),
+ ...Array.from(
+ cartesian(
+ ['[font-size:15px]', 'text-[15px]', 'text-[15px]/6'],
+ ['[line-height:28px]', 'leading-[28px]', 'leading-7'],
+ ),
+ ).map((classes) => [classes.join(' ').padEnd(40, ' '), 'text-[15px]/7']),
+ ...Array.from(
+ cartesian(
+ ['[font-size:14px]', 'text-[14px]', 'text-[14px]/6', 'text-sm', 'text-sm/6'],
+ ['[line-height:28.5px]', 'leading-[28.5px]'],
+ ),
+ ).map((classes) => [classes.join(' ').padEnd(40, ' '), 'text-sm/[28.5px]']),
+ ...Array.from(
+ cartesian(
+ ['[font-size:15px]', 'text-[15px]', 'text-[15px]/6'],
+ ['[line-height:28.5px]', 'leading-[28.5px]'],
+ ),
+ ).map((classes) => [classes.join(' ').padEnd(40, ' '), 'text-[15px]/[28.5px]']),
+ ])(testName, { timeout }, async (candidates, expected) => {
+ let input = css`
+ @import 'tailwindcss';
+ `
+ await expectCombinedCanonicalization(input, candidates.trim(), expected)
+ })
+ })
})
describe('theme to var', () => {
diff --git a/packages/tailwindcss/src/canonicalize-candidates.ts b/packages/tailwindcss/src/canonicalize-candidates.ts
index 437ec60b4..612129985 100644
--- a/packages/tailwindcss/src/canonicalize-candidates.ts
+++ b/packages/tailwindcss/src/canonicalize-candidates.ts
@@ -107,7 +107,10 @@ interface DesignSystem extends BaseDesignSystem {
}
}
-export function prepareDesignSystemStorage(baseDesignSystem: BaseDesignSystem): DesignSystem {
+export function prepareDesignSystemStorage(
+ baseDesignSystem: BaseDesignSystem,
+ options?: CanonicalizeOptions,
+): DesignSystem {
let designSystem = baseDesignSystem as DesignSystem
designSystem.storage[SIGNATURE_OPTIONS_KEY] ??= createSignatureOptionsCache()
@@ -116,7 +119,7 @@ export function prepareDesignSystemStorage(baseDesignSystem: BaseDesignSystem):
designSystem.storage[CANONICALIZE_VARIANT_KEY] ??= createCanonicalizeVariantCache()
designSystem.storage[CANONICALIZE_UTILITY_KEY] ??= createCanonicalizeUtilityCache()
designSystem.storage[CONVERTER_KEY] ??= createConverterCache(designSystem)
- designSystem.storage[SPACING_KEY] ??= createSpacingCache(designSystem)
+ designSystem.storage[SPACING_KEY] ??= createSpacingCache(designSystem, options)
designSystem.storage[UTILITY_SIGNATURE_KEY] ??= createUtilitySignatureCache(designSystem)
designSystem.storage[STATIC_UTILITIES_KEY] ??= createStaticUtilitiesCache()
designSystem.storage[UTILITY_PROPERTIES_KEY] ??= createUtilityPropertiesCache(designSystem)
@@ -144,7 +147,7 @@ export function createSignatureOptions(
if (options?.collapse) features |= SignatureFeatures.ExpandProperties
if (options?.logicalToPhysical) features |= SignatureFeatures.LogicalToPhysical
- let designSystem = prepareDesignSystemStorage(baseDesignSystem)
+ let designSystem = prepareDesignSystemStorage(baseDesignSystem, options)
return designSystem.storage[SIGNATURE_OPTIONS_KEY].get(options?.rem ?? null).get(features)
}
@@ -255,6 +258,56 @@ function collapseCandidates(options: InternalCanonicalizeOptions, candidates: st
computeUtilitiesPropertiesLookup.get(candidate),
)
+ // Hard-coded optimization: if any candidate sets `line-height` and another
+ // candidate sets `font-size`, we pre-compute the `text-*` utilities with
+ // this line-height to try and collapse to those combined values.
+ if (candidatePropertiesValues.some((x) => x.has('line-height'))) {
+ let fontSizeNames = designSystem.theme.keysInNamespaces(['--text'])
+ if (fontSizeNames.length > 0) {
+ let interestingLineHeights = new Set()
+ let seenLineHeights = new Set()
+ for (let pairs of candidatePropertiesValues) {
+ for (let lineHeight of pairs.get('line-height')) {
+ if (seenLineHeights.has(lineHeight)) continue
+ seenLineHeights.add(lineHeight)
+
+ let bareValue = designSystem.storage[SPACING_KEY]?.get(lineHeight) ?? null
+ if (bareValue !== null) {
+ if (isValidSpacingMultiplier(bareValue)) {
+ interestingLineHeights.add(bareValue)
+
+ for (let name of fontSizeNames) {
+ computeUtilitiesPropertiesLookup.get(`text-${name}/${bareValue}`)
+ }
+ } else {
+ interestingLineHeights.add(lineHeight)
+
+ for (let name of fontSizeNames) {
+ computeUtilitiesPropertiesLookup.get(`text-${name}/[${lineHeight}]`)
+ }
+ }
+ }
+ }
+ }
+
+ let seenFontSizes = new Set()
+ for (let pairs of candidatePropertiesValues) {
+ for (let fontSize of pairs.get('font-size')) {
+ if (seenFontSizes.has(fontSize)) continue
+ seenFontSizes.add(fontSize)
+
+ for (let lineHeight of interestingLineHeights) {
+ if (isValidSpacingMultiplier(lineHeight)) {
+ computeUtilitiesPropertiesLookup.get(`text-[${fontSize}]/${lineHeight}`)
+ } else {
+ computeUtilitiesPropertiesLookup.get(`text-[${fontSize}]/[${lineHeight}]`)
+ }
+ }
+ }
+ }
+ }
+ }
+
// For each property, lookup other utilities that also set this property and
// this exact value. If multiple properties are used, use the intersection of
// each property.
@@ -262,17 +315,20 @@ function collapseCandidates(options: InternalCanonicalizeOptions, candidates: st
// E.g.: `margin-top` → `mt-1`, `my-1`, `m-1`
let otherUtilities = candidatePropertiesValues.map((propertyValues) => {
let result: Set | null = null
- for (let [property, values] of propertyValues) {
- for (let value of values) {
- let otherUtilities = staticUtilities.get(property).get(value)
-
- if (result === null) result = new Set(otherUtilities)
- else result = intersection(result, otherUtilities)
-
- // The moment no other utilities match, we can stop searching because
- // all intersections with an empty set will remain empty.
- if (result!.size === 0) return result!
+ for (let property of propertyValues.keys()) {
+ let otherUtilities = new Set()
+ for (let group of staticUtilities.get(property).values()) {
+ for (let candidate of group) {
+ otherUtilities.add(candidate)
+ }
}
+
+ if (result === null) result = otherUtilities
+ else result = intersection(result, otherUtilities)
+
+ // The moment no other utilities match, we can stop searching because
+ // all intersections with an empty set will remain empty.
+ if (result!.size === 0) return result!
}
return result!
})
@@ -286,11 +342,10 @@ function collapseCandidates(options: InternalCanonicalizeOptions, candidates: st
// E.g.: `mt-1` and `text-red-500` cannot be collapsed because there is no 3rd
// utility with overlapping property/value combinations.
let linked = new DefaultMap>((key) => new Set([key]))
- let otherUtilitiesArray = Array.from(otherUtilities)
- for (let i = 0; i < otherUtilitiesArray.length; i++) {
- let current = otherUtilitiesArray[i]
- for (let j = i + 1; j < otherUtilitiesArray.length; j++) {
- let other = otherUtilitiesArray[j]
+ for (let i = 0; i < otherUtilities.length; i++) {
+ let current = otherUtilities[i]
+ for (let j = i + 1; j < otherUtilities.length; j++) {
+ let other = otherUtilities[j]
for (let property of current) {
if (other.has(property)) {
@@ -881,17 +936,25 @@ function printUnprefixedCandidate(designSystem: DesignSystem, candidate: Candida
const SPACING_KEY = Symbol()
function createSpacingCache(
designSystem: DesignSystem,
+ options?: CanonicalizeOptions,
): DesignSystem['storage'][typeof SPACING_KEY] {
let spacingMultiplier = designSystem.resolveThemeValue('--spacing')
if (spacingMultiplier === undefined) return null
+ spacingMultiplier = constantFoldDeclaration(spacingMultiplier, options?.rem ?? null)
+
let parsed = dimensions.get(spacingMultiplier)
if (!parsed) return null
let [value, unit] = parsed
return new DefaultMap((input) => {
- let parsed = dimensions.get(input)
+ // If we already know that the spacing multiplier is 0, all spacing
+ // multipliers will also be 0. No need to even try and parse/canonicalize
+ // the input value.
+ if (value === 0) return null
+
+ let parsed = dimensions.get(constantFoldDeclaration(input, options?.rem ?? null))
if (!parsed) return null
let [myValue, myUnit] = parsed
@@ -998,30 +1061,12 @@ function arbitraryUtilities(candidate: Candidate, options: InternalCanonicalizeO
candidate.kind === 'functional' &&
candidate.value?.kind === 'arbitrary'
) {
- let spacingMultiplier = designSystem.resolveThemeValue('--spacing')
- if (spacingMultiplier !== undefined) {
- // Canonicalizing the spacing multiplier allows us to handle both
- // `--spacing: 0.25rem` and `--spacing: 4px` values correctly.
- let canonicalizedSpacingMultiplier = constantFoldDeclaration(
- spacingMultiplier,
- options.signatureOptions.rem,
- )
-
- let canonicalizedValue = constantFoldDeclaration(value, options.signatureOptions.rem)
- let valueDimension = dimensions.get(canonicalizedValue)
- let spacingMultiplierDimension = dimensions.get(canonicalizedSpacingMultiplier)
- if (
- valueDimension &&
- spacingMultiplierDimension &&
- valueDimension[1] === spacingMultiplierDimension[1] && // Ensure the units match
- spacingMultiplierDimension[0] !== 0
- ) {
- let bareValue = `${valueDimension[0] / spacingMultiplierDimension[0]}`
- if (isValidSpacingMultiplier(bareValue)) {
- yield Object.assign({}, candidate, {
- value: { kind: 'named', value: bareValue, fraction: null },
- })
- }
+ let bareValue = designSystem.storage[SPACING_KEY]?.get(value) ?? null
+ if (bareValue !== null) {
+ if (isValidSpacingMultiplier(bareValue)) {
+ yield Object.assign({}, candidate, {
+ value: { kind: 'named', value: bareValue, fraction: null },
+ })
}
}
}
@@ -2093,6 +2138,26 @@ function canonicalizeAst(designSystem: DesignSystem, ast: AstNode[], options: Si
},
exit(node) {
if (node.kind === 'rule' || node.kind === 'at-rule') {
+ // Remove declarations that are re-defined again later.
+ //
+ // This could maybe result in unwanted behavior (because similar
+ // properties typically exist for backwards compatibility), but for
+ // signature purposes we can assume that the last declaration wins.
+ if (node.nodes.length > 1) {
+ let seen = new Set()
+ for (let i = node.nodes.length - 1; i >= 0; i--) {
+ let child = node.nodes[i]
+ if (child.kind !== 'declaration') continue
+ if (child.value === undefined) continue
+
+ if (seen.has(child.property)) {
+ node.nodes.splice(i, 1)
+ }
+ seen.add(child.property)
+ }
+ }
+
+ // Sort declarations alphabetically by property name
node.nodes.sort((a, b) => {
if (a.kind !== 'declaration') return 0
if (b.kind !== 'declaration') return 0
diff --git a/packages/tailwindcss/src/cartesian.ts b/packages/tailwindcss/src/cartesian.ts
new file mode 100644
index 000000000..f0f7bbba4
--- /dev/null
+++ b/packages/tailwindcss/src/cartesian.ts
@@ -0,0 +1,45 @@
+type CartesianInput = readonly unknown[][]
+
+type CartesianResult = T extends [
+ infer Head extends unknown[],
+ ...infer Tail extends CartesianInput,
+]
+ ? [Head[number], ...CartesianResult]
+ : []
+
+export function* cartesian(...sets: T): Generator> {
+ let n = sets.length
+ if (n === 0) return
+
+ // If any input set is empty, the Cartesian product is empty.
+ if (sets.some((set) => set.length === 0)) {
+ return
+ }
+
+ // Index lookup
+ let idx = Array(n).fill(0)
+
+ while (true) {
+ // Compute current combination
+ let result = [] as CartesianResult
+ for (let i = 0; i < n; i++) {
+ result[i] = sets[i][idx[i]]
+ }
+ yield result
+
+ // Update index vector
+ let k = n - 1
+ while (k >= 0) {
+ idx[k]++
+ if (idx[k] < sets[k].length) {
+ break
+ }
+ idx[k] = 0
+ k--
+ }
+
+ if (k < 0) {
+ return
+ }
+ }
+}
From 7c69e83e8187e3b6fbd7666513b50b3ad76d1376 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Tue, 2 Dec 2025 07:09:28 -0500
Subject: [PATCH 032/353] =?UTF-8?q?Update=20@playwright/test=201.56.1=20?=
=?UTF-8?q?=E2=86=92=201.57.0=20(minor)=20(#19399)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @playwright/test (1.56.1 → 1.57.0) ·
[Repo](https://github.com/Microsoft/playwright)
Release Notes
Speedboard
In HTML reporter, there's a new tab we call
"Speedboard":
It shows you all your executed tests sorted by
slowness,
and can help you understand where your test suite is taking longer than
expected.
Take a look at yours - maybe you'll find some tests that are spending a
longer time waiting than they should!
Chrome for Testing
Starting with this release, Playwright switches from
Chromium, to using Chrome for
Testing builds. Both headed and headless browsers are subject to
this. Your tests should still be passing after upgrading to Playwright
1.57.
We're expecting no functional changes to come from this
switch. The biggest change is the new icon and title in your
toolbar.
If you still see an unexpected behaviour change, please file
an issue .
On Arm64 Linux, Playwright continues to use Chromium.
Waiting for webserver output
testConfig.webServer
added a wait field. Pass a regular
expression, and Playwright will wait until the webserver logs match
it.
import { defineConfig } from '@playwright/test' ;
export default defineConfig ( {
webServer : {
command : 'npm run
start' ,
wait : {
stdout : '/Listening on
port (?<my_server_port>\\d+)/'
} ,
} ,
} ) ;
If you include a named capture group into the expression,
then Playwright will provide the capture group contents via environment
variables:
import { test , expect } from '@playwright/test' ;
test . use ( { baseUrl : `http://localhost:${ process . env . MY_SERVER_PORT ?? 3000 } ` } ) ;
test ( 'homepage' , async ( { page } ) => {
await page . goto ( '/' ) ;
} ) ;
This is not just useful for capturing varying ports of dev
servers. You can also use it to wait for readiness of a service that
doesn't expose an HTTP readiness check, but instead prints a readiness
message to stdout or stderr.
Breaking Change
After 3 years of being deprecated, we removed Page#accessibility from our API. Please use
other libraries such as Axe if
you need to test page accessibility. See our Node.js guide for
integration with Axe.
New APIs
New property testConfig.tag
adds a tag to all tests in this run. This is useful when using merge-reports .
worker.on('console')
event is emitted when JavaScript within the worker calls one of console
API methods, e.g. console.log or console.dir. worker.waitForEvent()
can be used to wait for it.
locator.description()
returns locator description previously set with locator.describe() ,
and Locator.toString() now uses the
description when available.
New option steps in locator.click()
and locator.dragTo()
that configures the number of mousemove
events emitted while moving the mouse pointer to the target
element.
Network requests issued by Service
Workers are now reported and can be routed through the BrowserContext ,
only in Chromium. You can opt out using the PLAYWRIGHT_DISABLE_SERVICE_WORKER_NETWORK
environment variable.
Console messages from Service Workers are dispatched through worker.on('console') .
You can opt out of this using the PLAYWRIGHT_DISABLE_SERVICE_WORKER_CONSOLE
environment variable.
Browser Versions
Chromium 143.0.7499.4
Mozilla Firefox 142.0.1
WebKit 26.0
Does any of this look wrong? Please
let us know.
Commits
See
the full diff on Github . The new version differs by more commits
than we can show here.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 34 +++++++++++++++++-----------------
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/package.json b/package.json
index 747303a78..1c62d8d3b 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
},
"license": "MIT",
"devDependencies": {
- "@playwright/test": "^1.56.1",
+ "@playwright/test": "^1.57.0",
"@types/node": "catalog:",
"postcss": "8.5.6",
"postcss-import": "^16.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index aed49f994..fe6914c9c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -53,8 +53,8 @@ importers:
.:
devDependencies:
'@playwright/test':
- specifier: ^1.56.1
- version: 1.56.1
+ specifier: ^1.57.0
+ version: 1.57.0
'@types/node':
specifier: 'catalog:'
version: 20.19.1
@@ -481,7 +481,7 @@ importers:
version: 3.3.3
next:
specifier: ^16.0.3
- version: 16.0.3(@babel/core@7.28.4)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.3(@babel/core@7.28.4)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -515,7 +515,7 @@ importers:
dependencies:
next:
specifier: ^16.0.3
- version: 16.0.3(@babel/core@7.28.4)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.3(@babel/core@7.28.4)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -2214,8 +2214,8 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@playwright/test@1.56.1':
- resolution: {integrity: sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==}
+ '@playwright/test@1.57.0':
+ resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==}
engines: {node: '>=18'}
hasBin: true
@@ -3898,13 +3898,13 @@ packages:
pkg-types@1.3.0:
resolution: {integrity: sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==}
- playwright-core@1.56.1:
- resolution: {integrity: sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==}
+ playwright-core@1.57.0:
+ resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==}
engines: {node: '>=18'}
hasBin: true
- playwright@1.56.1:
- resolution: {integrity: sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==}
+ playwright@1.57.0:
+ resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==}
engines: {node: '>=18'}
hasBin: true
@@ -5923,9 +5923,9 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@playwright/test@1.56.1':
+ '@playwright/test@1.57.0':
dependencies:
- playwright: 1.56.1
+ playwright: 1.57.0
'@rolldown/pluginutils@1.0.0-beta.47': {}
@@ -7783,7 +7783,7 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.3(@babel/core@7.28.4)(@playwright/test@1.56.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.3(@babel/core@7.28.4)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
'@next/env': 16.0.3
'@swc/helpers': 0.5.15
@@ -7801,7 +7801,7 @@ snapshots:
'@next/swc-linux-x64-musl': 16.0.3
'@next/swc-win32-arm64-msvc': 16.0.3
'@next/swc-win32-x64-msvc': 16.0.3
- '@playwright/test': 1.56.1
+ '@playwright/test': 1.57.0
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
@@ -7948,11 +7948,11 @@ snapshots:
mlly: 1.7.3
pathe: 1.1.2
- playwright-core@1.56.1: {}
+ playwright-core@1.57.0: {}
- playwright@1.56.1:
+ playwright@1.57.0:
dependencies:
- playwright-core: 1.56.1
+ playwright-core: 1.57.0
optionalDependencies:
fsevents: 2.3.2
From 0d0d97d0cb09f9aaa111c3237c8912166bb09ec0 Mon Sep 17 00:00:00 2001
From: Kirti Gautam
Date: Wed, 3 Dec 2025 01:21:21 +0530
Subject: [PATCH 033/353] Fix invalid template tags in tests (#19400)
Co-authored-by: Jordan Pittman
---
integrations/cli/index.test.ts | 4 ++--
integrations/cli/standalone.test.ts | 7 +++----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/integrations/cli/index.test.ts b/integrations/cli/index.test.ts
index 867d4d777..870a1baec 100644
--- a/integrations/cli/index.test.ts
+++ b/integrations/cli/index.test.ts
@@ -3,7 +3,7 @@ import os from 'node:os'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { describe } from 'vitest'
-import { candidate, css, html, js, json, retryAssertion, test, ts, yaml } from '../utils'
+import { candidate, css, html, js, json, retryAssertion, test, ts, txt, yaml } from '../utils'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
@@ -2591,7 +2591,7 @@ test(
}
}
`,
- 'input.css': css`
+ 'input.css': txt`
.test {
color: red;
*/
diff --git a/integrations/cli/standalone.test.ts b/integrations/cli/standalone.test.ts
index 07b8ebfee..b378535c0 100644
--- a/integrations/cli/standalone.test.ts
+++ b/integrations/cli/standalone.test.ts
@@ -1,6 +1,6 @@
import os from 'node:os'
import path from 'node:path'
-import { candidate, css, html, js, json, test } from '../utils'
+import { candidate, css, html, js, json, test, ts } from '../utils'
const STANDALONE_BINARY = (() => {
switch (os.platform()) {
@@ -122,7 +122,7 @@ test(
})
})
`,
- 'src/plugin.ts': js`
+ 'src/plugin.ts': ts`
import plugin from 'tailwindcss/plugin'
// Make sure all available JS APIs can be imported and used
@@ -132,8 +132,7 @@ test(
import defaultTheme from 'tailwindcss/defaultTheme'
import * as pkg from 'tailwindcss/package.json'
- export interface PluginOptions {
- }
+ export interface PluginOptions {}
export default plugin(function ({ addUtilities }) {
addUtilities({
From 5f107e28224a29df5fd27e7135bffc4398149115 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 2 Dec 2025 18:11:58 -0500
Subject: [PATCH 034/353] Fix typo
---
packages/@tailwindcss-vite/src/index.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/@tailwindcss-vite/src/index.ts b/packages/@tailwindcss-vite/src/index.ts
index 709ab9db0..341c662b1 100644
--- a/packages/@tailwindcss-vite/src/index.ts
+++ b/packages/@tailwindcss-vite/src/index.ts
@@ -287,7 +287,7 @@ class Root {
let inputPath = idToPath(this.id)
function addWatchFile(file: string) {
- // Don't watch the input file since it's already a dependency anc causes
+ // Don't watch the input file since it's already a dependency and causes
// issues with some setups (e.g. Qwik).
if (file === inputPath) {
return
From a5f4644507d98487007a69d6542619d0cd8d6208 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Wed, 3 Dec 2025 15:06:25 -0500
Subject: [PATCH 035/353] Validate named values in candidate parser (#19397)
Fixes
https://github.com/tailwindlabs/tailwindcss-intellisense/issues/1506
---
CHANGELOG.md | 1 +
packages/tailwindcss/src/candidate.test.ts | 7 ++++++-
packages/tailwindcss/src/candidate.ts | 7 +++++++
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8399fa1c2..64577bfd7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improve backwards compatibility for `content` theme key from JS configs ([#19381](https://github.com/tailwindlabs/tailwindcss/pull/19381))
- Upgrade: Handle `future` and `experimental` config keys ([#19344](https://github.com/tailwindlabs/tailwindcss/pull/19344))
- Try to canonicalize any arbitrary utility to a bare value ([#19379](https://github.com/tailwindlabs/tailwindcss/pull/19379))
+- Validate candidates similarly to Oxide ([#19397](https://github.com/tailwindlabs/tailwindcss/pull/19397))
- Canonicalization: combine `text-*` and `leading-*` classes ([#19396](https://github.com/tailwindlabs/tailwindcss/pull/19396))
### Added
diff --git a/packages/tailwindcss/src/candidate.test.ts b/packages/tailwindcss/src/candidate.test.ts
index 53d21dda6..c3bb7b9e8 100644
--- a/packages/tailwindcss/src/candidate.test.ts
+++ b/packages/tailwindcss/src/candidate.test.ts
@@ -1997,7 +1997,12 @@ it.each([
// Arbitrary variant values that end the block
'data-[a]{color:red}foo[a]:flex',
-])('should not parse invalid arbitrary values: %s', (rawCandidate) => {
+
+ // Named values contain invalid characters
+ 'data-foo=bar:flex',
+ 'bg-foo=bar',
+ 'bg-red-500/foo=bar',
+])('should not parse invalid values: %s', (rawCandidate) => {
let utilities = new Utilities()
utilities.static('flex', () => [])
utilities.functional('bg', () => [])
diff --git a/packages/tailwindcss/src/candidate.ts b/packages/tailwindcss/src/candidate.ts
index fa8cd3047..4e79b818e 100644
--- a/packages/tailwindcss/src/candidate.ts
+++ b/packages/tailwindcss/src/candidate.ts
@@ -10,6 +10,7 @@ const COLON = 0x3a
const DASH = 0x2d
const LOWER_A = 0x61
const LOWER_Z = 0x7a
+const IS_VALID_NAMED_VALUE = /^[a-zA-Z0-9_.%-]+$/
export type ArbitraryUtilityValue = {
kind: 'arbitrary'
@@ -596,6 +597,8 @@ export function* parseCandidate(input: string, designSystem: DesignSystem): Iter
? null
: `${value}/${modifierSegment}`
+ if (!IS_VALID_NAMED_VALUE.test(value)) continue
+
candidate.value = {
kind: 'named',
value,
@@ -647,6 +650,8 @@ function parseModifier(modifier: string): CandidateModifier | null {
}
}
+ if (!IS_VALID_NAMED_VALUE.test(modifier)) return null
+
return {
kind: 'named',
value: modifier,
@@ -798,6 +803,8 @@ export function parseVariant(variant: string, designSystem: DesignSystem): Varia
}
}
+ if (!IS_VALID_NAMED_VALUE.test(value)) continue
+
return {
kind: 'functional',
root,
From a92fa97499dd91cbbcc6fc16ec67774644af0665 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Wed, 3 Dec 2025 20:06:08 +0000
Subject: [PATCH 036/353] Update all of nextjs to version 16.0.7
---
playgrounds/nextjs/package.json | 4 +-
playgrounds/v3/package.json | 4 +-
pnpm-lock.yaml | 207 ++++++++++----------------------
3 files changed, 68 insertions(+), 147 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index 32968272b..fc1ddebe4 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -11,7 +11,7 @@
"dependencies": {
"@tailwindcss/postcss": "workspace:^",
"fast-glob": "^3.3.3",
- "next": "^16.0.3",
+ "next": "^16.0.7",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"tailwindcss": "workspace:^"
@@ -21,7 +21,7 @@
"@types/react": "^19.2.6",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.1",
- "eslint-config-next": "^16.0.3",
+ "eslint-config-next": "^16.0.7",
"typescript": "^5.5.4"
}
}
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index d1c31ed61..495fd7bec 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -9,7 +9,7 @@
"upgrade": "node scripts/upgrade.mjs"
},
"dependencies": {
- "next": "^16.0.3",
+ "next": "^16.0.7",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"tailwindcss": "^3"
@@ -20,7 +20,7 @@
"@types/react-dom": "^19.2.3",
"autoprefixer": "^10.4.22",
"eslint": "^9.39.1",
- "eslint-config-next": "^16.0.3",
+ "eslint-config-next": "^16.0.7",
"typescript": "^5.5.4"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fe6914c9c..369c9839f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -480,8 +480,8 @@ importers:
specifier: ^3.3.3
version: 3.3.3
next:
- specifier: ^16.0.3
- version: 16.0.3(@babel/core@7.28.4)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ specifier: ^16.0.7
+ version: 16.0.7(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -505,8 +505,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: ^16.0.3
- version: 16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ specifier: ^16.0.7
+ version: 16.0.7(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -514,8 +514,8 @@ importers:
playgrounds/v3:
dependencies:
next:
- specifier: ^16.0.3
- version: 16.0.3(@babel/core@7.28.4)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ specifier: ^16.0.7
+ version: 16.0.7(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -542,8 +542,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: ^16.0.3
- version: 16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ specifier: ^16.0.7
+ version: 16.0.7(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -593,18 +593,10 @@ packages:
resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==}
engines: {node: '>=6.9.0'}
- '@babel/core@7.28.4':
- resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==}
- engines: {node: '>=6.9.0'}
-
'@babel/core@7.28.5':
resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
engines: {node: '>=6.9.0'}
- '@babel/generator@7.28.3':
- resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==}
- engines: {node: '>=6.9.0'}
-
'@babel/generator@7.28.5':
resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
engines: {node: '>=6.9.0'}
@@ -651,11 +643,6 @@ packages:
resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.28.4':
- resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
'@babel/parser@7.28.5':
resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
engines: {node: '>=6.0.0'}
@@ -677,18 +664,10 @@ packages:
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.28.4':
- resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==}
- engines: {node: '>=6.9.0'}
-
'@babel/traverse@7.28.5':
resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.28.4':
- resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==}
- engines: {node: '>=6.9.0'}
-
'@babel/types@7.28.5':
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
@@ -1857,56 +1836,56 @@ packages:
resolution: {integrity: sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ==}
engines: {node: '>= 10'}
- '@next/env@16.0.3':
- resolution: {integrity: sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ==}
+ '@next/env@16.0.7':
+ resolution: {integrity: sha512-gpaNgUh5nftFKRkRQGnVi5dpcYSKGcZZkQffZ172OrG/XkrnS7UBTQ648YY+8ME92cC4IojpI2LqTC8sTDhAaw==}
- '@next/eslint-plugin-next@16.0.3':
- resolution: {integrity: sha512-6sPWmZetzFWMsz7Dhuxsdmbu3fK+/AxKRtj7OB0/3OZAI2MHB/v2FeYh271LZ9abvnM1WIwWc/5umYjx0jo5sQ==}
+ '@next/eslint-plugin-next@16.0.7':
+ resolution: {integrity: sha512-hFrTNZcMEG+k7qxVxZJq3F32Kms130FAhG8lvw2zkKBgAcNOJIxlljNiCjGygvBshvaGBdf88q2CqWtnqezDHA==}
- '@next/swc-darwin-arm64@16.0.3':
- resolution: {integrity: sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg==}
+ '@next/swc-darwin-arm64@16.0.7':
+ resolution: {integrity: sha512-LlDtCYOEj/rfSnEn/Idi+j1QKHxY9BJFmxx7108A6D8K0SB+bNgfYQATPk/4LqOl4C0Wo3LACg2ie6s7xqMpJg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@16.0.3':
- resolution: {integrity: sha512-i70C4O1VmbTivYdRlk+5lj9xRc2BlK3oUikt3yJeHT1unL4LsNtN7UiOhVanFdc7vDAgZn1tV/9mQwMkWOJvHg==}
+ '@next/swc-darwin-x64@16.0.7':
+ resolution: {integrity: sha512-rtZ7BhnVvO1ICf3QzfW9H3aPz7GhBrnSIMZyr4Qy6boXF0b5E3QLs+cvJmg3PsTCG2M1PBoC+DANUi4wCOKXpA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@16.0.3':
- resolution: {integrity: sha512-O88gCZ95sScwD00mn/AtalyCoykhhlokxH/wi1huFK+rmiP5LAYVs/i2ruk7xST6SuXN4NI5y4Xf5vepb2jf6A==}
+ '@next/swc-linux-arm64-gnu@16.0.7':
+ resolution: {integrity: sha512-mloD5WcPIeIeeZqAIP5c2kdaTa6StwP4/2EGy1mUw8HiexSHGK/jcM7lFuS3u3i2zn+xH9+wXJs6njO7VrAqww==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@16.0.3':
- resolution: {integrity: sha512-CEErFt78S/zYXzFIiv18iQCbRbLgBluS8z1TNDQoyPi8/Jr5qhR3e8XHAIxVxPBjDbEMITprqELVc5KTfFj0gg==}
+ '@next/swc-linux-arm64-musl@16.0.7':
+ resolution: {integrity: sha512-+ksWNrZrthisXuo9gd1XnjHRowCbMtl/YgMpbRvFeDEqEBd523YHPWpBuDjomod88U8Xliw5DHhekBC3EOOd9g==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@16.0.3':
- resolution: {integrity: sha512-Tc3i+nwt6mQ+Dwzcri/WNDj56iWdycGVh5YwwklleClzPzz7UpfaMw1ci7bLl6GRYMXhWDBfe707EXNjKtiswQ==}
+ '@next/swc-linux-x64-gnu@16.0.7':
+ resolution: {integrity: sha512-4WtJU5cRDxpEE44Ana2Xro1284hnyVpBb62lIpU5k85D8xXxatT+rXxBgPkc7C1XwkZMWpK5rXLXTh9PFipWsA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@16.0.3':
- resolution: {integrity: sha512-zTh03Z/5PBBPdTurgEtr6nY0vI9KR9Ifp/jZCcHlODzwVOEKcKRBtQIGrkc7izFgOMuXDEJBmirwpGqdM/ZixA==}
+ '@next/swc-linux-x64-musl@16.0.7':
+ resolution: {integrity: sha512-HYlhqIP6kBPXalW2dbMTSuB4+8fe+j9juyxwfMwCe9kQPPeiyFn7NMjNfoFOfJ2eXkeQsoUGXg+O2SE3m4Qg2w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@16.0.3':
- resolution: {integrity: sha512-Jc1EHxtZovcJcg5zU43X3tuqzl/sS+CmLgjRP28ZT4vk869Ncm2NoF8qSTaL99gh6uOzgM99Shct06pSO6kA6g==}
+ '@next/swc-win32-arm64-msvc@16.0.7':
+ resolution: {integrity: sha512-EviG+43iOoBRZg9deGauXExjRphhuYmIOJ12b9sAPy0eQ6iwcPxfED2asb/s2/yiLYOdm37kPaiZu8uXSYPs0Q==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@16.0.3':
- resolution: {integrity: sha512-N7EJ6zbxgIYpI/sWNzpVKRMbfEGgsWuOIvzkML7wxAAZhPk1Msxuo/JDu1PKjWGrAoOLaZcIX5s+/pF5LIbBBg==}
+ '@next/swc-win32-x64-msvc@16.0.7':
+ resolution: {integrity: sha512-gniPjy55zp5Eg0896qSrf3yB1dw4F/3s8VK1ephdsZZ129j2n6e1WqCbE2YgcKhW9hPB9TVZENugquWJD5x0ug==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -2956,8 +2935,8 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- eslint-config-next@16.0.3:
- resolution: {integrity: sha512-5F6qDjcZldf0Y0ZbqvWvap9xzYUxyDf7/of37aeyhvkrQokj/4bT1JYWZdlWUr283aeVa+s52mPq9ogmGg+5dw==}
+ eslint-config-next@16.0.7:
+ resolution: {integrity: sha512-WubFGLFHfk2KivkdRGfx6cGSFhaQqhERRfyO8BRx+qiGPGp7WLKcPvYC4mdx1z3VhVRcrfFzczjjTrbJZOpnEQ==}
peerDependencies:
eslint: '>=9.0.0'
typescript: '>=3.3.1'
@@ -3714,8 +3693,8 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- next@16.0.3:
- resolution: {integrity: sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w==}
+ next@16.0.7:
+ resolution: {integrity: sha512-3mBRJyPxT4LOxAJI6IsXeFtKfiJUbjCLgvXO02fV8Wy/lIhPvP94Fe7dGhUgHXcQy4sSuYwQNcOLhIfOm0rL0A==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -4672,26 +4651,6 @@ snapshots:
'@babel/compat-data@7.27.5': {}
- '@babel/core@7.28.4':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.3
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4)
- '@babel/helpers': 7.28.4
- '@babel/parser': 7.28.4
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.4
- '@babel/types': 7.28.4
- '@jridgewell/remapping': 2.3.5
- convert-source-map: 2.0.0
- debug: 4.4.3
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
'@babel/core@7.28.5':
dependencies:
'@babel/code-frame': 7.27.1
@@ -4712,14 +4671,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/generator@7.28.3':
- dependencies:
- '@babel/parser': 7.28.4
- '@babel/types': 7.28.4
- '@jridgewell/gen-mapping': 0.3.12
- '@jridgewell/trace-mapping': 0.3.29
- jsesc: 3.1.0
-
'@babel/generator@7.28.5':
dependencies:
'@babel/parser': 7.28.5
@@ -4745,15 +4696,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.28.5
- transitivePeerDependencies:
- - supports-color
-
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
dependencies:
'@babel/core': 7.28.5
@@ -4778,10 +4720,6 @@ snapshots:
'@babel/template': 7.27.2
'@babel/types': 7.28.5
- '@babel/parser@7.28.4':
- dependencies:
- '@babel/types': 7.28.4
-
'@babel/parser@7.28.5':
dependencies:
'@babel/types': 7.28.5
@@ -4802,18 +4740,6 @@ snapshots:
'@babel/parser': 7.28.5
'@babel/types': 7.28.5
- '@babel/traverse@7.28.4':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.3
- '@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.4
- '@babel/template': 7.27.2
- '@babel/types': 7.28.4
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
'@babel/traverse@7.28.5':
dependencies:
'@babel/code-frame': 7.27.1
@@ -4826,11 +4752,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/types@7.28.4':
- dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
-
'@babel/types@7.28.5':
dependencies:
'@babel/helper-string-parser': 7.27.1
@@ -5657,34 +5578,34 @@ snapshots:
'@napi-rs/wasm-tools-win32-ia32-msvc': 1.0.1
'@napi-rs/wasm-tools-win32-x64-msvc': 1.0.1
- '@next/env@16.0.3': {}
+ '@next/env@16.0.7': {}
- '@next/eslint-plugin-next@16.0.3':
+ '@next/eslint-plugin-next@16.0.7':
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@16.0.3':
+ '@next/swc-darwin-arm64@16.0.7':
optional: true
- '@next/swc-darwin-x64@16.0.3':
+ '@next/swc-darwin-x64@16.0.7':
optional: true
- '@next/swc-linux-arm64-gnu@16.0.3':
+ '@next/swc-linux-arm64-gnu@16.0.7':
optional: true
- '@next/swc-linux-arm64-musl@16.0.3':
+ '@next/swc-linux-arm64-musl@16.0.7':
optional: true
- '@next/swc-linux-x64-gnu@16.0.3':
+ '@next/swc-linux-x64-gnu@16.0.7':
optional: true
- '@next/swc-linux-x64-musl@16.0.3':
+ '@next/swc-linux-x64-musl@16.0.7':
optional: true
- '@next/swc-win32-arm64-msvc@16.0.3':
+ '@next/swc-win32-arm64-msvc@16.0.7':
optional: true
- '@next/swc-win32-x64-msvc@16.0.3':
+ '@next/swc-win32-x64-msvc@16.0.7':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -6890,13 +6811,13 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.0.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.0.7(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
- '@next/eslint-plugin-next': 16.0.3
+ '@next/eslint-plugin-next': 16.0.7
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
@@ -6910,9 +6831,9 @@ snapshots:
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.0.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.0.7(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
- '@next/eslint-plugin-next': 16.0.3
+ '@next/eslint-plugin-next': 16.0.7
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
@@ -6950,7 +6871,7 @@ snapshots:
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6997,7 +6918,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7075,8 +6996,8 @@ snapshots:
eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)):
dependencies:
- '@babel/core': 7.28.4
- '@babel/parser': 7.28.4
+ '@babel/core': 7.28.5
+ '@babel/parser': 7.28.5
eslint: 9.39.1(jiti@2.6.1)
hermes-parser: 0.25.1
zod: 4.1.12
@@ -7783,24 +7704,24 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.3(@babel/core@7.28.4)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.7(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
- '@next/env': 16.0.3
+ '@next/env': 16.0.7
'@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001755
postcss: 8.4.31
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.2.0)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.0)
optionalDependencies:
- '@next/swc-darwin-arm64': 16.0.3
- '@next/swc-darwin-x64': 16.0.3
- '@next/swc-linux-arm64-gnu': 16.0.3
- '@next/swc-linux-arm64-musl': 16.0.3
- '@next/swc-linux-x64-gnu': 16.0.3
- '@next/swc-linux-x64-musl': 16.0.3
- '@next/swc-win32-arm64-msvc': 16.0.3
- '@next/swc-win32-x64-msvc': 16.0.3
+ '@next/swc-darwin-arm64': 16.0.7
+ '@next/swc-darwin-x64': 16.0.7
+ '@next/swc-linux-arm64-gnu': 16.0.7
+ '@next/swc-linux-arm64-musl': 16.0.7
+ '@next/swc-linux-x64-gnu': 16.0.7
+ '@next/swc-linux-x64-musl': 16.0.7
+ '@next/swc-win32-arm64-msvc': 16.0.7
+ '@next/swc-win32-x64-msvc': 16.0.7
'@playwright/test': 1.57.0
sharp: 0.34.5
transitivePeerDependencies:
@@ -8389,12 +8310,12 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.2.0):
+ styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.0):
dependencies:
client-only: 0.0.1
react: 19.2.0
optionalDependencies:
- '@babel/core': 7.28.4
+ '@babel/core': 7.28.5
sucrase@3.35.0:
dependencies:
From 9c8cf8ac19dd5e742794d33e249b4f9c69b3fa5c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9s?=
Date: Thu, 4 Dec 2025 14:25:51 +0100
Subject: [PATCH 037/353] Fix formatting of path in README.md (#19407)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
quotation mark is not closed in README doc of the postcss preprocesor
## Test plan
not needed
---
packages/@tailwindcss-postcss/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/@tailwindcss-postcss/README.md b/packages/@tailwindcss-postcss/README.md
index f824c2a06..db2a6b9a0 100644
--- a/packages/@tailwindcss-postcss/README.md
+++ b/packages/@tailwindcss-postcss/README.md
@@ -49,7 +49,7 @@ import tailwindcss from "@tailwindcss/postcss"
export default {
plugins: [
tailwindcss({
- base: path.resolve(__dirname, "./path)
+ base: path.resolve(__dirname, "./path")
})
]
}
From b4f3d177fc1206190fe7cf4522315c5bd14a282e Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Thu, 4 Dec 2025 10:55:11 -0500
Subject: [PATCH 038/353] =?UTF-8?q?Update=20postcss-selector-parser=207.1.?=
=?UTF-8?q?0=20=E2=86=92=207.1.1=20(patch)=20(#19408)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ postcss-selector-parser (7.1.0 → 7.1.1) ·
[Repo](https://github.com/postcss/postcss-selector-parser) ·
[Changelog](https://github.com/postcss/postcss-selector-parser/blob/master/CHANGELOG.md)
Release Notes
7.1.1
perf: replace startsWith with strict equality (#308 )
fix(types): add walkUniversal declaration (#311 )
Does any of this look wrong? Please
let us know.
Commits
See
the full diff on Github . The new version differs by 6 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
packages/@tailwindcss-upgrade/package.json | 2 +-
pnpm-lock.yaml | 28 ++++++++++------------
2 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json
index a1dfb5ee6..9a1db3ce2 100644
--- a/packages/@tailwindcss-upgrade/package.json
+++ b/packages/@tailwindcss-upgrade/package.json
@@ -38,7 +38,7 @@
"picocolors": "^1.1.1",
"postcss": "^8.4.41",
"postcss-import": "^16.1.1",
- "postcss-selector-parser": "^7.1.0",
+ "postcss-selector-parser": "^7.1.1",
"prettier": "catalog:",
"semver": "^7.7.3",
"tailwindcss": "workspace:*",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 369c9839f..533a433ca 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -395,8 +395,8 @@ importers:
specifier: ^16.1.1
version: 16.1.1(postcss@8.4.41)
postcss-selector-parser:
- specifier: ^7.1.0
- version: 7.1.0
+ specifier: ^7.1.1
+ version: 7.1.1
prettier:
specifier: 'catalog:'
version: 3.6.2
@@ -481,7 +481,7 @@ importers:
version: 3.3.3
next:
specifier: ^16.0.7
- version: 16.0.7(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.7(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -515,7 +515,7 @@ importers:
dependencies:
next:
specifier: ^16.0.7
- version: 16.0.7(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.7(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react:
specifier: ^19.2.0
version: 19.2.0
@@ -3953,8 +3953,8 @@ packages:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
- postcss-selector-parser@7.1.0:
- resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==}
+ postcss-selector-parser@7.1.1:
+ resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
engines: {node: '>=4'}
postcss-value-parser@4.2.0:
@@ -6817,7 +6817,7 @@ snapshots:
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
@@ -6871,7 +6871,7 @@ snapshots:
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6918,7 +6918,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7704,7 +7704,7 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.7(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.7(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
'@next/env': 16.0.7
'@swc/helpers': 0.5.15
@@ -7712,7 +7712,7 @@ snapshots:
postcss: 8.4.31
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.0)
+ styled-jsx: 5.1.6(react@19.2.0)
optionalDependencies:
'@next/swc-darwin-arm64': 16.0.7
'@next/swc-darwin-x64': 16.0.7
@@ -7936,7 +7936,7 @@ snapshots:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss-selector-parser@7.1.0:
+ postcss-selector-parser@7.1.1:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
@@ -8310,12 +8310,10 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.0):
+ styled-jsx@5.1.6(react@19.2.0):
dependencies:
client-only: 0.0.1
react: 19.2.0
- optionalDependencies:
- '@babel/core': 7.28.5
sucrase@3.35.0:
dependencies:
From f97d0948137a36e53d9f8a4e624cf5e7b2896ace Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Sat, 6 Dec 2025 08:29:17 -0500
Subject: [PATCH 039/353] =?UTF-8?q?Update=20bun=201.3.2=20=E2=86=92=201.3.?=
=?UTF-8?q?3=20(patch)=20(#19413)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ bun (1.3.2 → 1.3.3) · [Repo](https://github.com/oven-sh/bun)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
packages/@tailwindcss-standalone/package.json | 2 +-
playgrounds/vite/package.json | 2 +-
pnpm-lock.yaml | 104 +++++++++---------
3 files changed, 54 insertions(+), 54 deletions(-)
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index cbe2fabb1..55b6c30ed 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -43,7 +43,7 @@
"@parcel/watcher-linux-x64-musl": "^2.5.1",
"@parcel/watcher-win32-x64": "^2.5.1",
"@types/bun": "^1.3.2",
- "bun": "^1.3.2",
+ "bun": "^1.3.3",
"lightningcss-darwin-arm64": "catalog:",
"lightningcss-darwin-x64": "catalog:",
"lightningcss-linux-arm64-gnu": "catalog:",
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index 9bca1e99d..e4cc4ce7c 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -18,7 +18,7 @@
"devDependencies": {
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.3",
- "bun": "^1.3.2",
+ "bun": "^1.3.3",
"vite": "catalog:"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 533a433ca..97293929d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -335,8 +335,8 @@ importers:
specifier: ^1.3.2
version: 1.3.2(@types/react@19.2.6)
bun:
- specifier: ^1.3.2
- version: 1.3.2
+ specifier: ^1.3.3
+ version: 1.3.3
lightningcss-darwin-arm64:
specifier: 'catalog:'
version: 1.30.2
@@ -573,8 +573,8 @@ importers:
specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.2)
bun:
- specifier: ^1.3.2
- version: 1.3.2
+ specifier: ^1.3.3
+ version: 1.3.3
vite:
specifier: 'catalog:'
version: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
@@ -1964,58 +1964,58 @@ packages:
'@octokit/types@15.0.0':
resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==}
- '@oven/bun-darwin-aarch64@1.3.2':
- resolution: {integrity: sha512-licBDIbbLP5L5/S0+bwtJynso94XD3KyqSP48K59Sq7Mude6C7dR5ZujZm4Ut4BwZqUFfNOfYNMWBU5nlL7t1A==}
+ '@oven/bun-darwin-aarch64@1.3.3':
+ resolution: {integrity: sha512-eJopQrUk0WR7jViYDC29+Rp50xGvs4GtWOXBeqCoFMzutkkO3CZvHehA4JqnjfWMTSS8toqvRhCSOpOz62Wf9w==}
cpu: [arm64]
os: [darwin]
- '@oven/bun-darwin-x64-baseline@1.3.2':
- resolution: {integrity: sha512-UHxdtbyxdtNJUNcXtIrjx3Lmq8ji3KywlXtIHV/0vn9A8W5mulqOcryqUWMFVH9JTIIzmNn6Q/qVmXHTME63Ww==}
+ '@oven/bun-darwin-x64-baseline@1.3.3':
+ resolution: {integrity: sha512-1ij4wQ9ECLFf1XFry+IFUN+28if40ozDqq6+QtuyOhIwraKzXOlAUbILhRMGvM3ED3yBex2mTwlKpA4Vja/V2g==}
cpu: [x64]
os: [darwin]
- '@oven/bun-darwin-x64@1.3.2':
- resolution: {integrity: sha512-hn8lLzsYyyh6ULo2E8v2SqtrWOkdQKJwapeVy1rDw7juTTeHY3KDudGWf4mVYteC9riZU6HD88Fn3nGwyX0eIg==}
+ '@oven/bun-darwin-x64@1.3.3':
+ resolution: {integrity: sha512-xGDePueVFrNgkS+iN0QdEFeRrx2MQ5hQ9ipRFu7N73rgoSSJsFlOKKt2uGZzunczedViIfjYl0ii0K4E9aZ0Ow==}
cpu: [x64]
os: [darwin]
- '@oven/bun-linux-aarch64-musl@1.3.2':
- resolution: {integrity: sha512-OD9DYkjes7WXieBn4zQZGXWhRVZhIEWMDGCetZ3H4vxIuweZ++iul/CNX5jdpNXaJ17myb1ROMvmRbrqW44j3w==}
+ '@oven/bun-linux-aarch64-musl@1.3.3':
+ resolution: {integrity: sha512-XWQ3tV/gtZj0wn2AdSUq/tEOKWT4OY+Uww70EbODgrrq00jxuTfq5nnYP6rkLD0M/T5BHJdQRSfQYdIni9vldw==}
cpu: [arm64]
os: [linux]
- '@oven/bun-linux-aarch64@1.3.2':
- resolution: {integrity: sha512-5uZzxzvHU/z+3cZwN/A0H8G+enQ+9FkeJVZkE2fwK2XhiJZFUGAuWajCpy7GepvOWlqV7VjPaKi2+Qmr4IX7nQ==}
+ '@oven/bun-linux-aarch64@1.3.3':
+ resolution: {integrity: sha512-DabZ3Mt1XcJneWdEEug8l7bCPVvDBRBpjUIpNnRnMFWFnzr8KBEpMcaWTwYOghjXyJdhB4MPKb19MwqyQ+FHAw==}
cpu: [arm64]
os: [linux]
- '@oven/bun-linux-x64-baseline@1.3.2':
- resolution: {integrity: sha512-m9Ov9YH8KjRLui87eNtQQFKVnjGsNk3xgbrR9c8d2FS3NfZSxmVjSeBvEsDjzNf1TXLDriHb/NYOlpiMf/QzDg==}
+ '@oven/bun-linux-x64-baseline@1.3.3':
+ resolution: {integrity: sha512-IU8pxhIf845psOv55LqJyL+tSUc6HHMfs6FGhuJcAnyi92j+B1HjOhnFQh9MW4vjoo7do5F8AerXlvk59RGH2w==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64-musl-baseline@1.3.2':
- resolution: {integrity: sha512-q8Hto8hcpofPJjvuvjuwyYvhOaAzPw1F5vRUUeOJDmDwZ4lZhANFM0rUwchMzfWUJCD6jg8/EVQ8MiixnZWU0A==}
+ '@oven/bun-linux-x64-musl-baseline@1.3.3':
+ resolution: {integrity: sha512-JoRTPdAXRkNYouUlJqEncMWUKn/3DiWP03A7weBbtbsKr787gcdNna2YeyQKCb1lIXE4v1k18RM3gaOpQobGIQ==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64-musl@1.3.2':
- resolution: {integrity: sha512-3TuOsRVoG8K+soQWRo+Cp5ACpRs6rTFSu5tAqc/6WrqwbNWmqjov/eWJPTgz3gPXnC7uNKVG7RxxAmV8r2EYTQ==}
+ '@oven/bun-linux-x64-musl@1.3.3':
+ resolution: {integrity: sha512-xNSDRPn1yyObKteS8fyQogwsS4eCECswHHgaKM+/d4wy/omZQrXn8ZyGm/ZF9B73UfQytUfbhE7nEnrFq03f0w==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64@1.3.2':
- resolution: {integrity: sha512-EoEuRP9bxAxVKuvi6tZ0ZENjueP4lvjz0mKsMzdG0kwg/2apGKiirH1l0RIcdmvfDGGuDmNiv/XBpkoXq1x8ug==}
+ '@oven/bun-linux-x64@1.3.3':
+ resolution: {integrity: sha512-7eIARtKZKZDtah1aCpQUj/1/zT/zHRR063J6oAxZP9AuA547j5B9OM2D/vi/F4En7Gjk9FPjgPGTSYeqpQDzJw==}
cpu: [x64]
os: [linux]
- '@oven/bun-windows-x64-baseline@1.3.2':
- resolution: {integrity: sha512-s00T99MjB+xLOWq+t+wVaVBrry+oBOZNiTJijt+bmkp/MJptYS3FGvs7a+nkjLNzoNDoWQcXgKew6AaHES37Bg==}
+ '@oven/bun-windows-x64-baseline@1.3.3':
+ resolution: {integrity: sha512-u5eZHKq6TPJSE282KyBOicGQ2trkFml0RoUfqkPOJVo7TXGrsGYYzdsugZRnVQY/WEmnxGtBy4T3PAaPqgQViA==}
cpu: [x64]
os: [win32]
- '@oven/bun-windows-x64@1.3.2':
- resolution: {integrity: sha512-nZJUa5NprPYQ4Ii4cMwtP9PzlJJTp1XhxJ+A9eSn1Jfr6YygVWyN2KLjenyI93IcuBouBAaepDAVZZjH2lFBhg==}
+ '@oven/bun-windows-x64@1.3.3':
+ resolution: {integrity: sha512-kWqa1LKvDdAIzyfHxo3zGz3HFWbFHDlrNK77hKjUN42ycikvZJ+SHSX76+1OW4G8wmLETX4Jj+4BM1y01DQRIQ==}
cpu: [x64]
os: [win32]
@@ -2631,8 +2631,8 @@ packages:
peerDependencies:
'@types/react': ^19
- bun@1.3.2:
- resolution: {integrity: sha512-x75mPJiEfhO1j4Tfc65+PtW6ZyrAB6yTZInydnjDZXF9u9PRAnr6OK3v0Q9dpDl0dxRHkXlYvJ8tteJxc8t4Sw==}
+ bun@1.3.3:
+ resolution: {integrity: sha512-2hJ4ocTZ634/Ptph4lysvO+LbbRZq8fzRvMwX0/CqaLBxrF2UB5D1LdMB8qGcdtCer4/VR9Bx5ORub0yn+yzmw==}
cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -3698,7 +3698,7 @@ packages:
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
- '@opentelemetry/api': ^1.1.0
+ '@opentelemetry/api': 1.4.1
'@playwright/test': ^1.51.1
babel-plugin-react-compiler: '*'
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
@@ -5690,37 +5690,37 @@ snapshots:
dependencies:
'@octokit/openapi-types': 26.0.0
- '@oven/bun-darwin-aarch64@1.3.2':
+ '@oven/bun-darwin-aarch64@1.3.3':
optional: true
- '@oven/bun-darwin-x64-baseline@1.3.2':
+ '@oven/bun-darwin-x64-baseline@1.3.3':
optional: true
- '@oven/bun-darwin-x64@1.3.2':
+ '@oven/bun-darwin-x64@1.3.3':
optional: true
- '@oven/bun-linux-aarch64-musl@1.3.2':
+ '@oven/bun-linux-aarch64-musl@1.3.3':
optional: true
- '@oven/bun-linux-aarch64@1.3.2':
+ '@oven/bun-linux-aarch64@1.3.3':
optional: true
- '@oven/bun-linux-x64-baseline@1.3.2':
+ '@oven/bun-linux-x64-baseline@1.3.3':
optional: true
- '@oven/bun-linux-x64-musl-baseline@1.3.2':
+ '@oven/bun-linux-x64-musl-baseline@1.3.3':
optional: true
- '@oven/bun-linux-x64-musl@1.3.2':
+ '@oven/bun-linux-x64-musl@1.3.3':
optional: true
- '@oven/bun-linux-x64@1.3.2':
+ '@oven/bun-linux-x64@1.3.3':
optional: true
- '@oven/bun-windows-x64-baseline@1.3.2':
+ '@oven/bun-windows-x64-baseline@1.3.3':
optional: true
- '@oven/bun-windows-x64@1.3.2':
+ '@oven/bun-windows-x64@1.3.3':
optional: true
'@parcel/watcher-android-arm64@2.5.0':
@@ -6401,19 +6401,19 @@ snapshots:
'@types/node': 20.19.1
'@types/react': 19.2.6
- bun@1.3.2:
+ bun@1.3.3:
optionalDependencies:
- '@oven/bun-darwin-aarch64': 1.3.2
- '@oven/bun-darwin-x64': 1.3.2
- '@oven/bun-darwin-x64-baseline': 1.3.2
- '@oven/bun-linux-aarch64': 1.3.2
- '@oven/bun-linux-aarch64-musl': 1.3.2
- '@oven/bun-linux-x64': 1.3.2
- '@oven/bun-linux-x64-baseline': 1.3.2
- '@oven/bun-linux-x64-musl': 1.3.2
- '@oven/bun-linux-x64-musl-baseline': 1.3.2
- '@oven/bun-windows-x64': 1.3.2
- '@oven/bun-windows-x64-baseline': 1.3.2
+ '@oven/bun-darwin-aarch64': 1.3.3
+ '@oven/bun-darwin-x64': 1.3.3
+ '@oven/bun-darwin-x64-baseline': 1.3.3
+ '@oven/bun-linux-aarch64': 1.3.3
+ '@oven/bun-linux-aarch64-musl': 1.3.3
+ '@oven/bun-linux-x64': 1.3.3
+ '@oven/bun-linux-x64-baseline': 1.3.3
+ '@oven/bun-linux-x64-musl': 1.3.3
+ '@oven/bun-linux-x64-musl-baseline': 1.3.3
+ '@oven/bun-windows-x64': 1.3.3
+ '@oven/bun-windows-x64-baseline': 1.3.3
bundle-require@5.1.0(esbuild@0.27.0):
dependencies:
From 1ee7bb978d32794fa4feeb8aa77520ed389c6790 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Sat, 6 Dec 2025 13:30:31 +0000
Subject: [PATCH 040/353] Update @types/bun to version 1.3.3
---
packages/@tailwindcss-standalone/package.json | 2 +-
pnpm-lock.yaml | 25 ++++++++-----------
2 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index 55b6c30ed..38f84a82e 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -42,7 +42,7 @@
"@parcel/watcher-linux-x64-glibc": "^2.5.1",
"@parcel/watcher-linux-x64-musl": "^2.5.1",
"@parcel/watcher-win32-x64": "^2.5.1",
- "@types/bun": "^1.3.2",
+ "@types/bun": "^1.3.3",
"bun": "^1.3.3",
"lightningcss-darwin-arm64": "catalog:",
"lightningcss-darwin-x64": "catalog:",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 97293929d..25b979bbd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -332,8 +332,8 @@ importers:
specifier: ^2.5.1
version: 2.5.1
'@types/bun':
- specifier: ^1.3.2
- version: 1.3.2(@types/react@19.2.6)
+ specifier: ^1.3.3
+ version: 1.3.3
bun:
specifier: ^1.3.3
version: 1.3.3
@@ -2347,8 +2347,8 @@ packages:
'@types/braces@3.0.5':
resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==}
- '@types/bun@1.3.2':
- resolution: {integrity: sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg==}
+ '@types/bun@1.3.3':
+ resolution: {integrity: sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g==}
'@types/chai@5.2.3':
resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
@@ -2626,10 +2626,8 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
- bun-types@1.3.2:
- resolution: {integrity: sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg==}
- peerDependencies:
- '@types/react': ^19
+ bun-types@1.3.3:
+ resolution: {integrity: sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ==}
bun@1.3.3:
resolution: {integrity: sha512-2hJ4ocTZ634/Ptph4lysvO+LbbRZq8fzRvMwX0/CqaLBxrF2UB5D1LdMB8qGcdtCer4/VR9Bx5ORub0yn+yzmw==}
@@ -3698,7 +3696,7 @@ packages:
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
- '@opentelemetry/api': 1.4.1
+ '@opentelemetry/api': ^1.1.0
'@playwright/test': ^1.51.1
babel-plugin-react-compiler: '*'
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
@@ -5961,11 +5959,9 @@ snapshots:
'@types/braces@3.0.5': {}
- '@types/bun@1.3.2(@types/react@19.2.6)':
+ '@types/bun@1.3.3':
dependencies:
- bun-types: 1.3.2(@types/react@19.2.6)
- transitivePeerDependencies:
- - '@types/react'
+ bun-types: 1.3.3
'@types/chai@5.2.3':
dependencies:
@@ -6396,10 +6392,9 @@ snapshots:
buffer-from@1.1.2:
optional: true
- bun-types@1.3.2(@types/react@19.2.6):
+ bun-types@1.3.3:
dependencies:
'@types/node': 20.19.1
- '@types/react': 19.2.6
bun@1.3.3:
optionalDependencies:
From 563a016f963795f99bae651451d92a93919f4777 Mon Sep 17 00:00:00 2001
From: Adam Royle
Date: Mon, 8 Dec 2025 03:26:22 +1000
Subject: [PATCH 041/353] Only use the last value when parsing duplicate cli
arguments (#19416)
## Summary
When parsing cli args, 'mri' returns an array for duplicate args, which
causes unexpected results. All current arguments assume single values
only. Tailwind v3 works the same way.
## Test plan
Updated tests.
---------
Co-authored-by: Jordan Pittman
---
CHANGELOG.md | 1 +
.../@tailwindcss-cli/src/utils/args.test.ts | 32 +++++++++++++++++++
packages/@tailwindcss-cli/src/utils/args.ts | 12 +++++--
3 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 64577bfd7..035b39c69 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Try to canonicalize any arbitrary utility to a bare value ([#19379](https://github.com/tailwindlabs/tailwindcss/pull/19379))
- Validate candidates similarly to Oxide ([#19397](https://github.com/tailwindlabs/tailwindcss/pull/19397))
- Canonicalization: combine `text-*` and `leading-*` classes ([#19396](https://github.com/tailwindlabs/tailwindcss/pull/19396))
+- Correctly handle duplicate CLI arguments ([#19416](https://github.com/tailwindlabs/tailwindcss/pull/19416))
### Added
diff --git a/packages/@tailwindcss-cli/src/utils/args.test.ts b/packages/@tailwindcss-cli/src/utils/args.test.ts
index 51d2c4747..4ac2e8778 100644
--- a/packages/@tailwindcss-cli/src/utils/args.test.ts
+++ b/packages/@tailwindcss-cli/src/utils/args.test.ts
@@ -17,6 +17,38 @@ it('should be possible to parse a single argument', () => {
`)
})
+it('should only return the last value for duplicate arguments', () => {
+ expect(
+ args(
+ {
+ '--output': { type: 'string', description: 'Output file' },
+ },
+ ['--output', 'output.css', '--output', 'override.css'],
+ ),
+ ).toMatchInlineSnapshot(`
+ {
+ "--output": "override.css",
+ "_": [],
+ }
+ `)
+})
+
+it('uses last value when flag with "-" is supplied multiple times', () => {
+ let result = args(
+ {
+ '--output': { type: 'string', description: 'Output file', alias: '-o' },
+ },
+ ['--output', 'output.css', '--output', '-'],
+ )
+
+ expect(result).toMatchInlineSnapshot(`
+ {
+ "--output": "-",
+ "_": [],
+ }
+ `)
+})
+
it('should fallback to the default value if no flag is passed', () => {
expect(
args(
diff --git a/packages/@tailwindcss-cli/src/utils/args.ts b/packages/@tailwindcss-cli/src/utils/args.ts
index 1306aa2f2..88b306b05 100644
--- a/packages/@tailwindcss-cli/src/utils/args.ts
+++ b/packages/@tailwindcss-cli/src/utils/args.ts
@@ -77,9 +77,17 @@ export function args(options: T, argv = process.argv.slice(
let parsed = parse(argv)
for (let key in parsed) {
- if (parsed[key] === '__IO_DEFAULT_VALUE__') {
- parsed[key] = '-'
+ let value = parsed[key]
+
+ if (key !== '_' && Array.isArray(value)) {
+ value = value[value.length - 1]
}
+
+ if (value === '__IO_DEFAULT_VALUE__') {
+ value = '-'
+ }
+
+ parsed[key] = value
}
let result: { _: string[]; [key: string]: unknown } = {
From 478e9590971b5ca0800f7d3a9ecc92e655fe6659 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Mon, 8 Dec 2025 09:40:16 -0500
Subject: [PATCH 042/353] =?UTF-8?q?Don=E2=80=99t=20emit=20color-mix=20fall?=
=?UTF-8?q?back=20rules=20inside=20`@keyframes`=20(#19419)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes #19417
---
CHANGELOG.md | 1 +
packages/tailwindcss/src/ast.test.ts | 30 ++++++++++++++++++++++++++++
packages/tailwindcss/src/ast.ts | 11 +++++++---
3 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 035b39c69..a62747d10 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Validate candidates similarly to Oxide ([#19397](https://github.com/tailwindlabs/tailwindcss/pull/19397))
- Canonicalization: combine `text-*` and `leading-*` classes ([#19396](https://github.com/tailwindlabs/tailwindcss/pull/19396))
- Correctly handle duplicate CLI arguments ([#19416](https://github.com/tailwindlabs/tailwindcss/pull/19416))
+- Don’t emit color-mix fallback rules inside `@keyframes` ([#19419](https://github.com/tailwindlabs/tailwindcss/pull/19419))
### Added
diff --git a/packages/tailwindcss/src/ast.test.ts b/packages/tailwindcss/src/ast.test.ts
index 63a621c6a..24f31f7bb 100644
--- a/packages/tailwindcss/src/ast.test.ts
+++ b/packages/tailwindcss/src/ast.test.ts
@@ -290,6 +290,36 @@ it('should not emit exact duplicate declarations in the same rule', () => {
`)
})
+it('should not emit color-mix() fallbacks inside @keyframes', () => {
+ let ast = CSS.parse(css`
+ @keyframes my-animation {
+ 0% {
+ color: color-mix(in oklab, var(--color-emerald-600) 0%, transparent);
+ }
+ 100% {
+ color: color-mix(in oklab, var(--color-emerald-600) 0%, transparent);
+ }
+ }
+ `)
+
+ let theme = new Theme()
+ theme.add('--color-emerald-600', 'oklch(59.6% 0.145 163.225)')
+
+ let design = buildDesignSystem(theme)
+
+ expect(toCss(optimizeAst(ast, design))).toMatchInlineSnapshot(`
+ "@keyframes my-animation {
+ 0% {
+ color: color-mix(in oklab, var(--color-emerald-600) 0%, transparent);
+ }
+ 100% {
+ color: color-mix(in oklab, var(--color-emerald-600) 0%, transparent);
+ }
+ }
+ "
+ `)
+})
+
it('should only visit children once when calling `replaceWith` with single element array', () => {
let visited = new Set()
diff --git a/packages/tailwindcss/src/ast.ts b/packages/tailwindcss/src/ast.ts
index 4069268c1..ab0a4fb4d 100644
--- a/packages/tailwindcss/src/ast.ts
+++ b/packages/tailwindcss/src/ast.ts
@@ -275,13 +275,18 @@ export function optimizeAst(
// Track used animation names
if (node.property === 'animation') {
- for (let keyframeName of extractKeyframeNames(node.value))
+ for (let keyframeName of extractKeyframeNames(node.value)) {
usedKeyframeNames.add(keyframeName)
+ }
}
// Create fallback values for usages of the `color-mix(…)` function that reference variables
- // found in the theme config.
- if (polyfills & Polyfills.ColorMix && node.value.includes('color-mix(')) {
+ // found in the theme config.
+ if (
+ polyfills & Polyfills.ColorMix &&
+ node.value.includes('color-mix(') &&
+ !context.keyframes
+ ) {
colorMixDeclarations.get(parent).add(node)
}
From 820d90797cbe00f7bce6345a44aa78dc646b29ac Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Mon, 8 Dec 2025 10:54:42 -0500
Subject: [PATCH 043/353] Expose `candidatesToAst` to the language server
(#19405)
This will be used to improve performance and potentially enable future
features that require generated CSS source locations.
Note: This is still 100% internal API. You can only access this via
`__unstable__loadDesignSystem` for a reason. We may chance the structure
of the arguments and/or return values as needed.
---
packages/tailwindcss/src/design-system.ts | 74 ++++++++++++-------
packages/tailwindcss/src/index.ts | 4 +-
packages/tailwindcss/src/intellisense.test.ts | 25 ++++++-
3 files changed, 73 insertions(+), 30 deletions(-)
diff --git a/packages/tailwindcss/src/design-system.ts b/packages/tailwindcss/src/design-system.ts
index 384746b57..975e59e9a 100644
--- a/packages/tailwindcss/src/design-system.ts
+++ b/packages/tailwindcss/src/design-system.ts
@@ -1,5 +1,5 @@
import { Polyfills } from '.'
-import { optimizeAst, toCss } from './ast'
+import { optimizeAst, toCss, type AstNode } from './ast'
import {
parseCandidate,
parseVariant,
@@ -19,11 +19,13 @@ import {
type VariantEntry,
} from './intellisense'
import { getClassOrder } from './sort'
+import type { SourceLocation } from './source-maps/source'
import { Theme, ThemeOptions, type ThemeKey } from './theme'
import { Utilities, createUtilities, withAlpha } from './utilities'
import { DefaultMap } from './utils/default-map'
import { extractUsedVariables } from './utils/variables'
import { Variants, createVariants, substituteAtVariant } from './variants'
+import { WalkAction, walk } from './walk'
export const enum CompileAstFlags {
None = 0,
@@ -59,12 +61,16 @@ export type DesignSystem = {
// Used by IntelliSense
candidatesToCss(classes: string[]): (string | null)[]
+ candidatesToAst(classes: string[]): AstNode[][]
// General purpose storage
storage: Record
}
-export function buildDesignSystem(theme: Theme): DesignSystem {
+export function buildDesignSystem(
+ theme: Theme,
+ utilitiesSrc?: SourceLocation | undefined,
+): DesignSystem {
let utilities = createUtilities(theme)
let variants = createVariants(theme)
@@ -109,6 +115,44 @@ export function buildDesignSystem(theme: Theme): DesignSystem {
}
})
+ function candidatesToAst(classes: string[]): AstNode[][] {
+ let result: AstNode[][] = []
+
+ for (let className of classes) {
+ let wasValid = true
+
+ let { astNodes } = compileCandidates([className], designSystem, {
+ onInvalidCandidate() {
+ wasValid = false
+ },
+ })
+
+ if (utilitiesSrc) {
+ walk(astNodes, (node) => {
+ // We do this conditionally to preserve source locations from both
+ // `@utility` and `@custom-variant`. Even though generated nodes are
+ // cached this should be fine because `utilitiesNode.src` should not
+ // change without a full rebuild which destroys the cache.
+ node.src ??= utilitiesSrc
+ return WalkAction.Continue
+ })
+ }
+
+ // Disable all polyfills to not unnecessarily pollute IntelliSense output
+ astNodes = optimizeAst(astNodes, designSystem, Polyfills.None)
+
+ result.push(wasValid ? astNodes : [])
+ }
+
+ return result
+ }
+
+ function candidatesToCss(classes: string[]): (string | null)[] {
+ return candidatesToAst(classes).map((nodes) => {
+ return nodes.length > 0 ? toCss(nodes) : null
+ })
+ }
+
let designSystem: DesignSystem = {
theme,
utilities,
@@ -117,30 +161,8 @@ export function buildDesignSystem(theme: Theme): DesignSystem {
invalidCandidates: new Set(),
important: false,
- candidatesToCss(classes: string[]) {
- let result: (string | null)[] = []
-
- for (let className of classes) {
- let wasInvalid = false
-
- let { astNodes } = compileCandidates([className], this, {
- onInvalidCandidate() {
- wasInvalid = true
- },
- })
-
- // Disable all polyfills to not unnecessarily pollute IntelliSense output
- astNodes = optimizeAst(astNodes, designSystem, Polyfills.None)
-
- if (astNodes.length === 0 || wasInvalid) {
- result.push(null)
- } else {
- result.push(toCss(astNodes))
- }
- }
-
- return result
- },
+ candidatesToCss,
+ candidatesToAst,
getClassOrder(classes) {
return getClassOrder(this, classes)
diff --git a/packages/tailwindcss/src/index.ts b/packages/tailwindcss/src/index.ts
index 6cf77bc81..512c2f831 100644
--- a/packages/tailwindcss/src/index.ts
+++ b/packages/tailwindcss/src/index.ts
@@ -595,7 +595,7 @@ async function parseCss(
}
})
- let designSystem = buildDesignSystem(theme)
+ let designSystem = buildDesignSystem(theme, utilitiesNode?.src)
if (important) {
designSystem.important = important
@@ -855,7 +855,7 @@ export async function compile(
}
export async function __unstable__loadDesignSystem(css: string, opts: CompileOptions = {}) {
- let result = await parseCss(CSS.parse(css), opts)
+ let result = await parseCss(CSS.parse(css, { from: opts.from }), opts)
return result.designSystem
}
diff --git a/packages/tailwindcss/src/intellisense.test.ts b/packages/tailwindcss/src/intellisense.test.ts
index ca9830664..e37f05b9c 100644
--- a/packages/tailwindcss/src/intellisense.test.ts
+++ b/packages/tailwindcss/src/intellisense.test.ts
@@ -1,5 +1,6 @@
import { expect, test } from 'vitest'
import { __unstable__loadDesignSystem } from '.'
+import { decl, rule } from './ast'
import plugin from './plugin'
import { ThemeOptions } from './theme'
@@ -165,6 +166,26 @@ test('Can produce CSS per candidate using `candidatesToCss`', async () => {
`)
})
+test('Can produce AST per candidate using `candidatesToAst`', async () => {
+ let design = await loadDesignSystem()
+ design.invalidCandidates = new Set(['bg-[#fff]'])
+
+ expect(
+ design.candidatesToAst(['underline', 'i-dont-exist', 'bg-[#fff]', 'bg-[#000]', 'text-xs']),
+ ).toEqual([
+ [rule('.underline', [decl('text-decoration-line', 'underline')])],
+ [],
+ [],
+ [rule('.bg-\\[\\#000\\]', [decl('background-color', '#000')])],
+ [
+ rule('.text-xs', [
+ decl('font-size', 'var(--text-xs)'),
+ decl('line-height', 'var(--tw-leading, var(--text-xs--line-height))'),
+ ]),
+ ],
+ ])
+})
+
test('Utilities do not show wrapping selector in intellisense', async () => {
let input = css`
@import 'tailwindcss/utilities';
@@ -238,7 +259,7 @@ test('Utilities, when marked as important, show as important in intellisense', a
test('Static utilities from plugins are listed in hovers and completions', async () => {
let input = css`
@import 'tailwindcss/utilities';
- @plugin "./plugin.js"l;
+ @plugin "./plugin.js";
`
let design = await __unstable__loadDesignSystem(input, {
@@ -275,7 +296,7 @@ test('Static utilities from plugins are listed in hovers and completions', async
test('Functional utilities from plugins are listed in hovers and completions', async () => {
let input = css`
@import 'tailwindcss/utilities';
- @plugin "./plugin.js"l;
+ @plugin "./plugin.js";
`
let design = await __unstable__loadDesignSystem(input, {
From cdc851d3f82dda3f0554c3d17307b65edc769181 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Mon, 8 Dec 2025 11:23:20 -0500
Subject: [PATCH 044/353] Don't inline all env vars in Standalone CLI (#19391)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes #19389
We inlined env vars in the Standalone CLI because we use some custom
patches + env vars to ensure that only the appropriate `glibc` / `musl`
binaries are included for Lightning CSS and Parcel Watcher for Linux
builds.
The build happens to run on a macOS Github CI machine though so
`NODE_PATH` was getting inlined as the string:
```
/Users/runner/work/tailwindcss/tailwindcss/node_modules/.pnpm/bun@1.3.0/node_modules/bun/bin/node_modules
```
I don't think there's a reason for `NODE_PATH` to work on the Standalone
CLI (and it didn't work because of the above bug *anyway*) so I've done
a few things here:
1. The build setup now uses `Bun.build(…)` which now supports compiling
binaries. This speeds up the build process a bit.
2. We're no longer inlining all env vars. We selectively inline only a
few using `define`.
3. I've explicitly disabled the extra `NODE_PATH` support in
`@tailwindcss/node` when building with the Standalone CLI.
4. The `__tw_readFile` hack is now gone. Async FS APIs were not
originally able to read embedded files but that changed in Bun v1.2.3
making the hack unnecessary.
5. A few more env vars are now inlined + a plugin to simplify the Oxide
loading code when bundled.
6. A plugin + env vars prevents bundling WASI build as it's not
necessary for the Standalone CLI.
I want to find a way to get rid of `__tw_resolve` and `__tw_load` but
don't want to change too much in this PR so I haven't looked into it
yet.
---
packages/@tailwindcss-node/src/compile.ts | 11 --
.../@tailwindcss-standalone/scripts/build.ts | 151 +++++++++++-------
packages/@tailwindcss-standalone/src/index.ts | 10 --
3 files changed, 90 insertions(+), 82 deletions(-)
diff --git a/packages/@tailwindcss-node/src/compile.ts b/packages/@tailwindcss-node/src/compile.ts
index ac7cc6f15..7eb959d3b 100644
--- a/packages/@tailwindcss-node/src/compile.ts
+++ b/packages/@tailwindcss-node/src/compile.ts
@@ -166,17 +166,6 @@ async function loadStylesheet(
onDependency(resolvedPath)
- if (typeof globalThis.__tw_readFile === 'function') {
- let file = await globalThis.__tw_readFile(resolvedPath, 'utf-8')
- if (file) {
- return {
- path: resolvedPath,
- base: path.dirname(resolvedPath),
- content: file,
- }
- }
- }
-
let file = await fsPromises.readFile(resolvedPath, 'utf-8')
return {
path: resolvedPath,
diff --git a/packages/@tailwindcss-standalone/scripts/build.ts b/packages/@tailwindcss-standalone/scripts/build.ts
index 584175cfd..7ff572d3b 100644
--- a/packages/@tailwindcss-standalone/scripts/build.ts
+++ b/packages/@tailwindcss-standalone/scripts/build.ts
@@ -1,4 +1,3 @@
-import { $ } from 'bun'
import { createHash } from 'node:crypto'
import { mkdir, readFile, writeFile } from 'node:fs/promises'
import * as path from 'node:path'
@@ -6,80 +5,110 @@ import { fileURLToPath } from 'node:url'
const __dirname = fileURLToPath(new URL('.', import.meta.url))
-async function buildForPlatform(triple: string, outfile: string) {
- // We wrap this in a retry because occasionally the atomic rename fails for some reason
- for (let i = 0; i < 5; ++i) {
- try {
- let cmd = $`bun build --compile --target=${triple} ./src/index.ts --outfile=${outfile} --env inline`
+// Workaround for Bun binary downloads failing on Windows CI when
+// USERPROFILE is passed through by Turborepo.
+//
+// Unfortunately, setting this at runtime doesn't appear to work so we have to
+// spawn a new process without the env var.
+if (process.env.NESTED_BUILD !== '1' && process.env.USERPROFILE && process.env.USERPROFILE !== '') {
+ let result = await Bun.$`bun ${fileURLToPath(import.meta.url)}`.env({
+ USERPROFILE: '',
+ NESTED_BUILD: '1',
+ })
- // This env var is used by our patched versions of Lightning CSS and Parcel Watcher to
- // statically bundle the proper binaries for musl vs glibc
- cmd = cmd.env({
- PLATFORM_LIBC: triple.includes('-musl') ? 'musl' : 'glibc',
-
- // Workaround for Bun binary downloads failing on Windows CI when
- // USERPROFILE is passed through by Turborepo.
- USERPROFILE: '',
- })
-
- return await cmd
- } catch (err) {
- if (i < 5) continue
-
- throw new Error(`Failed to build for platform ${triple}`, { cause: err })
- }
- }
+ process.exit(result.exitCode)
}
-async function build(triple: string, file: string) {
- let start = process.hrtime.bigint()
+// We use baseline builds for all x64 platforms to ensure compatibility with
+// older hardware.
+let builds: { target: Bun.Build.Target; name: string }[] = [
+ { name: 'tailwindcss-linux-arm64', target: 'bun-linux-arm64' },
+ { name: 'tailwindcss-linux-arm64-musl', target: 'bun-linux-arm64-musl' },
+ // @ts-expect-error: Either the types are wrong or the runtime needs to be updated
+ // to accept a `-glibc` at the end like the types suggest.
+ { name: 'tailwindcss-linux-x64', target: 'bun-linux-x64-baseline' },
+ { name: 'tailwindcss-linux-x64-musl', target: 'bun-linux-x64-baseline-musl' },
+ { name: 'tailwindcss-macos-arm64', target: 'bun-darwin-arm64' },
+ { name: 'tailwindcss-macos-x64', target: 'bun-darwin-x64-baseline' },
+ { name: 'tailwindcss-windows-x64.exe', target: 'bun-windows-x64-baseline' },
+]
- let outfile = path.resolve(__dirname, `../dist/${file}`)
+let summary: { target: Bun.Build.Target; name: string; sum: string }[] = []
- await buildForPlatform(triple, outfile)
+// Build platform binaries and checksum them.
+let start = process.hrtime.bigint()
+for (let { target, name } of builds) {
+ let outfile = path.resolve(__dirname, `../dist/${name}`)
- await new Promise((resolve) => setTimeout(resolve, 100))
+ let result = await Bun.build({
+ entrypoints: ['./src/index.ts'],
+ target: 'node',
+ minify: {
+ whitespace: false,
+ syntax: true,
+ identifiers: false,
+ keepNames: true,
+ },
+
+ define: {
+ // This ensures only necessary binaries are bundled for linux targets
+ // It reduces binary size since no runtime selection is necessary
+ 'process.env.PLATFORM_LIBC': JSON.stringify(target.includes('-musl') ? 'musl' : 'glibc'),
+
+ // This prevents the WASI build from being bundled with the binary
+ 'process.env.NAPI_RS_FORCE_WASI': JSON.stringify(''),
+
+ // This simplifies the Oxide loading code a small amount
+ 'process.env.NAPI_RS_NATIVE_LIBRARY_PATH': JSON.stringify(''),
+
+ // No need to support additional NODE_PATHs in the standalone build
+ 'process.env.NODE_PATH': JSON.stringify(''),
+ },
+
+ compile: {
+ target,
+ outfile,
+
+ // Disable .env loading
+ autoloadDotenv: false,
+
+ // Disable bunfig.toml loading
+ autoloadBunfig: false,
+ },
+
+ plugins: [
+ {
+ name: 'tailwindcss-plugin',
+ setup(build) {
+ build.onLoad({ filter: /tailwindcss-oxide\.wasi\.cjs$/ }, async (args) => {
+ return { contents: '' }
+ })
+ },
+ },
+ ],
+ })
+
+ let entry = result.outputs.find((output) => output.kind === 'entry-point')
+ if (!entry) throw new Error(`Build failed for ${target}`)
let content = await readFile(outfile)
- let sum = createHash('sha256').update(content).digest('hex')
- let elapsed = process.hrtime.bigint() - start
-
- return {
- triple,
- file,
- sum,
- elapsed,
- }
+ summary.push({
+ target,
+ name,
+ sum: createHash('sha256').update(content).digest('hex'),
+ })
}
await mkdir(path.resolve(__dirname, '../dist'), { recursive: true })
-// Build platform binaries and checksum them. We use baseline builds for all x64 platforms to ensure
-// compatibility with older hardware.
-let results = await Promise.all([
- build('bun-linux-arm64', './tailwindcss-linux-arm64'),
- build('bun-linux-arm64-musl', './tailwindcss-linux-arm64-musl'),
-
- build('bun-linux-x64-baseline', './tailwindcss-linux-x64'),
- build('bun-linux-x64-musl-baseline', './tailwindcss-linux-x64-musl'),
-
- build('bun-darwin-arm64', './tailwindcss-macos-arm64'),
- build('bun-darwin-x64-baseline', './tailwindcss-macos-x64'),
-
- build('bun-windows-x64-baseline', './tailwindcss-windows-x64.exe'),
-])
-
// Write the checksums to a file
let sumsFile = path.resolve(__dirname, '../dist/sha256sums.txt')
-let sums = results.map(({ file, sum }) => `${sum} ${file}`)
-
-console.table(
- results.map(({ triple, sum, elapsed }) => ({
- triple,
- sum,
- elapsed: `${(Number(elapsed) / 1e6).toFixed(0)}ms`,
- })),
-)
+let sums = summary.map(({ name, sum }) => `${sum} ./${name}`)
await writeFile(sumsFile, sums.join('\n') + '\n')
+
+console.table(summary.map(({ target, sum }) => ({ target, sum })))
+
+let elapsed = process.hrtime.bigint() - start
+console.log(`Build completed in ${(Number(elapsed) / 1e6).toFixed(0)}ms`)
diff --git a/packages/@tailwindcss-standalone/src/index.ts b/packages/@tailwindcss-standalone/src/index.ts
index be85729bb..ce6ba84d1 100644
--- a/packages/@tailwindcss-standalone/src/index.ts
+++ b/packages/@tailwindcss-standalone/src/index.ts
@@ -1,4 +1,3 @@
-import fs from 'node:fs'
import { createRequire } from 'node:module'
import packageJson from 'tailwindcss/package.json'
@@ -61,15 +60,6 @@ globalThis.__tw_load = async (id) => {
}
}
globalThis.__tw_version = packageJson.version
-globalThis.__tw_readFile = async (path, encoding) => {
- // When reading a file from the `$bunfs`, we need to use the synchronous
- // `readFileSync` API
- let isEmbeddedFileBase = path.includes('/$bunfs/root') || path.includes(':/~BUN/root')
- if (!isEmbeddedFileBase) {
- return
- }
- return fs.readFileSync(path, encoding)
-}
// We use a plugin to make sure that the JS APIs are bundled with the standalone
// CLI and can be imported inside configs and plugins
From 164194de06350d2e9b7e8ed1240c6ab21f5603ba Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Mon, 8 Dec 2025 17:04:51 -0500
Subject: [PATCH 045/353] =?UTF-8?q?Don=E2=80=99t=20try=20reading=20from=20?=
=?UTF-8?q?pipes=20or=20special=20file=20descriptors=20(#19421)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes #19420
---
CHANGELOG.md | 1 +
.../src/commands/build/utils.ts | 17 +++++++++++++----
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a62747d10..2dc2c8629 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Canonicalization: combine `text-*` and `leading-*` classes ([#19396](https://github.com/tailwindlabs/tailwindcss/pull/19396))
- Correctly handle duplicate CLI arguments ([#19416](https://github.com/tailwindlabs/tailwindcss/pull/19416))
- Don’t emit color-mix fallback rules inside `@keyframes` ([#19419](https://github.com/tailwindlabs/tailwindcss/pull/19419))
+- CLI: Don't hang when output is `/dev/stdout` ([#19421](https://github.com/tailwindlabs/tailwindcss/pull/19421))
### Added
diff --git a/packages/@tailwindcss-cli/src/commands/build/utils.ts b/packages/@tailwindcss-cli/src/commands/build/utils.ts
index b41a74358..ecdd96726 100644
--- a/packages/@tailwindcss-cli/src/commands/build/utils.ts
+++ b/packages/@tailwindcss-cli/src/commands/build/utils.ts
@@ -13,10 +13,19 @@ export function drainStdin() {
}
export async function outputFile(file: string, contents: string) {
- try {
- let currentContents = await fs.readFile(file, 'utf8')
- if (currentContents === contents) return // Skip writing the file
- } catch {}
+ // Check for special files like `/dev/stdout` or pipes. We don't want to read from these as that
+ // will hang the process until the file descriptors are closed.
+ let isSpecialFile = await fs
+ .stat(file)
+ .then((stats) => stats.isCharacterDevice() || stats.isFIFO())
+ .catch(() => false)
+
+ if (!isSpecialFile) {
+ try {
+ let currentContents = await fs.readFile(file, 'utf8')
+ if (currentContents === contents) return // Skip writing the file
+ } catch {}
+ }
// Ensure the parent directories exist
await fs.mkdir(path.dirname(file), { recursive: true })
From 90abc940524b18f9a7ab48763b555f9ac1157364 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Tue, 9 Dec 2025 05:36:53 -0500
Subject: [PATCH 046/353] =?UTF-8?q?Update=20@napi-rs/wasm-runtime=201.0.7?=
=?UTF-8?q?=20=E2=86=92=201.1.0=20(minor)=20(#19424)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @napi-rs/wasm-runtime (1.0.7 → 1.1.0) ·
[Repo](https://github.com/napi-rs/napi-rs)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
crates/node/npm/wasm32-wasi/package.json | 2 +-
crates/node/package.json | 2 +-
pnpm-lock.yaml | 41 ++++++++----------------
3 files changed, 15 insertions(+), 30 deletions(-)
diff --git a/crates/node/npm/wasm32-wasi/package.json b/crates/node/npm/wasm32-wasi/package.json
index e7c1184f3..c962d630e 100644
--- a/crates/node/npm/wasm32-wasi/package.json
+++ b/crates/node/npm/wasm32-wasi/package.json
@@ -27,7 +27,7 @@
},
"browser": "tailwindcss-oxide.wasi-browser.js",
"dependencies": {
- "@napi-rs/wasm-runtime": "^1.0.7",
+ "@napi-rs/wasm-runtime": "^1.1.0",
"@emnapi/core": "^1.7.1",
"@emnapi/runtime": "^1.7.1",
"@tybys/wasm-util": "^0.10.1",
diff --git a/crates/node/package.json b/crates/node/package.json
index 037d0c354..b03359479 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -34,7 +34,7 @@
"license": "MIT",
"devDependencies": {
"@napi-rs/cli": "^3.4.1",
- "@napi-rs/wasm-runtime": "^1.0.7",
+ "@napi-rs/wasm-runtime": "^1.1.0",
"emnapi": "1.7.1"
},
"engines": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 25b979bbd..b5770be1c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -129,8 +129,8 @@ importers:
specifier: ^3.4.1
version: 3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
- specifier: ^1.0.7
- version: 1.0.7
+ specifier: ^1.1.0
+ version: 1.1.0
emnapi:
specifier: 1.7.1
version: 1.7.1(node-addon-api@8.3.0)
@@ -167,8 +167,8 @@ importers:
specifier: ^1.1.0
version: 1.1.0
'@napi-rs/wasm-runtime':
- specifier: ^1.0.7
- version: 1.0.7
+ specifier: ^1.1.0
+ version: 1.1.0
'@tybys/wasm-util':
specifier: ^0.10.1
version: 0.10.1
@@ -672,15 +672,9 @@ packages:
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
- '@emnapi/core@1.5.0':
- resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==}
-
'@emnapi/core@1.7.1':
resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
- '@emnapi/runtime@1.5.0':
- resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
-
'@emnapi/runtime@1.7.1':
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
@@ -1752,8 +1746,8 @@ packages:
resolution: {integrity: sha512-7cmzIu+Vbupriudo7UudoMRH2OA3cTw67vva8MxeoAe5S7vPFI7z0vp0pMXiA25S8IUJefImQ90FeJjl8fjEaQ==}
engines: {node: '>= 10'}
- '@napi-rs/wasm-runtime@1.0.7':
- resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==}
+ '@napi-rs/wasm-runtime@1.1.0':
+ resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==}
'@napi-rs/wasm-tools-android-arm-eabi@1.0.1':
resolution: {integrity: sha512-lr07E/l571Gft5v4aA1dI8koJEmF1F0UigBbsqg9OWNzg80H3lDPO+auv85y3T/NHE3GirDk7x/D3sLO57vayw==}
@@ -3696,7 +3690,7 @@ packages:
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
- '@opentelemetry/api': ^1.1.0
+ '@opentelemetry/api': 1.4.1
'@playwright/test': ^1.51.1
babel-plugin-react-compiler: '*'
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
@@ -4755,20 +4749,11 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
- '@emnapi/core@1.5.0':
- dependencies:
- '@emnapi/wasi-threads': 1.1.0
- tslib: 2.8.1
-
'@emnapi/core@1.7.1':
dependencies:
'@emnapi/wasi-threads': 1.1.0
tslib: 2.8.1
- '@emnapi/runtime@1.5.0':
- dependencies:
- tslib: 2.8.1
-
'@emnapi/runtime@1.7.1':
dependencies:
tslib: 2.8.1
@@ -5412,7 +5397,7 @@ snapshots:
'@napi-rs/lzma-wasm32-wasi@1.4.5':
dependencies:
- '@napi-rs/wasm-runtime': 1.0.7
+ '@napi-rs/wasm-runtime': 1.1.0
optional: true
'@napi-rs/lzma-win32-arm64-msvc@1.4.5':
@@ -5482,7 +5467,7 @@ snapshots:
'@napi-rs/tar-wasm32-wasi@1.1.0':
dependencies:
- '@napi-rs/wasm-runtime': 1.0.7
+ '@napi-rs/wasm-runtime': 1.1.0
optional: true
'@napi-rs/tar-win32-arm64-msvc@1.1.0':
@@ -5513,10 +5498,10 @@ snapshots:
'@napi-rs/tar-win32-ia32-msvc': 1.1.0
'@napi-rs/tar-win32-x64-msvc': 1.1.0
- '@napi-rs/wasm-runtime@1.0.7':
+ '@napi-rs/wasm-runtime@1.1.0':
dependencies:
- '@emnapi/core': 1.5.0
- '@emnapi/runtime': 1.5.0
+ '@emnapi/core': 1.7.1
+ '@emnapi/runtime': 1.7.1
'@tybys/wasm-util': 0.10.1
'@napi-rs/wasm-tools-android-arm-eabi@1.0.1':
@@ -5548,7 +5533,7 @@ snapshots:
'@napi-rs/wasm-tools-wasm32-wasi@1.0.1':
dependencies:
- '@napi-rs/wasm-runtime': 1.0.7
+ '@napi-rs/wasm-runtime': 1.1.0
optional: true
'@napi-rs/wasm-tools-win32-arm64-msvc@1.0.1':
From 3a1df5a283308ca3079aa204a818c4de57e2b78d Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Tue, 9 Dec 2025 10:40:36 +0000
Subject: [PATCH 047/353] Update @napi-rs/cli to version 3.5.0
---
crates/node/package.json | 2 +-
pnpm-lock.yaml | 428 ++++++++++++++++++++-------------------
2 files changed, 216 insertions(+), 214 deletions(-)
diff --git a/crates/node/package.json b/crates/node/package.json
index b03359479..e35d33668 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -33,7 +33,7 @@
},
"license": "MIT",
"devDependencies": {
- "@napi-rs/cli": "^3.4.1",
+ "@napi-rs/cli": "^3.5.0",
"@napi-rs/wasm-runtime": "^1.1.0",
"emnapi": "1.7.1"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b5770be1c..18eabb08e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -126,8 +126,8 @@ importers:
version: link:npm/win32-x64-msvc
devDependencies:
'@napi-rs/cli':
- specifier: ^3.4.1
- version: 3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
+ specifier: ^3.5.0
+ version: 3.5.0(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
specifier: ^1.1.0
version: 1.1.0
@@ -1326,134 +1326,134 @@ packages:
cpu: [x64]
os: [win32]
- '@inquirer/ansi@1.0.0':
- resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==}
- engines: {node: '>=18'}
+ '@inquirer/ansi@2.0.2':
+ resolution: {integrity: sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
- '@inquirer/checkbox@4.2.4':
- resolution: {integrity: sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==}
- engines: {node: '>=18'}
+ '@inquirer/checkbox@5.0.2':
+ resolution: {integrity: sha512-iTPV4tMMct7iOpwer5qmTP7gjnk1VQJjsNfAaC2b8Q3qiuHM3K2yjjDr5u1MKfkrvp2JD4Flf8sIPpF21pmZmw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/confirm@5.1.18':
- resolution: {integrity: sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==}
- engines: {node: '>=18'}
+ '@inquirer/confirm@6.0.2':
+ resolution: {integrity: sha512-A0/13Wyi+8iFeNDX6D4zZYKPoBLIEbE4K/219qHcnpXMer2weWvaTo63+2c7mQPPA206DEMSYVOPnEw3meOlCw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/core@10.2.2':
- resolution: {integrity: sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==}
- engines: {node: '>=18'}
+ '@inquirer/core@11.0.2':
+ resolution: {integrity: sha512-lgMRx/n02ciiNELBvFLHtmcjbV5tf5D/I0UYfCg2YbTZWmBZ10/niLd3IjWBxz8LtM27xP+4oLEa06Slmb7p7A==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/editor@4.2.20':
- resolution: {integrity: sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==}
- engines: {node: '>=18'}
+ '@inquirer/editor@5.0.2':
+ resolution: {integrity: sha512-pXQ4Nf0qmFcJuYB6NlcIIxH6l6zKOwNg1Jh/ZRdKd2dTqBB4OXKUFbFwR2K4LVXVtq15ZFFatBVT+rerYR8hWQ==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/expand@4.0.20':
- resolution: {integrity: sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==}
- engines: {node: '>=18'}
+ '@inquirer/expand@5.0.2':
+ resolution: {integrity: sha512-siFG1swxfjFIOxIcehtZkh+KUNB/YCpyfHNEGu+nC/SBXIbgUWibvThLn/WesSxLRGOeSKdNKoTm+GQCKFm6Ww==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/external-editor@1.0.2':
- resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==}
- engines: {node: '>=18'}
+ '@inquirer/external-editor@2.0.2':
+ resolution: {integrity: sha512-X/fMXK7vXomRWEex1j8mnj7s1mpnTeP4CO/h2gysJhHLT2WjBnLv4ZQEGpm/kcYI8QfLZ2fgW+9kTKD+jeopLg==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/figures@1.0.13':
- resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==}
- engines: {node: '>=18'}
+ '@inquirer/figures@2.0.2':
+ resolution: {integrity: sha512-qXm6EVvQx/FmnSrCWCIGtMHwqeLgxABP8XgcaAoywsL0NFga9gD5kfG0gXiv80GjK9Hsoz4pgGwF/+CjygyV9A==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
- '@inquirer/input@4.2.4':
- resolution: {integrity: sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==}
- engines: {node: '>=18'}
+ '@inquirer/input@5.0.2':
+ resolution: {integrity: sha512-hN2YRo1QiEc9lD3mK+CPnTS4TK2RhCMmMmP4nCWwTkmQL2vx9jPJWYk+rbUZpwR1D583ZJk1FI3i9JZXIpi/qg==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/number@3.0.20':
- resolution: {integrity: sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==}
- engines: {node: '>=18'}
+ '@inquirer/number@4.0.2':
+ resolution: {integrity: sha512-4McnjTSYrlthNW1ojkkmP75WLRYhQs7GXm6pDDoIrHqJuV5uUYwfdbB0geHdaKMarAqJQgoOVjzIT0jdWCsKew==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/password@4.0.20':
- resolution: {integrity: sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==}
- engines: {node: '>=18'}
+ '@inquirer/password@5.0.2':
+ resolution: {integrity: sha512-oSDziMKiw4G2e4zS+0JRfxuPFFGh6N/9yUaluMgEHp2/Yyj2JGwfDO7XbwtOrxVrz+XsP/iaGyWXdQb9d8A0+g==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/prompts@7.8.6':
- resolution: {integrity: sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==}
- engines: {node: '>=18'}
+ '@inquirer/prompts@8.0.2':
+ resolution: {integrity: sha512-2zK5zY48fZcl6+gG4eqOC/UzZsJckHCRvjXoLuW4D8LKOCVGdcJiSKkLnumSZjR/6PXPINDGOrGHqNxb+sxJDg==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/rawlist@4.1.8':
- resolution: {integrity: sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==}
- engines: {node: '>=18'}
+ '@inquirer/rawlist@5.0.2':
+ resolution: {integrity: sha512-AcNALEdQKUQDeJcpC1a3YC53m1MLv+sMUS+vRZ8Qigs1Yg3Dcdtmi82rscJplogKOY8CXkKW4wvVwHS2ZjCIBQ==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/search@3.1.3':
- resolution: {integrity: sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==}
- engines: {node: '>=18'}
+ '@inquirer/search@4.0.2':
+ resolution: {integrity: sha512-hg63w5toohdzE65S3LiGhdfIL0kT+yisbZARf7zw65PvyMUTutTN3eMAvD/B6y/25z88vTrB7kSB45Vz5CbrXg==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/select@4.3.4':
- resolution: {integrity: sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==}
- engines: {node: '>=18'}
+ '@inquirer/select@5.0.2':
+ resolution: {integrity: sha512-JygTohvQxSNnvt7IKANVlg/eds+yN5sLRilYeGc4ri/9Aqi/2QPoXBMV5Cz/L1VtQv63SnTbPXJZeCK2pSwsOA==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/type@3.0.8':
- resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==}
- engines: {node: '>=18'}
+ '@inquirer/type@4.0.2':
+ resolution: {integrity: sha512-cae7mzluplsjSdgFA6ACLygb5jC8alO0UUnFPyu0E7tNRPrL+q/f8VcSXp+cjZQ7l5CMpDpi2G1+IQvkOiL1Lw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@@ -1497,12 +1497,12 @@ packages:
'@jridgewell/trace-mapping@0.3.29':
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
- '@napi-rs/cli@3.4.1':
- resolution: {integrity: sha512-ayhm+NfrP5Hmh7vy5pfyYm/ktYtLh2PrgdLuqHTAubO7RoO2JkUE4F991AtgYxNewwXI8+guZLxU8itV7QnDrQ==}
+ '@napi-rs/cli@3.5.0':
+ resolution: {integrity: sha512-bJsDvAa9qK9VMkFhr780XWfQlK+GDlAX8qpK20buSmA0ld6nxCtiZ5a0J45zbd0FWT+VTZE1/u8VPH2vLfnVvw==}
engines: {node: '>= 16'}
hasBin: true
peerDependencies:
- '@emnapi/runtime': ^1.5.0
+ '@emnapi/runtime': ^1.7.1
peerDependenciesMeta:
'@emnapi/runtime':
optional: true
@@ -1904,26 +1904,23 @@ packages:
resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==}
engines: {node: '>= 20'}
- '@octokit/core@7.0.4':
- resolution: {integrity: sha512-jOT8V1Ba5BdC79sKrRWDdMT5l1R+XNHTPR6CPWzUP2EcfAcvIHZWF0eAbmRcpOOP5gVIwnqNg0C4nvh6Abc3OA==}
+ '@octokit/core@7.0.6':
+ resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==}
engines: {node: '>= 20'}
- '@octokit/endpoint@11.0.0':
- resolution: {integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==}
+ '@octokit/endpoint@11.0.2':
+ resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==}
engines: {node: '>= 20'}
- '@octokit/graphql@9.0.1':
- resolution: {integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==}
+ '@octokit/graphql@9.0.3':
+ resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==}
engines: {node: '>= 20'}
- '@octokit/openapi-types@25.1.0':
- resolution: {integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==}
+ '@octokit/openapi-types@27.0.0':
+ resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==}
- '@octokit/openapi-types@26.0.0':
- resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==}
-
- '@octokit/plugin-paginate-rest@13.1.1':
- resolution: {integrity: sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==}
+ '@octokit/plugin-paginate-rest@14.0.0':
+ resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==}
engines: {node: '>= 20'}
peerDependencies:
'@octokit/core': '>=6'
@@ -1934,29 +1931,26 @@ packages:
peerDependencies:
'@octokit/core': '>=6'
- '@octokit/plugin-rest-endpoint-methods@16.1.0':
- resolution: {integrity: sha512-nCsyiKoGRnhH5LkH8hJEZb9swpqOcsW+VXv1QoyUNQXJeVODG4+xM6UICEqyqe9XFr6LkL8BIiFCPev8zMDXPw==}
+ '@octokit/plugin-rest-endpoint-methods@17.0.0':
+ resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==}
engines: {node: '>= 20'}
peerDependencies:
'@octokit/core': '>=6'
- '@octokit/request-error@7.0.0':
- resolution: {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==}
+ '@octokit/request-error@7.1.0':
+ resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==}
engines: {node: '>= 20'}
- '@octokit/request@10.0.3':
- resolution: {integrity: sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA==}
+ '@octokit/request@10.0.7':
+ resolution: {integrity: sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==}
engines: {node: '>= 20'}
- '@octokit/rest@22.0.0':
- resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==}
+ '@octokit/rest@22.0.1':
+ resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==}
engines: {node: '>= 20'}
- '@octokit/types@14.1.0':
- resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==}
-
- '@octokit/types@15.0.0':
- resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==}
+ '@octokit/types@16.0.0':
+ resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==}
'@oven/bun-darwin-aarch64@1.3.3':
resolution: {integrity: sha512-eJopQrUk0WR7jViYDC29+Rp50xGvs4GtWOXBeqCoFMzutkkO3CZvHehA4JqnjfWMTSS8toqvRhCSOpOz62Wf9w==}
@@ -2670,8 +2664,8 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
- chardet@2.1.0:
- resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==}
+ chardet@2.1.1:
+ resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
@@ -2856,6 +2850,9 @@ packages:
node-addon-api:
optional: true
+ emoji-regex@10.6.0:
+ resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
+
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -2901,8 +2898,8 @@ packages:
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
- es-toolkit@1.39.10:
- resolution: {integrity: sha512-E0iGnTtbDhkeczB0T+mxmoVlT4YNweEKBLq7oaU4p11mecdsZpNWOglI4895Vh4usbQ+LsJiuLuI2L0Vdmfm2w==}
+ es-toolkit@1.42.0:
+ resolution: {integrity: sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA==}
esbuild@0.23.1:
resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
@@ -3155,6 +3152,10 @@ packages:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
+ get-east-asian-width@1.4.0:
+ resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
+ engines: {node: '>=18'}
+
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -3665,9 +3666,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- mute-stream@2.0.0:
- resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
- engines: {node: ^18.17.0 || >=20.5.0}
+ mute-stream@3.0.0:
+ resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==}
+ engines: {node: ^20.17.0 || >=22.9.0}
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
@@ -3783,6 +3784,9 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
onetime@6.0.0:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
@@ -4183,6 +4187,10 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
+ string-width@7.2.0:
+ resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+ engines: {node: '>=18'}
+
string.prototype.includes@2.0.1:
resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
engines: {node: '>= 0.4'}
@@ -4594,10 +4602,6 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- wrap-ansi@6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
- engines: {node: '>=8'}
-
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -4606,6 +4610,10 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
+ wrap-ansi@9.0.2:
+ resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
+ engines: {node: '>=18'}
+
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -4618,10 +4626,6 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- yoctocolors-cjs@2.1.2:
- resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
- engines: {node: '>=18'}
-
zod-validation-error@4.0.2:
resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
@@ -5143,128 +5147,122 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
- '@inquirer/ansi@1.0.0': {}
+ '@inquirer/ansi@2.0.2': {}
- '@inquirer/checkbox@4.2.4(@types/node@20.19.1)':
+ '@inquirer/checkbox@5.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/ansi': 2.0.2
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/figures': 2.0.2
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/confirm@5.1.18(@types/node@20.19.1)':
+ '@inquirer/confirm@6.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/core@10.2.2(@types/node@20.19.1)':
+ '@inquirer/core@11.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 1.0.0
- '@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/ansi': 2.0.2
+ '@inquirer/figures': 2.0.2
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
cli-width: 4.1.0
- mute-stream: 2.0.0
+ mute-stream: 3.0.0
signal-exit: 4.1.0
- wrap-ansi: 6.2.0
- yoctocolors-cjs: 2.1.2
+ wrap-ansi: 9.0.2
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/editor@4.2.20(@types/node@20.19.1)':
+ '@inquirer/editor@5.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/external-editor': 1.0.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/external-editor': 2.0.2(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/expand@4.0.20(@types/node@20.19.1)':
+ '@inquirer/expand@5.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/external-editor@1.0.2(@types/node@20.19.1)':
+ '@inquirer/external-editor@2.0.2(@types/node@20.19.1)':
dependencies:
- chardet: 2.1.0
+ chardet: 2.1.1
iconv-lite: 0.7.0
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/figures@1.0.13': {}
+ '@inquirer/figures@2.0.2': {}
- '@inquirer/input@4.2.4(@types/node@20.19.1)':
+ '@inquirer/input@5.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/number@3.0.20(@types/node@20.19.1)':
+ '@inquirer/number@4.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/password@4.0.20(@types/node@20.19.1)':
+ '@inquirer/password@5.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/ansi': 2.0.2
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/prompts@7.8.6(@types/node@20.19.1)':
+ '@inquirer/prompts@8.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/checkbox': 4.2.4(@types/node@20.19.1)
- '@inquirer/confirm': 5.1.18(@types/node@20.19.1)
- '@inquirer/editor': 4.2.20(@types/node@20.19.1)
- '@inquirer/expand': 4.0.20(@types/node@20.19.1)
- '@inquirer/input': 4.2.4(@types/node@20.19.1)
- '@inquirer/number': 3.0.20(@types/node@20.19.1)
- '@inquirer/password': 4.0.20(@types/node@20.19.1)
- '@inquirer/rawlist': 4.1.8(@types/node@20.19.1)
- '@inquirer/search': 3.1.3(@types/node@20.19.1)
- '@inquirer/select': 4.3.4(@types/node@20.19.1)
+ '@inquirer/checkbox': 5.0.2(@types/node@20.19.1)
+ '@inquirer/confirm': 6.0.2(@types/node@20.19.1)
+ '@inquirer/editor': 5.0.2(@types/node@20.19.1)
+ '@inquirer/expand': 5.0.2(@types/node@20.19.1)
+ '@inquirer/input': 5.0.2(@types/node@20.19.1)
+ '@inquirer/number': 4.0.2(@types/node@20.19.1)
+ '@inquirer/password': 5.0.2(@types/node@20.19.1)
+ '@inquirer/rawlist': 5.0.2(@types/node@20.19.1)
+ '@inquirer/search': 4.0.2(@types/node@20.19.1)
+ '@inquirer/select': 5.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/rawlist@4.1.8(@types/node@20.19.1)':
+ '@inquirer/rawlist@5.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/search@3.1.3(@types/node@20.19.1)':
+ '@inquirer/search@4.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/figures': 2.0.2
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/select@4.3.4(@types/node@20.19.1)':
+ '@inquirer/select@5.0.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/ansi': 2.0.2
+ '@inquirer/core': 11.0.2(@types/node@20.19.1)
+ '@inquirer/figures': 2.0.2
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/type@3.0.8(@types/node@20.19.1)':
+ '@inquirer/type@4.0.2(@types/node@20.19.1)':
optionalDependencies:
'@types/node': 20.19.1
@@ -5317,18 +5315,18 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
- '@napi-rs/cli@3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
+ '@napi-rs/cli@3.5.0(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
dependencies:
- '@inquirer/prompts': 7.8.6(@types/node@20.19.1)
+ '@inquirer/prompts': 8.0.2(@types/node@20.19.1)
'@napi-rs/cross-toolchain': 1.0.3
'@napi-rs/wasm-tools': 1.0.1
- '@octokit/rest': 22.0.0
+ '@octokit/rest': 22.0.1
clipanion: 4.0.0-rc.4(typanion@3.14.0)
colorette: 2.0.20
- debug: 4.4.3
emnapi: 1.7.1(node-addon-api@8.3.0)
- es-toolkit: 1.39.10
+ es-toolkit: 1.42.0
js-yaml: 4.1.0
+ obug: 2.1.1
semver: 7.7.3
typanion: 3.14.0
optionalDependencies:
@@ -5607,71 +5605,65 @@ snapshots:
'@octokit/auth-token@6.0.0': {}
- '@octokit/core@7.0.4':
+ '@octokit/core@7.0.6':
dependencies:
'@octokit/auth-token': 6.0.0
- '@octokit/graphql': 9.0.1
- '@octokit/request': 10.0.3
- '@octokit/request-error': 7.0.0
- '@octokit/types': 15.0.0
+ '@octokit/graphql': 9.0.3
+ '@octokit/request': 10.0.7
+ '@octokit/request-error': 7.1.0
+ '@octokit/types': 16.0.0
before-after-hook: 4.0.0
universal-user-agent: 7.0.2
- '@octokit/endpoint@11.0.0':
+ '@octokit/endpoint@11.0.2':
dependencies:
- '@octokit/types': 14.1.0
+ '@octokit/types': 16.0.0
universal-user-agent: 7.0.2
- '@octokit/graphql@9.0.1':
+ '@octokit/graphql@9.0.3':
dependencies:
- '@octokit/request': 10.0.3
- '@octokit/types': 14.1.0
+ '@octokit/request': 10.0.7
+ '@octokit/types': 16.0.0
universal-user-agent: 7.0.2
- '@octokit/openapi-types@25.1.0': {}
+ '@octokit/openapi-types@27.0.0': {}
- '@octokit/openapi-types@26.0.0': {}
-
- '@octokit/plugin-paginate-rest@13.1.1(@octokit/core@7.0.4)':
+ '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)':
dependencies:
- '@octokit/core': 7.0.4
- '@octokit/types': 14.1.0
+ '@octokit/core': 7.0.6
+ '@octokit/types': 16.0.0
- '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.4)':
+ '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)':
dependencies:
- '@octokit/core': 7.0.4
+ '@octokit/core': 7.0.6
- '@octokit/plugin-rest-endpoint-methods@16.1.0(@octokit/core@7.0.4)':
+ '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)':
dependencies:
- '@octokit/core': 7.0.4
- '@octokit/types': 15.0.0
+ '@octokit/core': 7.0.6
+ '@octokit/types': 16.0.0
- '@octokit/request-error@7.0.0':
+ '@octokit/request-error@7.1.0':
dependencies:
- '@octokit/types': 14.1.0
+ '@octokit/types': 16.0.0
- '@octokit/request@10.0.3':
+ '@octokit/request@10.0.7':
dependencies:
- '@octokit/endpoint': 11.0.0
- '@octokit/request-error': 7.0.0
- '@octokit/types': 14.1.0
+ '@octokit/endpoint': 11.0.2
+ '@octokit/request-error': 7.1.0
+ '@octokit/types': 16.0.0
fast-content-type-parse: 3.0.0
universal-user-agent: 7.0.2
- '@octokit/rest@22.0.0':
+ '@octokit/rest@22.0.1':
dependencies:
- '@octokit/core': 7.0.4
- '@octokit/plugin-paginate-rest': 13.1.1(@octokit/core@7.0.4)
- '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.4)
- '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.4)
+ '@octokit/core': 7.0.6
+ '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6)
+ '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6)
+ '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
- '@octokit/types@14.1.0':
+ '@octokit/types@16.0.0':
dependencies:
- '@octokit/openapi-types': 25.1.0
-
- '@octokit/types@15.0.0':
- dependencies:
- '@octokit/openapi-types': 26.0.0
+ '@octokit/openapi-types': 27.0.0
'@oven/bun-darwin-aarch64@1.3.3':
optional: true
@@ -6432,7 +6424,7 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
- chardet@2.1.0: {}
+ chardet@2.1.1: {}
chokidar@3.6.0:
dependencies:
@@ -6590,6 +6582,8 @@ snapshots:
optionalDependencies:
node-addon-api: 8.3.0
+ emoji-regex@10.6.0: {}
+
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -6700,7 +6694,7 @@ snapshots:
is-date-object: 1.1.0
is-symbol: 1.1.1
- es-toolkit@1.39.10: {}
+ es-toolkit@1.42.0: {}
esbuild@0.23.1:
optionalDependencies:
@@ -7189,6 +7183,8 @@ snapshots:
gensync@1.0.0-beta.2: {}
+ get-east-asian-width@1.4.0: {}
+
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -7670,7 +7666,7 @@ snapshots:
ms@2.1.3: {}
- mute-stream@2.0.0: {}
+ mute-stream@3.0.0: {}
mz@2.7.0:
dependencies:
@@ -7775,6 +7771,8 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
+ obug@2.1.1: {}
+
onetime@6.0.0:
dependencies:
mimic-fn: 4.0.0
@@ -8227,6 +8225,12 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.1.0
+ string-width@7.2.0:
+ dependencies:
+ emoji-regex: 10.6.0
+ get-east-asian-width: 1.4.0
+ strip-ansi: 7.1.0
+
string.prototype.includes@2.0.1:
dependencies:
call-bind: 1.0.8
@@ -8699,12 +8703,6 @@ snapshots:
word-wrap@1.2.5: {}
- wrap-ansi@6.2.0:
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -8717,14 +8715,18 @@ snapshots:
string-width: 5.1.2
strip-ansi: 7.1.0
+ wrap-ansi@9.0.2:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 7.2.0
+ strip-ansi: 7.1.0
+
yallist@3.1.1: {}
yaml@2.6.0: {}
yocto-queue@0.1.0: {}
- yoctocolors-cjs@2.1.2: {}
-
zod-validation-error@4.0.2(zod@4.1.12):
dependencies:
zod: 4.1.12
From 0a4084927069f3fc2eaf540302c4ee4c9a103ea8 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Wed, 10 Dec 2025 15:41:00 +0000
Subject: [PATCH 048/353] Update all of react to version 19.2.1
---
playgrounds/nextjs/package.json | 4 +--
playgrounds/v3/package.json | 4 +--
playgrounds/vite/package.json | 4 +--
pnpm-lock.yaml | 58 ++++++++++++++++-----------------
4 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index fc1ddebe4..7c5d0eec8 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -12,8 +12,8 @@
"@tailwindcss/postcss": "workspace:^",
"fast-glob": "^3.3.3",
"next": "^16.0.7",
- "react": "^19.2.0",
- "react-dom": "^19.2.0",
+ "react": "^19.2.1",
+ "react-dom": "^19.2.1",
"tailwindcss": "workspace:^"
},
"devDependencies": {
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index 495fd7bec..d769b38e1 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -10,8 +10,8 @@
},
"dependencies": {
"next": "^16.0.7",
- "react": "^19.2.0",
- "react-dom": "^19.2.0",
+ "react": "^19.2.1",
+ "react-dom": "^19.2.1",
"tailwindcss": "^3"
},
"devDependencies": {
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index e4cc4ce7c..3bd94b7ba 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -11,8 +11,8 @@
"dependencies": {
"@tailwindcss/vite": "workspace:^",
"@vitejs/plugin-react": "^5.1.1",
- "react": "^19.2.0",
- "react-dom": "^19.2.0",
+ "react": "^19.2.1",
+ "react-dom": "^19.2.1",
"tailwindcss": "workspace:^"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 18eabb08e..798500971 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -481,13 +481,13 @@ importers:
version: 3.3.3
next:
specifier: ^16.0.7
- version: 16.0.7(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.7(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react:
- specifier: ^19.2.0
- version: 19.2.0
+ specifier: ^19.2.1
+ version: 19.2.1
react-dom:
- specifier: ^19.2.0
- version: 19.2.0(react@19.2.0)
+ specifier: ^19.2.1
+ version: 19.2.1(react@19.2.1)
tailwindcss:
specifier: workspace:^
version: link:../../packages/tailwindcss
@@ -515,13 +515,13 @@ importers:
dependencies:
next:
specifier: ^16.0.7
- version: 16.0.7(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 16.0.7(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react:
- specifier: ^19.2.0
- version: 19.2.0
+ specifier: ^19.2.1
+ version: 19.2.1
react-dom:
- specifier: ^19.2.0
- version: 19.2.0(react@19.2.0)
+ specifier: ^19.2.1
+ version: 19.2.1(react@19.2.1)
tailwindcss:
specifier: ^3
version: 3.4.14
@@ -557,11 +557,11 @@ importers:
specifier: ^5.1.1
version: 5.1.1(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
react:
- specifier: ^19.2.0
- version: 19.2.0
+ specifier: ^19.2.1
+ version: 19.2.1
react-dom:
- specifier: ^19.2.0
- version: 19.2.0(react@19.2.0)
+ specifier: ^19.2.1
+ version: 19.2.1(react@19.2.1)
tailwindcss:
specifier: workspace:^
version: link:../../packages/tailwindcss
@@ -3691,7 +3691,7 @@ packages:
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
- '@opentelemetry/api': 1.4.1
+ '@opentelemetry/api': ^1.1.0
'@playwright/test': ^1.51.1
babel-plugin-react-compiler: '*'
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
@@ -4007,10 +4007,10 @@ packages:
radix3@1.1.2:
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
- react-dom@19.2.0:
- resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==}
+ react-dom@19.2.1:
+ resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==}
peerDependencies:
- react: ^19.2.0
+ react: ^19.2.1
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -4019,8 +4019,8 @@ packages:
resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
engines: {node: '>=0.10.0'}
- react@19.2.0:
- resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==}
+ react@19.2.1:
+ resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -7680,15 +7680,15 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.7(@playwright/test@1.57.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.7(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
'@next/env': 16.0.7
'@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001755
postcss: 8.4.31
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- styled-jsx: 5.1.6(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ styled-jsx: 5.1.6(react@19.2.1)
optionalDependencies:
'@next/swc-darwin-arm64': 16.0.7
'@next/swc-darwin-x64': 16.0.7
@@ -7977,16 +7977,16 @@ snapshots:
radix3@1.1.2: {}
- react-dom@19.2.0(react@19.2.0):
+ react-dom@19.2.1(react@19.2.1):
dependencies:
- react: 19.2.0
+ react: 19.2.1
scheduler: 0.27.0
react-is@16.13.1: {}
react-refresh@0.18.0: {}
- react@19.2.0: {}
+ react@19.2.1: {}
read-cache@1.0.0:
dependencies:
@@ -8294,10 +8294,10 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(react@19.2.0):
+ styled-jsx@5.1.6(react@19.2.1):
dependencies:
client-only: 0.0.1
- react: 19.2.0
+ react: 19.2.1
sucrase@3.35.0:
dependencies:
From 5065de4f9e0012bd99756a5317623885d2ae6cd6 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Wed, 10 Dec 2025 11:26:51 -0500
Subject: [PATCH 049/353] Revert "Update @napi-rs/cli to version 3.5.0"
This reverts commit 3a1df5a283308ca3079aa204a818c4de57e2b78d.
---
crates/node/package.json | 2 +-
pnpm-lock.yaml | 430 +++++++++++++++++++--------------------
2 files changed, 215 insertions(+), 217 deletions(-)
diff --git a/crates/node/package.json b/crates/node/package.json
index e35d33668..b03359479 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -33,7 +33,7 @@
},
"license": "MIT",
"devDependencies": {
- "@napi-rs/cli": "^3.5.0",
+ "@napi-rs/cli": "^3.4.1",
"@napi-rs/wasm-runtime": "^1.1.0",
"emnapi": "1.7.1"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 798500971..4f93c2154 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -126,8 +126,8 @@ importers:
version: link:npm/win32-x64-msvc
devDependencies:
'@napi-rs/cli':
- specifier: ^3.5.0
- version: 3.5.0(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
+ specifier: ^3.4.1
+ version: 3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
specifier: ^1.1.0
version: 1.1.0
@@ -1326,134 +1326,134 @@ packages:
cpu: [x64]
os: [win32]
- '@inquirer/ansi@2.0.2':
- resolution: {integrity: sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/ansi@1.0.0':
+ resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==}
+ engines: {node: '>=18'}
- '@inquirer/checkbox@5.0.2':
- resolution: {integrity: sha512-iTPV4tMMct7iOpwer5qmTP7gjnk1VQJjsNfAaC2b8Q3qiuHM3K2yjjDr5u1MKfkrvp2JD4Flf8sIPpF21pmZmw==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/checkbox@4.2.4':
+ resolution: {integrity: sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/confirm@6.0.2':
- resolution: {integrity: sha512-A0/13Wyi+8iFeNDX6D4zZYKPoBLIEbE4K/219qHcnpXMer2weWvaTo63+2c7mQPPA206DEMSYVOPnEw3meOlCw==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/confirm@5.1.18':
+ resolution: {integrity: sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/core@11.0.2':
- resolution: {integrity: sha512-lgMRx/n02ciiNELBvFLHtmcjbV5tf5D/I0UYfCg2YbTZWmBZ10/niLd3IjWBxz8LtM27xP+4oLEa06Slmb7p7A==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/core@10.2.2':
+ resolution: {integrity: sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/editor@5.0.2':
- resolution: {integrity: sha512-pXQ4Nf0qmFcJuYB6NlcIIxH6l6zKOwNg1Jh/ZRdKd2dTqBB4OXKUFbFwR2K4LVXVtq15ZFFatBVT+rerYR8hWQ==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/editor@4.2.20':
+ resolution: {integrity: sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/expand@5.0.2':
- resolution: {integrity: sha512-siFG1swxfjFIOxIcehtZkh+KUNB/YCpyfHNEGu+nC/SBXIbgUWibvThLn/WesSxLRGOeSKdNKoTm+GQCKFm6Ww==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/expand@4.0.20':
+ resolution: {integrity: sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/external-editor@2.0.2':
- resolution: {integrity: sha512-X/fMXK7vXomRWEex1j8mnj7s1mpnTeP4CO/h2gysJhHLT2WjBnLv4ZQEGpm/kcYI8QfLZ2fgW+9kTKD+jeopLg==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/external-editor@1.0.2':
+ resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/figures@2.0.2':
- resolution: {integrity: sha512-qXm6EVvQx/FmnSrCWCIGtMHwqeLgxABP8XgcaAoywsL0NFga9gD5kfG0gXiv80GjK9Hsoz4pgGwF/+CjygyV9A==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/figures@1.0.13':
+ resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==}
+ engines: {node: '>=18'}
- '@inquirer/input@5.0.2':
- resolution: {integrity: sha512-hN2YRo1QiEc9lD3mK+CPnTS4TK2RhCMmMmP4nCWwTkmQL2vx9jPJWYk+rbUZpwR1D583ZJk1FI3i9JZXIpi/qg==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/input@4.2.4':
+ resolution: {integrity: sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/number@4.0.2':
- resolution: {integrity: sha512-4McnjTSYrlthNW1ojkkmP75WLRYhQs7GXm6pDDoIrHqJuV5uUYwfdbB0geHdaKMarAqJQgoOVjzIT0jdWCsKew==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/number@3.0.20':
+ resolution: {integrity: sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/password@5.0.2':
- resolution: {integrity: sha512-oSDziMKiw4G2e4zS+0JRfxuPFFGh6N/9yUaluMgEHp2/Yyj2JGwfDO7XbwtOrxVrz+XsP/iaGyWXdQb9d8A0+g==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/password@4.0.20':
+ resolution: {integrity: sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/prompts@8.0.2':
- resolution: {integrity: sha512-2zK5zY48fZcl6+gG4eqOC/UzZsJckHCRvjXoLuW4D8LKOCVGdcJiSKkLnumSZjR/6PXPINDGOrGHqNxb+sxJDg==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/prompts@7.8.6':
+ resolution: {integrity: sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/rawlist@5.0.2':
- resolution: {integrity: sha512-AcNALEdQKUQDeJcpC1a3YC53m1MLv+sMUS+vRZ8Qigs1Yg3Dcdtmi82rscJplogKOY8CXkKW4wvVwHS2ZjCIBQ==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/rawlist@4.1.8':
+ resolution: {integrity: sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/search@4.0.2':
- resolution: {integrity: sha512-hg63w5toohdzE65S3LiGhdfIL0kT+yisbZARf7zw65PvyMUTutTN3eMAvD/B6y/25z88vTrB7kSB45Vz5CbrXg==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/search@3.1.3':
+ resolution: {integrity: sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/select@5.0.2':
- resolution: {integrity: sha512-JygTohvQxSNnvt7IKANVlg/eds+yN5sLRilYeGc4ri/9Aqi/2QPoXBMV5Cz/L1VtQv63SnTbPXJZeCK2pSwsOA==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/select@4.3.4':
+ resolution: {integrity: sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/type@4.0.2':
- resolution: {integrity: sha512-cae7mzluplsjSdgFA6ACLygb5jC8alO0UUnFPyu0E7tNRPrL+q/f8VcSXp+cjZQ7l5CMpDpi2G1+IQvkOiL1Lw==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/type@3.0.8':
+ resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@@ -1497,12 +1497,12 @@ packages:
'@jridgewell/trace-mapping@0.3.29':
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
- '@napi-rs/cli@3.5.0':
- resolution: {integrity: sha512-bJsDvAa9qK9VMkFhr780XWfQlK+GDlAX8qpK20buSmA0ld6nxCtiZ5a0J45zbd0FWT+VTZE1/u8VPH2vLfnVvw==}
+ '@napi-rs/cli@3.4.1':
+ resolution: {integrity: sha512-ayhm+NfrP5Hmh7vy5pfyYm/ktYtLh2PrgdLuqHTAubO7RoO2JkUE4F991AtgYxNewwXI8+guZLxU8itV7QnDrQ==}
engines: {node: '>= 16'}
hasBin: true
peerDependencies:
- '@emnapi/runtime': ^1.7.1
+ '@emnapi/runtime': ^1.5.0
peerDependenciesMeta:
'@emnapi/runtime':
optional: true
@@ -1904,23 +1904,26 @@ packages:
resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==}
engines: {node: '>= 20'}
- '@octokit/core@7.0.6':
- resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==}
+ '@octokit/core@7.0.4':
+ resolution: {integrity: sha512-jOT8V1Ba5BdC79sKrRWDdMT5l1R+XNHTPR6CPWzUP2EcfAcvIHZWF0eAbmRcpOOP5gVIwnqNg0C4nvh6Abc3OA==}
engines: {node: '>= 20'}
- '@octokit/endpoint@11.0.2':
- resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==}
+ '@octokit/endpoint@11.0.0':
+ resolution: {integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==}
engines: {node: '>= 20'}
- '@octokit/graphql@9.0.3':
- resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==}
+ '@octokit/graphql@9.0.1':
+ resolution: {integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==}
engines: {node: '>= 20'}
- '@octokit/openapi-types@27.0.0':
- resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==}
+ '@octokit/openapi-types@25.1.0':
+ resolution: {integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==}
- '@octokit/plugin-paginate-rest@14.0.0':
- resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==}
+ '@octokit/openapi-types@26.0.0':
+ resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==}
+
+ '@octokit/plugin-paginate-rest@13.1.1':
+ resolution: {integrity: sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==}
engines: {node: '>= 20'}
peerDependencies:
'@octokit/core': '>=6'
@@ -1931,26 +1934,29 @@ packages:
peerDependencies:
'@octokit/core': '>=6'
- '@octokit/plugin-rest-endpoint-methods@17.0.0':
- resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==}
+ '@octokit/plugin-rest-endpoint-methods@16.1.0':
+ resolution: {integrity: sha512-nCsyiKoGRnhH5LkH8hJEZb9swpqOcsW+VXv1QoyUNQXJeVODG4+xM6UICEqyqe9XFr6LkL8BIiFCPev8zMDXPw==}
engines: {node: '>= 20'}
peerDependencies:
'@octokit/core': '>=6'
- '@octokit/request-error@7.1.0':
- resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==}
+ '@octokit/request-error@7.0.0':
+ resolution: {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==}
engines: {node: '>= 20'}
- '@octokit/request@10.0.7':
- resolution: {integrity: sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==}
+ '@octokit/request@10.0.3':
+ resolution: {integrity: sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA==}
engines: {node: '>= 20'}
- '@octokit/rest@22.0.1':
- resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==}
+ '@octokit/rest@22.0.0':
+ resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==}
engines: {node: '>= 20'}
- '@octokit/types@16.0.0':
- resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==}
+ '@octokit/types@14.1.0':
+ resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==}
+
+ '@octokit/types@15.0.0':
+ resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==}
'@oven/bun-darwin-aarch64@1.3.3':
resolution: {integrity: sha512-eJopQrUk0WR7jViYDC29+Rp50xGvs4GtWOXBeqCoFMzutkkO3CZvHehA4JqnjfWMTSS8toqvRhCSOpOz62Wf9w==}
@@ -2664,8 +2670,8 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
- chardet@2.1.1:
- resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}
+ chardet@2.1.0:
+ resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==}
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
@@ -2850,9 +2856,6 @@ packages:
node-addon-api:
optional: true
- emoji-regex@10.6.0:
- resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
-
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -2898,8 +2901,8 @@ packages:
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
- es-toolkit@1.42.0:
- resolution: {integrity: sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA==}
+ es-toolkit@1.39.10:
+ resolution: {integrity: sha512-E0iGnTtbDhkeczB0T+mxmoVlT4YNweEKBLq7oaU4p11mecdsZpNWOglI4895Vh4usbQ+LsJiuLuI2L0Vdmfm2w==}
esbuild@0.23.1:
resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
@@ -3152,10 +3155,6 @@ packages:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
- get-east-asian-width@1.4.0:
- resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
- engines: {node: '>=18'}
-
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -3666,9 +3665,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- mute-stream@3.0.0:
- resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==}
- engines: {node: ^20.17.0 || >=22.9.0}
+ mute-stream@2.0.0:
+ resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
+ engines: {node: ^18.17.0 || >=20.5.0}
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
@@ -3784,9 +3783,6 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
- obug@2.1.1:
- resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
-
onetime@6.0.0:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
@@ -4187,10 +4183,6 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
- string-width@7.2.0:
- resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
- engines: {node: '>=18'}
-
string.prototype.includes@2.0.1:
resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
engines: {node: '>= 0.4'}
@@ -4602,6 +4594,10 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
+ wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -4610,10 +4606,6 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
- wrap-ansi@9.0.2:
- resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
- engines: {node: '>=18'}
-
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -4626,6 +4618,10 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
+ yoctocolors-cjs@2.1.2:
+ resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
+ engines: {node: '>=18'}
+
zod-validation-error@4.0.2:
resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
@@ -5147,122 +5143,128 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
- '@inquirer/ansi@2.0.2': {}
+ '@inquirer/ansi@1.0.0': {}
- '@inquirer/checkbox@5.0.2(@types/node@20.19.1)':
+ '@inquirer/checkbox@4.2.4(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 2.0.2
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/figures': 2.0.2
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/ansi': 1.0.0
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/figures': 1.0.13
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/confirm@6.0.2(@types/node@20.19.1)':
+ '@inquirer/confirm@5.1.18(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/core@11.0.2(@types/node@20.19.1)':
+ '@inquirer/core@10.2.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 2.0.2
- '@inquirer/figures': 2.0.2
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/ansi': 1.0.0
+ '@inquirer/figures': 1.0.13
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
cli-width: 4.1.0
- mute-stream: 3.0.0
+ mute-stream: 2.0.0
signal-exit: 4.1.0
- wrap-ansi: 9.0.2
+ wrap-ansi: 6.2.0
+ yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/editor@5.0.2(@types/node@20.19.1)':
+ '@inquirer/editor@4.2.20(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/external-editor': 2.0.2(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/external-editor': 1.0.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/expand@5.0.2(@types/node@20.19.1)':
+ '@inquirer/expand@4.0.20(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/external-editor@2.0.2(@types/node@20.19.1)':
+ '@inquirer/external-editor@1.0.2(@types/node@20.19.1)':
dependencies:
- chardet: 2.1.1
+ chardet: 2.1.0
iconv-lite: 0.7.0
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/figures@2.0.2': {}
+ '@inquirer/figures@1.0.13': {}
- '@inquirer/input@5.0.2(@types/node@20.19.1)':
+ '@inquirer/input@4.2.4(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/number@4.0.2(@types/node@20.19.1)':
+ '@inquirer/number@3.0.20(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/password@5.0.2(@types/node@20.19.1)':
+ '@inquirer/password@4.0.20(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 2.0.2
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/ansi': 1.0.0
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/prompts@8.0.2(@types/node@20.19.1)':
+ '@inquirer/prompts@7.8.6(@types/node@20.19.1)':
dependencies:
- '@inquirer/checkbox': 5.0.2(@types/node@20.19.1)
- '@inquirer/confirm': 6.0.2(@types/node@20.19.1)
- '@inquirer/editor': 5.0.2(@types/node@20.19.1)
- '@inquirer/expand': 5.0.2(@types/node@20.19.1)
- '@inquirer/input': 5.0.2(@types/node@20.19.1)
- '@inquirer/number': 4.0.2(@types/node@20.19.1)
- '@inquirer/password': 5.0.2(@types/node@20.19.1)
- '@inquirer/rawlist': 5.0.2(@types/node@20.19.1)
- '@inquirer/search': 4.0.2(@types/node@20.19.1)
- '@inquirer/select': 5.0.2(@types/node@20.19.1)
+ '@inquirer/checkbox': 4.2.4(@types/node@20.19.1)
+ '@inquirer/confirm': 5.1.18(@types/node@20.19.1)
+ '@inquirer/editor': 4.2.20(@types/node@20.19.1)
+ '@inquirer/expand': 4.0.20(@types/node@20.19.1)
+ '@inquirer/input': 4.2.4(@types/node@20.19.1)
+ '@inquirer/number': 3.0.20(@types/node@20.19.1)
+ '@inquirer/password': 4.0.20(@types/node@20.19.1)
+ '@inquirer/rawlist': 4.1.8(@types/node@20.19.1)
+ '@inquirer/search': 3.1.3(@types/node@20.19.1)
+ '@inquirer/select': 4.3.4(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/rawlist@5.0.2(@types/node@20.19.1)':
+ '@inquirer/rawlist@4.1.8(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/search@4.0.2(@types/node@20.19.1)':
+ '@inquirer/search@3.1.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/figures': 2.0.2
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/figures': 1.0.13
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/select@5.0.2(@types/node@20.19.1)':
+ '@inquirer/select@4.3.4(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 2.0.2
- '@inquirer/core': 11.0.2(@types/node@20.19.1)
- '@inquirer/figures': 2.0.2
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/ansi': 1.0.0
+ '@inquirer/core': 10.2.2(@types/node@20.19.1)
+ '@inquirer/figures': 1.0.13
+ '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.2
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/type@4.0.2(@types/node@20.19.1)':
+ '@inquirer/type@3.0.8(@types/node@20.19.1)':
optionalDependencies:
'@types/node': 20.19.1
@@ -5315,18 +5317,18 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
- '@napi-rs/cli@3.5.0(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
+ '@napi-rs/cli@3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
dependencies:
- '@inquirer/prompts': 8.0.2(@types/node@20.19.1)
+ '@inquirer/prompts': 7.8.6(@types/node@20.19.1)
'@napi-rs/cross-toolchain': 1.0.3
'@napi-rs/wasm-tools': 1.0.1
- '@octokit/rest': 22.0.1
+ '@octokit/rest': 22.0.0
clipanion: 4.0.0-rc.4(typanion@3.14.0)
colorette: 2.0.20
+ debug: 4.4.3
emnapi: 1.7.1(node-addon-api@8.3.0)
- es-toolkit: 1.42.0
+ es-toolkit: 1.39.10
js-yaml: 4.1.0
- obug: 2.1.1
semver: 7.7.3
typanion: 3.14.0
optionalDependencies:
@@ -5605,65 +5607,71 @@ snapshots:
'@octokit/auth-token@6.0.0': {}
- '@octokit/core@7.0.6':
+ '@octokit/core@7.0.4':
dependencies:
'@octokit/auth-token': 6.0.0
- '@octokit/graphql': 9.0.3
- '@octokit/request': 10.0.7
- '@octokit/request-error': 7.1.0
- '@octokit/types': 16.0.0
+ '@octokit/graphql': 9.0.1
+ '@octokit/request': 10.0.3
+ '@octokit/request-error': 7.0.0
+ '@octokit/types': 15.0.0
before-after-hook: 4.0.0
universal-user-agent: 7.0.2
- '@octokit/endpoint@11.0.2':
+ '@octokit/endpoint@11.0.0':
dependencies:
- '@octokit/types': 16.0.0
+ '@octokit/types': 14.1.0
universal-user-agent: 7.0.2
- '@octokit/graphql@9.0.3':
+ '@octokit/graphql@9.0.1':
dependencies:
- '@octokit/request': 10.0.7
- '@octokit/types': 16.0.0
+ '@octokit/request': 10.0.3
+ '@octokit/types': 14.1.0
universal-user-agent: 7.0.2
- '@octokit/openapi-types@27.0.0': {}
+ '@octokit/openapi-types@25.1.0': {}
- '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)':
- dependencies:
- '@octokit/core': 7.0.6
- '@octokit/types': 16.0.0
+ '@octokit/openapi-types@26.0.0': {}
- '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)':
+ '@octokit/plugin-paginate-rest@13.1.1(@octokit/core@7.0.4)':
dependencies:
- '@octokit/core': 7.0.6
+ '@octokit/core': 7.0.4
+ '@octokit/types': 14.1.0
- '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)':
+ '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.4)':
dependencies:
- '@octokit/core': 7.0.6
- '@octokit/types': 16.0.0
+ '@octokit/core': 7.0.4
- '@octokit/request-error@7.1.0':
+ '@octokit/plugin-rest-endpoint-methods@16.1.0(@octokit/core@7.0.4)':
dependencies:
- '@octokit/types': 16.0.0
+ '@octokit/core': 7.0.4
+ '@octokit/types': 15.0.0
- '@octokit/request@10.0.7':
+ '@octokit/request-error@7.0.0':
dependencies:
- '@octokit/endpoint': 11.0.2
- '@octokit/request-error': 7.1.0
- '@octokit/types': 16.0.0
+ '@octokit/types': 14.1.0
+
+ '@octokit/request@10.0.3':
+ dependencies:
+ '@octokit/endpoint': 11.0.0
+ '@octokit/request-error': 7.0.0
+ '@octokit/types': 14.1.0
fast-content-type-parse: 3.0.0
universal-user-agent: 7.0.2
- '@octokit/rest@22.0.1':
+ '@octokit/rest@22.0.0':
dependencies:
- '@octokit/core': 7.0.6
- '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6)
- '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6)
- '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
+ '@octokit/core': 7.0.4
+ '@octokit/plugin-paginate-rest': 13.1.1(@octokit/core@7.0.4)
+ '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.4)
+ '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.4)
- '@octokit/types@16.0.0':
+ '@octokit/types@14.1.0':
dependencies:
- '@octokit/openapi-types': 27.0.0
+ '@octokit/openapi-types': 25.1.0
+
+ '@octokit/types@15.0.0':
+ dependencies:
+ '@octokit/openapi-types': 26.0.0
'@oven/bun-darwin-aarch64@1.3.3':
optional: true
@@ -6424,7 +6432,7 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
- chardet@2.1.1: {}
+ chardet@2.1.0: {}
chokidar@3.6.0:
dependencies:
@@ -6582,8 +6590,6 @@ snapshots:
optionalDependencies:
node-addon-api: 8.3.0
- emoji-regex@10.6.0: {}
-
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -6694,7 +6700,7 @@ snapshots:
is-date-object: 1.1.0
is-symbol: 1.1.1
- es-toolkit@1.42.0: {}
+ es-toolkit@1.39.10: {}
esbuild@0.23.1:
optionalDependencies:
@@ -7183,8 +7189,6 @@ snapshots:
gensync@1.0.0-beta.2: {}
- get-east-asian-width@1.4.0: {}
-
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -7666,7 +7670,7 @@ snapshots:
ms@2.1.3: {}
- mute-stream@3.0.0: {}
+ mute-stream@2.0.0: {}
mz@2.7.0:
dependencies:
@@ -7771,8 +7775,6 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
- obug@2.1.1: {}
-
onetime@6.0.0:
dependencies:
mimic-fn: 4.0.0
@@ -8225,12 +8227,6 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.1.0
- string-width@7.2.0:
- dependencies:
- emoji-regex: 10.6.0
- get-east-asian-width: 1.4.0
- strip-ansi: 7.1.0
-
string.prototype.includes@2.0.1:
dependencies:
call-bind: 1.0.8
@@ -8703,6 +8699,12 @@ snapshots:
word-wrap@1.2.5: {}
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -8715,18 +8717,14 @@ snapshots:
string-width: 5.1.2
strip-ansi: 7.1.0
- wrap-ansi@9.0.2:
- dependencies:
- ansi-styles: 6.2.1
- string-width: 7.2.0
- strip-ansi: 7.1.0
-
yallist@3.1.1: {}
yaml@2.6.0: {}
yocto-queue@0.1.0: {}
+ yoctocolors-cjs@2.1.2: {}
+
zod-validation-error@4.0.2(zod@4.1.12):
dependencies:
zod: 4.1.12
From 9b32f7cb2fd341e1f9ddbe40a4d61d2f272ae33f Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 11 Dec 2025 10:55:25 -0500
Subject: [PATCH 050/353] Release v4.1.18 (#19431)
---
CHANGELOG.md | 36 ++++++++++++-------
crates/node/npm/android-arm-eabi/package.json | 2 +-
crates/node/npm/android-arm64/package.json | 2 +-
crates/node/npm/darwin-arm64/package.json | 2 +-
crates/node/npm/darwin-x64/package.json | 2 +-
crates/node/npm/freebsd-x64/package.json | 2 +-
.../node/npm/linux-arm-gnueabihf/package.json | 2 +-
crates/node/npm/linux-arm64-gnu/package.json | 2 +-
crates/node/npm/linux-arm64-musl/package.json | 2 +-
crates/node/npm/linux-x64-gnu/package.json | 2 +-
crates/node/npm/linux-x64-musl/package.json | 2 +-
crates/node/npm/wasm32-wasi/package.json | 2 +-
crates/node/npm/win32-arm64-msvc/package.json | 2 +-
crates/node/npm/win32-x64-msvc/package.json | 2 +-
crates/node/package.json | 2 +-
packages/@tailwindcss-browser/package.json | 2 +-
packages/@tailwindcss-cli/package.json | 2 +-
packages/@tailwindcss-node/package.json | 2 +-
packages/@tailwindcss-postcss/package.json | 2 +-
packages/@tailwindcss-standalone/package.json | 2 +-
packages/@tailwindcss-upgrade/package.json | 2 +-
packages/@tailwindcss-vite/package.json | 2 +-
packages/tailwindcss/package.json | 2 +-
23 files changed, 46 insertions(+), 34 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2dc2c8629..eab0ba035 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+- Nothing yet!
+
+## [4.1.18] - 2025-12-10
+
### Fixed
- Ensure validation of `source(…)` happens relative to the file it is in ([#19274](https://github.com/tailwindlabs/tailwindcss/pull/19274))
@@ -30,6 +34,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
+## [3.4.19] - 2025-12-10
+
+### Fixed
+
+- Don’t break `sibling-*()` functions when used inside `calc(…)` ([#19335](https://github.com/tailwindlabs/tailwindcss/pull/19335))
+
## [4.1.17] - 2025-11-06
### Fixed
@@ -86,6 +96,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Upgrade: Ensure first class inside `className` is migrated ([#19031](https://github.com/tailwindlabs/tailwindcss/pull/19031))
- Upgrade: Migrate classes inside `*ClassName` and `*Class` attributes ([#19031](https://github.com/tailwindlabs/tailwindcss/pull/19031))
+## [3.4.18] - 2025-10-01
+
+### Fixed
+
+- Improve support for raw `supports-[…]` queries in arbitrary values ([#13605](https://github.com/tailwindlabs/tailwindcss/pull/13605))
+- Fix `require.cache` error when loaded through a TypeScript file in Node 22.18+ ([#18665](https://github.com/tailwindlabs/tailwindcss/pull/18665))
+- Support `import.meta.resolve(…)` in configs for new enough Node.js versions ([#18938](https://github.com/tailwindlabs/tailwindcss/pull/18938))
+- Allow using newer versions of `postcss-load-config` for better ESM and TypeScript PostCSS config support with the CLI ([#18938](https://github.com/tailwindlabs/tailwindcss/pull/18938))
+- Remove irrelevant utility rules when matching important classes ([#19030](https://github.com/tailwindlabs/tailwindcss/pull/19030))
+
## [4.1.13] - 2025-09-03
### Changed
@@ -1418,16 +1438,6 @@ For a deep-dive into everything that's new, [check out the announcement post](ht
- First 4.0.0-alpha.1 release
-## [3.4.18] - 2024-10-01
-
-### Fixed
-
-- Improve support for raw `supports-[…]` queries in arbitrary values ([#13605](https://github.com/tailwindlabs/tailwindcss/pull/13605))
-- Fix `require.cache` error when loaded through a TypeScript file in Node 22.18+ ([#18665](https://github.com/tailwindlabs/tailwindcss/pull/18665))
-- Support `import.meta.resolve(…)` in configs for new enough Node.js versions ([#18938](https://github.com/tailwindlabs/tailwindcss/pull/18938))
-- Allow using newer versions of `postcss-load-config` for better ESM and TypeScript PostCSS config support with the CLI ([#18938](https://github.com/tailwindlabs/tailwindcss/pull/18938))
-- Remove irrelevant utility rules when matching important classes ([#19030](https://github.com/tailwindlabs/tailwindcss/pull/19030))
-
## [3.4.17] - 2024-12-17
### Fixed
@@ -3896,11 +3906,14 @@ No release notes
- Everything!
-[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.17...HEAD
+[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.18...HEAD
+[4.1.18]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.17...v4.1.18
+[3.4.19]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.18...v3.4.19
[4.1.17]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.16...v4.1.17
[4.1.16]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.15...v4.1.16
[4.1.15]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.14...v4.1.15
[4.1.14]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.13...v4.1.14
+[3.4.18]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.17...v3.4.18
[4.1.13]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.12...v4.1.13
[4.1.12]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.11...v4.1.12
[4.1.11]: https://github.com/tailwindlabs/tailwindcss/compare/v4.1.10...v4.1.11
@@ -3958,7 +3971,6 @@ No release notes
[4.0.0-alpha.24]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.23...v4.0.0-alpha.24
[4.0.0-alpha.23]: https://github.com/tailwindlabs/tailwindcss/compare/v4.0.0-alpha.22...v4.0.0-alpha.23
[4.0.0-alpha.22]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.17...v4.0.0-alpha.22
-[3.4.18]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.17...v3.4.18
[3.4.17]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.16...v3.4.17
[3.4.16]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.15...v3.4.16
[3.4.15]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.14...v3.4.15
diff --git a/crates/node/npm/android-arm-eabi/package.json b/crates/node/npm/android-arm-eabi/package.json
index f1adb084c..9d4181ce6 100644
--- a/crates/node/npm/android-arm-eabi/package.json
+++ b/crates/node/npm/android-arm-eabi/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-android-arm-eabi",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/android-arm64/package.json b/crates/node/npm/android-arm64/package.json
index 53de99c88..ff08b5b79 100644
--- a/crates/node/npm/android-arm64/package.json
+++ b/crates/node/npm/android-arm64/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-android-arm64",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/darwin-arm64/package.json b/crates/node/npm/darwin-arm64/package.json
index 51a49b205..e3e7e96e8 100644
--- a/crates/node/npm/darwin-arm64/package.json
+++ b/crates/node/npm/darwin-arm64/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-darwin-arm64",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/darwin-x64/package.json b/crates/node/npm/darwin-x64/package.json
index 46ef28397..7b445cf0b 100644
--- a/crates/node/npm/darwin-x64/package.json
+++ b/crates/node/npm/darwin-x64/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-darwin-x64",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/freebsd-x64/package.json b/crates/node/npm/freebsd-x64/package.json
index b52abc69f..90064bbe1 100644
--- a/crates/node/npm/freebsd-x64/package.json
+++ b/crates/node/npm/freebsd-x64/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-freebsd-x64",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-arm-gnueabihf/package.json b/crates/node/npm/linux-arm-gnueabihf/package.json
index b64401cd4..77f22d89c 100644
--- a/crates/node/npm/linux-arm-gnueabihf/package.json
+++ b/crates/node/npm/linux-arm-gnueabihf/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-arm-gnueabihf",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-arm64-gnu/package.json b/crates/node/npm/linux-arm64-gnu/package.json
index b5b464bb0..f7a4d3223 100644
--- a/crates/node/npm/linux-arm64-gnu/package.json
+++ b/crates/node/npm/linux-arm64-gnu/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-arm64-gnu",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-arm64-musl/package.json b/crates/node/npm/linux-arm64-musl/package.json
index e59e36952..e07932131 100644
--- a/crates/node/npm/linux-arm64-musl/package.json
+++ b/crates/node/npm/linux-arm64-musl/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-arm64-musl",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-x64-gnu/package.json b/crates/node/npm/linux-x64-gnu/package.json
index bd2e7638d..bd1c36a82 100644
--- a/crates/node/npm/linux-x64-gnu/package.json
+++ b/crates/node/npm/linux-x64-gnu/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-x64-gnu",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/linux-x64-musl/package.json b/crates/node/npm/linux-x64-musl/package.json
index fc69e5035..b67ce82fe 100644
--- a/crates/node/npm/linux-x64-musl/package.json
+++ b/crates/node/npm/linux-x64-musl/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-linux-x64-musl",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/wasm32-wasi/package.json b/crates/node/npm/wasm32-wasi/package.json
index c962d630e..601ad809e 100644
--- a/crates/node/npm/wasm32-wasi/package.json
+++ b/crates/node/npm/wasm32-wasi/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-wasm32-wasi",
- "version": "4.1.17",
+ "version": "4.1.18",
"cpu": [
"wasm32"
],
diff --git a/crates/node/npm/win32-arm64-msvc/package.json b/crates/node/npm/win32-arm64-msvc/package.json
index 13853d380..bbf820085 100644
--- a/crates/node/npm/win32-arm64-msvc/package.json
+++ b/crates/node/npm/win32-arm64-msvc/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-win32-arm64-msvc",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/npm/win32-x64-msvc/package.json b/crates/node/npm/win32-x64-msvc/package.json
index b6f9f768b..ab648ee39 100644
--- a/crates/node/npm/win32-x64-msvc/package.json
+++ b/crates/node/npm/win32-x64-msvc/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide-win32-x64-msvc",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/crates/node/package.json b/crates/node/package.json
index b03359479..9cd9ca076 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/oxide",
- "version": "4.1.17",
+ "version": "4.1.18",
"repository": {
"type": "git",
"url": "git+https://github.com/tailwindlabs/tailwindcss.git",
diff --git a/packages/@tailwindcss-browser/package.json b/packages/@tailwindcss-browser/package.json
index fbf1d4f69..6bda85f75 100644
--- a/packages/@tailwindcss-browser/package.json
+++ b/packages/@tailwindcss-browser/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/browser",
- "version": "4.1.17",
+ "version": "4.1.18",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"main": "./dist/index.global.js",
diff --git a/packages/@tailwindcss-cli/package.json b/packages/@tailwindcss-cli/package.json
index 4a4674f2c..feb9d3d44 100644
--- a/packages/@tailwindcss-cli/package.json
+++ b/packages/@tailwindcss-cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/cli",
- "version": "4.1.17",
+ "version": "4.1.18",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
diff --git a/packages/@tailwindcss-node/package.json b/packages/@tailwindcss-node/package.json
index d9d3ca67c..14bf5f928 100644
--- a/packages/@tailwindcss-node/package.json
+++ b/packages/@tailwindcss-node/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/node",
- "version": "4.1.17",
+ "version": "4.1.18",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
diff --git a/packages/@tailwindcss-postcss/package.json b/packages/@tailwindcss-postcss/package.json
index 5d8da0dd9..f91f57720 100644
--- a/packages/@tailwindcss-postcss/package.json
+++ b/packages/@tailwindcss-postcss/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/postcss",
- "version": "4.1.17",
+ "version": "4.1.18",
"description": "PostCSS plugin for Tailwind CSS, a utility-first CSS framework for rapidly building custom user interfaces",
"license": "MIT",
"repository": {
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index 38f84a82e..ef88f70a2 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/standalone",
- "version": "4.1.17",
+ "version": "4.1.18",
"private": true,
"description": "Standalone CLI for Tailwind CSS",
"license": "MIT",
diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json
index 9a1db3ce2..d7e6ee08a 100644
--- a/packages/@tailwindcss-upgrade/package.json
+++ b/packages/@tailwindcss-upgrade/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/upgrade",
- "version": "4.1.17",
+ "version": "4.1.18",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
diff --git a/packages/@tailwindcss-vite/package.json b/packages/@tailwindcss-vite/package.json
index 150e7106b..bdf5518e2 100644
--- a/packages/@tailwindcss-vite/package.json
+++ b/packages/@tailwindcss-vite/package.json
@@ -1,6 +1,6 @@
{
"name": "@tailwindcss/vite",
- "version": "4.1.17",
+ "version": "4.1.18",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
diff --git a/packages/tailwindcss/package.json b/packages/tailwindcss/package.json
index 45941768a..2dc93d5a8 100644
--- a/packages/tailwindcss/package.json
+++ b/packages/tailwindcss/package.json
@@ -1,6 +1,6 @@
{
"name": "tailwindcss",
- "version": "4.1.17",
+ "version": "4.1.18",
"description": "A utility-first CSS framework for rapidly building custom user interfaces.",
"license": "MIT",
"repository": {
From 6db2a6d637ed12489f9fd5a64ca394d934eb14f4 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 11 Dec 2025 11:03:24 -0500
Subject: [PATCH 051/353] Update changelog
---
CHANGELOG.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eab0ba035..7e6518841 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Nothing yet!
-## [4.1.18] - 2025-12-10
+## [4.1.18] - 2025-12-11
### Fixed
From 6518ea7f8042c88b53416a170f9d9312feee25ad Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 11 Dec 2025 11:31:02 -0500
Subject: [PATCH 052/353] Update changelog
---
CHANGELOG.md | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e6518841..2d1c7bc04 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
-- Nothing yet!
+### Added
+
+- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
## [4.1.18] - 2025-12-11
@@ -30,10 +32,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Don’t emit color-mix fallback rules inside `@keyframes` ([#19419](https://github.com/tailwindlabs/tailwindcss/pull/19419))
- CLI: Don't hang when output is `/dev/stdout` ([#19421](https://github.com/tailwindlabs/tailwindcss/pull/19421))
-### Added
-
-- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
-
## [3.4.19] - 2025-12-10
### Fixed
From 819881994347fc492d3da351f45bb2e4538b8034 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Thu, 11 Dec 2025 13:08:24 -0500
Subject: [PATCH 053/353] =?UTF-8?q?Update=20turbo=202.6.1=20=E2=86=92=202.?=
=?UTF-8?q?6.3=20(patch)=20(#19432)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ turbo (2.6.1 → 2.6.3) ·
[Repo](https://github.com/turborepo/turbo)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 58 +++++++++++++++++++++++++-------------------------
2 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/package.json b/package.json
index 1c62d8d3b..201da7266 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"prettier-plugin-embed": "^0.5.0",
"prettier-plugin-organize-imports": "^4.3.0",
"tsup": "^8.5.1",
- "turbo": "^2.6.1",
+ "turbo": "^2.6.3",
"typescript": "^5.5.4",
"vitest": "^4.0.3"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4f93c2154..33ffcaa00 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -77,8 +77,8 @@ importers:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.6.0)
turbo:
- specifier: ^2.6.1
- version: 2.6.1
+ specifier: ^2.6.3
+ version: 2.6.3
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -4364,38 +4364,38 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- turbo-darwin-64@2.6.1:
- resolution: {integrity: sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ==}
+ turbo-darwin-64@2.6.3:
+ resolution: {integrity: sha512-BlJJDc1CQ7SK5Y5qnl7AzpkvKSnpkfPmnA+HeU/sgny3oHZckPV2776ebO2M33CYDSor7+8HQwaodY++IINhYg==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.6.1:
- resolution: {integrity: sha512-U0PIPTPyxdLsrC3jN7jaJUwgzX5sVUBsKLO7+6AL+OASaa1NbT1pPdiZoTkblBAALLP76FM0LlnsVQOnmjYhyw==}
+ turbo-darwin-arm64@2.6.3:
+ resolution: {integrity: sha512-MwVt7rBKiOK7zdYerenfCRTypefw4kZCue35IJga9CH1+S50+KTiCkT6LBqo0hHeoH2iKuI0ldTF2a0aB72z3w==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.6.1:
- resolution: {integrity: sha512-eM1uLWgzv89bxlK29qwQEr9xYWBhmO/EGiH22UGfq+uXr+QW1OvNKKMogSN65Ry8lElMH4LZh0aX2DEc7eC0Mw==}
+ turbo-linux-64@2.6.3:
+ resolution: {integrity: sha512-cqpcw+dXxbnPtNnzeeSyWprjmuFVpHJqKcs7Jym5oXlu/ZcovEASUIUZVN3OGEM6Y/OTyyw0z09tOHNt5yBAVg==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.6.1:
- resolution: {integrity: sha512-MFFh7AxAQAycXKuZDrbeutfWM5Ep0CEZ9u7zs4Hn2FvOViTCzIfEhmuJou3/a5+q5VX1zTxQrKGy+4Lf5cdpsA==}
+ turbo-linux-arm64@2.6.3:
+ resolution: {integrity: sha512-MterpZQmjXyr4uM7zOgFSFL3oRdNKeflY7nsjxJb2TklsYqiu3Z9pQ4zRVFFH8n0mLGna7MbQMZuKoWqqHb45w==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.6.1:
- resolution: {integrity: sha512-buq7/VAN7KOjMYi4tSZT5m+jpqyhbRU2EUTTvp6V0Ii8dAkY2tAAjQN1q5q2ByflYWKecbQNTqxmVploE0LVwQ==}
+ turbo-windows-64@2.6.3:
+ resolution: {integrity: sha512-biDU70v9dLwnBdLf+daoDlNJVvqOOP8YEjqNipBHzgclbQlXbsi6Gqqelp5er81Qo3BiRgmTNx79oaZQTPb07Q==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.6.1:
- resolution: {integrity: sha512-7w+AD5vJp3R+FB0YOj1YJcNcOOvBior7bcHTodqp90S3x3bLgpr7tE6xOea1e8JkP7GK6ciKVUpQvV7psiwU5Q==}
+ turbo-windows-arm64@2.6.3:
+ resolution: {integrity: sha512-dDHVKpSeukah3VsI/xMEKeTnV9V9cjlpFSUs4bmsUiLu3Yv2ENlgVEZv65wxbeE0bh0jjpmElDT+P1KaCxArQQ==}
cpu: [arm64]
os: [win32]
- turbo@2.6.1:
- resolution: {integrity: sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA==}
+ turbo@2.6.3:
+ resolution: {integrity: sha512-bf6YKUv11l5Xfcmg76PyWoy/e2vbkkxFNBGJSnfdSXQC33ZiUfutYh6IXidc5MhsnrFkWfdNNLyaRk+kHMLlwA==}
hasBin: true
typanion@3.14.0:
@@ -8457,32 +8457,32 @@ snapshots:
fsevents: 2.3.3
optional: true
- turbo-darwin-64@2.6.1:
+ turbo-darwin-64@2.6.3:
optional: true
- turbo-darwin-arm64@2.6.1:
+ turbo-darwin-arm64@2.6.3:
optional: true
- turbo-linux-64@2.6.1:
+ turbo-linux-64@2.6.3:
optional: true
- turbo-linux-arm64@2.6.1:
+ turbo-linux-arm64@2.6.3:
optional: true
- turbo-windows-64@2.6.1:
+ turbo-windows-64@2.6.3:
optional: true
- turbo-windows-arm64@2.6.1:
+ turbo-windows-arm64@2.6.3:
optional: true
- turbo@2.6.1:
+ turbo@2.6.3:
optionalDependencies:
- turbo-darwin-64: 2.6.1
- turbo-darwin-arm64: 2.6.1
- turbo-linux-64: 2.6.1
- turbo-linux-arm64: 2.6.1
- turbo-windows-64: 2.6.1
- turbo-windows-arm64: 2.6.1
+ turbo-darwin-64: 2.6.3
+ turbo-darwin-arm64: 2.6.3
+ turbo-linux-64: 2.6.3
+ turbo-linux-arm64: 2.6.3
+ turbo-windows-64: 2.6.3
+ turbo-windows-arm64: 2.6.3
typanion@3.14.0: {}
From dd9f6562747395c680a4d9a5a4ba55e01d4387b1 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Fri, 12 Dec 2025 09:38:08 -0500
Subject: [PATCH 054/353] Fix failing `postcss` integration test (#19436)
This is what's causing the postcss test in #19434 to fail wanted to test
this in isolation without the version bumps
---
integrations/postcss/core-as-postcss-plugin.test.ts | 2 +-
integrations/postcss/index.test.ts | 8 ++------
2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/integrations/postcss/core-as-postcss-plugin.test.ts b/integrations/postcss/core-as-postcss-plugin.test.ts
index 17545fea3..0856210fe 100644
--- a/integrations/postcss/core-as-postcss-plugin.test.ts
+++ b/integrations/postcss/core-as-postcss-plugin.test.ts
@@ -48,7 +48,7 @@ describe.each(Object.keys(variantConfig))('%s', (variant) => {
},
},
async ({ exec, expect }) => {
- expect(
+ await expect(
exec('pnpm postcss src/index.css --output dist/out.css', undefined, { ignoreStdErr: true }),
).rejects.toThrowError(
`It looks like you're trying to use \`tailwindcss\` directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install \`@tailwindcss/postcss\` and update your PostCSS configuration.`,
diff --git a/integrations/postcss/index.test.ts b/integrations/postcss/index.test.ts
index 08ea852f9..80025f945 100644
--- a/integrations/postcss/index.test.ts
+++ b/integrations/postcss/index.test.ts
@@ -698,9 +698,7 @@ test(
`)
- await process.onStderr((message) =>
- message.includes('does-not-exist is not exported from package'),
- )
+ await process.onStderr((message) => message.includes('"./does-not-exist" is not exported'))
expect(await fs.dumpFiles('dist/*.css')).toMatchInlineSnapshot(`
"
@@ -743,9 +741,7 @@ test(
`,
)
- await process.onStderr((message) =>
- message.includes('does-not-exist is not exported from package'),
- )
+ await process.onStderr((message) => message.includes('"./does-not-exist" is not exported'))
expect(await fs.dumpFiles('dist/*.css')).toMatchInlineSnapshot(`
"
From cb3703fc07d2c9f62a61a61a0891dcc4a1076ded Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Fri, 12 Dec 2025 14:39:05 +0000
Subject: [PATCH 055/353] Update all of nextjs to version 16.0.10
---
playgrounds/nextjs/package.json | 4 +-
playgrounds/v3/package.json | 4 +-
pnpm-lock.yaml | 124 ++++++++++++++++----------------
3 files changed, 67 insertions(+), 65 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index 7c5d0eec8..a812ba4b8 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -11,7 +11,7 @@
"dependencies": {
"@tailwindcss/postcss": "workspace:^",
"fast-glob": "^3.3.3",
- "next": "^16.0.7",
+ "next": "^16.0.10",
"react": "^19.2.1",
"react-dom": "^19.2.1",
"tailwindcss": "workspace:^"
@@ -21,7 +21,7 @@
"@types/react": "^19.2.6",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.1",
- "eslint-config-next": "^16.0.7",
+ "eslint-config-next": "^16.0.10",
"typescript": "^5.5.4"
}
}
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index d769b38e1..d3e42e824 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -9,7 +9,7 @@
"upgrade": "node scripts/upgrade.mjs"
},
"dependencies": {
- "next": "^16.0.7",
+ "next": "^16.0.10",
"react": "^19.2.1",
"react-dom": "^19.2.1",
"tailwindcss": "^3"
@@ -20,7 +20,7 @@
"@types/react-dom": "^19.2.3",
"autoprefixer": "^10.4.22",
"eslint": "^9.39.1",
- "eslint-config-next": "^16.0.7",
+ "eslint-config-next": "^16.0.10",
"typescript": "^5.5.4"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 33ffcaa00..c36ececb3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -480,8 +480,8 @@ importers:
specifier: ^3.3.3
version: 3.3.3
next:
- specifier: ^16.0.7
- version: 16.0.7(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ specifier: ^16.0.10
+ version: 16.0.10(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react:
specifier: ^19.2.1
version: 19.2.1
@@ -505,8 +505,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: ^16.0.7
- version: 16.0.7(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ specifier: ^16.0.10
+ version: 16.0.10(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -514,8 +514,8 @@ importers:
playgrounds/v3:
dependencies:
next:
- specifier: ^16.0.7
- version: 16.0.7(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ specifier: ^16.0.10
+ version: 16.0.10(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react:
specifier: ^19.2.1
version: 19.2.1
@@ -542,8 +542,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: ^16.0.7
- version: 16.0.7(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ specifier: ^16.0.10
+ version: 16.0.10(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -1830,56 +1830,56 @@ packages:
resolution: {integrity: sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ==}
engines: {node: '>= 10'}
- '@next/env@16.0.7':
- resolution: {integrity: sha512-gpaNgUh5nftFKRkRQGnVi5dpcYSKGcZZkQffZ172OrG/XkrnS7UBTQ648YY+8ME92cC4IojpI2LqTC8sTDhAaw==}
+ '@next/env@16.0.10':
+ resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==}
- '@next/eslint-plugin-next@16.0.7':
- resolution: {integrity: sha512-hFrTNZcMEG+k7qxVxZJq3F32Kms130FAhG8lvw2zkKBgAcNOJIxlljNiCjGygvBshvaGBdf88q2CqWtnqezDHA==}
+ '@next/eslint-plugin-next@16.0.10':
+ resolution: {integrity: sha512-b2NlWN70bbPLmfyoLvvidPKWENBYYIe017ZGUpElvQjDytCWgxPJx7L9juxHt0xHvNVA08ZHJdOyhGzon/KJuw==}
- '@next/swc-darwin-arm64@16.0.7':
- resolution: {integrity: sha512-LlDtCYOEj/rfSnEn/Idi+j1QKHxY9BJFmxx7108A6D8K0SB+bNgfYQATPk/4LqOl4C0Wo3LACg2ie6s7xqMpJg==}
+ '@next/swc-darwin-arm64@16.0.10':
+ resolution: {integrity: sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@16.0.7':
- resolution: {integrity: sha512-rtZ7BhnVvO1ICf3QzfW9H3aPz7GhBrnSIMZyr4Qy6boXF0b5E3QLs+cvJmg3PsTCG2M1PBoC+DANUi4wCOKXpA==}
+ '@next/swc-darwin-x64@16.0.10':
+ resolution: {integrity: sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@16.0.7':
- resolution: {integrity: sha512-mloD5WcPIeIeeZqAIP5c2kdaTa6StwP4/2EGy1mUw8HiexSHGK/jcM7lFuS3u3i2zn+xH9+wXJs6njO7VrAqww==}
+ '@next/swc-linux-arm64-gnu@16.0.10':
+ resolution: {integrity: sha512-uQtWE3X0iGB8apTIskOMi2w/MKONrPOUCi5yLO+v3O8Mb5c7K4Q5KD1jvTpTF5gJKa3VH/ijKjKUq9O9UhwOYw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@16.0.7':
- resolution: {integrity: sha512-+ksWNrZrthisXuo9gd1XnjHRowCbMtl/YgMpbRvFeDEqEBd523YHPWpBuDjomod88U8Xliw5DHhekBC3EOOd9g==}
+ '@next/swc-linux-arm64-musl@16.0.10':
+ resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@16.0.7':
- resolution: {integrity: sha512-4WtJU5cRDxpEE44Ana2Xro1284hnyVpBb62lIpU5k85D8xXxatT+rXxBgPkc7C1XwkZMWpK5rXLXTh9PFipWsA==}
+ '@next/swc-linux-x64-gnu@16.0.10':
+ resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@16.0.7':
- resolution: {integrity: sha512-HYlhqIP6kBPXalW2dbMTSuB4+8fe+j9juyxwfMwCe9kQPPeiyFn7NMjNfoFOfJ2eXkeQsoUGXg+O2SE3m4Qg2w==}
+ '@next/swc-linux-x64-musl@16.0.10':
+ resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@16.0.7':
- resolution: {integrity: sha512-EviG+43iOoBRZg9deGauXExjRphhuYmIOJ12b9sAPy0eQ6iwcPxfED2asb/s2/yiLYOdm37kPaiZu8uXSYPs0Q==}
+ '@next/swc-win32-arm64-msvc@16.0.10':
+ resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@16.0.7':
- resolution: {integrity: sha512-gniPjy55zp5Eg0896qSrf3yB1dw4F/3s8VK1ephdsZZ129j2n6e1WqCbE2YgcKhW9hPB9TVZENugquWJD5x0ug==}
+ '@next/swc-win32-x64-msvc@16.0.10':
+ resolution: {integrity: sha512-E+njfCoFLb01RAFEnGZn6ERoOqhK1Gl3Lfz1Kjnj0Ulfu7oJbuMyvBKNj/bw8XZnenHDASlygTjZICQW+rYW1Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -2927,8 +2927,8 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- eslint-config-next@16.0.7:
- resolution: {integrity: sha512-WubFGLFHfk2KivkdRGfx6cGSFhaQqhERRfyO8BRx+qiGPGp7WLKcPvYC4mdx1z3VhVRcrfFzczjjTrbJZOpnEQ==}
+ eslint-config-next@16.0.10:
+ resolution: {integrity: sha512-BxouZUm0I45K4yjOOIzj24nTi0H2cGo0y7xUmk+Po/PYtJXFBYVDS1BguE7t28efXjKdcN0tmiLivxQy//SsZg==}
peerDependencies:
eslint: '>=9.0.0'
typescript: '>=3.3.1'
@@ -3685,8 +3685,8 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- next@16.0.7:
- resolution: {integrity: sha512-3mBRJyPxT4LOxAJI6IsXeFtKfiJUbjCLgvXO02fV8Wy/lIhPvP94Fe7dGhUgHXcQy4sSuYwQNcOLhIfOm0rL0A==}
+ next@16.0.10:
+ resolution: {integrity: sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -5561,34 +5561,34 @@ snapshots:
'@napi-rs/wasm-tools-win32-ia32-msvc': 1.0.1
'@napi-rs/wasm-tools-win32-x64-msvc': 1.0.1
- '@next/env@16.0.7': {}
+ '@next/env@16.0.10': {}
- '@next/eslint-plugin-next@16.0.7':
+ '@next/eslint-plugin-next@16.0.10':
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@16.0.7':
+ '@next/swc-darwin-arm64@16.0.10':
optional: true
- '@next/swc-darwin-x64@16.0.7':
+ '@next/swc-darwin-x64@16.0.10':
optional: true
- '@next/swc-linux-arm64-gnu@16.0.7':
+ '@next/swc-linux-arm64-gnu@16.0.10':
optional: true
- '@next/swc-linux-arm64-musl@16.0.7':
+ '@next/swc-linux-arm64-musl@16.0.10':
optional: true
- '@next/swc-linux-x64-gnu@16.0.7':
+ '@next/swc-linux-x64-gnu@16.0.10':
optional: true
- '@next/swc-linux-x64-musl@16.0.7':
+ '@next/swc-linux-x64-musl@16.0.10':
optional: true
- '@next/swc-win32-arm64-msvc@16.0.7':
+ '@next/swc-win32-arm64-msvc@16.0.10':
optional: true
- '@next/swc-win32-x64-msvc@16.0.7':
+ '@next/swc-win32-x64-msvc@16.0.10':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -6791,13 +6791,13 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.0.7(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.0.10(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
- '@next/eslint-plugin-next': 16.0.7
+ '@next/eslint-plugin-next': 16.0.10
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
@@ -6811,9 +6811,9 @@ snapshots:
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.0.7(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.0.10(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
- '@next/eslint-plugin-next': 16.0.7
+ '@next/eslint-plugin-next': 16.0.10
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
@@ -6851,7 +6851,7 @@ snapshots:
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6898,7 +6898,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7684,24 +7684,24 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.7(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
+ next@16.0.10(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- '@next/env': 16.0.7
+ '@next/env': 16.0.10
'@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001755
postcss: 8.4.31
react: 19.2.1
react-dom: 19.2.1(react@19.2.1)
- styled-jsx: 5.1.6(react@19.2.1)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.1)
optionalDependencies:
- '@next/swc-darwin-arm64': 16.0.7
- '@next/swc-darwin-x64': 16.0.7
- '@next/swc-linux-arm64-gnu': 16.0.7
- '@next/swc-linux-arm64-musl': 16.0.7
- '@next/swc-linux-x64-gnu': 16.0.7
- '@next/swc-linux-x64-musl': 16.0.7
- '@next/swc-win32-arm64-msvc': 16.0.7
- '@next/swc-win32-x64-msvc': 16.0.7
+ '@next/swc-darwin-arm64': 16.0.10
+ '@next/swc-darwin-x64': 16.0.10
+ '@next/swc-linux-arm64-gnu': 16.0.10
+ '@next/swc-linux-arm64-musl': 16.0.10
+ '@next/swc-linux-x64-gnu': 16.0.10
+ '@next/swc-linux-x64-musl': 16.0.10
+ '@next/swc-win32-arm64-msvc': 16.0.10
+ '@next/swc-win32-x64-msvc': 16.0.10
'@playwright/test': 1.57.0
sharp: 0.34.5
transitivePeerDependencies:
@@ -8290,10 +8290,12 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(react@19.2.1):
+ styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.1):
dependencies:
client-only: 0.0.1
react: 19.2.1
+ optionalDependencies:
+ '@babel/core': 7.28.5
sucrase@3.35.0:
dependencies:
From 52e91db52c743493dff6c8c61b3c920119f18dac Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Mon, 15 Dec 2025 09:35:08 -0500
Subject: [PATCH 056/353] =?UTF-8?q?Update=20@vitejs/plugin-react=205.1.1?=
=?UTF-8?q?=20=E2=86=92=205.1.2=20(patch)=20(#19440)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @vitejs/plugin-react (5.1.1 → 5.1.2) ·
[Repo](https://github.com/vitejs/vite-plugin-react) ·
[Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/vite/package.json | 2 +-
pnpm-lock.yaml | 46 +++++++++++++++--------------------
2 files changed, 20 insertions(+), 28 deletions(-)
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index 3bd94b7ba..b7f19f6e8 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -10,7 +10,7 @@
},
"dependencies": {
"@tailwindcss/vite": "workspace:^",
- "@vitejs/plugin-react": "^5.1.1",
+ "@vitejs/plugin-react": "^5.1.2",
"react": "^19.2.1",
"react-dom": "^19.2.1",
"tailwindcss": "workspace:^"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c36ececb3..b10eaf910 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -481,7 +481,7 @@ importers:
version: 3.3.3
next:
specifier: ^16.0.10
- version: 16.0.10(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ version: 16.0.10(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react:
specifier: ^19.2.1
version: 19.2.1
@@ -515,7 +515,7 @@ importers:
dependencies:
next:
specifier: ^16.0.10
- version: 16.0.10(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ version: 16.0.10(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react:
specifier: ^19.2.1
version: 19.2.1
@@ -554,8 +554,8 @@ importers:
specifier: workspace:^
version: link:../../packages/@tailwindcss-vite
'@vitejs/plugin-react':
- specifier: ^5.1.1
- version: 5.1.1(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
+ specifier: ^5.1.2
+ version: 5.1.2(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
react:
specifier: ^19.2.1
version: 19.2.1
@@ -627,10 +627,6 @@ packages:
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-identifier@7.27.1':
- resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-validator-identifier@7.28.5':
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
engines: {node: '>=6.9.0'}
@@ -2192,8 +2188,8 @@ packages:
engines: {node: '>=18'}
hasBin: true
- '@rolldown/pluginutils@1.0.0-beta.47':
- resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==}
+ '@rolldown/pluginutils@1.0.0-beta.53':
+ resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==}
'@rollup/rollup-android-arm-eabi@4.44.0':
resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==}
@@ -2444,8 +2440,8 @@ packages:
resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@vitejs/plugin-react@5.1.1':
- resolution: {integrity: sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA==}
+ '@vitejs/plugin-react@5.1.2':
+ resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==}
engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
@@ -4637,7 +4633,7 @@ snapshots:
'@babel/code-frame@7.27.1':
dependencies:
- '@babel/helper-validator-identifier': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
js-tokens: 4.0.0
picocolors: 1.1.1
@@ -4692,7 +4688,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
'@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -4701,8 +4697,6 @@ snapshots:
'@babel/helper-string-parser@7.27.1': {}
- '@babel/helper-validator-identifier@7.27.1': {}
-
'@babel/helper-validator-identifier@7.28.5': {}
'@babel/helper-validator-option@7.27.1': {}
@@ -5831,7 +5825,7 @@ snapshots:
dependencies:
playwright: 1.57.0
- '@rolldown/pluginutils@1.0.0-beta.47': {}
+ '@rolldown/pluginutils@1.0.0-beta.53': {}
'@rollup/rollup-android-arm-eabi@4.44.0':
optional: true
@@ -6167,12 +6161,12 @@ snapshots:
'@typescript-eslint/types': 8.47.0
eslint-visitor-keys: 4.2.1
- '@vitejs/plugin-react@5.1.1(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
+ '@vitejs/plugin-react@5.1.2(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
dependencies:
'@babel/core': 7.28.5
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
'@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5)
- '@rolldown/pluginutils': 1.0.0-beta.47
+ '@rolldown/pluginutils': 1.0.0-beta.53
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
@@ -6797,7 +6791,7 @@ snapshots:
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
@@ -6851,7 +6845,7 @@ snapshots:
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6898,7 +6892,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7684,7 +7678,7 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.10(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
+ next@16.0.10(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
'@next/env': 16.0.10
'@swc/helpers': 0.5.15
@@ -7692,7 +7686,7 @@ snapshots:
postcss: 8.4.31
react: 19.2.1
react-dom: 19.2.1(react@19.2.1)
- styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.1)
+ styled-jsx: 5.1.6(react@19.2.1)
optionalDependencies:
'@next/swc-darwin-arm64': 16.0.10
'@next/swc-darwin-x64': 16.0.10
@@ -8290,12 +8284,10 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.1):
+ styled-jsx@5.1.6(react@19.2.1):
dependencies:
client-only: 0.0.1
react: 19.2.1
- optionalDependencies:
- '@babel/core': 7.28.5
sucrase@3.35.0:
dependencies:
From 73b5df620c3122c5a825fc30fe8b4a1021aafe1a Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Mon, 15 Dec 2025 23:33:16 -0500
Subject: [PATCH 057/353] =?UTF-8?q?Update=20@types/react=2019.2.6=20?=
=?UTF-8?q?=E2=86=92=2019.2.7=20(patch)=20(#19448)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @types/react (19.2.2 → 19.2.7) ·
[Repo](https://github.com/DefinitelyTyped/DefinitelyTyped)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/nextjs/package.json | 2 +-
playgrounds/v3/package.json | 2 +-
playgrounds/vite/package.json | 2 +-
pnpm-lock.yaml | 44 +++++++++++----------------------
4 files changed, 17 insertions(+), 33 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index a812ba4b8..aae484532 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -18,7 +18,7 @@
},
"devDependencies": {
"@types/node": "catalog:",
- "@types/react": "^19.2.6",
+ "@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.1",
"eslint-config-next": "^16.0.10",
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index d3e42e824..e4df6ad10 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -16,7 +16,7 @@
},
"devDependencies": {
"@types/node": "^20.14.8",
- "@types/react": "^19.2.6",
+ "@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"autoprefixer": "^10.4.22",
"eslint": "^9.39.1",
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index b7f19f6e8..05524e6bf 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -16,7 +16,7 @@
"tailwindcss": "workspace:^"
},
"devDependencies": {
- "@types/react": "^19.2.2",
+ "@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"bun": "^1.3.3",
"vite": "catalog:"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b10eaf910..d10c01df4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -496,11 +496,11 @@ importers:
specifier: 'catalog:'
version: 20.19.1
'@types/react':
- specifier: ^19.2.6
- version: 19.2.6
+ specifier: ^19.2.7
+ version: 19.2.7
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.6)
+ version: 19.2.3(@types/react@19.2.7)
eslint:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
@@ -530,11 +530,11 @@ importers:
specifier: ^20.14.8
version: 20.14.13
'@types/react':
- specifier: ^19.2.6
- version: 19.2.6
+ specifier: ^19.2.7
+ version: 19.2.7
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.6)
+ version: 19.2.3(@types/react@19.2.7)
autoprefixer:
specifier: ^10.4.22
version: 10.4.22(postcss@8.4.47)
@@ -567,11 +567,11 @@ importers:
version: link:../../packages/tailwindcss
devDependencies:
'@types/react':
- specifier: ^19.2.2
- version: 19.2.2
+ specifier: ^19.2.7
+ version: 19.2.7
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.2)
+ version: 19.2.3(@types/react@19.2.7)
bun:
specifier: ^1.3.3
version: 1.3.3
@@ -2372,11 +2372,8 @@ packages:
peerDependencies:
'@types/react': ^19.2.0
- '@types/react@19.2.2':
- resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==}
-
- '@types/react@19.2.6':
- resolution: {integrity: sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==}
+ '@types/react@19.2.7':
+ resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==}
'@types/semver@7.7.1':
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
@@ -2748,9 +2745,6 @@ packages:
engines: {node: '>=4'}
hasBin: true
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
@@ -5969,19 +5963,11 @@ snapshots:
dependencies:
postcss: 8.4.41
- '@types/react-dom@19.2.3(@types/react@19.2.2)':
+ '@types/react-dom@19.2.3(@types/react@19.2.7)':
dependencies:
- '@types/react': 19.2.2
+ '@types/react': 19.2.7
- '@types/react-dom@19.2.3(@types/react@19.2.6)':
- dependencies:
- '@types/react': 19.2.6
-
- '@types/react@19.2.2':
- dependencies:
- csstype: 3.1.3
-
- '@types/react@19.2.6':
+ '@types/react@19.2.7':
dependencies:
csstype: 3.2.3
@@ -6503,8 +6489,6 @@ snapshots:
cssesc@3.0.0: {}
- csstype@3.1.3: {}
-
csstype@3.2.3: {}
damerau-levenshtein@1.0.8: {}
From dd1ca3c709a9e942634843911b0c5783de20ce13 Mon Sep 17 00:00:00 2001
From: Rasso Hilber
Date: Tue, 16 Dec 2025 22:57:36 +0100
Subject: [PATCH 058/353] Do not wrap `color-mix` in a `@supports` rule if one
already exists (#19450)
Related issue: #19445
## Summary
Fixes an issue where tailwindcss wraps `color-mix` inside a `@supports`
block even if the original code already checks for support.
Uncompiled Code:
```css
@utility foo {
@supports (color: color-mix(in lab, red, red)) {
background: color-mix(in lab, var(--color-1), var(--color-2));
}
}
```
### Compiled code: Current behavior
https://play.tailwindcss.com/KSvR7wefdh?file=css
```css
@layer utilities {
.foo {
@supports (color: color-mix(in lab, red, red)) {
background: var(--color-1);
@supports (color: color-mix(in lab, red, red)) {
background: color-mix(in lab, var(--color-1), var(--color-2));
}
}
}
```
### Compiled code: Fixed behavior
```css
@layer utilities {
@supports (color: color-mix(in lab, red, red)) {
.foo {
background: color-mix(in lab, var(--color-1), var(--color-2));
}
}
```
## Test plan
I have tested this by writing a new test that was at first failing. Now
it passes.
---------
Co-authored-by: Jordan Pittman
---
CHANGELOG.md | 4 ++++
packages/tailwindcss/src/ast.ts | 3 +++
packages/tailwindcss/src/index.test.ts | 22 ++++++++++++++++++++++
3 files changed, 29 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2d1c7bc04..7829df19c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Fixed
+
+- Do not wrap `color-mix` in a `@supports` rule if one already exists ([#19450](https://github.com/tailwindlabs/tailwindcss/pull/19450))
+
### Added
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
diff --git a/packages/tailwindcss/src/ast.ts b/packages/tailwindcss/src/ast.ts
index ab0a4fb4d..77fa742e9 100644
--- a/packages/tailwindcss/src/ast.ts
+++ b/packages/tailwindcss/src/ast.ts
@@ -285,6 +285,7 @@ export function optimizeAst(
if (
polyfills & Polyfills.ColorMix &&
node.value.includes('color-mix(') &&
+ !context.supportsColorMix &&
!context.keyframes
) {
colorMixDeclarations.get(parent).add(node)
@@ -382,6 +383,8 @@ export function optimizeAst(
else if (node.kind === 'at-rule') {
if (node.name === '@keyframes') {
context = { ...context, keyframes: true }
+ } else if (node.name === '@supports' && node.params.includes('color-mix(')) {
+ context = { ...context, supportsColorMix: true }
}
let copy = { ...node, nodes: [] }
diff --git a/packages/tailwindcss/src/index.test.ts b/packages/tailwindcss/src/index.test.ts
index 5cd5282b0..595950464 100644
--- a/packages/tailwindcss/src/index.test.ts
+++ b/packages/tailwindcss/src/index.test.ts
@@ -5812,6 +5812,28 @@ describe('`color-mix(…)` polyfill', () => {
}"
`)
})
+
+ it('does not apply optimizations when already inside a @supports (color: color-mix... block', async () => {
+ await expect(
+ compileCss(
+ css`
+ @tailwind utilities;
+ @utility mixed {
+ @supports (color: color-mix(in lab, red, red)) {
+ background: color-mix(in oklab, var(--color-1), var(--color-2) 0%);
+ }
+ }
+ `,
+ ['mixed'],
+ ),
+ ).resolves.toMatchInlineSnapshot(`
+ "@supports (color: color-mix(in lab, red, red)) {
+ .mixed {
+ background: color-mix(in oklab, var(--color-1), var(--color-2) 0%);
+ }
+ }"
+ `)
+ })
})
describe('`@property` polyfill', async () => {
From 72dea0cfea9833f26c14509e87aba53bba848452 Mon Sep 17 00:00:00 2001
From: Rasso Hilber
Date: Thu, 18 Dec 2025 04:15:42 +0100
Subject: [PATCH 059/353] Clarify the `replaceAlpha` function comment (#19457)
## Summary
Updated the comment of the `replaceAlpha` function to clarify the
function's purpose.
## Test plan
n/a
---
packages/tailwindcss/src/utilities.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index 5e7877825..8ec903af6 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -193,7 +193,7 @@ export function withAlpha(value: string, alpha: string): string {
}
/**
- * Apply opacity to a color using `color-mix`.
+ * Replace the opacity in a color using relative color syntax.
*/
export function replaceAlpha(value: string, alpha: string): string {
// Convert numeric values (like `0.5`) to percentages (like `50%`) so they
From 1fbdd51a8d260103288657899ec65905325f375d Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Wed, 17 Dec 2025 22:27:50 -0500
Subject: [PATCH 060/353] Update test
---
integrations/cli/plugins.test.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/integrations/cli/plugins.test.ts b/integrations/cli/plugins.test.ts
index 0597e247b..c0f7c39c3 100644
--- a/integrations/cli/plugins.test.ts
+++ b/integrations/cli/plugins.test.ts
@@ -117,7 +117,7 @@ test(
await fs.expectFileToContain('dist/out.css', [
//
`::-webkit-date-and-time-value`,
- `[type='checkbox']:indeterminate`,
+ `input:where([type='checkbox']):indeterminate`,
])
// No classes are included even though they are used in the HTML
From 7fcdd84e568380464fbf0086fb64c8a2c146ca2b Mon Sep 17 00:00:00 2001
From: Justin Wong <11310624+wongjn@users.noreply.github.com>
Date: Thu, 18 Dec 2025 15:51:00 +0000
Subject: [PATCH 061/353] Allow whitespace around `@source inline()` arg
(#19461)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
Inspired by #19460, relaxes whitespace syntax around `@source
inline(…):`
### Before
```css
/* ❌ Error: `@source` paths must be quoted. */
@source inline( "underline" );
@source inline(
"underline"
);
```
### After
```css
/* ✅ Generates the class names as normal. */
@source inline( "underline" );
@source inline(
"underline"
);
```
## Test plan
Added tests to `packages/tailwindcss/src/index.test.ts`.
---
CHANGELOG.md | 1 +
packages/tailwindcss/src/index.test.ts | 38 ++++++++++++++++++++++++++
packages/tailwindcss/src/index.ts | 2 +-
3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7829df19c..be8ec9aef 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Do not wrap `color-mix` in a `@supports` rule if one already exists ([#19450](https://github.com/tailwindlabs/tailwindcss/pull/19450))
+- Allow whitespace around `@source inline()` argument ([#19461](https://github.com/tailwindlabs/tailwindcss/pull/19461))
### Added
diff --git a/packages/tailwindcss/src/index.test.ts b/packages/tailwindcss/src/index.test.ts
index 595950464..2d6ab8daf 100644
--- a/packages/tailwindcss/src/index.test.ts
+++ b/packages/tailwindcss/src/index.test.ts
@@ -3802,6 +3802,44 @@ describe('@source', () => {
expect(build(['bg-red-500', 'bg-red-700'])).toMatchInlineSnapshot(`""`)
})
+
+ test('works with whitespace around the argument', async () => {
+ let { build } = await compile(
+ css`
+ /* prettier-ignore */
+ @source inline( "underline" );
+ @tailwind utilities;
+ `,
+ { base: '/root' },
+ )
+
+ expect(build([])).toMatchInlineSnapshot(`
+ ".underline {
+ text-decoration-line: underline;
+ }
+ "
+ `)
+ })
+
+ test('works with newlines around the argument', async () => {
+ let { build } = await compile(
+ css`
+ /* prettier-ignore */
+ @source inline(
+ "underline"
+ );
+ @tailwind utilities;
+ `,
+ { base: '/root' },
+ )
+
+ expect(build([])).toMatchInlineSnapshot(`
+ ".underline {
+ text-decoration-line: underline;
+ }
+ "
+ `)
+ })
})
})
diff --git a/packages/tailwindcss/src/index.ts b/packages/tailwindcss/src/index.ts
index 512c2f831..a511b0838 100644
--- a/packages/tailwindcss/src/index.ts
+++ b/packages/tailwindcss/src/index.ts
@@ -274,7 +274,7 @@ async function parseCss(
if (path[0] === 'i' && path.startsWith('inline(')) {
inline = true
- path = path.slice(7, -1)
+ path = path.slice(7, -1).trim()
}
if (
From 219e019b2458a5441bf7e3cf54884ed8b888f3cc Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Thu, 18 Dec 2025 15:02:27 -0500
Subject: [PATCH 062/353] CLI: Emit comment when source maps are saved to files
(#19447)
See
https://github.com/tailwindlabs/tailwindcss/issues/19362#issuecomment-3654376948
---
CHANGELOG.md | 1 +
integrations/cli/index.test.ts | 10 +++++-----
.../@tailwindcss-cli/src/commands/build/index.ts | 12 ++++++++++++
packages/@tailwindcss-node/src/source-maps.ts | 15 ++++++++-------
4 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index be8ec9aef..b776a93e5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Do not wrap `color-mix` in a `@supports` rule if one already exists ([#19450](https://github.com/tailwindlabs/tailwindcss/pull/19450))
- Allow whitespace around `@source inline()` argument ([#19461](https://github.com/tailwindlabs/tailwindcss/pull/19461))
+- CLI: Emit comment when source maps are saved to files ([#19447](https://github.com/tailwindlabs/tailwindcss/pull/19447))
### Added
diff --git a/integrations/cli/index.test.ts b/integrations/cli/index.test.ts
index 870a1baec..409a9de7c 100644
--- a/integrations/cli/index.test.ts
+++ b/integrations/cli/index.test.ts
@@ -752,7 +752,7 @@ describe.each([
expect(map.at(4, 0)).toMatchObject({
source: null,
original: '(none)',
- generated: '}...',
+ generated: '}\n\n/*# sou...',
})
},
)
@@ -815,7 +815,7 @@ describe.each([
expect(map.at(4, 0)).toMatchObject({
source: null,
original: '(none)',
- generated: '}...',
+ generated: '}\n\n/*# sou...',
})
},
)
@@ -1118,7 +1118,7 @@ describe.each([
expect(map.at(4, 0)).toMatchObject({
source: null,
original: '(none)',
- generated: '}...',
+ generated: '}\n\n/*# sou...',
})
// Write to project source files
@@ -1190,7 +1190,7 @@ describe.each([
expect(map.at(7, 0)).toMatchObject({
source: null,
original: '(none)',
- generated: '}...',
+ generated: '}\n\n/*# sou...',
})
// Write to the main CSS file
@@ -1290,7 +1290,7 @@ describe.each([
expect(map.at(10, 0)).toMatchObject({
source: null,
original: '(none)',
- generated: '}...',
+ generated: '}\n\n/*# sou...',
})
},
)
diff --git a/packages/@tailwindcss-cli/src/commands/build/index.ts b/packages/@tailwindcss-cli/src/commands/build/index.ts
index f0d441fe2..eabd2a1de 100644
--- a/packages/@tailwindcss-cli/src/commands/build/index.ts
+++ b/packages/@tailwindcss-cli/src/commands/build/index.ts
@@ -182,6 +182,18 @@ export async function handle(args: Result>) {
output += `\n`
output += map.inline
} else if (typeof args['--map'] === 'string') {
+ let basePath =
+ args['--output'] && args['--output'] !== '-'
+ ? path.dirname(path.resolve(args['--output']))
+ : process.cwd()
+
+ let mapPath = path.resolve(args['--map'])
+
+ let relativePath = path.relative(basePath, mapPath)
+
+ output += `\n`
+ output += map.comment(relativePath)
+
DEBUG && I.start('Write source map')
await outputFile(args['--map'], map.raw)
DEBUG && I.end('Write source map')
diff --git a/packages/@tailwindcss-node/src/source-maps.ts b/packages/@tailwindcss-node/src/source-maps.ts
index 3f02efb24..8810b106c 100644
--- a/packages/@tailwindcss-node/src/source-maps.ts
+++ b/packages/@tailwindcss-node/src/source-maps.ts
@@ -6,6 +6,7 @@ export type { DecodedSource, DecodedSourceMap }
export interface SourceMap {
readonly raw: string
readonly inline: string
+ comment(url: string): string
}
function serializeSourceMap(map: DecodedSourceMap): string {
@@ -44,16 +45,16 @@ function serializeSourceMap(map: DecodedSourceMap): string {
export function toSourceMap(map: DecodedSourceMap | string): SourceMap {
let raw = typeof map === 'string' ? map : serializeSourceMap(map)
+ function comment(url: string) {
+ return `/*# sourceMappingURL=${url} */\n`
+ }
+
return {
raw,
get inline() {
- let tmp = ''
-
- tmp += '/*# sourceMappingURL=data:application/json;base64,'
- tmp += Buffer.from(raw, 'utf-8').toString('base64')
- tmp += ' */\n'
-
- return tmp
+ let inlined = Buffer.from(raw, 'utf-8').toString('base64')
+ return comment(`data:application/json;base64,${inlined}`)
},
+ comment,
}
}
From d6ad8dddcfa774b6b7963fb40ef08bdfffa9f1d9 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Thu, 18 Dec 2025 15:03:51 -0500
Subject: [PATCH 063/353] =?UTF-8?q?Update=20enhanced-resolve=205.18.3=20?=
=?UTF-8?q?=E2=86=92=205.18.4=20(patch)=20(#19462)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ enhanced-resolve (5.18.3 → 5.18.4) ·
[Repo](https://github.com/webpack/enhanced-resolve)
Release Notes
Fixes
Allow subpath imports that start with #/
Handle file: schema
Does any of this look wrong? Please
let us know.
Commits
See
the full diff on Github . The new version differs by 6 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
packages/@tailwindcss-cli/package.json | 2 +-
packages/@tailwindcss-node/package.json | 2 +-
packages/@tailwindcss-standalone/package.json | 2 +-
packages/@tailwindcss-upgrade/package.json | 2 +-
pnpm-lock.yaml | 26 +++++++++----------
5 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/packages/@tailwindcss-cli/package.json b/packages/@tailwindcss-cli/package.json
index feb9d3d44..346d244ec 100644
--- a/packages/@tailwindcss-cli/package.json
+++ b/packages/@tailwindcss-cli/package.json
@@ -32,7 +32,7 @@
"@parcel/watcher": "^2.5.1",
"@tailwindcss/node": "workspace:*",
"@tailwindcss/oxide": "workspace:*",
- "enhanced-resolve": "^5.18.3",
+ "enhanced-resolve": "^5.18.4",
"mri": "^1.2.0",
"picocolors": "^1.1.1",
"tailwindcss": "workspace:*"
diff --git a/packages/@tailwindcss-node/package.json b/packages/@tailwindcss-node/package.json
index 14bf5f928..257b440ae 100644
--- a/packages/@tailwindcss-node/package.json
+++ b/packages/@tailwindcss-node/package.json
@@ -38,7 +38,7 @@
},
"dependencies": {
"@jridgewell/remapping": "^2.3.4",
- "enhanced-resolve": "^5.18.3",
+ "enhanced-resolve": "^5.18.4",
"jiti": "^2.6.1",
"lightningcss": "catalog:",
"magic-string": "^0.30.21",
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index ef88f70a2..e699d229c 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -30,7 +30,7 @@
"@tailwindcss/forms": "^0.5.10",
"@tailwindcss/typography": "^0.5.19",
"detect-libc": "1.0.3",
- "enhanced-resolve": "^5.18.3",
+ "enhanced-resolve": "^5.18.4",
"tailwindcss": "workspace:*"
},
"__notes": "These binary packages must be included so Bun can build the CLI for all supported platforms. We also rely on Lightning CSS and Parcel being patched so Bun can statically analyze the executables.",
diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json
index d7e6ee08a..b11409cf6 100644
--- a/packages/@tailwindcss-upgrade/package.json
+++ b/packages/@tailwindcss-upgrade/package.json
@@ -31,7 +31,7 @@
"@tailwindcss/oxide": "workspace:*",
"braces": "^3.0.3",
"dedent": "1.7.0",
- "enhanced-resolve": "^5.18.3",
+ "enhanced-resolve": "^5.18.4",
"globby": "^15.0.0",
"jiti": "^2.0.0-beta.3",
"mri": "^1.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d10c01df4..2da9f6718 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -216,8 +216,8 @@ importers:
specifier: workspace:*
version: link:../../crates/node
enhanced-resolve:
- specifier: ^5.18.3
- version: 5.18.3
+ specifier: ^5.18.4
+ version: 5.18.4
mri:
specifier: ^1.2.0
version: 1.2.0
@@ -234,8 +234,8 @@ importers:
specifier: ^2.3.4
version: 2.3.5
enhanced-resolve:
- specifier: ^5.18.3
- version: 5.18.3
+ specifier: ^5.18.4
+ version: 5.18.4
jiti:
specifier: ^2.6.1
version: 2.6.1
@@ -304,8 +304,8 @@ importers:
specifier: 1.0.3
version: 1.0.3
enhanced-resolve:
- specifier: ^5.18.3
- version: 5.18.3
+ specifier: ^5.18.4
+ version: 5.18.4
tailwindcss:
specifier: workspace:*
version: link:../tailwindcss
@@ -374,8 +374,8 @@ importers:
specifier: 1.7.0
version: 1.7.0
enhanced-resolve:
- specifier: ^5.18.3
- version: 5.18.3
+ specifier: ^5.18.4
+ version: 5.18.4
globby:
specifier: ^15.0.0
version: 15.0.0
@@ -2852,8 +2852,8 @@ packages:
emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
- enhanced-resolve@5.18.3:
- resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
+ enhanced-resolve@5.18.4:
+ resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==}
engines: {node: '>=10.13.0'}
es-abstract@1.24.0:
@@ -6572,7 +6572,7 @@ snapshots:
emoji-regex@9.2.2: {}
- enhanced-resolve@5.18.3:
+ enhanced-resolve@5.18.4:
dependencies:
graceful-fs: 4.2.11
tapable: 2.2.1
@@ -6821,7 +6821,7 @@ snapshots:
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
- enhanced-resolve: 5.18.3
+ enhanced-resolve: 5.18.4
eslint: 9.39.1(jiti@2.6.1)
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
@@ -6840,7 +6840,7 @@ snapshots:
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
- enhanced-resolve: 5.18.3
+ enhanced-resolve: 5.18.4
eslint: 9.39.1(jiti@2.6.1)
eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
From dbd26b90e73338018a97654cc1bc542f868d24a7 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Thu, 18 Dec 2025 20:28:49 -0500
Subject: [PATCH 064/353] =?UTF-8?q?Update=20all=20of=20react=2019.2.1=20?=
=?UTF-8?q?=E2=86=92=2019.2.3=20(patch)=20(#19464)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ react (19.2.1 → 19.2.3) ·
[Repo](https://github.com/facebook/react) ·
[Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
Release Notes
React Server Components
React Server Components
Does any of this look wrong? Please let us
know.
Commits
See
the full diff on Github . The new version differs by 6 commits:
#### ✳️ react-dom (19.2.1 → 19.2.3) ·
[Repo](https://github.com/facebook/react) ·
[Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
Release Notes
React Server Components
React Server Components
Does any of this look wrong? Please let us
know.
Commits
See
the full diff on Github . The new version differs by 6 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/nextjs/package.json | 4 +--
playgrounds/v3/package.json | 4 +--
playgrounds/vite/package.json | 4 +--
pnpm-lock.yaml | 56 ++++++++++++++++-----------------
4 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index aae484532..7abcbfebf 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -12,8 +12,8 @@
"@tailwindcss/postcss": "workspace:^",
"fast-glob": "^3.3.3",
"next": "^16.0.10",
- "react": "^19.2.1",
- "react-dom": "^19.2.1",
+ "react": "^19.2.3",
+ "react-dom": "^19.2.3",
"tailwindcss": "workspace:^"
},
"devDependencies": {
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index e4df6ad10..ec8fcca80 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -10,8 +10,8 @@
},
"dependencies": {
"next": "^16.0.10",
- "react": "^19.2.1",
- "react-dom": "^19.2.1",
+ "react": "^19.2.3",
+ "react-dom": "^19.2.3",
"tailwindcss": "^3"
},
"devDependencies": {
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index 05524e6bf..ed591587d 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -11,8 +11,8 @@
"dependencies": {
"@tailwindcss/vite": "workspace:^",
"@vitejs/plugin-react": "^5.1.2",
- "react": "^19.2.1",
- "react-dom": "^19.2.1",
+ "react": "^19.2.3",
+ "react-dom": "^19.2.3",
"tailwindcss": "workspace:^"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2da9f6718..3fcc5101b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -481,13 +481,13 @@ importers:
version: 3.3.3
next:
specifier: ^16.0.10
- version: 16.0.10(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ version: 16.0.10(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react:
- specifier: ^19.2.1
- version: 19.2.1
+ specifier: ^19.2.3
+ version: 19.2.3
react-dom:
- specifier: ^19.2.1
- version: 19.2.1(react@19.2.1)
+ specifier: ^19.2.3
+ version: 19.2.3(react@19.2.3)
tailwindcss:
specifier: workspace:^
version: link:../../packages/tailwindcss
@@ -515,13 +515,13 @@ importers:
dependencies:
next:
specifier: ^16.0.10
- version: 16.0.10(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ version: 16.0.10(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react:
- specifier: ^19.2.1
- version: 19.2.1
+ specifier: ^19.2.3
+ version: 19.2.3
react-dom:
- specifier: ^19.2.1
- version: 19.2.1(react@19.2.1)
+ specifier: ^19.2.3
+ version: 19.2.3(react@19.2.3)
tailwindcss:
specifier: ^3
version: 3.4.14
@@ -557,11 +557,11 @@ importers:
specifier: ^5.1.2
version: 5.1.2(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
react:
- specifier: ^19.2.1
- version: 19.2.1
+ specifier: ^19.2.3
+ version: 19.2.3
react-dom:
- specifier: ^19.2.1
- version: 19.2.1(react@19.2.1)
+ specifier: ^19.2.3
+ version: 19.2.3(react@19.2.3)
tailwindcss:
specifier: workspace:^
version: link:../../packages/tailwindcss
@@ -3993,10 +3993,10 @@ packages:
radix3@1.1.2:
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
- react-dom@19.2.1:
- resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==}
+ react-dom@19.2.3:
+ resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
peerDependencies:
- react: ^19.2.1
+ react: ^19.2.3
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -4005,8 +4005,8 @@ packages:
resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
engines: {node: '>=0.10.0'}
- react@19.2.1:
- resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==}
+ react@19.2.3:
+ resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -7662,15 +7662,15 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.10(@playwright/test@1.57.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
+ next@16.0.10(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@next/env': 16.0.10
'@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001755
postcss: 8.4.31
- react: 19.2.1
- react-dom: 19.2.1(react@19.2.1)
- styled-jsx: 5.1.6(react@19.2.1)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ styled-jsx: 5.1.6(react@19.2.3)
optionalDependencies:
'@next/swc-darwin-arm64': 16.0.10
'@next/swc-darwin-x64': 16.0.10
@@ -7957,16 +7957,16 @@ snapshots:
radix3@1.1.2: {}
- react-dom@19.2.1(react@19.2.1):
+ react-dom@19.2.3(react@19.2.3):
dependencies:
- react: 19.2.1
+ react: 19.2.3
scheduler: 0.27.0
react-is@16.13.1: {}
react-refresh@0.18.0: {}
- react@19.2.1: {}
+ react@19.2.3: {}
read-cache@1.0.0:
dependencies:
@@ -8268,10 +8268,10 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(react@19.2.1):
+ styled-jsx@5.1.6(react@19.2.3):
dependencies:
client-only: 0.0.1
- react: 19.2.1
+ react: 19.2.3
sucrase@3.35.0:
dependencies:
From 543da3f4e576ea23a971b66a0bcd97121a4e779a Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Fri, 19 Dec 2025 05:45:15 -0500
Subject: [PATCH 065/353] Detect utilities when containing capital letters
followed by numbers (#19465)
Fixes #19463
---
CHANGELOG.md | 1 +
crates/oxide/src/extractor/named_utility_machine.rs | 3 +++
2 files changed, 4 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b776a93e5..bf75d28e3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Do not wrap `color-mix` in a `@supports` rule if one already exists ([#19450](https://github.com/tailwindlabs/tailwindcss/pull/19450))
- Allow whitespace around `@source inline()` argument ([#19461](https://github.com/tailwindlabs/tailwindcss/pull/19461))
- CLI: Emit comment when source maps are saved to files ([#19447](https://github.com/tailwindlabs/tailwindcss/pull/19447))
+- Detect utilities when containing capital letters followed by numbers ([#19465](https://github.com/tailwindlabs/tailwindcss/pull/19465))
### Added
diff --git a/crates/oxide/src/extractor/named_utility_machine.rs b/crates/oxide/src/extractor/named_utility_machine.rs
index 7c847a2e2..d218dbeb7 100644
--- a/crates/oxide/src/extractor/named_utility_machine.rs
+++ b/crates/oxide/src/extractor/named_utility_machine.rs
@@ -284,6 +284,7 @@ impl Machine for NamedUtilityMachine {
| Class::Dot
| Class::Number
| Class::AlphaLower
+ | Class::AlphaUpper
) {
return self.restart();
}
@@ -425,6 +426,8 @@ mod tests {
// With number followed by dash or underscore
("text-title1-strong", vec!["text-title1-strong"]),
("text-title1_strong", vec!["text-title1_strong"]),
+ // With capital letter followed by number
+ ("text-titleV1-strong", vec!["text-titleV1-strong"]),
// With trailing % sign
("from-15%", vec!["from-15%"]),
// Arbitrary value with bracket notation
From c7036383a2ce10091175d5041c3ee05566b4c4b1 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Fri, 19 Dec 2025 16:20:03 -0500
Subject: [PATCH 066/353] =?UTF-8?q?Update=20all=20of=20nextjs=2016.0.10=20?=
=?UTF-8?q?=E2=86=92=2016.1.0=20(minor)=20(#19468)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ eslint-config-next (16.0.10 → 16.1.0)
Sorry, we couldn't find anything useful about this release.
#### ✳️ next (16.0.10 → 16.1.0) ·
[Repo](https://github.com/vercel/next.js)
Release Notes
More info than we can show here.
Does any of this look wrong? Please let us
know.
Commits
See
the full diff on Github . The new version differs by more commits
than we can show here.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/nextjs/package.json | 4 +-
playgrounds/v3/package.json | 4 +-
pnpm-lock.yaml | 149 ++++++++++++++++----------------
3 files changed, 80 insertions(+), 77 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index 7abcbfebf..2e13dd11b 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -11,7 +11,7 @@
"dependencies": {
"@tailwindcss/postcss": "workspace:^",
"fast-glob": "^3.3.3",
- "next": "^16.0.10",
+ "next": "^16.1.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"tailwindcss": "workspace:^"
@@ -21,7 +21,7 @@
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.1",
- "eslint-config-next": "^16.0.10",
+ "eslint-config-next": "^16.1.0",
"typescript": "^5.5.4"
}
}
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index ec8fcca80..d05d0f864 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -9,7 +9,7 @@
"upgrade": "node scripts/upgrade.mjs"
},
"dependencies": {
- "next": "^16.0.10",
+ "next": "^16.1.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"tailwindcss": "^3"
@@ -20,7 +20,7 @@
"@types/react-dom": "^19.2.3",
"autoprefixer": "^10.4.22",
"eslint": "^9.39.1",
- "eslint-config-next": "^16.0.10",
+ "eslint-config-next": "^16.1.0",
"typescript": "^5.5.4"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3fcc5101b..b8acc5f1e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -480,8 +480,8 @@ importers:
specifier: ^3.3.3
version: 3.3.3
next:
- specifier: ^16.0.10
- version: 16.0.10(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^16.1.0
+ version: 16.1.0(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react:
specifier: ^19.2.3
version: 19.2.3
@@ -505,8 +505,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: ^16.0.10
- version: 16.0.10(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ specifier: ^16.1.0
+ version: 16.1.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -514,8 +514,8 @@ importers:
playgrounds/v3:
dependencies:
next:
- specifier: ^16.0.10
- version: 16.0.10(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^16.1.0
+ version: 16.1.0(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react:
specifier: ^19.2.3
version: 19.2.3
@@ -542,8 +542,8 @@ importers:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
eslint-config-next:
- specifier: ^16.0.10
- version: 16.0.10(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ specifier: ^16.1.0
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -1826,56 +1826,56 @@ packages:
resolution: {integrity: sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ==}
engines: {node: '>= 10'}
- '@next/env@16.0.10':
- resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==}
+ '@next/env@16.1.0':
+ resolution: {integrity: sha512-Dd23XQeFHmhf3KBW76leYVkejHlCdB7erakC2At2apL1N08Bm+dLYNP+nNHh0tzUXfPQcNcXiQyacw0PG4Fcpw==}
- '@next/eslint-plugin-next@16.0.10':
- resolution: {integrity: sha512-b2NlWN70bbPLmfyoLvvidPKWENBYYIe017ZGUpElvQjDytCWgxPJx7L9juxHt0xHvNVA08ZHJdOyhGzon/KJuw==}
+ '@next/eslint-plugin-next@16.1.0':
+ resolution: {integrity: sha512-sooC/k0LCF4/jLXYHpgfzJot04lZQqsttn8XJpTguP8N3GhqXN3wSkh68no2OcZzS/qeGwKDFTqhZ8WofdXmmQ==}
- '@next/swc-darwin-arm64@16.0.10':
- resolution: {integrity: sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==}
+ '@next/swc-darwin-arm64@16.1.0':
+ resolution: {integrity: sha512-onHq8dl8KjDb8taANQdzs3XmIqQWV3fYdslkGENuvVInFQzZnuBYYOG2HGHqqtvgmEU7xWzhgndXXxnhk4Z3fQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@16.0.10':
- resolution: {integrity: sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw==}
+ '@next/swc-darwin-x64@16.1.0':
+ resolution: {integrity: sha512-Am6VJTp8KhLuAH13tPrAoVIXzuComlZlMwGr++o2KDjWiKPe3VwpxYhgV6I4gKls2EnsIMggL4y7GdXyDdJcFA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@16.0.10':
- resolution: {integrity: sha512-uQtWE3X0iGB8apTIskOMi2w/MKONrPOUCi5yLO+v3O8Mb5c7K4Q5KD1jvTpTF5gJKa3VH/ijKjKUq9O9UhwOYw==}
+ '@next/swc-linux-arm64-gnu@16.1.0':
+ resolution: {integrity: sha512-fVicfaJT6QfghNyg8JErZ+EMNQ812IS0lmKfbmC01LF1nFBcKfcs4Q75Yy8IqnsCqH/hZwGhqzj3IGVfWV6vpA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@16.0.10':
- resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==}
+ '@next/swc-linux-arm64-musl@16.1.0':
+ resolution: {integrity: sha512-TojQnDRoX7wJWXEEwdfuJtakMDW64Q7NrxQPviUnfYJvAx5/5wcGE+1vZzQ9F17m+SdpFeeXuOr6v3jbyusYMQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@16.0.10':
- resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==}
+ '@next/swc-linux-x64-gnu@16.1.0':
+ resolution: {integrity: sha512-quhNFVySW4QwXiZkZ34SbfzNBm27vLrxZ2HwTfFFO1BBP0OY1+pI0nbyewKeq1FriqU+LZrob/cm26lwsiAi8Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@16.0.10':
- resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==}
+ '@next/swc-linux-x64-musl@16.1.0':
+ resolution: {integrity: sha512-6JW0z2FZUK5iOVhUIWqE4RblAhUj1EwhZ/MwteGb//SpFTOHydnhbp3868gxalwea+mbOLWO6xgxj9wA9wNvNw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@16.0.10':
- resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==}
+ '@next/swc-win32-arm64-msvc@16.1.0':
+ resolution: {integrity: sha512-+DK/akkAvvXn5RdYN84IOmLkSy87SCmpofJPdB8vbLmf01BzntPBSYXnMvnEEv/Vcf3HYJwt24QZ/s6sWAwOMQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@16.0.10':
- resolution: {integrity: sha512-E+njfCoFLb01RAFEnGZn6ERoOqhK1Gl3Lfz1Kjnj0Ulfu7oJbuMyvBKNj/bw8XZnenHDASlygTjZICQW+rYW1Q==}
+ '@next/swc-win32-x64-msvc@16.1.0':
+ resolution: {integrity: sha512-Tr0j94MphimCCks+1rtYPzQFK+faJuhHWCegU9S9gDlgyOk8Y3kPmO64UcjyzZAlligeBtYZ/2bEyrKq0d2wqQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -2917,8 +2917,8 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- eslint-config-next@16.0.10:
- resolution: {integrity: sha512-BxouZUm0I45K4yjOOIzj24nTi0H2cGo0y7xUmk+Po/PYtJXFBYVDS1BguE7t28efXjKdcN0tmiLivxQy//SsZg==}
+ eslint-config-next@16.1.0:
+ resolution: {integrity: sha512-RlPb8E2uO/Ix/w3kizxz6+6ogw99WqtNzTG0ArRZ5NEkIYcsfRb8U0j7aTG7NjRvcrsak5QtUSuxGNN2UcA58g==}
peerDependencies:
eslint: '>=9.0.0'
typescript: '>=3.3.1'
@@ -3675,8 +3675,8 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- next@16.0.10:
- resolution: {integrity: sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==}
+ next@16.1.0:
+ resolution: {integrity: sha512-Y+KbmDbefYtHDDQKLNrmzE/YYzG2msqo2VXhzh5yrJ54tx/6TmGdkR5+kP9ma7i7LwZpZMfoY3m/AoPPPKxtVw==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -5549,34 +5549,34 @@ snapshots:
'@napi-rs/wasm-tools-win32-ia32-msvc': 1.0.1
'@napi-rs/wasm-tools-win32-x64-msvc': 1.0.1
- '@next/env@16.0.10': {}
+ '@next/env@16.1.0': {}
- '@next/eslint-plugin-next@16.0.10':
+ '@next/eslint-plugin-next@16.1.0':
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@16.0.10':
+ '@next/swc-darwin-arm64@16.1.0':
optional: true
- '@next/swc-darwin-x64@16.0.10':
+ '@next/swc-darwin-x64@16.1.0':
optional: true
- '@next/swc-linux-arm64-gnu@16.0.10':
+ '@next/swc-linux-arm64-gnu@16.1.0':
optional: true
- '@next/swc-linux-arm64-musl@16.0.10':
+ '@next/swc-linux-arm64-musl@16.1.0':
optional: true
- '@next/swc-linux-x64-gnu@16.0.10':
+ '@next/swc-linux-x64-gnu@16.1.0':
optional: true
- '@next/swc-linux-x64-musl@16.0.10':
+ '@next/swc-linux-x64-musl@16.1.0':
optional: true
- '@next/swc-win32-arm64-msvc@16.0.10':
+ '@next/swc-win32-arm64-msvc@16.1.0':
optional: true
- '@next/swc-win32-x64-msvc@16.0.10':
+ '@next/swc-win32-x64-msvc@16.1.0':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -6769,29 +6769,29 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.0.10(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
dependencies:
- '@next/eslint-plugin-next': 16.0.10
+ '@next/eslint-plugin-next': 16.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.0.10(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
dependencies:
- '@next/eslint-plugin-next': 16.0.10
+ '@next/eslint-plugin-next': 16.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
@@ -6800,9 +6800,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6817,19 +6817,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6855,14 +6855,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6876,7 +6876,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6887,7 +6887,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6899,7 +6899,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7662,24 +7662,25 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.0.10(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ next@16.1.0(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
- '@next/env': 16.0.10
+ '@next/env': 16.1.0
'@swc/helpers': 0.5.15
+ baseline-browser-mapping: 2.8.29
caniuse-lite: 1.0.30001755
postcss: 8.4.31
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
- styled-jsx: 5.1.6(react@19.2.3)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3)
optionalDependencies:
- '@next/swc-darwin-arm64': 16.0.10
- '@next/swc-darwin-x64': 16.0.10
- '@next/swc-linux-arm64-gnu': 16.0.10
- '@next/swc-linux-arm64-musl': 16.0.10
- '@next/swc-linux-x64-gnu': 16.0.10
- '@next/swc-linux-x64-musl': 16.0.10
- '@next/swc-win32-arm64-msvc': 16.0.10
- '@next/swc-win32-x64-msvc': 16.0.10
+ '@next/swc-darwin-arm64': 16.1.0
+ '@next/swc-darwin-x64': 16.1.0
+ '@next/swc-linux-arm64-gnu': 16.1.0
+ '@next/swc-linux-arm64-musl': 16.1.0
+ '@next/swc-linux-x64-gnu': 16.1.0
+ '@next/swc-linux-x64-musl': 16.1.0
+ '@next/swc-win32-arm64-msvc': 16.1.0
+ '@next/swc-win32-x64-msvc': 16.1.0
'@playwright/test': 1.57.0
sharp: 0.34.5
transitivePeerDependencies:
@@ -8268,10 +8269,12 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(react@19.2.3):
+ styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3):
dependencies:
client-only: 0.0.1
react: 19.2.3
+ optionalDependencies:
+ '@babel/core': 7.28.5
sucrase@3.35.0:
dependencies:
From 3c06c554500fd114ebf365c29b6468f24d55e0aa Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Sun, 21 Dec 2025 10:02:59 -0500
Subject: [PATCH 067/353] =?UTF-8?q?Update=20eslint=209.39.1=20=E2=86=92=20?=
=?UTF-8?q?9.39.2=20(patch)=20(#19469)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ eslint (9.39.1 → 9.39.2) ·
[Repo](https://github.com/eslint/eslint) ·
[Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
Release Notes
Bug Fixes
5705833 fix: warn when eslint-env configuration comments are found
(#20381 )
(sethamus)
Build Related
506f154 build: add .scss files entry to
knip (#20391 )
(Milos Djermanovic)
Chores
7ca0af7 chore: upgrade to @eslint/js@9.39.2 (#20394 )
(Francesco Trotta)
c43ce24 chore: package.json update for
@eslint/js release (Jenkins)
4c9858e ci: add v9.x-dev branch (#20382 )
(Milos Djermanovic)
Does any of this look wrong? Please let us
know.
Commits
See
the full diff on Github . The new version differs by 7 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/nextjs/package.json | 2 +-
playgrounds/v3/package.json | 2 +-
pnpm-lock.yaml | 208 ++++++++++++++++----------------
3 files changed, 105 insertions(+), 107 deletions(-)
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index 2e13dd11b..8dc97a047 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -20,7 +20,7 @@
"@types/node": "catalog:",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
- "eslint": "^9.39.1",
+ "eslint": "^9.39.2",
"eslint-config-next": "^16.1.0",
"typescript": "^5.5.4"
}
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index d05d0f864..5be6cf890 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -19,7 +19,7 @@
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"autoprefixer": "^10.4.22",
- "eslint": "^9.39.1",
+ "eslint": "^9.39.2",
"eslint-config-next": "^16.1.0",
"typescript": "^5.5.4"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b8acc5f1e..82465e8b6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -481,7 +481,7 @@ importers:
version: 3.3.3
next:
specifier: ^16.1.0
- version: 16.1.0(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 16.1.0(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react:
specifier: ^19.2.3
version: 19.2.3
@@ -502,11 +502,11 @@ importers:
specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.7)
eslint:
- specifier: ^9.39.1
- version: 9.39.1(jiti@2.6.1)
+ specifier: ^9.39.2
+ version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -515,7 +515,7 @@ importers:
dependencies:
next:
specifier: ^16.1.0
- version: 16.1.0(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 16.1.0(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react:
specifier: ^19.2.3
version: 19.2.3
@@ -539,11 +539,11 @@ importers:
specifier: ^10.4.22
version: 10.4.22(postcss@8.4.47)
eslint:
- specifier: ^9.39.1
- version: 9.39.1(jiti@2.6.1)
+ specifier: ^9.39.2
+ version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -1153,8 +1153,8 @@ packages:
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@9.39.1':
- resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==}
+ '@eslint/js@9.39.2':
+ resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.7':
@@ -3003,8 +3003,8 @@ packages:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@9.39.1:
- resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==}
+ eslint@9.39.2:
+ resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
@@ -4975,9 +4975,9 @@ snapshots:
'@esbuild/win32-x64@0.27.0':
optional: true
- '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))':
+ '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))':
dependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
@@ -5012,7 +5012,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@9.39.1': {}
+ '@eslint/js@9.39.2': {}
'@eslint/object-schema@2.1.7': {}
@@ -5973,15 +5973,15 @@ snapshots:
'@types/semver@7.7.1': {}
- '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
'@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
'@typescript-eslint/visitor-keys': 8.47.0
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
@@ -5990,15 +5990,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
'@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.47.0
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
@@ -6007,26 +6007,26 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
'@typescript-eslint/scope-manager': 8.47.0
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
'@typescript-eslint/visitor-keys': 8.47.0
debug: 4.4.3
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.47.0
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.47.0
debug: 4.4.3
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
typescript: 5.6.3
transitivePeerDependencies:
- supports-color
@@ -6062,25 +6062,25 @@ snapshots:
dependencies:
typescript: 5.6.3
- '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
debug: 4.4.3
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
ts-api-utils: 2.1.0(typescript@5.5.4)
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/type-utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
debug: 4.4.3
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
ts-api-utils: 2.1.0(typescript@5.6.3)
typescript: 5.6.3
transitivePeerDependencies:
@@ -6120,24 +6120,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.47.0
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.47.0
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
typescript: 5.6.3
transitivePeerDependencies:
- supports-color
@@ -6769,40 +6769,40 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react: 7.37.2(eslint@9.39.1(jiti@2.6.1))
- eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6817,66 +6817,66 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
- eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint: 9.39.2(jiti@2.6.1)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
- eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
- eslint: 9.39.1(jiti@2.6.1)
- eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint: 9.39.2(jiti@2.6.1)
+ eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
- eslint: 9.39.1(jiti@2.6.1)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6885,9 +6885,9 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6899,13 +6899,13 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6914,9 +6914,9 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6932,7 +6932,7 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jsx-a11y@6.10.1(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-jsx-a11y@6.10.1(eslint@9.39.2(jiti@2.6.1)):
dependencies:
aria-query: 5.3.2
array-includes: 3.1.9
@@ -6943,7 +6943,7 @@ snapshots:
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
es-iterator-helpers: 1.1.0
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
hasown: 2.0.2
jsx-ast-utils: 3.3.5
language-tags: 1.0.9
@@ -6952,18 +6952,18 @@ snapshots:
safe-regex-test: 1.1.0
string.prototype.includes: 2.0.1
- eslint-plugin-react-hooks@7.0.1(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-react-hooks@7.0.1(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@babel/core': 7.28.5
'@babel/parser': 7.28.5
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
hermes-parser: 0.25.1
zod: 4.1.12
zod-validation-error: 4.0.2(zod@4.1.12)
transitivePeerDependencies:
- supports-color
- eslint-plugin-react@7.37.2(eslint@9.39.1(jiti@2.6.1)):
+ eslint-plugin-react@7.37.2(eslint@9.39.2(jiti@2.6.1)):
dependencies:
array-includes: 3.1.9
array.prototype.findlast: 1.2.5
@@ -6971,7 +6971,7 @@ snapshots:
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.1.0
- eslint: 9.39.1(jiti@2.6.1)
+ eslint: 9.39.2(jiti@2.6.1)
estraverse: 5.3.0
hasown: 2.0.2
jsx-ast-utils: 3.3.5
@@ -6994,15 +6994,15 @@ snapshots:
eslint-visitor-keys@4.2.1: {}
- eslint@9.39.1(jiti@2.6.1):
+ eslint@9.39.2(jiti@2.6.1):
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.21.1
'@eslint/config-helpers': 0.4.2
'@eslint/core': 0.17.0
'@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.39.1
+ '@eslint/js': 9.39.2
'@eslint/plugin-kit': 0.4.1
'@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
@@ -7662,7 +7662,7 @@ snapshots:
natural-compare@1.4.0: {}
- next@16.1.0(@babel/core@7.28.5)(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ next@16.1.0(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@next/env': 16.1.0
'@swc/helpers': 0.5.15
@@ -7671,7 +7671,7 @@ snapshots:
postcss: 8.4.31
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
- styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3)
+ styled-jsx: 5.1.6(react@19.2.3)
optionalDependencies:
'@next/swc-darwin-arm64': 16.1.0
'@next/swc-darwin-x64': 16.1.0
@@ -8269,12 +8269,10 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3):
+ styled-jsx@5.1.6(react@19.2.3):
dependencies:
client-only: 0.0.1
react: 19.2.3
- optionalDependencies:
- '@babel/core': 7.28.5
sucrase@3.35.0:
dependencies:
@@ -8506,24 +8504,24 @@ snapshots:
possible-typed-array-names: 1.0.0
reflect.getprototypeof: 1.0.10
- typescript-eslint@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4):
+ typescript-eslint@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.5.4)
- eslint: 9.39.1(jiti@2.6.1)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ eslint: 9.39.2(jiti@2.6.1)
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- typescript-eslint@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3):
+ typescript-eslint@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.6.3)
- eslint: 9.39.1(jiti@2.6.1)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ eslint: 9.39.2(jiti@2.6.1)
typescript: 5.6.3
transitivePeerDependencies:
- supports-color
From d979daacc67753762bead563fe8a1b8f93d9ad73 Mon Sep 17 00:00:00 2001
From: xibeiyoumian
Date: Mon, 22 Dec 2025 21:09:19 +0800
Subject: [PATCH 068/353] chore: fix some typos in comments (#19475)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
fix some typos in comments
## Test plan
Signed-off-by: xibeiyoumian
---
integrations/oxide/wasm.test.ts | 2 +-
integrations/postcss/next.test.ts | 2 +-
packages/tailwindcss/src/intellisense.test.ts | 6 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/integrations/oxide/wasm.test.ts b/integrations/oxide/wasm.test.ts
index 1cbdfce6e..ac2231672 100644
--- a/integrations/oxide/wasm.test.ts
+++ b/integrations/oxide/wasm.test.ts
@@ -1,6 +1,6 @@
import { css, js, json, test } from '../utils'
-// This test runs the wasm build using the `node:wasi` runtine.
+// This test runs the wasm build using the `node:wasi` runtime.
//
// There are currently a known problems that the Node WASI preview implementation does not properly
// handle FS reads on macOS and it does not implement all APIs on Windows. Because of that, this
diff --git a/integrations/postcss/next.test.ts b/integrations/postcss/next.test.ts
index 969254a75..7fc0ccdcf 100644
--- a/integrations/postcss/next.test.ts
+++ b/integrations/postcss/next.test.ts
@@ -468,7 +468,7 @@ test(
// the CSS
await fetchStyles(url)
- // At this point, no changes should triger a compile step. If we see any
+ // At this point, no changes should trigger a compile step. If we see any
// changes, there is an infinite loop because we (the user) didn't write any
// files to disk.
//
diff --git a/packages/tailwindcss/src/intellisense.test.ts b/packages/tailwindcss/src/intellisense.test.ts
index e37f05b9c..2e475f738 100644
--- a/packages/tailwindcss/src/intellisense.test.ts
+++ b/packages/tailwindcss/src/intellisense.test.ts
@@ -635,13 +635,13 @@ test('Theme keys with underscores are suggested with underscores', async () => {
/* Disable the spacing scale */
--spacing: initial;
- /* This will get suggeted with a dot because its surrounded by numbers */
+ /* This will get suggested with a dot because its surrounded by numbers */
--spacing-1_5: 1.5rem;
- /* This will get suggeted with a dot */
+ /* This will get suggested with a dot */
--spacing-2\.5: 1.5rem;
- /* This will get suggeted with an underscore */
+ /* This will get suggested with an underscore */
--spacing-logo_margin: 0.875rem;
}
From 1628713453e622dfaba4880a0b63495b857a3cc5 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Mon, 22 Dec 2025 22:59:07 -0500
Subject: [PATCH 069/353] =?UTF-8?q?Update=20autoprefixer=2010.4.22=20?=
=?UTF-8?q?=E2=86=92=2010.4.23=20(patch)=20(#19473)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ autoprefixer (10.4.22 → 10.4.23) ·
[Repo](https://github.com/postcss/autoprefixer) ·
[Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
Release Notes
Does any of this look wrong? Please let
us know.
Commits
See
the full diff on Github . The new version differs by 3 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/v3/package.json | 2 +-
pnpm-lock.yaml | 102 ++++++++++++++++++++++++------------
2 files changed, 69 insertions(+), 35 deletions(-)
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index 5be6cf890..c03663b69 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -18,7 +18,7 @@
"@types/node": "^20.14.8",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
- "autoprefixer": "^10.4.22",
+ "autoprefixer": "^10.4.23",
"eslint": "^9.39.2",
"eslint-config-next": "^16.1.0",
"typescript": "^5.5.4"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 82465e8b6..203739c0e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -506,7 +506,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -536,14 +536,14 @@ importers:
specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.7)
autoprefixer:
- specifier: ^10.4.22
- version: 10.4.22(postcss@8.4.47)
+ specifier: ^10.4.23
+ version: 10.4.23(postcss@8.4.47)
eslint:
specifier: ^9.39.2
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -2562,8 +2562,8 @@ packages:
ast-types-flow@0.0.8:
resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
- autoprefixer@10.4.22:
- resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==}
+ autoprefixer@10.4.23:
+ resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
@@ -2588,6 +2588,10 @@ packages:
resolution: {integrity: sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==}
hasBin: true
+ baseline-browser-mapping@2.9.11:
+ resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==}
+ hasBin: true
+
before-after-hook@4.0.0:
resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==}
@@ -2610,6 +2614,11 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
+ browserslist@4.28.1:
+ resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -2655,6 +2664,9 @@ packages:
caniuse-lite@1.0.30001755:
resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==}
+ caniuse-lite@1.0.30001761:
+ resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==}
+
chai@6.2.1:
resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==}
engines: {node: '>=18'}
@@ -2838,6 +2850,9 @@ packages:
electron-to-chromium@1.5.255:
resolution: {integrity: sha512-Z9oIp4HrFF/cZkDPMpz2XSuVpc1THDpT4dlmATFlJUIBVCy9Vap5/rIXsASP1CscBacBqhabwh8vLctqBwEerQ==}
+ electron-to-chromium@1.5.267:
+ resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
+
emnapi@1.7.1:
resolution: {integrity: sha512-wlLK2xFq+T+rCBlY6+lPlFVDEyE93b7hSn9dMrfWBIcPf4ArwUvymvvMnN9M5WWuiryYQe9M+UJrkqw4trdyRA==}
peerDependencies:
@@ -3729,10 +3744,6 @@ packages:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
- normalize-range@0.1.2:
- resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
- engines: {node: '>=0.10.0'}
-
npm-run-path@5.3.0:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -4468,6 +4479,12 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
uqr@0.1.2:
resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==}
@@ -6307,12 +6324,11 @@ snapshots:
ast-types-flow@0.0.8: {}
- autoprefixer@10.4.22(postcss@8.4.47):
+ autoprefixer@10.4.23(postcss@8.4.47):
dependencies:
- browserslist: 4.28.0
- caniuse-lite: 1.0.30001755
+ browserslist: 4.28.1
+ caniuse-lite: 1.0.30001761
fraction.js: 5.3.4
- normalize-range: 0.1.2
picocolors: 1.1.1
postcss: 8.4.47
postcss-value-parser: 4.2.0
@@ -6329,6 +6345,8 @@ snapshots:
baseline-browser-mapping@2.8.29: {}
+ baseline-browser-mapping@2.9.11: {}
+
before-after-hook@4.0.0: {}
binary-extensions@2.3.0: {}
@@ -6349,11 +6367,19 @@ snapshots:
browserslist@4.28.0:
dependencies:
baseline-browser-mapping: 2.8.29
- caniuse-lite: 1.0.30001755
+ caniuse-lite: 1.0.30001761
electron-to-chromium: 1.5.255
node-releases: 2.0.27
update-browserslist-db: 1.1.4(browserslist@4.28.0)
+ browserslist@4.28.1:
+ dependencies:
+ baseline-browser-mapping: 2.9.11
+ caniuse-lite: 1.0.30001761
+ electron-to-chromium: 1.5.267
+ node-releases: 2.0.27
+ update-browserslist-db: 1.2.3(browserslist@4.28.1)
+
buffer-from@1.1.2:
optional: true
@@ -6405,6 +6431,8 @@ snapshots:
caniuse-lite@1.0.30001755: {}
+ caniuse-lite@1.0.30001761: {}
+
chai@6.2.1: {}
chalk@4.1.2:
@@ -6564,6 +6592,8 @@ snapshots:
electron-to-chromium@1.5.255: {}
+ electron-to-chromium@1.5.267: {}
+
emnapi@1.7.1(node-addon-api@8.3.0):
optionalDependencies:
node-addon-api: 8.3.0
@@ -6769,27 +6799,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
@@ -6800,9 +6830,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6817,19 +6847,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6855,14 +6885,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6876,7 +6906,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6887,7 +6917,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6899,7 +6929,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7705,8 +7735,6 @@ snapshots:
normalize-path@3.0.0: {}
- normalize-range@0.1.2: {}
-
npm-run-path@5.3.0:
dependencies:
path-key: 4.0.0
@@ -8563,6 +8591,12 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
+ update-browserslist-db@1.2.3(browserslist@4.28.1):
+ dependencies:
+ browserslist: 4.28.1
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
uqr@0.1.2: {}
uri-js@4.4.1:
From 8d5e955058cbec107df150d4d8aa6d8645bb7bbf Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Wed, 24 Dec 2025 10:31:02 -0500
Subject: [PATCH 070/353] =?UTF-8?q?Update=20dedent=201.7.0=20=E2=86=92=201?=
=?UTF-8?q?.7.1=20(patch)=20(#19484)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this upgrade. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ dedent (1.7.0 → 1.7.1) · [Repo](https://github.com/dmnd/dedent)
· [Changelog](https://github.com/dmnd/dedent/blob/main/CHANGELOG.md)
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
integrations/package.json | 2 +-
packages/@tailwindcss-postcss/package.json | 2 +-
packages/@tailwindcss-upgrade/package.json | 2 +-
packages/tailwindcss/package.json | 2 +-
pnpm-lock.yaml | 62 +++++++++++-----------
5 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/integrations/package.json b/integrations/package.json
index c6e792fc4..8c0d83543 100644
--- a/integrations/package.json
+++ b/integrations/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"devDependencies": {
- "dedent": "1.7.0",
+ "dedent": "1.7.1",
"fast-glob": "^3.3.3",
"source-map-js": "^1.2.1"
}
diff --git a/packages/@tailwindcss-postcss/package.json b/packages/@tailwindcss-postcss/package.json
index f91f57720..22e775d72 100644
--- a/packages/@tailwindcss-postcss/package.json
+++ b/packages/@tailwindcss-postcss/package.json
@@ -39,7 +39,7 @@
"devDependencies": {
"@types/node": "catalog:",
"@types/postcss-import": "14.0.3",
- "dedent": "1.7.0",
+ "dedent": "1.7.1",
"internal-example-plugin": "workspace:*",
"postcss-import": "^16.1.1"
}
diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json
index b11409cf6..e41e40b22 100644
--- a/packages/@tailwindcss-upgrade/package.json
+++ b/packages/@tailwindcss-upgrade/package.json
@@ -30,7 +30,7 @@
"@tailwindcss/node": "workspace:*",
"@tailwindcss/oxide": "workspace:*",
"braces": "^3.0.3",
- "dedent": "1.7.0",
+ "dedent": "1.7.1",
"enhanced-resolve": "^5.18.4",
"globby": "^15.0.0",
"jiti": "^2.0.0-beta.3",
diff --git a/packages/tailwindcss/package.json b/packages/tailwindcss/package.json
index 2dc93d5a8..a453c9a14 100644
--- a/packages/tailwindcss/package.json
+++ b/packages/tailwindcss/package.json
@@ -130,7 +130,7 @@
"@jridgewell/remapping": "^2.3.4",
"@tailwindcss/oxide": "workspace:^",
"@types/node": "catalog:",
- "dedent": "1.7.0",
+ "dedent": "1.7.1",
"lightningcss": "catalog:",
"magic-string": "^0.30.21",
"source-map-js": "^1.2.1"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 203739c0e..cc7b5eeea 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -183,8 +183,8 @@ importers:
integrations:
devDependencies:
dedent:
- specifier: 1.7.0
- version: 1.7.0
+ specifier: 1.7.1
+ version: 1.7.1
fast-glob:
specifier: ^3.3.3
version: 3.3.3
@@ -277,8 +277,8 @@ importers:
specifier: 14.0.3
version: 14.0.3
dedent:
- specifier: 1.7.0
- version: 1.7.0
+ specifier: 1.7.1
+ version: 1.7.1
internal-example-plugin:
specifier: workspace:*
version: link:../internal-example-plugin
@@ -371,8 +371,8 @@ importers:
specifier: ^3.0.3
version: 3.0.3
dedent:
- specifier: 1.7.0
- version: 1.7.0
+ specifier: 1.7.1
+ version: 1.7.1
enhanced-resolve:
specifier: ^5.18.4
version: 5.18.4
@@ -459,8 +459,8 @@ importers:
specifier: 'catalog:'
version: 20.19.1
dedent:
- specifier: 1.7.0
- version: 1.7.0
+ specifier: 1.7.1
+ version: 1.7.1
lightningcss:
specifier: 'catalog:'
version: 1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
@@ -506,7 +506,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -2792,8 +2792,8 @@ packages:
supports-color:
optional: true
- dedent@1.7.0:
- resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==}
+ dedent@1.7.1:
+ resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==}
peerDependencies:
babel-plugin-macros: ^3.1.0
peerDependenciesMeta:
@@ -6547,7 +6547,7 @@ snapshots:
dependencies:
ms: 2.1.3
- dedent@1.7.0: {}
+ dedent@1.7.1: {}
deep-is@0.1.4: {}
@@ -6799,27 +6799,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
@@ -6830,9 +6830,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6847,19 +6847,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6885,14 +6885,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6906,7 +6906,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6917,7 +6917,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6929,7 +6929,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7959,7 +7959,7 @@ snapshots:
prettier-plugin-embed@0.5.0:
dependencies:
'@types/estree': 1.0.6
- dedent: 1.7.0
+ dedent: 1.7.1
micro-memoize: 4.1.3
package-up: 5.0.0
tiny-jsonc: 1.0.2
From c80459271978c3853eb1d9733fb746ca2cde87cb Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Wed, 24 Dec 2025 17:20:02 -0500
Subject: [PATCH 071/353] =?UTF-8?q?Update=20bun=201.3.3=20=E2=86=92=201.3.?=
=?UTF-8?q?5=20(patch)=20(#19489)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ bun (1.3.3 → 1.3.5) · [Repo](https://github.com/oven-sh/bun)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
packages/@tailwindcss-standalone/package.json | 2 +-
playgrounds/vite/package.json | 2 +-
pnpm-lock.yaml | 102 +++++++++---------
3 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index e699d229c..ef6f593cb 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -43,7 +43,7 @@
"@parcel/watcher-linux-x64-musl": "^2.5.1",
"@parcel/watcher-win32-x64": "^2.5.1",
"@types/bun": "^1.3.3",
- "bun": "^1.3.3",
+ "bun": "^1.3.5",
"lightningcss-darwin-arm64": "catalog:",
"lightningcss-darwin-x64": "catalog:",
"lightningcss-linux-arm64-gnu": "catalog:",
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index ed591587d..e158445cb 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -18,7 +18,7 @@
"devDependencies": {
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
- "bun": "^1.3.3",
+ "bun": "^1.3.5",
"vite": "catalog:"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cc7b5eeea..36b72ff01 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -335,8 +335,8 @@ importers:
specifier: ^1.3.3
version: 1.3.3
bun:
- specifier: ^1.3.3
- version: 1.3.3
+ specifier: ^1.3.5
+ version: 1.3.5
lightningcss-darwin-arm64:
specifier: 'catalog:'
version: 1.30.2
@@ -573,8 +573,8 @@ importers:
specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.7)
bun:
- specifier: ^1.3.3
- version: 1.3.3
+ specifier: ^1.3.5
+ version: 1.3.5
vite:
specifier: 'catalog:'
version: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
@@ -1954,58 +1954,58 @@ packages:
'@octokit/types@15.0.0':
resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==}
- '@oven/bun-darwin-aarch64@1.3.3':
- resolution: {integrity: sha512-eJopQrUk0WR7jViYDC29+Rp50xGvs4GtWOXBeqCoFMzutkkO3CZvHehA4JqnjfWMTSS8toqvRhCSOpOz62Wf9w==}
+ '@oven/bun-darwin-aarch64@1.3.5':
+ resolution: {integrity: sha512-8GvNtMo0NINM7Emk9cNAviCG3teEgr3BUX9be0+GD029zIagx2Sf54jMui1Eu1IpFm7nWHODuLEefGOQNaJ0gQ==}
cpu: [arm64]
os: [darwin]
- '@oven/bun-darwin-x64-baseline@1.3.3':
- resolution: {integrity: sha512-1ij4wQ9ECLFf1XFry+IFUN+28if40ozDqq6+QtuyOhIwraKzXOlAUbILhRMGvM3ED3yBex2mTwlKpA4Vja/V2g==}
+ '@oven/bun-darwin-x64-baseline@1.3.5':
+ resolution: {integrity: sha512-p5q3rJk48qhLuLBOFehVc+kqCE03YrswTc6NCxbwsxiwfySXwcAvpF2KWKF/ZZObvvR8hCCvqe1F81b2p5r2dg==}
cpu: [x64]
os: [darwin]
- '@oven/bun-darwin-x64@1.3.3':
- resolution: {integrity: sha512-xGDePueVFrNgkS+iN0QdEFeRrx2MQ5hQ9ipRFu7N73rgoSSJsFlOKKt2uGZzunczedViIfjYl0ii0K4E9aZ0Ow==}
+ '@oven/bun-darwin-x64@1.3.5':
+ resolution: {integrity: sha512-r33eHQOHAwkuiBJIwmkXIyqONQOQMnd1GMTpDzaxx9vf9+svby80LZO9Hcm1ns6KT/TBRFyODC/0loA7FAaffg==}
cpu: [x64]
os: [darwin]
- '@oven/bun-linux-aarch64-musl@1.3.3':
- resolution: {integrity: sha512-XWQ3tV/gtZj0wn2AdSUq/tEOKWT4OY+Uww70EbODgrrq00jxuTfq5nnYP6rkLD0M/T5BHJdQRSfQYdIni9vldw==}
+ '@oven/bun-linux-aarch64-musl@1.3.5':
+ resolution: {integrity: sha512-HKBeUlJdNduRkzJKZ5DXM+pPqntfC50/Hu2X65jVX0Y7hu/6IC8RaUTqpr8FtCZqqmc9wDK0OTL+Mbi9UQIKYQ==}
cpu: [arm64]
os: [linux]
- '@oven/bun-linux-aarch64@1.3.3':
- resolution: {integrity: sha512-DabZ3Mt1XcJneWdEEug8l7bCPVvDBRBpjUIpNnRnMFWFnzr8KBEpMcaWTwYOghjXyJdhB4MPKb19MwqyQ+FHAw==}
+ '@oven/bun-linux-aarch64@1.3.5':
+ resolution: {integrity: sha512-zkcHPI23QxJ1TdqafhgkXt1NOEN8o5C460sVeNnrhfJ43LwZgtfcvcQE39x/pBedu67fatY8CU0iY00nOh46ZQ==}
cpu: [arm64]
os: [linux]
- '@oven/bun-linux-x64-baseline@1.3.3':
- resolution: {integrity: sha512-IU8pxhIf845psOv55LqJyL+tSUc6HHMfs6FGhuJcAnyi92j+B1HjOhnFQh9MW4vjoo7do5F8AerXlvk59RGH2w==}
+ '@oven/bun-linux-x64-baseline@1.3.5':
+ resolution: {integrity: sha512-FeCQyBU62DMuB0nn01vPnf3McXrKOsrK9p7sHaBFYycw0mmoU8kCq/WkBkGMnLuvQljJSyen8QBTx+fXdNupWg==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64-musl-baseline@1.3.3':
- resolution: {integrity: sha512-JoRTPdAXRkNYouUlJqEncMWUKn/3DiWP03A7weBbtbsKr787gcdNna2YeyQKCb1lIXE4v1k18RM3gaOpQobGIQ==}
+ '@oven/bun-linux-x64-musl-baseline@1.3.5':
+ resolution: {integrity: sha512-TJiYC7KCr0XxFTsxgwQOeE7dncrEL/RSyL0EzSL3xRkrxJMWBCvCSjQn7LV1i6T7hFst0+3KoN3VWvD5BinqHA==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64-musl@1.3.3':
- resolution: {integrity: sha512-xNSDRPn1yyObKteS8fyQogwsS4eCECswHHgaKM+/d4wy/omZQrXn8ZyGm/ZF9B73UfQytUfbhE7nEnrFq03f0w==}
+ '@oven/bun-linux-x64-musl@1.3.5':
+ resolution: {integrity: sha512-XkCCHkByYn8BIDvoxnny898znju4xnW2kvFE8FT5+0Y62cWdcBGMZ9RdsEUTeRz16k8hHtJpaSfLcEmNTFIwRQ==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64@1.3.3':
- resolution: {integrity: sha512-7eIARtKZKZDtah1aCpQUj/1/zT/zHRR063J6oAxZP9AuA547j5B9OM2D/vi/F4En7Gjk9FPjgPGTSYeqpQDzJw==}
+ '@oven/bun-linux-x64@1.3.5':
+ resolution: {integrity: sha512-n7zhKTSDZS0yOYg5Rq8easZu5Y/o47sv0c7yGr2ciFdcie9uYV55fZ7QMqhWMGK33ezCSikh5EDkUMCIvfWpjA==}
cpu: [x64]
os: [linux]
- '@oven/bun-windows-x64-baseline@1.3.3':
- resolution: {integrity: sha512-u5eZHKq6TPJSE282KyBOicGQ2trkFml0RoUfqkPOJVo7TXGrsGYYzdsugZRnVQY/WEmnxGtBy4T3PAaPqgQViA==}
+ '@oven/bun-windows-x64-baseline@1.3.5':
+ resolution: {integrity: sha512-rtVQB9/1XK8FWJgFtsOthbPifRMYypgJwxu+pK3NHx8WvFKmq7HcPDqNr8xLzGULjQEO7eAo2aOZfONOwYz+5g==}
cpu: [x64]
os: [win32]
- '@oven/bun-windows-x64@1.3.3':
- resolution: {integrity: sha512-kWqa1LKvDdAIzyfHxo3zGz3HFWbFHDlrNK77hKjUN42ycikvZJ+SHSX76+1OW4G8wmLETX4Jj+4BM1y01DQRIQ==}
+ '@oven/bun-windows-x64@1.3.5':
+ resolution: {integrity: sha512-T3xkODItb/0ftQPFsZDc7EAX2D6A4TEazQ2YZyofZToO8Q7y8YT8ooWdhd0BQiTCd66uEvgE1DCZetynwg2IoA==}
cpu: [x64]
os: [win32]
@@ -2625,8 +2625,8 @@ packages:
bun-types@1.3.3:
resolution: {integrity: sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ==}
- bun@1.3.3:
- resolution: {integrity: sha512-2hJ4ocTZ634/Ptph4lysvO+LbbRZq8fzRvMwX0/CqaLBxrF2UB5D1LdMB8qGcdtCer4/VR9Bx5ORub0yn+yzmw==}
+ bun@1.3.5:
+ resolution: {integrity: sha512-c1YHIGUfgvYPJmLug5QiLzNWlX2Dg7X/67JWu1Va+AmMXNXzC/KQn2lgQ7rD+n1u1UqDpJMowVGGxTNpbPydNw==}
cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -5678,37 +5678,37 @@ snapshots:
dependencies:
'@octokit/openapi-types': 26.0.0
- '@oven/bun-darwin-aarch64@1.3.3':
+ '@oven/bun-darwin-aarch64@1.3.5':
optional: true
- '@oven/bun-darwin-x64-baseline@1.3.3':
+ '@oven/bun-darwin-x64-baseline@1.3.5':
optional: true
- '@oven/bun-darwin-x64@1.3.3':
+ '@oven/bun-darwin-x64@1.3.5':
optional: true
- '@oven/bun-linux-aarch64-musl@1.3.3':
+ '@oven/bun-linux-aarch64-musl@1.3.5':
optional: true
- '@oven/bun-linux-aarch64@1.3.3':
+ '@oven/bun-linux-aarch64@1.3.5':
optional: true
- '@oven/bun-linux-x64-baseline@1.3.3':
+ '@oven/bun-linux-x64-baseline@1.3.5':
optional: true
- '@oven/bun-linux-x64-musl-baseline@1.3.3':
+ '@oven/bun-linux-x64-musl-baseline@1.3.5':
optional: true
- '@oven/bun-linux-x64-musl@1.3.3':
+ '@oven/bun-linux-x64-musl@1.3.5':
optional: true
- '@oven/bun-linux-x64@1.3.3':
+ '@oven/bun-linux-x64@1.3.5':
optional: true
- '@oven/bun-windows-x64-baseline@1.3.3':
+ '@oven/bun-windows-x64-baseline@1.3.5':
optional: true
- '@oven/bun-windows-x64@1.3.3':
+ '@oven/bun-windows-x64@1.3.5':
optional: true
'@parcel/watcher-android-arm64@2.5.0':
@@ -6387,19 +6387,19 @@ snapshots:
dependencies:
'@types/node': 20.19.1
- bun@1.3.3:
+ bun@1.3.5:
optionalDependencies:
- '@oven/bun-darwin-aarch64': 1.3.3
- '@oven/bun-darwin-x64': 1.3.3
- '@oven/bun-darwin-x64-baseline': 1.3.3
- '@oven/bun-linux-aarch64': 1.3.3
- '@oven/bun-linux-aarch64-musl': 1.3.3
- '@oven/bun-linux-x64': 1.3.3
- '@oven/bun-linux-x64-baseline': 1.3.3
- '@oven/bun-linux-x64-musl': 1.3.3
- '@oven/bun-linux-x64-musl-baseline': 1.3.3
- '@oven/bun-windows-x64': 1.3.3
- '@oven/bun-windows-x64-baseline': 1.3.3
+ '@oven/bun-darwin-aarch64': 1.3.5
+ '@oven/bun-darwin-x64': 1.3.5
+ '@oven/bun-darwin-x64-baseline': 1.3.5
+ '@oven/bun-linux-aarch64': 1.3.5
+ '@oven/bun-linux-aarch64-musl': 1.3.5
+ '@oven/bun-linux-x64': 1.3.5
+ '@oven/bun-linux-x64-baseline': 1.3.5
+ '@oven/bun-linux-x64-musl': 1.3.5
+ '@oven/bun-linux-x64-musl-baseline': 1.3.5
+ '@oven/bun-windows-x64': 1.3.5
+ '@oven/bun-windows-x64-baseline': 1.3.5
bundle-require@5.1.0(esbuild@0.27.0):
dependencies:
From e8a5a7f09244f299873751d224dc574922638540 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Wed, 24 Dec 2025 17:20:21 -0500
Subject: [PATCH 072/353] =?UTF-8?q?Update=20@tailwindcss/forms=200.5.10=20?=
=?UTF-8?q?=E2=86=92=200.5.11=20(minor)=20(#19490)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @tailwindcss/forms (0.5.10 → 0.5.11) ·
[Repo](https://github.com/tailwindlabs/tailwindcss-forms) ·
[Changelog](https://github.com/tailwindlabs/tailwindcss-forms/blob/main/CHANGELOG.md)
Release Notes
Fixed
Limit attribute rules to input and select elements (#159 )
Does any of this look wrong? Please
let us know.
Commits
See
the full diff on Github . The new version differs by 3 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
packages/@tailwindcss-standalone/package.json | 2 +-
pnpm-lock.yaml | 48 +++++++++----------
2 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index ef6f593cb..6c37b7e10 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -27,7 +27,7 @@
"dependencies": {
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/cli": "workspace:*",
- "@tailwindcss/forms": "^0.5.10",
+ "@tailwindcss/forms": "^0.5.11",
"@tailwindcss/typography": "^0.5.19",
"detect-libc": "1.0.3",
"enhanced-resolve": "^5.18.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 36b72ff01..a50ddae8f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -295,8 +295,8 @@ importers:
specifier: workspace:*
version: link:../@tailwindcss-cli
'@tailwindcss/forms':
- specifier: ^0.5.10
- version: 0.5.10(tailwindcss@packages+tailwindcss)
+ specifier: ^0.5.11
+ version: 0.5.11(tailwindcss@packages+tailwindcss)
'@tailwindcss/typography':
specifier: ^0.5.19
version: 0.5.19(tailwindcss@packages+tailwindcss)
@@ -506,7 +506,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -2309,8 +2309,8 @@ packages:
peerDependencies:
tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1'
- '@tailwindcss/forms@0.5.10':
- resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==}
+ '@tailwindcss/forms@0.5.11':
+ resolution: {integrity: sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==}
peerDependencies:
tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1'
@@ -5912,7 +5912,7 @@ snapshots:
dependencies:
tailwindcss: link:packages/tailwindcss
- '@tailwindcss/forms@0.5.10(tailwindcss@packages+tailwindcss)':
+ '@tailwindcss/forms@0.5.11(tailwindcss@packages+tailwindcss)':
dependencies:
mini-svg-data-uri: 1.4.4
tailwindcss: link:packages/tailwindcss
@@ -6799,27 +6799,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
@@ -6830,9 +6830,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6847,19 +6847,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6885,14 +6885,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6906,7 +6906,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6917,7 +6917,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6929,7 +6929,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
From fba35d01bb10f0ac27a0baa7bb2462782fdeb35d Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Thu, 25 Dec 2025 18:22:13 -0500
Subject: [PATCH 073/353] =?UTF-8?q?Update=20@types/bun=201.3.3=20=E2=86=92?=
=?UTF-8?q?=201.3.5=20(patch)=20(#19491)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @types/bun (1.3.3 → 1.3.5) ·
[Repo](https://github.com/DefinitelyTyped/DefinitelyTyped)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
packages/@tailwindcss-standalone/package.json | 2 +-
pnpm-lock.yaml | 56 +++++++++----------
2 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index 6c37b7e10..cfe124563 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -42,7 +42,7 @@
"@parcel/watcher-linux-x64-glibc": "^2.5.1",
"@parcel/watcher-linux-x64-musl": "^2.5.1",
"@parcel/watcher-win32-x64": "^2.5.1",
- "@types/bun": "^1.3.3",
+ "@types/bun": "^1.3.5",
"bun": "^1.3.5",
"lightningcss-darwin-arm64": "catalog:",
"lightningcss-darwin-x64": "catalog:",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a50ddae8f..e8260cb57 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -332,8 +332,8 @@ importers:
specifier: ^2.5.1
version: 2.5.1
'@types/bun':
- specifier: ^1.3.3
- version: 1.3.3
+ specifier: ^1.3.5
+ version: 1.3.5
bun:
specifier: ^1.3.5
version: 1.3.5
@@ -506,7 +506,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -2337,8 +2337,8 @@ packages:
'@types/braces@3.0.5':
resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==}
- '@types/bun@1.3.3':
- resolution: {integrity: sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g==}
+ '@types/bun@1.3.5':
+ resolution: {integrity: sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==}
'@types/chai@5.2.3':
resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
@@ -2622,8 +2622,8 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
- bun-types@1.3.3:
- resolution: {integrity: sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ==}
+ bun-types@1.3.5:
+ resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==}
bun@1.3.5:
resolution: {integrity: sha512-c1YHIGUfgvYPJmLug5QiLzNWlX2Dg7X/67JWu1Va+AmMXNXzC/KQn2lgQ7rD+n1u1UqDpJMowVGGxTNpbPydNw==}
@@ -5949,9 +5949,9 @@ snapshots:
'@types/braces@3.0.5': {}
- '@types/bun@1.3.3':
+ '@types/bun@1.3.5':
dependencies:
- bun-types: 1.3.3
+ bun-types: 1.3.5
'@types/chai@5.2.3':
dependencies:
@@ -6383,7 +6383,7 @@ snapshots:
buffer-from@1.1.2:
optional: true
- bun-types@1.3.3:
+ bun-types@1.3.5:
dependencies:
'@types/node': 20.19.1
@@ -6799,27 +6799,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
@@ -6830,9 +6830,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6847,19 +6847,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6885,14 +6885,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6906,7 +6906,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6917,7 +6917,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6929,7 +6929,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
From fbc358cec1034ca4db672f9b51b44769dbb3e46f Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Fri, 26 Dec 2025 12:36:51 -0500
Subject: [PATCH 074/353] =?UTF-8?q?Update=20prettier-plugin-embed=200.5.0?=
=?UTF-8?q?=20=E2=86=92=200.5.1=20(minor)=20(#19492)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ prettier-plugin-embed (0.5.0 → 0.5.1) ·
[Repo](https://github.com/Sec-ant/prettier-plugin-embed) ·
[Changelog](https://github.com/Sec-ant/prettier-plugin-embed/blob/main/CHANGELOG.md)
Release Notes
Patch Changes
0c1b3c4 :
Fix indentation issues in sql, css and markdown embedded languages.
0c1b3c4 :
Fix embedded xml and prisma formatting behavior.
Does any of this look wrong? Please
let us know.
Commits
See
the full diff on Github . The new version differs by 3 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 57 ++++++++++++++++++++++++++++++++------------------
2 files changed, 38 insertions(+), 21 deletions(-)
diff --git a/package.json b/package.json
index 201da7266..445a723d0 100644
--- a/package.json
+++ b/package.json
@@ -53,7 +53,7 @@
"postcss": "8.5.6",
"postcss-import": "^16.1.1",
"prettier": "catalog:",
- "prettier-plugin-embed": "^0.5.0",
+ "prettier-plugin-embed": "^0.5.1",
"prettier-plugin-organize-imports": "^4.3.0",
"tsup": "^8.5.1",
"turbo": "^2.6.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e8260cb57..3fd9e29ad 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -68,8 +68,8 @@ importers:
specifier: 'catalog:'
version: 3.6.2
prettier-plugin-embed:
- specifier: ^0.5.0
- version: 0.5.0
+ specifier: ^0.5.1
+ version: 0.5.1
prettier-plugin-organize-imports:
specifier: ^4.3.0
version: 4.3.0(prettier@3.6.2)(typescript@5.5.4)
@@ -2346,9 +2346,6 @@ packages:
'@types/deep-eql@4.0.2':
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
- '@types/estree@1.0.6':
- resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
-
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
@@ -3065,6 +3062,10 @@ packages:
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-equals@5.4.0:
+ resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==}
+ engines: {node: '>=6.0.0'}
+
fast-glob@3.3.1:
resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
engines: {node: '>=8.6.0'}
@@ -3079,6 +3080,9 @@ packages:
fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ fast-stringify@4.0.0:
+ resolution: {integrity: sha512-lE2DIivBaLysf6hK5WH/VfMgqRbvBVHcpGVVTmA5Zi8oWIjq9YxIt6lYGdUgP1HNSXxTIat7HEIDnrSvXSeKQw==}
+
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
@@ -3624,8 +3628,8 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
- micro-memoize@4.1.3:
- resolution: {integrity: sha512-DzRMi8smUZXT7rCGikRwldEh6eO6qzKiPPopcr1+2EY3AYKpy5fu159PKWwIS9A6IWnrvPKDMcuFtyrroZa8Bw==}
+ micro-memoize@5.1.1:
+ resolution: {integrity: sha512-QDwluos8YeMijiKxZGwaV4f4tzj0soS6+xcsJhJ3+4wdEIHMyKbIKVUziebOgWX3e6yiijdoaHo+9tyhbnaWXA==}
micromatch@4.0.7:
resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
@@ -3973,8 +3977,8 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prettier-plugin-embed@0.5.0:
- resolution: {integrity: sha512-A5nzX8U9x+FJdpOKrDrH9eq86xHZNiGguWpphS6chTME0OK1bDgH1X+WLtZq7qV3kUEMkL/dHkr6C1NLdUA7RQ==}
+ prettier-plugin-embed@0.5.1:
+ resolution: {integrity: sha512-2Ege8gIlLNTvHElUeU5XcFsD7/dbDXkQA6H9TczHSJAGxB58nNjjifk/dlRMS5E29eqQx/z+ToA4ZVMWzjME/A==}
prettier-plugin-organize-imports@4.3.0:
resolution: {integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==}
@@ -4257,6 +4261,10 @@ packages:
resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
engines: {node: '>=18'}
+ tagged-tag@1.0.0:
+ resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
+ engines: {node: '>=20'}
+
tailwindcss@3.4.14:
resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==}
engines: {node: '>=14.0.0'}
@@ -4406,9 +4414,9 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
- type-fest@4.36.0:
- resolution: {integrity: sha512-3T/PUdKTCnkUmhQU6FFJEHsLwadsRegktX3TNHk+2JJB9HlA8gp1/VXblXVDI93kSnXF2rdPx0GMbHtJIV2LPg==}
- engines: {node: '>=16'}
+ type-fest@5.3.1:
+ resolution: {integrity: sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg==}
+ engines: {node: '>=20'}
typed-array-buffer@1.0.3:
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
@@ -5960,8 +5968,6 @@ snapshots:
'@types/deep-eql@4.0.2': {}
- '@types/estree@1.0.6': {}
-
'@types/estree@1.0.8': {}
'@types/json-schema@7.0.15': {}
@@ -7105,6 +7111,8 @@ snapshots:
fast-deep-equal@3.1.3: {}
+ fast-equals@5.4.0: {}
+
fast-glob@3.3.1:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -7125,6 +7133,8 @@ snapshots:
fast-levenshtein@2.0.6: {}
+ fast-stringify@4.0.0: {}
+
fastq@1.17.1:
dependencies:
reusify: 1.0.4
@@ -7632,7 +7642,10 @@ snapshots:
merge2@1.4.1: {}
- micro-memoize@4.1.3: {}
+ micro-memoize@5.1.1:
+ dependencies:
+ fast-equals: 5.4.0
+ fast-stringify: 4.0.0
micromatch@4.0.7:
dependencies:
@@ -7956,14 +7969,14 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier-plugin-embed@0.5.0:
+ prettier-plugin-embed@0.5.1:
dependencies:
- '@types/estree': 1.0.6
+ '@types/estree': 1.0.8
dedent: 1.7.1
- micro-memoize: 4.1.3
+ micro-memoize: 5.1.1
package-up: 5.0.0
tiny-jsonc: 1.0.2
- type-fest: 4.36.0
+ type-fest: 5.3.1
transitivePeerDependencies:
- babel-plugin-macros
@@ -8320,6 +8333,8 @@ snapshots:
system-architecture@0.1.0: {}
+ tagged-tag@1.0.0: {}
+
tailwindcss@3.4.14:
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -8497,7 +8512,9 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
- type-fest@4.36.0: {}
+ type-fest@5.3.1:
+ dependencies:
+ tagged-tag: 1.0.0
typed-array-buffer@1.0.3:
dependencies:
From 9720692edac4b8045b3646b26e47ad7b97a37cbf Mon Sep 17 00:00:00 2001
From: Akash Agarwal
Date: Sat, 27 Dec 2025 22:26:29 +0530
Subject: [PATCH 075/353] Fix typo in comment (#19493)
---
.../src/codemods/template/is-safe-migration.test.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts b/packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts
index 7efb7b48d..ff12fc114 100644
--- a/packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts
+++ b/packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts
@@ -91,7 +91,7 @@ describe('is-safe-migration', async () => {
'outline',
],
[
- // As the last argument, but there is techinically another `"` on the same line
+ // As the last argument, but there is technically another `"` on the same line
`function foo({ size = "1.25rem", digit, outline }): { return "foo" }`,
'outline',
],
From c07d4a749db3b1c859afd18f0cd5008fbf57ee62 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Mon, 5 Jan 2026 07:46:49 -0500
Subject: [PATCH 076/353] =?UTF-8?q?Update=20turbo=202.6.3=20=E2=86=92=202.?=
=?UTF-8?q?7.2=20(minor)=20(#19509)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ turbo (2.6.3 → 2.7.2) ·
[Repo](https://github.com/turborepo/turbo)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 96 +++++++++++++++++++++++++-------------------------
2 files changed, 49 insertions(+), 49 deletions(-)
diff --git a/package.json b/package.json
index 445a723d0..1b5a50a82 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"prettier-plugin-embed": "^0.5.1",
"prettier-plugin-organize-imports": "^4.3.0",
"tsup": "^8.5.1",
- "turbo": "^2.6.3",
+ "turbo": "^2.7.2",
"typescript": "^5.5.4",
"vitest": "^4.0.3"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3fd9e29ad..8eac5b236 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -77,8 +77,8 @@ importers:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.6.0)
turbo:
- specifier: ^2.6.3
- version: 2.6.3
+ specifier: ^2.7.2
+ version: 2.7.2
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -506,7 +506,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -4373,38 +4373,38 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- turbo-darwin-64@2.6.3:
- resolution: {integrity: sha512-BlJJDc1CQ7SK5Y5qnl7AzpkvKSnpkfPmnA+HeU/sgny3oHZckPV2776ebO2M33CYDSor7+8HQwaodY++IINhYg==}
+ turbo-darwin-64@2.7.2:
+ resolution: {integrity: sha512-dxY3X6ezcT5vm3coK6VGixbrhplbQMwgNsCsvZamS/+/6JiebqW9DKt4NwpgYXhDY2HdH00I7FWs3wkVuan4rA==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.6.3:
- resolution: {integrity: sha512-MwVt7rBKiOK7zdYerenfCRTypefw4kZCue35IJga9CH1+S50+KTiCkT6LBqo0hHeoH2iKuI0ldTF2a0aB72z3w==}
+ turbo-darwin-arm64@2.7.2:
+ resolution: {integrity: sha512-1bXmuwPLqNFt3mzrtYcVx1sdJ8UYb124Bf48nIgcpMCGZy3kDhgxNv1503kmuK/37OGOZbsWSQFU4I08feIuSg==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.6.3:
- resolution: {integrity: sha512-cqpcw+dXxbnPtNnzeeSyWprjmuFVpHJqKcs7Jym5oXlu/ZcovEASUIUZVN3OGEM6Y/OTyyw0z09tOHNt5yBAVg==}
+ turbo-linux-64@2.7.2:
+ resolution: {integrity: sha512-kP+TiiMaiPugbRlv57VGLfcjFNsFbo8H64wMBCPV2270Or2TpDCBULMzZrvEsvWFjT3pBFvToYbdp8/Kw0jAQg==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.6.3:
- resolution: {integrity: sha512-MterpZQmjXyr4uM7zOgFSFL3oRdNKeflY7nsjxJb2TklsYqiu3Z9pQ4zRVFFH8n0mLGna7MbQMZuKoWqqHb45w==}
+ turbo-linux-arm64@2.7.2:
+ resolution: {integrity: sha512-VDJwQ0+8zjAfbyY6boNaWfP6RIez4ypKHxwkuB6SrWbOSk+vxTyW5/hEjytTwK8w/TsbKVcMDyvpora8tEsRFw==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.6.3:
- resolution: {integrity: sha512-biDU70v9dLwnBdLf+daoDlNJVvqOOP8YEjqNipBHzgclbQlXbsi6Gqqelp5er81Qo3BiRgmTNx79oaZQTPb07Q==}
+ turbo-windows-64@2.7.2:
+ resolution: {integrity: sha512-rPjqQXVnI6A6oxgzNEE8DNb6Vdj2Wwyhfv3oDc+YM3U9P7CAcBIlKv/868mKl4vsBtz4ouWpTQNXG8vljgJO+w==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.6.3:
- resolution: {integrity: sha512-dDHVKpSeukah3VsI/xMEKeTnV9V9cjlpFSUs4bmsUiLu3Yv2ENlgVEZv65wxbeE0bh0jjpmElDT+P1KaCxArQQ==}
+ turbo-windows-arm64@2.7.2:
+ resolution: {integrity: sha512-tcnHvBhO515OheIFWdxA+qUvZzNqqcHbLVFc1+n+TJ1rrp8prYicQtbtmsiKgMvr/54jb9jOabU62URAobnB7g==}
cpu: [arm64]
os: [win32]
- turbo@2.6.3:
- resolution: {integrity: sha512-bf6YKUv11l5Xfcmg76PyWoy/e2vbkkxFNBGJSnfdSXQC33ZiUfutYh6IXidc5MhsnrFkWfdNNLyaRk+kHMLlwA==}
+ turbo@2.7.2:
+ resolution: {integrity: sha512-5JIA5aYBAJSAhrhbyag1ZuMSgUZnHtI+Sq3H8D3an4fL8PeF+L1yYvbEJg47akP1PFfATMf5ehkqFnxfkmuwZQ==}
hasBin: true
typanion@3.14.0:
@@ -6805,27 +6805,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
@@ -6836,9 +6836,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6853,19 +6853,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6891,14 +6891,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6912,7 +6912,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6923,7 +6923,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6935,7 +6935,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -8479,32 +8479,32 @@ snapshots:
fsevents: 2.3.3
optional: true
- turbo-darwin-64@2.6.3:
+ turbo-darwin-64@2.7.2:
optional: true
- turbo-darwin-arm64@2.6.3:
+ turbo-darwin-arm64@2.7.2:
optional: true
- turbo-linux-64@2.6.3:
+ turbo-linux-64@2.7.2:
optional: true
- turbo-linux-arm64@2.6.3:
+ turbo-linux-arm64@2.7.2:
optional: true
- turbo-windows-64@2.6.3:
+ turbo-windows-64@2.7.2:
optional: true
- turbo-windows-arm64@2.6.3:
+ turbo-windows-arm64@2.7.2:
optional: true
- turbo@2.6.3:
+ turbo@2.7.2:
optionalDependencies:
- turbo-darwin-64: 2.6.3
- turbo-darwin-arm64: 2.6.3
- turbo-linux-64: 2.6.3
- turbo-linux-arm64: 2.6.3
- turbo-windows-64: 2.6.3
- turbo-windows-arm64: 2.6.3
+ turbo-darwin-64: 2.7.2
+ turbo-darwin-arm64: 2.7.2
+ turbo-linux-64: 2.7.2
+ turbo-linux-arm64: 2.7.2
+ turbo-windows-64: 2.7.2
+ turbo-windows-arm64: 2.7.2
typanion@3.14.0: {}
From d5beb9534e13889bfbe4d1681af84eb1bc403b18 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Tue, 6 Jan 2026 12:44:27 +0100
Subject: [PATCH 077/353] =?UTF-8?q?Update=20@napi-rs/cli=203.4.1=20?=
=?UTF-8?q?=E2=86=92=203.5.1=20(minor)=20(#19528)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @napi-rs/cli (3.4.1 → 3.5.1) ·
[Repo](https://github.com/napi-rs/napi-rs)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
crates/node/package.json | 2 +-
pnpm-lock.yaml | 466 ++++++++++++++++++++-------------------
2 files changed, 235 insertions(+), 233 deletions(-)
diff --git a/crates/node/package.json b/crates/node/package.json
index 9cd9ca076..1bc5e0711 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -33,7 +33,7 @@
},
"license": "MIT",
"devDependencies": {
- "@napi-rs/cli": "^3.4.1",
+ "@napi-rs/cli": "^3.5.1",
"@napi-rs/wasm-runtime": "^1.1.0",
"emnapi": "1.7.1"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8eac5b236..f5625835f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -126,8 +126,8 @@ importers:
version: link:npm/win32-x64-msvc
devDependencies:
'@napi-rs/cli':
- specifier: ^3.4.1
- version: 3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
+ specifier: ^3.5.1
+ version: 3.5.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
specifier: ^1.1.0
version: 1.1.0
@@ -506,7 +506,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -1322,134 +1322,134 @@ packages:
cpu: [x64]
os: [win32]
- '@inquirer/ansi@1.0.0':
- resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==}
- engines: {node: '>=18'}
+ '@inquirer/ansi@2.0.2':
+ resolution: {integrity: sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
- '@inquirer/checkbox@4.2.4':
- resolution: {integrity: sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==}
- engines: {node: '>=18'}
+ '@inquirer/checkbox@5.0.3':
+ resolution: {integrity: sha512-xtQP2eXMFlOcAhZ4ReKP2KZvDIBb1AnCfZ81wWXG3DXLVH0f0g4obE0XDPH+ukAEMRcZT0kdX2AS1jrWGXbpxw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/confirm@5.1.18':
- resolution: {integrity: sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==}
- engines: {node: '>=18'}
+ '@inquirer/confirm@6.0.3':
+ resolution: {integrity: sha512-lyEvibDFL+NA5R4xl8FUmNhmu81B+LDL9L/MpKkZlQDJZXzG8InxiqYxiAlQYa9cqLLhYqKLQwZqXmSTqCLjyw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/core@10.2.2':
- resolution: {integrity: sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==}
- engines: {node: '>=18'}
+ '@inquirer/core@11.1.0':
+ resolution: {integrity: sha512-+jD/34T1pK8M5QmZD/ENhOfXdl9Zr+BrQAUc5h2anWgi7gggRq15ZbiBeLoObj0TLbdgW7TAIQRU2boMc9uOKQ==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/editor@4.2.20':
- resolution: {integrity: sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==}
- engines: {node: '>=18'}
+ '@inquirer/editor@5.0.3':
+ resolution: {integrity: sha512-wYyQo96TsAqIciP/r5D3cFeV8h4WqKQ/YOvTg5yOfP2sqEbVVpbxPpfV3LM5D0EP4zUI3EZVHyIUIllnoIa8OQ==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/expand@4.0.20':
- resolution: {integrity: sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==}
- engines: {node: '>=18'}
+ '@inquirer/expand@5.0.3':
+ resolution: {integrity: sha512-2oINvuL27ujjxd95f6K2K909uZOU2x1WiAl7Wb1X/xOtL8CgQ1kSxzykIr7u4xTkXkXOAkCuF45T588/YKee7w==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/external-editor@1.0.2':
- resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==}
- engines: {node: '>=18'}
+ '@inquirer/external-editor@2.0.2':
+ resolution: {integrity: sha512-X/fMXK7vXomRWEex1j8mnj7s1mpnTeP4CO/h2gysJhHLT2WjBnLv4ZQEGpm/kcYI8QfLZ2fgW+9kTKD+jeopLg==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/figures@1.0.13':
- resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==}
- engines: {node: '>=18'}
+ '@inquirer/figures@2.0.2':
+ resolution: {integrity: sha512-qXm6EVvQx/FmnSrCWCIGtMHwqeLgxABP8XgcaAoywsL0NFga9gD5kfG0gXiv80GjK9Hsoz4pgGwF/+CjygyV9A==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
- '@inquirer/input@4.2.4':
- resolution: {integrity: sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==}
- engines: {node: '>=18'}
+ '@inquirer/input@5.0.3':
+ resolution: {integrity: sha512-4R0TdWl53dtp79Vs6Df2OHAtA2FVNqya1hND1f5wjHWxZJxwDMSNB1X5ADZJSsQKYAJ5JHCTO+GpJZ42mK0Otw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/number@3.0.20':
- resolution: {integrity: sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==}
- engines: {node: '>=18'}
+ '@inquirer/number@4.0.3':
+ resolution: {integrity: sha512-TjQLe93GGo5snRlu83JxE38ZPqj5ZVggL+QqqAF2oBA5JOJoxx25GG3EGH/XN/Os5WOmKfO8iLVdCXQxXRZIMQ==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/password@4.0.20':
- resolution: {integrity: sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==}
- engines: {node: '>=18'}
+ '@inquirer/password@5.0.3':
+ resolution: {integrity: sha512-rCozGbUMAHedTeYWEN8sgZH4lRCdgG/WinFkit6ZPsp8JaNg2T0g3QslPBS5XbpORyKP/I+xyBO81kFEvhBmjA==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/prompts@7.8.6':
- resolution: {integrity: sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==}
- engines: {node: '>=18'}
+ '@inquirer/prompts@8.1.0':
+ resolution: {integrity: sha512-LsZMdKcmRNF5LyTRuZE5nWeOjganzmN3zwbtNfcs6GPh3I2TsTtF1UYZlbxVfhxd+EuUqLGs/Lm3Xt4v6Az1wA==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/rawlist@4.1.8':
- resolution: {integrity: sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==}
- engines: {node: '>=18'}
+ '@inquirer/rawlist@5.1.0':
+ resolution: {integrity: sha512-yUCuVh0jW026Gr2tZlG3kHignxcrLKDR3KBp+eUgNz+BAdSeZk0e18yt2gyBr+giYhj/WSIHCmPDOgp1mT2niQ==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/search@3.1.3':
- resolution: {integrity: sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==}
- engines: {node: '>=18'}
+ '@inquirer/search@4.0.3':
+ resolution: {integrity: sha512-lzqVw0YwuKYetk5VwJ81Ba+dyVlhseHPx9YnRKQgwXdFS0kEavCz2gngnNhnMIxg8+j1N/rUl1t5s1npwa7bqg==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/select@4.3.4':
- resolution: {integrity: sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==}
- engines: {node: '>=18'}
+ '@inquirer/select@5.0.3':
+ resolution: {integrity: sha512-M+ynbwS0ecQFDYMFrQrybA0qL8DV0snpc4kKevCCNaTpfghsRowRY7SlQBeIYNzHqXtiiz4RG9vTOeb/udew7w==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/type@3.0.8':
- resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==}
- engines: {node: '>=18'}
+ '@inquirer/type@4.0.2':
+ resolution: {integrity: sha512-cae7mzluplsjSdgFA6ACLygb5jC8alO0UUnFPyu0E7tNRPrL+q/f8VcSXp+cjZQ7l5CMpDpi2G1+IQvkOiL1Lw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@@ -1493,12 +1493,12 @@ packages:
'@jridgewell/trace-mapping@0.3.29':
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
- '@napi-rs/cli@3.4.1':
- resolution: {integrity: sha512-ayhm+NfrP5Hmh7vy5pfyYm/ktYtLh2PrgdLuqHTAubO7RoO2JkUE4F991AtgYxNewwXI8+guZLxU8itV7QnDrQ==}
+ '@napi-rs/cli@3.5.1':
+ resolution: {integrity: sha512-XBfLQRDcB3qhu6bazdMJsecWW55kR85l5/k0af9BIBELXQSsCFU0fzug7PX8eQp6vVdm7W/U3z6uP5WmITB2Gw==}
engines: {node: '>= 16'}
hasBin: true
peerDependencies:
- '@emnapi/runtime': ^1.5.0
+ '@emnapi/runtime': ^1.7.1
peerDependenciesMeta:
'@emnapi/runtime':
optional: true
@@ -1900,26 +1900,23 @@ packages:
resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==}
engines: {node: '>= 20'}
- '@octokit/core@7.0.4':
- resolution: {integrity: sha512-jOT8V1Ba5BdC79sKrRWDdMT5l1R+XNHTPR6CPWzUP2EcfAcvIHZWF0eAbmRcpOOP5gVIwnqNg0C4nvh6Abc3OA==}
+ '@octokit/core@7.0.6':
+ resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==}
engines: {node: '>= 20'}
- '@octokit/endpoint@11.0.0':
- resolution: {integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==}
+ '@octokit/endpoint@11.0.2':
+ resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==}
engines: {node: '>= 20'}
- '@octokit/graphql@9.0.1':
- resolution: {integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==}
+ '@octokit/graphql@9.0.3':
+ resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==}
engines: {node: '>= 20'}
- '@octokit/openapi-types@25.1.0':
- resolution: {integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==}
+ '@octokit/openapi-types@27.0.0':
+ resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==}
- '@octokit/openapi-types@26.0.0':
- resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==}
-
- '@octokit/plugin-paginate-rest@13.1.1':
- resolution: {integrity: sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==}
+ '@octokit/plugin-paginate-rest@14.0.0':
+ resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==}
engines: {node: '>= 20'}
peerDependencies:
'@octokit/core': '>=6'
@@ -1930,29 +1927,26 @@ packages:
peerDependencies:
'@octokit/core': '>=6'
- '@octokit/plugin-rest-endpoint-methods@16.1.0':
- resolution: {integrity: sha512-nCsyiKoGRnhH5LkH8hJEZb9swpqOcsW+VXv1QoyUNQXJeVODG4+xM6UICEqyqe9XFr6LkL8BIiFCPev8zMDXPw==}
+ '@octokit/plugin-rest-endpoint-methods@17.0.0':
+ resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==}
engines: {node: '>= 20'}
peerDependencies:
'@octokit/core': '>=6'
- '@octokit/request-error@7.0.0':
- resolution: {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==}
+ '@octokit/request-error@7.1.0':
+ resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==}
engines: {node: '>= 20'}
- '@octokit/request@10.0.3':
- resolution: {integrity: sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA==}
+ '@octokit/request@10.0.7':
+ resolution: {integrity: sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==}
engines: {node: '>= 20'}
- '@octokit/rest@22.0.0':
- resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==}
+ '@octokit/rest@22.0.1':
+ resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==}
engines: {node: '>= 20'}
- '@octokit/types@14.1.0':
- resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==}
-
- '@octokit/types@15.0.0':
- resolution: {integrity: sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ==}
+ '@octokit/types@16.0.0':
+ resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==}
'@oven/bun-darwin-aarch64@1.3.5':
resolution: {integrity: sha512-8GvNtMo0NINM7Emk9cNAviCG3teEgr3BUX9be0+GD029zIagx2Sf54jMui1Eu1IpFm7nWHODuLEefGOQNaJ0gQ==}
@@ -2672,8 +2666,8 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
- chardet@2.1.0:
- resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==}
+ chardet@2.1.1:
+ resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
@@ -2858,6 +2852,9 @@ packages:
node-addon-api:
optional: true
+ emoji-regex@10.6.0:
+ resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
+
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -2903,8 +2900,8 @@ packages:
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
- es-toolkit@1.39.10:
- resolution: {integrity: sha512-E0iGnTtbDhkeczB0T+mxmoVlT4YNweEKBLq7oaU4p11mecdsZpNWOglI4895Vh4usbQ+LsJiuLuI2L0Vdmfm2w==}
+ es-toolkit@1.43.0:
+ resolution: {integrity: sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==}
esbuild@0.23.1:
resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
@@ -3164,6 +3161,10 @@ packages:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
+ get-east-asian-width@1.4.0:
+ resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
+ engines: {node: '>=18'}
+
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -3674,9 +3675,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- mute-stream@2.0.0:
- resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
- engines: {node: ^18.17.0 || >=20.5.0}
+ mute-stream@3.0.0:
+ resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==}
+ engines: {node: ^20.17.0 || >=22.9.0}
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
@@ -3788,6 +3789,9 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
onetime@6.0.0:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
@@ -4188,6 +4192,10 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
+ string-width@7.2.0:
+ resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+ engines: {node: '>=18'}
+
string.prototype.includes@2.0.1:
resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
engines: {node: '>= 0.4'}
@@ -4609,10 +4617,6 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- wrap-ansi@6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
- engines: {node: '>=8'}
-
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -4621,6 +4625,10 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
+ wrap-ansi@9.0.2:
+ resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
+ engines: {node: '>=18'}
+
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -4633,10 +4641,6 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- yoctocolors-cjs@2.1.2:
- resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
- engines: {node: '>=18'}
-
zod-validation-error@4.0.2:
resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
@@ -5156,128 +5160,122 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
- '@inquirer/ansi@1.0.0': {}
+ '@inquirer/ansi@2.0.2': {}
- '@inquirer/checkbox@4.2.4(@types/node@20.19.1)':
+ '@inquirer/checkbox@5.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/ansi': 2.0.2
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/figures': 2.0.2
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/confirm@5.1.18(@types/node@20.19.1)':
+ '@inquirer/confirm@6.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/core@10.2.2(@types/node@20.19.1)':
+ '@inquirer/core@11.1.0(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 1.0.0
- '@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/ansi': 2.0.2
+ '@inquirer/figures': 2.0.2
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
cli-width: 4.1.0
- mute-stream: 2.0.0
+ mute-stream: 3.0.0
signal-exit: 4.1.0
- wrap-ansi: 6.2.0
- yoctocolors-cjs: 2.1.2
+ wrap-ansi: 9.0.2
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/editor@4.2.20(@types/node@20.19.1)':
+ '@inquirer/editor@5.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/external-editor': 1.0.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/external-editor': 2.0.2(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/expand@4.0.20(@types/node@20.19.1)':
+ '@inquirer/expand@5.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/external-editor@1.0.2(@types/node@20.19.1)':
+ '@inquirer/external-editor@2.0.2(@types/node@20.19.1)':
dependencies:
- chardet: 2.1.0
+ chardet: 2.1.1
iconv-lite: 0.7.0
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/figures@1.0.13': {}
+ '@inquirer/figures@2.0.2': {}
- '@inquirer/input@4.2.4(@types/node@20.19.1)':
+ '@inquirer/input@5.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/number@3.0.20(@types/node@20.19.1)':
+ '@inquirer/number@4.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/password@4.0.20(@types/node@20.19.1)':
+ '@inquirer/password@5.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
+ '@inquirer/ansi': 2.0.2
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/prompts@7.8.6(@types/node@20.19.1)':
+ '@inquirer/prompts@8.1.0(@types/node@20.19.1)':
dependencies:
- '@inquirer/checkbox': 4.2.4(@types/node@20.19.1)
- '@inquirer/confirm': 5.1.18(@types/node@20.19.1)
- '@inquirer/editor': 4.2.20(@types/node@20.19.1)
- '@inquirer/expand': 4.0.20(@types/node@20.19.1)
- '@inquirer/input': 4.2.4(@types/node@20.19.1)
- '@inquirer/number': 3.0.20(@types/node@20.19.1)
- '@inquirer/password': 4.0.20(@types/node@20.19.1)
- '@inquirer/rawlist': 4.1.8(@types/node@20.19.1)
- '@inquirer/search': 3.1.3(@types/node@20.19.1)
- '@inquirer/select': 4.3.4(@types/node@20.19.1)
+ '@inquirer/checkbox': 5.0.3(@types/node@20.19.1)
+ '@inquirer/confirm': 6.0.3(@types/node@20.19.1)
+ '@inquirer/editor': 5.0.3(@types/node@20.19.1)
+ '@inquirer/expand': 5.0.3(@types/node@20.19.1)
+ '@inquirer/input': 5.0.3(@types/node@20.19.1)
+ '@inquirer/number': 4.0.3(@types/node@20.19.1)
+ '@inquirer/password': 5.0.3(@types/node@20.19.1)
+ '@inquirer/rawlist': 5.1.0(@types/node@20.19.1)
+ '@inquirer/search': 4.0.3(@types/node@20.19.1)
+ '@inquirer/select': 5.0.3(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/rawlist@4.1.8(@types/node@20.19.1)':
+ '@inquirer/rawlist@5.1.0(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/search@3.1.3(@types/node@20.19.1)':
+ '@inquirer/search@4.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/figures': 2.0.2
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/select@4.3.4(@types/node@20.19.1)':
+ '@inquirer/select@5.0.3(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@20.19.1)
- '@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@20.19.1)
- yoctocolors-cjs: 2.1.2
+ '@inquirer/ansi': 2.0.2
+ '@inquirer/core': 11.1.0(@types/node@20.19.1)
+ '@inquirer/figures': 2.0.2
+ '@inquirer/type': 4.0.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/type@3.0.8(@types/node@20.19.1)':
+ '@inquirer/type@4.0.2(@types/node@20.19.1)':
optionalDependencies:
'@types/node': 20.19.1
@@ -5330,18 +5328,18 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
- '@napi-rs/cli@3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
+ '@napi-rs/cli@3.5.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
dependencies:
- '@inquirer/prompts': 7.8.6(@types/node@20.19.1)
+ '@inquirer/prompts': 8.1.0(@types/node@20.19.1)
'@napi-rs/cross-toolchain': 1.0.3
'@napi-rs/wasm-tools': 1.0.1
- '@octokit/rest': 22.0.0
+ '@octokit/rest': 22.0.1
clipanion: 4.0.0-rc.4(typanion@3.14.0)
colorette: 2.0.20
- debug: 4.4.3
emnapi: 1.7.1(node-addon-api@8.3.0)
- es-toolkit: 1.39.10
+ es-toolkit: 1.43.0
js-yaml: 4.1.0
+ obug: 2.1.1
semver: 7.7.3
typanion: 3.14.0
optionalDependencies:
@@ -5620,71 +5618,65 @@ snapshots:
'@octokit/auth-token@6.0.0': {}
- '@octokit/core@7.0.4':
+ '@octokit/core@7.0.6':
dependencies:
'@octokit/auth-token': 6.0.0
- '@octokit/graphql': 9.0.1
- '@octokit/request': 10.0.3
- '@octokit/request-error': 7.0.0
- '@octokit/types': 15.0.0
+ '@octokit/graphql': 9.0.3
+ '@octokit/request': 10.0.7
+ '@octokit/request-error': 7.1.0
+ '@octokit/types': 16.0.0
before-after-hook: 4.0.0
universal-user-agent: 7.0.2
- '@octokit/endpoint@11.0.0':
+ '@octokit/endpoint@11.0.2':
dependencies:
- '@octokit/types': 14.1.0
+ '@octokit/types': 16.0.0
universal-user-agent: 7.0.2
- '@octokit/graphql@9.0.1':
+ '@octokit/graphql@9.0.3':
dependencies:
- '@octokit/request': 10.0.3
- '@octokit/types': 14.1.0
+ '@octokit/request': 10.0.7
+ '@octokit/types': 16.0.0
universal-user-agent: 7.0.2
- '@octokit/openapi-types@25.1.0': {}
+ '@octokit/openapi-types@27.0.0': {}
- '@octokit/openapi-types@26.0.0': {}
-
- '@octokit/plugin-paginate-rest@13.1.1(@octokit/core@7.0.4)':
+ '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)':
dependencies:
- '@octokit/core': 7.0.4
- '@octokit/types': 14.1.0
+ '@octokit/core': 7.0.6
+ '@octokit/types': 16.0.0
- '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.4)':
+ '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)':
dependencies:
- '@octokit/core': 7.0.4
+ '@octokit/core': 7.0.6
- '@octokit/plugin-rest-endpoint-methods@16.1.0(@octokit/core@7.0.4)':
+ '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)':
dependencies:
- '@octokit/core': 7.0.4
- '@octokit/types': 15.0.0
+ '@octokit/core': 7.0.6
+ '@octokit/types': 16.0.0
- '@octokit/request-error@7.0.0':
+ '@octokit/request-error@7.1.0':
dependencies:
- '@octokit/types': 14.1.0
+ '@octokit/types': 16.0.0
- '@octokit/request@10.0.3':
+ '@octokit/request@10.0.7':
dependencies:
- '@octokit/endpoint': 11.0.0
- '@octokit/request-error': 7.0.0
- '@octokit/types': 14.1.0
+ '@octokit/endpoint': 11.0.2
+ '@octokit/request-error': 7.1.0
+ '@octokit/types': 16.0.0
fast-content-type-parse: 3.0.0
universal-user-agent: 7.0.2
- '@octokit/rest@22.0.0':
+ '@octokit/rest@22.0.1':
dependencies:
- '@octokit/core': 7.0.4
- '@octokit/plugin-paginate-rest': 13.1.1(@octokit/core@7.0.4)
- '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.4)
- '@octokit/plugin-rest-endpoint-methods': 16.1.0(@octokit/core@7.0.4)
+ '@octokit/core': 7.0.6
+ '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6)
+ '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6)
+ '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
- '@octokit/types@14.1.0':
+ '@octokit/types@16.0.0':
dependencies:
- '@octokit/openapi-types': 25.1.0
-
- '@octokit/types@15.0.0':
- dependencies:
- '@octokit/openapi-types': 26.0.0
+ '@octokit/openapi-types': 27.0.0
'@oven/bun-darwin-aarch64@1.3.5':
optional: true
@@ -6446,7 +6438,7 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
- chardet@2.1.0: {}
+ chardet@2.1.1: {}
chokidar@3.6.0:
dependencies:
@@ -6604,6 +6596,8 @@ snapshots:
optionalDependencies:
node-addon-api: 8.3.0
+ emoji-regex@10.6.0: {}
+
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -6714,7 +6708,7 @@ snapshots:
is-date-object: 1.1.0
is-symbol: 1.1.1
- es-toolkit@1.39.10: {}
+ es-toolkit@1.43.0: {}
esbuild@0.23.1:
optionalDependencies:
@@ -6805,27 +6799,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
@@ -6836,9 +6830,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6853,19 +6847,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6891,14 +6885,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6912,7 +6906,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6923,7 +6917,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6935,7 +6929,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7207,6 +7201,8 @@ snapshots:
gensync@1.0.0-beta.2: {}
+ get-east-asian-width@1.4.0: {}
+
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -7691,7 +7687,7 @@ snapshots:
ms@2.1.3: {}
- mute-stream@2.0.0: {}
+ mute-stream@3.0.0: {}
mz@2.7.0:
dependencies:
@@ -7795,6 +7791,8 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
+ obug@2.1.1: {}
+
onetime@6.0.0:
dependencies:
mimic-fn: 4.0.0
@@ -8247,6 +8245,12 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.1.0
+ string-width@7.2.0:
+ dependencies:
+ emoji-regex: 10.6.0
+ get-east-asian-width: 1.4.0
+ strip-ansi: 7.1.0
+
string.prototype.includes@2.0.1:
dependencies:
call-bind: 1.0.8
@@ -8729,12 +8733,6 @@ snapshots:
word-wrap@1.2.5: {}
- wrap-ansi@6.2.0:
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -8747,14 +8745,18 @@ snapshots:
string-width: 5.1.2
strip-ansi: 7.1.0
+ wrap-ansi@9.0.2:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 7.2.0
+ strip-ansi: 7.1.0
+
yallist@3.1.1: {}
yaml@2.6.0: {}
yocto-queue@0.1.0: {}
- yoctocolors-cjs@2.1.2: {}
-
zod-validation-error@4.0.2(zod@4.1.12):
dependencies:
zod: 4.1.12
From 25f7ccff8062d90db79264f3dca14f0bd91ecd13 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 12:46:14 +0100
Subject: [PATCH 078/353] Fix class extraction for Rails' strict locals
(#19525)
Fixes: #19481
This PR improves the Ruby extractor to better handle strict locals. We
recently introduced skipping comments in the Ruby extractor (PR #19243
for #19239) by ignoring comments that start with `#` until the end of
the line.
Strict locals are implemented like this:
```ruby
<%# locals: (css: "text-amber-600") %>
```
Notice the `#` after the `<%`, we considered this a comment and ignored
it.
This PR changes that behavior slightly where we skip comments that are
preceded by `%`. This means that `<%# anything here _will_ be scanned
%>`. This should solve the strict locals case, and normal comments will
still be skipped.
We can be more strict in the future if needed, but I think that this
should be a good solution for both scenarios.
### Test plan
1. Added a test to ensure we extract candidates in strict locals
2. Added a regression test for issue #19239 where we introduced skipping
comments in the Ruby extractor
3. Other existing tests are still passing
We can also verify the extracted candidates:
(it's subtle, but you can see that the class is being extracted now)
---
CHANGELOG.md | 1 +
.../extractor/pre_processors/pre_processor.rs | 30 +++++++++++-
.../src/extractor/pre_processors/ruby.rs | 47 ++++++++++++++++++-
3 files changed, 75 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bf75d28e3..5adb9f7f5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Allow whitespace around `@source inline()` argument ([#19461](https://github.com/tailwindlabs/tailwindcss/pull/19461))
- CLI: Emit comment when source maps are saved to files ([#19447](https://github.com/tailwindlabs/tailwindcss/pull/19447))
- Detect utilities when containing capital letters followed by numbers ([#19465](https://github.com/tailwindlabs/tailwindcss/pull/19465))
+- Fix class extraction for Rails' strict locals ([#19525](https://github.com/tailwindlabs/tailwindcss/pull/19525))
### Added
diff --git a/crates/oxide/src/extractor/pre_processors/pre_processor.rs b/crates/oxide/src/extractor/pre_processors/pre_processor.rs
index 8d42e744a..8e02b8f69 100644
--- a/crates/oxide/src/extractor/pre_processors/pre_processor.rs
+++ b/crates/oxide/src/extractor/pre_processors/pre_processor.rs
@@ -25,7 +25,33 @@ pub trait PreProcessor: Sized + Default {
}
#[cfg(test)]
- fn test_extract_contains(input: &str, items: Vec<&str>) {
+ fn test_extract_exact(input: &str, expected: Vec<&str>) {
+ use crate::extractor::{Extracted, Extractor};
+
+ let input = input.as_bytes();
+
+ let processor = Self::default();
+ let transformed = processor.process(input);
+
+ let extracted = Extractor::new(&transformed).extract();
+
+ // Extract all candidates and css variables.
+ let candidates = extracted
+ .iter()
+ .filter_map(|x| match x {
+ Extracted::Candidate(bytes) => std::str::from_utf8(bytes).ok(),
+ Extracted::CssVariable(bytes) => std::str::from_utf8(bytes).ok(),
+ })
+ .collect::>();
+
+ if candidates != expected {
+ dbg!(&candidates, &expected);
+ panic!("Extracted candidates do not match expected candidates");
+ }
+ }
+
+ #[cfg(test)]
+ fn test_extract_contains(input: &str, expected: Vec<&str>) {
use crate::extractor::{Extracted, Extractor};
let input = input.as_bytes();
@@ -46,7 +72,7 @@ pub trait PreProcessor: Sized + Default {
// Ensure all items are present in the candidates.
let mut missing = vec![];
- for item in &items {
+ for item in &expected {
if !candidates.contains(item) {
missing.push(item);
}
diff --git a/crates/oxide/src/extractor/pre_processors/ruby.rs b/crates/oxide/src/extractor/pre_processors/ruby.rs
index c94bd945f..89ac1ee7b 100644
--- a/crates/oxide/src/extractor/pre_processors/ruby.rs
+++ b/crates/oxide/src/extractor/pre_processors/ruby.rs
@@ -119,7 +119,11 @@ impl PreProcessor for Ruby {
}
// Replace comments in Ruby files
- b'#' => {
+ //
+ // Except for strict locals, these are defined in a `<%# locals: … %>`. Checking if
+ // the comment is preceded by a `%` should be enough without having to perform more
+ // parsing logic. Worst case we _do_ scan a few comments.
+ b'#' if !matches!(cursor.prev, b'%') => {
result[cursor.pos] = b' ';
cursor.advance();
@@ -382,4 +386,45 @@ mod tests {
"#;
Ruby::test_extract_contains(input, vec!["z-1", "z-2", "z-3"]);
}
+
+ // https://github.com/tailwindlabs/tailwindcss/issues/19239
+ #[test]
+ fn test_skip_comments() {
+ let input = r#"
+ # From activerecord-8.1.1/lib/active_record/errors.rb:147
+ # Rails uses RDoc cross-reference syntax in inline documentation:
+ # {ActiveRecord::Base#save!}[rdoc-ref:Persistence#save!]
+ "#;
+
+ // Nothing should be extracted from comments, so expect an empty array.
+ Ruby::test_extract_exact(input, vec![]);
+ }
+
+ // https://github.com/tailwindlabs/tailwindcss/issues/19481
+ #[test]
+ fn test_strict_locals() {
+ // Strict locals are defined in a `<%# locals: … %>`, but the `#` looks like a comment
+ // which we should not ignore in this case.
+ let input = r#"
+ <%# locals: (css: "text-amber-600") %>
+ <% more_css = "text-sky-500" %>
+
+
+ In a partial
+
+
+
+ In a partial using explicit local variables
+
+
+
+ In a partial using explicit local variables
+
+ "#;
+
+ Ruby::test_extract_contains(
+ input,
+ vec!["text-amber-600", "text-sky-500", "text-green-500"],
+ );
+ }
}
From dc432aaa186e23cdfbee0282c3af85d3a49a42d4 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Tue, 6 Jan 2026 11:49:41 +0000
Subject: [PATCH 079/353] =?UTF-8?q?Update=20@napi-rs/wasm-runtime=201.1.0?=
=?UTF-8?q?=20=E2=86=92=201.1.1=20(patch)=20(#19527)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
> 👉 **This PR is queued up to get rebased by Depfu**
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @napi-rs/wasm-runtime (1.1.0 → 1.1.1) ·
[Repo](https://github.com/napi-rs/napi-rs)
Sorry, we couldn't find anything useful about this release.
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
crates/node/npm/wasm32-wasi/package.json | 2 +-
crates/node/package.json | 2 +-
pnpm-lock.yaml | 58 ++++++++++++------------
3 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/crates/node/npm/wasm32-wasi/package.json b/crates/node/npm/wasm32-wasi/package.json
index 601ad809e..ea06f944d 100644
--- a/crates/node/npm/wasm32-wasi/package.json
+++ b/crates/node/npm/wasm32-wasi/package.json
@@ -27,7 +27,7 @@
},
"browser": "tailwindcss-oxide.wasi-browser.js",
"dependencies": {
- "@napi-rs/wasm-runtime": "^1.1.0",
+ "@napi-rs/wasm-runtime": "^1.1.1",
"@emnapi/core": "^1.7.1",
"@emnapi/runtime": "^1.7.1",
"@tybys/wasm-util": "^0.10.1",
diff --git a/crates/node/package.json b/crates/node/package.json
index 1bc5e0711..64282742a 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -34,7 +34,7 @@
"license": "MIT",
"devDependencies": {
"@napi-rs/cli": "^3.5.1",
- "@napi-rs/wasm-runtime": "^1.1.0",
+ "@napi-rs/wasm-runtime": "^1.1.1",
"emnapi": "1.7.1"
},
"engines": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f5625835f..d6dfe5f45 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -129,8 +129,8 @@ importers:
specifier: ^3.5.1
version: 3.5.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
- specifier: ^1.1.0
- version: 1.1.0
+ specifier: ^1.1.1
+ version: 1.1.1
emnapi:
specifier: 1.7.1
version: 1.7.1(node-addon-api@8.3.0)
@@ -167,8 +167,8 @@ importers:
specifier: ^1.1.0
version: 1.1.0
'@napi-rs/wasm-runtime':
- specifier: ^1.1.0
- version: 1.1.0
+ specifier: ^1.1.1
+ version: 1.1.1
'@tybys/wasm-util':
specifier: ^0.10.1
version: 0.10.1
@@ -506,7 +506,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -1742,8 +1742,8 @@ packages:
resolution: {integrity: sha512-7cmzIu+Vbupriudo7UudoMRH2OA3cTw67vva8MxeoAe5S7vPFI7z0vp0pMXiA25S8IUJefImQ90FeJjl8fjEaQ==}
engines: {node: '>= 10'}
- '@napi-rs/wasm-runtime@1.1.0':
- resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==}
+ '@napi-rs/wasm-runtime@1.1.1':
+ resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==}
'@napi-rs/wasm-tools-android-arm-eabi@1.0.1':
resolution: {integrity: sha512-lr07E/l571Gft5v4aA1dI8koJEmF1F0UigBbsqg9OWNzg80H3lDPO+auv85y3T/NHE3GirDk7x/D3sLO57vayw==}
@@ -5408,7 +5408,7 @@ snapshots:
'@napi-rs/lzma-wasm32-wasi@1.4.5':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.0
+ '@napi-rs/wasm-runtime': 1.1.1
optional: true
'@napi-rs/lzma-win32-arm64-msvc@1.4.5':
@@ -5478,7 +5478,7 @@ snapshots:
'@napi-rs/tar-wasm32-wasi@1.1.0':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.0
+ '@napi-rs/wasm-runtime': 1.1.1
optional: true
'@napi-rs/tar-win32-arm64-msvc@1.1.0':
@@ -5509,7 +5509,7 @@ snapshots:
'@napi-rs/tar-win32-ia32-msvc': 1.1.0
'@napi-rs/tar-win32-x64-msvc': 1.1.0
- '@napi-rs/wasm-runtime@1.1.0':
+ '@napi-rs/wasm-runtime@1.1.1':
dependencies:
'@emnapi/core': 1.7.1
'@emnapi/runtime': 1.7.1
@@ -5544,7 +5544,7 @@ snapshots:
'@napi-rs/wasm-tools-wasm32-wasi@1.0.1':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.0
+ '@napi-rs/wasm-runtime': 1.1.1
optional: true
'@napi-rs/wasm-tools-win32-arm64-msvc@1.0.1':
@@ -6799,27 +6799,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
@@ -6830,9 +6830,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6847,19 +6847,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6885,14 +6885,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6906,7 +6906,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6917,7 +6917,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6929,7 +6929,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
From f82ac39ff2873ad23321b7311b6a6b595836e499 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 12:54:43 +0100
Subject: [PATCH 080/353] Improve `@utility` name validation (#19524)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR improves the validation of allowed `@utility …` names.
Each `@utility` name should be a valid Tailwind CSS class, so new
syntaxes should not be allowed, e.g. `foo/bar/baz` would be invalid.
We already enforce this behavior but not consistently. The Oxide scanner
that scans all your source files for potential Tailwind CSS classes does
enforce all of these rules already. So if you used `@utility foo/bar/baz
{}`, the Oxide scanner would not pick up `foo/bar/baz` as a valid class
name, so for that reason it's not a breaking change.
Where we didn't enforce it is in places where you use the
development-only CDN or Tailwind Play. That's because those environments
don't use the Oxide at all, and get the classes from the DOM directly
and pass it to Tailwind's compiler.
This PR moves some of these validation rules into Tailwind's core when
defining custom `@utility` utilities.
Fixes: #19505
### Test plan
1. Existing tests still pass
2. Added a regression test for the linked issue
3. Added new tests with valid / invalid `@utility` names
I also confirmed with Oxide to know which classes were actually valid
and which ones are invalid.
Given this input CSS:
```css
@utility foo { color: red }
@utility foo_ { color: red } /* This one looks invalid to me, but it works today */
/* and I don't want to introduce unnecessary breaking changes. */
@utility foo-1.5 { color: red }
@utility foo-123 { color: red }
@utility -foo { color: red }
@utility foo-bar { color: red }
@utility foo_bar { color: red }
@utility foo-50% { color: red }
@utility foo-1/2 { color: red }
```
And this HTML:
```html
```
Then all classes in the `Extracted` section are found. One funny thing
in the not extracted section is that the `bar` in `foo.bar` and
`foo..bar` is also extracted. Feels like a potential bug, but out of
scope for this PR.
---
CHANGELOG.md | 1 +
packages/tailwindcss/src/index.test.ts | 35 +++++
packages/tailwindcss/src/utilities.test.ts | 43 ++++++
packages/tailwindcss/src/utilities.ts | 148 ++++++++++++++++++++-
4 files changed, 222 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5adb9f7f5..b66ebaea0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- CLI: Emit comment when source maps are saved to files ([#19447](https://github.com/tailwindlabs/tailwindcss/pull/19447))
- Detect utilities when containing capital letters followed by numbers ([#19465](https://github.com/tailwindlabs/tailwindcss/pull/19465))
- Fix class extraction for Rails' strict locals ([#19525](https://github.com/tailwindlabs/tailwindcss/pull/19525))
+- Align `@utility` name validation with Oxide scanner rules ([#19524](https://github.com/tailwindlabs/tailwindcss/pull/19524))
### Added
diff --git a/packages/tailwindcss/src/index.test.ts b/packages/tailwindcss/src/index.test.ts
index 2d6ab8daf..94b17714e 100644
--- a/packages/tailwindcss/src/index.test.ts
+++ b/packages/tailwindcss/src/index.test.ts
@@ -4660,6 +4660,41 @@ describe('@utility', () => {
`[Error: \`@utility my-*-utility\` defines an invalid utility name. The dynamic portion marked by \`-*\` must appear once at the end.]`,
)
})
+
+ // https://github.com/tailwindlabs/tailwindcss/issues/19505
+ test('@utility name cannot contain multiple `/` characters', async () => {
+ await expect(
+ compileCss(
+ css`
+ @utility ui/button {
+ display: inline-flex;
+ background: blue;
+ }
+ @tailwind utilities;
+ `,
+ ['ui/button'],
+ ),
+ ).resolves.toMatchInlineSnapshot(
+ `
+ ".ui\\/button {
+ background: #00f;
+ display: inline-flex;
+ }"
+ `,
+ )
+
+ await expect(
+ compileCss(css`
+ @utility ui/button/sm {
+ display: inline-flex;
+ background: blue;
+ font-size: 12px;
+ }
+ `),
+ ).rejects.toThrowErrorMatchingInlineSnapshot(
+ `[Error: \`@utility ui/button/sm\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter.]`,
+ )
+ })
})
test('addBase', async () => {
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index 732e4ab9a..cff2284f4 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -1,6 +1,7 @@
import { describe, expect, test, vi } from 'vitest'
import { compile } from '.'
import { compileCss, optimizeCss, run } from './test-utils/run'
+import { isValidFunctionalUtilityName, isValidStaticUtilityName } from './utilities'
const css = String.raw
@@ -27207,6 +27208,48 @@ describe('spacing utilities', () => {
})
describe('custom utilities', () => {
+ test.each([
+ ['foo', true], // Simple name
+ ['foo-123', true], // Ending with a number is valid
+ ['foo-2.5', true], // Dots are valid when surrounded by numbers
+ ['-foo', true], // Simple name with negative sign
+ ['foo-bar', true], // With dashes
+ ['foo_bar', true], // With underscores
+ ['foo-50%', true], // Bare value with percentage
+ ['foo-1/2', true], // Bare value with fraction
+ ['foo-sm/8', true], // Bare value with number modifier
+ ['foo-4/snug', true], // Bare value with named modifier
+ ['foo_', true], // This is supported today, so let's not break it
+ ['foo/bar', true], // A slash to separate the modifier is valid.
+
+ ['Foo', false], // Starting with uppercase letter is invalid
+ ['-Foo', false], // Starting with uppercase letter is invalid (negative)
+ ['foo-', false], // Should not end with a dash
+ ['foo-1/', false], // Invalid fraction/modifier
+ ['foo-p%', false], // Invalid percentage
+ ['foo.bar', false], // Dots are only valid when surrounded by numbers
+ ['foo-1..5', false], // Double dots are invalid
+ ['foo..bar', false], // Double dots are invalid definitely without numbers
+ ['foo/bar/baz', false], // Multiple slashes are invalid
+ ])('valid static utility name "%s" (%s)', (name, valid) => {
+ expect(isValidStaticUtilityName(name)).toBe(valid)
+ })
+
+ test.each([
+ ['foo', false], // Simple name, missing '-*' suffix
+ ['foo-*', true], // Simple name
+ ['foo--*', false], // Root should not end in `-`
+ ['-foo-*', true], // Simple name (negative)
+ ['foo-bar-*', true], // With dashes
+ ['foo_bar-*', true], // With underscores
+ ['Foo-*', false], // Starting with uppercase letter is invalid
+ ['-Foo-*', false], // Starting with uppercase letter is invalid
+ ['foo!-*', false], // Invalid special character
+ ['foo-[…]', false], // Invalid special character
+ ])('valid functional name "%s" (%s)', (name, valid) => {
+ expect(isValidFunctionalUtilityName(name)).toBe(valid)
+ })
+
test('custom static utility', async () => {
let { build } = await compile(css`
@layer utilities {
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index 8ec903af6..e1c84ce00 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -28,9 +28,6 @@ import { segment } from './utils/segment'
import * as ValueParser from './value-parser'
import { walk, WalkAction } from './walk'
-const IS_VALID_STATIC_UTILITY_NAME = /^-?[a-z][a-zA-Z0-9/%._-]*$/
-const IS_VALID_FUNCTIONAL_UTILITY_NAME = /^-?[a-z][a-zA-Z0-9/%._-]*-\*$/
-
const DEFAULT_SPACING_SUGGESTIONS = [
'0',
'0.5',
@@ -5835,7 +5832,7 @@ export function createCssUtility(node: AtRule) {
let name = node.params
// Functional utilities. E.g.: `tab-size-*`
- if (IS_VALID_FUNCTIONAL_UTILITY_NAME.test(name)) {
+ if (isValidFunctionalUtilityName(name)) {
// API:
//
// - `--value('literal')` resolves a literal named value
@@ -6184,7 +6181,7 @@ export function createCssUtility(node: AtRule) {
}
}
- if (IS_VALID_STATIC_UTILITY_NAME.test(name)) {
+ if (isValidStaticUtilityName(name)) {
return (designSystem: DesignSystem) => {
designSystem.utilities.static(name, () => node.nodes.map(cloneAstNode))
}
@@ -6428,3 +6425,144 @@ function alphaReplacedDropShadowProperties(
return [decl(property, prefix + replacedValue)]
}
}
+
+const UTILITY_ROOT = /^-?[a-z][a-zA-Z0-9_-]*/
+
+const PERCENT = 37
+const SLASH = 47
+const DOT = 46
+const LOWER_A = 97
+const LOWER_Z = 122
+const UPPER_A = 65
+const UPPER_Z = 90
+const ZERO = 48
+const NINE = 57
+const UNDERSCORE = 95
+const DASH = 45
+
+export function isValidStaticUtilityName(name: string): boolean {
+ let match = UTILITY_ROOT.exec(name)
+ if (match === null) return false // Invalid root
+
+ let root = match[0]
+ let value = name.slice(root.length)
+
+ // Root should not end in `-` if there is no value
+ //
+ // `tab-size-`
+ // --------- Root
+ if (value.length === 0 && root.endsWith('-')) {
+ return false
+ }
+
+ // No remaining value is valid
+ //
+ // `tab-size`
+ // -------- Root
+ if (value.length === 0) {
+ return true
+ }
+
+ // Any valid (static) utility should be valid including:
+ // - Bare values with `.`: `p-1.5`
+ // - Bare values with `%`: `w-50%`
+ // - With an embedded modifier: `text-xs/8`
+
+ let seenSlash = false
+ for (let i = 0; i < value.length; i++) {
+ let charCode = value.charCodeAt(i)
+ switch (charCode) {
+ case PERCENT: {
+ // A percentage is only valid at the end of the value
+ if (i !== value.length - 1) return false
+
+ // A percent is only valid when preceded by a digit. E.g.: `w-%` is invalid
+ let previousChar = value[i - 1] || root[root.length - 1] || ''
+ let previousCharCode = previousChar.charCodeAt(0)
+ if (previousCharCode < ZERO || previousCharCode > NINE) return false
+ break
+ }
+
+ case SLASH: {
+ // A slash must be followed by at least 1 character. E.g.: `foo/` is invalid
+ if (i === value.length - 1) return false
+
+ // A slash can only appear once. E.g.: `foo/bar/baz` is invalid
+ if (seenSlash) return false
+ seenSlash = true
+ break
+ }
+
+ case DOT: {
+ // Dots are only allowed between digits. E.g.: `p-1.a` is invalid
+ let previousChar = value[i - 1] || root[root.length - 1] || ''
+ let previousCharCode = previousChar.charCodeAt(0)
+ if (previousCharCode < ZERO || previousCharCode > NINE) return false
+
+ let nextChar = value[i + 1] || ''
+ let nextCharCode = nextChar.charCodeAt(0)
+ if (nextCharCode < ZERO || nextCharCode > NINE) return false
+ break
+ }
+
+ // Allowed special characters
+ case UNDERSCORE:
+ case DASH: {
+ continue
+ }
+
+ default: {
+ if (
+ (charCode >= LOWER_A && charCode <= LOWER_Z) || // Allow a-z
+ (charCode >= UPPER_A && charCode <= UPPER_Z) || // Allow A-Z
+ (charCode >= ZERO && charCode <= NINE) // Allow 0-9
+ ) {
+ continue
+ }
+
+ // Everything else is invalid
+ return false
+ }
+ }
+ }
+
+ return true
+}
+
+export function isValidFunctionalUtilityName(name: string): boolean {
+ if (!name.endsWith('-*')) return false // Missing '-*' suffix
+ name = name.slice(0, -2)
+
+ let match = UTILITY_ROOT.exec(name)
+ if (match === null) return false // Invalid root
+
+ let root = match[0]
+ let value = name.slice(root.length)
+
+ // Root should not end in `-` if there is no value
+ //
+ // `tab-size--*`
+ // --------- Root
+ // -- Suffix
+ //
+ // Because with default values, this could match `tab-size-` which is invalid.
+ if (value.length === 0 && root.endsWith('-')) {
+ return false
+ }
+
+ // No remaining value is valid
+ //
+ // `tab-size-*`
+ // -------- Root
+ // -- Suffix
+ if (value.length === 0) {
+ return true
+ }
+
+ // But if there is a value remaining, it's invalid.
+ //
+ // E.g.: `tab-size-[…]-*`
+ //
+ // If we allow more characters, we can extend the validation here
+ return false
+}
From 1f9ac73daf07112a8efe43e140861fffe4468a99 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:25:14 +0100
Subject: [PATCH 081/353] run release workflows against newer Node version
When using NAPI to build for release purposes, it relies on `inquirer`,
which relies on `@inquirer/core` which relies on a modern Node version
to support `import { styleText } from 'node:util'`
We want to still make sure that CI / Integration Tests pass on Node v20
(which we currently do), so just bumping the prepare-release.yml,
release-insiders.yml and release.yml workflows.
If this isn't enough, I'll properly drop the `@napi-rs/cli` version or
force an `inquirer`/`@inquirer/core` version. Let's try this first.
---
.github/workflows/prepare-release.yml | 2 +-
.github/workflows/release-insiders.yml | 2 +-
.github/workflows/release.yml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index be1050b03..545fba07d 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -8,7 +8,7 @@ on:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 20
+ NODE_VERSION: 25
OXIDE_LOCATION: ./crates/node
permissions:
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 53478a227..1dba8c5d0 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -9,7 +9,7 @@ permissions:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 20
+ NODE_VERSION: 25
OXIDE_LOCATION: ./crates/node
RELEASE_CHANNEL: insiders
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8b27773b3..1fa108081 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -10,7 +10,7 @@ permissions:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 20
+ NODE_VERSION: 25
OXIDE_LOCATION: ./crates/node
jobs:
From 4719dd98483c38121716478d5e88a9b3f27aeff7 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:37:35 +0100
Subject: [PATCH 082/353] Revert "run release workflows against newer Node
version"
This reverts commit 1f9ac73daf07112a8efe43e140861fffe4468a99.
---
.github/workflows/prepare-release.yml | 2 +-
.github/workflows/release-insiders.yml | 2 +-
.github/workflows/release.yml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index 545fba07d..be1050b03 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -8,7 +8,7 @@ on:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 25
+ NODE_VERSION: 20
OXIDE_LOCATION: ./crates/node
permissions:
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 1dba8c5d0..53478a227 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -9,7 +9,7 @@ permissions:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 25
+ NODE_VERSION: 20
OXIDE_LOCATION: ./crates/node
RELEASE_CHANNEL: insiders
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 1fa108081..8b27773b3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -10,7 +10,7 @@ permissions:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 25
+ NODE_VERSION: 20
OXIDE_LOCATION: ./crates/node
jobs:
From 7107c0471352bebdda39d495704305816de0de01 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:39:44 +0100
Subject: [PATCH 083/353] bump `actions/setup-node` to v6
---
.github/workflows/ci.yml | 2 +-
.github/workflows/integration-tests.yml | 2 +-
.github/workflows/prepare-release.yml | 6 +++---
.github/workflows/release-insiders.yml | 6 +++---
.github/workflows/release.yml | 6 +++---
5 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e369c64fc..999ffcaf0 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -45,7 +45,7 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 475570615..3e9b374fb 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -58,7 +58,7 @@ jobs:
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index be1050b03..1e9461ed2 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -77,7 +77,7 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
@@ -117,7 +117,7 @@ jobs:
key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./crates/**/*') }}
- name: Install Node.JS
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
@@ -221,7 +221,7 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 53478a227..5b26125dd 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -76,7 +76,7 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
@@ -116,7 +116,7 @@ jobs:
key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./crates/**/*') }}
- name: Install Node.JS
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
@@ -218,7 +218,7 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8b27773b3..79c1a70b7 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -76,7 +76,7 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
@@ -116,7 +116,7 @@ jobs:
key: ${{ runner.os }}-${{ matrix.target }}-oxide-${{ hashFiles('./crates/**/*') }}
- name: Install Node.JS
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
@@ -213,7 +213,7 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
From 4f76b47f40037be744d3e025ec615d795d63433e Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:41:55 +0100
Subject: [PATCH 084/353] bump `actions/checkout` to v6
---
.github/workflows/ci.yml | 2 +-
.github/workflows/integration-tests.yml | 2 +-
.github/workflows/prepare-release.yml | 6 +++---
.github/workflows/release-insiders.yml | 6 +++---
.github/workflows/release.yml | 6 +++---
5 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 999ffcaf0..005298ef9 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -41,7 +41,7 @@ jobs:
name: ${{ matrix.runner.name }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ matrix.node-version }}
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 3e9b374fb..5dd15ad93 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -50,7 +50,7 @@ jobs:
name: ${{ matrix.runner.name }} / ${{ matrix.integration }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- run: |
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index 1e9461ed2..6ef28f31a 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -73,7 +73,7 @@ jobs:
container: ${{ matrix.container }}
timeout-minutes: 15
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
@@ -153,7 +153,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Build FreeBSD
uses: cross-platform-actions/action@v0.25.0
env:
@@ -207,7 +207,7 @@ jobs:
- build-freebsd
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 20
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 5b26125dd..2fd8c010f 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -72,7 +72,7 @@ jobs:
container: ${{ matrix.container }}
timeout-minutes: 15
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
@@ -152,7 +152,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Build FreeBSD
uses: cross-platform-actions/action@v0.25.0
env:
@@ -206,7 +206,7 @@ jobs:
- build-freebsd
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 20
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 79c1a70b7..661154e7f 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -72,7 +72,7 @@ jobs:
container: ${{ matrix.container }}
timeout-minutes: 15
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- name: Use Node.js ${{ env.NODE_VERSION }}
@@ -152,7 +152,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Build FreeBSD
uses: cross-platform-actions/action@v0.25.0
env:
@@ -206,7 +206,7 @@ jobs:
- build-freebsd
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 20
From bd7fe7abc85ad429229e1d5b5d72754fc27be3ac Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:43:59 +0100
Subject: [PATCH 085/353] bump `actions/upload-artifact` to v6
---
.github/workflows/prepare-release.yml | 8 ++++----
.github/workflows/release-insiders.yml | 6 +++---
.github/workflows/release.yml | 4 ++--
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index 6ef28f31a..3a5ea7464 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -143,7 +143,7 @@ jobs:
run: ${{ matrix.strip }} ${{ env.OXIDE_LOCATION }}/*.node
- name: Upload artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: bindings-${{ matrix.target }}
path: ${{ env.OXIDE_LOCATION }}/*.node
@@ -187,7 +187,7 @@ jobs:
strip -x ${{ env.OXIDE_LOCATION }}/*.node
ls -la ${{ env.OXIDE_LOCATION }}
- name: Upload artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: bindings-x86_64-unknown-freebsd
path: ${{ env.OXIDE_LOCATION }}/*.node
@@ -301,13 +301,13 @@ jobs:
echo "EOF" >> $GITHUB_ENV
- name: Upload standalone artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: tailwindcss-standalone
path: packages/@tailwindcss-standalone/dist/
- name: Upload npm package tarballs
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: npm-package-tarballs
path: dist/*.tgz
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 2fd8c010f..1c690c96c 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -142,7 +142,7 @@ jobs:
run: ${{ matrix.strip }} ${{ env.OXIDE_LOCATION }}/*.node
- name: Upload artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: bindings-${{ matrix.target }}
path: ${{ env.OXIDE_LOCATION }}/*.node
@@ -186,7 +186,7 @@ jobs:
strip -x ${{ env.OXIDE_LOCATION }}/*.node
ls -la ${{ env.OXIDE_LOCATION }}
- name: Upload artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: bindings-x86_64-unknown-freebsd
path: ${{ env.OXIDE_LOCATION }}/*.node
@@ -292,7 +292,7 @@ jobs:
run: node ./scripts/lock-pre-release-versions.mjs
- name: Upload npm package tarballs
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: npm-package-tarballs
path: dist/*.tgz
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 661154e7f..c63ccfe77 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -142,7 +142,7 @@ jobs:
run: ${{ matrix.strip }} ${{ env.OXIDE_LOCATION }}/*.node
- name: Upload artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: bindings-${{ matrix.target }}
path: ${{ env.OXIDE_LOCATION }}/*.node
@@ -186,7 +186,7 @@ jobs:
strip -x ${{ env.OXIDE_LOCATION }}/*.node
ls -la ${{ env.OXIDE_LOCATION }}
- name: Upload artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: bindings-x86_64-unknown-freebsd
path: ${{ env.OXIDE_LOCATION }}/*.node
From d214c30161b95e047216a8e01977a6879fa555c8 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:44:23 +0100
Subject: [PATCH 086/353] bump `actions/download-artifact` to v6
---
.github/workflows/prepare-release.yml | 2 +-
.github/workflows/release-insiders.yml | 2 +-
.github/workflows/release.yml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index 3a5ea7464..0dcbe44bc 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -262,7 +262,7 @@ jobs:
run: pnpm --filter=!./playgrounds/* install
- name: Download artifacts
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v6
with:
path: ${{ env.OXIDE_LOCATION }}
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 1c690c96c..01d186cc1 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -259,7 +259,7 @@ jobs:
run: pnpm --filter=!./playgrounds/* install
- name: Download artifacts
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v6
with:
path: ${{ env.OXIDE_LOCATION }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index c63ccfe77..f9cfc6a08 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -254,7 +254,7 @@ jobs:
run: pnpm --filter=!./playgrounds/* install
- name: Download artifacts
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v6
with:
path: ${{ env.OXIDE_LOCATION }}
From 562acdac54f55bbc6ad558992d4df49daa704d4c Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:45:57 +0100
Subject: [PATCH 087/353] bump `actions/cache` to v5
---
.github/workflows/ci.yml | 4 ++--
.github/workflows/integration-tests.yml | 4 ++--
.github/workflows/prepare-release.yml | 8 ++++----
.github/workflows/release-insiders.yml | 8 ++++----
.github/workflows/release.yml | 8 ++++----
5 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 005298ef9..506ce53d7 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -52,7 +52,7 @@ jobs:
# Cargo already skips downloading dependencies if they already exist
- name: Cache cargo
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
@@ -64,7 +64,7 @@ jobs:
# Cache the `oxide` Rust build
- name: Cache oxide build
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
./crates/node/*.node
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 5dd15ad93..7a5c09b0f 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -65,7 +65,7 @@ jobs:
# Cargo already skips downloading dependencies if they already exist
- name: Cache cargo
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
@@ -77,7 +77,7 @@ jobs:
# Cache the `oxide` Rust build
- name: Cache oxide build
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
./crates/node/*.node
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index 0dcbe44bc..d65370a5d 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -90,7 +90,7 @@ jobs:
# Cargo already skips downloading dependencies if they already exist
- name: Cache cargo
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
@@ -102,7 +102,7 @@ jobs:
# Cache the `oxide` Rust build
- name: Cache oxide build
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
./crates/node/*.node
@@ -229,7 +229,7 @@ jobs:
# Cargo already skips downloading dependencies if they already exist
- name: Cache cargo
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
@@ -241,7 +241,7 @@ jobs:
# Cache the `oxide` Rust build
- name: Cache oxide build
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
./crates/node/*.node
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 01d186cc1..2621b2ee6 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -89,7 +89,7 @@ jobs:
# Cargo already skips downloading dependencies if they already exist
- name: Cache cargo
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
@@ -101,7 +101,7 @@ jobs:
# Cache the `oxide` Rust build
- name: Cache oxide build
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
./crates/node/*.node
@@ -226,7 +226,7 @@ jobs:
# Cargo already skips downloading dependencies if they already exist
- name: Cache cargo
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
@@ -238,7 +238,7 @@ jobs:
# Cache the `oxide` Rust build
- name: Cache oxide build
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
./crates/node/*.node
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index f9cfc6a08..881f7ed0a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -89,7 +89,7 @@ jobs:
# Cargo already skips downloading dependencies if they already exist
- name: Cache cargo
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
@@ -101,7 +101,7 @@ jobs:
# Cache the `oxide` Rust build
- name: Cache oxide build
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
./crates/node/*.node
@@ -221,7 +221,7 @@ jobs:
# Cargo already skips downloading dependencies if they already exist
- name: Cache cargo
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.cargo/bin/
@@ -233,7 +233,7 @@ jobs:
# Cache the `oxide` Rust build
- name: Cache oxide build
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
./crates/node/*.node
From bde403e013a4acfe3917cd3091975b632f834eae Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:46:44 +0100
Subject: [PATCH 088/353] bump `actions/github-script` to v8
---
.github/workflows/release-insiders.yml | 2 +-
.github/workflows/release.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 2621b2ee6..159801138 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -306,7 +306,7 @@ jobs:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Trigger Tailwind Play update
- uses: actions/github-script@v7
+ uses: actions/github-script@v8
with:
github-token: ${{ secrets.TAILWIND_PLAY_TOKEN }}
script: |
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 881f7ed0a..20bd34b3a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -300,7 +300,7 @@ jobs:
- name: Trigger Tailwind Play update
if: env.RELEASE_CHANNEL == 'latest'
- uses: actions/github-script@v7
+ uses: actions/github-script@v8
with:
github-token: ${{ secrets.TAILWIND_PLAY_TOKEN }}
script: |
From 6313cf677050e1848df8c35281d47ea80741cd2f Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:48:17 +0100
Subject: [PATCH 089/353] bump to Node 24 in CI
All bumped `actions/*` for GitHub Workflows require Node 24 right now.
We were relying on Node 20, but that's in maintenance mode until April.
Node 24 is the current Active LTS version.
---
.github/workflows/ci.yml | 8 +++++---
.github/workflows/integration-tests.yml | 9 +++++----
.github/workflows/prepare-release.yml | 2 +-
.github/workflows/release-insiders.yml | 2 +-
.github/workflows/release.yml | 2 +-
5 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 506ce53d7..d8c099873 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -8,12 +8,14 @@ on:
permissions:
contents: read
+env:
+ NODE_VERSION: 24
+
jobs:
tests:
strategy:
fail-fast: false
matrix:
- node-version: [20]
runner:
- name: Windows
os: windows-latest
@@ -44,10 +46,10 @@ jobs:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- - name: Use Node.js ${{ matrix.node-version }}
+ - name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v6
with:
- node-version: ${{ matrix.node-version }}
+ node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
# Cargo already skips downloading dependencies if they already exist
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 7a5c09b0f..e36f5b3ab 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -8,13 +8,14 @@ on:
permissions:
contents: read
+env:
+ NODE_VERSION: 24
+
jobs:
tests:
strategy:
fail-fast: false
matrix:
- node-version: [20]
-
runner:
- name: Windows
os: windows-latest
@@ -57,10 +58,10 @@ jobs:
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- - name: Use Node.js ${{ matrix.node-version }}
+ - name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v6
with:
- node-version: ${{ matrix.node-version }}
+ node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
# Cargo already skips downloading dependencies if they already exist
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index d65370a5d..e506ab187 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -8,7 +8,7 @@ on:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 20
+ NODE_VERSION: 24
OXIDE_LOCATION: ./crates/node
permissions:
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 159801138..f7792244f 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -9,7 +9,7 @@ permissions:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 20
+ NODE_VERSION: 24
OXIDE_LOCATION: ./crates/node
RELEASE_CHANNEL: insiders
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 20bd34b3a..3b0aeab20 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -10,7 +10,7 @@ permissions:
env:
APP_NAME: tailwindcss-oxide
- NODE_VERSION: 20
+ NODE_VERSION: 24
OXIDE_LOCATION: ./crates/node
jobs:
From c6f0c6b31845ed743030fc53a13b4ddc5657a468 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 13:57:52 +0100
Subject: [PATCH 090/353] bump required engine to Node 20
---
crates/node/npm/android-arm-eabi/package.json | 2 +-
crates/node/npm/android-arm64/package.json | 2 +-
crates/node/npm/darwin-arm64/package.json | 2 +-
crates/node/npm/darwin-x64/package.json | 2 +-
crates/node/npm/freebsd-x64/package.json | 2 +-
crates/node/npm/linux-arm-gnueabihf/package.json | 2 +-
crates/node/npm/linux-arm64-gnu/package.json | 2 +-
crates/node/npm/linux-arm64-musl/package.json | 2 +-
crates/node/npm/linux-x64-gnu/package.json | 2 +-
crates/node/npm/linux-x64-musl/package.json | 2 +-
crates/node/npm/win32-arm64-msvc/package.json | 2 +-
crates/node/npm/win32-x64-msvc/package.json | 2 +-
crates/node/package.json | 2 +-
13 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/crates/node/npm/android-arm-eabi/package.json b/crates/node/npm/android-arm-eabi/package.json
index 9d4181ce6..47df39f4e 100644
--- a/crates/node/npm/android-arm-eabi/package.json
+++ b/crates/node/npm/android-arm-eabi/package.json
@@ -22,6 +22,6 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
}
diff --git a/crates/node/npm/android-arm64/package.json b/crates/node/npm/android-arm64/package.json
index ff08b5b79..a2d8231ab 100644
--- a/crates/node/npm/android-arm64/package.json
+++ b/crates/node/npm/android-arm64/package.json
@@ -22,6 +22,6 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
}
diff --git a/crates/node/npm/darwin-arm64/package.json b/crates/node/npm/darwin-arm64/package.json
index e3e7e96e8..153b2306f 100644
--- a/crates/node/npm/darwin-arm64/package.json
+++ b/crates/node/npm/darwin-arm64/package.json
@@ -22,6 +22,6 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
}
diff --git a/crates/node/npm/darwin-x64/package.json b/crates/node/npm/darwin-x64/package.json
index 7b445cf0b..fd4fba92b 100644
--- a/crates/node/npm/darwin-x64/package.json
+++ b/crates/node/npm/darwin-x64/package.json
@@ -22,6 +22,6 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
}
diff --git a/crates/node/npm/freebsd-x64/package.json b/crates/node/npm/freebsd-x64/package.json
index 90064bbe1..89f126ba1 100644
--- a/crates/node/npm/freebsd-x64/package.json
+++ b/crates/node/npm/freebsd-x64/package.json
@@ -22,6 +22,6 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
}
diff --git a/crates/node/npm/linux-arm-gnueabihf/package.json b/crates/node/npm/linux-arm-gnueabihf/package.json
index 77f22d89c..e0939b037 100644
--- a/crates/node/npm/linux-arm-gnueabihf/package.json
+++ b/crates/node/npm/linux-arm-gnueabihf/package.json
@@ -22,6 +22,6 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
}
diff --git a/crates/node/npm/linux-arm64-gnu/package.json b/crates/node/npm/linux-arm64-gnu/package.json
index f7a4d3223..ec4d07081 100644
--- a/crates/node/npm/linux-arm64-gnu/package.json
+++ b/crates/node/npm/linux-arm64-gnu/package.json
@@ -22,7 +22,7 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
},
"libc": [
"glibc"
diff --git a/crates/node/npm/linux-arm64-musl/package.json b/crates/node/npm/linux-arm64-musl/package.json
index e07932131..1ff8c8917 100644
--- a/crates/node/npm/linux-arm64-musl/package.json
+++ b/crates/node/npm/linux-arm64-musl/package.json
@@ -22,7 +22,7 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
},
"libc": [
"musl"
diff --git a/crates/node/npm/linux-x64-gnu/package.json b/crates/node/npm/linux-x64-gnu/package.json
index bd1c36a82..b27ebb4f1 100644
--- a/crates/node/npm/linux-x64-gnu/package.json
+++ b/crates/node/npm/linux-x64-gnu/package.json
@@ -22,7 +22,7 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
},
"libc": [
"glibc"
diff --git a/crates/node/npm/linux-x64-musl/package.json b/crates/node/npm/linux-x64-musl/package.json
index b67ce82fe..b38fe0792 100644
--- a/crates/node/npm/linux-x64-musl/package.json
+++ b/crates/node/npm/linux-x64-musl/package.json
@@ -22,7 +22,7 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
},
"libc": [
"musl"
diff --git a/crates/node/npm/win32-arm64-msvc/package.json b/crates/node/npm/win32-arm64-msvc/package.json
index bbf820085..f1ef4133a 100644
--- a/crates/node/npm/win32-arm64-msvc/package.json
+++ b/crates/node/npm/win32-arm64-msvc/package.json
@@ -22,6 +22,6 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
}
diff --git a/crates/node/npm/win32-x64-msvc/package.json b/crates/node/npm/win32-x64-msvc/package.json
index ab648ee39..4049d272d 100644
--- a/crates/node/npm/win32-x64-msvc/package.json
+++ b/crates/node/npm/win32-x64-msvc/package.json
@@ -22,6 +22,6 @@
},
"license": "MIT",
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
}
}
diff --git a/crates/node/package.json b/crates/node/package.json
index 64282742a..ff0fea3b1 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -38,7 +38,7 @@
"emnapi": "1.7.1"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 20"
},
"files": [
"index.js",
From 7d78fda879262e11defae758e8111a193199e053 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 14:37:46 +0100
Subject: [PATCH 091/353] temporarily disable discord notifications
---
.github/workflows/ci.yml | 12 ++++++------
.github/workflows/integration-tests.yml | 12 ++++++------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d8c099873..b4f8d7592 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -106,9 +106,9 @@ jobs:
- name: Run Playwright tests
run: npm run test:ui
- - name: Notify Discord
- if: failure() && github.ref == 'refs/heads/main'
- uses: discord-actions/message@v2
- with:
- webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
- message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
+ # - name: Notify Discord
+ # if: failure() && github.ref == 'refs/heads/main'
+ # uses: discord-actions/message@v2
+ # with:
+ # webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
+ # message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index e36f5b3ab..647fbabff 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -109,9 +109,9 @@ jobs:
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
- - name: Notify Discord
- if: failure() && github.ref == 'refs/heads/main'
- uses: discord-actions/message@v2
- with:
- webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
- message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
+ # - name: Notify Discord
+ # if: failure() && github.ref == 'refs/heads/main'
+ # uses: discord-actions/message@v2
+ # with:
+ # webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
+ # message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
From 26515af2d55f1f56f3daaad13e6d1e01403c2c6e Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 15:07:42 +0100
Subject: [PATCH 092/353] pin musl-related docker images
---
.github/workflows/prepare-release.yml | 4 ++--
.github/workflows/release-insiders.yml | 4 ++--
.github/workflows/release.yml | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index e506ab187..f117c19eb 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -60,13 +60,13 @@ jobs:
strip: aarch64-linux-musl-strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
strip: strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
name: Build ${{ matrix.target }} (oxide)
runs-on: ${{ matrix.os }}
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index f7792244f..1c6c307fd 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -59,13 +59,13 @@ jobs:
strip: aarch64-linux-musl-strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
strip: strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
name: Build ${{ matrix.target }} (oxide)
runs-on: ${{ matrix.os }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3b0aeab20..53347e808 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -59,13 +59,13 @@ jobs:
strip: aarch64-linux-musl-strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
strip: strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
name: Build ${{ matrix.target }} (oxide)
runs-on: ${{ matrix.os }}
From ae130776ab805a2a74de95c4a3ca15653c313cec Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 15:11:38 +0100
Subject: [PATCH 093/353] Revert "pin musl-related docker images"
This reverts commit 26515af2d55f1f56f3daaad13e6d1e01403c2c6e.
---
.github/workflows/prepare-release.yml | 4 ++--
.github/workflows/release-insiders.yml | 4 ++--
.github/workflows/release.yml | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index f117c19eb..e506ab187 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -60,13 +60,13 @@ jobs:
strip: aarch64-linux-musl-strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
strip: strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
name: Build ${{ matrix.target }} (oxide)
runs-on: ${{ matrix.os }}
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index 1c6c307fd..f7792244f 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -59,13 +59,13 @@ jobs:
strip: aarch64-linux-musl-strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
strip: strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
name: Build ${{ matrix.target }} (oxide)
runs-on: ${{ matrix.os }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 53347e808..3b0aeab20 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -59,13 +59,13 @@ jobs:
strip: aarch64-linux-musl-strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
strip: strip
download: true
container:
- image: ghcr.io/napi-rs/napi-rs/nodejs-rust@sha256:78c9ab1f117f8c535b93c4b91a2f19063dda6e4dba48a6187df49810625992c1
+ image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
name: Build ${{ matrix.target }} (oxide)
runs-on: ${{ matrix.os }}
From 60c6255fb87b0c6497cbdf9cf6d87a0132bd09a3 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 15:12:32 +0100
Subject: [PATCH 094/353] use older version of `@napi-rs/cli`
---
crates/node/package.json | 2 +-
pnpm-lock.yaml | 55 +++++++++++++++-------------------------
2 files changed, 21 insertions(+), 36 deletions(-)
diff --git a/crates/node/package.json b/crates/node/package.json
index ff0fea3b1..b2c174b3a 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -33,7 +33,7 @@
},
"license": "MIT",
"devDependencies": {
- "@napi-rs/cli": "^3.5.1",
+ "@napi-rs/cli": "^3.4.1",
"@napi-rs/wasm-runtime": "^1.1.1",
"emnapi": "1.7.1"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d6dfe5f45..b6d7e867a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -126,7 +126,7 @@ importers:
version: link:npm/win32-x64-msvc
devDependencies:
'@napi-rs/cli':
- specifier: ^3.5.1
+ specifier: ^3.4.1
version: 3.5.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
specifier: ^1.1.1
@@ -506,7 +506,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
typescript:
specifier: ^5.5.4
version: 5.5.4
@@ -543,7 +543,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
typescript:
specifier: ^5.5.4
version: 5.6.3
@@ -2024,7 +2024,6 @@ packages:
'@parcel/watcher-darwin-arm64@2.5.1':
resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.0':
@@ -2036,7 +2035,6 @@ packages:
'@parcel/watcher-darwin-x64@2.5.1':
resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.0':
@@ -2084,7 +2082,6 @@ packages:
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-arm64-musl@2.5.0':
@@ -2096,7 +2093,6 @@ packages:
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
- cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-x64-glibc@2.5.0':
@@ -2108,7 +2104,6 @@ packages:
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [linux]
'@parcel/watcher-linux-x64-musl@2.5.0':
@@ -2120,7 +2115,6 @@ packages:
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [linux]
'@parcel/watcher-wasm@2.5.0':
@@ -2162,7 +2156,6 @@ packages:
'@parcel/watcher-win32-x64@2.5.1':
resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
engines: {node: '>= 10.0.0'}
- cpu: [x64]
os: [win32]
'@parcel/watcher@2.5.0':
@@ -2618,7 +2611,6 @@ packages:
bun@1.3.5:
resolution: {integrity: sha512-c1YHIGUfgvYPJmLug5QiLzNWlX2Dg7X/67JWu1Va+AmMXNXzC/KQn2lgQ7rD+n1u1UqDpJMowVGGxTNpbPydNw==}
- cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -3518,13 +3510,11 @@ packages:
lightningcss-darwin-arm64@1.30.2:
resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.30.2:
resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.30.2:
@@ -3542,25 +3532,21 @@ packages:
lightningcss-linux-arm64-gnu@1.30.2:
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [linux]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
- cpu: [arm64]
os: [linux]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [linux]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [linux]
lightningcss-win32-arm64-msvc@1.30.2:
@@ -3572,7 +3558,6 @@ packages:
lightningcss-win32-x64-msvc@1.30.2:
resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
engines: {node: '>= 12.0.0'}
- cpu: [x64]
os: [win32]
lightningcss@1.30.2:
@@ -6799,27 +6784,27 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.5.4
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
dependencies:
'@next/eslint-plugin-next': 16.1.0
eslint: 9.39.2(jiti@2.6.1)
@@ -6830,9 +6815,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.6.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -6847,19 +6832,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -6885,14 +6870,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -6906,7 +6891,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6917,7 +6902,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6929,7 +6914,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
From 80e35e8f38ff34b9fdbe593e18b17eca2acecb7d Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 15:18:05 +0100
Subject: [PATCH 095/353] pin `@napi-rs/cli`
Newer versions of `@napi-rs/cli` (I noticed it in 3.5.1) rely on `@inquirer/core` for the CLI.
This version requires a modern Node version because it relies on `import
{ styleText } from 'node:util';` which is not supported on older Node
versions (<20).
The issue now is that we rely on a Docker image on ghcr
(ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine) which ships with Node
v18 which is too old and would crash when trying to build on CI.
Once ghcr is updated with a newer embedded Node version, we can bump
`@napi-rs/cli` again.
But for now, it's pinned.
---
crates/node/package.json | 2 +-
pnpm-lock.yaml | 294 +++++++++++++++++++--------------------
2 files changed, 141 insertions(+), 155 deletions(-)
diff --git a/crates/node/package.json b/crates/node/package.json
index b2c174b3a..00557993d 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -33,7 +33,7 @@
},
"license": "MIT",
"devDependencies": {
- "@napi-rs/cli": "^3.4.1",
+ "@napi-rs/cli": "3.4.1",
"@napi-rs/wasm-runtime": "^1.1.1",
"emnapi": "1.7.1"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b6d7e867a..d32bc3c64 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -126,8 +126,8 @@ importers:
version: link:npm/win32-x64-msvc
devDependencies:
'@napi-rs/cli':
- specifier: ^3.4.1
- version: 3.5.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
+ specifier: 3.4.1
+ version: 3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
specifier: ^1.1.1
version: 1.1.1
@@ -1322,134 +1322,134 @@ packages:
cpu: [x64]
os: [win32]
- '@inquirer/ansi@2.0.2':
- resolution: {integrity: sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/ansi@1.0.2':
+ resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}
+ engines: {node: '>=18'}
- '@inquirer/checkbox@5.0.3':
- resolution: {integrity: sha512-xtQP2eXMFlOcAhZ4ReKP2KZvDIBb1AnCfZ81wWXG3DXLVH0f0g4obE0XDPH+ukAEMRcZT0kdX2AS1jrWGXbpxw==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/checkbox@4.3.2':
+ resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/confirm@6.0.3':
- resolution: {integrity: sha512-lyEvibDFL+NA5R4xl8FUmNhmu81B+LDL9L/MpKkZlQDJZXzG8InxiqYxiAlQYa9cqLLhYqKLQwZqXmSTqCLjyw==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/confirm@5.1.21':
+ resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/core@11.1.0':
- resolution: {integrity: sha512-+jD/34T1pK8M5QmZD/ENhOfXdl9Zr+BrQAUc5h2anWgi7gggRq15ZbiBeLoObj0TLbdgW7TAIQRU2boMc9uOKQ==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/core@10.3.2':
+ resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/editor@5.0.3':
- resolution: {integrity: sha512-wYyQo96TsAqIciP/r5D3cFeV8h4WqKQ/YOvTg5yOfP2sqEbVVpbxPpfV3LM5D0EP4zUI3EZVHyIUIllnoIa8OQ==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/editor@4.2.23':
+ resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/expand@5.0.3':
- resolution: {integrity: sha512-2oINvuL27ujjxd95f6K2K909uZOU2x1WiAl7Wb1X/xOtL8CgQ1kSxzykIr7u4xTkXkXOAkCuF45T588/YKee7w==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/expand@4.0.23':
+ resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/external-editor@2.0.2':
- resolution: {integrity: sha512-X/fMXK7vXomRWEex1j8mnj7s1mpnTeP4CO/h2gysJhHLT2WjBnLv4ZQEGpm/kcYI8QfLZ2fgW+9kTKD+jeopLg==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/external-editor@1.0.3':
+ resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/figures@2.0.2':
- resolution: {integrity: sha512-qXm6EVvQx/FmnSrCWCIGtMHwqeLgxABP8XgcaAoywsL0NFga9gD5kfG0gXiv80GjK9Hsoz4pgGwF/+CjygyV9A==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/figures@1.0.15':
+ resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}
+ engines: {node: '>=18'}
- '@inquirer/input@5.0.3':
- resolution: {integrity: sha512-4R0TdWl53dtp79Vs6Df2OHAtA2FVNqya1hND1f5wjHWxZJxwDMSNB1X5ADZJSsQKYAJ5JHCTO+GpJZ42mK0Otw==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/input@4.3.1':
+ resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/number@4.0.3':
- resolution: {integrity: sha512-TjQLe93GGo5snRlu83JxE38ZPqj5ZVggL+QqqAF2oBA5JOJoxx25GG3EGH/XN/Os5WOmKfO8iLVdCXQxXRZIMQ==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/number@3.0.23':
+ resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/password@5.0.3':
- resolution: {integrity: sha512-rCozGbUMAHedTeYWEN8sgZH4lRCdgG/WinFkit6ZPsp8JaNg2T0g3QslPBS5XbpORyKP/I+xyBO81kFEvhBmjA==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/password@4.0.23':
+ resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/prompts@8.1.0':
- resolution: {integrity: sha512-LsZMdKcmRNF5LyTRuZE5nWeOjganzmN3zwbtNfcs6GPh3I2TsTtF1UYZlbxVfhxd+EuUqLGs/Lm3Xt4v6Az1wA==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/prompts@7.10.1':
+ resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/rawlist@5.1.0':
- resolution: {integrity: sha512-yUCuVh0jW026Gr2tZlG3kHignxcrLKDR3KBp+eUgNz+BAdSeZk0e18yt2gyBr+giYhj/WSIHCmPDOgp1mT2niQ==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/rawlist@4.1.11':
+ resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/search@4.0.3':
- resolution: {integrity: sha512-lzqVw0YwuKYetk5VwJ81Ba+dyVlhseHPx9YnRKQgwXdFS0kEavCz2gngnNhnMIxg8+j1N/rUl1t5s1npwa7bqg==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/search@3.2.2':
+ resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/select@5.0.3':
- resolution: {integrity: sha512-M+ynbwS0ecQFDYMFrQrybA0qL8DV0snpc4kKevCCNaTpfghsRowRY7SlQBeIYNzHqXtiiz4RG9vTOeb/udew7w==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/select@4.4.2':
+ resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
- '@inquirer/type@4.0.2':
- resolution: {integrity: sha512-cae7mzluplsjSdgFA6ACLygb5jC8alO0UUnFPyu0E7tNRPrL+q/f8VcSXp+cjZQ7l5CMpDpi2G1+IQvkOiL1Lw==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ '@inquirer/type@3.0.10':
+ resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==}
+ engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@@ -1493,12 +1493,12 @@ packages:
'@jridgewell/trace-mapping@0.3.29':
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
- '@napi-rs/cli@3.5.1':
- resolution: {integrity: sha512-XBfLQRDcB3qhu6bazdMJsecWW55kR85l5/k0af9BIBELXQSsCFU0fzug7PX8eQp6vVdm7W/U3z6uP5WmITB2Gw==}
+ '@napi-rs/cli@3.4.1':
+ resolution: {integrity: sha512-ayhm+NfrP5Hmh7vy5pfyYm/ktYtLh2PrgdLuqHTAubO7RoO2JkUE4F991AtgYxNewwXI8+guZLxU8itV7QnDrQ==}
engines: {node: '>= 16'}
hasBin: true
peerDependencies:
- '@emnapi/runtime': ^1.7.1
+ '@emnapi/runtime': ^1.5.0
peerDependenciesMeta:
'@emnapi/runtime':
optional: true
@@ -2844,9 +2844,6 @@ packages:
node-addon-api:
optional: true
- emoji-regex@10.6.0:
- resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
-
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -3153,10 +3150,6 @@ packages:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
- get-east-asian-width@1.4.0:
- resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
- engines: {node: '>=18'}
-
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -3660,9 +3653,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- mute-stream@3.0.0:
- resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==}
- engines: {node: ^20.17.0 || >=22.9.0}
+ mute-stream@2.0.0:
+ resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
+ engines: {node: ^18.17.0 || >=20.5.0}
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
@@ -3774,9 +3767,6 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
- obug@2.1.1:
- resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
-
onetime@6.0.0:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
@@ -4177,10 +4167,6 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
- string-width@7.2.0:
- resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
- engines: {node: '>=18'}
-
string.prototype.includes@2.0.1:
resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
engines: {node: '>= 0.4'}
@@ -4602,6 +4588,10 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
+ wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -4610,10 +4600,6 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
- wrap-ansi@9.0.2:
- resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
- engines: {node: '>=18'}
-
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -4626,6 +4612,10 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
+ yoctocolors-cjs@2.1.3:
+ resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
+ engines: {node: '>=18'}
+
zod-validation-error@4.0.2:
resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
@@ -5145,122 +5135,128 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
- '@inquirer/ansi@2.0.2': {}
+ '@inquirer/ansi@1.0.2': {}
- '@inquirer/checkbox@5.0.3(@types/node@20.19.1)':
+ '@inquirer/checkbox@4.3.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 2.0.2
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/figures': 2.0.2
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.3
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/confirm@6.0.3(@types/node@20.19.1)':
+ '@inquirer/confirm@5.1.21(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/core@11.1.0(@types/node@20.19.1)':
+ '@inquirer/core@10.3.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 2.0.2
- '@inquirer/figures': 2.0.2
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
cli-width: 4.1.0
- mute-stream: 3.0.0
+ mute-stream: 2.0.0
signal-exit: 4.1.0
- wrap-ansi: 9.0.2
+ wrap-ansi: 6.2.0
+ yoctocolors-cjs: 2.1.3
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/editor@5.0.3(@types/node@20.19.1)':
+ '@inquirer/editor@4.2.23(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/external-editor': 2.0.2(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/external-editor': 1.0.3(@types/node@20.19.1)
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/expand@5.0.3(@types/node@20.19.1)':
+ '@inquirer/expand@4.0.23(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.3
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/external-editor@2.0.2(@types/node@20.19.1)':
+ '@inquirer/external-editor@1.0.3(@types/node@20.19.1)':
dependencies:
chardet: 2.1.1
iconv-lite: 0.7.0
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/figures@2.0.2': {}
+ '@inquirer/figures@1.0.15': {}
- '@inquirer/input@5.0.3(@types/node@20.19.1)':
+ '@inquirer/input@4.3.1(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/number@4.0.3(@types/node@20.19.1)':
+ '@inquirer/number@3.0.23(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/password@5.0.3(@types/node@20.19.1)':
+ '@inquirer/password@4.0.23(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 2.0.2
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/prompts@8.1.0(@types/node@20.19.1)':
+ '@inquirer/prompts@7.10.1(@types/node@20.19.1)':
dependencies:
- '@inquirer/checkbox': 5.0.3(@types/node@20.19.1)
- '@inquirer/confirm': 6.0.3(@types/node@20.19.1)
- '@inquirer/editor': 5.0.3(@types/node@20.19.1)
- '@inquirer/expand': 5.0.3(@types/node@20.19.1)
- '@inquirer/input': 5.0.3(@types/node@20.19.1)
- '@inquirer/number': 4.0.3(@types/node@20.19.1)
- '@inquirer/password': 5.0.3(@types/node@20.19.1)
- '@inquirer/rawlist': 5.1.0(@types/node@20.19.1)
- '@inquirer/search': 4.0.3(@types/node@20.19.1)
- '@inquirer/select': 5.0.3(@types/node@20.19.1)
+ '@inquirer/checkbox': 4.3.2(@types/node@20.19.1)
+ '@inquirer/confirm': 5.1.21(@types/node@20.19.1)
+ '@inquirer/editor': 4.2.23(@types/node@20.19.1)
+ '@inquirer/expand': 4.0.23(@types/node@20.19.1)
+ '@inquirer/input': 4.3.1(@types/node@20.19.1)
+ '@inquirer/number': 3.0.23(@types/node@20.19.1)
+ '@inquirer/password': 4.0.23(@types/node@20.19.1)
+ '@inquirer/rawlist': 4.1.11(@types/node@20.19.1)
+ '@inquirer/search': 3.2.2(@types/node@20.19.1)
+ '@inquirer/select': 4.4.2(@types/node@20.19.1)
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/rawlist@5.1.0(@types/node@20.19.1)':
+ '@inquirer/rawlist@4.1.11(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.3
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/search@4.0.3(@types/node@20.19.1)':
+ '@inquirer/search@3.2.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/figures': 2.0.2
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.3
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/select@5.0.3(@types/node@20.19.1)':
+ '@inquirer/select@4.4.2(@types/node@20.19.1)':
dependencies:
- '@inquirer/ansi': 2.0.2
- '@inquirer/core': 11.1.0(@types/node@20.19.1)
- '@inquirer/figures': 2.0.2
- '@inquirer/type': 4.0.2(@types/node@20.19.1)
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/core': 10.3.2(@types/node@20.19.1)
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@20.19.1)
+ yoctocolors-cjs: 2.1.3
optionalDependencies:
'@types/node': 20.19.1
- '@inquirer/type@4.0.2(@types/node@20.19.1)':
+ '@inquirer/type@3.0.10(@types/node@20.19.1)':
optionalDependencies:
'@types/node': 20.19.1
@@ -5313,18 +5309,18 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
- '@napi-rs/cli@3.5.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
+ '@napi-rs/cli@3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
dependencies:
- '@inquirer/prompts': 8.1.0(@types/node@20.19.1)
+ '@inquirer/prompts': 7.10.1(@types/node@20.19.1)
'@napi-rs/cross-toolchain': 1.0.3
'@napi-rs/wasm-tools': 1.0.1
'@octokit/rest': 22.0.1
clipanion: 4.0.0-rc.4(typanion@3.14.0)
colorette: 2.0.20
+ debug: 4.4.3
emnapi: 1.7.1(node-addon-api@8.3.0)
es-toolkit: 1.43.0
js-yaml: 4.1.0
- obug: 2.1.1
semver: 7.7.3
typanion: 3.14.0
optionalDependencies:
@@ -6581,8 +6577,6 @@ snapshots:
optionalDependencies:
node-addon-api: 8.3.0
- emoji-regex@10.6.0: {}
-
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -7186,8 +7180,6 @@ snapshots:
gensync@1.0.0-beta.2: {}
- get-east-asian-width@1.4.0: {}
-
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -7672,7 +7664,7 @@ snapshots:
ms@2.1.3: {}
- mute-stream@3.0.0: {}
+ mute-stream@2.0.0: {}
mz@2.7.0:
dependencies:
@@ -7776,8 +7768,6 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
- obug@2.1.1: {}
-
onetime@6.0.0:
dependencies:
mimic-fn: 4.0.0
@@ -8230,12 +8220,6 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.1.0
- string-width@7.2.0:
- dependencies:
- emoji-regex: 10.6.0
- get-east-asian-width: 1.4.0
- strip-ansi: 7.1.0
-
string.prototype.includes@2.0.1:
dependencies:
call-bind: 1.0.8
@@ -8718,6 +8702,12 @@ snapshots:
word-wrap@1.2.5: {}
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -8730,18 +8720,14 @@ snapshots:
string-width: 5.1.2
strip-ansi: 7.1.0
- wrap-ansi@9.0.2:
- dependencies:
- ansi-styles: 6.2.1
- string-width: 7.2.0
- strip-ansi: 7.1.0
-
yallist@3.1.1: {}
yaml@2.6.0: {}
yocto-queue@0.1.0: {}
+ yoctocolors-cjs@2.1.3: {}
+
zod-validation-error@4.0.2(zod@4.1.12):
dependencies:
zod: 4.1.12
From 197d21c438e9864f4433f2730dd227d82182d618 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 15:28:25 +0100
Subject: [PATCH 096/353] remove `.npmrc` with `auto-install-peers=true`
This was necessary in previous versions of Node, but now that we use
Node 24 in CI you get the following warning:
> npm warn Unknown env config "auto-install-peers". This will stop working in the next major version of npm.
So... let's get rid of it.
---
.npmrc | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 .npmrc
diff --git a/.npmrc b/.npmrc
deleted file mode 100644
index ded82e2f6..000000000
--- a/.npmrc
+++ /dev/null
@@ -1 +0,0 @@
-auto-install-peers = true
From ffcb96a52365bb81462c86cac6f006619b05a3f6 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 16:00:48 +0100
Subject: [PATCH 097/353] retry integration tests 3 times before actually
failing
This is not ideal, but it prevents some manual work when CI is a bit too
flaky on the integration tests. This also prevents the CI job from
re-running from scratch which should speed up the process as well.
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 1b5a50a82..bbd0bdbd2 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
"postbuild": "node ./scripts/pack-packages.mjs",
"dev": "turbo dev --filter=!./playgrounds/*",
"test": "cargo test && vitest run --hideSkippedTests",
- "test:integrations": "vitest --root=./integrations",
+ "test:integrations": "vitest --root=./integrations --retry=3",
"test:ui": "pnpm run --filter=tailwindcss test:ui && pnpm run --filter=@tailwindcss/browser test:ui",
"tdd": "vitest --hideSkippedTests",
"bench": "vitest bench",
From 309d7f6e8a61dfdf1539899395ba9d033929a083 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 16:08:02 +0100
Subject: [PATCH 098/353] bump nuxt dependency in integration tests
---
integrations/vite/nuxt.test.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/integrations/vite/nuxt.test.ts b/integrations/vite/nuxt.test.ts
index a6ac545b9..a803a89da 100644
--- a/integrations/vite/nuxt.test.ts
+++ b/integrations/vite/nuxt.test.ts
@@ -7,7 +7,7 @@ const SETUP = {
"type": "module",
"dependencies": {
"@tailwindcss/vite": "workspace:^",
- "nuxt": "3.14.0",
+ "nuxt": "3.16.0",
"nitropack": "2.11.0",
"tailwindcss": "workspace:^",
"vue": "latest"
From efd75c1abb4f4f5594ad6f4e09edd2c8089e435f Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 16:15:48 +0100
Subject: [PATCH 099/353] re-run integration tests in CI if they fail
This prevents the CI job from having to restart the entire job.
---
.github/workflows/integration-tests.yml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 647fbabff..57478689c 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -105,7 +105,11 @@ jobs:
CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER: 'lld-link'
- name: Test ${{ matrix.integration }}
- run: pnpm run test:integrations ./integrations/${{ matrix.integration }}
+ run: |
+ pnpm run test:integrations ./integrations/${{ matrix.integration }}
+ || pnpm run test:integrations ./integrations/${{ matrix.integration }}
+ || pnpm run test:integrations ./integrations/${{ matrix.integration }}
+
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
From 4b507b0a23b31fb345807becefec2b4bce8b1339 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 16:23:46 +0100
Subject: [PATCH 100/353] Revert "retry integration tests 3 times before
actually failing"
This reverts commit ffcb96a52365bb81462c86cac6f006619b05a3f6.
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index bbd0bdbd2..1b5a50a82 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
"postbuild": "node ./scripts/pack-packages.mjs",
"dev": "turbo dev --filter=!./playgrounds/*",
"test": "cargo test && vitest run --hideSkippedTests",
- "test:integrations": "vitest --root=./integrations --retry=3",
+ "test:integrations": "vitest --root=./integrations",
"test:ui": "pnpm run --filter=tailwindcss test:ui && pnpm run --filter=@tailwindcss/browser test:ui",
"tdd": "vitest --hideSkippedTests",
"bench": "vitest bench",
From 22c06185831fc3630cb39f0b44a4a26db39b0253 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 16:23:56 +0100
Subject: [PATCH 101/353] Revert "re-run integration tests in CI if they fail"
This reverts commit efd75c1abb4f4f5594ad6f4e09edd2c8089e435f.
---
.github/workflows/integration-tests.yml | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 57478689c..647fbabff 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -105,11 +105,7 @@ jobs:
CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER: 'lld-link'
- name: Test ${{ matrix.integration }}
- run: |
- pnpm run test:integrations ./integrations/${{ matrix.integration }}
- || pnpm run test:integrations ./integrations/${{ matrix.integration }}
- || pnpm run test:integrations ./integrations/${{ matrix.integration }}
-
+ run: pnpm run test:integrations ./integrations/${{ matrix.integration }}
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
From b8454b0b3fbcc2bee499936462cb2ae9cdff2047 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 16:40:50 +0100
Subject: [PATCH 102/353] Revert "temporarily disable discord notifications"
This reverts commit 7d78fda879262e11defae758e8111a193199e053.
---
.github/workflows/ci.yml | 12 ++++++------
.github/workflows/integration-tests.yml | 12 ++++++------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b4f8d7592..d8c099873 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -106,9 +106,9 @@ jobs:
- name: Run Playwright tests
run: npm run test:ui
- # - name: Notify Discord
- # if: failure() && github.ref == 'refs/heads/main'
- # uses: discord-actions/message@v2
- # with:
- # webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
- # message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
+ - name: Notify Discord
+ if: failure() && github.ref == 'refs/heads/main'
+ uses: discord-actions/message@v2
+ with:
+ webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
+ message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 647fbabff..e36f5b3ab 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -109,9 +109,9 @@ jobs:
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
- # - name: Notify Discord
- # if: failure() && github.ref == 'refs/heads/main'
- # uses: discord-actions/message@v2
- # with:
- # webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
- # message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
+ - name: Notify Discord
+ if: failure() && github.ref == 'refs/heads/main'
+ uses: discord-actions/message@v2
+ with:
+ webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
+ message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
From 79711678fac74f61aae17b25ce51b5f6c409bb31 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 6 Jan 2026 20:58:00 +0100
Subject: [PATCH 103/353] workaround: increase some CI timeouts
---
integrations/upgrade/index.test.ts | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/integrations/upgrade/index.test.ts b/integrations/upgrade/index.test.ts
index 029ed77a8..46b657694 100644
--- a/integrations/upgrade/index.test.ts
+++ b/integrations/upgrade/index.test.ts
@@ -175,7 +175,7 @@ test(
`upgrades a v3 project with prefixes to v4`,
{
// Somehow this test takes *way* longer than the rest (but not always?)
- timeout: 120_000,
+ timeout: 180_000,
fs: {
'package.json': json`
{
@@ -603,6 +603,7 @@ test(
test(
'migrates a simple postcss setup',
{
+ timeout: 120_000,
fs: {
'package.json': json`
{
@@ -774,6 +775,7 @@ test(
test(
'migrates a postcss setup using package.json config',
{
+ timeout: 120_000,
fs: {
'package.json': json`
{
@@ -847,6 +849,7 @@ test(
test(
'migrates a postcss setup using a json based config file',
{
+ timeout: 120_000,
fs: {
'package.json': json`
{
From bccf4bbfbd2c4203e5673a6196f01c73e20dca98 Mon Sep 17 00:00:00 2001
From: Tim Neutkens
Date: Thu, 29 Jan 2026 15:16:31 +0100
Subject: [PATCH 104/353] Add @tailwindcss/webpack loader for Tailwind CSS v4
(#19610)
## Summary
This PR adds a new `@tailwindcss/webpack` package that provides a
dedicated webpack loader for Tailwind CSS v4. This loader works with
both standard webpack and Turbopack's webpack loader compatibility
layer.
### Why a dedicated loader?
The current webpack integration uses `postcss-loader` +
`@tailwindcss/postcss`. While this works, a dedicated loader:
- **Eliminates PostCSS as a middleman** - works directly with CSS
strings (no AST conversions)
- **Simpler and more efficient** - follows the same pattern as
`@tailwindcss/vite`
- **Better for Turbopack** - gives direct control over dependency
reporting via webpack's loader API
### How it works
The loader mirrors the Vite plugin's approach:
1. Uses `compile()` from `@tailwindcss/node` to parse CSS and resolve
`@apply` directives
2. Uses `Scanner` from `@tailwindcss/oxide` to scan content files for
utility candidates
3. Reports dependencies via `this.addDependency()` and
`this.addContextDependency()`
4. Optionally optimizes output with Lightning CSS
### Usage
```javascript
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /.css$/i,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'@tailwindcss/webpack', // No PostCSS needed!
],
},
],
},
}
```
### Options
- `base` - The base directory to scan for class candidates (defaults to
`process.cwd()`)
- `optimize` - Whether to optimize/minify the output CSS (defaults to
`true` in production)
### Files added
- `packages/@tailwindcss-webpack/` - New package
- `src/index.ts` - Main loader implementation
- `src/index.cts` - CommonJS entry point for webpack compatibility
- `package.json`, `tsconfig.json`, `tsup.config.ts`, `README.md`
- `integrations/webpack/loader.test.ts` - Integration tests
- `integrations/utils.ts` - Added webpack override for transitive
dependencies
### Test plan
- [x] Build test - verifies basic compilation
- [x] Watch test - verifies HMR when adding new Tailwind classes
- [x] `@apply` test - verifies `@apply` directives work correctly
- [x] Optimization test - verifies minification works
---------
Co-authored-by: Robin Malfait
---
CHANGELOG.md | 1 +
integrations/utils.ts | 1 +
integrations/webpack/loader.test.ts | 420 +++++++++++++++++
packages/@tailwindcss-postcss/README.md | 12 +-
packages/@tailwindcss-webpack/README.md | 64 +++
packages/@tailwindcss-webpack/package.json | 46 ++
packages/@tailwindcss-webpack/src/index.cts | 5 +
packages/@tailwindcss-webpack/src/index.ts | 282 ++++++++++++
packages/@tailwindcss-webpack/tsconfig.json | 3 +
packages/@tailwindcss-webpack/tsup.config.ts | 19 +
pnpm-lock.yaml | 447 ++++++++++++++++++-
pnpm-workspace.yaml | 1 +
12 files changed, 1286 insertions(+), 15 deletions(-)
create mode 100644 integrations/webpack/loader.test.ts
create mode 100644 packages/@tailwindcss-webpack/README.md
create mode 100644 packages/@tailwindcss-webpack/package.json
create mode 100644 packages/@tailwindcss-webpack/src/index.cts
create mode 100644 packages/@tailwindcss-webpack/src/index.ts
create mode 100644 packages/@tailwindcss-webpack/tsconfig.json
create mode 100644 packages/@tailwindcss-webpack/tsup.config.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b66ebaea0..9d6710ddc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
+- Add `@tailwindcss/webpack` loader for Tailwind CSS v4 ([#19610](https://github.com/tailwindlabs/tailwindcss/pull/19610))
## [4.1.18] - 2025-12-11
diff --git a/integrations/utils.ts b/integrations/utils.ts
index a2fc0d58a..c5d3306c4 100644
--- a/integrations/utils.ts
+++ b/integrations/utils.ts
@@ -498,6 +498,7 @@ async function overwriteVersionsInPackageJson(content: string): Promise
json.pnpm.overrides['@tailwindcss/cli>tailwindcss'] = resolveVersion(pkg)
json.pnpm.overrides['@tailwindcss/postcss>tailwindcss'] = resolveVersion(pkg)
json.pnpm.overrides['@tailwindcss/vite>tailwindcss'] = resolveVersion(pkg)
+ json.pnpm.overrides['@tailwindcss/webpack>tailwindcss'] = resolveVersion(pkg)
} else {
json.pnpm.overrides[pkg] = resolveVersion(pkg)
}
diff --git a/integrations/webpack/loader.test.ts b/integrations/webpack/loader.test.ts
new file mode 100644
index 000000000..3a3782c0d
--- /dev/null
+++ b/integrations/webpack/loader.test.ts
@@ -0,0 +1,420 @@
+import { css, html, js, json, test } from '../utils'
+
+test(
+ '@tailwindcss/webpack loader (build)',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "main": "./src/index.js",
+ "browser": "./src/index.js",
+ "dependencies": {
+ "css-loader": "^6",
+ "webpack": "^5",
+ "webpack-cli": "^5",
+ "mini-css-extract-plugin": "^2",
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/webpack": "workspace:^"
+ }
+ }
+ `,
+ 'webpack.config.js': js`
+ let MiniCssExtractPlugin = require('mini-css-extract-plugin')
+
+ module.exports = {
+ output: {
+ clean: true,
+ },
+ plugins: [new MiniCssExtractPlugin()],
+ module: {
+ rules: [
+ {
+ test: /.css$/i,
+ use: [MiniCssExtractPlugin.loader, 'css-loader', '@tailwindcss/webpack'],
+ },
+ ],
+ },
+ }
+ `,
+ 'src/index.js': js`import './index.css'`,
+ 'src/index.html': html`
+
+ `,
+ 'src/index.css': css`
+ @import 'tailwindcss/theme';
+ @import 'tailwindcss/utilities';
+ `,
+ },
+ },
+ async ({ fs, exec, expect }) => {
+ await exec('pnpm webpack --mode=development')
+
+ expect(await fs.dumpFiles('./dist/*.css')).toMatchInlineSnapshot(`
+ "
+ --- ./dist/main.css ---
+ .flex {
+ display: flex;
+ }
+ "
+ `)
+ },
+)
+
+test(
+ '@tailwindcss/webpack loader (watch)',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "main": "./src/index.js",
+ "browser": "./src/index.js",
+ "dependencies": {
+ "css-loader": "^6",
+ "webpack": "^5",
+ "webpack-cli": "^5",
+ "mini-css-extract-plugin": "^2",
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/webpack": "workspace:^"
+ }
+ }
+ `,
+ 'webpack.config.js': js`
+ let MiniCssExtractPlugin = require('mini-css-extract-plugin')
+
+ module.exports = {
+ output: {
+ clean: true,
+ },
+ plugins: [new MiniCssExtractPlugin()],
+ module: {
+ rules: [
+ {
+ test: /.css$/i,
+ use: [MiniCssExtractPlugin.loader, 'css-loader', '@tailwindcss/webpack'],
+ },
+ ],
+ },
+ }
+ `,
+ 'src/index.js': js`import './index.css'`,
+ 'src/index.html': html`
+
+ `,
+ 'src/index.css': css`
+ @import 'tailwindcss/theme';
+ @import 'tailwindcss/utilities';
+ `,
+ },
+ },
+ async ({ fs, spawn, exec, expect }) => {
+ // Generate the initial build so output CSS files exist on disk
+ await exec('pnpm webpack --mode=development')
+
+ let process = await spawn('pnpm webpack --mode=development --watch')
+ await process.onStdout((m) => m.includes('compiled successfully in'))
+
+ expect(await fs.dumpFiles('./dist/*.css')).toMatchInlineSnapshot(`
+ "
+ --- ./dist/main.css ---
+ .flex {
+ display: flex;
+ }
+ "
+ `)
+
+ // Add a new Tailwind class to the HTML file
+ await fs.write('src/index.html', html`
+
+ `)
+ await process.onStdout((m) => m.includes('compiled successfully in'))
+
+ expect(await fs.dumpFiles('./dist/*.css')).toMatchInlineSnapshot(`
+ "
+ --- ./dist/main.css ---
+ .flex {
+ display: flex;
+ }
+ .underline {
+ text-decoration-line: underline;
+ }
+ "
+ `)
+ },
+)
+
+test(
+ '@tailwindcss/webpack loader with @apply',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "main": "./src/index.js",
+ "browser": "./src/index.js",
+ "dependencies": {
+ "css-loader": "^6",
+ "webpack": "^5",
+ "webpack-cli": "^5",
+ "mini-css-extract-plugin": "^2",
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/webpack": "workspace:^"
+ }
+ }
+ `,
+ 'webpack.config.js': js`
+ let MiniCssExtractPlugin = require('mini-css-extract-plugin')
+
+ module.exports = {
+ output: {
+ clean: true,
+ },
+ plugins: [new MiniCssExtractPlugin()],
+ module: {
+ rules: [
+ {
+ test: /.css$/i,
+ use: [MiniCssExtractPlugin.loader, 'css-loader', '@tailwindcss/webpack'],
+ },
+ ],
+ },
+ }
+ `,
+ 'src/index.js': js`import './index.css'`,
+ 'src/index.css': css`
+ @import 'tailwindcss/theme';
+
+ .btn {
+ @apply flex items-center px-4 py-2 rounded-md;
+ }
+ `,
+ },
+ },
+ async ({ fs, exec, expect }) => {
+ await exec('pnpm webpack --mode=development')
+
+ expect(await fs.dumpFiles('./dist/*.css')).toMatchInlineSnapshot(`
+ "
+ --- ./dist/main.css ---
+ :root, :host {
+ --spacing: 0.25rem;
+ --radius-md: 0.375rem;
+ }
+ .btn {
+ display: flex;
+ align-items: center;
+ border-radius: var(--radius-md);
+ padding-inline: calc(var(--spacing) * 4);
+ padding-block: calc(var(--spacing) * 2);
+ }
+ "
+ `)
+ },
+)
+
+test(
+ '@tailwindcss/webpack loader with optimization',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "main": "./src/index.js",
+ "browser": "./src/index.js",
+ "dependencies": {
+ "css-loader": "^6",
+ "webpack": "^5",
+ "webpack-cli": "^5",
+ "mini-css-extract-plugin": "^2",
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/webpack": "workspace:^"
+ }
+ }
+ `,
+ 'webpack.config.js': js`
+ let MiniCssExtractPlugin = require('mini-css-extract-plugin')
+
+ module.exports = {
+ output: {
+ clean: true,
+ },
+ plugins: [new MiniCssExtractPlugin()],
+ module: {
+ rules: [
+ {
+ test: /.css$/i,
+ use: [
+ MiniCssExtractPlugin.loader,
+ 'css-loader',
+ {
+ loader: '@tailwindcss/webpack',
+ options: {
+ optimize: true,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ }
+ `,
+ 'src/index.js': js`import './index.css'`,
+ 'src/index.html': html`
+
+ `,
+ 'src/index.css': css`
+ @import 'tailwindcss/theme';
+ @import 'tailwindcss/utilities';
+ `,
+ },
+ },
+ async ({ fs, exec, expect }) => {
+ await exec('pnpm webpack --mode=development')
+
+ expect(await fs.dumpFiles('./dist/*.css')).toMatchInlineSnapshot(`
+ "
+ --- ./dist/main.css ---
+ .flex{display:flex}
+ "
+ `)
+ },
+)
+
+test(
+ '@tailwindcss/webpack loader with CSS @import',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "main": "./src/index.js",
+ "browser": "./src/index.js",
+ "dependencies": {
+ "css-loader": "^6",
+ "webpack": "^5",
+ "webpack-cli": "^5",
+ "mini-css-extract-plugin": "^2",
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/webpack": "workspace:^"
+ }
+ }
+ `,
+ 'webpack.config.js': js`
+ let MiniCssExtractPlugin = require('mini-css-extract-plugin')
+
+ module.exports = {
+ output: {
+ clean: true,
+ },
+ plugins: [new MiniCssExtractPlugin()],
+ module: {
+ rules: [
+ {
+ test: /.css$/i,
+ use: [MiniCssExtractPlugin.loader, 'css-loader', '@tailwindcss/webpack'],
+ },
+ ],
+ },
+ }
+ `,
+ 'src/index.js': js`import './index.css'`,
+ 'src/index.html': html`
+
+ `,
+ 'src/index.css': css`
+ @import './custom.css';
+ @import 'tailwindcss/theme';
+ @import 'tailwindcss/utilities';
+ `,
+ 'src/custom.css': css`
+ /**/
+ @utility custom-util {
+ color: var(--color-red-500);
+ }
+ `,
+ },
+ },
+ async ({ fs, exec, expect }) => {
+ await exec('pnpm webpack --mode=development')
+
+ expect(await fs.dumpFiles('./dist/*.css')).toMatchInlineSnapshot(`
+ "
+ --- ./dist/main.css ---
+ :root, :host {
+ --color-red-500: oklch(63.7% 0.237 25.331);
+ }
+ .flex {
+ display: flex;
+ }
+ .custom-util {
+ color: var(--color-red-500);
+ }
+ "
+ `)
+ },
+)
+
+test(
+ '@tailwindcss/webpack loader with @plugin',
+ {
+ fs: {
+ 'package.json': json`
+ {
+ "main": "./src/index.js",
+ "browser": "./src/index.js",
+ "dependencies": {
+ "css-loader": "^6",
+ "webpack": "^5",
+ "webpack-cli": "^5",
+ "mini-css-extract-plugin": "^2",
+ "tailwindcss": "workspace:^",
+ "@tailwindcss/webpack": "workspace:^"
+ }
+ }
+ `,
+ 'webpack.config.js': js`
+ let MiniCssExtractPlugin = require('mini-css-extract-plugin')
+
+ module.exports = {
+ output: {
+ clean: true,
+ },
+ plugins: [new MiniCssExtractPlugin()],
+ module: {
+ rules: [
+ {
+ test: /.css$/i,
+ use: [MiniCssExtractPlugin.loader, 'css-loader', '@tailwindcss/webpack'],
+ },
+ ],
+ },
+ }
+ `,
+ 'src/index.js': js`import './index.css'`,
+ 'src/index.html': html`
+
+ `,
+ 'src/index.css': css`
+ @import 'tailwindcss/utilities';
+ @plugin './plugin.js';
+ `,
+ 'src/plugin.js': js`
+ export default function ({ addUtilities }) {
+ addUtilities({
+ '.custom-underline': {
+ 'border-bottom': '1px solid green',
+ },
+ })
+ }
+ `,
+ },
+ },
+ async ({ fs, exec, expect }) => {
+ await exec('pnpm webpack --mode=development')
+
+ expect(await fs.dumpFiles('./dist/*.css')).toMatchInlineSnapshot(`
+ "
+ --- ./dist/main.css ---
+ .custom-underline {
+ border-bottom: 1px solid green;
+ }
+ "
+ `)
+ },
+)
diff --git a/packages/@tailwindcss-postcss/README.md b/packages/@tailwindcss-postcss/README.md
index db2a6b9a0..867389f0e 100644
--- a/packages/@tailwindcss-postcss/README.md
+++ b/packages/@tailwindcss-postcss/README.md
@@ -44,14 +44,14 @@ If you're interested in contributing to Tailwind CSS, please read our [contribut
You can use the `base` option (defaults to the current working directory) to change the directory in which the plugin searches for source files:
```js
-import tailwindcss from "@tailwindcss/postcss"
+import tailwindcss from '@tailwindcss/postcss'
export default {
- plugins: [
- tailwindcss({
- base: path.resolve(__dirname, "./path")
- })
- ]
+ plugins: [
+ tailwindcss({
+ base: path.resolve(__dirname, './path'),
+ }),
+ ],
}
```
diff --git a/packages/@tailwindcss-webpack/README.md b/packages/@tailwindcss-webpack/README.md
new file mode 100644
index 000000000..55e605622
--- /dev/null
+++ b/packages/@tailwindcss-webpack/README.md
@@ -0,0 +1,64 @@
+# @tailwindcss/webpack
+
+A webpack loader for Tailwind CSS v4.
+
+## Installation
+
+```sh
+npm install @tailwindcss/webpack
+```
+
+## Usage
+
+```javascript
+// webpack.config.js
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
+
+module.exports = {
+ plugins: [new MiniCssExtractPlugin()],
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [MiniCssExtractPlugin.loader, 'css-loader', '@tailwindcss/webpack'],
+ },
+ ],
+ },
+}
+```
+
+Then create a CSS file that imports Tailwind:
+
+```css
+/* src/index.css */
+@import 'tailwindcss/theme';
+@import 'tailwindcss/utilities';
+```
+
+## Options
+
+### `base`
+
+The base directory to scan for class candidates. Defaults to the current working directory.
+
+```javascript
+{
+ loader: '@tailwindcss/webpack',
+ options: {
+ base: process.cwd(),
+ },
+}
+```
+
+### `optimize`
+
+Whether to optimize and minify the output CSS. Defaults to `true` in production mode.
+
+```javascript
+{
+ loader: '@tailwindcss/webpack',
+ options: {
+ optimize: true, // or { minify: true }
+ },
+}
+```
diff --git a/packages/@tailwindcss-webpack/package.json b/packages/@tailwindcss-webpack/package.json
new file mode 100644
index 000000000..e22cb7935
--- /dev/null
+++ b/packages/@tailwindcss-webpack/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "@tailwindcss/webpack",
+ "version": "4.1.18",
+ "description": "A webpack loader for Tailwind CSS v4.",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/tailwindlabs/tailwindcss.git",
+ "directory": "packages/@tailwindcss-webpack"
+ },
+ "bugs": "https://github.com/tailwindlabs/tailwindcss/issues",
+ "homepage": "https://tailwindcss.com",
+ "scripts": {
+ "build": "tsup-node",
+ "dev": "pnpm run build -- --watch"
+ },
+ "files": [
+ "dist/"
+ ],
+ "publishConfig": {
+ "provenance": true,
+ "access": "public"
+ },
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.mjs",
+ "require": "./dist/index.js"
+ }
+ },
+ "main": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "@tailwindcss/node": "workspace:*",
+ "@tailwindcss/oxide": "workspace:*",
+ "tailwindcss": "workspace:*"
+ },
+ "devDependencies": {
+ "@types/node": "catalog:",
+ "webpack": "catalog:"
+ },
+ "peerDependencies": {
+ "webpack": "^5"
+ }
+}
diff --git a/packages/@tailwindcss-webpack/src/index.cts b/packages/@tailwindcss-webpack/src/index.cts
new file mode 100644
index 000000000..dbdded748
--- /dev/null
+++ b/packages/@tailwindcss-webpack/src/index.cts
@@ -0,0 +1,5 @@
+import tailwindLoader from './index.ts'
+
+// CommonJS export for webpack loaders - must be the function directly
+// @ts-ignore
+export = tailwindLoader
diff --git a/packages/@tailwindcss-webpack/src/index.ts b/packages/@tailwindcss-webpack/src/index.ts
new file mode 100644
index 000000000..2c78a552b
--- /dev/null
+++ b/packages/@tailwindcss-webpack/src/index.ts
@@ -0,0 +1,282 @@
+import QuickLRU from '@alloc/quick-lru'
+import {
+ compile,
+ env,
+ Features,
+ Instrumentation,
+ normalizePath,
+ optimize,
+ Polyfills,
+} from '@tailwindcss/node'
+import { clearRequireCache } from '@tailwindcss/node/require-cache'
+import { Scanner } from '@tailwindcss/oxide'
+import fs from 'node:fs'
+import path from 'node:path'
+import type { LoaderContext } from 'webpack'
+
+const DEBUG = env.DEBUG
+
+export interface LoaderOptions {
+ /**
+ * The base directory to scan for class candidates.
+ *
+ * Defaults to the current working directory.
+ */
+ base?: string
+
+ /**
+ * Optimize and minify the output CSS.
+ */
+ optimize?: boolean | { minify?: boolean }
+}
+
+interface CacheEntry {
+ mtimes: Map
+ compiler: null | Awaited>
+ scanner: null | Scanner
+ candidates: Set
+ fullRebuildPaths: string[]
+}
+
+const cache = new QuickLRU({ maxSize: 50 })
+
+function getContextFromCache(inputFile: string, opts: LoaderOptions): CacheEntry {
+ let key = `${inputFile}:${opts.base ?? ''}:${JSON.stringify(opts.optimize)}`
+ if (cache.has(key)) return cache.get(key)!
+ let entry: CacheEntry = {
+ mtimes: new Map(),
+ compiler: null,
+ scanner: null,
+ candidates: new Set(),
+ fullRebuildPaths: [],
+ }
+ cache.set(key, entry)
+ return entry
+}
+
+export default async function tailwindLoader(
+ this: LoaderContext,
+ source: string,
+): Promise {
+ let callback = this.async()
+ let options = this.getOptions() ?? {}
+ let inputFile = this.resourcePath
+ let base = options.base ?? process.cwd()
+ let shouldOptimize = options.optimize ?? process.env.NODE_ENV === 'production'
+ let isCSSModuleFile = inputFile.endsWith('.module.css')
+
+ using I = new Instrumentation()
+
+ DEBUG && I.start(`[@tailwindcss/webpack] ${path.relative(base, inputFile)}`)
+
+ // Bail out early if this is guaranteed to be a non-Tailwind CSS file.
+ {
+ DEBUG && I.start('Quick bail check')
+ let canBail = !/@(import|reference|theme|variant|config|plugin|apply|tailwind)\b/.test(source)
+ if (canBail) {
+ DEBUG && I.end('Quick bail check')
+ DEBUG && I.end(`[@tailwindcss/webpack] ${path.relative(base, inputFile)}`)
+ callback(null, source)
+ return
+ }
+ DEBUG && I.end('Quick bail check')
+ }
+
+ try {
+ let context = getContextFromCache(inputFile, options)
+ let inputBasePath = path.dirname(path.resolve(inputFile))
+
+ // Whether this is the first build or not
+ let isInitialBuild = context.compiler === null
+
+ async function createCompiler() {
+ DEBUG && I.start('Setup compiler')
+ if (context.fullRebuildPaths.length > 0 && !isInitialBuild) {
+ clearRequireCache(context.fullRebuildPaths)
+ }
+
+ context.fullRebuildPaths = []
+
+ DEBUG && I.start('Create compiler')
+ let compiler = await compile(source, {
+ from: inputFile,
+ base: inputBasePath,
+ shouldRewriteUrls: true,
+ onDependency: (depPath) => context.fullRebuildPaths.push(depPath),
+ // In CSS Module files, we have to disable the `@property` polyfill since these will
+ // emit global `*` rules which are considered to be non-pure and will cause builds
+ // to fail.
+ polyfills: isCSSModuleFile ? Polyfills.All ^ Polyfills.AtProperty : Polyfills.All,
+ })
+ DEBUG && I.end('Create compiler')
+
+ DEBUG && I.end('Setup compiler')
+ return compiler
+ }
+
+ // Setup the compiler if it doesn't exist yet
+ context.compiler ??= await createCompiler()
+
+ // Early exit if no Tailwind features are used
+ if (context.compiler.features === Features.None) {
+ DEBUG && I.end(`[@tailwindcss/webpack] ${path.relative(base, inputFile)}`)
+ callback(null, source)
+ return
+ }
+
+ let rebuildStrategy: 'full' | 'incremental' = 'incremental'
+
+ // Track file modification times to CSS files
+ DEBUG && I.start('Register full rebuild paths')
+ {
+ // Report dependencies for config files, plugins, etc.
+ for (let file of context.fullRebuildPaths) {
+ this.addDependency(path.resolve(file))
+ }
+
+ let files = [...context.fullRebuildPaths, inputFile]
+
+ for (let file of files) {
+ let changedTime: number | null = null
+ try {
+ changedTime = fs.statSync(file)?.mtimeMs ?? null
+ } catch {
+ // File might not exist
+ }
+
+ if (changedTime === null) {
+ if (file === inputFile) {
+ rebuildStrategy = 'full'
+ }
+ continue
+ }
+
+ let prevTime = context.mtimes.get(file)
+ if (prevTime === changedTime) continue
+
+ rebuildStrategy = 'full'
+ context.mtimes.set(file, changedTime)
+ }
+ }
+ DEBUG && I.end('Register full rebuild paths')
+
+ if (rebuildStrategy === 'full' && !isInitialBuild) {
+ context.compiler = await createCompiler()
+ }
+
+ let compiler = context.compiler
+
+ // Check if we need to process this file at all
+ if (
+ !(
+ compiler.features &
+ (Features.AtApply | Features.JsPluginCompat | Features.ThemeFunction | Features.Utilities)
+ )
+ ) {
+ DEBUG && I.end(`[@tailwindcss/webpack] ${path.relative(base, inputFile)}`)
+ callback(null, source)
+ return
+ }
+
+ // Setup or update scanner if needed
+ if (context.scanner === null || rebuildStrategy === 'full') {
+ DEBUG && I.start('Setup scanner')
+ let sources = (() => {
+ // Disable auto source detection
+ if (compiler.root === 'none') {
+ return []
+ }
+
+ // No root specified, use the base directory
+ if (compiler.root === null) {
+ return [{ base, pattern: '**/*', negated: false }]
+ }
+
+ // Use the specified root
+ return [{ ...compiler.root, negated: false }]
+ })().concat(compiler.sources)
+
+ context.scanner = new Scanner({ sources })
+ DEBUG && I.end('Setup scanner')
+ }
+
+ // Scan for candidates if utilities are used
+ if (compiler.features & Features.Utilities) {
+ DEBUG && I.start('Scan for candidates')
+ for (let candidate of context.scanner.scan()) {
+ context.candidates.add(candidate)
+ }
+ DEBUG && I.end('Scan for candidates')
+
+ DEBUG && I.start('Register dependency messages')
+ // Add all found files as direct dependencies
+ let resolvedInputFile = path.resolve(base, inputFile)
+ for (let file of context.scanner.files) {
+ let absolutePath = path.resolve(file)
+ // The CSS file cannot be a dependency of itself
+ if (absolutePath === resolvedInputFile) {
+ continue
+ }
+ this.addDependency(absolutePath)
+ }
+
+ // Register context dependencies for glob patterns
+ for (let glob of context.scanner.globs) {
+ // Skip negated patterns
+ if (glob.pattern[0] === '!') continue
+
+ // Avoid adding a dependency on the base directory itself
+ if (glob.pattern === '*' && base === glob.base) {
+ continue
+ }
+
+ this.addContextDependency(path.resolve(glob.base))
+ }
+
+ // Validate that source(...) paths are directories
+ let root = compiler.root
+ if (root !== 'none' && root !== null) {
+ let basePath = normalizePath(path.resolve(root.base, root.pattern))
+ try {
+ let stats = fs.statSync(basePath)
+ if (!stats.isDirectory()) {
+ throw new Error(
+ `The path given to \`source(…)\` must be a directory but got \`source(${basePath})\` instead.`,
+ )
+ }
+ } catch (err) {
+ if ((err as NodeJS.ErrnoException).code !== 'ENOENT') {
+ throw err
+ }
+ // Directory doesn't exist yet, which is fine
+ }
+ }
+ DEBUG && I.end('Register dependency messages')
+ }
+
+ DEBUG && I.start('Build utilities')
+ let css = compiler.build([...context.candidates])
+ DEBUG && I.end('Build utilities')
+
+ // Optionally optimize the output
+ let result = css
+ if (shouldOptimize) {
+ DEBUG && I.start('Optimization')
+ let optimized = optimize(css, {
+ minify: typeof shouldOptimize === 'object' ? shouldOptimize.minify : true,
+ })
+ result = optimized.code
+ DEBUG && I.end('Optimization')
+ }
+
+ DEBUG && I.end(`[@tailwindcss/webpack] ${path.relative(base, inputFile)}`)
+ callback(null, result)
+ } catch (error) {
+ // Clear the cache entry on error to force a full rebuild next time
+ let key = `${inputFile}:${options.base ?? ''}:${JSON.stringify(options.optimize)}`
+ cache.delete(key)
+
+ DEBUG && I.end(`[@tailwindcss/webpack] ${path.relative(base, inputFile)}`)
+ callback(error as Error)
+ }
+}
diff --git a/packages/@tailwindcss-webpack/tsconfig.json b/packages/@tailwindcss-webpack/tsconfig.json
new file mode 100644
index 000000000..6ae022f65
--- /dev/null
+++ b/packages/@tailwindcss-webpack/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../tsconfig.base.json",
+}
diff --git a/packages/@tailwindcss-webpack/tsup.config.ts b/packages/@tailwindcss-webpack/tsup.config.ts
new file mode 100644
index 000000000..998eebe4f
--- /dev/null
+++ b/packages/@tailwindcss-webpack/tsup.config.ts
@@ -0,0 +1,19 @@
+import { defineConfig } from 'tsup'
+
+export default defineConfig([
+ {
+ format: ['esm'],
+ clean: true,
+ minify: true,
+ cjsInterop: true,
+ dts: true,
+ entry: ['src/index.ts'],
+ },
+ {
+ format: ['cjs'],
+ minify: true,
+ cjsInterop: true,
+ dts: true,
+ entry: ['src/index.cts'],
+ },
+])
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d32bc3c64..a7d9cf6f1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -39,6 +39,9 @@ catalogs:
vite:
specifier: ^7.0.0
version: 7.0.0
+ webpack:
+ specifier: ^5
+ version: 5.104.1
patchedDependencies:
'@parcel/watcher@2.5.1':
@@ -445,6 +448,28 @@ importers:
specifier: 'catalog:'
version: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
+ packages/@tailwindcss-webpack:
+ dependencies:
+ '@alloc/quick-lru':
+ specifier: ^5.2.0
+ version: 5.2.0
+ '@tailwindcss/node':
+ specifier: workspace:*
+ version: link:../@tailwindcss-node
+ '@tailwindcss/oxide':
+ specifier: workspace:*
+ version: link:../../crates/node
+ tailwindcss:
+ specifier: workspace:*
+ version: link:../tailwindcss
+ devDependencies:
+ '@types/node':
+ specifier: 'catalog:'
+ version: 20.19.1
+ webpack:
+ specifier: 'catalog:'
+ version: 5.104.1(esbuild@0.27.0)
+
packages/internal-example-plugin: {}
packages/tailwindcss:
@@ -2333,6 +2358,12 @@ packages:
'@types/deep-eql@4.0.2':
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+ '@types/eslint-scope@3.7.7':
+ resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
+
+ '@types/eslint@9.6.1':
+ resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
+
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
@@ -2456,6 +2487,63 @@ packages:
'@vitest/utils@4.0.12':
resolution: {integrity: sha512-DVS/TLkLdvGvj1avRy0LSmKfrcI9MNFvNGN6ECjTUHWJdlcgPDOXhjMis5Dh7rBH62nAmSXnkPbE+DZ5YD75Rw==}
+ '@webassemblyjs/ast@1.14.1':
+ resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
+
+ '@webassemblyjs/floating-point-hex-parser@1.13.2':
+ resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==}
+
+ '@webassemblyjs/helper-api-error@1.13.2':
+ resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==}
+
+ '@webassemblyjs/helper-buffer@1.14.1':
+ resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==}
+
+ '@webassemblyjs/helper-numbers@1.13.2':
+ resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==}
+
+ '@webassemblyjs/helper-wasm-bytecode@1.13.2':
+ resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==}
+
+ '@webassemblyjs/helper-wasm-section@1.14.1':
+ resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==}
+
+ '@webassemblyjs/ieee754@1.13.2':
+ resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==}
+
+ '@webassemblyjs/leb128@1.13.2':
+ resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==}
+
+ '@webassemblyjs/utf8@1.13.2':
+ resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==}
+
+ '@webassemblyjs/wasm-edit@1.14.1':
+ resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==}
+
+ '@webassemblyjs/wasm-gen@1.14.1':
+ resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==}
+
+ '@webassemblyjs/wasm-opt@1.14.1':
+ resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==}
+
+ '@webassemblyjs/wasm-parser@1.14.1':
+ resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==}
+
+ '@webassemblyjs/wast-printer@1.14.1':
+ resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
+
+ '@xtuc/ieee754@1.2.0':
+ resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
+
+ '@xtuc/long@4.2.2':
+ resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
+
+ acorn-import-phases@1.0.4:
+ resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==}
+ engines: {node: '>=10.13.0'}
+ peerDependencies:
+ acorn: ^8.14.0
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -2471,9 +2559,25 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ ajv-formats@2.1.1:
+ resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv-keywords@5.1.0:
+ resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
+ peerDependencies:
+ ajv: ^8.8.2
+
ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@@ -2669,6 +2773,10 @@ packages:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
+ chrome-trace-event@1.0.4:
+ resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
+ engines: {node: '>=6.0'}
+
citty@0.1.6:
resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
@@ -2873,6 +2981,9 @@ packages:
es-module-lexer@1.7.0:
resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
+ es-module-lexer@2.0.0:
+ resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==}
+
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
@@ -2989,6 +3100,10 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+ eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+
eslint-scope@8.4.0:
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3023,6 +3138,10 @@ packages:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
+ estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
estraverse@5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
@@ -3034,6 +3153,10 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
execa@8.0.1:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
@@ -3069,6 +3192,9 @@ packages:
fast-stringify@4.0.0:
resolution: {integrity: sha512-lE2DIivBaLysf6hK5WH/VfMgqRbvBVHcpGVVTmA5Zi8oWIjq9YxIt6lYGdUgP1HNSXxTIat7HEIDnrSvXSeKQw==}
+ fast-uri@3.1.0:
+ resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
+
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
@@ -3180,6 +3306,9 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
+ glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
@@ -3430,6 +3559,10 @@ packages:
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+ jest-worker@27.5.1:
+ resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
+ engines: {node: '>= 10.13.0'}
+
jiti@1.21.6:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
@@ -3461,9 +3594,15 @@ packages:
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
@@ -3576,6 +3715,10 @@ packages:
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ loader-runner@4.3.1:
+ resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==}
+ engines: {node: '>=6.11.5'}
+
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -3618,6 +3761,14 @@ packages:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
mimic-fn@4.0.0:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
@@ -3673,6 +3824,9 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+
next@16.1.0:
resolution: {integrity: sha512-Y+KbmDbefYtHDDQKLNrmzE/YYzG2msqo2VXhzh5yrJ54tx/6TmGdkR5+kP9ma7i7LwZpZMfoY3m/AoPPPKxtVw==}
engines: {node: '>=20.9.0'}
@@ -3987,6 +4141,9 @@ packages:
radix3@1.1.2:
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
+ randombytes@2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+
react-dom@19.2.3:
resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
peerDependencies:
@@ -4022,6 +4179,10 @@ packages:
resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
engines: {node: '>= 0.4'}
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -4057,6 +4218,9 @@ packages:
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
safe-push-apply@1.0.0:
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
engines: {node: '>= 0.4'}
@@ -4071,6 +4235,10 @@ packages:
scheduler@0.27.0:
resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+ schema-utils@4.3.3:
+ resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==}
+ engines: {node: '>= 10.13.0'}
+
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -4080,6 +4248,9 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ serialize-javascript@6.0.2:
+ resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
+
set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -4232,6 +4403,10 @@ packages:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
@@ -4253,6 +4428,26 @@ packages:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
+ tapable@2.3.0:
+ resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
+ engines: {node: '>=6'}
+
+ terser-webpack-plugin@5.3.16:
+ resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ '@swc/core': '*'
+ esbuild: '*'
+ uglify-js: '*'
+ webpack: ^5.1.0
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ esbuild:
+ optional: true
+ uglify-js:
+ optional: true
+
terser@5.31.6:
resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==}
engines: {node: '>=10'}
@@ -4558,6 +4753,24 @@ packages:
jsdom:
optional: true
+ watchpack@2.5.1:
+ resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==}
+ engines: {node: '>=10.13.0'}
+
+ webpack-sources@3.3.3:
+ resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==}
+ engines: {node: '>=10.13.0'}
+
+ webpack@5.104.1:
+ resolution: {integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ peerDependencies:
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+
which-boxed-primitive@1.1.1:
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
engines: {node: '>= 0.4'}
@@ -5293,7 +5506,6 @@ snapshots:
dependencies:
'@jridgewell/gen-mapping': 0.3.12
'@jridgewell/trace-mapping': 0.3.29
- optional: true
'@jridgewell/sourcemap-codec@1.5.0': {}
@@ -5941,6 +6153,16 @@ snapshots:
'@types/deep-eql@4.0.2': {}
+ '@types/eslint-scope@3.7.7':
+ dependencies:
+ '@types/eslint': 9.6.1
+ '@types/estree': 1.0.8
+
+ '@types/eslint@9.6.1':
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/json-schema': 7.0.15
+
'@types/estree@1.0.8': {}
'@types/json-schema@7.0.15': {}
@@ -6194,6 +6416,90 @@ snapshots:
'@vitest/pretty-format': 4.0.12
tinyrainbow: 3.0.3
+ '@webassemblyjs/ast@1.14.1':
+ dependencies:
+ '@webassemblyjs/helper-numbers': 1.13.2
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+
+ '@webassemblyjs/floating-point-hex-parser@1.13.2': {}
+
+ '@webassemblyjs/helper-api-error@1.13.2': {}
+
+ '@webassemblyjs/helper-buffer@1.14.1': {}
+
+ '@webassemblyjs/helper-numbers@1.13.2':
+ dependencies:
+ '@webassemblyjs/floating-point-hex-parser': 1.13.2
+ '@webassemblyjs/helper-api-error': 1.13.2
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/helper-wasm-bytecode@1.13.2': {}
+
+ '@webassemblyjs/helper-wasm-section@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/wasm-gen': 1.14.1
+
+ '@webassemblyjs/ieee754@1.13.2':
+ dependencies:
+ '@xtuc/ieee754': 1.2.0
+
+ '@webassemblyjs/leb128@1.13.2':
+ dependencies:
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/utf8@1.13.2': {}
+
+ '@webassemblyjs/wasm-edit@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/helper-wasm-section': 1.14.1
+ '@webassemblyjs/wasm-gen': 1.14.1
+ '@webassemblyjs/wasm-opt': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ '@webassemblyjs/wast-printer': 1.14.1
+
+ '@webassemblyjs/wasm-gen@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/ieee754': 1.13.2
+ '@webassemblyjs/leb128': 1.13.2
+ '@webassemblyjs/utf8': 1.13.2
+
+ '@webassemblyjs/wasm-opt@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/wasm-gen': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+
+ '@webassemblyjs/wasm-parser@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-api-error': 1.13.2
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/ieee754': 1.13.2
+ '@webassemblyjs/leb128': 1.13.2
+ '@webassemblyjs/utf8': 1.13.2
+
+ '@webassemblyjs/wast-printer@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@xtuc/long': 4.2.2
+
+ '@xtuc/ieee754@1.2.0': {}
+
+ '@xtuc/long@4.2.2': {}
+
+ acorn-import-phases@1.0.4(acorn@8.15.0):
+ dependencies:
+ acorn: 8.15.0
+
acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
acorn: 8.15.0
@@ -6202,6 +6508,15 @@ snapshots:
acorn@8.15.0: {}
+ ajv-formats@2.1.1(ajv@8.17.1):
+ optionalDependencies:
+ ajv: 8.17.1
+
+ ajv-keywords@5.1.0(ajv@8.17.1):
+ dependencies:
+ ajv: 8.17.1
+ fast-deep-equal: 3.1.3
+
ajv@6.12.6:
dependencies:
fast-deep-equal: 3.1.3
@@ -6209,6 +6524,13 @@ snapshots:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
+ ajv@8.17.1:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.1.0
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
ansi-regex@5.0.1: {}
ansi-regex@6.0.1: {}
@@ -6359,8 +6681,7 @@ snapshots:
node-releases: 2.0.27
update-browserslist-db: 1.2.3(browserslist@4.28.1)
- buffer-from@1.1.2:
- optional: true
+ buffer-from@1.1.2: {}
bun-types@1.3.5:
dependencies:
@@ -6437,6 +6758,8 @@ snapshots:
dependencies:
readdirp: 4.1.1
+ chrome-trace-event@1.0.4: {}
+
citty@0.1.6:
dependencies:
consola: 3.2.3
@@ -6463,8 +6786,7 @@ snapshots:
colorette@2.0.20: {}
- commander@2.20.3:
- optional: true
+ commander@2.20.3: {}
commander@4.1.1: {}
@@ -6666,6 +6988,8 @@ snapshots:
es-module-lexer@1.7.0: {}
+ es-module-lexer@2.0.0: {}
+
es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
@@ -6994,6 +7318,11 @@ snapshots:
string.prototype.matchall: 4.0.11
string.prototype.repeat: 1.0.0
+ eslint-scope@5.1.1:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
eslint-scope@8.4.0:
dependencies:
esrecurse: 4.3.0
@@ -7058,6 +7387,8 @@ snapshots:
dependencies:
estraverse: 5.3.0
+ estraverse@4.3.0: {}
+
estraverse@5.3.0: {}
estree-walker@3.0.3:
@@ -7066,6 +7397,8 @@ snapshots:
esutils@2.0.3: {}
+ events@3.3.0: {}
+
execa@8.0.1:
dependencies:
cross-spawn: 7.0.6
@@ -7108,6 +7441,8 @@ snapshots:
fast-stringify@4.0.0: {}
+ fast-uri@3.1.0: {}
+
fastq@1.17.1:
dependencies:
reusify: 1.0.4
@@ -7220,6 +7555,8 @@ snapshots:
dependencies:
is-glob: 4.0.3
+ glob-to-regexp@0.4.1: {}
+
glob@10.4.5:
dependencies:
foreground-child: 3.3.0
@@ -7468,6 +7805,12 @@ snapshots:
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
+ jest-worker@27.5.1:
+ dependencies:
+ '@types/node': 20.19.1
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
jiti@1.21.6: {}
jiti@2.4.2: {}
@@ -7486,8 +7829,12 @@ snapshots:
json-buffer@3.0.1: {}
+ json-parse-even-better-errors@2.3.1: {}
+
json-schema-traverse@0.4.1: {}
+ json-schema-traverse@1.0.0: {}
+
json-stable-stringify-without-jsonify@1.0.1: {}
json5@1.0.2:
@@ -7589,6 +7936,8 @@ snapshots:
load-tsconfig@0.2.5: {}
+ loader-runner@4.3.1: {}
+
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
@@ -7630,6 +7979,12 @@ snapshots:
braces: 3.0.3
picomatch: 2.3.1
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
mimic-fn@4.0.0: {}
mini-svg-data-uri@1.4.4: {}
@@ -7678,6 +8033,8 @@ snapshots:
natural-compare@1.4.0: {}
+ neo-async@2.6.2: {}
+
next@16.1.0(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@next/env': 16.1.0
@@ -7972,6 +8329,10 @@ snapshots:
radix3@1.1.2: {}
+ randombytes@2.1.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
react-dom@19.2.3(react@19.2.3):
dependencies:
react: 19.2.3
@@ -8013,6 +8374,8 @@ snapshots:
gopd: 1.2.0
set-function-name: 2.0.2
+ require-from-string@2.0.2: {}
+
resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -8071,6 +8434,8 @@ snapshots:
has-symbols: 1.1.0
isarray: 2.0.5
+ safe-buffer@5.2.1: {}
+
safe-push-apply@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -8086,10 +8451,21 @@ snapshots:
scheduler@0.27.0: {}
+ schema-utils@4.3.3:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ajv: 8.17.1
+ ajv-formats: 2.1.1(ajv@8.17.1)
+ ajv-keywords: 5.1.0(ajv@8.17.1)
+
semver@6.3.1: {}
semver@7.7.3: {}
+ serialize-javascript@6.0.2:
+ dependencies:
+ randombytes: 2.1.0
+
set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
@@ -8190,10 +8566,8 @@ snapshots:
dependencies:
buffer-from: 1.1.2
source-map: 0.6.1
- optional: true
- source-map@0.6.1:
- optional: true
+ source-map@0.6.1: {}
source-map@0.7.6: {}
@@ -8302,6 +8676,10 @@ snapshots:
dependencies:
has-flag: 4.0.0
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
supports-preserve-symlinks-flag@1.0.0: {}
system-architecture@0.1.0: {}
@@ -8337,13 +8715,25 @@ snapshots:
tapable@2.2.1: {}
+ tapable@2.3.0: {}
+
+ terser-webpack-plugin@5.3.16(esbuild@0.27.0)(webpack@5.104.1(esbuild@0.27.0)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.29
+ jest-worker: 27.5.1
+ schema-utils: 4.3.3
+ serialize-javascript: 6.0.2
+ terser: 5.31.6
+ webpack: 5.104.1(esbuild@0.27.0)
+ optionalDependencies:
+ esbuild: 0.27.0
+
terser@5.31.6:
dependencies:
'@jridgewell/source-map': 0.3.6
acorn: 8.15.0
commander: 2.20.3
source-map-support: 0.5.21
- optional: true
thenify-all@1.6.0:
dependencies:
@@ -8650,6 +9040,45 @@ snapshots:
- tsx
- yaml
+ watchpack@2.5.1:
+ dependencies:
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+
+ webpack-sources@3.3.3: {}
+
+ webpack@5.104.1(esbuild@0.27.0):
+ dependencies:
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.8
+ '@types/json-schema': 7.0.15
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/wasm-edit': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ acorn: 8.15.0
+ acorn-import-phases: 1.0.4(acorn@8.15.0)
+ browserslist: 4.28.1
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.18.4
+ es-module-lexer: 2.0.0
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ json-parse-even-better-errors: 2.3.1
+ loader-runner: 4.3.1
+ mime-types: 2.1.35
+ neo-async: 2.6.2
+ schema-utils: 4.3.3
+ tapable: 2.3.0
+ terser-webpack-plugin: 5.3.16(esbuild@0.27.0)(webpack@5.104.1(esbuild@0.27.0))
+ watchpack: 2.5.1
+ webpack-sources: 3.3.3
+ transitivePeerDependencies:
+ - '@swc/core'
+ - esbuild
+ - uglify-js
+
which-boxed-primitive@1.1.1:
dependencies:
is-bigint: 1.1.0
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 8f662c07f..ba9aedcb6 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -9,6 +9,7 @@ catalog:
'@types/node': ^20.19.0
prettier: 3.6.2
vite: ^7.0.0
+ webpack: ^5
lightningcss: 1.30.2
lightningcss-darwin-arm64: 1.30.2
lightningcss-darwin-x64: 1.30.2
From e3e85b364fc62a19b97a4250854580132e7967c7 Mon Sep 17 00:00:00 2001
From: Tim Neutkens
Date: Thu, 29 Jan 2026 15:17:50 +0100
Subject: [PATCH 105/353] [tailwindcss-vite] Add Register dependency messages
logline (#19611)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The PostCSS implementation has a debug logline for registering
dependencies but this is missing for @tailwindcss/vite.
## Summary
Adds the "Register dependency messages" instrumentation span to the Vite
plugin's dependency registration code, matching the existing
implementation in @tailwindcss/postcss.
This ensures consistent debug instrumentation across both bundler
integrations when DEBUG is enabled.
## Test plan
---
packages/@tailwindcss-vite/src/index.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/packages/@tailwindcss-vite/src/index.ts b/packages/@tailwindcss-vite/src/index.ts
index 341c662b1..4ad70ba43 100644
--- a/packages/@tailwindcss-vite/src/index.ts
+++ b/packages/@tailwindcss-vite/src/index.ts
@@ -375,6 +375,7 @@ class Root {
}
if (this.compiler.features & Features.Utilities) {
+ DEBUG && I.start('Register dependency messages')
// Watch individual files found via custom `@source` paths
for (let file of this.scanner.files) {
addWatchFile(file)
@@ -411,6 +412,7 @@ class Root {
}
}
}
+ DEBUG && I.end('Register dependency messages')
}
DEBUG && I.start('Build CSS')
From 566eea4ff92dbac61a5f03f83d804c87a31ebc01 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Thu, 29 Jan 2026 15:49:31 +0100
Subject: [PATCH 106/353] Improve walk performance (#19614)
This PR improves the walk performance by a little bit, but also reduces
memory usage. It's a tiny change and all the APIs remain the same. Not
the most important PR, but we had this idea on the backburner so we
decided to just implement it.
Thanks @thecrypticace!
## Test plan
- All the existing tests should pass.
Co-authored-by: Jordan Pittman
---
packages/tailwindcss/src/walk.ts | 33 +++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/packages/tailwindcss/src/walk.ts b/packages/tailwindcss/src/walk.ts
index ccb384256..97c30db90 100644
--- a/packages/tailwindcss/src/walk.ts
+++ b/packages/tailwindcss/src/walk.ts
@@ -52,42 +52,53 @@ export function walk(
else walkImplementation(ast, hooks.enter, hooks.exit)
}
+interface Stack {
+ value: T
+ prev: Stack | null
+}
+
function walkImplementation(
ast: T[],
enter: (node: T, ctx: VisitContext) => EnterResult | void = () => WalkAction.Continue,
exit: (node: T, ctx: VisitContext) => ExitResult | void = () => WalkAction.Continue,
) {
- let stack: [nodes: T[], offset: number, parent: Parent | null][] = [[ast, 0, null]]
+ type StackFrame = [nodes: T[], offset: number, parent: Parent | null]
+ let stack: Stack | null = { value: [ast, 0, null], prev: null }
+
let ctx: VisitContext = {
parent: null,
depth: 0,
path() {
let path: T[] = []
- for (let i = 1; i < stack.length; i++) {
- let parent = stack[i][2]
+ let frames: Stack | null = stack
+
+ while (frames) {
+ let parent = frames.value[2]
if (parent) path.push(parent)
+ frames = frames.prev
}
+ path.reverse()
+
return path
},
}
- while (stack.length > 0) {
- let depth = stack.length - 1
- let frame = stack[depth]
+ while (stack !== null) {
+ let frame = stack.value
let nodes = frame[0]
let offset = frame[1]
let parent = frame[2]
// Done with this level
if (offset >= nodes.length) {
- stack.pop()
+ stack = stack.prev
+ ctx.depth -= 1
continue
}
ctx.parent = parent
- ctx.depth = depth
// Enter phase (offsets are positive)
if (offset >= 0) {
@@ -97,7 +108,11 @@ function walkImplementation(
switch (result.kind) {
case WalkKind.Continue: {
if (node.nodes && node.nodes.length > 0) {
- stack.push([node.nodes, 0, node as Parent])
+ ctx.depth += 1
+ stack = {
+ value: [node.nodes, 0, node as Parent],
+ prev: stack,
+ }
}
frame[1] = ~offset // Prepare for exit phase, same offset
From 991072fcacbf3ea6d141a240312768cd808697b1 Mon Sep 17 00:00:00 2001
From: Adam Wathan
Date: Fri, 30 Jan 2026 14:37:51 +0100
Subject: [PATCH 107/353] Add logical block-start/block-end border, margin, and
padding utilities (#19601)
## Summary
This PR adds support for logical block-start and block-end CSS
properties in Tailwind CSS utilities. These properties are part of the
CSS Logical Properties specification and provide writing-mode-aware
alternatives to physical top/bottom properties.
The following new utilities are added:
- **Border utilities**: `border-bs-*` and `border-be-*` (for
`border-block-start` and `border-block-end`)
- **Margin utilities**: `mbs-*` and `mbe-*` (for `margin-block-start`
and `margin-block-end`)
- **Scroll margin utilities**: `scroll-mbs-*` and `scroll-mbe-*` (for
`scroll-margin-block-start` and `scroll-margin-block-end`)
- **Scroll padding utilities**: `scroll-pbs-*` and `scroll-pbe-*` (for
`scroll-padding-block-start` and `scroll-padding-block-end`)
- **Padding utilities**: `pbs-*` and `pbe-*` (for `padding-block-start`
and `padding-block-end`)
These utilities follow the same patterns as their existing
inline-start/inline-end counterparts and support all standard modifiers
(arbitrary values, negative values, opacity modifiers, etc.).
## Changes
1. **utilities.ts**: Added new utility definitions for all
block-start/block-end properties
2. **property-order.ts**: Updated CSS property ordering to include the
new logical properties in the correct cascade order
3. **utilities.test.ts**: Added comprehensive test cases for all new
utilities
4. **utilities.test.ts.snap**: Updated snapshots showing generated CSS
for the new utilities
## Test plan
All changes are covered by existing test infrastructure:
- Unit tests verify correct CSS generation for each utility variant
- Snapshot tests validate the complete output for border utilities
- Invalid modifier combinations are tested to ensure proper error
handling
- Tests cover standard values, arbitrary values, negative values, and
opacity modifiers
https://claude.ai/code/session_01V89HxEtppGVvMtuPbYrayM
---------
Co-authored-by: Claude
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Robin Malfait
---
CHANGELOG.md | 1 +
.../__snapshots__/intellisense.test.ts.snap | 606 ++++++++++++++++++
.../src/__snapshots__/utilities.test.ts.snap | 370 +++++++++++
packages/tailwindcss/src/property-order.ts | 14 +
packages/tailwindcss/src/utilities.test.ts | 412 ++++++++++++
packages/tailwindcss/src/utilities.ts | 24 +
6 files changed, 1427 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9d6710ddc..cc4d2a301 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
+- Add `pbs-*`, `pbe-*`, `mbs-*`, `mbe-*`, `scroll-pbs-*`, `scroll-pbe-*`, `scroll-mbs-*`, `scroll-mbe-*`, `border-bs-*`, `border-be-*` utilities for `padding-block-start`, `padding-block-end`, `margin-block-start`, `margin-block-end`, `scroll-padding-block-start`, `scroll-padding-block-end`, `scroll-margin-block-start`, `scroll-margin-block-end`, `border-block-start`, and `border-block-end` ([`#19601`](https://github.com/tailwindlabs/tailwindcss/pull/19601))
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
- Add `@tailwindcss/webpack` loader for Tailwind CSS v4 ([#19610](https://github.com/tailwindlabs/tailwindcss/pull/19610))
diff --git a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
index 690b1cb1f..759d91443 100644
--- a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
+++ b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
@@ -739,6 +739,76 @@ exports[`getClassList 1`] = `
"-mb-80",
"-mb-96",
"-mb-px",
+ "-mbe-0",
+ "-mbe-0.5",
+ "-mbe-1",
+ "-mbe-1.5",
+ "-mbe-2",
+ "-mbe-2.5",
+ "-mbe-3",
+ "-mbe-3.5",
+ "-mbe-4",
+ "-mbe-5",
+ "-mbe-6",
+ "-mbe-7",
+ "-mbe-8",
+ "-mbe-9",
+ "-mbe-10",
+ "-mbe-11",
+ "-mbe-12",
+ "-mbe-14",
+ "-mbe-16",
+ "-mbe-20",
+ "-mbe-24",
+ "-mbe-28",
+ "-mbe-32",
+ "-mbe-36",
+ "-mbe-40",
+ "-mbe-44",
+ "-mbe-48",
+ "-mbe-52",
+ "-mbe-56",
+ "-mbe-60",
+ "-mbe-64",
+ "-mbe-72",
+ "-mbe-80",
+ "-mbe-96",
+ "-mbe-px",
+ "-mbs-0",
+ "-mbs-0.5",
+ "-mbs-1",
+ "-mbs-1.5",
+ "-mbs-2",
+ "-mbs-2.5",
+ "-mbs-3",
+ "-mbs-3.5",
+ "-mbs-4",
+ "-mbs-5",
+ "-mbs-6",
+ "-mbs-7",
+ "-mbs-8",
+ "-mbs-9",
+ "-mbs-10",
+ "-mbs-11",
+ "-mbs-12",
+ "-mbs-14",
+ "-mbs-16",
+ "-mbs-20",
+ "-mbs-24",
+ "-mbs-28",
+ "-mbs-32",
+ "-mbs-36",
+ "-mbs-40",
+ "-mbs-44",
+ "-mbs-48",
+ "-mbs-52",
+ "-mbs-56",
+ "-mbs-60",
+ "-mbs-64",
+ "-mbs-72",
+ "-mbs-80",
+ "-mbs-96",
+ "-mbs-px",
"-me-0",
"-me-0.5",
"-me-1",
@@ -1239,6 +1309,76 @@ exports[`getClassList 1`] = `
"-scroll-mb-80",
"-scroll-mb-96",
"-scroll-mb-px",
+ "-scroll-mbe-0",
+ "-scroll-mbe-0.5",
+ "-scroll-mbe-1",
+ "-scroll-mbe-1.5",
+ "-scroll-mbe-2",
+ "-scroll-mbe-2.5",
+ "-scroll-mbe-3",
+ "-scroll-mbe-3.5",
+ "-scroll-mbe-4",
+ "-scroll-mbe-5",
+ "-scroll-mbe-6",
+ "-scroll-mbe-7",
+ "-scroll-mbe-8",
+ "-scroll-mbe-9",
+ "-scroll-mbe-10",
+ "-scroll-mbe-11",
+ "-scroll-mbe-12",
+ "-scroll-mbe-14",
+ "-scroll-mbe-16",
+ "-scroll-mbe-20",
+ "-scroll-mbe-24",
+ "-scroll-mbe-28",
+ "-scroll-mbe-32",
+ "-scroll-mbe-36",
+ "-scroll-mbe-40",
+ "-scroll-mbe-44",
+ "-scroll-mbe-48",
+ "-scroll-mbe-52",
+ "-scroll-mbe-56",
+ "-scroll-mbe-60",
+ "-scroll-mbe-64",
+ "-scroll-mbe-72",
+ "-scroll-mbe-80",
+ "-scroll-mbe-96",
+ "-scroll-mbe-px",
+ "-scroll-mbs-0",
+ "-scroll-mbs-0.5",
+ "-scroll-mbs-1",
+ "-scroll-mbs-1.5",
+ "-scroll-mbs-2",
+ "-scroll-mbs-2.5",
+ "-scroll-mbs-3",
+ "-scroll-mbs-3.5",
+ "-scroll-mbs-4",
+ "-scroll-mbs-5",
+ "-scroll-mbs-6",
+ "-scroll-mbs-7",
+ "-scroll-mbs-8",
+ "-scroll-mbs-9",
+ "-scroll-mbs-10",
+ "-scroll-mbs-11",
+ "-scroll-mbs-12",
+ "-scroll-mbs-14",
+ "-scroll-mbs-16",
+ "-scroll-mbs-20",
+ "-scroll-mbs-24",
+ "-scroll-mbs-28",
+ "-scroll-mbs-32",
+ "-scroll-mbs-36",
+ "-scroll-mbs-40",
+ "-scroll-mbs-44",
+ "-scroll-mbs-48",
+ "-scroll-mbs-52",
+ "-scroll-mbs-56",
+ "-scroll-mbs-60",
+ "-scroll-mbs-64",
+ "-scroll-mbs-72",
+ "-scroll-mbs-80",
+ "-scroll-mbs-96",
+ "-scroll-mbs-px",
"-scroll-me-0",
"-scroll-me-0.5",
"-scroll-me-1",
@@ -2693,6 +2833,190 @@ exports[`getClassList 1`] = `
"border-b-transparent/90",
"border-b-transparent/95",
"border-b-transparent/100",
+ "border-be",
+ "border-be/0",
+ "border-be/5",
+ "border-be/10",
+ "border-be/15",
+ "border-be/20",
+ "border-be/25",
+ "border-be/30",
+ "border-be/35",
+ "border-be/40",
+ "border-be/45",
+ "border-be/50",
+ "border-be/55",
+ "border-be/60",
+ "border-be/65",
+ "border-be/70",
+ "border-be/75",
+ "border-be/80",
+ "border-be/85",
+ "border-be/90",
+ "border-be/95",
+ "border-be/100",
+ "border-be-0",
+ "border-be-2",
+ "border-be-4",
+ "border-be-8",
+ "border-be-current",
+ "border-be-current/0",
+ "border-be-current/5",
+ "border-be-current/10",
+ "border-be-current/15",
+ "border-be-current/20",
+ "border-be-current/25",
+ "border-be-current/30",
+ "border-be-current/35",
+ "border-be-current/40",
+ "border-be-current/45",
+ "border-be-current/50",
+ "border-be-current/55",
+ "border-be-current/60",
+ "border-be-current/65",
+ "border-be-current/70",
+ "border-be-current/75",
+ "border-be-current/80",
+ "border-be-current/85",
+ "border-be-current/90",
+ "border-be-current/95",
+ "border-be-current/100",
+ "border-be-inherit",
+ "border-be-inherit/0",
+ "border-be-inherit/5",
+ "border-be-inherit/10",
+ "border-be-inherit/15",
+ "border-be-inherit/20",
+ "border-be-inherit/25",
+ "border-be-inherit/30",
+ "border-be-inherit/35",
+ "border-be-inherit/40",
+ "border-be-inherit/45",
+ "border-be-inherit/50",
+ "border-be-inherit/55",
+ "border-be-inherit/60",
+ "border-be-inherit/65",
+ "border-be-inherit/70",
+ "border-be-inherit/75",
+ "border-be-inherit/80",
+ "border-be-inherit/85",
+ "border-be-inherit/90",
+ "border-be-inherit/95",
+ "border-be-inherit/100",
+ "border-be-transparent",
+ "border-be-transparent/0",
+ "border-be-transparent/5",
+ "border-be-transparent/10",
+ "border-be-transparent/15",
+ "border-be-transparent/20",
+ "border-be-transparent/25",
+ "border-be-transparent/30",
+ "border-be-transparent/35",
+ "border-be-transparent/40",
+ "border-be-transparent/45",
+ "border-be-transparent/50",
+ "border-be-transparent/55",
+ "border-be-transparent/60",
+ "border-be-transparent/65",
+ "border-be-transparent/70",
+ "border-be-transparent/75",
+ "border-be-transparent/80",
+ "border-be-transparent/85",
+ "border-be-transparent/90",
+ "border-be-transparent/95",
+ "border-be-transparent/100",
+ "border-bs",
+ "border-bs/0",
+ "border-bs/5",
+ "border-bs/10",
+ "border-bs/15",
+ "border-bs/20",
+ "border-bs/25",
+ "border-bs/30",
+ "border-bs/35",
+ "border-bs/40",
+ "border-bs/45",
+ "border-bs/50",
+ "border-bs/55",
+ "border-bs/60",
+ "border-bs/65",
+ "border-bs/70",
+ "border-bs/75",
+ "border-bs/80",
+ "border-bs/85",
+ "border-bs/90",
+ "border-bs/95",
+ "border-bs/100",
+ "border-bs-0",
+ "border-bs-2",
+ "border-bs-4",
+ "border-bs-8",
+ "border-bs-current",
+ "border-bs-current/0",
+ "border-bs-current/5",
+ "border-bs-current/10",
+ "border-bs-current/15",
+ "border-bs-current/20",
+ "border-bs-current/25",
+ "border-bs-current/30",
+ "border-bs-current/35",
+ "border-bs-current/40",
+ "border-bs-current/45",
+ "border-bs-current/50",
+ "border-bs-current/55",
+ "border-bs-current/60",
+ "border-bs-current/65",
+ "border-bs-current/70",
+ "border-bs-current/75",
+ "border-bs-current/80",
+ "border-bs-current/85",
+ "border-bs-current/90",
+ "border-bs-current/95",
+ "border-bs-current/100",
+ "border-bs-inherit",
+ "border-bs-inherit/0",
+ "border-bs-inherit/5",
+ "border-bs-inherit/10",
+ "border-bs-inherit/15",
+ "border-bs-inherit/20",
+ "border-bs-inherit/25",
+ "border-bs-inherit/30",
+ "border-bs-inherit/35",
+ "border-bs-inherit/40",
+ "border-bs-inherit/45",
+ "border-bs-inherit/50",
+ "border-bs-inherit/55",
+ "border-bs-inherit/60",
+ "border-bs-inherit/65",
+ "border-bs-inherit/70",
+ "border-bs-inherit/75",
+ "border-bs-inherit/80",
+ "border-bs-inherit/85",
+ "border-bs-inherit/90",
+ "border-bs-inherit/95",
+ "border-bs-inherit/100",
+ "border-bs-transparent",
+ "border-bs-transparent/0",
+ "border-bs-transparent/5",
+ "border-bs-transparent/10",
+ "border-bs-transparent/15",
+ "border-bs-transparent/20",
+ "border-bs-transparent/25",
+ "border-bs-transparent/30",
+ "border-bs-transparent/35",
+ "border-bs-transparent/40",
+ "border-bs-transparent/45",
+ "border-bs-transparent/50",
+ "border-bs-transparent/55",
+ "border-bs-transparent/60",
+ "border-bs-transparent/65",
+ "border-bs-transparent/70",
+ "border-bs-transparent/75",
+ "border-bs-transparent/80",
+ "border-bs-transparent/85",
+ "border-bs-transparent/90",
+ "border-bs-transparent/95",
+ "border-bs-transparent/100",
"border-collapse",
"border-current",
"border-current/0",
@@ -7614,6 +7938,78 @@ exports[`getClassList 1`] = `
"mb-96",
"mb-auto",
"mb-px",
+ "mbe-0",
+ "mbe-0.5",
+ "mbe-1",
+ "mbe-1.5",
+ "mbe-2",
+ "mbe-2.5",
+ "mbe-3",
+ "mbe-3.5",
+ "mbe-4",
+ "mbe-5",
+ "mbe-6",
+ "mbe-7",
+ "mbe-8",
+ "mbe-9",
+ "mbe-10",
+ "mbe-11",
+ "mbe-12",
+ "mbe-14",
+ "mbe-16",
+ "mbe-20",
+ "mbe-24",
+ "mbe-28",
+ "mbe-32",
+ "mbe-36",
+ "mbe-40",
+ "mbe-44",
+ "mbe-48",
+ "mbe-52",
+ "mbe-56",
+ "mbe-60",
+ "mbe-64",
+ "mbe-72",
+ "mbe-80",
+ "mbe-96",
+ "mbe-auto",
+ "mbe-px",
+ "mbs-0",
+ "mbs-0.5",
+ "mbs-1",
+ "mbs-1.5",
+ "mbs-2",
+ "mbs-2.5",
+ "mbs-3",
+ "mbs-3.5",
+ "mbs-4",
+ "mbs-5",
+ "mbs-6",
+ "mbs-7",
+ "mbs-8",
+ "mbs-9",
+ "mbs-10",
+ "mbs-11",
+ "mbs-12",
+ "mbs-14",
+ "mbs-16",
+ "mbs-20",
+ "mbs-24",
+ "mbs-28",
+ "mbs-32",
+ "mbs-36",
+ "mbs-40",
+ "mbs-44",
+ "mbs-48",
+ "mbs-52",
+ "mbs-56",
+ "mbs-60",
+ "mbs-64",
+ "mbs-72",
+ "mbs-80",
+ "mbs-96",
+ "mbs-auto",
+ "mbs-px",
"me-0",
"me-0.5",
"me-1",
@@ -8298,6 +8694,76 @@ exports[`getClassList 1`] = `
"pb-80",
"pb-96",
"pb-px",
+ "pbe-0",
+ "pbe-0.5",
+ "pbe-1",
+ "pbe-1.5",
+ "pbe-2",
+ "pbe-2.5",
+ "pbe-3",
+ "pbe-3.5",
+ "pbe-4",
+ "pbe-5",
+ "pbe-6",
+ "pbe-7",
+ "pbe-8",
+ "pbe-9",
+ "pbe-10",
+ "pbe-11",
+ "pbe-12",
+ "pbe-14",
+ "pbe-16",
+ "pbe-20",
+ "pbe-24",
+ "pbe-28",
+ "pbe-32",
+ "pbe-36",
+ "pbe-40",
+ "pbe-44",
+ "pbe-48",
+ "pbe-52",
+ "pbe-56",
+ "pbe-60",
+ "pbe-64",
+ "pbe-72",
+ "pbe-80",
+ "pbe-96",
+ "pbe-px",
+ "pbs-0",
+ "pbs-0.5",
+ "pbs-1",
+ "pbs-1.5",
+ "pbs-2",
+ "pbs-2.5",
+ "pbs-3",
+ "pbs-3.5",
+ "pbs-4",
+ "pbs-5",
+ "pbs-6",
+ "pbs-7",
+ "pbs-8",
+ "pbs-9",
+ "pbs-10",
+ "pbs-11",
+ "pbs-12",
+ "pbs-14",
+ "pbs-16",
+ "pbs-20",
+ "pbs-24",
+ "pbs-28",
+ "pbs-32",
+ "pbs-36",
+ "pbs-40",
+ "pbs-44",
+ "pbs-48",
+ "pbs-52",
+ "pbs-56",
+ "pbs-60",
+ "pbs-64",
+ "pbs-72",
+ "pbs-80",
+ "pbs-96",
+ "pbs-px",
"pe-0",
"pe-0.5",
"pe-1",
@@ -9097,6 +9563,76 @@ exports[`getClassList 1`] = `
"scroll-mb-80",
"scroll-mb-96",
"scroll-mb-px",
+ "scroll-mbe-0",
+ "scroll-mbe-0.5",
+ "scroll-mbe-1",
+ "scroll-mbe-1.5",
+ "scroll-mbe-2",
+ "scroll-mbe-2.5",
+ "scroll-mbe-3",
+ "scroll-mbe-3.5",
+ "scroll-mbe-4",
+ "scroll-mbe-5",
+ "scroll-mbe-6",
+ "scroll-mbe-7",
+ "scroll-mbe-8",
+ "scroll-mbe-9",
+ "scroll-mbe-10",
+ "scroll-mbe-11",
+ "scroll-mbe-12",
+ "scroll-mbe-14",
+ "scroll-mbe-16",
+ "scroll-mbe-20",
+ "scroll-mbe-24",
+ "scroll-mbe-28",
+ "scroll-mbe-32",
+ "scroll-mbe-36",
+ "scroll-mbe-40",
+ "scroll-mbe-44",
+ "scroll-mbe-48",
+ "scroll-mbe-52",
+ "scroll-mbe-56",
+ "scroll-mbe-60",
+ "scroll-mbe-64",
+ "scroll-mbe-72",
+ "scroll-mbe-80",
+ "scroll-mbe-96",
+ "scroll-mbe-px",
+ "scroll-mbs-0",
+ "scroll-mbs-0.5",
+ "scroll-mbs-1",
+ "scroll-mbs-1.5",
+ "scroll-mbs-2",
+ "scroll-mbs-2.5",
+ "scroll-mbs-3",
+ "scroll-mbs-3.5",
+ "scroll-mbs-4",
+ "scroll-mbs-5",
+ "scroll-mbs-6",
+ "scroll-mbs-7",
+ "scroll-mbs-8",
+ "scroll-mbs-9",
+ "scroll-mbs-10",
+ "scroll-mbs-11",
+ "scroll-mbs-12",
+ "scroll-mbs-14",
+ "scroll-mbs-16",
+ "scroll-mbs-20",
+ "scroll-mbs-24",
+ "scroll-mbs-28",
+ "scroll-mbs-32",
+ "scroll-mbs-36",
+ "scroll-mbs-40",
+ "scroll-mbs-44",
+ "scroll-mbs-48",
+ "scroll-mbs-52",
+ "scroll-mbs-56",
+ "scroll-mbs-60",
+ "scroll-mbs-64",
+ "scroll-mbs-72",
+ "scroll-mbs-80",
+ "scroll-mbs-96",
+ "scroll-mbs-px",
"scroll-me-0",
"scroll-me-0.5",
"scroll-me-1",
@@ -9412,6 +9948,76 @@ exports[`getClassList 1`] = `
"scroll-pb-80",
"scroll-pb-96",
"scroll-pb-px",
+ "scroll-pbe-0",
+ "scroll-pbe-0.5",
+ "scroll-pbe-1",
+ "scroll-pbe-1.5",
+ "scroll-pbe-2",
+ "scroll-pbe-2.5",
+ "scroll-pbe-3",
+ "scroll-pbe-3.5",
+ "scroll-pbe-4",
+ "scroll-pbe-5",
+ "scroll-pbe-6",
+ "scroll-pbe-7",
+ "scroll-pbe-8",
+ "scroll-pbe-9",
+ "scroll-pbe-10",
+ "scroll-pbe-11",
+ "scroll-pbe-12",
+ "scroll-pbe-14",
+ "scroll-pbe-16",
+ "scroll-pbe-20",
+ "scroll-pbe-24",
+ "scroll-pbe-28",
+ "scroll-pbe-32",
+ "scroll-pbe-36",
+ "scroll-pbe-40",
+ "scroll-pbe-44",
+ "scroll-pbe-48",
+ "scroll-pbe-52",
+ "scroll-pbe-56",
+ "scroll-pbe-60",
+ "scroll-pbe-64",
+ "scroll-pbe-72",
+ "scroll-pbe-80",
+ "scroll-pbe-96",
+ "scroll-pbe-px",
+ "scroll-pbs-0",
+ "scroll-pbs-0.5",
+ "scroll-pbs-1",
+ "scroll-pbs-1.5",
+ "scroll-pbs-2",
+ "scroll-pbs-2.5",
+ "scroll-pbs-3",
+ "scroll-pbs-3.5",
+ "scroll-pbs-4",
+ "scroll-pbs-5",
+ "scroll-pbs-6",
+ "scroll-pbs-7",
+ "scroll-pbs-8",
+ "scroll-pbs-9",
+ "scroll-pbs-10",
+ "scroll-pbs-11",
+ "scroll-pbs-12",
+ "scroll-pbs-14",
+ "scroll-pbs-16",
+ "scroll-pbs-20",
+ "scroll-pbs-24",
+ "scroll-pbs-28",
+ "scroll-pbs-32",
+ "scroll-pbs-36",
+ "scroll-pbs-40",
+ "scroll-pbs-44",
+ "scroll-pbs-48",
+ "scroll-pbs-52",
+ "scroll-pbs-56",
+ "scroll-pbs-60",
+ "scroll-pbs-64",
+ "scroll-pbs-72",
+ "scroll-pbs-80",
+ "scroll-pbs-96",
+ "scroll-pbs-px",
"scroll-pe-0",
"scroll-pe-0.5",
"scroll-pe-1",
diff --git a/packages/tailwindcss/src/__snapshots__/utilities.test.ts.snap b/packages/tailwindcss/src/__snapshots__/utilities.test.ts.snap
index 6adc96113..12bf1312a 100644
--- a/packages/tailwindcss/src/__snapshots__/utilities.test.ts.snap
+++ b/packages/tailwindcss/src/__snapshots__/utilities.test.ts.snap
@@ -370,6 +370,376 @@ exports[`border-b-* 1`] = `
}"
`;
+exports[`border-be-* 1`] = `
+"@layer properties {
+ @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
+ *, :before, :after, ::backdrop {
+ --tw-border-style: solid;
+ }
+ }
+}
+
+:root, :host {
+ --color-red-500: #ef4444;
+ --border-color-blue-500: #3b82f6;
+}
+
+.border-be {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 1px;
+}
+
+.border-be-0 {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 0;
+}
+
+.border-be-2 {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 2px;
+}
+
+.border-be-4 {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 4px;
+}
+
+.border-be-123 {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 123px;
+}
+
+.border-be-\\[0_1\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 0 1;
+}
+
+.border-be-\\[0_2px_0_2px\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 0 2px 0 2px;
+}
+
+.border-be-\\[12px\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 12px;
+}
+
+.border-be-\\[12px_8px\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: 12px 8px;
+}
+
+.border-be-\\[length\\:var\\(--my-width\\)\\], .border-be-\\[line-width\\:var\\(--my-width\\)\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: var(--my-width);
+}
+
+.border-be-\\[medium\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: medium;
+}
+
+.border-be-\\[thick\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: thick;
+}
+
+.border-be-\\[thin\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: thin;
+}
+
+.border-be-\\[thin_2px\\] {
+ border-block-end-style: var(--tw-border-style);
+ border-block-end-width: thin 2px;
+}
+
+.border-be-\\[\\#0088cc\\] {
+ border-block-end-color: #08c;
+}
+
+.border-be-\\[\\#0088cc\\]\\/50 {
+ border-block-end-color: oklab(59.9824% -.067 -.124 / .5);
+}
+
+.border-be-\\[color\\:var\\(--my-color\\)\\], .border-be-\\[color\\:var\\(--my-color\\)\\]\\/50 {
+ border-block-end-color: var(--my-color);
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-be-\\[color\\:var\\(--my-color\\)\\]\\/50 {
+ border-block-end-color: color-mix(in oklab, var(--my-color) 50%, transparent);
+ }
+}
+
+.border-be-\\[var\\(--my-color\\)\\], .border-be-\\[var\\(--my-color\\)\\]\\/50 {
+ border-block-end-color: var(--my-color);
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-be-\\[var\\(--my-color\\)\\]\\/50 {
+ border-block-end-color: color-mix(in oklab, var(--my-color) 50%, transparent);
+ }
+}
+
+.border-be-blue-500 {
+ border-block-end-color: var(--border-color-blue-500);
+}
+
+.border-be-current, .border-be-current\\/50 {
+ border-block-end-color: currentColor;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-be-current\\/50 {
+ border-block-end-color: color-mix(in oklab, currentcolor 50%, transparent);
+ }
+}
+
+.border-be-inherit {
+ border-block-end-color: inherit;
+}
+
+.border-be-red-500 {
+ border-block-end-color: var(--color-red-500);
+}
+
+.border-be-red-500\\/2\\.5 {
+ border-block-end-color: #ef444406;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-be-red-500\\/2\\.5 {
+ border-block-end-color: color-mix(in oklab, var(--color-red-500) 2.5%, transparent);
+ }
+}
+
+.border-be-red-500\\/2\\.25 {
+ border-block-end-color: #ef444406;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-be-red-500\\/2\\.25 {
+ border-block-end-color: color-mix(in oklab, var(--color-red-500) 2.25%, transparent);
+ }
+}
+
+.border-be-red-500\\/2\\.75 {
+ border-block-end-color: #ef444407;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-be-red-500\\/2\\.75 {
+ border-block-end-color: color-mix(in oklab, var(--color-red-500) 2.75%, transparent);
+ }
+}
+
+.border-be-red-500\\/50 {
+ border-block-end-color: #ef444480;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-be-red-500\\/50 {
+ border-block-end-color: color-mix(in oklab, var(--color-red-500) 50%, transparent);
+ }
+}
+
+.border-be-transparent {
+ border-block-end-color: #0000;
+}
+
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}"
+`;
+
+exports[`border-bs-* 1`] = `
+"@layer properties {
+ @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
+ *, :before, :after, ::backdrop {
+ --tw-border-style: solid;
+ }
+ }
+}
+
+:root, :host {
+ --color-red-500: #ef4444;
+ --border-color-blue-500: #3b82f6;
+}
+
+.border-bs {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 1px;
+}
+
+.border-bs-0 {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 0;
+}
+
+.border-bs-2 {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 2px;
+}
+
+.border-bs-4 {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 4px;
+}
+
+.border-bs-123 {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 123px;
+}
+
+.border-bs-\\[0_1\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 0 1;
+}
+
+.border-bs-\\[0_2px_0_2px\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 0 2px 0 2px;
+}
+
+.border-bs-\\[12px\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 12px;
+}
+
+.border-bs-\\[12px_8px\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: 12px 8px;
+}
+
+.border-bs-\\[length\\:var\\(--my-width\\)\\], .border-bs-\\[line-width\\:var\\(--my-width\\)\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: var(--my-width);
+}
+
+.border-bs-\\[medium\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: medium;
+}
+
+.border-bs-\\[thick\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: thick;
+}
+
+.border-bs-\\[thin\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: thin;
+}
+
+.border-bs-\\[thin_2px\\] {
+ border-block-start-style: var(--tw-border-style);
+ border-block-start-width: thin 2px;
+}
+
+.border-bs-\\[\\#0088cc\\] {
+ border-block-start-color: #08c;
+}
+
+.border-bs-\\[\\#0088cc\\]\\/50 {
+ border-block-start-color: oklab(59.9824% -.067 -.124 / .5);
+}
+
+.border-bs-\\[color\\:var\\(--my-color\\)\\], .border-bs-\\[color\\:var\\(--my-color\\)\\]\\/50 {
+ border-block-start-color: var(--my-color);
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-bs-\\[color\\:var\\(--my-color\\)\\]\\/50 {
+ border-block-start-color: color-mix(in oklab, var(--my-color) 50%, transparent);
+ }
+}
+
+.border-bs-\\[var\\(--my-color\\)\\], .border-bs-\\[var\\(--my-color\\)\\]\\/50 {
+ border-block-start-color: var(--my-color);
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-bs-\\[var\\(--my-color\\)\\]\\/50 {
+ border-block-start-color: color-mix(in oklab, var(--my-color) 50%, transparent);
+ }
+}
+
+.border-bs-blue-500 {
+ border-block-start-color: var(--border-color-blue-500);
+}
+
+.border-bs-current, .border-bs-current\\/50 {
+ border-block-start-color: currentColor;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-bs-current\\/50 {
+ border-block-start-color: color-mix(in oklab, currentcolor 50%, transparent);
+ }
+}
+
+.border-bs-inherit {
+ border-block-start-color: inherit;
+}
+
+.border-bs-red-500 {
+ border-block-start-color: var(--color-red-500);
+}
+
+.border-bs-red-500\\/2\\.5 {
+ border-block-start-color: #ef444406;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-bs-red-500\\/2\\.5 {
+ border-block-start-color: color-mix(in oklab, var(--color-red-500) 2.5%, transparent);
+ }
+}
+
+.border-bs-red-500\\/2\\.25 {
+ border-block-start-color: #ef444406;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-bs-red-500\\/2\\.25 {
+ border-block-start-color: color-mix(in oklab, var(--color-red-500) 2.25%, transparent);
+ }
+}
+
+.border-bs-red-500\\/2\\.75 {
+ border-block-start-color: #ef444407;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-bs-red-500\\/2\\.75 {
+ border-block-start-color: color-mix(in oklab, var(--color-red-500) 2.75%, transparent);
+ }
+}
+
+.border-bs-red-500\\/50 {
+ border-block-start-color: #ef444480;
+}
+
+@supports (color: color-mix(in lab, red, red)) {
+ .border-bs-red-500\\/50 {
+ border-block-start-color: color-mix(in oklab, var(--color-red-500) 50%, transparent);
+ }
+}
+
+.border-bs-transparent {
+ border-block-start-color: #0000;
+}
+
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}"
+`;
+
exports[`border-e-* 1`] = `
"@layer properties {
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
diff --git a/packages/tailwindcss/src/property-order.ts b/packages/tailwindcss/src/property-order.ts
index f024f6977..03d0440ae 100644
--- a/packages/tailwindcss/src/property-order.ts
+++ b/packages/tailwindcss/src/property-order.ts
@@ -39,6 +39,8 @@ export default [
'margin-block',
'margin-inline-start',
'margin-inline-end',
+ 'margin-block-start',
+ 'margin-block-end',
'margin-top',
'margin-right',
'margin-bottom',
@@ -108,6 +110,8 @@ export default [
'scroll-margin-block',
'scroll-margin-inline-start',
'scroll-margin-inline-end',
+ 'scroll-margin-block-start',
+ 'scroll-margin-block-end',
'scroll-margin-top',
'scroll-margin-right',
'scroll-margin-bottom',
@@ -118,6 +122,8 @@ export default [
'scroll-padding-block',
'scroll-padding-inline-start',
'scroll-padding-inline-end',
+ 'scroll-padding-block-start',
+ 'scroll-padding-block-end',
'scroll-padding-top',
'scroll-padding-right',
'scroll-padding-bottom',
@@ -196,6 +202,8 @@ export default [
'border-block-width',
'border-inline-start-width',
'border-inline-end-width',
+ 'border-block-start-width',
+ 'border-block-end-width',
'border-top-width',
'border-right-width',
'border-bottom-width',
@@ -206,6 +214,8 @@ export default [
'border-block-style',
'border-inline-start-style',
'border-inline-end-style',
+ 'border-block-start-style',
+ 'border-block-end-style',
'border-top-style',
'border-right-style',
'border-bottom-style',
@@ -216,6 +226,8 @@ export default [
'border-block-color',
'border-inline-start-color',
'border-inline-end-color',
+ 'border-block-start-color',
+ 'border-block-end-color',
'border-top-color',
'border-right-color',
'border-bottom-color',
@@ -317,6 +329,8 @@ export default [
'padding-block',
'padding-inline-start',
'padding-inline-end',
+ 'padding-block-start',
+ 'padding-block-end',
'padding-top',
'padding-right',
'padding-bottom',
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index cff2284f4..a5991ebfa 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -2216,6 +2216,178 @@ test('me', async () => {
).toEqual('')
})
+test('mbs', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing: 0.25rem;
+ --spacing-big: 100rem;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'mbs-1',
+ 'mbs-99',
+ 'mbs-2.5',
+ 'mbs-big',
+ 'mbs-[4px]',
+ '-mbs-4',
+ '-mbs-2.5',
+ '-mbs-big',
+ '-mbs-[4px]',
+ 'mbs-[var(--my-var)]',
+ '-mbs-[var(--my-var)]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing: .25rem;
+ --spacing-big: 100rem;
+ }
+
+ .-mbs-2\\.5 {
+ margin-block-start: calc(var(--spacing) * -2.5);
+ }
+
+ .-mbs-4 {
+ margin-block-start: calc(var(--spacing) * -4);
+ }
+
+ .-mbs-\\[4px\\] {
+ margin-block-start: -4px;
+ }
+
+ .-mbs-\\[var\\(--my-var\\)\\] {
+ margin-block-start: calc(var(--my-var) * -1);
+ }
+
+ .-mbs-big {
+ margin-block-start: calc(var(--spacing-big) * -1);
+ }
+
+ .mbs-1 {
+ margin-block-start: calc(var(--spacing) * 1);
+ }
+
+ .mbs-2\\.5 {
+ margin-block-start: calc(var(--spacing) * 2.5);
+ }
+
+ .mbs-99 {
+ margin-block-start: calc(var(--spacing) * 99);
+ }
+
+ .mbs-\\[4px\\] {
+ margin-block-start: 4px;
+ }
+
+ .mbs-\\[var\\(--my-var\\)\\] {
+ margin-block-start: var(--my-var);
+ }
+
+ .mbs-big {
+ margin-block-start: var(--spacing-big);
+ }"
+ `)
+ expect(
+ await run([
+ 'mbs',
+ 'mbs-auto/foo',
+ 'mbs-4/foo',
+ 'mbs-[4px]/foo',
+ '-mbs-4/foo',
+ '-mbs-[var(--value)]/foo',
+ ]),
+ ).toEqual('')
+})
+
+test('mbe', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing: 0.25rem;
+ --spacing-big: 100rem;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'mbe-1',
+ 'mbe-99',
+ 'mbe-2.5',
+ 'mbe-big',
+ 'mbe-[4px]',
+ '-mbe-4',
+ '-mbe-2.5',
+ '-mbe-big',
+ '-mbe-[4px]',
+ 'mbe-[var(--my-var)]',
+ '-mbe-[var(--my-var)]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing: .25rem;
+ --spacing-big: 100rem;
+ }
+
+ .-mbe-2\\.5 {
+ margin-block-end: calc(var(--spacing) * -2.5);
+ }
+
+ .-mbe-4 {
+ margin-block-end: calc(var(--spacing) * -4);
+ }
+
+ .-mbe-\\[4px\\] {
+ margin-block-end: -4px;
+ }
+
+ .-mbe-\\[var\\(--my-var\\)\\] {
+ margin-block-end: calc(var(--my-var) * -1);
+ }
+
+ .-mbe-big {
+ margin-block-end: calc(var(--spacing-big) * -1);
+ }
+
+ .mbe-1 {
+ margin-block-end: calc(var(--spacing) * 1);
+ }
+
+ .mbe-2\\.5 {
+ margin-block-end: calc(var(--spacing) * 2.5);
+ }
+
+ .mbe-99 {
+ margin-block-end: calc(var(--spacing) * 99);
+ }
+
+ .mbe-\\[4px\\] {
+ margin-block-end: 4px;
+ }
+
+ .mbe-\\[var\\(--my-var\\)\\] {
+ margin-block-end: var(--my-var);
+ }
+
+ .mbe-big {
+ margin-block-end: var(--spacing-big);
+ }"
+ `)
+ expect(
+ await run([
+ 'mbe',
+ 'mbe-auto/foo',
+ 'mbe-4/foo',
+ 'mbe-[4px]/foo',
+ '-mbe-4/foo',
+ '-mbe-[var(--value)]/foo',
+ ]),
+ ).toEqual('')
+})
+
test('mr', async () => {
expect(
await compileCss(
@@ -6669,6 +6841,92 @@ test('scroll-me', async () => {
).toEqual('')
})
+test('scroll-mbs', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ }
+ @tailwind utilities;
+ `,
+ ['scroll-mbs-4', 'scroll-mbs-[4px]', '-scroll-mbs-4', '-scroll-mbs-[var(--value)]'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ }
+
+ .-scroll-mbs-4 {
+ scroll-margin-block-start: calc(var(--spacing-4) * -1);
+ }
+
+ .-scroll-mbs-\\[var\\(--value\\)\\] {
+ scroll-margin-block-start: calc(var(--value) * -1);
+ }
+
+ .scroll-mbs-4 {
+ scroll-margin-block-start: var(--spacing-4);
+ }
+
+ .scroll-mbs-\\[4px\\] {
+ scroll-margin-block-start: 4px;
+ }"
+ `)
+ expect(
+ await run([
+ 'scroll-mbs',
+ 'scroll-mbs-4/foo',
+ 'scroll-mbs-[4px]/foo',
+ '-scroll-mbs-4/foo',
+ '-scroll-mbs-[var(--value)]/foo',
+ ]),
+ ).toEqual('')
+})
+
+test('scroll-mbe', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ }
+ @tailwind utilities;
+ `,
+ ['scroll-mbe-4', 'scroll-mbe-[4px]', '-scroll-mbe-4', '-scroll-mbe-[var(--value)]'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ }
+
+ .-scroll-mbe-4 {
+ scroll-margin-block-end: calc(var(--spacing-4) * -1);
+ }
+
+ .-scroll-mbe-\\[var\\(--value\\)\\] {
+ scroll-margin-block-end: calc(var(--value) * -1);
+ }
+
+ .scroll-mbe-4 {
+ scroll-margin-block-end: var(--spacing-4);
+ }
+
+ .scroll-mbe-\\[4px\\] {
+ scroll-margin-block-end: 4px;
+ }"
+ `)
+ expect(
+ await run([
+ 'scroll-mbe',
+ 'scroll-mbe-4/foo',
+ 'scroll-mbe-[4px]/foo',
+ '-scroll-mbe-4/foo',
+ '-scroll-mbe-[var(--value)]/foo',
+ ]),
+ ).toEqual('')
+})
+
test('scroll-mt', async () => {
expect(
await compileCss(
@@ -7016,6 +7274,76 @@ test('scroll-pe', async () => {
).toEqual('')
})
+test('scroll-pbs', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ }
+ @tailwind utilities;
+ `,
+ ['scroll-pbs-4', 'scroll-pbs-[4px]'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ }
+
+ .scroll-pbs-4 {
+ scroll-padding-block-start: var(--spacing-4);
+ }
+
+ .scroll-pbs-\\[4px\\] {
+ scroll-padding-block-start: 4px;
+ }"
+ `)
+ expect(
+ await run([
+ 'scroll-pbs',
+ 'scroll-pbs-4/foo',
+ 'scroll-pbs-[4px]/foo',
+ '-scroll-pbs-4',
+ '-scroll-pbs-[var(--value)]',
+ ]),
+ ).toEqual('')
+})
+
+test('scroll-pbe', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ }
+ @tailwind utilities;
+ `,
+ ['scroll-pbe-4', 'scroll-pbe-[4px]'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ }
+
+ .scroll-pbe-4 {
+ scroll-padding-block-end: var(--spacing-4);
+ }
+
+ .scroll-pbe-\\[4px\\] {
+ scroll-padding-block-end: 4px;
+ }"
+ `)
+ expect(
+ await run([
+ 'scroll-pbe',
+ 'scroll-pbe-4/foo',
+ 'scroll-pbe-[4px]/foo',
+ '-scroll-pbe-4',
+ '-scroll-pbe-[var(--value)]',
+ ]),
+ ).toEqual('')
+})
+
test('scroll-pt', async () => {
expect(
await compileCss(
@@ -11119,6 +11447,8 @@ const prefixes = [
'border-y',
'border-s',
'border-e',
+ 'border-bs',
+ 'border-be',
'border-t',
'border-r',
'border-b',
@@ -20693,6 +21023,88 @@ test('pe', async () => {
expect(await run(['pe', '-pe-4', '-pe-[4px]', 'pe-4/foo', 'pe-[4px]/foo'])).toEqual('')
})
+test('pbs', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing: 0.25rem;
+ --spacing-big: 100rem;
+ }
+ @tailwind utilities;
+ `,
+ ['pbs-1', 'pbs-4', 'pbs-99', 'pbs-big', 'pbs-[4px]'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing: .25rem;
+ --spacing-big: 100rem;
+ }
+
+ .pbs-1 {
+ padding-block-start: calc(var(--spacing) * 1);
+ }
+
+ .pbs-4 {
+ padding-block-start: calc(var(--spacing) * 4);
+ }
+
+ .pbs-99 {
+ padding-block-start: calc(var(--spacing) * 99);
+ }
+
+ .pbs-\\[4px\\] {
+ padding-block-start: 4px;
+ }
+
+ .pbs-big {
+ padding-block-start: var(--spacing-big);
+ }"
+ `)
+ expect(await run(['pbs', '-pbs-4', '-pbs-[4px]', 'pbs-4/foo', 'pbs-[4px]/foo'])).toEqual('')
+})
+
+test('pbe', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing: 0.25rem;
+ --spacing-big: 100rem;
+ }
+ @tailwind utilities;
+ `,
+ ['pbe-1', 'pbe-4', 'pbe-99', 'pbe-big', 'pbe-[4px]'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing: .25rem;
+ --spacing-big: 100rem;
+ }
+
+ .pbe-1 {
+ padding-block-end: calc(var(--spacing) * 1);
+ }
+
+ .pbe-4 {
+ padding-block-end: calc(var(--spacing) * 4);
+ }
+
+ .pbe-99 {
+ padding-block-end: calc(var(--spacing) * 99);
+ }
+
+ .pbe-\\[4px\\] {
+ padding-block-end: 4px;
+ }
+
+ .pbe-big {
+ padding-block-end: var(--spacing-big);
+ }"
+ `)
+ expect(await run(['pbe', '-pbe-4', '-pbe-[4px]', 'pbe-4/foo', 'pbe-[4px]/foo'])).toEqual('')
+})
+
test('pr', async () => {
expect(
await compileCss(
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index e1c84ce00..be6a4ebe7 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -888,6 +888,8 @@ export function createUtilities(theme: Theme) {
['my', 'margin-block'],
['ms', 'margin-inline-start'],
['me', 'margin-inline-end'],
+ ['mbs', 'margin-block-start'],
+ ['mbe', 'margin-block-end'],
['mt', 'margin-top'],
['mr', 'margin-right'],
['mb', 'margin-bottom'],
@@ -1774,6 +1776,8 @@ export function createUtilities(theme: Theme) {
['scroll-my', 'scroll-margin-block'],
['scroll-ms', 'scroll-margin-inline-start'],
['scroll-me', 'scroll-margin-inline-end'],
+ ['scroll-mbs', 'scroll-margin-block-start'],
+ ['scroll-mbe', 'scroll-margin-block-end'],
['scroll-mt', 'scroll-margin-top'],
['scroll-mr', 'scroll-margin-right'],
['scroll-mb', 'scroll-margin-bottom'],
@@ -1798,6 +1802,8 @@ export function createUtilities(theme: Theme) {
['scroll-py', 'scroll-padding-block'],
['scroll-ps', 'scroll-padding-inline-start'],
['scroll-pe', 'scroll-padding-inline-end'],
+ ['scroll-pbs', 'scroll-padding-block-start'],
+ ['scroll-pbe', 'scroll-padding-block-end'],
['scroll-pt', 'scroll-padding-top'],
['scroll-pr', 'scroll-padding-right'],
['scroll-pb', 'scroll-padding-bottom'],
@@ -2344,6 +2350,22 @@ export function createUtilities(theme: Theme) {
color: (value) => [decl('border-inline-end-color', value)],
})
+ borderSideUtility('border-bs', {
+ width: (value) => [
+ decl('border-block-start-style', 'var(--tw-border-style)'),
+ decl('border-block-start-width', value),
+ ],
+ color: (value) => [decl('border-block-start-color', value)],
+ })
+
+ borderSideUtility('border-be', {
+ width: (value) => [
+ decl('border-block-end-style', 'var(--tw-border-style)'),
+ decl('border-block-end-width', value),
+ ],
+ color: (value) => [decl('border-block-end-color', value)],
+ })
+
borderSideUtility('border-t', {
width: (value) => [
decl('border-top-style', 'var(--tw-border-style)'),
@@ -3706,6 +3728,8 @@ export function createUtilities(theme: Theme) {
['py', 'padding-block'],
['ps', 'padding-inline-start'],
['pe', 'padding-inline-end'],
+ ['pbs', 'padding-block-start'],
+ ['pbe', 'padding-block-end'],
['pt', 'padding-top'],
['pr', 'padding-right'],
['pb', 'padding-bottom'],
From 3d1e654c022362f75643a00f9b6407e4822f5202 Mon Sep 17 00:00:00 2001
From: Adam Wathan
Date: Fri, 30 Jan 2026 14:46:37 +0100
Subject: [PATCH 108/353] Add logical sizing utilities (inline-size,
block-size) (#19612)
## Summary
Adds new utilities for CSS logical properties that provide
writing-direction-aware alternatives to width and height:
- `inline-*` for `inline-size` (logical equivalent of width)
- `min-inline-*` for `min-inline-size` (logical equivalent of min-width)
- `max-inline-*` for `max-inline-size` (logical equivalent of max-width)
- `block-*` for `block-size` (logical equivalent of height)
- `min-block-*` for `min-block-size` (logical equivalent of min-height)
- `max-block-*` for `max-block-size` (logical equivalent of max-height)
## New Utilities
### inline-size utilities
| Class | CSS Property |
|-------|-------------|
| `inline-auto` | `inline-size: auto` |
| `inline-full` | `inline-size: 100%` |
| `inline-min` | `inline-size: min-content` |
| `inline-max` | `inline-size: max-content` |
| `inline-fit` | `inline-size: fit-content` |
| `inline-screen` | `inline-size: 100vw` |
| `inline-svw` | `inline-size: 100svw` |
| `inline-lvw` | `inline-size: 100lvw` |
| `inline-dvw` | `inline-size: 100dvw` |
| `inline-{spacing}` | `inline-size: {value}` (e.g., `inline-4`,
`inline-px`) |
| `inline-{fraction}` | `inline-size: {percent}` (e.g., `inline-1/2`,
`inline-3/4`) |
| `inline-[{value}]` | `inline-size: {value}` (arbitrary values) |
### min-inline-size utilities
| Class | CSS Property |
|-------|-------------|
| `min-inline-auto` | `min-inline-size: auto` |
| `min-inline-full` | `min-inline-size: 100%` |
| `min-inline-min` | `min-inline-size: min-content` |
| `min-inline-max` | `min-inline-size: max-content` |
| `min-inline-fit` | `min-inline-size: fit-content` |
| `min-inline-screen` | `min-inline-size: 100vw` |
| `min-inline-svw` | `min-inline-size: 100svw` |
| `min-inline-lvw` | `min-inline-size: 100lvw` |
| `min-inline-dvw` | `min-inline-size: 100dvw` |
| `min-inline-{spacing}` | `min-inline-size: {value}` |
| `min-inline-[{value}]` | `min-inline-size: {value}` (arbitrary values)
|
### max-inline-size utilities
| Class | CSS Property |
|-------|-------------|
| `max-inline-none` | `max-inline-size: none` |
| `max-inline-full` | `max-inline-size: 100%` |
| `max-inline-min` | `max-inline-size: min-content` |
| `max-inline-max` | `max-inline-size: max-content` |
| `max-inline-fit` | `max-inline-size: fit-content` |
| `max-inline-screen` | `max-inline-size: 100vw` |
| `max-inline-svw` | `max-inline-size: 100svw` |
| `max-inline-lvw` | `max-inline-size: 100lvw` |
| `max-inline-dvw` | `max-inline-size: 100dvw` |
| `max-inline-{spacing}` | `max-inline-size: {value}` |
| `max-inline-[{value}]` | `max-inline-size: {value}` (arbitrary values)
|
### block-size utilities
| Class | CSS Property |
|-------|-------------|
| `block-auto` | `block-size: auto` |
| `block-full` | `block-size: 100%` |
| `block-min` | `block-size: min-content` |
| `block-max` | `block-size: max-content` |
| `block-fit` | `block-size: fit-content` |
| `block-screen` | `block-size: 100vh` |
| `block-lh` | `block-size: 1lh` |
| `block-svh` | `block-size: 100svh` |
| `block-lvh` | `block-size: 100lvh` |
| `block-dvh` | `block-size: 100dvh` |
| `block-{spacing}` | `block-size: {value}` (e.g., `block-4`,
`block-px`) |
| `block-{fraction}` | `block-size: {percent}` (e.g., `block-1/2`,
`block-3/4`) |
| `block-[{value}]` | `block-size: {value}` (arbitrary values) |
### min-block-size utilities
| Class | CSS Property |
|-------|-------------|
| `min-block-auto` | `min-block-size: auto` |
| `min-block-full` | `min-block-size: 100%` |
| `min-block-min` | `min-block-size: min-content` |
| `min-block-max` | `min-block-size: max-content` |
| `min-block-fit` | `min-block-size: fit-content` |
| `min-block-screen` | `min-block-size: 100vh` |
| `min-block-lh` | `min-block-size: 1lh` |
| `min-block-svh` | `min-block-size: 100svh` |
| `min-block-lvh` | `min-block-size: 100lvh` |
| `min-block-dvh` | `min-block-size: 100dvh` |
| `min-block-{spacing}` | `min-block-size: {value}` |
| `min-block-[{value}]` | `min-block-size: {value}` (arbitrary values) |
### max-block-size utilities
| Class | CSS Property |
|-------|-------------|
| `max-block-none` | `max-block-size: none` |
| `max-block-full` | `max-block-size: 100%` |
| `max-block-min` | `max-block-size: min-content` |
| `max-block-max` | `max-block-size: max-content` |
| `max-block-fit` | `max-block-size: fit-content` |
| `max-block-screen` | `max-block-size: 100vh` |
| `max-block-lh` | `max-block-size: 1lh` |
| `max-block-svh` | `max-block-size: 100svh` |
| `max-block-lvh` | `max-block-size: 100lvh` |
| `max-block-dvh` | `max-block-size: 100dvh` |
| `max-block-{spacing}` | `max-block-size: {value}` |
| `max-block-[{value}]` | `max-block-size: {value}` (arbitrary values) |
## Test plan
- [x] Added comprehensive unit tests for all new utilities
- [ ] Verify utilities work correctly in RTL layouts
- [ ] Test with vertical writing modes
---------
Co-authored-by: Claude
Co-authored-by: Robin Malfait
---
CHANGELOG.md | 1 +
.../__snapshots__/intellisense.test.ts.snap | 429 ++++++++++++++
packages/tailwindcss/src/utilities.test.ts | 555 ++++++++++++++++++
packages/tailwindcss/src/utilities.ts | 76 +++
4 files changed, 1061 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cc4d2a301..607302b30 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add `pbs-*`, `pbe-*`, `mbs-*`, `mbe-*`, `scroll-pbs-*`, `scroll-pbe-*`, `scroll-mbs-*`, `scroll-mbe-*`, `border-bs-*`, `border-be-*` utilities for `padding-block-start`, `padding-block-end`, `margin-block-start`, `margin-block-end`, `scroll-padding-block-start`, `scroll-padding-block-end`, `scroll-margin-block-start`, `scroll-margin-block-end`, `border-block-start`, and `border-block-end` ([`#19601`](https://github.com/tailwindlabs/tailwindcss/pull/19601))
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
- Add `@tailwindcss/webpack` loader for Tailwind CSS v4 ([#19610](https://github.com/tailwindlabs/tailwindcss/pull/19610))
+- Add `inline-*`, `min-inline-*`, `max-inline-*`, `block-*`, `min-block-*`, `max-block-*` utilities for `inline-size`, `min-inline-size`, `max-inline-size`, `block-size`, `min-block-size`, and `max-block-size` ([#19612](https://github.com/tailwindlabs/tailwindcss/pull/19612))
## [4.1.18] - 2025-12-11
diff --git a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
index 759d91443..87d882840 100644
--- a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
+++ b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
@@ -2714,6 +2714,77 @@ exports[`getClassList 1`] = `
"bg-transparent/95",
"bg-transparent/100",
"block",
+ "block-0",
+ "block-0.5",
+ "block-1",
+ "block-1.5",
+ "block-2",
+ "block-2.5",
+ "block-3",
+ "block-3.5",
+ "block-4",
+ "block-5",
+ "block-6",
+ "block-7",
+ "block-8",
+ "block-9",
+ "block-10",
+ "block-11",
+ "block-12",
+ "block-14",
+ "block-16",
+ "block-20",
+ "block-24",
+ "block-28",
+ "block-32",
+ "block-36",
+ "block-40",
+ "block-44",
+ "block-48",
+ "block-52",
+ "block-56",
+ "block-60",
+ "block-64",
+ "block-72",
+ "block-80",
+ "block-96",
+ "block-1/2",
+ "block-1/3",
+ "block-1/4",
+ "block-1/5",
+ "block-1/6",
+ "block-1/12",
+ "block-2/3",
+ "block-2/4",
+ "block-2/5",
+ "block-2/6",
+ "block-2/12",
+ "block-3/4",
+ "block-3/5",
+ "block-3/6",
+ "block-3/12",
+ "block-4/5",
+ "block-4/6",
+ "block-4/12",
+ "block-5/6",
+ "block-5/12",
+ "block-6/12",
+ "block-7/12",
+ "block-8/12",
+ "block-9/12",
+ "block-10/12",
+ "block-11/12",
+ "block-auto",
+ "block-dvh",
+ "block-fit",
+ "block-full",
+ "block-lh",
+ "block-lvh",
+ "block-max",
+ "block-min",
+ "block-px",
+ "block-screen",
+ "block-svh",
"blur-none",
"border",
"border/0",
@@ -4952,9 +5023,81 @@ exports[`getClassList 1`] = `
"indent-96",
"indent-px",
"inline",
+ "inline-0",
+ "inline-0.5",
+ "inline-1",
+ "inline-1.5",
+ "inline-2",
+ "inline-2.5",
+ "inline-3",
+ "inline-3.5",
+ "inline-4",
+ "inline-5",
+ "inline-6",
+ "inline-7",
+ "inline-8",
+ "inline-9",
+ "inline-10",
+ "inline-11",
+ "inline-12",
+ "inline-14",
+ "inline-16",
+ "inline-20",
+ "inline-24",
+ "inline-28",
+ "inline-32",
+ "inline-36",
+ "inline-40",
+ "inline-44",
+ "inline-48",
+ "inline-52",
+ "inline-56",
+ "inline-60",
+ "inline-64",
+ "inline-72",
+ "inline-80",
+ "inline-96",
+ "inline-auto",
"inline-block",
+ "inline-dvw",
+ "inline-fit",
"inline-flex",
+ "inline-full",
"inline-grid",
+ "inline-lg",
+ "inline-lvw",
+ "inline-max",
+ "inline-md",
+ "inline-1/2",
+ "inline-1/3",
+ "inline-1/4",
+ "inline-1/5",
+ "inline-1/6",
+ "inline-1/12",
+ "inline-2/3",
+ "inline-2/4",
+ "inline-2/5",
+ "inline-2/6",
+ "inline-2/12",
+ "inline-3/4",
+ "inline-3/5",
+ "inline-3/6",
+ "inline-3/12",
+ "inline-4/5",
+ "inline-4/6",
+ "inline-4/12",
+ "inline-5/6",
+ "inline-5/12",
+ "inline-6/12",
+ "inline-7/12",
+ "inline-8/12",
+ "inline-9/12",
+ "inline-10/12",
+ "inline-11/12",
+ "inline-min",
+ "inline-px",
+ "inline-screen",
+ "inline-svw",
"inline-table",
"inset-0",
"inset-0.5",
@@ -7754,6 +7897,77 @@ exports[`getClassList 1`] = `
"mask-y-to-transparent/90",
"mask-y-to-transparent/95",
"mask-y-to-transparent/100",
+ "max-block-0",
+ "max-block-0.5",
+ "max-block-1",
+ "max-block-1.5",
+ "max-block-2",
+ "max-block-2.5",
+ "max-block-3",
+ "max-block-3.5",
+ "max-block-4",
+ "max-block-5",
+ "max-block-6",
+ "max-block-7",
+ "max-block-8",
+ "max-block-9",
+ "max-block-10",
+ "max-block-11",
+ "max-block-12",
+ "max-block-14",
+ "max-block-16",
+ "max-block-20",
+ "max-block-24",
+ "max-block-28",
+ "max-block-32",
+ "max-block-36",
+ "max-block-40",
+ "max-block-44",
+ "max-block-48",
+ "max-block-52",
+ "max-block-56",
+ "max-block-60",
+ "max-block-64",
+ "max-block-72",
+ "max-block-80",
+ "max-block-96",
+ "max-block-1/2",
+ "max-block-1/3",
+ "max-block-1/4",
+ "max-block-1/5",
+ "max-block-1/6",
+ "max-block-1/12",
+ "max-block-2/3",
+ "max-block-2/4",
+ "max-block-2/5",
+ "max-block-2/6",
+ "max-block-2/12",
+ "max-block-3/4",
+ "max-block-3/5",
+ "max-block-3/6",
+ "max-block-3/12",
+ "max-block-4/5",
+ "max-block-4/6",
+ "max-block-4/12",
+ "max-block-5/6",
+ "max-block-5/12",
+ "max-block-6/12",
+ "max-block-7/12",
+ "max-block-8/12",
+ "max-block-9/12",
+ "max-block-10/12",
+ "max-block-11/12",
+ "max-block-dvh",
+ "max-block-fit",
+ "max-block-full",
+ "max-block-lh",
+ "max-block-lvh",
+ "max-block-max",
+ "max-block-min",
+ "max-block-none",
+ "max-block-px",
+ "max-block-screen",
+ "max-block-svh",
"max-h-0",
"max-h-0.5",
"max-h-1",
@@ -7828,6 +8042,78 @@ exports[`getClassList 1`] = `
"max-h-screen",
"max-h-svh",
"max-h-svw",
+ "max-inline-0",
+ "max-inline-0.5",
+ "max-inline-1",
+ "max-inline-1.5",
+ "max-inline-2",
+ "max-inline-2.5",
+ "max-inline-3",
+ "max-inline-3.5",
+ "max-inline-4",
+ "max-inline-5",
+ "max-inline-6",
+ "max-inline-7",
+ "max-inline-8",
+ "max-inline-9",
+ "max-inline-10",
+ "max-inline-11",
+ "max-inline-12",
+ "max-inline-14",
+ "max-inline-16",
+ "max-inline-20",
+ "max-inline-24",
+ "max-inline-28",
+ "max-inline-32",
+ "max-inline-36",
+ "max-inline-40",
+ "max-inline-44",
+ "max-inline-48",
+ "max-inline-52",
+ "max-inline-56",
+ "max-inline-60",
+ "max-inline-64",
+ "max-inline-72",
+ "max-inline-80",
+ "max-inline-96",
+ "max-inline-dvw",
+ "max-inline-fit",
+ "max-inline-full",
+ "max-inline-lg",
+ "max-inline-lvw",
+ "max-inline-max",
+ "max-inline-md",
+ "max-inline-1/2",
+ "max-inline-1/3",
+ "max-inline-1/4",
+ "max-inline-1/5",
+ "max-inline-1/6",
+ "max-inline-1/12",
+ "max-inline-2/3",
+ "max-inline-2/4",
+ "max-inline-2/5",
+ "max-inline-2/6",
+ "max-inline-2/12",
+ "max-inline-3/4",
+ "max-inline-3/5",
+ "max-inline-3/6",
+ "max-inline-3/12",
+ "max-inline-4/5",
+ "max-inline-4/6",
+ "max-inline-4/12",
+ "max-inline-5/6",
+ "max-inline-5/12",
+ "max-inline-6/12",
+ "max-inline-7/12",
+ "max-inline-8/12",
+ "max-inline-9/12",
+ "max-inline-10/12",
+ "max-inline-11/12",
+ "max-inline-min",
+ "max-inline-none",
+ "max-inline-px",
+ "max-inline-screen",
+ "max-inline-svw",
"max-w-0",
"max-w-0.5",
"max-w-1",
@@ -8046,6 +8332,77 @@ exports[`getClassList 1`] = `
"me-96",
"me-auto",
"me-px",
+ "min-block-0",
+ "min-block-0.5",
+ "min-block-1",
+ "min-block-1.5",
+ "min-block-2",
+ "min-block-2.5",
+ "min-block-3",
+ "min-block-3.5",
+ "min-block-4",
+ "min-block-5",
+ "min-block-6",
+ "min-block-7",
+ "min-block-8",
+ "min-block-9",
+ "min-block-10",
+ "min-block-11",
+ "min-block-12",
+ "min-block-14",
+ "min-block-16",
+ "min-block-20",
+ "min-block-24",
+ "min-block-28",
+ "min-block-32",
+ "min-block-36",
+ "min-block-40",
+ "min-block-44",
+ "min-block-48",
+ "min-block-52",
+ "min-block-56",
+ "min-block-60",
+ "min-block-64",
+ "min-block-72",
+ "min-block-80",
+ "min-block-96",
+ "min-block-1/2",
+ "min-block-1/3",
+ "min-block-1/4",
+ "min-block-1/5",
+ "min-block-1/6",
+ "min-block-1/12",
+ "min-block-2/3",
+ "min-block-2/4",
+ "min-block-2/5",
+ "min-block-2/6",
+ "min-block-2/12",
+ "min-block-3/4",
+ "min-block-3/5",
+ "min-block-3/6",
+ "min-block-3/12",
+ "min-block-4/5",
+ "min-block-4/6",
+ "min-block-4/12",
+ "min-block-5/6",
+ "min-block-5/12",
+ "min-block-6/12",
+ "min-block-7/12",
+ "min-block-8/12",
+ "min-block-9/12",
+ "min-block-10/12",
+ "min-block-11/12",
+ "min-block-auto",
+ "min-block-dvh",
+ "min-block-fit",
+ "min-block-full",
+ "min-block-lh",
+ "min-block-lvh",
+ "min-block-max",
+ "min-block-min",
+ "min-block-px",
+ "min-block-screen",
+ "min-block-svh",
"min-h-0",
"min-h-0.5",
"min-h-1",
@@ -8120,6 +8477,78 @@ exports[`getClassList 1`] = `
"min-h-screen",
"min-h-svh",
"min-h-svw",
+ "min-inline-0",
+ "min-inline-0.5",
+ "min-inline-1",
+ "min-inline-1.5",
+ "min-inline-2",
+ "min-inline-2.5",
+ "min-inline-3",
+ "min-inline-3.5",
+ "min-inline-4",
+ "min-inline-5",
+ "min-inline-6",
+ "min-inline-7",
+ "min-inline-8",
+ "min-inline-9",
+ "min-inline-10",
+ "min-inline-11",
+ "min-inline-12",
+ "min-inline-14",
+ "min-inline-16",
+ "min-inline-20",
+ "min-inline-24",
+ "min-inline-28",
+ "min-inline-32",
+ "min-inline-36",
+ "min-inline-40",
+ "min-inline-44",
+ "min-inline-48",
+ "min-inline-52",
+ "min-inline-56",
+ "min-inline-60",
+ "min-inline-64",
+ "min-inline-72",
+ "min-inline-80",
+ "min-inline-96",
+ "min-inline-auto",
+ "min-inline-dvw",
+ "min-inline-fit",
+ "min-inline-full",
+ "min-inline-lg",
+ "min-inline-lvw",
+ "min-inline-max",
+ "min-inline-md",
+ "min-inline-1/2",
+ "min-inline-1/3",
+ "min-inline-1/4",
+ "min-inline-1/5",
+ "min-inline-1/6",
+ "min-inline-1/12",
+ "min-inline-2/3",
+ "min-inline-2/4",
+ "min-inline-2/5",
+ "min-inline-2/6",
+ "min-inline-2/12",
+ "min-inline-3/4",
+ "min-inline-3/5",
+ "min-inline-3/6",
+ "min-inline-3/12",
+ "min-inline-4/5",
+ "min-inline-4/6",
+ "min-inline-4/12",
+ "min-inline-5/6",
+ "min-inline-5/12",
+ "min-inline-6/12",
+ "min-inline-7/12",
+ "min-inline-8/12",
+ "min-inline-9/12",
+ "min-inline-10/12",
+ "min-inline-11/12",
+ "min-inline-min",
+ "min-inline-px",
+ "min-inline-screen",
+ "min-inline-svw",
"min-w-0",
"min-w-0.5",
"min-w-1",
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index a5991ebfa..a6c1ce91e 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -3662,6 +3662,561 @@ test('max-height', async () => {
).toEqual('')
})
+test('inline-size', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ --width-xl: 36rem;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'inline-full',
+ 'inline-auto',
+ 'inline-screen',
+ 'inline-svw',
+ 'inline-lvw',
+ 'inline-dvw',
+ 'inline-min',
+ 'inline-max',
+ 'inline-fit',
+ 'inline-4',
+ 'inline-xl',
+ 'inline-1/2',
+ 'inline-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ --width-xl: 36rem;
+ }
+
+ .inline-1\\/2 {
+ inline-size: 50%;
+ }
+
+ .inline-4 {
+ inline-size: var(--spacing-4);
+ }
+
+ .inline-\\[4px\\] {
+ inline-size: 4px;
+ }
+
+ .inline-auto {
+ inline-size: auto;
+ }
+
+ .inline-dvw {
+ inline-size: 100dvw;
+ }
+
+ .inline-fit {
+ inline-size: fit-content;
+ }
+
+ .inline-full {
+ inline-size: 100%;
+ }
+
+ .inline-lvw {
+ inline-size: 100lvw;
+ }
+
+ .inline-max {
+ inline-size: max-content;
+ }
+
+ .inline-min {
+ inline-size: min-content;
+ }
+
+ .inline-screen {
+ inline-size: 100vw;
+ }
+
+ .inline-svw {
+ inline-size: 100svw;
+ }
+
+ .inline-xl {
+ inline-size: var(--width-xl);
+ }"
+ `)
+ expect(
+ await run([
+ 'inline--1',
+ 'inline--1/2',
+ 'inline--1/-2',
+ 'inline-1/-2',
+ '-inline-4',
+ '-inline-1/2',
+ '-inline-[4px]',
+ 'inline-full/foo',
+ 'inline-auto/foo',
+ 'inline-screen/foo',
+ 'inline-svw/foo',
+ 'inline-lvw/foo',
+ 'inline-dvw/foo',
+ 'inline-min/foo',
+ 'inline-max/foo',
+ 'inline-fit/foo',
+ 'inline-4/foo',
+ 'inline-xl/foo',
+ 'inline-1/2/foo',
+ 'inline-[4px]/foo',
+ ]),
+ ).toEqual('')
+})
+
+test('min-inline-size', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ --container-xl: 36rem;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'min-inline-full',
+ 'min-inline-auto',
+ 'min-inline-min',
+ 'min-inline-max',
+ 'min-inline-fit',
+ 'min-inline-4',
+ 'min-inline-xl',
+ 'min-inline-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ --container-xl: 36rem;
+ }
+
+ .min-inline-4 {
+ min-inline-size: var(--spacing-4);
+ }
+
+ .min-inline-\\[4px\\] {
+ min-inline-size: 4px;
+ }
+
+ .min-inline-auto {
+ min-inline-size: auto;
+ }
+
+ .min-inline-fit {
+ min-inline-size: fit-content;
+ }
+
+ .min-inline-full {
+ min-inline-size: 100%;
+ }
+
+ .min-inline-max {
+ min-inline-size: max-content;
+ }
+
+ .min-inline-min {
+ min-inline-size: min-content;
+ }
+
+ .min-inline-xl {
+ min-inline-size: var(--container-xl);
+ }"
+ `)
+ expect(
+ await run([
+ 'min-inline',
+ '-min-inline-4',
+ '-min-inline-[4px]',
+ 'min-inline-auto/foo',
+ 'min-inline-full/foo',
+ 'min-inline-min/foo',
+ 'min-inline-max/foo',
+ 'min-inline-fit/foo',
+ 'min-inline-4/foo',
+ 'min-inline-xl/foo',
+ 'min-inline-[4px]/foo',
+ ]),
+ ).toEqual('')
+})
+
+test('max-inline-size', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ --container-xl: 36rem;
+ }
+ @tailwind utilities;
+ `,
+ ['max-inline-none', 'max-inline-full', 'max-inline-max', 'max-inline-fit', 'max-inline-4', 'max-inline-xl', 'max-inline-[4px]'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ --container-xl: 36rem;
+ }
+
+ .max-inline-4 {
+ max-inline-size: var(--spacing-4);
+ }
+
+ .max-inline-\\[4px\\] {
+ max-inline-size: 4px;
+ }
+
+ .max-inline-fit {
+ max-inline-size: fit-content;
+ }
+
+ .max-inline-full {
+ max-inline-size: 100%;
+ }
+
+ .max-inline-max {
+ max-inline-size: max-content;
+ }
+
+ .max-inline-none {
+ max-inline-size: none;
+ }
+
+ .max-inline-xl {
+ max-inline-size: var(--container-xl);
+ }"
+ `)
+ expect(
+ await run([
+ 'max-inline',
+ 'max-inline-auto',
+ '-max-inline-4',
+ '-max-inline-[4px]',
+ 'max-inline-none/foo',
+ 'max-inline-full/foo',
+ 'max-inline-max/foo',
+ 'max-inline-max/foo',
+ 'max-inline-fit/foo',
+ 'max-inline-4/foo',
+ 'max-inline-xl/foo',
+ 'max-inline-[4px]/foo',
+ ]),
+ ).toEqual('')
+})
+
+test('block-size', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'block-full',
+ 'block-auto',
+ 'block-screen',
+ 'block-svh',
+ 'block-lvh',
+ 'block-dvh',
+ 'block-min',
+ 'block-lh',
+ 'block-max',
+ 'block-fit',
+ 'block-4',
+ 'block-1/2',
+ 'block-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ }
+
+ .block-1\\/2 {
+ block-size: 50%;
+ }
+
+ .block-4 {
+ block-size: var(--spacing-4);
+ }
+
+ .block-\\[4px\\] {
+ block-size: 4px;
+ }
+
+ .block-auto {
+ block-size: auto;
+ }
+
+ .block-dvh {
+ block-size: 100dvh;
+ }
+
+ .block-fit {
+ block-size: fit-content;
+ }
+
+ .block-full {
+ block-size: 100%;
+ }
+
+ .block-lh {
+ block-size: 1lh;
+ }
+
+ .block-lvh {
+ block-size: 100lvh;
+ }
+
+ .block-max {
+ block-size: max-content;
+ }
+
+ .block-min {
+ block-size: min-content;
+ }
+
+ .block-screen {
+ block-size: 100vh;
+ }
+
+ .block-svh {
+ block-size: 100svh;
+ }"
+ `)
+ expect(
+ await run([
+ '-block-4',
+ 'block--1',
+ 'block--1/2',
+ 'block--1/-2',
+ 'block-1/-2',
+ '-block-1/2',
+ '-block-[4px]',
+ 'block-full/foo',
+ 'block-auto/foo',
+ 'block-screen/foo',
+ 'block-svh/foo',
+ 'block-lvh/foo',
+ 'block-dvh/foo',
+ 'block-lh/foo',
+ 'block-min/foo',
+ 'block-max/foo',
+ 'block-fit/foo',
+ 'block-4/foo',
+ 'block-1/2/foo',
+ 'block-[4px]/foo',
+ ]),
+ ).toEqual('')
+})
+
+test('min-block-size', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'min-block-full',
+ 'min-block-auto',
+ 'min-block-screen',
+ 'min-block-svh',
+ 'min-block-lvh',
+ 'min-block-dvh',
+ 'min-block-min',
+ 'min-block-lh',
+ 'min-block-max',
+ 'min-block-fit',
+ 'min-block-4',
+ 'min-block-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ }
+
+ .min-block-4 {
+ min-block-size: var(--spacing-4);
+ }
+
+ .min-block-\\[4px\\] {
+ min-block-size: 4px;
+ }
+
+ .min-block-auto {
+ min-block-size: auto;
+ }
+
+ .min-block-dvh {
+ min-block-size: 100dvh;
+ }
+
+ .min-block-fit {
+ min-block-size: fit-content;
+ }
+
+ .min-block-full {
+ min-block-size: 100%;
+ }
+
+ .min-block-lh {
+ min-block-size: 1lh;
+ }
+
+ .min-block-lvh {
+ min-block-size: 100lvh;
+ }
+
+ .min-block-max {
+ min-block-size: max-content;
+ }
+
+ .min-block-min {
+ min-block-size: min-content;
+ }
+
+ .min-block-screen {
+ min-block-size: 100vh;
+ }
+
+ .min-block-svh {
+ min-block-size: 100svh;
+ }"
+ `)
+ expect(
+ await run([
+ 'min-block',
+ '-min-block-4',
+ '-min-block-[4px]',
+ 'min-block-auto/foo',
+ 'min-block-full/foo',
+ 'min-block-screen/foo',
+ 'min-block-svh/foo',
+ 'min-block-lvh/foo',
+ 'min-block-dvh/foo',
+ 'min-block-lh/foo',
+ 'min-block-min/foo',
+ 'min-block-max/foo',
+ 'min-block-fit/foo',
+ 'min-block-4/foo',
+ 'min-block-[4px]/foo',
+ ]),
+ ).toEqual('')
+})
+
+test('max-block-size', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'max-block-none',
+ 'max-block-full',
+ 'max-block-screen',
+ 'max-block-svh',
+ 'max-block-lvh',
+ 'max-block-dvh',
+ 'max-block-lh',
+ 'max-block-min',
+ 'max-block-max',
+ 'max-block-fit',
+ 'max-block-4',
+ 'max-block-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ }
+
+ .max-block-4 {
+ max-block-size: var(--spacing-4);
+ }
+
+ .max-block-\\[4px\\] {
+ max-block-size: 4px;
+ }
+
+ .max-block-dvh {
+ max-block-size: 100dvh;
+ }
+
+ .max-block-fit {
+ max-block-size: fit-content;
+ }
+
+ .max-block-full {
+ max-block-size: 100%;
+ }
+
+ .max-block-lh {
+ max-block-size: 1lh;
+ }
+
+ .max-block-lvh {
+ max-block-size: 100lvh;
+ }
+
+ .max-block-max {
+ max-block-size: max-content;
+ }
+
+ .max-block-min {
+ max-block-size: min-content;
+ }
+
+ .max-block-none {
+ max-block-size: none;
+ }
+
+ .max-block-screen {
+ max-block-size: 100vh;
+ }
+
+ .max-block-svh {
+ max-block-size: 100svh;
+ }"
+ `)
+ expect(
+ await run([
+ 'max-block',
+ 'max-block-auto',
+ '-max-block-4',
+ '-max-block-[4px]',
+ 'max-block-none/foo',
+ 'max-block-full/foo',
+ 'max-block-screen/foo',
+ 'max-block-svh/foo',
+ 'max-block-lvh/foo',
+ 'max-block-dvh/foo',
+ 'max-block-lh/foo',
+ 'max-block-min/foo',
+ 'max-block-max/foo',
+ 'max-block-fit/foo',
+ 'max-block-4/foo',
+ 'max-block-[4px]/foo',
+ ]),
+ ).toEqual('')
+})
+
describe('container', () => {
test('creates the right media queries and sorts it before width', async () => {
expect(
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index be6a4ebe7..0661a9109 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -1069,6 +1069,82 @@ export function createUtilities(theme: Theme) {
})
}
+ /**
+ * @css `inline-size`
+ * @css `min-inline-size`
+ * @css `max-inline-size`
+ * @css `block-size`
+ * @css `min-block-size`
+ * @css `max-block-size`
+ */
+ for (let [key, value] of [
+ ['full', '100%'],
+ ['min', 'min-content'],
+ ['max', 'max-content'],
+ ['fit', 'fit-content'],
+ ]) {
+ staticUtility(`inline-${key}`, [['inline-size', value]])
+ staticUtility(`block-${key}`, [['block-size', value]])
+ staticUtility(`min-inline-${key}`, [['min-inline-size', value]])
+ staticUtility(`min-block-${key}`, [['min-block-size', value]])
+ staticUtility(`max-inline-${key}`, [['max-inline-size', value]])
+ staticUtility(`max-block-${key}`, [['max-block-size', value]])
+ }
+
+ // inline-size viewport units (like width)
+ for (let [key, value] of [
+ ['svw', '100svw'],
+ ['lvw', '100lvw'],
+ ['dvw', '100dvw'],
+ ]) {
+ staticUtility(`inline-${key}`, [['inline-size', value]])
+ staticUtility(`min-inline-${key}`, [['min-inline-size', value]])
+ staticUtility(`max-inline-${key}`, [['max-inline-size', value]])
+ }
+
+ // block-size viewport units (like height)
+ for (let [key, value] of [
+ ['svh', '100svh'],
+ ['lvh', '100lvh'],
+ ['dvh', '100dvh'],
+ ]) {
+ staticUtility(`block-${key}`, [['block-size', value]])
+ staticUtility(`min-block-${key}`, [['min-block-size', value]])
+ staticUtility(`max-block-${key}`, [['max-block-size', value]])
+ }
+
+ staticUtility(`inline-auto`, [['inline-size', 'auto']])
+ staticUtility(`block-auto`, [['block-size', 'auto']])
+ staticUtility(`min-inline-auto`, [['min-inline-size', 'auto']])
+ staticUtility(`min-block-auto`, [['min-block-size', 'auto']])
+
+ staticUtility(`block-lh`, [['block-size', '1lh']])
+ staticUtility(`min-block-lh`, [['min-block-size', '1lh']])
+ staticUtility(`max-block-lh`, [['max-block-size', '1lh']])
+
+ staticUtility(`inline-screen`, [['inline-size', '100vw']])
+ staticUtility(`min-inline-screen`, [['min-inline-size', '100vw']])
+ staticUtility(`max-inline-screen`, [['max-inline-size', '100vw']])
+ staticUtility(`block-screen`, [['block-size', '100vh']])
+ staticUtility(`min-block-screen`, [['min-block-size', '100vh']])
+ staticUtility(`max-block-screen`, [['max-block-size', '100vh']])
+
+ staticUtility(`max-inline-none`, [['max-inline-size', 'none']])
+ staticUtility(`max-block-none`, [['max-block-size', 'none']])
+
+ for (let [name, namespaces, property] of [
+ ['inline', ['--width', '--spacing', '--container'], 'inline-size'],
+ ['min-inline', ['--min-width', '--spacing', '--container'], 'min-inline-size'],
+ ['max-inline', ['--max-width', '--spacing', '--container'], 'max-inline-size'],
+ ['block', ['--height', '--spacing'], 'block-size'],
+ ['min-block', ['--min-height', '--height', '--spacing'], 'min-block-size'],
+ ['max-block', ['--max-height', '--height', '--spacing'], 'max-block-size'],
+ ] as [string, ThemeKey[], string][]) {
+ spacingUtility(name, namespaces, (value) => [decl(property, value)], {
+ supportsFractions: true,
+ })
+ }
+
utilities.static('container', () => {
let breakpoints = [...theme.namespace('--breakpoint').values()]
breakpoints.sort((a, z) => compareBreakpoints(a, z, 'asc'))
From 5395c7e7646ac09d9accf5517a0d07e13792dcbf Mon Sep 17 00:00:00 2001
From: Adam Wathan
Date: Fri, 30 Jan 2026 15:13:56 +0100
Subject: [PATCH 109/353] Add logical inset utilities (inset-s, inset-e,
inset-bs, inset-be) (#19613)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
This PR adds support for logical inset utilities that map to CSS logical
properties:
- `inset-s` → `inset-inline-start`
- `inset-e` → `inset-inline-end`
- `inset-bs` → `inset-block-start`
- `inset-be` → `inset-block-end`
These utilities complement the existing `inset-x` (inline) and `inset-y`
(block) utilities, providing more granular control over positioning in a
direction-aware manner. This aligns with CSS logical properties and
improves support for internationalization (RTL/LTR languages).
### Changes
1. **property-order.ts**: Added `inset-block-start` and
`inset-block-end` to the property ordering list to ensure consistent
cascade ordering
2. **utilities.ts**: Added four new utility mappings for the logical
inset properties
3. **utilities.test.ts**: Added comprehensive test coverage for all four
new utilities, including:
- Valid class generation with various value types (custom spacing,
percentages, arbitrary values)
- Negative value support
- Invalid class rejection (malformed syntax, invalid modifiers)
## Test plan
All changes are covered by unit tests in `utilities.test.ts`:
- `inset-s` test: 8 valid classes + 13 invalid class assertions
- `inset-e` test: 8 valid classes + 13 invalid class assertions
- `inset-bs` test: 8 valid classes + 13 invalid class assertions
- `inset-be` test: 8 valid classes + 13 invalid class assertions
Each test verifies correct CSS output generation and proper rejection of
malformed utilities.
https://claude.ai/code/session_01JcYXVAMawRuntKatjku1WZ
---------
Co-authored-by: Claude
Co-authored-by: Robin Malfait
---
CHANGELOG.md | 7 +-
.../__snapshots__/intellisense.test.ts.snap | 740 ++++++++++++------
.../src/compat/legacy-utilities.test.ts | 174 ++++
.../src/compat/legacy-utilities.ts | 67 +-
packages/tailwindcss/src/property-order.ts | 2 +
packages/tailwindcss/src/utilities.test.ts | 304 +++++--
packages/tailwindcss/src/utilities.ts | 6 +-
7 files changed, 995 insertions(+), 305 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 607302b30..93f0446eb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,10 +18,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
-- Add `pbs-*`, `pbe-*`, `mbs-*`, `mbe-*`, `scroll-pbs-*`, `scroll-pbe-*`, `scroll-mbs-*`, `scroll-mbe-*`, `border-bs-*`, `border-be-*` utilities for `padding-block-start`, `padding-block-end`, `margin-block-start`, `margin-block-end`, `scroll-padding-block-start`, `scroll-padding-block-end`, `scroll-margin-block-start`, `scroll-margin-block-end`, `border-block-start`, and `border-block-end` ([`#19601`](https://github.com/tailwindlabs/tailwindcss/pull/19601))
- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
- Add `@tailwindcss/webpack` loader for Tailwind CSS v4 ([#19610](https://github.com/tailwindlabs/tailwindcss/pull/19610))
+- Add `pbs-*`, `pbe-*`, `mbs-*`, `mbe-*`, `scroll-pbs-*`, `scroll-pbe-*`, `scroll-mbs-*`, `scroll-mbe-*`, `border-bs-*`, `border-be-*` utilities for `padding-block-start`, `padding-block-end`, `margin-block-start`, `margin-block-end`, `scroll-padding-block-start`, `scroll-padding-block-end`, `scroll-margin-block-start`, `scroll-margin-block-end`, `border-block-start`, and `border-block-end` ([`#19601`](https://github.com/tailwindlabs/tailwindcss/pull/19601))
- Add `inline-*`, `min-inline-*`, `max-inline-*`, `block-*`, `min-block-*`, `max-block-*` utilities for `inline-size`, `min-inline-size`, `max-inline-size`, `block-size`, `min-block-size`, and `max-block-size` ([#19612](https://github.com/tailwindlabs/tailwindcss/pull/19612))
+- Add `inset-s-*`, `inset-e-*`, `inset-bs-*`, `inset-be-*` utilities for `inset-inline-start`, `inset-inline-end`, `inset-block-start`, and `inset-block-end` ([#19613](https://github.com/tailwindlabs/tailwindcss/pull/19613))
+
+### Deprecated
+
+- Deprecate `start-*` and `end-*` utilities in favor of `inline-s-*` and `inline-e-*` ([#19613](https://github.com/tailwindlabs/tailwindcss/pull/19613))
## [4.1.18] - 2025-12-11
diff --git a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
index 87d882840..3bf790540 100644
--- a/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
+++ b/packages/tailwindcss/src/__snapshots__/intellisense.test.ts.snap
@@ -306,66 +306,6 @@ exports[`getClassList 1`] = `
"-col-start-11",
"-col-start-12",
"-col-start-13",
- "-end-0",
- "-end-0.5",
- "-end-1",
- "-end-1.5",
- "-end-2",
- "-end-2.5",
- "-end-3",
- "-end-3.5",
- "-end-4",
- "-end-5",
- "-end-6",
- "-end-7",
- "-end-8",
- "-end-9",
- "-end-10",
- "-end-11",
- "-end-12",
- "-end-14",
- "-end-16",
- "-end-20",
- "-end-24",
- "-end-28",
- "-end-32",
- "-end-36",
- "-end-40",
- "-end-44",
- "-end-48",
- "-end-52",
- "-end-56",
- "-end-60",
- "-end-64",
- "-end-72",
- "-end-80",
- "-end-96",
- "-end-1/2",
- "-end-1/3",
- "-end-1/4",
- "-end-1/5",
- "-end-1/6",
- "-end-1/12",
- "-end-2/3",
- "-end-2/4",
- "-end-2/5",
- "-end-2/6",
- "-end-2/12",
- "-end-3/4",
- "-end-3/5",
- "-end-3/6",
- "-end-3/12",
- "-end-4/5",
- "-end-4/6",
- "-end-4/12",
- "-end-5/6",
- "-end-5/12",
- "-end-6/12",
- "-end-7/12",
- "-end-8/12",
- "-end-9/12",
- "-end-10/12",
- "-end-11/12",
"-end-full",
"-end-px",
"-indent-0",
@@ -463,8 +403,256 @@ exports[`getClassList 1`] = `
"-inset-9/12",
"-inset-10/12",
"-inset-11/12",
+ "-inset-be-0",
+ "-inset-be-0.5",
+ "-inset-be-1",
+ "-inset-be-1.5",
+ "-inset-be-2",
+ "-inset-be-2.5",
+ "-inset-be-3",
+ "-inset-be-3.5",
+ "-inset-be-4",
+ "-inset-be-5",
+ "-inset-be-6",
+ "-inset-be-7",
+ "-inset-be-8",
+ "-inset-be-9",
+ "-inset-be-10",
+ "-inset-be-11",
+ "-inset-be-12",
+ "-inset-be-14",
+ "-inset-be-16",
+ "-inset-be-20",
+ "-inset-be-24",
+ "-inset-be-28",
+ "-inset-be-32",
+ "-inset-be-36",
+ "-inset-be-40",
+ "-inset-be-44",
+ "-inset-be-48",
+ "-inset-be-52",
+ "-inset-be-56",
+ "-inset-be-60",
+ "-inset-be-64",
+ "-inset-be-72",
+ "-inset-be-80",
+ "-inset-be-96",
+ "-inset-be-1/2",
+ "-inset-be-1/3",
+ "-inset-be-1/4",
+ "-inset-be-1/5",
+ "-inset-be-1/6",
+ "-inset-be-1/12",
+ "-inset-be-2/3",
+ "-inset-be-2/4",
+ "-inset-be-2/5",
+ "-inset-be-2/6",
+ "-inset-be-2/12",
+ "-inset-be-3/4",
+ "-inset-be-3/5",
+ "-inset-be-3/6",
+ "-inset-be-3/12",
+ "-inset-be-4/5",
+ "-inset-be-4/6",
+ "-inset-be-4/12",
+ "-inset-be-5/6",
+ "-inset-be-5/12",
+ "-inset-be-6/12",
+ "-inset-be-7/12",
+ "-inset-be-8/12",
+ "-inset-be-9/12",
+ "-inset-be-10/12",
+ "-inset-be-11/12",
+ "-inset-be-full",
+ "-inset-be-px",
+ "-inset-bs-0",
+ "-inset-bs-0.5",
+ "-inset-bs-1",
+ "-inset-bs-1.5",
+ "-inset-bs-2",
+ "-inset-bs-2.5",
+ "-inset-bs-3",
+ "-inset-bs-3.5",
+ "-inset-bs-4",
+ "-inset-bs-5",
+ "-inset-bs-6",
+ "-inset-bs-7",
+ "-inset-bs-8",
+ "-inset-bs-9",
+ "-inset-bs-10",
+ "-inset-bs-11",
+ "-inset-bs-12",
+ "-inset-bs-14",
+ "-inset-bs-16",
+ "-inset-bs-20",
+ "-inset-bs-24",
+ "-inset-bs-28",
+ "-inset-bs-32",
+ "-inset-bs-36",
+ "-inset-bs-40",
+ "-inset-bs-44",
+ "-inset-bs-48",
+ "-inset-bs-52",
+ "-inset-bs-56",
+ "-inset-bs-60",
+ "-inset-bs-64",
+ "-inset-bs-72",
+ "-inset-bs-80",
+ "-inset-bs-96",
+ "-inset-bs-1/2",
+ "-inset-bs-1/3",
+ "-inset-bs-1/4",
+ "-inset-bs-1/5",
+ "-inset-bs-1/6",
+ "-inset-bs-1/12",
+ "-inset-bs-2/3",
+ "-inset-bs-2/4",
+ "-inset-bs-2/5",
+ "-inset-bs-2/6",
+ "-inset-bs-2/12",
+ "-inset-bs-3/4",
+ "-inset-bs-3/5",
+ "-inset-bs-3/6",
+ "-inset-bs-3/12",
+ "-inset-bs-4/5",
+ "-inset-bs-4/6",
+ "-inset-bs-4/12",
+ "-inset-bs-5/6",
+ "-inset-bs-5/12",
+ "-inset-bs-6/12",
+ "-inset-bs-7/12",
+ "-inset-bs-8/12",
+ "-inset-bs-9/12",
+ "-inset-bs-10/12",
+ "-inset-bs-11/12",
+ "-inset-bs-full",
+ "-inset-bs-px",
+ "-inset-e-0",
+ "-inset-e-0.5",
+ "-inset-e-1",
+ "-inset-e-1.5",
+ "-inset-e-2",
+ "-inset-e-2.5",
+ "-inset-e-3",
+ "-inset-e-3.5",
+ "-inset-e-4",
+ "-inset-e-5",
+ "-inset-e-6",
+ "-inset-e-7",
+ "-inset-e-8",
+ "-inset-e-9",
+ "-inset-e-10",
+ "-inset-e-11",
+ "-inset-e-12",
+ "-inset-e-14",
+ "-inset-e-16",
+ "-inset-e-20",
+ "-inset-e-24",
+ "-inset-e-28",
+ "-inset-e-32",
+ "-inset-e-36",
+ "-inset-e-40",
+ "-inset-e-44",
+ "-inset-e-48",
+ "-inset-e-52",
+ "-inset-e-56",
+ "-inset-e-60",
+ "-inset-e-64",
+ "-inset-e-72",
+ "-inset-e-80",
+ "-inset-e-96",
+ "-inset-e-1/2",
+ "-inset-e-1/3",
+ "-inset-e-1/4",
+ "-inset-e-1/5",
+ "-inset-e-1/6",
+ "-inset-e-1/12",
+ "-inset-e-2/3",
+ "-inset-e-2/4",
+ "-inset-e-2/5",
+ "-inset-e-2/6",
+ "-inset-e-2/12",
+ "-inset-e-3/4",
+ "-inset-e-3/5",
+ "-inset-e-3/6",
+ "-inset-e-3/12",
+ "-inset-e-4/5",
+ "-inset-e-4/6",
+ "-inset-e-4/12",
+ "-inset-e-5/6",
+ "-inset-e-5/12",
+ "-inset-e-6/12",
+ "-inset-e-7/12",
+ "-inset-e-8/12",
+ "-inset-e-9/12",
+ "-inset-e-10/12",
+ "-inset-e-11/12",
+ "-inset-e-full",
+ "-inset-e-px",
"-inset-full",
"-inset-px",
+ "-inset-s-0",
+ "-inset-s-0.5",
+ "-inset-s-1",
+ "-inset-s-1.5",
+ "-inset-s-2",
+ "-inset-s-2.5",
+ "-inset-s-3",
+ "-inset-s-3.5",
+ "-inset-s-4",
+ "-inset-s-5",
+ "-inset-s-6",
+ "-inset-s-7",
+ "-inset-s-8",
+ "-inset-s-9",
+ "-inset-s-10",
+ "-inset-s-11",
+ "-inset-s-12",
+ "-inset-s-14",
+ "-inset-s-16",
+ "-inset-s-20",
+ "-inset-s-24",
+ "-inset-s-28",
+ "-inset-s-32",
+ "-inset-s-36",
+ "-inset-s-40",
+ "-inset-s-44",
+ "-inset-s-48",
+ "-inset-s-52",
+ "-inset-s-56",
+ "-inset-s-60",
+ "-inset-s-64",
+ "-inset-s-72",
+ "-inset-s-80",
+ "-inset-s-96",
+ "-inset-s-1/2",
+ "-inset-s-1/3",
+ "-inset-s-1/4",
+ "-inset-s-1/5",
+ "-inset-s-1/6",
+ "-inset-s-1/12",
+ "-inset-s-2/3",
+ "-inset-s-2/4",
+ "-inset-s-2/5",
+ "-inset-s-2/6",
+ "-inset-s-2/12",
+ "-inset-s-3/4",
+ "-inset-s-3/5",
+ "-inset-s-3/6",
+ "-inset-s-3/12",
+ "-inset-s-4/5",
+ "-inset-s-4/6",
+ "-inset-s-4/12",
+ "-inset-s-5/6",
+ "-inset-s-5/12",
+ "-inset-s-6/12",
+ "-inset-s-7/12",
+ "-inset-s-8/12",
+ "-inset-s-9/12",
+ "-inset-s-10/12",
+ "-inset-s-11/12",
+ "-inset-s-full",
+ "-inset-s-px",
"-inset-x-0",
"-inset-x-0.5",
"-inset-x-1",
@@ -1712,66 +1900,6 @@ exports[`getClassList 1`] = `
"-space-y-80",
"-space-y-96",
"-space-y-px",
- "-start-0",
- "-start-0.5",
- "-start-1",
- "-start-1.5",
- "-start-2",
- "-start-2.5",
- "-start-3",
- "-start-3.5",
- "-start-4",
- "-start-5",
- "-start-6",
- "-start-7",
- "-start-8",
- "-start-9",
- "-start-10",
- "-start-11",
- "-start-12",
- "-start-14",
- "-start-16",
- "-start-20",
- "-start-24",
- "-start-28",
- "-start-32",
- "-start-36",
- "-start-40",
- "-start-44",
- "-start-48",
- "-start-52",
- "-start-56",
- "-start-60",
- "-start-64",
- "-start-72",
- "-start-80",
- "-start-96",
- "-start-1/2",
- "-start-1/3",
- "-start-1/4",
- "-start-1/5",
- "-start-1/6",
- "-start-1/12",
- "-start-2/3",
- "-start-2/4",
- "-start-2/5",
- "-start-2/6",
- "-start-2/12",
- "-start-3/4",
- "-start-3/5",
- "-start-3/6",
- "-start-3/12",
- "-start-4/5",
- "-start-4/6",
- "-start-4/12",
- "-start-5/6",
- "-start-5/12",
- "-start-6/12",
- "-start-7/12",
- "-start-8/12",
- "-start-9/12",
- "-start-10/12",
- "-start-11/12",
"-start-full",
"-start-px",
"-top-0",
@@ -4457,66 +4585,6 @@ exports[`getClassList 1`] = `
"duration-initial",
"ease-initial",
"ease-linear",
- "end-0",
- "end-0.5",
- "end-1",
- "end-1.5",
- "end-2",
- "end-2.5",
- "end-3",
- "end-3.5",
- "end-4",
- "end-5",
- "end-6",
- "end-7",
- "end-8",
- "end-9",
- "end-10",
- "end-11",
- "end-12",
- "end-14",
- "end-16",
- "end-20",
- "end-24",
- "end-28",
- "end-32",
- "end-36",
- "end-40",
- "end-44",
- "end-48",
- "end-52",
- "end-56",
- "end-60",
- "end-64",
- "end-72",
- "end-80",
- "end-96",
- "end-1/2",
- "end-1/3",
- "end-1/4",
- "end-1/5",
- "end-1/6",
- "end-1/12",
- "end-2/3",
- "end-2/4",
- "end-2/5",
- "end-2/6",
- "end-2/12",
- "end-3/4",
- "end-3/5",
- "end-3/6",
- "end-3/12",
- "end-4/5",
- "end-4/6",
- "end-4/12",
- "end-5/6",
- "end-5/12",
- "end-6/12",
- "end-7/12",
- "end-8/12",
- "end-9/12",
- "end-10/12",
- "end-11/12",
"end-auto",
"end-full",
"end-px",
@@ -5160,6 +5228,195 @@ exports[`getClassList 1`] = `
"inset-10/12",
"inset-11/12",
"inset-auto",
+ "inset-be-0",
+ "inset-be-0.5",
+ "inset-be-1",
+ "inset-be-1.5",
+ "inset-be-2",
+ "inset-be-2.5",
+ "inset-be-3",
+ "inset-be-3.5",
+ "inset-be-4",
+ "inset-be-5",
+ "inset-be-6",
+ "inset-be-7",
+ "inset-be-8",
+ "inset-be-9",
+ "inset-be-10",
+ "inset-be-11",
+ "inset-be-12",
+ "inset-be-14",
+ "inset-be-16",
+ "inset-be-20",
+ "inset-be-24",
+ "inset-be-28",
+ "inset-be-32",
+ "inset-be-36",
+ "inset-be-40",
+ "inset-be-44",
+ "inset-be-48",
+ "inset-be-52",
+ "inset-be-56",
+ "inset-be-60",
+ "inset-be-64",
+ "inset-be-72",
+ "inset-be-80",
+ "inset-be-96",
+ "inset-be-1/2",
+ "inset-be-1/3",
+ "inset-be-1/4",
+ "inset-be-1/5",
+ "inset-be-1/6",
+ "inset-be-1/12",
+ "inset-be-2/3",
+ "inset-be-2/4",
+ "inset-be-2/5",
+ "inset-be-2/6",
+ "inset-be-2/12",
+ "inset-be-3/4",
+ "inset-be-3/5",
+ "inset-be-3/6",
+ "inset-be-3/12",
+ "inset-be-4/5",
+ "inset-be-4/6",
+ "inset-be-4/12",
+ "inset-be-5/6",
+ "inset-be-5/12",
+ "inset-be-6/12",
+ "inset-be-7/12",
+ "inset-be-8/12",
+ "inset-be-9/12",
+ "inset-be-10/12",
+ "inset-be-11/12",
+ "inset-be-auto",
+ "inset-be-full",
+ "inset-be-px",
+ "inset-bs-0",
+ "inset-bs-0.5",
+ "inset-bs-1",
+ "inset-bs-1.5",
+ "inset-bs-2",
+ "inset-bs-2.5",
+ "inset-bs-3",
+ "inset-bs-3.5",
+ "inset-bs-4",
+ "inset-bs-5",
+ "inset-bs-6",
+ "inset-bs-7",
+ "inset-bs-8",
+ "inset-bs-9",
+ "inset-bs-10",
+ "inset-bs-11",
+ "inset-bs-12",
+ "inset-bs-14",
+ "inset-bs-16",
+ "inset-bs-20",
+ "inset-bs-24",
+ "inset-bs-28",
+ "inset-bs-32",
+ "inset-bs-36",
+ "inset-bs-40",
+ "inset-bs-44",
+ "inset-bs-48",
+ "inset-bs-52",
+ "inset-bs-56",
+ "inset-bs-60",
+ "inset-bs-64",
+ "inset-bs-72",
+ "inset-bs-80",
+ "inset-bs-96",
+ "inset-bs-1/2",
+ "inset-bs-1/3",
+ "inset-bs-1/4",
+ "inset-bs-1/5",
+ "inset-bs-1/6",
+ "inset-bs-1/12",
+ "inset-bs-2/3",
+ "inset-bs-2/4",
+ "inset-bs-2/5",
+ "inset-bs-2/6",
+ "inset-bs-2/12",
+ "inset-bs-3/4",
+ "inset-bs-3/5",
+ "inset-bs-3/6",
+ "inset-bs-3/12",
+ "inset-bs-4/5",
+ "inset-bs-4/6",
+ "inset-bs-4/12",
+ "inset-bs-5/6",
+ "inset-bs-5/12",
+ "inset-bs-6/12",
+ "inset-bs-7/12",
+ "inset-bs-8/12",
+ "inset-bs-9/12",
+ "inset-bs-10/12",
+ "inset-bs-11/12",
+ "inset-bs-auto",
+ "inset-bs-full",
+ "inset-bs-px",
+ "inset-e-0",
+ "inset-e-0.5",
+ "inset-e-1",
+ "inset-e-1.5",
+ "inset-e-2",
+ "inset-e-2.5",
+ "inset-e-3",
+ "inset-e-3.5",
+ "inset-e-4",
+ "inset-e-5",
+ "inset-e-6",
+ "inset-e-7",
+ "inset-e-8",
+ "inset-e-9",
+ "inset-e-10",
+ "inset-e-11",
+ "inset-e-12",
+ "inset-e-14",
+ "inset-e-16",
+ "inset-e-20",
+ "inset-e-24",
+ "inset-e-28",
+ "inset-e-32",
+ "inset-e-36",
+ "inset-e-40",
+ "inset-e-44",
+ "inset-e-48",
+ "inset-e-52",
+ "inset-e-56",
+ "inset-e-60",
+ "inset-e-64",
+ "inset-e-72",
+ "inset-e-80",
+ "inset-e-96",
+ "inset-e-1/2",
+ "inset-e-1/3",
+ "inset-e-1/4",
+ "inset-e-1/5",
+ "inset-e-1/6",
+ "inset-e-1/12",
+ "inset-e-2/3",
+ "inset-e-2/4",
+ "inset-e-2/5",
+ "inset-e-2/6",
+ "inset-e-2/12",
+ "inset-e-3/4",
+ "inset-e-3/5",
+ "inset-e-3/6",
+ "inset-e-3/12",
+ "inset-e-4/5",
+ "inset-e-4/6",
+ "inset-e-4/12",
+ "inset-e-5/6",
+ "inset-e-5/12",
+ "inset-e-6/12",
+ "inset-e-7/12",
+ "inset-e-8/12",
+ "inset-e-9/12",
+ "inset-e-10/12",
+ "inset-e-11/12",
+ "inset-e-auto",
+ "inset-e-full",
+ "inset-e-px",
"inset-full",
"inset-px",
"inset-ring",
@@ -5234,6 +5491,69 @@ exports[`getClassList 1`] = `
"inset-ring-transparent/90",
"inset-ring-transparent/95",
"inset-ring-transparent/100",
+ "inset-s-0",
+ "inset-s-0.5",
+ "inset-s-1",
+ "inset-s-1.5",
+ "inset-s-2",
+ "inset-s-2.5",
+ "inset-s-3",
+ "inset-s-3.5",
+ "inset-s-4",
+ "inset-s-5",
+ "inset-s-6",
+ "inset-s-7",
+ "inset-s-8",
+ "inset-s-9",
+ "inset-s-10",
+ "inset-s-11",
+ "inset-s-12",
+ "inset-s-14",
+ "inset-s-16",
+ "inset-s-20",
+ "inset-s-24",
+ "inset-s-28",
+ "inset-s-32",
+ "inset-s-36",
+ "inset-s-40",
+ "inset-s-44",
+ "inset-s-48",
+ "inset-s-52",
+ "inset-s-56",
+ "inset-s-60",
+ "inset-s-64",
+ "inset-s-72",
+ "inset-s-80",
+ "inset-s-96",
+ "inset-s-1/2",
+ "inset-s-1/3",
+ "inset-s-1/4",
+ "inset-s-1/5",
+ "inset-s-1/6",
+ "inset-s-1/12",
+ "inset-s-2/3",
+ "inset-s-2/4",
+ "inset-s-2/5",
+ "inset-s-2/6",
+ "inset-s-2/12",
+ "inset-s-3/4",
+ "inset-s-3/5",
+ "inset-s-3/6",
+ "inset-s-3/12",
+ "inset-s-4/5",
+ "inset-s-4/6",
+ "inset-s-4/12",
+ "inset-s-5/6",
+ "inset-s-5/12",
+ "inset-s-6/12",
+ "inset-s-7/12",
+ "inset-s-8/12",
+ "inset-s-9/12",
+ "inset-s-10/12",
+ "inset-s-11/12",
+ "inset-s-auto",
+ "inset-s-full",
+ "inset-s-px",
"inset-shadow-current",
"inset-shadow-current/0",
"inset-shadow-current/5",
@@ -10957,66 +11277,6 @@ exports[`getClassList 1`] = `
"space-y-reverse",
"sr-only",
"stacked-fractions",
- "start-0",
- "start-0.5",
- "start-1",
- "start-1.5",
- "start-2",
- "start-2.5",
- "start-3",
- "start-3.5",
- "start-4",
- "start-5",
- "start-6",
- "start-7",
- "start-8",
- "start-9",
- "start-10",
- "start-11",
- "start-12",
- "start-14",
- "start-16",
- "start-20",
- "start-24",
- "start-28",
- "start-32",
- "start-36",
- "start-40",
- "start-44",
- "start-48",
- "start-52",
- "start-56",
- "start-60",
- "start-64",
- "start-72",
- "start-80",
- "start-96",
- "start-1/2",
- "start-1/3",
- "start-1/4",
- "start-1/5",
- "start-1/6",
- "start-1/12",
- "start-2/3",
- "start-2/4",
- "start-2/5",
- "start-2/6",
- "start-2/12",
- "start-3/4",
- "start-3/5",
- "start-3/6",
- "start-3/12",
- "start-4/5",
- "start-4/6",
- "start-4/12",
- "start-5/6",
- "start-5/12",
- "start-6/12",
- "start-7/12",
- "start-8/12",
- "start-9/12",
- "start-10/12",
- "start-11/12",
"start-auto",
"start-full",
"start-px",
diff --git a/packages/tailwindcss/src/compat/legacy-utilities.test.ts b/packages/tailwindcss/src/compat/legacy-utilities.test.ts
index 9a828d673..24222f882 100644
--- a/packages/tailwindcss/src/compat/legacy-utilities.test.ts
+++ b/packages/tailwindcss/src/compat/legacy-utilities.test.ts
@@ -211,3 +211,177 @@ test('flex-shrink', async () => {
]),
).toEqual('')
})
+
+test('start', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ --inset-shadowned: 1940px;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'start-shadowned',
+ 'start-auto',
+ '-start-full',
+ 'start-full',
+ 'start-3/4',
+ 'start-4',
+ '-start-4',
+ 'start-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ --inset-shadowned: 1940px;
+ }
+
+ .-start-4 {
+ inset-inline-start: calc(var(--spacing-4) * -1);
+ }
+
+ .-start-full {
+ inset-inline-start: -100%;
+ }
+
+ .start-3\\/4 {
+ inset-inline-start: 75%;
+ }
+
+ .start-4 {
+ inset-inline-start: var(--spacing-4);
+ }
+
+ .start-\\[4px\\] {
+ inset-inline-start: 4px;
+ }
+
+ .start-auto {
+ inset-inline-start: auto;
+ }
+
+ .start-full {
+ inset-inline-start: 100%;
+ }
+
+ .start-shadowned {
+ inset-inline-start: var(--inset-shadowned);
+ }"
+ `)
+ expect(
+ await compileCss(
+ css`
+ @theme reference {
+ --spacing-4: 1rem;
+ --inset-shadow-sm: inset 0 1px 1px rgb(0 0 0 / 0.05);
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'start-shadow-sm',
+ 'start',
+ 'start--1',
+ 'start--1/2',
+ 'start--1/-2',
+ 'start-1/-2',
+ 'start-auto/foo',
+ '-start-full/foo',
+ 'start-full/foo',
+ 'start-3/4/foo',
+ 'start-4/foo',
+ '-start-4/foo',
+ 'start-[4px]/foo',
+ ],
+ ),
+ ).toEqual('')
+})
+
+test('end', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ --inset-shadowned: 1940px;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'end-shadowned',
+ 'end-auto',
+ '-end-full',
+ 'end-full',
+ 'end-3/4',
+ 'end-4',
+ '-end-4',
+ 'end-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ --inset-shadowned: 1940px;
+ }
+
+ .-end-4 {
+ inset-inline-end: calc(var(--spacing-4) * -1);
+ }
+
+ .-end-full {
+ inset-inline-end: -100%;
+ }
+
+ .end-3\\/4 {
+ inset-inline-end: 75%;
+ }
+
+ .end-4 {
+ inset-inline-end: var(--spacing-4);
+ }
+
+ .end-\\[4px\\] {
+ inset-inline-end: 4px;
+ }
+
+ .end-auto {
+ inset-inline-end: auto;
+ }
+
+ .end-full {
+ inset-inline-end: 100%;
+ }
+
+ .end-shadowned {
+ inset-inline-end: var(--inset-shadowned);
+ }"
+ `)
+ expect(
+ await compileCss(
+ css`
+ @theme reference {
+ --spacing-4: 1rem;
+ --inset-shadow-sm: inset 0 1px 1px rgb(0 0 0 / 0.05);
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'end-shadow-sm',
+ 'end',
+ 'end--1',
+ 'end--1/2',
+ 'end--1/-2',
+ 'end-1/-2',
+ 'end-auto/foo',
+ '-end-full/foo',
+ 'end-full/foo',
+ 'end-3/4/foo',
+ 'end-4/foo',
+ '-end-4/foo',
+ 'end-[4px]/foo',
+ ],
+ ),
+ ).toEqual('')
+})
diff --git a/packages/tailwindcss/src/compat/legacy-utilities.ts b/packages/tailwindcss/src/compat/legacy-utilities.ts
index ffefca940..dc53e4217 100644
--- a/packages/tailwindcss/src/compat/legacy-utilities.ts
+++ b/packages/tailwindcss/src/compat/legacy-utilities.ts
@@ -1,6 +1,7 @@
import { decl } from '../ast'
import type { DesignSystem } from '../design-system'
-import { isPositiveInteger } from '../utils/infer-data-type'
+import { isPositiveInteger, isValidSpacingMultiplier } from '../utils/infer-data-type'
+import { segment } from '../utils/segment'
export function registerLegacyUtilities(designSystem: DesignSystem) {
for (let [value, direction] of [
@@ -111,4 +112,68 @@ export function registerLegacyUtilities(designSystem: DesignSystem) {
designSystem.utilities.suggest('break-words', () => [])
designSystem.utilities.static('break-words', () => [decl('overflow-wrap', 'break-word')])
+
+ // Legacy `start` and `end` inset utilities, replaced by `inset-s` and `inset-e`
+ for (let [name, property] of [
+ ['start', 'inset-inline-start'],
+ ['end', 'inset-inline-end'],
+ ] as const) {
+ designSystem.utilities.static(`${name}-auto`, () => [decl(property, 'auto')])
+ designSystem.utilities.static(`${name}-full`, () => [decl(property, '100%')])
+ designSystem.utilities.static(`-${name}-full`, () => [decl(property, '-100%')])
+ designSystem.utilities.static(`${name}-px`, () => [decl(property, '1px')])
+ designSystem.utilities.static(`-${name}-px`, () => [decl(property, '-1px')])
+
+ function handleInset({ negative }: { negative: boolean }) {
+ return (candidate: Extract) => {
+ if (!candidate.value) {
+ if (candidate.modifier) return
+ let value = designSystem.theme.resolve(null, ['--inset', '--spacing'])
+ if (value === null) return
+ return [decl(property, negative ? `calc(${value} * -1)` : value)]
+ }
+
+ if (candidate.value.kind === 'arbitrary') {
+ if (candidate.modifier) return
+ let value = candidate.value.value
+ return [decl(property, negative ? `calc(${value} * -1)` : value)]
+ }
+
+ let value = designSystem.theme.resolve(candidate.value.fraction ?? candidate.value.value, [
+ '--inset',
+ '--spacing',
+ ])
+
+ // Handle fractions like `start-1/2`
+ if (value === null && candidate.value.fraction) {
+ let [lhs, rhs] = segment(candidate.value.fraction, '/')
+ if (!isPositiveInteger(lhs) || !isPositiveInteger(rhs)) return
+ value = `calc(${candidate.value.fraction} * 100%)`
+ }
+
+ // Handle bare spacing multiplier values like `start-4`
+ if (value === null && negative) {
+ let multiplier = designSystem.theme.resolve(null, ['--spacing'])
+ if (multiplier && isValidSpacingMultiplier(candidate.value.value)) {
+ value = `calc(${multiplier} * -${candidate.value.value})`
+ if (value !== null) return [decl(property, value)]
+ }
+ }
+
+ if (value === null) {
+ let multiplier = designSystem.theme.resolve(null, ['--spacing'])
+ if (multiplier && isValidSpacingMultiplier(candidate.value.value)) {
+ value = `calc(${multiplier} * ${candidate.value.value})`
+ }
+ }
+
+ if (value === null) return
+
+ return [decl(property, negative ? `calc(${value} * -1)` : value)]
+ }
+ }
+
+ designSystem.utilities.functional(`-${name}`, handleInset({ negative: true }))
+ designSystem.utilities.functional(name, handleInset({ negative: false }))
+ }
}
diff --git a/packages/tailwindcss/src/property-order.ts b/packages/tailwindcss/src/property-order.ts
index 03d0440ae..5177d8e2f 100644
--- a/packages/tailwindcss/src/property-order.ts
+++ b/packages/tailwindcss/src/property-order.ts
@@ -11,6 +11,8 @@ export default [
'inset-block',
'inset-inline-start',
'inset-inline-end',
+ 'inset-block-start',
+ 'inset-block-end',
'top',
'right',
'bottom',
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index a6c1ce91e..64a1d3396 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -480,7 +480,7 @@ test('inset-y', async () => {
).toEqual('')
})
-test('start', async () => {
+test('inset-s', async () => {
expect(
await compileCss(
css`
@@ -491,14 +491,14 @@ test('start', async () => {
@tailwind utilities;
`,
[
- 'start-shadowned',
- 'start-auto',
- '-start-full',
- 'start-full',
- 'start-3/4',
- 'start-4',
- '-start-4',
- 'start-[4px]',
+ 'inset-s-shadowned',
+ 'inset-s-auto',
+ '-inset-s-full',
+ 'inset-s-full',
+ 'inset-s-3/4',
+ 'inset-s-4',
+ '-inset-s-4',
+ 'inset-s-[4px]',
],
),
).toMatchInlineSnapshot(`
@@ -507,35 +507,35 @@ test('start', async () => {
--inset-shadowned: 1940px;
}
- .-start-4 {
+ .-inset-s-4 {
inset-inline-start: calc(var(--spacing-4) * -1);
}
- .-start-full {
+ .-inset-s-full {
inset-inline-start: -100%;
}
- .start-3\\/4 {
+ .inset-s-3\\/4 {
inset-inline-start: 75%;
}
- .start-4 {
+ .inset-s-4 {
inset-inline-start: var(--spacing-4);
}
- .start-\\[4px\\] {
+ .inset-s-\\[4px\\] {
inset-inline-start: 4px;
}
- .start-auto {
+ .inset-s-auto {
inset-inline-start: auto;
}
- .start-full {
+ .inset-s-full {
inset-inline-start: 100%;
}
- .start-shadowned {
+ .inset-s-shadowned {
inset-inline-start: var(--inset-shadowned);
}"
`)
@@ -549,25 +549,25 @@ test('start', async () => {
@tailwind utilities;
`,
[
- 'start-shadow-sm',
- 'start',
- 'start--1',
- 'start--1/2',
- 'start--1/-2',
- 'start-1/-2',
- 'start-auto/foo',
- '-start-full/foo',
- 'start-full/foo',
- 'start-3/4/foo',
- 'start-4/foo',
- '-start-4/foo',
- 'start-[4px]/foo',
+ 'inset-s-shadow-sm',
+ 'inset-s',
+ 'inset-s--1',
+ 'inset-s--1/2',
+ 'inset-s--1/-2',
+ 'inset-s-1/-2',
+ 'inset-s-auto/foo',
+ '-inset-s-full/foo',
+ 'inset-s-full/foo',
+ 'inset-s-3/4/foo',
+ 'inset-s-4/foo',
+ '-inset-s-4/foo',
+ 'inset-s-[4px]/foo',
],
),
).toEqual('')
})
-test('end', async () => {
+test('inset-e', async () => {
expect(
await compileCss(
css`
@@ -578,14 +578,14 @@ test('end', async () => {
@tailwind utilities;
`,
[
- 'end-shadowned',
- 'end-auto',
- '-end-full',
- 'end-full',
- 'end-3/4',
- 'end-4',
- '-end-4',
- 'end-[4px]',
+ 'inset-e-shadowned',
+ 'inset-e-auto',
+ '-inset-e-full',
+ 'inset-e-full',
+ 'inset-e-3/4',
+ 'inset-e-4',
+ '-inset-e-4',
+ 'inset-e-[4px]',
],
),
).toMatchInlineSnapshot(`
@@ -594,35 +594,35 @@ test('end', async () => {
--inset-shadowned: 1940px;
}
- .-end-4 {
+ .-inset-e-4 {
inset-inline-end: calc(var(--spacing-4) * -1);
}
- .-end-full {
+ .-inset-e-full {
inset-inline-end: -100%;
}
- .end-3\\/4 {
+ .inset-e-3\\/4 {
inset-inline-end: 75%;
}
- .end-4 {
+ .inset-e-4 {
inset-inline-end: var(--spacing-4);
}
- .end-\\[4px\\] {
+ .inset-e-\\[4px\\] {
inset-inline-end: 4px;
}
- .end-auto {
+ .inset-e-auto {
inset-inline-end: auto;
}
- .end-full {
+ .inset-e-full {
inset-inline-end: 100%;
}
- .end-shadowned {
+ .inset-e-shadowned {
inset-inline-end: var(--inset-shadowned);
}"
`)
@@ -636,19 +636,193 @@ test('end', async () => {
@tailwind utilities;
`,
[
- 'end-shadow-sm',
- 'end',
- 'end--1',
- 'end--1/2',
- 'end--1/-2',
- 'end-1/-2',
- 'end-auto/foo',
- '-end-full/foo',
- 'end-full/foo',
- 'end-3/4/foo',
- 'end-4/foo',
- '-end-4/foo',
- 'end-[4px]/foo',
+ 'inset-e-shadow-sm',
+ 'inset-e',
+ 'inset-e--1',
+ 'inset-e--1/2',
+ 'inset-e--1/-2',
+ 'inset-e-1/-2',
+ 'inset-e-auto/foo',
+ '-inset-e-full/foo',
+ 'inset-e-full/foo',
+ 'inset-e-3/4/foo',
+ 'inset-e-4/foo',
+ '-inset-e-4/foo',
+ 'inset-e-[4px]/foo',
+ ],
+ ),
+ ).toEqual('')
+})
+
+test('inset-bs', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ --inset-shadowned: 1940px;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'inset-bs-shadowned',
+ 'inset-bs-auto',
+ '-inset-bs-full',
+ 'inset-bs-full',
+ 'inset-bs-3/4',
+ 'inset-bs-4',
+ '-inset-bs-4',
+ 'inset-bs-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ --inset-shadowned: 1940px;
+ }
+
+ .-inset-bs-4 {
+ inset-block-start: calc(var(--spacing-4) * -1);
+ }
+
+ .-inset-bs-full {
+ inset-block-start: -100%;
+ }
+
+ .inset-bs-3\\/4 {
+ inset-block-start: 75%;
+ }
+
+ .inset-bs-4 {
+ inset-block-start: var(--spacing-4);
+ }
+
+ .inset-bs-\\[4px\\] {
+ inset-block-start: 4px;
+ }
+
+ .inset-bs-auto {
+ inset-block-start: auto;
+ }
+
+ .inset-bs-full {
+ inset-block-start: 100%;
+ }
+
+ .inset-bs-shadowned {
+ inset-block-start: var(--inset-shadowned);
+ }"
+ `)
+ expect(
+ await compileCss(
+ css`
+ @theme reference {
+ --spacing-4: 1rem;
+ --inset-shadow-sm: inset 0 1px 1px rgb(0 0 0 / 0.05);
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'inset-bs-shadow-sm',
+ 'inset-bs',
+ 'inset-bs--1',
+ 'inset-bs--1/2',
+ 'inset-bs--1/-2',
+ 'inset-bs-1/-2',
+ 'inset-bs-auto/foo',
+ '-inset-bs-full/foo',
+ 'inset-bs-full/foo',
+ 'inset-bs-3/4/foo',
+ 'inset-bs-4/foo',
+ '-inset-bs-4/foo',
+ 'inset-bs-[4px]/foo',
+ ],
+ ),
+ ).toEqual('')
+})
+
+test('inset-be', async () => {
+ expect(
+ await compileCss(
+ css`
+ @theme {
+ --spacing-4: 1rem;
+ --inset-shadowned: 1940px;
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'inset-be-shadowned',
+ 'inset-be-auto',
+ '-inset-be-full',
+ 'inset-be-full',
+ 'inset-be-3/4',
+ 'inset-be-4',
+ '-inset-be-4',
+ 'inset-be-[4px]',
+ ],
+ ),
+ ).toMatchInlineSnapshot(`
+ ":root, :host {
+ --spacing-4: 1rem;
+ --inset-shadowned: 1940px;
+ }
+
+ .-inset-be-4 {
+ inset-block-end: calc(var(--spacing-4) * -1);
+ }
+
+ .-inset-be-full {
+ inset-block-end: -100%;
+ }
+
+ .inset-be-3\\/4 {
+ inset-block-end: 75%;
+ }
+
+ .inset-be-4 {
+ inset-block-end: var(--spacing-4);
+ }
+
+ .inset-be-\\[4px\\] {
+ inset-block-end: 4px;
+ }
+
+ .inset-be-auto {
+ inset-block-end: auto;
+ }
+
+ .inset-be-full {
+ inset-block-end: 100%;
+ }
+
+ .inset-be-shadowned {
+ inset-block-end: var(--inset-shadowned);
+ }"
+ `)
+ expect(
+ await compileCss(
+ css`
+ @theme reference {
+ --spacing-4: 1rem;
+ --inset-shadow-sm: inset 0 1px 1px rgb(0 0 0 / 0.05);
+ }
+ @tailwind utilities;
+ `,
+ [
+ 'inset-be-shadow-sm',
+ 'inset-be',
+ 'inset-be--1',
+ 'inset-be--1/2',
+ 'inset-be--1/-2',
+ 'inset-be-1/-2',
+ 'inset-be-auto/foo',
+ '-inset-be-full/foo',
+ 'inset-be-full/foo',
+ 'inset-be-3/4/foo',
+ 'inset-be-4/foo',
+ '-inset-be-4/foo',
+ 'inset-be-[4px]/foo',
],
),
).toEqual('')
@@ -3858,7 +4032,15 @@ test('max-inline-size', async () => {
}
@tailwind utilities;
`,
- ['max-inline-none', 'max-inline-full', 'max-inline-max', 'max-inline-fit', 'max-inline-4', 'max-inline-xl', 'max-inline-[4px]'],
+ [
+ 'max-inline-none',
+ 'max-inline-full',
+ 'max-inline-max',
+ 'max-inline-fit',
+ 'max-inline-4',
+ 'max-inline-xl',
+ 'max-inline-[4px]',
+ ],
),
).toMatchInlineSnapshot(`
":root, :host {
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index 0661a9109..38aec8f42 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -624,8 +624,10 @@ export function createUtilities(theme: Theme) {
['inset', 'inset'],
['inset-x', 'inset-inline'],
['inset-y', 'inset-block'],
- ['start', 'inset-inline-start'],
- ['end', 'inset-inline-end'],
+ ['inset-s', 'inset-inline-start'],
+ ['inset-e', 'inset-inline-end'],
+ ['inset-bs', 'inset-block-start'],
+ ['inset-be', 'inset-block-end'],
['top', 'top'],
['right', 'right'],
['bottom', 'bottom'],
From 53205f5dc5889d3a86300fee8ad8ac3ceb3ac020 Mon Sep 17 00:00:00 2001
From: Adam Wathan
Date: Fri, 30 Jan 2026 15:21:16 +0100
Subject: [PATCH 110/353] Add `font-features-*` utility for
font-feature-settings (#19623)
Add a new arbitrary-value-only utility `font-features-*` that sets the
`font-feature-settings` CSS property. This utility only accepts
arbitrary
values (e.g., `font-features-["smcp"]`,
`font-features-[var(--features)]`).
The utility is sorted directly after `font-family` in the property
order.
https://claude.ai/code/session_01EAccbTHJ9dTUJ53ttq2jc4
---------
Co-authored-by: Claude
Co-authored-by: Robin Malfait
---
CHANGELOG.md | 17 ++++++-----
packages/tailwindcss/src/property-order.ts | 1 +
packages/tailwindcss/src/utilities.test.ts | 35 ++++++++++++++++++++++
packages/tailwindcss/src/utilities.ts | 8 +++++
4 files changed, 53 insertions(+), 8 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 93f0446eb..710d4a14f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Added
+
+- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
+- Add `@tailwindcss/webpack` loader for Tailwind CSS v4 ([#19610](https://github.com/tailwindlabs/tailwindcss/pull/19610))
+- Add `pbs-*`, `pbe-*`, `mbs-*`, `mbe-*`, `scroll-pbs-*`, `scroll-pbe-*`, `scroll-mbs-*`, `scroll-mbe-*`, `border-bs-*`, `border-be-*` utilities for `padding-block-start`, `padding-block-end`, `margin-block-start`, `margin-block-end`, `scroll-padding-block-start`, `scroll-padding-block-end`, `scroll-margin-block-start`, `scroll-margin-block-end`, `border-block-start`, and `border-block-end` ([`#19601`](https://github.com/tailwindlabs/tailwindcss/pull/19601))
+- Add `inline-*`, `min-inline-*`, `max-inline-*`, `block-*`, `min-block-*`, `max-block-*` utilities for `inline-size`, `min-inline-size`, `max-inline-size`, `block-size`, `min-block-size`, and `max-block-size` ([#19612](https://github.com/tailwindlabs/tailwindcss/pull/19612))
+- Add `inset-s-*`, `inset-e-*`, `inset-bs-*`, `inset-be-*` utilities for `inset-inline-start`, `inset-inline-end`, `inset-block-start`, and `inset-block-end` ([#19613](https://github.com/tailwindlabs/tailwindcss/pull/19613))
+- Add `font-features-*` utility for `font-feature-settings` ([#19623](https://github.com/tailwindlabs/tailwindcss/pull/19615))
+
### Fixed
- Do not wrap `color-mix` in a `@supports` rule if one already exists ([#19450](https://github.com/tailwindlabs/tailwindcss/pull/19450))
@@ -16,14 +25,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix class extraction for Rails' strict locals ([#19525](https://github.com/tailwindlabs/tailwindcss/pull/19525))
- Align `@utility` name validation with Oxide scanner rules ([#19524](https://github.com/tailwindlabs/tailwindcss/pull/19524))
-### Added
-
-- _Experimental_: Add `@container-size` utility ([#18901](https://github.com/tailwindlabs/tailwindcss/pull/18901))
-- Add `@tailwindcss/webpack` loader for Tailwind CSS v4 ([#19610](https://github.com/tailwindlabs/tailwindcss/pull/19610))
-- Add `pbs-*`, `pbe-*`, `mbs-*`, `mbe-*`, `scroll-pbs-*`, `scroll-pbe-*`, `scroll-mbs-*`, `scroll-mbe-*`, `border-bs-*`, `border-be-*` utilities for `padding-block-start`, `padding-block-end`, `margin-block-start`, `margin-block-end`, `scroll-padding-block-start`, `scroll-padding-block-end`, `scroll-margin-block-start`, `scroll-margin-block-end`, `border-block-start`, and `border-block-end` ([`#19601`](https://github.com/tailwindlabs/tailwindcss/pull/19601))
-- Add `inline-*`, `min-inline-*`, `max-inline-*`, `block-*`, `min-block-*`, `max-block-*` utilities for `inline-size`, `min-inline-size`, `max-inline-size`, `block-size`, `min-block-size`, and `max-block-size` ([#19612](https://github.com/tailwindlabs/tailwindcss/pull/19612))
-- Add `inset-s-*`, `inset-e-*`, `inset-bs-*`, `inset-be-*` utilities for `inset-inline-start`, `inset-inline-end`, `inset-block-start`, and `inset-block-end` ([#19613](https://github.com/tailwindlabs/tailwindcss/pull/19613))
-
### Deprecated
- Deprecate `start-*` and `end-*` utilities in favor of `inline-s-*` and `inline-e-*` ([#19613](https://github.com/tailwindlabs/tailwindcss/pull/19613))
diff --git a/packages/tailwindcss/src/property-order.ts b/packages/tailwindcss/src/property-order.ts
index 5177d8e2f..e92bc3744 100644
--- a/packages/tailwindcss/src/property-order.ts
+++ b/packages/tailwindcss/src/property-order.ts
@@ -343,6 +343,7 @@ export default [
'vertical-align',
'font-family',
+ 'font-feature-settings',
'font-size',
'line-height',
'font-weight',
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index 64a1d3396..ea60feeae 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -22218,6 +22218,41 @@ test('font', async () => {
).toEqual('')
})
+test('font-features', async () => {
+ expect(
+ await run([
+ 'font-features-["smcp"]',
+ 'font-features-["c2sc","smcp"]',
+ 'font-features-[var(--my-features)]',
+ 'font-features-(--my-features)',
+ ]),
+ ).toMatchInlineSnapshot(`
+ ".font-features-\\(--my-features\\) {
+ font-feature-settings: var(--my-features);
+ }
+
+ .font-features-\\[\\"c2sc\\"\\,\\"smcp\\"\\] {
+ font-feature-settings: "c2sc", "smcp";
+ }
+
+ .font-features-\\[\\"smcp\\"\\] {
+ font-feature-settings: "smcp";
+ }
+
+ .font-features-\\[var\\(--my-features\\)\\] {
+ font-feature-settings: var(--my-features);
+ }"
+ `)
+ expect(
+ await run([
+ 'font-features',
+ '-font-features-["smcp"]',
+ 'font-features-smcp',
+ 'font-features-["smcp"]/foo',
+ ]),
+ ).toEqual('')
+})
+
test('text-transform', async () => {
expect(await run(['uppercase', 'lowercase', 'capitalize', 'normal-case'])).toMatchInlineSnapshot(`
".capitalize {
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index 38aec8f42..4f54c9584 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -3909,6 +3909,14 @@ export function createUtilities(theme: Theme) {
},
])
+ /**
+ * @css `font-feature-settings`
+ */
+ functionalUtility('font-features', {
+ themeKeys: [],
+ handle: (value) => [decl('font-feature-settings', value)],
+ })
+
staticUtility('uppercase', [['text-transform', 'uppercase']])
staticUtility('lowercase', [['text-transform', 'lowercase']])
staticUtility('capitalize', [['text-transform', 'capitalize']])
From d8b00d1114645d757c9644556e9a366d24a771c6 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Fri, 30 Jan 2026 15:31:23 +0100
Subject: [PATCH 111/353] add concurrency control to workflows
Essentially cancel previous workflows when new commits are pushed.
---
.github/workflows/ci.yml | 4 ++++
.github/workflows/integration-tests.yml | 4 ++++
.github/workflows/prepare-release.yml | 4 ++++
.github/workflows/release-insiders.yml | 4 ++++
4 files changed, 16 insertions(+)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d8c099873..f817e05a3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -11,6 +11,10 @@ permissions:
env:
NODE_VERSION: 24
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
tests:
strategy:
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index e36f5b3ab..1508c1eff 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -11,6 +11,10 @@ permissions:
env:
NODE_VERSION: 24
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
tests:
strategy:
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index e506ab187..0af8930a3 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -14,6 +14,10 @@ env:
permissions:
contents: read
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
build:
strategy:
diff --git a/.github/workflows/release-insiders.yml b/.github/workflows/release-insiders.yml
index f7792244f..7a506892c 100644
--- a/.github/workflows/release-insiders.yml
+++ b/.github/workflows/release-insiders.yml
@@ -13,6 +13,10 @@ env:
OXIDE_LOCATION: ./crates/node
RELEASE_CHANNEL: insiders
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
build:
strategy:
From d52c94ff5faf4ab3b5a3caf878d22ff1b84e6c07 Mon Sep 17 00:00:00 2001
From: Adam Wathan
Date: Fri, 30 Jan 2026 16:40:51 +0100
Subject: [PATCH 112/353] Simplify logical sizing utility theme namespaces
(#19625)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Update inline-size and block-size utilities to only read from --spacing
and --container theme keys, removing backwards-compat references to
--width, --height, --min-width, --min-height, --max-width, and
--max-height.
Since these are new utilities with no backwards compatibility concerns,
the simpler approach is preferred:
- inline/min-inline/max-inline: --spacing, --container
- block/min-block/max-block: --spacing only
https://claude.ai/code/session_01WhrjmutxsLP753VUtFy24S
## Summary
## Test plan
Co-authored-by: Claude
---
packages/tailwindcss/src/utilities.test.ts | 6 +++---
packages/tailwindcss/src/utilities.ts | 12 ++++++------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index ea60feeae..f68601358 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -3842,7 +3842,7 @@ test('inline-size', async () => {
css`
@theme {
--spacing-4: 1rem;
- --width-xl: 36rem;
+ --container-xl: 36rem;
}
@tailwind utilities;
`,
@@ -3865,7 +3865,7 @@ test('inline-size', async () => {
).toMatchInlineSnapshot(`
":root, :host {
--spacing-4: 1rem;
- --width-xl: 36rem;
+ --container-xl: 36rem;
}
.inline-1\\/2 {
@@ -3917,7 +3917,7 @@ test('inline-size', async () => {
}
.inline-xl {
- inline-size: var(--width-xl);
+ inline-size: var(--container-xl);
}"
`)
expect(
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index 4f54c9584..66ae59230 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -1135,12 +1135,12 @@ export function createUtilities(theme: Theme) {
staticUtility(`max-block-none`, [['max-block-size', 'none']])
for (let [name, namespaces, property] of [
- ['inline', ['--width', '--spacing', '--container'], 'inline-size'],
- ['min-inline', ['--min-width', '--spacing', '--container'], 'min-inline-size'],
- ['max-inline', ['--max-width', '--spacing', '--container'], 'max-inline-size'],
- ['block', ['--height', '--spacing'], 'block-size'],
- ['min-block', ['--min-height', '--height', '--spacing'], 'min-block-size'],
- ['max-block', ['--max-height', '--height', '--spacing'], 'max-block-size'],
+ ['inline', ['--spacing', '--container'], 'inline-size'],
+ ['min-inline', ['--spacing', '--container'], 'min-inline-size'],
+ ['max-inline', ['--spacing', '--container'], 'max-inline-size'],
+ ['block', ['--spacing'], 'block-size'],
+ ['min-block', ['--spacing'], 'min-block-size'],
+ ['max-block', ['--spacing'], 'max-block-size'],
] as [string, ThemeKey[], string][]) {
spacingUtility(name, namespaces, (value) => [decl(property, value)], {
supportsFractions: true,
From df96ea5eba94c801a08879cf95837b8a2b317b42 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Mon, 2 Feb 2026 14:42:31 +0100
Subject: [PATCH 113/353] Fix infinite loop when using `@variant` inside
`@custom-variant` that points to another `@custom-variant` (#19633)
This PR fixes an infinite loop when you use a `@variant` inside of a
`@custom-variant`, where the `@variant` used is another
`@custom-variant`.
The issue stems from the fact that a `@custom-variant` can use a `@slot`
that we have to replace with the proper AST nodes. However in this
setup, the AST nodes will include a `@slot` node as well, which causes
us to replace the `@slot` again, and so on, causing an infinite loop.
```css
@custom-variant a {
@slot;
}
@custom-variant b {
@variant a {
@slot;
}
}
```
The solution here is to replace the `@slot` nodes and then skip walking
the nodes that were just inserted. This does mean that we end up with a
`@slot` node in the final AST but that's not a real issue because that
will get replaced later when handling the next `@custom-variant`.
## Test plan
1. Existing tests still pass
2. Added a regression test to ensure that the infinite loop does not
happen anymore
3. Added additional tests to ensure that the behavior is correct
Thanks @wongjn for your initial debugging help and providing a test case
as well!
Fixes: #19618
---
CHANGELOG.md | 1 +
packages/tailwindcss/src/index.test.ts | 91 ++++++++++++++++++++++++++
packages/tailwindcss/src/variants.ts | 2 +-
3 files changed, 93 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 710d4a14f..74f72f10e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Detect utilities when containing capital letters followed by numbers ([#19465](https://github.com/tailwindlabs/tailwindcss/pull/19465))
- Fix class extraction for Rails' strict locals ([#19525](https://github.com/tailwindlabs/tailwindcss/pull/19525))
- Align `@utility` name validation with Oxide scanner rules ([#19524](https://github.com/tailwindlabs/tailwindcss/pull/19524))
+- Fix infinite loop when using `@variant` inside `@custom-variant` ([#19633](https://github.com/tailwindlabs/tailwindcss/pull/19633))
### Deprecated
diff --git a/packages/tailwindcss/src/index.test.ts b/packages/tailwindcss/src/index.test.ts
index 94b17714e..5182cdd14 100644
--- a/packages/tailwindcss/src/index.test.ts
+++ b/packages/tailwindcss/src/index.test.ts
@@ -4558,6 +4558,97 @@ describe('@custom-variant', () => {
`)
})
+ // https://github.com/tailwindlabs/tailwindcss/issues/19618
+ test('@custom-variant can use a @variant that eventually uses another @custom-variant', async () => {
+ expect(
+ await compileCss(
+ css`
+ @custom-variant a {
+ @slot;
+ }
+
+ @custom-variant b {
+ @variant a {
+ @slot;
+ }
+ }
+
+ @tailwind utilities;
+ `,
+ ['a:flex', 'b:flex', 'a:b:flex', 'b:a:flex'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ".a\\:flex, .b\\:flex, .a\\:b\\:flex, .b\\:a\\:flex {
+ display: flex;
+ }"
+ `)
+ })
+
+ test('@custom-variant can use a @variant that eventually uses another @custom-variant (2)', async () => {
+ expect(
+ await compileCss(
+ css`
+ @custom-variant a {
+ .a {
+ @slot;
+ }
+ }
+
+ @custom-variant b {
+ .b {
+ @variant a {
+ .a-inside-b {
+ @slot;
+ }
+ }
+ }
+ }
+
+ @tailwind utilities;
+ `,
+ ['a:flex', 'b:flex', 'a:b:flex', 'b:a:flex'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ".a\\:flex .a, .b\\:flex .b .a .a-inside-b, .a\\:b\\:flex .a .b .a .a-inside-b, .b\\:a\\:flex .b .a .a-inside-b .a {
+ display: flex;
+ }"
+ `)
+ })
+
+ // https://github.com/tailwindlabs/tailwindcss/issues/19618#issuecomment-3830775912
+ test('@custom-variant can use existing @slot @variants', async () => {
+ expect(
+ await compileCss(
+ css`
+ @custom-variant hocus {
+ @variant hover {
+ @variant focus {
+ @slot;
+ }
+ }
+ }
+
+ @custom-variant hover {
+ &:hover {
+ @slot;
+ }
+
+ &[data-hover] {
+ @slot;
+ }
+ }
+
+ @tailwind utilities;
+ `,
+ ['hocus:flex'],
+ ),
+ ).toMatchInlineSnapshot(`
+ ".hocus\\:flex:hover:focus, .hocus\\:flex[data-hover]:focus {
+ display: flex;
+ }"
+ `)
+ })
+
test('@custom-variant setup that results in a circular dependency error can be solved', async () => {
expect(
await compileCss(
diff --git a/packages/tailwindcss/src/variants.ts b/packages/tailwindcss/src/variants.ts
index 82a2b8592..0b4bcb0c5 100644
--- a/packages/tailwindcss/src/variants.ts
+++ b/packages/tailwindcss/src/variants.ts
@@ -1196,7 +1196,7 @@ export function substituteAtSlot(ast: AstNode[], nodes: AstNode[]) {
walk(ast, (node) => {
// Replace `@slot` with rule nodes
if (node.kind === 'at-rule' && node.name === '@slot') {
- return WalkAction.Replace(nodes)
+ return WalkAction.ReplaceSkip(nodes)
}
// Wrap `@keyframes` and `@property` in `AtRoot` nodes
From 1638f35c3a2bfcd65a7b3b0f8626927a76bcf685 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Wed, 4 Feb 2026 12:38:50 +0100
Subject: [PATCH 114/353] Bump dependencies (#19608)
This PR bumps a bunch of dependencies. This also moves a few
dependencies that we use in multiple packages to the pnpm catalog.
Closes: #19603, #19604, #19576, #19575, #19573, #19565, #19547, #19546,
#19545, #19609, #19581, #19620, #19619
- #19603
- #19604
- #19576
- #19575
- #19573
- #19565
- #19547
- #19546
- #19545
- #19609
- #19581
- https://github.com/tailwindlabs/tailwindcss/pull/19620
- #19620
- #19619
## Test Plan
All tests in CI should still pass. [ci-all]
---
.prettierignore | 1 +
crates/node/npm/wasm32-wasi/package.json | 6 +-
crates/node/package.json | 2 +-
package.json | 8 +-
packages/@tailwindcss-browser/package.json | 2 +-
packages/@tailwindcss-node/package.json | 2 +-
packages/@tailwindcss-postcss/package.json | 2 +-
.../src/__snapshots__/index.test.ts.snap | 6 +-
packages/@tailwindcss-standalone/package.json | 18 +-
packages/@tailwindcss-standalone/src/index.ts | 10 +-
packages/@tailwindcss-upgrade/package.json | 2 +-
packages/tailwindcss/package.json | 2 +-
.../src/__snapshots__/index.test.ts.snap | 6 +-
.../tailwindcss/src/css-functions.test.ts | 3 +-
packages/tailwindcss/src/index.test.ts | 5 +-
packages/tailwindcss/src/utilities.test.ts | 333 ++---
packages/tailwindcss/src/utilities.ts | 17 +-
packages/tailwindcss/tests/ui.spec.ts | 20 +-
...1.30.2.patch => lightningcss@1.31.1.patch} | 0
playgrounds/nextjs/package.json | 12 +-
playgrounds/v3/package.json | 14 +-
playgrounds/vite/package.json | 8 +-
pnpm-lock.yaml | 1277 ++++++++---------
pnpm-workspace.yaml | 20 +-
24 files changed, 897 insertions(+), 879 deletions(-)
rename patches/{lightningcss@1.30.2.patch => lightningcss@1.31.1.patch} (100%)
diff --git a/.prettierignore b/.prettierignore
index 3de4530dd..4f50b932f 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -4,5 +4,6 @@ pnpm-lock.yaml
target/
crates/node/index.d.ts
crates/node/index.js
+crates/ignore/
.next
.fingerprint
diff --git a/crates/node/npm/wasm32-wasi/package.json b/crates/node/npm/wasm32-wasi/package.json
index ea06f944d..059735f53 100644
--- a/crates/node/npm/wasm32-wasi/package.json
+++ b/crates/node/npm/wasm32-wasi/package.json
@@ -28,11 +28,11 @@
"browser": "tailwindcss-oxide.wasi-browser.js",
"dependencies": {
"@napi-rs/wasm-runtime": "^1.1.1",
- "@emnapi/core": "^1.7.1",
- "@emnapi/runtime": "^1.7.1",
+ "@emnapi/core": "^1.8.1",
+ "@emnapi/runtime": "^1.8.1",
"@tybys/wasm-util": "^0.10.1",
"@emnapi/wasi-threads": "^1.1.0",
- "tslib": "^2.4.0"
+ "tslib": "^2.8.1"
},
"bundledDependencies": [
"@napi-rs/wasm-runtime",
diff --git a/crates/node/package.json b/crates/node/package.json
index 00557993d..d9b07eab5 100644
--- a/crates/node/package.json
+++ b/crates/node/package.json
@@ -35,7 +35,7 @@
"devDependencies": {
"@napi-rs/cli": "3.4.1",
"@napi-rs/wasm-runtime": "^1.1.1",
- "emnapi": "1.7.1"
+ "emnapi": "1.8.1"
},
"engines": {
"node": ">= 20"
diff --git a/package.json b/package.json
index 1b5a50a82..e1e310c69 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
},
"license": "MIT",
"devDependencies": {
- "@playwright/test": "^1.57.0",
+ "@playwright/test": "^1.58.0",
"@types/node": "catalog:",
"postcss": "8.5.6",
"postcss-import": "^16.1.1",
@@ -56,14 +56,14 @@
"prettier-plugin-embed": "^0.5.1",
"prettier-plugin-organize-imports": "^4.3.0",
"tsup": "^8.5.1",
- "turbo": "^2.7.2",
+ "turbo": "^2.7.6",
"typescript": "^5.5.4",
- "vitest": "^4.0.3"
+ "vitest": "^4.0.18"
},
"packageManager": "pnpm@9.6.0",
"pnpm": {
"patchedDependencies": {
- "lightningcss@1.30.2": "patches/lightningcss@1.30.2.patch",
+ "lightningcss@1.31.1": "patches/lightningcss@1.31.1.patch",
"@parcel/watcher@2.5.1": "patches/@parcel__watcher@2.5.1.patch"
}
}
diff --git a/packages/@tailwindcss-browser/package.json b/packages/@tailwindcss-browser/package.json
index 6bda85f75..8b9b1b5e2 100644
--- a/packages/@tailwindcss-browser/package.json
+++ b/packages/@tailwindcss-browser/package.json
@@ -30,7 +30,7 @@
"access": "public"
},
"devDependencies": {
- "h3": "^1.15.4",
+ "h3": "^1.15.5",
"listhen": "^1.9.0",
"tailwindcss": "workspace:*"
}
diff --git a/packages/@tailwindcss-node/package.json b/packages/@tailwindcss-node/package.json
index 257b440ae..8afadb378 100644
--- a/packages/@tailwindcss-node/package.json
+++ b/packages/@tailwindcss-node/package.json
@@ -37,7 +37,7 @@
}
},
"dependencies": {
- "@jridgewell/remapping": "^2.3.4",
+ "@jridgewell/remapping": "^2.3.5",
"enhanced-resolve": "^5.18.4",
"jiti": "^2.6.1",
"lightningcss": "catalog:",
diff --git a/packages/@tailwindcss-postcss/package.json b/packages/@tailwindcss-postcss/package.json
index 22e775d72..ff815030a 100644
--- a/packages/@tailwindcss-postcss/package.json
+++ b/packages/@tailwindcss-postcss/package.json
@@ -33,7 +33,7 @@
"@alloc/quick-lru": "^5.2.0",
"@tailwindcss/node": "workspace:*",
"@tailwindcss/oxide": "workspace:*",
- "postcss": "^8.4.41",
+ "postcss": "^8.5.6",
"tailwindcss": "workspace:*"
},
"devDependencies": {
diff --git a/packages/@tailwindcss-postcss/src/__snapshots__/index.test.ts.snap b/packages/@tailwindcss-postcss/src/__snapshots__/index.test.ts.snap
index 8fdc0dbf7..fd6db912c 100644
--- a/packages/@tailwindcss-postcss/src/__snapshots__/index.test.ts.snap
+++ b/packages/@tailwindcss-postcss/src/__snapshots__/index.test.ts.snap
@@ -11,8 +11,10 @@ exports[`\`@import 'tailwindcss'\` is replaced with the generated CSS 1`] = `
@layer theme {
:root, :host {
- --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
- --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
+ "Noto Color Emoji";
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
+ monospace;
--color-black: #000;
--text-2xl: 1.5rem;
--text-2xl--line-height: calc(2 / 1.5);
diff --git a/packages/@tailwindcss-standalone/package.json b/packages/@tailwindcss-standalone/package.json
index cfe124563..cdc83f34a 100644
--- a/packages/@tailwindcss-standalone/package.json
+++ b/packages/@tailwindcss-standalone/package.json
@@ -35,15 +35,15 @@
},
"__notes": "These binary packages must be included so Bun can build the CLI for all supported platforms. We also rely on Lightning CSS and Parcel being patched so Bun can statically analyze the executables.",
"devDependencies": {
- "@parcel/watcher-darwin-arm64": "^2.5.1",
- "@parcel/watcher-darwin-x64": "^2.5.1",
- "@parcel/watcher-linux-arm64-glibc": "^2.5.1",
- "@parcel/watcher-linux-arm64-musl": "^2.5.1",
- "@parcel/watcher-linux-x64-glibc": "^2.5.1",
- "@parcel/watcher-linux-x64-musl": "^2.5.1",
- "@parcel/watcher-win32-x64": "^2.5.1",
- "@types/bun": "^1.3.5",
- "bun": "^1.3.5",
+ "@parcel/watcher-darwin-arm64": "^2.5.6",
+ "@parcel/watcher-darwin-x64": "^2.5.6",
+ "@parcel/watcher-linux-arm64-glibc": "^2.5.6",
+ "@parcel/watcher-linux-arm64-musl": "^2.5.6",
+ "@parcel/watcher-linux-x64-glibc": "^2.5.6",
+ "@parcel/watcher-linux-x64-musl": "^2.5.6",
+ "@parcel/watcher-win32-x64": "^2.5.6",
+ "@types/bun": "^1.3.7",
+ "bun": "^1.3.7",
"lightningcss-darwin-arm64": "catalog:",
"lightningcss-darwin-x64": "catalog:",
"lightningcss-linux-arm64-gnu": "catalog:",
diff --git a/packages/@tailwindcss-standalone/src/index.ts b/packages/@tailwindcss-standalone/src/index.ts
index ce6ba84d1..23a928f8b 100644
--- a/packages/@tailwindcss-standalone/src/index.ts
+++ b/packages/@tailwindcss-standalone/src/index.ts
@@ -75,12 +75,10 @@ Bun.plugin({
'tailwindcss/plugin': await import('tailwindcss/plugin'),
'tailwindcss/plugin.js': await import('tailwindcss/plugin'),
'tailwindcss/package.json': await import('tailwindcss/package.json'),
- 'tailwindcss/lib/util/flattenColorPalette': await import(
- 'tailwindcss/lib/util/flattenColorPalette'
- ),
- 'tailwindcss/lib/util/flattenColorPalette.js': await import(
- 'tailwindcss/lib/util/flattenColorPalette'
- ),
+ 'tailwindcss/lib/util/flattenColorPalette':
+ await import('tailwindcss/lib/util/flattenColorPalette'),
+ 'tailwindcss/lib/util/flattenColorPalette.js':
+ await import('tailwindcss/lib/util/flattenColorPalette'),
'tailwindcss/defaultTheme': await import('tailwindcss/defaultTheme'),
'tailwindcss/defaultTheme.js': await import('tailwindcss/defaultTheme'),
}
diff --git a/packages/@tailwindcss-upgrade/package.json b/packages/@tailwindcss-upgrade/package.json
index e41e40b22..e1490711b 100644
--- a/packages/@tailwindcss-upgrade/package.json
+++ b/packages/@tailwindcss-upgrade/package.json
@@ -36,7 +36,7 @@
"jiti": "^2.0.0-beta.3",
"mri": "^1.2.0",
"picocolors": "^1.1.1",
- "postcss": "^8.4.41",
+ "postcss": "^8.5.6",
"postcss-import": "^16.1.1",
"postcss-selector-parser": "^7.1.1",
"prettier": "catalog:",
diff --git a/packages/tailwindcss/package.json b/packages/tailwindcss/package.json
index a453c9a14..5650b1e2c 100644
--- a/packages/tailwindcss/package.json
+++ b/packages/tailwindcss/package.json
@@ -127,7 +127,7 @@
"utilities.css"
],
"devDependencies": {
- "@jridgewell/remapping": "^2.3.4",
+ "@jridgewell/remapping": "^2.3.5",
"@tailwindcss/oxide": "workspace:^",
"@types/node": "catalog:",
"dedent": "1.7.1",
diff --git a/packages/tailwindcss/src/__snapshots__/index.test.ts.snap b/packages/tailwindcss/src/__snapshots__/index.test.ts.snap
index 70060e1e1..88365b1ce 100644
--- a/packages/tailwindcss/src/__snapshots__/index.test.ts.snap
+++ b/packages/tailwindcss/src/__snapshots__/index.test.ts.snap
@@ -129,8 +129,10 @@ exports[`compiling CSS > \`@tailwind utilities\` is replaced by utilities using
exports[`compiling CSS > prefix all CSS variables inside preflight 1`] = `
"@layer theme {
:root, :host {
- --tw-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
- --tw-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ --tw-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
+ "Noto Color Emoji";
+ --tw-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
+ monospace;
--tw-default-font-family: var(--tw-font-sans);
--tw-default-mono-font-family: var(--tw-font-mono);
}
diff --git a/packages/tailwindcss/src/css-functions.test.ts b/packages/tailwindcss/src/css-functions.test.ts
index 464f05864..0c5a3c97e 100644
--- a/packages/tailwindcss/src/css-functions.test.ts
+++ b/packages/tailwindcss/src/css-functions.test.ts
@@ -313,7 +313,8 @@ describe('--theme(…)', () => {
),
).toMatchInlineSnapshot(`
":root, :host {
- --tw-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --tw-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
+ "Segoe UI Symbol", "Noto Color Emoji";
--tw-default-font-family: var(--tw-font-sans);
}
diff --git a/packages/tailwindcss/src/index.test.ts b/packages/tailwindcss/src/index.test.ts
index 5182cdd14..1534f84cf 100644
--- a/packages/tailwindcss/src/index.test.ts
+++ b/packages/tailwindcss/src/index.test.ts
@@ -1561,7 +1561,8 @@ describe('Parsing theme values from CSS', () => {
),
).toMatchInlineSnapshot(`
":root, :host {
- --animate-very-long-animation-name: very-long-animation-name var(--very-long-animation-name-configuration, 2.5s ease-in-out 0s infinite normal none running);
+ --animate-very-long-animation-name: very-long-animation-name
+ var(--very-long-animation-name-configuration, 2.5s ease-in-out 0s infinite normal none running);
}
.animate-very-long-animation-name {
@@ -5650,7 +5651,7 @@ describe('`color-mix(…)` polyfill', () => {
@supports (color: color-mix(in lab, red, red)) {
.text-red-500\\/50 {
- color: color-mix(in oklab, var(--color-red-500) 50%, transparent);
+ color: color-mix(in oklab,var(--color-red-500)50%,transparent);
}
}"
`)
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index f68601358..29e8dae3a 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -5764,27 +5764,27 @@ test('rotate-x', async () => {
.-rotate-x-\\(--var\\) {
--tw-rotate-x: rotateX(calc(var(--var) * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.-rotate-x-45 {
--tw-rotate-x: rotateX(calc(45deg * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-x-\\(--var\\) {
--tw-rotate-x: rotateX(var(--var));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-x-45 {
--tw-rotate-x: rotateX(45deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-x-\\[123deg\\] {
--tw-rotate-x: rotateX(123deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
@property --tw-rotate-x {
@@ -5850,32 +5850,32 @@ test('rotate-y', async () => {
.-rotate-y-\\(--var\\) {
--tw-rotate-y: rotateY(calc(var(--var) * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.-rotate-y-45 {
--tw-rotate-y: rotateY(calc(45deg * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.-rotate-y-\\[123deg\\] {
--tw-rotate-y: rotateY(calc(123deg * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-y-\\(--var\\) {
--tw-rotate-y: rotateY(var(--var));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-y-45 {
--tw-rotate-y: rotateY(45deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-y-\\[123deg\\] {
--tw-rotate-y: rotateY(123deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
@property --tw-rotate-x {
@@ -5941,32 +5941,32 @@ test('rotate-z', async () => {
.-rotate-z-\\(--var\\) {
--tw-rotate-z: rotateZ(calc(var(--var) * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.-rotate-z-45 {
--tw-rotate-z: rotateZ(calc(45deg * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.-rotate-z-\\[123deg\\] {
--tw-rotate-z: rotateZ(calc(123deg * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-z-\\(--var\\) {
--tw-rotate-z: rotateZ(var(--var));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-z-45 {
--tw-rotate-z: rotateZ(45deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.rotate-z-\\[123deg\\] {
--tw-rotate-z: rotateZ(123deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
@property --tw-rotate-x {
@@ -6024,19 +6024,19 @@ test('skew', async () => {
.-skew-6 {
--tw-skew-x: skewX(calc(6deg * -1));
--tw-skew-y: skewY(calc(6deg * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.skew-6 {
--tw-skew-x: skewX(6deg);
--tw-skew-y: skewY(6deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.skew-\\[123deg\\] {
--tw-skew-x: skewX(123deg);
--tw-skew-y: skewY(123deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
@property --tw-rotate-x {
@@ -6092,17 +6092,17 @@ test('skew-x', async () => {
.-skew-x-6 {
--tw-skew-x: skewX(calc(6deg * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.skew-x-6 {
--tw-skew-x: skewX(6deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.skew-x-\\[123deg\\] {
--tw-skew-x: skewX(123deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
@property --tw-rotate-x {
@@ -6158,17 +6158,17 @@ test('skew-y', async () => {
.-skew-y-6 {
--tw-skew-y: skewY(calc(6deg * -1));
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.skew-y-6 {
--tw-skew-y: skewY(6deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.skew-y-\\[123deg\\] {
--tw-skew-y: skewY(123deg);
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
@property --tw-rotate-x {
@@ -6551,7 +6551,7 @@ test('transform', async () => {
}
.transform {
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.transform-\\[scaleZ\\(2\\)_rotateY\\(45deg\\)\\] {
@@ -6559,11 +6559,11 @@ test('transform', async () => {
}
.transform-cpu {
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.transform-gpu {
- transform: translateZ(0) var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
+ transform: translateZ(0) var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
}
.transform-none {
@@ -7075,32 +7075,32 @@ test('touch-pan', async () => {
.touch-pan-left {
--tw-pan-x: pan-left;
- touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
+ touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
}
.touch-pan-right {
--tw-pan-x: pan-right;
- touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
+ touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
}
.touch-pan-x {
--tw-pan-x: pan-x;
- touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
+ touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
}
.touch-pan-down {
--tw-pan-y: pan-down;
- touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
+ touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
}
.touch-pan-up {
--tw-pan-y: pan-up;
- touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
+ touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
}
.touch-pan-y {
--tw-pan-y: pan-y;
- touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
+ touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
}
@property --tw-pan-x {
@@ -7150,7 +7150,7 @@ test('touch-pinch-zoom', async () => {
.touch-pinch-zoom {
--tw-pinch-zoom: pinch-zoom;
- touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
+ touch-action: var(--tw-pan-x, ) var(--tw-pan-y, ) var(--tw-pinch-zoom, );
}
@property --tw-pan-x {
@@ -22139,7 +22139,8 @@ test('font', async () => {
}
:root, :host {
- --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
+ "Segoe UI Symbol", "Noto Color Emoji";
--font-weight-bold: 650;
}
@@ -22232,7 +22233,7 @@ test('font-features', async () => {
}
.font-features-\\[\\"c2sc\\"\\,\\"smcp\\"\\] {
- font-feature-settings: "c2sc", "smcp";
+ font-feature-settings: "c2sc","smcp";
}
.font-features-\\[\\"smcp\\"\\] {
@@ -23037,73 +23038,73 @@ test('filter', async () => {
.blur-\\[4px\\] {
--tw-blur: blur(4px);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.blur-none {
- --tw-blur: ;
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ --tw-blur: ;
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.blur-xl {
--tw-blur: blur(var(--blur-xl));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.brightness-50 {
--tw-brightness: brightness(50%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.brightness-\\[1\\.23\\] {
--tw-brightness: brightness(1.23);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.contrast-50 {
--tw-contrast: contrast(50%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.contrast-\\[1\\.23\\] {
--tw-contrast: contrast(1.23);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.drop-shadow\\/25 {
--tw-drop-shadow-alpha: 25%;
--tw-drop-shadow-size: drop-shadow(0 1px 1px var(--tw-drop-shadow-color, oklab(0% 0 0 / .25)));
--tw-drop-shadow: drop-shadow(var(--drop-shadow));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.drop-shadow {
--tw-drop-shadow-size: drop-shadow(0 1px 1px var(--tw-drop-shadow-color, #0000000d));
--tw-drop-shadow: drop-shadow(var(--drop-shadow));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.drop-shadow-\\[0_0_red\\] {
--tw-drop-shadow-size: drop-shadow(0 0 var(--tw-drop-shadow-color, red));
--tw-drop-shadow: var(--tw-drop-shadow-size);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.drop-shadow-multi {
--tw-drop-shadow-size: drop-shadow(0 1px 1px var(--tw-drop-shadow-color, #0000000d)) drop-shadow(0 9px 7px var(--tw-drop-shadow-color, #0000001a));
--tw-drop-shadow: drop-shadow(0 1px 1px #0000000d) drop-shadow(0 9px 7px #0000001a);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.drop-shadow-xl {
--tw-drop-shadow-size: drop-shadow(0 9px 7px var(--tw-drop-shadow-color, #0000001a));
--tw-drop-shadow: drop-shadow(var(--drop-shadow-xl));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.drop-shadow-none {
- --tw-drop-shadow: ;
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ --tw-drop-shadow: ;
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.drop-shadow-inherit {
@@ -23141,91 +23142,91 @@ test('filter', async () => {
.grayscale {
--tw-grayscale: grayscale(100%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.grayscale-0 {
--tw-grayscale: grayscale(0%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.grayscale-\\[var\\(--value\\)\\] {
--tw-grayscale: grayscale(var(--value));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.-hue-rotate-15 {
--tw-hue-rotate: hue-rotate(calc(15deg * -1));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.-hue-rotate-\\[45deg\\] {
--tw-hue-rotate: hue-rotate(calc(45deg * -1));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.hue-rotate-15 {
--tw-hue-rotate: hue-rotate(15deg);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.hue-rotate-\\[45deg\\] {
--tw-hue-rotate: hue-rotate(45deg);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.invert {
--tw-invert: invert(100%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.invert-0 {
--tw-invert: invert(0%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.invert-\\[var\\(--value\\)\\] {
--tw-invert: invert(var(--value));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.saturate-0 {
--tw-saturate: saturate(0%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.saturate-\\[1\\.75\\] {
--tw-saturate: saturate(1.75);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.saturate-\\[var\\(--value\\)\\] {
--tw-saturate: saturate(var(--value));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.sepia {
--tw-sepia: sepia(100%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.sepia-0 {
--tw-sepia: sepia(0%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.sepia-\\[50\\%\\] {
--tw-sepia: sepia(50%);
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.sepia-\\[var\\(--value\\)\\] {
--tw-sepia: sepia(var(--value));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.filter {
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.filter-\\[var\\(--value\\)\\] {
@@ -23418,7 +23419,7 @@ test('filter', async () => {
.blur-none {
--tw-blur: blur(var(--blur-none));
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
@property --tw-blur {
@@ -23557,187 +23558,187 @@ test('backdrop-filter', async () => {
.backdrop-blur-\\[4px\\] {
--tw-backdrop-blur: blur(4px);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-blur-none {
- --tw-backdrop-blur: ;
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ --tw-backdrop-blur: ;
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-blur-xl {
--tw-backdrop-blur: blur(var(--blur-xl));
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-brightness-50 {
--tw-backdrop-brightness: brightness(50%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-brightness-\\[1\\.23\\] {
--tw-backdrop-brightness: brightness(1.23);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-contrast-50 {
--tw-backdrop-contrast: contrast(50%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-contrast-\\[1\\.23\\] {
--tw-backdrop-contrast: contrast(1.23);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-grayscale {
--tw-backdrop-grayscale: grayscale(100%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-grayscale-0 {
--tw-backdrop-grayscale: grayscale(0%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-grayscale-\\[var\\(--value\\)\\] {
--tw-backdrop-grayscale: grayscale(var(--value));
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.-backdrop-hue-rotate-15 {
--tw-backdrop-hue-rotate: hue-rotate(calc(15deg * -1));
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.-backdrop-hue-rotate-\\[45deg\\] {
--tw-backdrop-hue-rotate: hue-rotate(calc(45deg * -1));
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-hue-rotate-15 {
--tw-backdrop-hue-rotate: hue-rotate(15deg);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-hue-rotate-\\[45deg\\] {
--tw-backdrop-hue-rotate: hue-rotate(45deg);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-invert {
--tw-backdrop-invert: invert(100%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-invert-0 {
--tw-backdrop-invert: invert(0%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-invert-\\[var\\(--value\\)\\] {
--tw-backdrop-invert: invert(var(--value));
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-opacity-1\\.25 {
--tw-backdrop-opacity: opacity(1.25%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-opacity-2\\.5 {
--tw-backdrop-opacity: opacity(2.5%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-opacity-3\\.75 {
--tw-backdrop-opacity: opacity(3.75%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-opacity-50 {
--tw-backdrop-opacity: opacity(50%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-opacity-71 {
--tw-backdrop-opacity: opacity(71%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-opacity-\\[0\\.5\\] {
--tw-backdrop-opacity: opacity(.5);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-saturate-0 {
--tw-backdrop-saturate: saturate(0%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-saturate-\\[1\\.75\\] {
--tw-backdrop-saturate: saturate(1.75);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-saturate-\\[var\\(--value\\)\\] {
--tw-backdrop-saturate: saturate(var(--value));
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-sepia {
--tw-backdrop-sepia: sepia(100%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-sepia-0 {
--tw-backdrop-sepia: sepia(0%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-sepia-\\[50\\%\\] {
--tw-backdrop-sepia: sepia(50%);
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-sepia-\\[var\\(--value\\)\\] {
--tw-backdrop-sepia: sepia(var(--value));
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-filter {
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
.backdrop-filter-\\[var\\(--value\\)\\] {
@@ -23901,8 +23902,8 @@ test('backdrop-filter', async () => {
.backdrop-blur-none {
--tw-backdrop-blur: blur(var(--backdrop-blur-none));
- -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
- backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
}
@property --tw-backdrop-blur {
@@ -24369,27 +24370,27 @@ test('contain', async () => {
.contain-inline-size {
--tw-contain-size: inline-size;
- contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
+ contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
}
.contain-layout {
--tw-contain-layout: layout;
- contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
+ contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
}
.contain-paint {
--tw-contain-paint: paint;
- contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
+ contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
}
.contain-size {
--tw-contain-size: size;
- contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
+ contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
}
.contain-style {
--tw-contain-style: style;
- contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
+ contain: var(--tw-contain-size, ) var(--tw-contain-layout, ) var(--tw-contain-paint, ) var(--tw-contain-style, );
}
.contain-\\[unset\\] {
@@ -24717,42 +24718,42 @@ test('font-variant-numeric', async () => {
.diagonal-fractions {
--tw-numeric-fraction: diagonal-fractions;
- font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
+ font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
}
.lining-nums {
--tw-numeric-figure: lining-nums;
- font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
+ font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
}
.oldstyle-nums {
--tw-numeric-figure: oldstyle-nums;
- font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
+ font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
}
.ordinal {
--tw-ordinal: ordinal;
- font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
+ font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
}
.proportional-nums {
--tw-numeric-spacing: proportional-nums;
- font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
+ font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
}
.slashed-zero {
--tw-slashed-zero: slashed-zero;
- font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
+ font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
}
.stacked-fractions {
--tw-numeric-fraction: stacked-fractions;
- font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
+ font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
}
.tabular-nums {
--tw-numeric-spacing: tabular-nums;
- font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
+ font-variant-numeric: var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );
}
.normal-nums {
@@ -27124,37 +27125,37 @@ test('ring', async () => {
}
.ring {
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.ring-0 {
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.ring-1 {
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.ring-2 {
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.ring-4 {
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.ring-\\[12px\\] {
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(12px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(12px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.ring-\\[length\\:var\\(--my-width\\)\\] {
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(var(--my-width) + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(var(--my-width) + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
@@ -27448,7 +27449,7 @@ test('ring', async () => {
}
.ring {
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
@@ -28018,32 +28019,32 @@ test('ring-offset', async () => {
.ring-offset-0 {
--tw-ring-offset-width: 0px;
- --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
}
.ring-offset-1 {
--tw-ring-offset-width: 1px;
- --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
}
.ring-offset-2 {
--tw-ring-offset-width: 2px;
- --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
}
.ring-offset-4 {
--tw-ring-offset-width: 4px;
- --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
}
.ring-offset-\\[12px\\] {
--tw-ring-offset-width: 12px;
- --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
}
.ring-offset-\\[length\\:var\\(--my-width\\)\\] {
--tw-ring-offset-width: var(--my-width);
- --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
}
.ring-offset-\\[\\#0088cc\\] {
@@ -28599,7 +28600,7 @@ describe('custom utilities', () => {
.text-sm {
font-size: var(--text-sm, .8755rem);
line-height: var(--text-sm--line-height, 1.255rem);
- text-rendering: optimizeLegibility;
+ text-rendering: optimizelegibility;
font-size: var(--text-sm, .875rem);
line-height: var(--tw-leading, var(--text-sm--line-height, 1.25rem));
}
@@ -29582,7 +29583,7 @@ describe('custom utilities', () => {
}
.example-\\[7\\/9\\] {
- --value: 7 / 9;
+ --value: 7/9;
}
.example-video {
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index 66ae59230..fd524f495 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -421,7 +421,7 @@ export function createUtilities(theme: Theme) {
if (value === null && desc.supportsFractions && candidate.value.fraction) {
let [lhs, rhs] = segment(candidate.value.fraction, '/')
if (!isPositiveInteger(lhs) || !isPositiveInteger(rhs)) return
- value = `calc(${candidate.value.fraction} * 100%)`
+ value = `calc(${lhs} / ${rhs} * 100%)`
}
// If there is still no value but the utility supports bare values,
@@ -5607,7 +5607,7 @@ export function createUtilities(theme: Theme) {
value,
alpha,
(color) => `var(--tw-inset-shadow-color, ${color})`,
- 'inset ',
+ 'inset',
),
decl('box-shadow', cssBoxShadowValue),
]
@@ -6377,7 +6377,7 @@ function resolveValueFunction(
// Ratio must be a valid fraction, e.g.: /
if (type === 'ratio') {
- let [lhs, rhs] = segment(resolved, '/')
+ let [lhs, rhs] = segment(resolved, '/').map(Number)
if (!isPositiveInteger(lhs) || !isPositiveInteger(rhs)) continue
}
@@ -6392,7 +6392,12 @@ function resolveValueFunction(
continue
}
- return { nodes: ValueParser.parse(resolved), ratio: type === 'ratio' }
+ if (type === 'ratio') {
+ let [lhs, rhs] = segment(resolved, '/')
+ return { nodes: ValueParser.parse(`${lhs.trim()} / ${rhs.trim()}`), ratio: true }
+ }
+
+ return { nodes: ValueParser.parse(resolved), ratio: false }
}
// Arbitrary value, e.g.: `--value([integer])`
@@ -6471,8 +6476,8 @@ function alphaReplacedShadowProperties(
function applyPrefix(x: string) {
if (!prefix) return x
return segment(x, ',')
- .map((value) => prefix + value)
- .join(',')
+ .map((value) => prefix.trim() + ' ' + value.trim())
+ .join(', ')
}
if (requiresFallback) {
diff --git a/packages/tailwindcss/tests/ui.spec.ts b/packages/tailwindcss/tests/ui.spec.ts
index 0c3534efd..889848c5c 100644
--- a/packages/tailwindcss/tests/ui.spec.ts
+++ b/packages/tailwindcss/tests/ui.spec.ts
@@ -1911,7 +1911,7 @@ test('outline style is optional', async ({ page }) => {
html`
`,
)
- expect(await getPropertyValue('#x', 'outline')).toEqual('rgb(255, 255, 255) solid 2px')
+ expect(await getPropertyValue('#x', 'outline')).toEqual('2px solid rgb(255, 255, 255)')
})
test('outline style is preserved when changing outline width', async ({ page }) => {
@@ -1922,11 +1922,11 @@ test('outline style is preserved when changing outline width', async ({ page })
`,
)
- expect(await getPropertyValue('#x', 'outline')).toEqual('rgb(255, 255, 255) dotted 2px')
+ expect(await getPropertyValue('#x', 'outline')).toEqual('2px dotted rgb(255, 255, 255)')
await page.locator('#x').hover()
- expect(await getPropertyValue('#x', 'outline')).toEqual('rgb(255, 255, 255) dotted 4px')
+ expect(await getPropertyValue('#x', 'outline')).toEqual('4px dotted rgb(255, 255, 255)')
})
test('borders can be added without a border-style utility', async ({ page }) => {
@@ -2249,7 +2249,7 @@ async function getPropertyValue(
selector: [string, string | undefined],
property: string,
) {
- return page.evaluate(
+ let value = await page.evaluate(
([[selector, pseudo], property]) => {
return window
.getComputedStyle(document.querySelector(selector)!, pseudo)
@@ -2257,4 +2257,16 @@ async function getPropertyValue(
},
[selector, property] as const,
)
+
+ switch (property) {
+ case 'outline':
+ // Order in webkit vs chromium is different. Sort to normalize.
+ return segment(value, ' ')
+ .map((part) => part.trim())
+ .sort((a, z) => a.length - z.length)
+ .join(' ')
+
+ default:
+ return value
+ }
}
diff --git a/patches/lightningcss@1.30.2.patch b/patches/lightningcss@1.31.1.patch
similarity index 100%
rename from patches/lightningcss@1.30.2.patch
rename to patches/lightningcss@1.31.1.patch
diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json
index 8dc97a047..a996f3eab 100644
--- a/playgrounds/nextjs/package.json
+++ b/playgrounds/nextjs/package.json
@@ -11,17 +11,17 @@
"dependencies": {
"@tailwindcss/postcss": "workspace:^",
"fast-glob": "^3.3.3",
- "next": "^16.1.0",
- "react": "^19.2.3",
- "react-dom": "^19.2.3",
+ "next": "^16.1.6",
+ "react": "^19.2.4",
+ "react-dom": "^19.2.4",
"tailwindcss": "workspace:^"
},
"devDependencies": {
"@types/node": "catalog:",
- "@types/react": "^19.2.7",
+ "@types/react": "^19.2.10",
"@types/react-dom": "^19.2.3",
"eslint": "^9.39.2",
- "eslint-config-next": "^16.1.0",
- "typescript": "^5.5.4"
+ "eslint-config-next": "^16.1.6",
+ "typescript": "^5.9.3"
}
}
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index c03663b69..b8e1e16fc 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -9,18 +9,18 @@
"upgrade": "node scripts/upgrade.mjs"
},
"dependencies": {
- "next": "^16.1.0",
- "react": "^19.2.3",
- "react-dom": "^19.2.3",
+ "next": "^16.1.6",
+ "react": "^19.2.4",
+ "react-dom": "^19.2.4",
"tailwindcss": "^3"
},
"devDependencies": {
- "@types/node": "^20.14.8",
- "@types/react": "^19.2.7",
+ "@types/node": "catalog:",
+ "@types/react": "^19.2.10",
"@types/react-dom": "^19.2.3",
"autoprefixer": "^10.4.23",
"eslint": "^9.39.2",
- "eslint-config-next": "^16.1.0",
- "typescript": "^5.5.4"
+ "eslint-config-next": "^16.1.6",
+ "typescript": "^5.9.3"
}
}
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index e158445cb..d339dc39f 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -11,14 +11,14 @@
"dependencies": {
"@tailwindcss/vite": "workspace:^",
"@vitejs/plugin-react": "^5.1.2",
- "react": "^19.2.3",
- "react-dom": "^19.2.3",
+ "react": "^19.2.4",
+ "react-dom": "^19.2.4",
"tailwindcss": "workspace:^"
},
"devDependencies": {
- "@types/react": "^19.2.7",
+ "@types/react": "^19.2.10",
"@types/react-dom": "^19.2.3",
- "bun": "^1.3.5",
+ "bun": "^1.3.7",
"vite": "catalog:"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a7d9cf6f1..be257c0fb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,35 +10,35 @@ catalogs:
specifier: ^20.19.0
version: 20.19.1
lightningcss:
- specifier: 1.30.2
- version: 1.30.2
+ specifier: 1.31.1
+ version: 1.31.1
lightningcss-darwin-arm64:
- specifier: 1.30.2
- version: 1.30.2
+ specifier: 1.31.1
+ version: 1.31.1
lightningcss-darwin-x64:
- specifier: 1.30.2
- version: 1.30.2
+ specifier: 1.31.1
+ version: 1.31.1
lightningcss-linux-arm64-gnu:
- specifier: 1.30.2
- version: 1.30.2
+ specifier: 1.31.1
+ version: 1.31.1
lightningcss-linux-arm64-musl:
- specifier: 1.30.2
- version: 1.30.2
+ specifier: 1.31.1
+ version: 1.31.1
lightningcss-linux-x64-gnu:
- specifier: 1.30.2
- version: 1.30.2
+ specifier: 1.31.1
+ version: 1.31.1
lightningcss-linux-x64-musl:
- specifier: 1.30.2
- version: 1.30.2
+ specifier: 1.31.1
+ version: 1.31.1
lightningcss-win32-x64-msvc:
- specifier: 1.30.2
- version: 1.30.2
+ specifier: 1.31.1
+ version: 1.31.1
prettier:
- specifier: 3.6.2
- version: 3.6.2
+ specifier: 3.8.1
+ version: 3.8.1
vite:
- specifier: ^7.0.0
- version: 7.0.0
+ specifier: ^7.3.1
+ version: 7.3.1
webpack:
specifier: ^5
version: 5.104.1
@@ -47,17 +47,17 @@ patchedDependencies:
'@parcel/watcher@2.5.1':
hash: zs2vvlrje3h42xp5ed2v44fep4
path: patches/@parcel__watcher@2.5.1.patch
- lightningcss@1.30.2:
+ lightningcss@1.31.1:
hash: tzyxy3asfxcqc7ihrooumyi5fm
- path: patches/lightningcss@1.30.2.patch
+ path: patches/lightningcss@1.31.1.patch
importers:
.:
devDependencies:
'@playwright/test':
- specifier: ^1.57.0
- version: 1.57.0
+ specifier: ^1.58.0
+ version: 1.58.0
'@types/node':
specifier: 'catalog:'
version: 20.19.1
@@ -69,25 +69,25 @@ importers:
version: 16.1.1(postcss@8.5.6)
prettier:
specifier: 'catalog:'
- version: 3.6.2
+ version: 3.8.1
prettier-plugin-embed:
specifier: ^0.5.1
version: 0.5.1
prettier-plugin-organize-imports:
specifier: ^4.3.0
- version: 4.3.0(prettier@3.6.2)(typescript@5.5.4)
+ version: 4.3.0(prettier@3.8.1)(typescript@5.5.4)
tsup:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(typescript@5.5.4)(yaml@2.6.0)
turbo:
- specifier: ^2.7.2
- version: 2.7.2
+ specifier: ^2.7.6
+ version: 2.7.6
typescript:
specifier: ^5.5.4
version: 5.5.4
vitest:
- specifier: ^4.0.3
- version: 4.0.12(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
+ specifier: ^4.0.18
+ version: 4.0.18(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
crates/node:
optionalDependencies:
@@ -130,13 +130,13 @@ importers:
devDependencies:
'@napi-rs/cli':
specifier: 3.4.1
- version: 3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
+ version: 3.4.1(@emnapi/runtime@1.8.1)(@types/node@20.19.1)(node-addon-api@8.3.0)
'@napi-rs/wasm-runtime':
specifier: ^1.1.1
version: 1.1.1
emnapi:
- specifier: 1.7.1
- version: 1.7.1(node-addon-api@8.3.0)
+ specifier: 1.8.1
+ version: 1.8.1(node-addon-api@8.3.0)
crates/node/npm/android-arm-eabi: {}
@@ -161,11 +161,11 @@ importers:
crates/node/npm/wasm32-wasi:
dependencies:
'@emnapi/core':
- specifier: ^1.7.1
- version: 1.7.1
+ specifier: ^1.8.1
+ version: 1.8.1
'@emnapi/runtime':
- specifier: ^1.7.1
- version: 1.7.1
+ specifier: ^1.8.1
+ version: 1.8.1
'@emnapi/wasi-threads':
specifier: ^1.1.0
version: 1.1.0
@@ -176,7 +176,7 @@ importers:
specifier: ^0.10.1
version: 0.10.1
tslib:
- specifier: ^2.4.0
+ specifier: ^2.8.1
version: 2.8.1
crates/node/npm/win32-arm64-msvc: {}
@@ -198,8 +198,8 @@ importers:
packages/@tailwindcss-browser:
devDependencies:
h3:
- specifier: ^1.15.4
- version: 1.15.4
+ specifier: ^1.15.5
+ version: 1.15.5
listhen:
specifier: ^1.9.0
version: 1.9.0
@@ -234,7 +234,7 @@ importers:
packages/@tailwindcss-node:
dependencies:
'@jridgewell/remapping':
- specifier: ^2.3.4
+ specifier: ^2.3.5
version: 2.3.5
enhanced-resolve:
specifier: ^5.18.4
@@ -244,7 +244,7 @@ importers:
version: 2.6.1
lightningcss:
specifier: 'catalog:'
- version: 1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
+ version: 1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
magic-string:
specifier: ^0.30.21
version: 0.30.21
@@ -267,8 +267,8 @@ importers:
specifier: workspace:*
version: link:../../crates/node
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.5.6
+ version: 8.5.6
tailwindcss:
specifier: workspace:*
version: link:../tailwindcss
@@ -287,7 +287,7 @@ importers:
version: link:../internal-example-plugin
postcss-import:
specifier: ^16.1.1
- version: 16.1.1(postcss@8.4.41)
+ version: 16.1.1(postcss@8.5.6)
packages/@tailwindcss-standalone:
dependencies:
@@ -314,53 +314,53 @@ importers:
version: link:../tailwindcss
devDependencies:
'@parcel/watcher-darwin-arm64':
- specifier: ^2.5.1
- version: 2.5.1
+ specifier: ^2.5.6
+ version: 2.5.6
'@parcel/watcher-darwin-x64':
- specifier: ^2.5.1
- version: 2.5.1
+ specifier: ^2.5.6
+ version: 2.5.6
'@parcel/watcher-linux-arm64-glibc':
- specifier: ^2.5.1
- version: 2.5.1
+ specifier: ^2.5.6
+ version: 2.5.6
'@parcel/watcher-linux-arm64-musl':
- specifier: ^2.5.1
- version: 2.5.1
+ specifier: ^2.5.6
+ version: 2.5.6
'@parcel/watcher-linux-x64-glibc':
- specifier: ^2.5.1
- version: 2.5.1
+ specifier: ^2.5.6
+ version: 2.5.6
'@parcel/watcher-linux-x64-musl':
- specifier: ^2.5.1
- version: 2.5.1
+ specifier: ^2.5.6
+ version: 2.5.6
'@parcel/watcher-win32-x64':
- specifier: ^2.5.1
- version: 2.5.1
+ specifier: ^2.5.6
+ version: 2.5.6
'@types/bun':
- specifier: ^1.3.5
- version: 1.3.5
+ specifier: ^1.3.7
+ version: 1.3.7
bun:
- specifier: ^1.3.5
- version: 1.3.5
+ specifier: ^1.3.7
+ version: 1.3.7
lightningcss-darwin-arm64:
specifier: 'catalog:'
- version: 1.30.2
+ version: 1.31.1
lightningcss-darwin-x64:
specifier: 'catalog:'
- version: 1.30.2
+ version: 1.31.1
lightningcss-linux-arm64-gnu:
specifier: 'catalog:'
- version: 1.30.2
+ version: 1.31.1
lightningcss-linux-arm64-musl:
specifier: 'catalog:'
- version: 1.30.2
+ version: 1.31.1
lightningcss-linux-x64-gnu:
specifier: 'catalog:'
- version: 1.30.2
+ version: 1.31.1
lightningcss-linux-x64-musl:
specifier: 'catalog:'
- version: 1.30.2
+ version: 1.31.1
lightningcss-win32-x64-msvc:
specifier: 'catalog:'
- version: 1.30.2
+ version: 1.31.1
packages/@tailwindcss-upgrade:
dependencies:
@@ -392,17 +392,17 @@ importers:
specifier: ^1.1.1
version: 1.1.1
postcss:
- specifier: ^8.4.41
- version: 8.4.41
+ specifier: ^8.5.6
+ version: 8.5.6
postcss-import:
specifier: ^16.1.1
- version: 16.1.1(postcss@8.4.41)
+ version: 16.1.1(postcss@8.5.6)
postcss-selector-parser:
specifier: ^7.1.1
version: 7.1.1
prettier:
specifier: 'catalog:'
- version: 3.6.2
+ version: 3.8.1
semver:
specifier: ^7.7.3
version: 7.7.3
@@ -446,7 +446,7 @@ importers:
version: 20.19.1
vite:
specifier: 'catalog:'
- version: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
+ version: 7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
packages/@tailwindcss-webpack:
dependencies:
@@ -475,7 +475,7 @@ importers:
packages/tailwindcss:
devDependencies:
'@jridgewell/remapping':
- specifier: ^2.3.4
+ specifier: ^2.3.5
version: 2.3.5
'@tailwindcss/oxide':
specifier: workspace:^
@@ -488,7 +488,7 @@ importers:
version: 1.7.1
lightningcss:
specifier: 'catalog:'
- version: 1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
+ version: 1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
magic-string:
specifier: ^0.30.21
version: 0.30.21
@@ -505,14 +505,14 @@ importers:
specifier: ^3.3.3
version: 3.3.3
next:
- specifier: ^16.1.0
- version: 16.1.0(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^16.1.6
+ version: 16.1.6(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react:
- specifier: ^19.2.3
- version: 19.2.3
+ specifier: ^19.2.4
+ version: 19.2.4
react-dom:
- specifier: ^19.2.3
- version: 19.2.3(react@19.2.3)
+ specifier: ^19.2.4
+ version: 19.2.4(react@19.2.4)
tailwindcss:
specifier: workspace:^
version: link:../../packages/tailwindcss
@@ -521,57 +521,57 @@ importers:
specifier: 'catalog:'
version: 20.19.1
'@types/react':
- specifier: ^19.2.7
- version: 19.2.7
+ specifier: ^19.2.10
+ version: 19.2.10
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.7)
+ version: 19.2.3(@types/react@19.2.10)
eslint:
specifier: ^9.39.2
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
- specifier: ^16.1.0
- version: 16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ specifier: ^16.1.6
+ version: 16.1.6(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
typescript:
- specifier: ^5.5.4
- version: 5.5.4
+ specifier: ^5.9.3
+ version: 5.9.3
playgrounds/v3:
dependencies:
next:
- specifier: ^16.1.0
- version: 16.1.0(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^16.1.6
+ version: 16.1.6(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react:
- specifier: ^19.2.3
- version: 19.2.3
+ specifier: ^19.2.4
+ version: 19.2.4
react-dom:
- specifier: ^19.2.3
- version: 19.2.3(react@19.2.3)
+ specifier: ^19.2.4
+ version: 19.2.4(react@19.2.4)
tailwindcss:
specifier: ^3
version: 3.4.14
devDependencies:
'@types/node':
- specifier: ^20.14.8
- version: 20.14.13
+ specifier: 'catalog:'
+ version: 20.19.1
'@types/react':
- specifier: ^19.2.7
- version: 19.2.7
+ specifier: ^19.2.10
+ version: 19.2.10
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.7)
+ version: 19.2.3(@types/react@19.2.10)
autoprefixer:
specifier: ^10.4.23
- version: 10.4.23(postcss@8.4.47)
+ version: 10.4.23(postcss@8.5.6)
eslint:
specifier: ^9.39.2
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
- specifier: ^16.1.0
- version: 16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ specifier: ^16.1.6
+ version: 16.1.6(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
typescript:
- specifier: ^5.5.4
- version: 5.6.3
+ specifier: ^5.9.3
+ version: 5.9.3
playgrounds/vite:
dependencies:
@@ -580,29 +580,29 @@ importers:
version: link:../../packages/@tailwindcss-vite
'@vitejs/plugin-react':
specifier: ^5.1.2
- version: 5.1.2(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
+ version: 5.1.2(vite@7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
react:
- specifier: ^19.2.3
- version: 19.2.3
+ specifier: ^19.2.4
+ version: 19.2.4
react-dom:
- specifier: ^19.2.3
- version: 19.2.3(react@19.2.3)
+ specifier: ^19.2.4
+ version: 19.2.4(react@19.2.4)
tailwindcss:
specifier: workspace:^
version: link:../../packages/tailwindcss
devDependencies:
'@types/react':
- specifier: ^19.2.7
- version: 19.2.7
+ specifier: ^19.2.10
+ version: 19.2.10
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.7)
+ version: 19.2.3(@types/react@19.2.10)
bun:
- specifier: ^1.3.5
- version: 1.3.5
+ specifier: ^1.3.7
+ version: 1.3.7
vite:
specifier: 'catalog:'
- version: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
+ version: 7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
packages:
@@ -696,9 +696,15 @@ packages:
'@emnapi/core@1.7.1':
resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
+ '@emnapi/core@1.8.1':
+ resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==}
+
'@emnapi/runtime@1.7.1':
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
+ '@emnapi/runtime@1.8.1':
+ resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==}
+
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
@@ -1506,9 +1512,6 @@ packages:
'@jridgewell/source-map@0.3.6':
resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
@@ -1851,56 +1854,56 @@ packages:
resolution: {integrity: sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ==}
engines: {node: '>= 10'}
- '@next/env@16.1.0':
- resolution: {integrity: sha512-Dd23XQeFHmhf3KBW76leYVkejHlCdB7erakC2At2apL1N08Bm+dLYNP+nNHh0tzUXfPQcNcXiQyacw0PG4Fcpw==}
+ '@next/env@16.1.6':
+ resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==}
- '@next/eslint-plugin-next@16.1.0':
- resolution: {integrity: sha512-sooC/k0LCF4/jLXYHpgfzJot04lZQqsttn8XJpTguP8N3GhqXN3wSkh68no2OcZzS/qeGwKDFTqhZ8WofdXmmQ==}
+ '@next/eslint-plugin-next@16.1.6':
+ resolution: {integrity: sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==}
- '@next/swc-darwin-arm64@16.1.0':
- resolution: {integrity: sha512-onHq8dl8KjDb8taANQdzs3XmIqQWV3fYdslkGENuvVInFQzZnuBYYOG2HGHqqtvgmEU7xWzhgndXXxnhk4Z3fQ==}
+ '@next/swc-darwin-arm64@16.1.6':
+ resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@16.1.0':
- resolution: {integrity: sha512-Am6VJTp8KhLuAH13tPrAoVIXzuComlZlMwGr++o2KDjWiKPe3VwpxYhgV6I4gKls2EnsIMggL4y7GdXyDdJcFA==}
+ '@next/swc-darwin-x64@16.1.6':
+ resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@16.1.0':
- resolution: {integrity: sha512-fVicfaJT6QfghNyg8JErZ+EMNQ812IS0lmKfbmC01LF1nFBcKfcs4Q75Yy8IqnsCqH/hZwGhqzj3IGVfWV6vpA==}
+ '@next/swc-linux-arm64-gnu@16.1.6':
+ resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@16.1.0':
- resolution: {integrity: sha512-TojQnDRoX7wJWXEEwdfuJtakMDW64Q7NrxQPviUnfYJvAx5/5wcGE+1vZzQ9F17m+SdpFeeXuOr6v3jbyusYMQ==}
+ '@next/swc-linux-arm64-musl@16.1.6':
+ resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@16.1.0':
- resolution: {integrity: sha512-quhNFVySW4QwXiZkZ34SbfzNBm27vLrxZ2HwTfFFO1BBP0OY1+pI0nbyewKeq1FriqU+LZrob/cm26lwsiAi8Q==}
+ '@next/swc-linux-x64-gnu@16.1.6':
+ resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@16.1.0':
- resolution: {integrity: sha512-6JW0z2FZUK5iOVhUIWqE4RblAhUj1EwhZ/MwteGb//SpFTOHydnhbp3868gxalwea+mbOLWO6xgxj9wA9wNvNw==}
+ '@next/swc-linux-x64-musl@16.1.6':
+ resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@16.1.0':
- resolution: {integrity: sha512-+DK/akkAvvXn5RdYN84IOmLkSy87SCmpofJPdB8vbLmf01BzntPBSYXnMvnEEv/Vcf3HYJwt24QZ/s6sWAwOMQ==}
+ '@next/swc-win32-arm64-msvc@16.1.6':
+ resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@16.1.0':
- resolution: {integrity: sha512-Tr0j94MphimCCks+1rtYPzQFK+faJuhHWCegU9S9gDlgyOk8Y3kPmO64UcjyzZAlligeBtYZ/2bEyrKq0d2wqQ==}
+ '@next/swc-win32-x64-msvc@16.1.6':
+ resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -1973,58 +1976,58 @@ packages:
'@octokit/types@16.0.0':
resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==}
- '@oven/bun-darwin-aarch64@1.3.5':
- resolution: {integrity: sha512-8GvNtMo0NINM7Emk9cNAviCG3teEgr3BUX9be0+GD029zIagx2Sf54jMui1Eu1IpFm7nWHODuLEefGOQNaJ0gQ==}
+ '@oven/bun-darwin-aarch64@1.3.7':
+ resolution: {integrity: sha512-Mh78f4B+vNTOhFpI7RWHRWDqSKTnFXj/MauRx7I/GmNwEfw56sUx98gWRwXyF4lkW+9VNU+33wuw6E+M22W66w==}
cpu: [arm64]
os: [darwin]
- '@oven/bun-darwin-x64-baseline@1.3.5':
- resolution: {integrity: sha512-p5q3rJk48qhLuLBOFehVc+kqCE03YrswTc6NCxbwsxiwfySXwcAvpF2KWKF/ZZObvvR8hCCvqe1F81b2p5r2dg==}
+ '@oven/bun-darwin-x64-baseline@1.3.7':
+ resolution: {integrity: sha512-bUND1aQoTCfIL+idALT7FWtuX59ltOIRo954c7p/JkESbSIJ01jY06BSNVbkGk8RQM19v/7qiqZZqi4NyO4Utw==}
cpu: [x64]
os: [darwin]
- '@oven/bun-darwin-x64@1.3.5':
- resolution: {integrity: sha512-r33eHQOHAwkuiBJIwmkXIyqONQOQMnd1GMTpDzaxx9vf9+svby80LZO9Hcm1ns6KT/TBRFyODC/0loA7FAaffg==}
+ '@oven/bun-darwin-x64@1.3.7':
+ resolution: {integrity: sha512-dFfKdSVz6Ois5zjEJboUC7igcYAVd+c//ajotd0L6WUQAKQrHMVq/+6LjOj/0zjC6VPFNGWzeF8erymNo1y0Jw==}
cpu: [x64]
os: [darwin]
- '@oven/bun-linux-aarch64-musl@1.3.5':
- resolution: {integrity: sha512-HKBeUlJdNduRkzJKZ5DXM+pPqntfC50/Hu2X65jVX0Y7hu/6IC8RaUTqpr8FtCZqqmc9wDK0OTL+Mbi9UQIKYQ==}
+ '@oven/bun-linux-aarch64-musl@1.3.7':
+ resolution: {integrity: sha512-QDxrROdUnC1d/uoilXtUeFHaLhYdRN7dRIzw/Iqj/vrrhnkA6VS+HYoCWtyyVvci/K+JrPmDwxOWlSRpmV4INA==}
cpu: [arm64]
os: [linux]
- '@oven/bun-linux-aarch64@1.3.5':
- resolution: {integrity: sha512-zkcHPI23QxJ1TdqafhgkXt1NOEN8o5C460sVeNnrhfJ43LwZgtfcvcQE39x/pBedu67fatY8CU0iY00nOh46ZQ==}
+ '@oven/bun-linux-aarch64@1.3.7':
+ resolution: {integrity: sha512-m03OtzEs+/RkWtk6tBf8yw0GW4P8ajfzTXnTt984tQBgkMubGQYUyUnFasWgr3mD2820LhkVjhYeBf1rkz/biQ==}
cpu: [arm64]
os: [linux]
- '@oven/bun-linux-x64-baseline@1.3.5':
- resolution: {integrity: sha512-FeCQyBU62DMuB0nn01vPnf3McXrKOsrK9p7sHaBFYycw0mmoU8kCq/WkBkGMnLuvQljJSyen8QBTx+fXdNupWg==}
+ '@oven/bun-linux-x64-baseline@1.3.7':
+ resolution: {integrity: sha512-Jlb/AcrIFU3QDeR3EL4UVT1CIKqnLJDgbU+R0k/+NaSWMrBEpZV+gJJT5L1cmEKTNhU/d+c7hudxkjtqA7XXqA==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64-musl-baseline@1.3.5':
- resolution: {integrity: sha512-TJiYC7KCr0XxFTsxgwQOeE7dncrEL/RSyL0EzSL3xRkrxJMWBCvCSjQn7LV1i6T7hFst0+3KoN3VWvD5BinqHA==}
+ '@oven/bun-linux-x64-musl-baseline@1.3.7':
+ resolution: {integrity: sha512-lySQQ7zJJsoa5hQH+PE5bQyQaTI8G2Erszhu4iQuDtsocwy3zSxjB6TxGWTd4HmetPl9aRvg3nb2KR8RVAd7ug==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64-musl@1.3.5':
- resolution: {integrity: sha512-XkCCHkByYn8BIDvoxnny898znju4xnW2kvFE8FT5+0Y62cWdcBGMZ9RdsEUTeRz16k8hHtJpaSfLcEmNTFIwRQ==}
+ '@oven/bun-linux-x64-musl@1.3.7':
+ resolution: {integrity: sha512-aK8fvkCosrHRG3CNdVqMom1C8Rj3XkqZp0ZFSBXgaXlKP22RkxlEE9tS7OmSq9yVgEk6euTB3dW4NFo/jlXqeg==}
cpu: [x64]
os: [linux]
- '@oven/bun-linux-x64@1.3.5':
- resolution: {integrity: sha512-n7zhKTSDZS0yOYg5Rq8easZu5Y/o47sv0c7yGr2ciFdcie9uYV55fZ7QMqhWMGK33ezCSikh5EDkUMCIvfWpjA==}
+ '@oven/bun-linux-x64@1.3.7':
+ resolution: {integrity: sha512-uttKQ/eIRVGc4uBtLRqmQqXGf57/dmQaF0AEd37RQNRRRd1P/VYnFMiMcVaot3HJ6IFjHjGtcPO9ekT49LxBYQ==}
cpu: [x64]
os: [linux]
- '@oven/bun-windows-x64-baseline@1.3.5':
- resolution: {integrity: sha512-rtVQB9/1XK8FWJgFtsOthbPifRMYypgJwxu+pK3NHx8WvFKmq7HcPDqNr8xLzGULjQEO7eAo2aOZfONOwYz+5g==}
+ '@oven/bun-windows-x64-baseline@1.3.7':
+ resolution: {integrity: sha512-wMgELfW5vFceh4qEOYb5iV5TjrjjnBJzE383ixA3kqGKzaubksSxNc11eZhS0ptcJ5a0UjN5hfbMh6sYoh+cRQ==}
cpu: [x64]
os: [win32]
- '@oven/bun-windows-x64@1.3.5':
- resolution: {integrity: sha512-T3xkODItb/0ftQPFsZDc7EAX2D6A4TEazQ2YZyofZToO8Q7y8YT8ooWdhd0BQiTCd66uEvgE1DCZetynwg2IoA==}
+ '@oven/bun-windows-x64@1.3.7':
+ resolution: {integrity: sha512-3QdIGdSn3fkssCq/vPjtPLAQxo+eMUzcwJedn1c5mXDy1AoisjhoxhWnbVl8+uk+wt9N6JUPdISoe0N4OdwXfg==}
cpu: [x64]
os: [win32]
@@ -2049,6 +2052,12 @@ packages:
'@parcel/watcher-darwin-arm64@2.5.1':
resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@parcel/watcher-darwin-arm64@2.5.6':
+ resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
+ engines: {node: '>= 10.0.0'}
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.0':
@@ -2060,6 +2069,12 @@ packages:
'@parcel/watcher-darwin-x64@2.5.1':
resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@parcel/watcher-darwin-x64@2.5.6':
+ resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
+ engines: {node: '>= 10.0.0'}
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.0':
@@ -2107,6 +2122,12 @@ packages:
'@parcel/watcher-linux-arm64-glibc@2.5.1':
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.6':
+ resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
+ engines: {node: '>= 10.0.0'}
os: [linux]
'@parcel/watcher-linux-arm64-musl@2.5.0':
@@ -2118,6 +2139,12 @@ packages:
'@parcel/watcher-linux-arm64-musl@2.5.1':
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@parcel/watcher-linux-arm64-musl@2.5.6':
+ resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
+ engines: {node: '>= 10.0.0'}
os: [linux]
'@parcel/watcher-linux-x64-glibc@2.5.0':
@@ -2129,6 +2156,12 @@ packages:
'@parcel/watcher-linux-x64-glibc@2.5.1':
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ '@parcel/watcher-linux-x64-glibc@2.5.6':
+ resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
+ engines: {node: '>= 10.0.0'}
os: [linux]
'@parcel/watcher-linux-x64-musl@2.5.0':
@@ -2140,6 +2173,12 @@ packages:
'@parcel/watcher-linux-x64-musl@2.5.1':
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ '@parcel/watcher-linux-x64-musl@2.5.6':
+ resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
+ engines: {node: '>= 10.0.0'}
os: [linux]
'@parcel/watcher-wasm@2.5.0':
@@ -2181,6 +2220,12 @@ packages:
'@parcel/watcher-win32-x64@2.5.1':
resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ '@parcel/watcher-win32-x64@2.5.6':
+ resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
+ engines: {node: '>= 10.0.0'}
os: [win32]
'@parcel/watcher@2.5.0':
@@ -2195,8 +2240,8 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@playwright/test@1.57.0':
- resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==}
+ '@playwright/test@1.58.0':
+ resolution: {integrity: sha512-fWza+Lpbj6SkQKCrU6si4iu+fD2dD3gxNHFhUPxsfXBPhnv3rRSQVd0NtBUT9Z/RhF/boCBcuUaMUSTRTopjZg==}
engines: {node: '>=18'}
hasBin: true
@@ -2349,8 +2394,8 @@ packages:
'@types/braces@3.0.5':
resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==}
- '@types/bun@1.3.5':
- resolution: {integrity: sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==}
+ '@types/bun@1.3.7':
+ resolution: {integrity: sha512-lmNuMda+Z9b7tmhA0tohwy8ZWFSnmQm1UDWXtH5r9F7wZCfkeO3Jx7wKQ1EOiKq43yHts7ky6r8SDJQWRNupkA==}
'@types/chai@5.2.3':
resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
@@ -2373,9 +2418,6 @@ packages:
'@types/json5@0.0.29':
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
- '@types/node@20.14.13':
- resolution: {integrity: sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==}
-
'@types/node@20.19.1':
resolution: {integrity: sha512-jJD50LtlD2dodAEO653i3YF04NWak6jN3ky+Ri3Em3mGR39/glWiboM/IePaRbgwSfqM1TpGXfAg8ohn/4dTgA==}
@@ -2387,8 +2429,8 @@ packages:
peerDependencies:
'@types/react': ^19.2.0
- '@types/react@19.2.7':
- resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==}
+ '@types/react@19.2.10':
+ resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==}
'@types/semver@7.7.1':
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
@@ -2458,11 +2500,11 @@ packages:
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
- '@vitest/expect@4.0.12':
- resolution: {integrity: sha512-is+g0w8V3/ZhRNrRizrJNr8PFQKwYmctWlU4qg8zy5r9aIV5w8IxXLlfbbxJCwSpsVl2PXPTm2/zruqTqz3QSg==}
+ '@vitest/expect@4.0.18':
+ resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==}
- '@vitest/mocker@4.0.12':
- resolution: {integrity: sha512-GsmA/tD5Ht3RUFoz41mZsMU1AXch3lhmgbTnoSPTdH231g7S3ytNN1aU0bZDSyxWs8WA7KDyMPD5L4q6V6vj9w==}
+ '@vitest/mocker@4.0.18':
+ resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==}
peerDependencies:
msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0-0
@@ -2472,20 +2514,20 @@ packages:
vite:
optional: true
- '@vitest/pretty-format@4.0.12':
- resolution: {integrity: sha512-R7nMAcnienG17MvRN8TPMJiCG8rrZJblV9mhT7oMFdBXvS0x+QD6S1G4DxFusR2E0QIS73f7DqSR1n87rrmE+g==}
+ '@vitest/pretty-format@4.0.18':
+ resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==}
- '@vitest/runner@4.0.12':
- resolution: {integrity: sha512-hDlCIJWuwlcLumfukPsNfPDOJokTv79hnOlf11V+n7E14rHNPz0Sp/BO6h8sh9qw4/UjZiKyYpVxK2ZNi+3ceQ==}
+ '@vitest/runner@4.0.18':
+ resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==}
- '@vitest/snapshot@4.0.12':
- resolution: {integrity: sha512-2jz9zAuBDUSbnfyixnyOd1S2YDBrZO23rt1bicAb6MA/ya5rHdKFRikPIDpBj/Dwvh6cbImDmudegnDAkHvmRQ==}
+ '@vitest/snapshot@4.0.18':
+ resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==}
- '@vitest/spy@4.0.12':
- resolution: {integrity: sha512-GZjI9PPhiOYNX8Nsyqdw7JQB+u0BptL5fSnXiottAUBHlcMzgADV58A7SLTXXQwcN1yZ6gfd1DH+2bqjuUlCzw==}
+ '@vitest/spy@4.0.18':
+ resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==}
- '@vitest/utils@4.0.12':
- resolution: {integrity: sha512-DVS/TLkLdvGvj1avRy0LSmKfrcI9MNFvNGN6ECjTUHWJdlcgPDOXhjMis5Dh7rBH62nAmSXnkPbE+DZ5YD75Rw==}
+ '@vitest/utils@4.0.18':
+ resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==}
'@webassemblyjs/ast@1.14.1':
resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
@@ -2710,11 +2752,11 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
- bun-types@1.3.5:
- resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==}
+ bun-types@1.3.7:
+ resolution: {integrity: sha512-qyschsA03Qz+gou+apt6HNl6HnI+sJJLL4wLDke4iugsE6584CMupOtTY1n+2YC9nGVrEKUlTs99jjRLKgWnjQ==}
- bun@1.3.5:
- resolution: {integrity: sha512-c1YHIGUfgvYPJmLug5QiLzNWlX2Dg7X/67JWu1Va+AmMXNXzC/KQn2lgQ7rD+n1u1UqDpJMowVGGxTNpbPydNw==}
+ bun@1.3.7:
+ resolution: {integrity: sha512-ha86NG8WiAXYR7eQw/9S+7V7Lo8KfD36XutWJNS1VndzaipWS0QIen5n3K9MT3PpP/sdGmmHjhkrU0sCM2lGGQ==}
os: [darwin, linux, win32]
hasBin: true
@@ -2748,9 +2790,6 @@ packages:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
- caniuse-lite@1.0.30001755:
- resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==}
-
caniuse-lite@1.0.30001761:
resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==}
@@ -2913,10 +2952,6 @@ packages:
engines: {node: '>=0.10'}
hasBin: true
- detect-libc@2.0.4:
- resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
- engines: {node: '>=8'}
-
detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
@@ -2944,8 +2979,8 @@ packages:
electron-to-chromium@1.5.267:
resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
- emnapi@1.7.1:
- resolution: {integrity: sha512-wlLK2xFq+T+rCBlY6+lPlFVDEyE93b7hSn9dMrfWBIcPf4ArwUvymvvMnN9M5WWuiryYQe9M+UJrkqw4trdyRA==}
+ emnapi@1.8.1:
+ resolution: {integrity: sha512-34i2BbgHx1LnEO4JCGQYo6h6s4e4KrdWtdTHfllBNLbXSHPmdIHplxKejfabsRK+ukNciqVdalB+fxMibqHdaQ==}
peerDependencies:
node-addon-api: '>= 6.1.0'
peerDependenciesMeta:
@@ -3026,8 +3061,8 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- eslint-config-next@16.1.0:
- resolution: {integrity: sha512-RlPb8E2uO/Ix/w3kizxz6+6ogw99WqtNzTG0ArRZ5NEkIYcsfRb8U0j7aTG7NjRvcrsak5QtUSuxGNN2UcA58g==}
+ eslint-config-next@16.1.6:
+ resolution: {integrity: sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA==}
peerDependencies:
eslint: '>=9.0.0'
typescript: '>=3.3.1'
@@ -3339,8 +3374,8 @@ packages:
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
- h3@1.15.4:
- resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==}
+ h3@1.15.5:
+ resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==}
has-bigints@1.0.2:
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
@@ -3633,67 +3668,74 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
- lightningcss-android-arm64@1.30.2:
- resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
+ lightningcss-android-arm64@1.31.1:
+ resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [android]
- lightningcss-darwin-arm64@1.30.2:
- resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
+ lightningcss-darwin-arm64@1.31.1:
+ resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [darwin]
- lightningcss-darwin-x64@1.30.2:
- resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
+ lightningcss-darwin-x64@1.31.1:
+ resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [darwin]
- lightningcss-freebsd-x64@1.30.2:
- resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
+ lightningcss-freebsd-x64@1.31.1:
+ resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
- lightningcss-linux-arm-gnueabihf@1.30.2:
- resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
+ lightningcss-linux-arm-gnueabihf@1.31.1:
+ resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
- lightningcss-linux-arm64-gnu@1.30.2:
- resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
+ lightningcss-linux-arm64-gnu@1.31.1:
+ resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [linux]
- lightningcss-linux-arm64-musl@1.30.2:
- resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
+ lightningcss-linux-arm64-musl@1.31.1:
+ resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==}
engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
os: [linux]
- lightningcss-linux-x64-gnu@1.30.2:
- resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
+ lightningcss-linux-x64-gnu@1.31.1:
+ resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [linux]
- lightningcss-linux-x64-musl@1.30.2:
- resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
+ lightningcss-linux-x64-musl@1.31.1:
+ resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [linux]
- lightningcss-win32-arm64-msvc@1.30.2:
- resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
+ lightningcss-win32-arm64-msvc@1.31.1:
+ resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
- lightningcss-win32-x64-msvc@1.30.2:
- resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
+ lightningcss-win32-x64-msvc@1.31.1:
+ resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==}
engines: {node: '>= 12.0.0'}
+ cpu: [x64]
os: [win32]
- lightningcss@1.30.2:
- resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
+ lightningcss@1.31.1:
+ resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==}
engines: {node: '>= 12.0.0'}
lilconfig@2.1.0:
@@ -3816,19 +3858,14 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
- next@16.1.0:
- resolution: {integrity: sha512-Y+KbmDbefYtHDDQKLNrmzE/YYzG2msqo2VXhzh5yrJ54tx/6TmGdkR5+kP9ma7i7LwZpZMfoY3m/AoPPPKxtVw==}
+ next@16.1.6:
+ resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -3871,8 +3908,8 @@ packages:
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
hasBin: true
- node-mock-http@1.0.2:
- resolution: {integrity: sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g==}
+ node-mock-http@1.0.4:
+ resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==}
node-releases@2.0.27:
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
@@ -3921,6 +3958,9 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
onetime@6.0.0:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
@@ -4007,13 +4047,13 @@ packages:
pkg-types@1.3.0:
resolution: {integrity: sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==}
- playwright-core@1.57.0:
- resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==}
+ playwright-core@1.58.0:
+ resolution: {integrity: sha512-aaoB1RWrdNi3//rOeKuMiS65UCcgOVljU46At6eFcOFPFHWtd2weHRRow6z/n+Lec0Lvu0k9ZPKJSjPugikirw==}
engines: {node: '>=18'}
hasBin: true
- playwright@1.57.0:
- resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==}
+ playwright@1.58.0:
+ resolution: {integrity: sha512-2SVA0sbPktiIY/MCOPX8e86ehA/e+tDNq+e5Y8qjKYti2Z/JG7xnronT/TXTIkKbYGWlCbuucZ6dziEgkoEjQQ==}
engines: {node: '>=18'}
hasBin: true
@@ -4094,14 +4134,6 @@ packages:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.4.41:
- resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- postcss@8.4.47:
- resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
- engines: {node: ^10 || ^12 || >=14}
-
postcss@8.5.6:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
@@ -4123,8 +4155,8 @@ packages:
vue-tsc:
optional: true
- prettier@3.6.2:
- resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
+ prettier@3.8.1:
+ resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
engines: {node: '>=14'}
hasBin: true
@@ -4144,10 +4176,10 @@ packages:
randombytes@2.1.0:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
- react-dom@19.2.3:
- resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
+ react-dom@19.2.4:
+ resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
peerDependencies:
- react: ^19.2.3
+ react: ^19.2.4
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -4156,8 +4188,8 @@ packages:
resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
engines: {node: '>=0.10.0'}
- react@19.2.3:
- resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
+ react@19.2.4:
+ resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -4469,6 +4501,10 @@ packages:
tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
+ tinyexec@1.0.2:
+ resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
+ engines: {node: '>=18'}
+
tinyglobby@0.2.14:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
@@ -4547,38 +4583,38 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- turbo-darwin-64@2.7.2:
- resolution: {integrity: sha512-dxY3X6ezcT5vm3coK6VGixbrhplbQMwgNsCsvZamS/+/6JiebqW9DKt4NwpgYXhDY2HdH00I7FWs3wkVuan4rA==}
+ turbo-darwin-64@2.7.6:
+ resolution: {integrity: sha512-bYu0qnWju2Ha3EbIkPCk1SMLT3sltKh1P/Jy5FER6BmH++H5z+T5MHh3W1Xoers9rk4N1VdKvog9FO1pxQyjhw==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.7.2:
- resolution: {integrity: sha512-1bXmuwPLqNFt3mzrtYcVx1sdJ8UYb124Bf48nIgcpMCGZy3kDhgxNv1503kmuK/37OGOZbsWSQFU4I08feIuSg==}
+ turbo-darwin-arm64@2.7.6:
+ resolution: {integrity: sha512-KCxTf3Y1hgNLYIWRLw8bwH8Zie9RyCGoxAlXYsCBI/YNqBSR+ZZK9KYzFxAqDaVaNvTwLFv3rJRGsXOFWg4+Uw==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.7.2:
- resolution: {integrity: sha512-kP+TiiMaiPugbRlv57VGLfcjFNsFbo8H64wMBCPV2270Or2TpDCBULMzZrvEsvWFjT3pBFvToYbdp8/Kw0jAQg==}
+ turbo-linux-64@2.7.6:
+ resolution: {integrity: sha512-vjoU8zIfNgvJR3cMitgw7inEoi6bmuVuFawDl5yKtxjAEhDktFdRBpGS3WojD4l3BklBbIK689ssXcGf21LxRA==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.7.2:
- resolution: {integrity: sha512-VDJwQ0+8zjAfbyY6boNaWfP6RIez4ypKHxwkuB6SrWbOSk+vxTyW5/hEjytTwK8w/TsbKVcMDyvpora8tEsRFw==}
+ turbo-linux-arm64@2.7.6:
+ resolution: {integrity: sha512-TcMpBvTqZf+1DptrVYLbZls7WY1UVNDTGaf0bo7/GCgWYv5eZHCVo4Td7kCJeDU4glbXg67REX0md0S0V6ghMg==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.7.2:
- resolution: {integrity: sha512-rPjqQXVnI6A6oxgzNEE8DNb6Vdj2Wwyhfv3oDc+YM3U9P7CAcBIlKv/868mKl4vsBtz4ouWpTQNXG8vljgJO+w==}
+ turbo-windows-64@2.7.6:
+ resolution: {integrity: sha512-1/MhkYldiihjneY8QnnDMbAkHXn/udTWSVYS94EMlkE9AShozsLTTOT1gDOpX06EfEW5njP09suhMvxbvwuwpQ==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.7.2:
- resolution: {integrity: sha512-tcnHvBhO515OheIFWdxA+qUvZzNqqcHbLVFc1+n+TJ1rrp8prYicQtbtmsiKgMvr/54jb9jOabU62URAobnB7g==}
+ turbo-windows-arm64@2.7.6:
+ resolution: {integrity: sha512-0wDVnUJLFAWm4ZzOQFDkbyyUqaszorTGf3Rdc22IRIyJTTLd6ajqdb+cWD89UZ1RKr953+PZR1gqgWQY4PDuhA==}
cpu: [arm64]
os: [win32]
- turbo@2.7.2:
- resolution: {integrity: sha512-5JIA5aYBAJSAhrhbyag1ZuMSgUZnHtI+Sq3H8D3an4fL8PeF+L1yYvbEJg47akP1PFfATMf5ehkqFnxfkmuwZQ==}
+ turbo@2.7.6:
+ resolution: {integrity: sha512-PO9AvJLEsNLO+EYhF4zB+v10hOjsJe5kJW+S6tTbRv+TW7gf1Qer4mfjP9h3/y9h8ZiPvOrenxnEgDtFgaM5zw==}
hasBin: true
typanion@3.14.0:
@@ -4620,8 +4656,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- typescript@5.6.3:
- resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
hasBin: true
@@ -4631,6 +4667,9 @@ packages:
ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+ ufo@1.6.3:
+ resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==}
+
unbox-primitive@1.1.0:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
@@ -4638,9 +4677,6 @@ packages:
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
- undici-types@5.26.5:
- resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
-
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
@@ -4716,19 +4752,58 @@ packages:
yaml:
optional: true
- vitest@4.0.12:
- resolution: {integrity: sha512-pmW4GCKQ8t5Ko1jYjC3SqOr7TUKN7uHOHB/XGsAIb69eYu6d1ionGSsb5H9chmPf+WeXt0VE7jTXsB1IvWoNbw==}
+ vite@7.3.1:
+ resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ lightningcss: ^1.21.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ vitest@4.0.18:
+ resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@opentelemetry/api': ^1.9.0
- '@types/debug': ^4.1.12
'@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.0.12
- '@vitest/browser-preview': 4.0.12
- '@vitest/browser-webdriverio': 4.0.12
- '@vitest/ui': 4.0.12
+ '@vitest/browser-playwright': 4.0.18
+ '@vitest/browser-preview': 4.0.18
+ '@vitest/browser-webdriverio': 4.0.18
+ '@vitest/ui': 4.0.18
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
@@ -4736,8 +4811,6 @@ packages:
optional: true
'@opentelemetry/api':
optional: true
- '@types/debug':
- optional: true
'@types/node':
optional: true
'@vitest/browser-playwright':
@@ -4959,10 +5032,19 @@ snapshots:
'@emnapi/wasi-threads': 1.1.0
tslib: 2.8.1
+ '@emnapi/core@1.8.1':
+ dependencies:
+ '@emnapi/wasi-threads': 1.1.0
+ tslib: 2.8.1
+
'@emnapi/runtime@1.7.1':
dependencies:
tslib: 2.8.1
+ '@emnapi/runtime@1.8.1':
+ dependencies:
+ tslib: 2.8.1
+
'@emnapi/wasi-threads@1.1.0':
dependencies:
tslib: 2.8.1
@@ -5336,7 +5418,7 @@ snapshots:
'@img/sharp-wasm32@0.34.5':
dependencies:
- '@emnapi/runtime': 1.7.1
+ '@emnapi/runtime': 1.8.1
optional: true
'@img/sharp-win32-arm64@0.34.5':
@@ -5484,7 +5566,7 @@ snapshots:
'@jridgewell/gen-mapping@0.3.12':
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.29
'@jridgewell/gen-mapping@0.3.5':
@@ -5507,8 +5589,6 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.12
'@jridgewell/trace-mapping': 0.3.29
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.25':
@@ -5519,9 +5599,9 @@ snapshots:
'@jridgewell/trace-mapping@0.3.29':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
- '@napi-rs/cli@3.4.1(@emnapi/runtime@1.7.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
+ '@napi-rs/cli@3.4.1(@emnapi/runtime@1.8.1)(@types/node@20.19.1)(node-addon-api@8.3.0)':
dependencies:
'@inquirer/prompts': 7.10.1(@types/node@20.19.1)
'@napi-rs/cross-toolchain': 1.0.3
@@ -5530,13 +5610,13 @@ snapshots:
clipanion: 4.0.0-rc.4(typanion@3.14.0)
colorette: 2.0.20
debug: 4.4.3
- emnapi: 1.7.1(node-addon-api@8.3.0)
+ emnapi: 1.8.1(node-addon-api@8.3.0)
es-toolkit: 1.43.0
js-yaml: 4.1.0
semver: 7.7.3
typanion: 3.14.0
optionalDependencies:
- '@emnapi/runtime': 1.7.1
+ '@emnapi/runtime': 1.8.1
transitivePeerDependencies:
- '@napi-rs/cross-toolchain-arm64-target-aarch64'
- '@napi-rs/cross-toolchain-arm64-target-armv7'
@@ -5765,34 +5845,34 @@ snapshots:
'@napi-rs/wasm-tools-win32-ia32-msvc': 1.0.1
'@napi-rs/wasm-tools-win32-x64-msvc': 1.0.1
- '@next/env@16.1.0': {}
+ '@next/env@16.1.6': {}
- '@next/eslint-plugin-next@16.1.0':
+ '@next/eslint-plugin-next@16.1.6':
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@16.1.0':
+ '@next/swc-darwin-arm64@16.1.6':
optional: true
- '@next/swc-darwin-x64@16.1.0':
+ '@next/swc-darwin-x64@16.1.6':
optional: true
- '@next/swc-linux-arm64-gnu@16.1.0':
+ '@next/swc-linux-arm64-gnu@16.1.6':
optional: true
- '@next/swc-linux-arm64-musl@16.1.0':
+ '@next/swc-linux-arm64-musl@16.1.6':
optional: true
- '@next/swc-linux-x64-gnu@16.1.0':
+ '@next/swc-linux-x64-gnu@16.1.6':
optional: true
- '@next/swc-linux-x64-musl@16.1.0':
+ '@next/swc-linux-x64-musl@16.1.6':
optional: true
- '@next/swc-win32-arm64-msvc@16.1.0':
+ '@next/swc-win32-arm64-msvc@16.1.6':
optional: true
- '@next/swc-win32-x64-msvc@16.1.0':
+ '@next/swc-win32-x64-msvc@16.1.6':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -5871,37 +5951,37 @@ snapshots:
dependencies:
'@octokit/openapi-types': 27.0.0
- '@oven/bun-darwin-aarch64@1.3.5':
+ '@oven/bun-darwin-aarch64@1.3.7':
optional: true
- '@oven/bun-darwin-x64-baseline@1.3.5':
+ '@oven/bun-darwin-x64-baseline@1.3.7':
optional: true
- '@oven/bun-darwin-x64@1.3.5':
+ '@oven/bun-darwin-x64@1.3.7':
optional: true
- '@oven/bun-linux-aarch64-musl@1.3.5':
+ '@oven/bun-linux-aarch64-musl@1.3.7':
optional: true
- '@oven/bun-linux-aarch64@1.3.5':
+ '@oven/bun-linux-aarch64@1.3.7':
optional: true
- '@oven/bun-linux-x64-baseline@1.3.5':
+ '@oven/bun-linux-x64-baseline@1.3.7':
optional: true
- '@oven/bun-linux-x64-musl-baseline@1.3.5':
+ '@oven/bun-linux-x64-musl-baseline@1.3.7':
optional: true
- '@oven/bun-linux-x64-musl@1.3.5':
+ '@oven/bun-linux-x64-musl@1.3.7':
optional: true
- '@oven/bun-linux-x64@1.3.5':
+ '@oven/bun-linux-x64@1.3.7':
optional: true
- '@oven/bun-windows-x64-baseline@1.3.5':
+ '@oven/bun-windows-x64-baseline@1.3.7':
optional: true
- '@oven/bun-windows-x64@1.3.5':
+ '@oven/bun-windows-x64@1.3.7':
optional: true
'@parcel/watcher-android-arm64@2.5.0':
@@ -5913,12 +5993,18 @@ snapshots:
'@parcel/watcher-darwin-arm64@2.5.0':
optional: true
- '@parcel/watcher-darwin-arm64@2.5.1': {}
+ '@parcel/watcher-darwin-arm64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-darwin-arm64@2.5.6': {}
'@parcel/watcher-darwin-x64@2.5.0':
optional: true
- '@parcel/watcher-darwin-x64@2.5.1': {}
+ '@parcel/watcher-darwin-x64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-darwin-x64@2.5.6': {}
'@parcel/watcher-freebsd-x64@2.5.0':
optional: true
@@ -5941,22 +6027,34 @@ snapshots:
'@parcel/watcher-linux-arm64-glibc@2.5.0':
optional: true
- '@parcel/watcher-linux-arm64-glibc@2.5.1': {}
+ '@parcel/watcher-linux-arm64-glibc@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.6': {}
'@parcel/watcher-linux-arm64-musl@2.5.0':
optional: true
- '@parcel/watcher-linux-arm64-musl@2.5.1': {}
+ '@parcel/watcher-linux-arm64-musl@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-musl@2.5.6': {}
'@parcel/watcher-linux-x64-glibc@2.5.0':
optional: true
- '@parcel/watcher-linux-x64-glibc@2.5.1': {}
+ '@parcel/watcher-linux-x64-glibc@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-x64-glibc@2.5.6': {}
'@parcel/watcher-linux-x64-musl@2.5.0':
optional: true
- '@parcel/watcher-linux-x64-musl@2.5.1': {}
+ '@parcel/watcher-linux-x64-musl@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-x64-musl@2.5.6': {}
'@parcel/watcher-wasm@2.5.0':
dependencies:
@@ -5978,7 +6076,10 @@ snapshots:
'@parcel/watcher-win32-x64@2.5.0':
optional: true
- '@parcel/watcher-win32-x64@2.5.1': {}
+ '@parcel/watcher-win32-x64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-win32-x64@2.5.6': {}
'@parcel/watcher@2.5.0':
dependencies:
@@ -6025,9 +6126,9 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@playwright/test@1.57.0':
+ '@playwright/test@1.58.0':
dependencies:
- playwright: 1.57.0
+ playwright: 1.58.0
'@rolldown/pluginutils@1.0.0-beta.53': {}
@@ -6142,9 +6243,9 @@ snapshots:
'@types/braces@3.0.5': {}
- '@types/bun@1.3.5':
+ '@types/bun@1.3.7':
dependencies:
- bun-types: 1.3.5
+ bun-types: 1.3.7
'@types/chai@5.2.3':
dependencies:
@@ -6169,101 +6270,59 @@ snapshots:
'@types/json5@0.0.29': {}
- '@types/node@20.14.13':
- dependencies:
- undici-types: 5.26.5
-
'@types/node@20.19.1':
dependencies:
undici-types: 6.21.0
'@types/postcss-import@14.0.3':
dependencies:
- postcss: 8.4.41
+ postcss: 8.5.6
- '@types/react-dom@19.2.3(@types/react@19.2.7)':
+ '@types/react-dom@19.2.3(@types/react@19.2.10)':
dependencies:
- '@types/react': 19.2.7
+ '@types/react': 19.2.10
- '@types/react@19.2.7':
+ '@types/react@19.2.10':
dependencies:
csstype: 3.2.3
'@types/semver@7.7.1': {}
- '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.47.0
eslint: 9.39.2(jiti@2.6.1)
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.5.4)
- typescript: 5.5.4
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)':
- dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/type-utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/visitor-keys': 8.47.0
- eslint: 9.39.2(jiti@2.6.1)
- graphemer: 1.4.0
- ignore: 7.0.5
- natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.6.3)
- typescript: 5.6.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.47.0
'@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.47.0
debug: 4.4.3
eslint: 9.39.2(jiti@2.6.1)
- typescript: 5.5.4
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)':
+ '@typescript-eslint/project-service@8.47.0(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
- '@typescript-eslint/visitor-keys': 8.47.0
- debug: 4.4.3
- eslint: 9.39.2(jiti@2.6.1)
- typescript: 5.6.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/project-service@8.47.0(typescript@5.5.4)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3)
'@typescript-eslint/types': 8.47.0
debug: 4.4.3
- typescript: 5.5.4
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/project-service@8.47.0(typescript@5.6.3)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.6.3)
- '@typescript-eslint/types': 8.47.0
- debug: 4.4.3
- typescript: 5.6.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -6272,44 +6331,28 @@ snapshots:
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/visitor-keys': 8.47.0
- '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.5.4)':
+ '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.9.3)':
dependencies:
- typescript: 5.5.4
+ typescript: 5.9.3
- '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.6.3)':
- dependencies:
- typescript: 5.6.3
-
- '@typescript-eslint/type-utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
debug: 4.4.3
eslint: 9.39.2(jiti@2.6.1)
- ts-api-utils: 2.1.0(typescript@5.5.4)
- typescript: 5.5.4
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/type-utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)':
- dependencies:
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
- debug: 4.4.3
- eslint: 9.39.2(jiti@2.6.1)
- ts-api-utils: 2.1.0(typescript@5.6.3)
- typescript: 5.6.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/types@8.47.0': {}
- '@typescript-eslint/typescript-estree@8.47.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.47.0(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.47.0(typescript@5.5.4)
- '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/project-service': 8.47.0(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3)
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/visitor-keys': 8.47.0
debug: 4.4.3
@@ -6317,46 +6360,19 @@ snapshots:
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.7.3
- ts-api-utils: 2.1.0(typescript@5.5.4)
- typescript: 5.5.4
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.47.0(typescript@5.6.3)':
- dependencies:
- '@typescript-eslint/project-service': 8.47.0(typescript@5.6.3)
- '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.6.3)
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/visitor-keys': 8.47.0
- debug: 4.4.3
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.3
- ts-api-utils: 2.1.0(typescript@5.6.3)
- typescript: 5.6.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.47.0
'@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
eslint: 9.39.2(jiti@2.6.1)
- typescript: 5.5.4
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.47.0
- '@typescript-eslint/types': 8.47.0
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
- eslint: 9.39.2(jiti@2.6.1)
- typescript: 5.6.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -6365,7 +6381,7 @@ snapshots:
'@typescript-eslint/types': 8.47.0
eslint-visitor-keys: 4.2.1
- '@vitejs/plugin-react@5.1.2(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
+ '@vitejs/plugin-react@5.1.2(vite@7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
dependencies:
'@babel/core': 7.28.5
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
@@ -6373,47 +6389,47 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-beta.53
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
- vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
+ vite: 7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
transitivePeerDependencies:
- supports-color
- '@vitest/expect@4.0.12':
+ '@vitest/expect@4.0.18':
dependencies:
'@standard-schema/spec': 1.0.0
'@types/chai': 5.2.3
- '@vitest/spy': 4.0.12
- '@vitest/utils': 4.0.12
+ '@vitest/spy': 4.0.18
+ '@vitest/utils': 4.0.18
chai: 6.2.1
tinyrainbow: 3.0.3
- '@vitest/mocker@4.0.12(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
+ '@vitest/mocker@4.0.18(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
dependencies:
- '@vitest/spy': 4.0.12
+ '@vitest/spy': 4.0.18
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
+ vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
- '@vitest/pretty-format@4.0.12':
+ '@vitest/pretty-format@4.0.18':
dependencies:
tinyrainbow: 3.0.3
- '@vitest/runner@4.0.12':
+ '@vitest/runner@4.0.18':
dependencies:
- '@vitest/utils': 4.0.12
+ '@vitest/utils': 4.0.18
pathe: 2.0.3
- '@vitest/snapshot@4.0.12':
+ '@vitest/snapshot@4.0.18':
dependencies:
- '@vitest/pretty-format': 4.0.12
+ '@vitest/pretty-format': 4.0.18
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/spy@4.0.12': {}
+ '@vitest/spy@4.0.18': {}
- '@vitest/utils@4.0.12':
+ '@vitest/utils@4.0.18':
dependencies:
- '@vitest/pretty-format': 4.0.12
+ '@vitest/pretty-format': 4.0.18
tinyrainbow: 3.0.3
'@webassemblyjs/ast@1.14.1':
@@ -6625,13 +6641,13 @@ snapshots:
ast-types-flow@0.0.8: {}
- autoprefixer@10.4.23(postcss@8.4.47):
+ autoprefixer@10.4.23(postcss@8.5.6):
dependencies:
browserslist: 4.28.1
caniuse-lite: 1.0.30001761
fraction.js: 5.3.4
picocolors: 1.1.1
- postcss: 8.4.47
+ postcss: 8.5.6
postcss-value-parser: 4.2.0
available-typed-arrays@1.0.7:
@@ -6683,23 +6699,23 @@ snapshots:
buffer-from@1.1.2: {}
- bun-types@1.3.5:
+ bun-types@1.3.7:
dependencies:
'@types/node': 20.19.1
- bun@1.3.5:
+ bun@1.3.7:
optionalDependencies:
- '@oven/bun-darwin-aarch64': 1.3.5
- '@oven/bun-darwin-x64': 1.3.5
- '@oven/bun-darwin-x64-baseline': 1.3.5
- '@oven/bun-linux-aarch64': 1.3.5
- '@oven/bun-linux-aarch64-musl': 1.3.5
- '@oven/bun-linux-x64': 1.3.5
- '@oven/bun-linux-x64-baseline': 1.3.5
- '@oven/bun-linux-x64-musl': 1.3.5
- '@oven/bun-linux-x64-musl-baseline': 1.3.5
- '@oven/bun-windows-x64': 1.3.5
- '@oven/bun-windows-x64-baseline': 1.3.5
+ '@oven/bun-darwin-aarch64': 1.3.7
+ '@oven/bun-darwin-x64': 1.3.7
+ '@oven/bun-darwin-x64-baseline': 1.3.7
+ '@oven/bun-linux-aarch64': 1.3.7
+ '@oven/bun-linux-aarch64-musl': 1.3.7
+ '@oven/bun-linux-x64': 1.3.7
+ '@oven/bun-linux-x64-baseline': 1.3.7
+ '@oven/bun-linux-x64-musl': 1.3.7
+ '@oven/bun-linux-x64-musl-baseline': 1.3.7
+ '@oven/bun-windows-x64': 1.3.7
+ '@oven/bun-windows-x64-baseline': 1.3.7
bundle-require@5.1.0(esbuild@0.27.0):
dependencies:
@@ -6729,8 +6745,6 @@ snapshots:
camelcase-css@2.0.1: {}
- caniuse-lite@1.0.30001755: {}
-
caniuse-lite@1.0.30001761: {}
chai@6.2.1: {}
@@ -6870,10 +6884,7 @@ snapshots:
detect-libc@1.0.3: {}
- detect-libc@2.0.4: {}
-
- detect-libc@2.1.2:
- optional: true
+ detect-libc@2.1.2: {}
didyoumean@1.2.2: {}
@@ -6895,7 +6906,7 @@ snapshots:
electron-to-chromium@1.5.267: {}
- emnapi@1.7.1(node-addon-api@8.3.0):
+ emnapi@1.8.1(node-addon-api@8.3.0):
optionalDependencies:
node-addon-api: 8.3.0
@@ -7102,29 +7113,29 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@16.1.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ eslint-config-next@16.1.6(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@next/eslint-plugin-next': 16.1.0
+ '@next/eslint-plugin-next': 16.1.6
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
optionalDependencies:
- typescript: 5.5.4
+ typescript: 5.9.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- eslint-config-next@16.1.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
+ eslint-config-next@16.1.6(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@next/eslint-plugin-next': 16.1.0
+ '@next/eslint-plugin-next': 16.1.6
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1))
@@ -7133,9 +7144,9 @@ snapshots:
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
globals: 16.4.0
- typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
+ typescript-eslint: 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
optionalDependencies:
- typescript: 5.6.3
+ typescript: 5.9.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-webpack
@@ -7150,19 +7161,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
enhanced-resolve: 5.18.4
eslint: 9.39.2(jiti@2.6.1)
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -7188,14 +7199,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@@ -7209,7 +7220,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -7220,7 +7231,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -7232,7 +7243,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7590,16 +7601,16 @@ snapshots:
graphemer@1.4.0: {}
- h3@1.15.4:
+ h3@1.15.5:
dependencies:
cookie-es: 1.2.2
crossws: 0.3.5
defu: 6.1.4
destr: 2.0.5
iron-webcrypto: 1.2.1
- node-mock-http: 1.0.2
+ node-mock-http: 1.0.4
radix3: 1.1.2
- ufo: 1.6.1
+ ufo: 1.6.3
uncrypto: 0.1.3
has-bigints@1.0.2: {}
@@ -7865,47 +7876,47 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
- lightningcss-android-arm64@1.30.2:
+ lightningcss-android-arm64@1.31.1:
optional: true
- lightningcss-darwin-arm64@1.30.2: {}
+ lightningcss-darwin-arm64@1.31.1: {}
- lightningcss-darwin-x64@1.30.2: {}
+ lightningcss-darwin-x64@1.31.1: {}
- lightningcss-freebsd-x64@1.30.2:
+ lightningcss-freebsd-x64@1.31.1:
optional: true
- lightningcss-linux-arm-gnueabihf@1.30.2:
+ lightningcss-linux-arm-gnueabihf@1.31.1:
optional: true
- lightningcss-linux-arm64-gnu@1.30.2: {}
+ lightningcss-linux-arm64-gnu@1.31.1: {}
- lightningcss-linux-arm64-musl@1.30.2: {}
+ lightningcss-linux-arm64-musl@1.31.1: {}
- lightningcss-linux-x64-gnu@1.30.2: {}
+ lightningcss-linux-x64-gnu@1.31.1: {}
- lightningcss-linux-x64-musl@1.30.2: {}
+ lightningcss-linux-x64-musl@1.31.1: {}
- lightningcss-win32-arm64-msvc@1.30.2:
+ lightningcss-win32-arm64-msvc@1.31.1:
optional: true
- lightningcss-win32-x64-msvc@1.30.2: {}
+ lightningcss-win32-x64-msvc@1.31.1: {}
- lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm):
+ lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm):
dependencies:
- detect-libc: 2.0.4
+ detect-libc: 2.1.2
optionalDependencies:
- lightningcss-android-arm64: 1.30.2
- lightningcss-darwin-arm64: 1.30.2
- lightningcss-darwin-x64: 1.30.2
- lightningcss-freebsd-x64: 1.30.2
- lightningcss-linux-arm-gnueabihf: 1.30.2
- lightningcss-linux-arm64-gnu: 1.30.2
- lightningcss-linux-arm64-musl: 1.30.2
- lightningcss-linux-x64-gnu: 1.30.2
- lightningcss-linux-x64-musl: 1.30.2
- lightningcss-win32-arm64-msvc: 1.30.2
- lightningcss-win32-x64-msvc: 1.30.2
+ lightningcss-android-arm64: 1.31.1
+ lightningcss-darwin-arm64: 1.31.1
+ lightningcss-darwin-x64: 1.31.1
+ lightningcss-freebsd-x64: 1.31.1
+ lightningcss-linux-arm-gnueabihf: 1.31.1
+ lightningcss-linux-arm64-gnu: 1.31.1
+ lightningcss-linux-arm64-musl: 1.31.1
+ lightningcss-linux-x64-gnu: 1.31.1
+ lightningcss-linux-x64-musl: 1.31.1
+ lightningcss-win32-arm64-msvc: 1.31.1
+ lightningcss-win32-x64-msvc: 1.31.1
lilconfig@2.1.0: {}
@@ -7923,7 +7934,7 @@ snapshots:
crossws: 0.3.1
defu: 6.1.4
get-port-please: 3.1.2
- h3: 1.15.4
+ h3: 1.15.5
http-shutdown: 1.2.2
jiti: 2.4.2
mlly: 1.7.3
@@ -8029,32 +8040,30 @@ snapshots:
nanoid@3.3.11: {}
- nanoid@3.3.7: {}
-
natural-compare@1.4.0: {}
neo-async@2.6.2: {}
- next@16.1.0(@playwright/test@1.57.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ next@16.1.6(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
- '@next/env': 16.1.0
+ '@next/env': 16.1.6
'@swc/helpers': 0.5.15
- baseline-browser-mapping: 2.8.29
- caniuse-lite: 1.0.30001755
+ baseline-browser-mapping: 2.9.11
+ caniuse-lite: 1.0.30001761
postcss: 8.4.31
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- styled-jsx: 5.1.6(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ styled-jsx: 5.1.6(react@19.2.4)
optionalDependencies:
- '@next/swc-darwin-arm64': 16.1.0
- '@next/swc-darwin-x64': 16.1.0
- '@next/swc-linux-arm64-gnu': 16.1.0
- '@next/swc-linux-arm64-musl': 16.1.0
- '@next/swc-linux-x64-gnu': 16.1.0
- '@next/swc-linux-x64-musl': 16.1.0
- '@next/swc-win32-arm64-msvc': 16.1.0
- '@next/swc-win32-x64-msvc': 16.1.0
- '@playwright/test': 1.57.0
+ '@next/swc-darwin-arm64': 16.1.6
+ '@next/swc-darwin-x64': 16.1.6
+ '@next/swc-linux-arm64-gnu': 16.1.6
+ '@next/swc-linux-arm64-musl': 16.1.6
+ '@next/swc-linux-x64-gnu': 16.1.6
+ '@next/swc-linux-x64-musl': 16.1.6
+ '@next/swc-win32-arm64-msvc': 16.1.6
+ '@next/swc-win32-x64-msvc': 16.1.6
+ '@playwright/test': 1.58.0
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
@@ -8072,7 +8081,7 @@ snapshots:
node-gyp-build@4.8.4: {}
- node-mock-http@1.0.2: {}
+ node-mock-http@1.0.4: {}
node-releases@2.0.27: {}
@@ -8125,6 +8134,8 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
+ obug@2.1.1: {}
+
onetime@6.0.0:
dependencies:
mimic-fn: 4.0.0
@@ -8199,26 +8210,19 @@ snapshots:
mlly: 1.7.3
pathe: 1.1.2
- playwright-core@1.57.0: {}
+ playwright-core@1.58.0: {}
- playwright@1.57.0:
+ playwright@1.58.0:
dependencies:
- playwright-core: 1.57.0
+ playwright-core: 1.58.0
optionalDependencies:
fsevents: 2.3.2
possible-typed-array-names@1.0.0: {}
- postcss-import@15.1.0(postcss@8.4.47):
+ postcss-import@15.1.0(postcss@8.5.6):
dependencies:
- postcss: 8.4.47
- postcss-value-parser: 4.2.0
- read-cache: 1.0.0
- resolve: 1.22.8
-
- postcss-import@16.1.1(postcss@8.4.41):
- dependencies:
- postcss: 8.4.41
+ postcss: 8.5.6
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.8
@@ -8230,17 +8234,17 @@ snapshots:
read-cache: 1.0.0
resolve: 1.22.8
- postcss-js@4.0.1(postcss@8.4.47):
+ postcss-js@4.0.1(postcss@8.5.6):
dependencies:
camelcase-css: 2.0.1
- postcss: 8.4.47
+ postcss: 8.5.6
- postcss-load-config@4.0.2(postcss@8.4.47):
+ postcss-load-config@4.0.2(postcss@8.5.6):
dependencies:
lilconfig: 3.1.2
yaml: 2.6.0
optionalDependencies:
- postcss: 8.4.47
+ postcss: 8.5.6
postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.19.1)(yaml@2.6.0):
dependencies:
@@ -8251,9 +8255,9 @@ snapshots:
tsx: 4.19.1
yaml: 2.6.0
- postcss-nested@6.2.0(postcss@8.4.47):
+ postcss-nested@6.2.0(postcss@8.5.6):
dependencies:
- postcss: 8.4.47
+ postcss: 8.5.6
postcss-selector-parser: 6.1.2
postcss-selector-parser@6.0.10:
@@ -8279,18 +8283,6 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
- postcss@8.4.41:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postcss@8.4.47:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
postcss@8.5.6:
dependencies:
nanoid: 3.3.11
@@ -8310,12 +8302,12 @@ snapshots:
transitivePeerDependencies:
- babel-plugin-macros
- prettier-plugin-organize-imports@4.3.0(prettier@3.6.2)(typescript@5.5.4):
+ prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.5.4):
dependencies:
- prettier: 3.6.2
+ prettier: 3.8.1
typescript: 5.5.4
- prettier@3.6.2: {}
+ prettier@3.8.1: {}
prop-types@15.8.1:
dependencies:
@@ -8333,16 +8325,16 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
- react-dom@19.2.3(react@19.2.3):
+ react-dom@19.2.4(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
scheduler: 0.27.0
react-is@16.13.1: {}
react-refresh@0.18.0: {}
- react@19.2.3: {}
+ react@19.2.4: {}
read-cache@1.0.0:
dependencies:
@@ -8657,10 +8649,10 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(react@19.2.3):
+ styled-jsx@5.1.6(react@19.2.4):
dependencies:
client-only: 0.0.1
- react: 19.2.3
+ react: 19.2.4
sucrase@3.35.0:
dependencies:
@@ -8702,11 +8694,11 @@ snapshots:
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.1.1
- postcss: 8.4.47
- postcss-import: 15.1.0(postcss@8.4.47)
- postcss-js: 4.0.1(postcss@8.4.47)
- postcss-load-config: 4.0.2(postcss@8.4.47)
- postcss-nested: 6.2.0(postcss@8.4.47)
+ postcss: 8.5.6
+ postcss-import: 15.1.0(postcss@8.5.6)
+ postcss-js: 4.0.1(postcss@8.5.6)
+ postcss-load-config: 4.0.2(postcss@8.5.6)
+ postcss-nested: 6.2.0(postcss@8.5.6)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
sucrase: 3.35.0
@@ -8749,6 +8741,8 @@ snapshots:
tinyexec@0.3.2: {}
+ tinyexec@1.0.2: {}
+
tinyglobby@0.2.14:
dependencies:
fdir: 6.4.6(picomatch@4.0.2)
@@ -8787,13 +8781,9 @@ snapshots:
node-addon-api: 8.3.0
node-gyp-build: 4.8.4
- ts-api-utils@2.1.0(typescript@5.5.4):
+ ts-api-utils@2.1.0(typescript@5.9.3):
dependencies:
- typescript: 5.5.4
-
- ts-api-utils@2.1.0(typescript@5.6.3):
- dependencies:
- typescript: 5.6.3
+ typescript: 5.9.3
ts-interface-checker@0.1.13: {}
@@ -8842,32 +8832,32 @@ snapshots:
fsevents: 2.3.3
optional: true
- turbo-darwin-64@2.7.2:
+ turbo-darwin-64@2.7.6:
optional: true
- turbo-darwin-arm64@2.7.2:
+ turbo-darwin-arm64@2.7.6:
optional: true
- turbo-linux-64@2.7.2:
+ turbo-linux-64@2.7.6:
optional: true
- turbo-linux-arm64@2.7.2:
+ turbo-linux-arm64@2.7.6:
optional: true
- turbo-windows-64@2.7.2:
+ turbo-windows-64@2.7.6:
optional: true
- turbo-windows-arm64@2.7.2:
+ turbo-windows-arm64@2.7.6:
optional: true
- turbo@2.7.2:
+ turbo@2.7.6:
optionalDependencies:
- turbo-darwin-64: 2.7.2
- turbo-darwin-arm64: 2.7.2
- turbo-linux-64: 2.7.2
- turbo-linux-arm64: 2.7.2
- turbo-windows-64: 2.7.2
- turbo-windows-arm64: 2.7.2
+ turbo-darwin-64: 2.7.6
+ turbo-darwin-arm64: 2.7.6
+ turbo-linux-64: 2.7.6
+ turbo-linux-arm64: 2.7.6
+ turbo-windows-64: 2.7.6
+ turbo-windows-arm64: 2.7.6
typanion@3.14.0: {}
@@ -8912,36 +8902,27 @@ snapshots:
possible-typed-array-names: 1.0.0
reflect.getprototypeof: 1.0.10
- typescript-eslint@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4):
+ typescript-eslint@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4))(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.5.4)
+ '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.2(jiti@2.6.1)
- typescript: 5.5.4
- transitivePeerDependencies:
- - supports-color
-
- typescript-eslint@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3):
- dependencies:
- '@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/parser': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
- '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.6.3)
- '@typescript-eslint/utils': 8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.6.3)
- eslint: 9.39.2(jiti@2.6.1)
- typescript: 5.6.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
typescript@5.5.4: {}
- typescript@5.6.3: {}
+ typescript@5.9.3: {}
ufo@1.5.4: {}
ufo@1.6.1: {}
+ ufo@1.6.3: {}
+
unbox-primitive@1.1.0:
dependencies:
call-bound: 1.0.4
@@ -8951,8 +8932,6 @@ snapshots:
uncrypto@0.1.3: {}
- undici-types@5.26.5: {}
-
undici-types@6.21.0: {}
unicorn-magic@0.3.0: {}
@@ -8985,44 +8964,61 @@ snapshots:
util-deprecate@1.0.2: {}
- vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0):
+ vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0):
dependencies:
esbuild: 0.25.0
- fdir: 6.4.6(picomatch@4.0.2)
- picomatch: 4.0.2
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
postcss: 8.5.6
rollup: 4.44.0
- tinyglobby: 0.2.14
+ tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 20.19.1
fsevents: 2.3.3
jiti: 2.6.1
- lightningcss: 1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
+ lightningcss: 1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
terser: 5.31.6
tsx: 4.19.1
yaml: 2.6.0
- vitest@4.0.12(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0):
+ vite@7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0):
dependencies:
- '@vitest/expect': 4.0.12
- '@vitest/mocker': 4.0.12(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
- '@vitest/pretty-format': 4.0.12
- '@vitest/runner': 4.0.12
- '@vitest/snapshot': 4.0.12
- '@vitest/spy': 4.0.12
- '@vitest/utils': 4.0.12
- debug: 4.4.3
+ esbuild: 0.27.0
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.44.0
+ tinyglobby: 0.2.15
+ optionalDependencies:
+ '@types/node': 20.19.1
+ fsevents: 2.3.3
+ jiti: 2.6.1
+ lightningcss: 1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm)
+ terser: 5.31.6
+ tsx: 4.19.1
+ yaml: 2.6.0
+
+ vitest@4.0.18(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0):
+ dependencies:
+ '@vitest/expect': 4.0.18
+ '@vitest/mocker': 4.0.18(vite@7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
+ '@vitest/pretty-format': 4.0.18
+ '@vitest/runner': 4.0.18
+ '@vitest/snapshot': 4.0.18
+ '@vitest/spy': 4.0.18
+ '@vitest/utils': 4.0.18
es-module-lexer: 1.7.0
expect-type: 1.2.2
magic-string: 0.30.21
+ obug: 2.1.1
pathe: 2.0.3
picomatch: 4.0.3
std-env: 3.10.0
tinybench: 2.9.0
- tinyexec: 0.3.2
+ tinyexec: 1.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.30.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
+ vite: 7.0.0(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 20.19.1
@@ -9035,7 +9031,6 @@ snapshots:
- sass-embedded
- stylus
- sugarss
- - supports-color
- terser
- tsx
- yaml
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index ba9aedcb6..4752226d9 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -7,14 +7,14 @@ packages:
catalog:
'@types/node': ^20.19.0
- prettier: 3.6.2
- vite: ^7.0.0
+ prettier: 3.8.1
+ vite: ^7.3.1
webpack: ^5
- lightningcss: 1.30.2
- lightningcss-darwin-arm64: 1.30.2
- lightningcss-darwin-x64: 1.30.2
- lightningcss-linux-arm64-gnu: 1.30.2
- lightningcss-linux-arm64-musl: 1.30.2
- lightningcss-linux-x64-gnu: 1.30.2
- lightningcss-linux-x64-musl: 1.30.2
- lightningcss-win32-x64-msvc: 1.30.2
+ lightningcss: 1.31.1
+ lightningcss-darwin-arm64: 1.31.1
+ lightningcss-darwin-x64: 1.31.1
+ lightningcss-linux-arm64-gnu: 1.31.1
+ lightningcss-linux-arm64-musl: 1.31.1
+ lightningcss-linux-x64-gnu: 1.31.1
+ lightningcss-linux-x64-musl: 1.31.1
+ lightningcss-win32-x64-msvc: 1.31.1
From 23d01bc4746c614a4e2c0ecd5ba4e89c72f7c569 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Wed, 4 Feb 2026 13:06:44 +0100
Subject: [PATCH 115/353] only notify Discord once
If we're in a matrix, and one of the jobs fail, then we only want to
notify Discord once instead of for each failure.
---
.github/workflows/ci.yml | 8 ++++++--
.github/workflows/integration-tests.yml | 8 ++++++--
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f817e05a3..fca477c08 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -110,9 +110,13 @@ jobs:
- name: Run Playwright tests
run: npm run test:ui
+ notify:
+ if: ${{ always() && github.ref == 'refs/heads/main' && needs.tests.result == 'failure' }}
+ needs: tests
+ runs-on: ubuntu-latest
+ steps:
- name: Notify Discord
- if: failure() && github.ref == 'refs/heads/main'
uses: discord-actions/message@v2
with:
webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
- message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
+ message: 'The [most recent ${{ github.workflow }} workflow](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
index 1508c1eff..3b2cf8f1b 100644
--- a/.github/workflows/integration-tests.yml
+++ b/.github/workflows/integration-tests.yml
@@ -113,9 +113,13 @@ jobs:
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
+ notify:
+ if: ${{ always() && github.ref == 'refs/heads/main' && needs.tests.result == 'failure' }}
+ needs: tests
+ runs-on: ubuntu-latest
+ steps:
- name: Notify Discord
- if: failure() && github.ref == 'refs/heads/main'
uses: discord-actions/message@v2
with:
webhookUrl: ${{ secrets.DISCORD_WEBHOOK_URL }}
- message: 'The [most recent build](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
+ message: 'The [most recent ${{ github.workflow }} workflow](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>) on the `main` branch has failed.'
From ddb47e84da39598edcf07c6048a034abfa104ef2 Mon Sep 17 00:00:00 2001
From: Pavan Shinde
Date: Thu, 5 Feb 2026 21:29:10 +0530
Subject: [PATCH 116/353] Fix README license badge link (#19638)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
The README license badge linked to a non-existent `master` branch (and
the wrong org).
This updates the link to the current location:
tailwindlabs/tailwindcss/blob/main/LICENSE.
## Test plan
- Opened `README.md` and clicked the license badge/link to confirm it
resolves to the LICENSE file on the `main` branch.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 7d21bd883..6e676ed2a 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@
-
+
---
From e73c2472fd32411c811529cab451bb0212910999 Mon Sep 17 00:00:00 2001
From: Pavan Shinde
Date: Fri, 6 Feb 2026 21:21:07 +0530
Subject: [PATCH 117/353] Fix README links to use main branch (#19641)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
The README still referenced the `next` branch for the CI badge and
contributing docs link, but the `next` branch no longer exists upstream.
This updates those URLs to point to `main` so the badge and contributing
docs link work correctly.
## Test plan
N/A, docs only change
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 6e676ed2a..3dc5032fd 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
-
+
@@ -33,4 +33,4 @@ For help, discussion about best practices, or feature ideas:
## 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**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
From 8ed67bf5510d8435d2be766b25245abe15b3bcef Mon Sep 17 00:00:00 2001
From: Pavan Shinde
Date: Sun, 8 Feb 2026 05:56:38 +0530
Subject: [PATCH 118/353] Fix Tailwind CSS package README GitHub links (#19644)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
These package READMEs referenced the wrong GitHub org
(tailwindcss/tailwindcss) and outdated branches (master/next) for common
project links.
Update them to point at tailwindlabs/tailwindcss on main for releases,
license, discussions, and contributing docs.
## Test plan
Docs-only change: No test required.
---
packages/@tailwindcss-browser/README.md | 8 ++++----
packages/@tailwindcss-cli/README.md | 8 ++++----
packages/@tailwindcss-node/README.md | 8 ++++----
packages/@tailwindcss-postcss/README.md | 8 ++++----
packages/@tailwindcss-upgrade/README.md | 8 ++++----
packages/@tailwindcss-vite/README.md | 8 ++++----
packages/tailwindcss/README.md | 8 ++++----
7 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/packages/@tailwindcss-browser/README.md b/packages/@tailwindcss-browser/README.md
index 7d21bd883..4c2e56fff 100644
--- a/packages/@tailwindcss-browser/README.md
+++ b/packages/@tailwindcss-browser/README.md
@@ -15,8 +15,8 @@
-
-
+
+
---
@@ -29,8 +29,8 @@ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
For help, discussion about best practices, or feature ideas:
-[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions)
## 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**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
diff --git a/packages/@tailwindcss-cli/README.md b/packages/@tailwindcss-cli/README.md
index 7d21bd883..4c2e56fff 100644
--- a/packages/@tailwindcss-cli/README.md
+++ b/packages/@tailwindcss-cli/README.md
@@ -15,8 +15,8 @@
-
-
+
+
---
@@ -29,8 +29,8 @@ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
For help, discussion about best practices, or feature ideas:
-[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions)
## 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**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
diff --git a/packages/@tailwindcss-node/README.md b/packages/@tailwindcss-node/README.md
index 7d21bd883..4c2e56fff 100644
--- a/packages/@tailwindcss-node/README.md
+++ b/packages/@tailwindcss-node/README.md
@@ -15,8 +15,8 @@
-
-
+
+
---
@@ -29,8 +29,8 @@ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
For help, discussion about best practices, or feature ideas:
-[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions)
## 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**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
diff --git a/packages/@tailwindcss-postcss/README.md b/packages/@tailwindcss-postcss/README.md
index 867389f0e..2313ccb77 100644
--- a/packages/@tailwindcss-postcss/README.md
+++ b/packages/@tailwindcss-postcss/README.md
@@ -15,8 +15,8 @@
-
-
+
+
---
@@ -29,11 +29,11 @@ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
For help, discussion about best practices, or feature ideas:
-[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions)
## 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**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
---
diff --git a/packages/@tailwindcss-upgrade/README.md b/packages/@tailwindcss-upgrade/README.md
index 7d21bd883..4c2e56fff 100644
--- a/packages/@tailwindcss-upgrade/README.md
+++ b/packages/@tailwindcss-upgrade/README.md
@@ -15,8 +15,8 @@
-
-
+
+
---
@@ -29,8 +29,8 @@ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
For help, discussion about best practices, or feature ideas:
-[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions)
## 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**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
diff --git a/packages/@tailwindcss-vite/README.md b/packages/@tailwindcss-vite/README.md
index 53e03ab47..6e3688b87 100644
--- a/packages/@tailwindcss-vite/README.md
+++ b/packages/@tailwindcss-vite/README.md
@@ -15,8 +15,8 @@
-
-
+
+
---
@@ -29,11 +29,11 @@ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
For help, discussion about best practices, or feature ideas:
-[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions)
## 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**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
---
diff --git a/packages/tailwindcss/README.md b/packages/tailwindcss/README.md
index 7d21bd883..4c2e56fff 100644
--- a/packages/tailwindcss/README.md
+++ b/packages/tailwindcss/README.md
@@ -15,8 +15,8 @@
-
-
+
+
---
@@ -29,8 +29,8 @@ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
For help, discussion about best practices, or feature ideas:
-[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions)
## 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**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
From 4614f5eaa7c8bd4bd446de885577af8a40814f63 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Mon, 9 Feb 2026 12:20:25 -0500
Subject: [PATCH 119/353] =?UTF-8?q?Update=20autoprefixer=2010.4.23=20?=
=?UTF-8?q?=E2=86=92=2010.4.24=20(patch)=20(#19642)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ autoprefixer (10.4.23 → 10.4.24) ·
[Repo](https://github.com/postcss/autoprefixer) ·
[Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
Release Notes
Made Autoprefixer a little faster (by @Cherry ).
Does any of this look wrong? Please let
us know.
Commits
See
the full diff on Github . The new version differs by 3 commits:
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/v3/package.json | 2 +-
pnpm-lock.yaml | 34 ++++++++++++++++++++++++----------
2 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/playgrounds/v3/package.json b/playgrounds/v3/package.json
index b8e1e16fc..b54e5fae5 100644
--- a/playgrounds/v3/package.json
+++ b/playgrounds/v3/package.json
@@ -18,7 +18,7 @@
"@types/node": "catalog:",
"@types/react": "^19.2.10",
"@types/react-dom": "^19.2.3",
- "autoprefixer": "^10.4.23",
+ "autoprefixer": "^10.4.24",
"eslint": "^9.39.2",
"eslint-config-next": "^16.1.6",
"typescript": "^5.9.3"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index be257c0fb..0b8282efa 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -561,8 +561,8 @@ importers:
specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.10)
autoprefixer:
- specifier: ^10.4.23
- version: 10.4.23(postcss@8.5.6)
+ specifier: ^10.4.24
+ version: 10.4.24(postcss@8.5.6)
eslint:
specifier: ^9.39.2
version: 9.39.2(jiti@2.6.1)
@@ -2058,6 +2058,7 @@ packages:
'@parcel/watcher-darwin-arm64@2.5.6':
resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.0':
@@ -2075,6 +2076,7 @@ packages:
'@parcel/watcher-darwin-x64@2.5.6':
resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.0':
@@ -2128,6 +2130,7 @@ packages:
'@parcel/watcher-linux-arm64-glibc@2.5.6':
resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-arm64-musl@2.5.0':
@@ -2145,6 +2148,7 @@ packages:
'@parcel/watcher-linux-arm64-musl@2.5.6':
resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
os: [linux]
'@parcel/watcher-linux-x64-glibc@2.5.0':
@@ -2162,6 +2166,7 @@ packages:
'@parcel/watcher-linux-x64-glibc@2.5.6':
resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [linux]
'@parcel/watcher-linux-x64-musl@2.5.0':
@@ -2179,6 +2184,7 @@ packages:
'@parcel/watcher-linux-x64-musl@2.5.6':
resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [linux]
'@parcel/watcher-wasm@2.5.0':
@@ -2226,6 +2232,7 @@ packages:
'@parcel/watcher-win32-x64@2.5.6':
resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
engines: {node: '>= 10.0.0'}
+ cpu: [x64]
os: [win32]
'@parcel/watcher@2.5.0':
@@ -2692,8 +2699,8 @@ packages:
ast-types-flow@0.0.8:
resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
- autoprefixer@10.4.23:
- resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==}
+ autoprefixer@10.4.24:
+ resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
@@ -2757,6 +2764,7 @@ packages:
bun@1.3.7:
resolution: {integrity: sha512-ha86NG8WiAXYR7eQw/9S+7V7Lo8KfD36XutWJNS1VndzaipWS0QIen5n3K9MT3PpP/sdGmmHjhkrU0sCM2lGGQ==}
+ cpu: [arm64, x64]
os: [darwin, linux, win32]
hasBin: true
@@ -2793,6 +2801,9 @@ packages:
caniuse-lite@1.0.30001761:
resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==}
+ caniuse-lite@1.0.30001769:
+ resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==}
+
chai@6.2.1:
resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==}
engines: {node: '>=18'}
@@ -3346,6 +3357,7 @@ packages:
glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
hasBin: true
globals@14.0.0:
@@ -6641,10 +6653,10 @@ snapshots:
ast-types-flow@0.0.8: {}
- autoprefixer@10.4.23(postcss@8.5.6):
+ autoprefixer@10.4.24(postcss@8.5.6):
dependencies:
browserslist: 4.28.1
- caniuse-lite: 1.0.30001761
+ caniuse-lite: 1.0.30001769
fraction.js: 5.3.4
picocolors: 1.1.1
postcss: 8.5.6
@@ -6684,7 +6696,7 @@ snapshots:
browserslist@4.28.0:
dependencies:
baseline-browser-mapping: 2.8.29
- caniuse-lite: 1.0.30001761
+ caniuse-lite: 1.0.30001769
electron-to-chromium: 1.5.255
node-releases: 2.0.27
update-browserslist-db: 1.1.4(browserslist@4.28.0)
@@ -6747,6 +6759,8 @@ snapshots:
caniuse-lite@1.0.30001761: {}
+ caniuse-lite@1.0.30001769: {}
+
chai@6.2.1: {}
chalk@4.1.2:
@@ -7119,7 +7133,7 @@ snapshots:
eslint: 9.39.2(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react: 7.37.2(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1))
@@ -7173,7 +7187,7 @@ snapshots:
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -7220,7 +7234,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
From 257dc581ba4a45eb34578eddad69905166bf8388 Mon Sep 17 00:00:00 2001
From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com>
Date: Mon, 9 Feb 2026 12:20:45 -0500
Subject: [PATCH 120/353] =?UTF-8?q?Update=20@vitejs/plugin-react=205.1.2?=
=?UTF-8?q?=20=E2=86=92=205.1.3=20(patch)=20(#19651)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Here is everything you need to know about this update. Please take a
good look at what changed and the test results before merging this pull
request.
### What changed?
#### ✳️ @vitejs/plugin-react (5.1.2 → 5.1.3) ·
[Repo](https://github.com/vitejs/vite-plugin-react) ·
[Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
---

[Depfu](https://depfu.com) will automatically keep this PR
conflict-free, as long as you don't add any commits to this branch
yourself. You can also trigger a rebase manually by commenting with
`@depfu rebase`.
All Depfu comment commands
@depfu rebase Rebases against your default branch and
redoes this update
@depfu recreate Recreates this PR, overwriting any edits
that you've made to it
@depfu merge Merges this PR once your tests are passing and
conflicts are resolved
@depfu cancel merge Cancels automatic merging of this
PR
@depfu close Closes this PR and deletes the branch
@depfu reopen Restores the branch and reopens this PR (if
it's closed)
@depfu pause Ignores all future updates for this dependency
and closes this PR
@depfu pause [minor|major] Ignores all future minor/major
updates for this dependency and closes this PR
@depfu resume Future versions of this dependency will
create PRs again (leaves this PR as is)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
---
playgrounds/vite/package.json | 2 +-
pnpm-lock.yaml | 203 +++++++++++++++++++++++++++++-----
2 files changed, 175 insertions(+), 30 deletions(-)
diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json
index d339dc39f..1219e79b9 100644
--- a/playgrounds/vite/package.json
+++ b/playgrounds/vite/package.json
@@ -10,7 +10,7 @@
},
"dependencies": {
"@tailwindcss/vite": "workspace:^",
- "@vitejs/plugin-react": "^5.1.2",
+ "@vitejs/plugin-react": "^5.1.3",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"tailwindcss": "workspace:^"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0b8282efa..a65a5ce85 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -506,7 +506,7 @@ importers:
version: 3.3.3
next:
specifier: ^16.1.6
- version: 16.1.6(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.28.5)(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react:
specifier: ^19.2.4
version: 19.2.4
@@ -531,7 +531,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.6
- version: 16.1.6(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ version: 16.1.6(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
typescript:
specifier: ^5.9.3
version: 5.9.3
@@ -540,7 +540,7 @@ importers:
dependencies:
next:
specifier: ^16.1.6
- version: 16.1.6(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.1.6(@babel/core@7.28.5)(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react:
specifier: ^19.2.4
version: 19.2.4
@@ -568,7 +568,7 @@ importers:
version: 9.39.2(jiti@2.6.1)
eslint-config-next:
specifier: ^16.1.6
- version: 16.1.6(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ version: 16.1.6(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
typescript:
specifier: ^5.9.3
version: 5.9.3
@@ -579,8 +579,8 @@ importers:
specifier: workspace:^
version: link:../../packages/@tailwindcss-vite
'@vitejs/plugin-react':
- specifier: ^5.1.2
- version: 5.1.2(vite@7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
+ specifier: ^5.1.3
+ version: 5.1.3(vite@7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))
react:
specifier: ^19.2.4
version: 19.2.4
@@ -614,22 +614,42 @@ packages:
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
+ '@babel/code-frame@7.29.0':
+ resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/compat-data@7.27.5':
resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==}
engines: {node: '>=6.9.0'}
+ '@babel/compat-data@7.29.0':
+ resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==}
+ engines: {node: '>=6.9.0'}
+
'@babel/core@7.28.5':
resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
engines: {node: '>=6.9.0'}
+ '@babel/core@7.29.0':
+ resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/generator@7.28.5':
resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
engines: {node: '>=6.9.0'}
+ '@babel/generator@7.29.1':
+ resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-compilation-targets@7.27.2':
resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-compilation-targets@7.28.6':
+ resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-globals@7.28.0':
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
engines: {node: '>=6.9.0'}
@@ -638,12 +658,22 @@ packages:
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-module-imports@7.28.6':
+ resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-module-transforms@7.28.3':
resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
+ '@babel/helper-module-transforms@7.28.6':
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
'@babel/helper-plugin-utils@7.27.1':
resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
engines: {node: '>=6.9.0'}
@@ -664,11 +694,20 @@ packages:
resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
engines: {node: '>=6.9.0'}
+ '@babel/helpers@7.28.6':
+ resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/parser@7.28.5':
resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
engines: {node: '>=6.0.0'}
hasBin: true
+ '@babel/parser@7.29.0':
+ resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
'@babel/plugin-transform-react-jsx-self@7.27.1':
resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==}
engines: {node: '>=6.9.0'}
@@ -685,14 +724,26 @@ packages:
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
engines: {node: '>=6.9.0'}
+ '@babel/template@7.28.6':
+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/traverse@7.28.5':
resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
engines: {node: '>=6.9.0'}
+ '@babel/traverse@7.29.0':
+ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/types@7.28.5':
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
+ '@babel/types@7.29.0':
+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
+ engines: {node: '>=6.9.0'}
+
'@emnapi/core@1.7.1':
resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
@@ -2252,8 +2303,8 @@ packages:
engines: {node: '>=18'}
hasBin: true
- '@rolldown/pluginutils@1.0.0-beta.53':
- resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==}
+ '@rolldown/pluginutils@1.0.0-rc.2':
+ resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==}
'@rollup/rollup-android-arm-eabi@4.44.0':
resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==}
@@ -2501,8 +2552,8 @@ packages:
resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@vitejs/plugin-react@5.1.2':
- resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==}
+ '@vitejs/plugin-react@5.1.3':
+ resolution: {integrity: sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg==}
engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
@@ -4933,8 +4984,16 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
+ '@babel/code-frame@7.29.0':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
'@babel/compat-data@7.27.5': {}
+ '@babel/compat-data@7.29.0': {}
+
'@babel/core@7.28.5':
dependencies:
'@babel/code-frame': 7.27.1
@@ -4955,6 +5014,26 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/core@7.29.0':
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helpers': 7.28.6
+ '@babel/parser': 7.29.0
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/generator@7.28.5':
dependencies:
'@babel/parser': 7.28.5
@@ -4963,6 +5042,14 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.29
jsesc: 3.1.0
+ '@babel/generator@7.29.1':
+ dependencies:
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
+ '@jridgewell/gen-mapping': 0.3.12
+ '@jridgewell/trace-mapping': 0.3.29
+ jsesc: 3.1.0
+
'@babel/helper-compilation-targets@7.27.2':
dependencies:
'@babel/compat-data': 7.27.5
@@ -4971,6 +5058,14 @@ snapshots:
lru-cache: 5.1.1
semver: 6.3.1
+ '@babel/helper-compilation-targets@7.28.6':
+ dependencies:
+ '@babel/compat-data': 7.29.0
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.28.1
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
'@babel/helper-globals@7.28.0': {}
'@babel/helper-module-imports@7.27.1':
@@ -4980,6 +5075,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/helper-module-imports@7.28.6':
+ dependencies:
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
dependencies:
'@babel/core': 7.28.5
@@ -4989,6 +5091,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/helper-validator-identifier': 7.28.5
+ '@babel/traverse': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/helper-plugin-utils@7.27.1': {}
'@babel/helper-string-parser@7.27.1': {}
@@ -5002,18 +5113,27 @@ snapshots:
'@babel/template': 7.27.2
'@babel/types': 7.28.5
+ '@babel/helpers@7.28.6':
+ dependencies:
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
+
'@babel/parser@7.28.5':
dependencies:
'@babel/types': 7.28.5
- '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)':
+ '@babel/parser@7.29.0':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/types': 7.29.0
+
+ '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.27.1
'@babel/template@7.27.2':
@@ -5022,6 +5142,12 @@ snapshots:
'@babel/parser': 7.28.5
'@babel/types': 7.28.5
+ '@babel/template@7.28.6':
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
+
'@babel/traverse@7.28.5':
dependencies:
'@babel/code-frame': 7.27.1
@@ -5034,11 +5160,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/traverse@7.29.0':
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.29.0
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/types@7.28.5':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
+ '@babel/types@7.29.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
'@emnapi/core@1.7.1':
dependencies:
'@emnapi/wasi-threads': 1.1.0
@@ -6142,7 +6285,7 @@ snapshots:
dependencies:
playwright: 1.58.0
- '@rolldown/pluginutils@1.0.0-beta.53': {}
+ '@rolldown/pluginutils@1.0.0-rc.2': {}
'@rollup/rollup-android-arm-eabi@4.44.0':
optional: true
@@ -6234,24 +6377,24 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
'@types/babel__generator@7.6.8':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
'@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
'@types/babel__traverse@7.20.6':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
'@types/braces@3.0.5': {}
@@ -6393,12 +6536,12 @@ snapshots:
'@typescript-eslint/types': 8.47.0
eslint-visitor-keys: 4.2.1
- '@vitejs/plugin-react@5.1.2(vite@7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
+ '@vitejs/plugin-react@5.1.3(vite@7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0))':
dependencies:
- '@babel/core': 7.28.5
- '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5)
- '@rolldown/pluginutils': 1.0.0-beta.53
+ '@babel/core': 7.29.0
+ '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0)
+ '@rolldown/pluginutils': 1.0.0-rc.2
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
vite: 7.3.1(@types/node@20.19.1)(jiti@2.6.1)(lightningcss@1.31.1(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm))(terser@5.31.6)(tsx@4.19.1)(yaml@2.6.0)
@@ -8058,7 +8201,7 @@ snapshots:
neo-async@2.6.2: {}
- next@16.1.6(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ next@16.1.6(@babel/core@7.28.5)(@playwright/test@1.58.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
'@next/env': 16.1.6
'@swc/helpers': 0.5.15
@@ -8067,7 +8210,7 @@ snapshots:
postcss: 8.4.31
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
- styled-jsx: 5.1.6(react@19.2.4)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.4)
optionalDependencies:
'@next/swc-darwin-arm64': 16.1.6
'@next/swc-darwin-x64': 16.1.6
@@ -8663,10 +8806,12 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(react@19.2.4):
+ styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.4):
dependencies:
client-only: 0.0.1
react: 19.2.4
+ optionalDependencies:
+ '@babel/core': 7.28.5
sucrase@3.35.0:
dependencies:
From 99a7c602f2629f2b02645acd5980df1ee7e172b6 Mon Sep 17 00:00:00 2001
From: Pavan Shinde
Date: Tue, 17 Feb 2026 17:36:49 +0530
Subject: [PATCH 121/353] docs: fix GitHub links to tailwindlabs org (#19686)
## Summary
Fix outdated GitHub links that still point to
`github.com/tailwindcss/tailwindcss` (old org). This updates references
across the README, contributing guide, and PR template to the canonical
`tailwindlabs/tailwindcss` URLs to avoid redirects/404s and keep repo
metadata consistent
## Test Plan
This change is docs-only.
---
.github/CONTRIBUTING.md | 2 +-
.github/PULL_REQUEST_TEMPLATE.md | 2 +-
README.md | 6 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 42645aa49..4dfe6eba9 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -50,7 +50,7 @@ If you open a pull request for a new feature, we're likely to close it not becau
## Coding standards
-Our code formatting rules are defined in the `"prettier"` section of [package.json](https://github.com/tailwindcss/tailwindcss/blob/main/package.json). You can check your code against these standards by running:
+Our code formatting rules are defined in the `"prettier"` section of [package.json](https://github.com/tailwindlabs/tailwindcss/blob/main/package.json). You can check your code against these standards by running:
```sh
pnpm run lint
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index ee9d3f9ab..aa0793aa3 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -8,7 +8,7 @@ It's never a fun experience to have your pull request declined after investing a
For more info, check out the contributing guide:
-https://github.com/tailwindcss/tailwindcss/blob/main/.github/CONTRIBUTING.md
+https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md
-->
diff --git a/README.md b/README.md
index 3dc5032fd..5f532607d 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@
-
+
@@ -29,8 +29,8 @@ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
For help, discussion about best practices, or feature ideas:
-[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
+[Discuss Tailwind CSS on GitHub](https://github.com/tailwindlabs/tailwindcss/discussions)
## Contributing
-If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
+If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindlabs/tailwindcss/blob/main/.github/CONTRIBUTING.md) **before submitting a pull request**.
From d74f8b83926bb78c05e6bb51cf6d5f149ec4c65f Mon Sep 17 00:00:00 2001
From: Benjamin Bock
Date: Tue, 17 Feb 2026 18:09:59 +0100
Subject: [PATCH 122/353] Add '.jj' to ignored content directories (#19687)
Ignore .jj directory, just like .git, .hg, .svn.
https://www.jj-vcs.dev/latest/
---------
Co-authored-by: Robin Malfait
---
CHANGELOG.md | 1 +
.../scanner/fixtures/ignored-content-dirs.txt | 17 +++++++++--------
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 74f72f10e..55cec3e08 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add `inline-*`, `min-inline-*`, `max-inline-*`, `block-*`, `min-block-*`, `max-block-*` utilities for `inline-size`, `min-inline-size`, `max-inline-size`, `block-size`, `min-block-size`, and `max-block-size` ([#19612](https://github.com/tailwindlabs/tailwindcss/pull/19612))
- Add `inset-s-*`, `inset-e-*`, `inset-bs-*`, `inset-be-*` utilities for `inset-inline-start`, `inset-inline-end`, `inset-block-start`, and `inset-block-end` ([#19613](https://github.com/tailwindlabs/tailwindcss/pull/19613))
- Add `font-features-*` utility for `font-feature-settings` ([#19623](https://github.com/tailwindlabs/tailwindcss/pull/19615))
+- Add '.jj' to ignored content directories ([#19687](https://github.com/tailwindlabs/tailwindcss/pull/19687))
### Fixed
diff --git a/crates/oxide/src/scanner/fixtures/ignored-content-dirs.txt b/crates/oxide/src/scanner/fixtures/ignored-content-dirs.txt
index 0921d2ff8..79f01ecc1 100644
--- a/crates/oxide/src/scanner/fixtures/ignored-content-dirs.txt
+++ b/crates/oxide/src/scanner/fixtures/ignored-content-dirs.txt
@@ -1,14 +1,15 @@
.git
.hg
-.svn
-node_modules
-.yarn
-.venv
-venv
+.jj
.next
-.turbo
.parcel-cache
-__pycache__
-.svelte-kit
.pnpm-store
+.svelte-kit
+.svn
+.turbo
+.venv
.vercel
+.yarn
+__pycache__
+node_modules
+venv
From 6eb3b324340f451a14389b7ed97f43a264ad4487 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 17 Feb 2026 13:32:31 -0500
Subject: [PATCH 123/353] Allow multiples of `.25` in `aspect-*` fractions
(#19688)
This PR reduces the restrictions of the `aspect-*` utilities when
dealing with fractional values.
Up until now, the numbers had to be positive integers, so `aspect-1/2`
was valid, but `aspect-8.5/11` was not.
This PR allows for any multiple of `.25` as a valid value, so
`aspect-8.5/11` is now valid, but `aspect-8.3/11` is not, this will
still require `aspect-[8.3/11]` arbitrary value syntax to be valid.
This behavior of allowing multiples of `.25` is consistent with other
utilities that handle bare values such as `w-2.5`.
## Test plan
1. Existing tests pass
2. Added a test for `aspect-8.5/11`
Fixes: #19663
Closes: #19680, #19669
---
CHANGELOG.md | 1 +
packages/tailwindcss/src/utilities.test.ts | 7 ++++++-
packages/tailwindcss/src/utilities.ts | 2 +-
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 55cec3e08..2eb00b020 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix class extraction for Rails' strict locals ([#19525](https://github.com/tailwindlabs/tailwindcss/pull/19525))
- Align `@utility` name validation with Oxide scanner rules ([#19524](https://github.com/tailwindlabs/tailwindcss/pull/19524))
- Fix infinite loop when using `@variant` inside `@custom-variant` ([#19633](https://github.com/tailwindlabs/tailwindcss/pull/19633))
+- Allow multiples of `.25` in `aspect-*` fractions ([#19688](https://github.com/tailwindlabs/tailwindcss/pull/19688))
### Deprecated
diff --git a/packages/tailwindcss/src/utilities.test.ts b/packages/tailwindcss/src/utilities.test.ts
index 29e8dae3a..7bd03b577 100644
--- a/packages/tailwindcss/src/utilities.test.ts
+++ b/packages/tailwindcss/src/utilities.test.ts
@@ -3156,7 +3156,7 @@ test('aspect-ratio', async () => {
}
@tailwind utilities;
`,
- ['aspect-video', 'aspect-[10/9]', 'aspect-4/3'],
+ ['aspect-video', 'aspect-[10/9]', 'aspect-4/3', 'aspect-8.5/11'],
),
).toMatchInlineSnapshot(`
":root, :host {
@@ -3167,6 +3167,10 @@ test('aspect-ratio', async () => {
aspect-ratio: 4 / 3;
}
+ .aspect-8\\.5\\/11 {
+ aspect-ratio: 8.5 / 11;
+ }
+
.aspect-\\[10\\/9\\] {
aspect-ratio: 10 / 9;
}
@@ -3188,6 +3192,7 @@ test('aspect-ratio', async () => {
'aspect--4/3',
'aspect--4/-3',
'aspect-4/-3',
+ 'aspect-1.23/4.56',
]),
).toEqual('')
})
diff --git a/packages/tailwindcss/src/utilities.ts b/packages/tailwindcss/src/utilities.ts
index fd524f495..015821e4e 100644
--- a/packages/tailwindcss/src/utilities.ts
+++ b/packages/tailwindcss/src/utilities.ts
@@ -981,7 +981,7 @@ export function createUtilities(theme: Theme) {
handleBareValue: ({ fraction }) => {
if (fraction === null) return null
let [lhs, rhs] = segment(fraction, '/')
- if (!isPositiveInteger(lhs) || !isPositiveInteger(rhs)) return null
+ if (!isValidSpacingMultiplier(lhs) || !isValidSpacingMultiplier(rhs)) return null
return fraction
},
handle: (value) => [decl('aspect-ratio', value)],
From f212b0fc22c3e6f93a5068654e67bd2818109b95 Mon Sep 17 00:00:00 2001
From: "Arsher. {Zach}"
Date: Tue, 17 Feb 2026 19:04:17 +0000
Subject: [PATCH 124/353] fix: restore full page reload for watched external
files on Vite 7.1+ (#19670)
# PR: Fix @source file changes not triggering full page reload on Vite
7.1+
## Description
This PR addresses issue #19637 where template files (PHP, HTML, Blade,
etc.) watched via the `@source` directive fail to trigger a full page
reload when using Vite 7.1 or newer.
## Root Cause
Vite 7.1 introduced the Environment API, which supersedes the legacy
WebSocket API for HMR. Specifically:
- `server.ws.send` is deprecated/ignored for certain external file
updates in favor of `server.hot.send`.
- The `@tailwindcss/vite` plugin currently collects `ViteDevServer`
instances but lacks a `handleHotUpdate` hook to explicitly trigger
reloads for non-module files added via `addWatchFile`.
## Changes
- Implemented a `handleHotUpdate` hook in the `@tailwindcss/vite`
plugin.
- The hook identifies changes to files that are not part of the standard
Vite module graph (e.g., `.php`, `.html`) but are watched by Tailwind.
- Triggers a `full-reload` using the new `server.hot.send` API if
available (Vite 7.1+), with a fallback to `server.ws.send` for backward
compatibility.
## Verification
- Reproduced the issue in a standalone Vite 7.1.0 project using a mock
plugin with the legacy API.
- Confirmed that the browser fails to reload upon editing a watched
`.php` file.
- Verified that migrating to `server.hot.send` restores the expected
reload behavior.
[ci-all]
---------
Co-authored-by: Robin Malfait
---
CHANGELOG.md | 1 +
integrations/vite/index.test.ts | 112 +++++++++++++++++++++++
packages/@tailwindcss-vite/src/index.ts | 114 ++++++++++++++++++++++++
3 files changed, 227 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2eb00b020..a549a1232 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Align `@utility` name validation with Oxide scanner rules ([#19524](https://github.com/tailwindlabs/tailwindcss/pull/19524))
- Fix infinite loop when using `@variant` inside `@custom-variant` ([#19633](https://github.com/tailwindlabs/tailwindcss/pull/19633))
- Allow multiples of `.25` in `aspect-*` fractions ([#19688](https://github.com/tailwindlabs/tailwindcss/pull/19688))
+- Ensure changes to external files listed via `@source` trigger a full page reload when using `@tailwindcss/vite` ([#19670](https://github.com/tailwindlabs/tailwindcss/pull/19670))
### Deprecated
diff --git a/integrations/vite/index.test.ts b/integrations/vite/index.test.ts
index b8b2ad6e3..81236579d 100644
--- a/integrations/vite/index.test.ts
+++ b/integrations/vite/index.test.ts
@@ -7,6 +7,7 @@ import {
html,
js,
json,
+ jsx,
retryAssertion,
test,
ts,
@@ -472,6 +473,117 @@ describe.each(['postcss', 'lightningcss'])('%s', (transformer) => {
},
)
+ describe.sequential.each([['^6'], ['7.0.8'], ['7.1.12'], ['7.3.1']])(
+ 'Using Vite %s',
+ (version) => {
+ test(
+ 'external source file changes trigger a full reload',
+ {
+ fs: {
+ 'package.json': json`{}`,
+ 'pnpm-workspace.yaml': yaml`
+ #
+ packages:
+ - project-a
+ `,
+ 'project-a/package.json': json`
+ {
+ "type": "module",
+ "dependencies": {
+ "@tailwindcss/vite": "workspace:^",
+ "tailwindcss": "workspace:^"
+ },
+ "devDependencies": {
+ ${transformer === 'lightningcss' ? `"lightningcss": "^1",` : ''}
+ "vite": "${version}"
+ }
+ }
+ `,
+ 'project-a/vite.config.ts': ts`
+ import fs from 'node:fs'
+ import path from 'node:path'
+ import tailwindcss from '@tailwindcss/vite'
+ import { defineConfig } from 'vite'
+
+ export default defineConfig({
+ css: ${transformer === 'postcss' ? '{}' : "{ transformer: 'lightningcss' }"},
+ build: { cssMinify: false },
+ plugins: [tailwindcss()],
+ logLevel: 'info',
+ })
+ `,
+ 'project-a/index.html': html`
+
+
+
+
+
+
+
+
+
+ `,
+ 'project-a/src/main.ts': jsx`import { classes } from './app'`,
+ 'project-a/src/app.ts': jsx`export let classes = "content-['project-a/src/app.ts']"`,
+ 'project-a/src/index.css': css`
+ @import 'tailwindcss';
+ @source '../../project-b/**/*.php';
+ `,
+ 'project-b/src/index.php': html`
+
+ `,
+ },
+ },
+ async ({ root, spawn, fs, expect }) => {
+ let process = await spawn('pnpm vite dev --debug hmr', {
+ cwd: path.join(root, 'project-a'),
+ })
+ await process.onStdout((m) => m.includes('ready in'))
+
+ let url = ''
+ await process.onStdout((m) => {
+ let match = /Local:\s*(http.*)\//.exec(m)
+ if (match) url = match[1]
+ return Boolean(url)
+ })
+
+ await retryAssertion(async () => {
+ let styles = await fetchStyles(url, '/index.html')
+ expect(styles).toContain(candidate`content-['project-b/src/index.php']`)
+ })
+
+ // Flush all messages so that we can be sure the next messages are from
+ // the file changes we're about to make
+ process.flush()
+
+ // Changing an external .php file should trigger a full reload
+ {
+ await fs.write(
+ 'project-b/src/index.php',
+ txt`
`,
+ )
+
+ // Ensure the page reloaded
+ if (version === '^6' || version === '7.0.8') {
+ await process.onStdout((m) => m.includes('page reload') && m.includes('index.php'))
+ } else {
+ await process.onStderr(
+ (m) => m.includes('vite:hmr (client)') && m.includes('index.php'),
+ )
+ }
+ await process.onStderr((m) => m.includes('vite:hmr (ssr)') && m.includes('index.php'))
+
+ // Ensure the styles were regenerated with the new content
+ let styles = await fetchStyles(url, '/index.html')
+ expect(styles).toContain(candidate`content-['updated:project-b/src/index.php']`)
+ }
+ },
+ )
+ },
+ )
+
test(
`source(none) disables looking at the module graph`,
{
diff --git a/packages/@tailwindcss-vite/src/index.ts b/packages/@tailwindcss-vite/src/index.ts
index 4ad70ba43..d7d46c772 100644
--- a/packages/@tailwindcss-vite/src/index.ts
+++ b/packages/@tailwindcss-vite/src/index.ts
@@ -9,6 +9,7 @@ import {
} from '@tailwindcss/node'
import { clearRequireCache } from '@tailwindcss/node/require-cache'
import { Scanner } from '@tailwindcss/oxide'
+import { realpathSync } from 'node:fs'
import fs from 'node:fs/promises'
import path from 'node:path'
import type { Environment, Plugin, ResolvedConfig, ViteDevServer } from 'vite'
@@ -151,6 +152,64 @@ export default function tailwindcss(opts: PluginOptions = {}): Plugin[] {
return result
},
},
+
+ hotUpdate({ file, modules, timestamp, server }) {
+ // Ensure full-reloads are triggered for files that are being watched by
+ // Tailwind but aren't part of the module graph (like PHP or HTML
+ // files). If we don't do this, then changes to those files won't
+ // trigger a reload at all since Vite doesn't know about them.
+ {
+ // It's a little bit confusing, because due to the `addWatchFile`
+ // calls, it _is_ part of the module graph but nothing is really
+ // handling those files. These modules typically have an id of
+ // undefined and/or have a type of 'asset'.
+ //
+ // If we call `addWatchFile` on a file that is part of the actual
+ // module graph, then we will see a module for it with a type of `js`
+ // and a type of `asset`. We are only interested if _all_ of them are
+ // missing an id and/or have a type of 'asset', which is a strong
+ // signal that the changed file is not being handled by Vite or any of
+ // the plugins.
+ //
+ // Note: in Vite v7.0.6 the modules here will have a type of `js`, not
+ // 'asset'. But it will also have a `HARD_INVALIDATED` state and will
+ // do a full page reload already.
+ let isExternalFile = modules.every((mod) => mod.type === 'asset' || mod.id === undefined)
+ if (!isExternalFile) return
+
+ for (let env of new Set([this.environment.name, 'client'])) {
+ let roots = rootsByEnv.get(env)
+ if (roots.size === 0) continue
+
+ // If the file is not being watched by any of the roots, then we can
+ // skip the reload since it's not relevant to Tailwind CSS.
+ if (!isScannedFile(file, modules, roots)) {
+ continue
+ }
+
+ // https://vite.dev/changes/hotupdate-hook#migration-guide
+ let invalidatedModules = new Set()
+ for (let mod of modules) {
+ this.environment.moduleGraph.invalidateModule(
+ mod,
+ invalidatedModules,
+ timestamp,
+ true,
+ )
+ }
+
+ if (env === this.environment.name) {
+ this.environment.hot.send({ type: 'full-reload' })
+ } else if (server.hot.send) {
+ server.hot.send({ type: 'full-reload' })
+ } else if (server.ws.send) {
+ server.ws.send({ type: 'full-reload' })
+ }
+
+ return []
+ }
+ }
+ },
},
{
@@ -271,6 +330,10 @@ class Root {
private customJsResolver: (id: string, base: string) => Promise,
) {}
+ get scannedFiles() {
+ return this.scanner?.files ?? []
+ }
+
// Generate the CSS for the root file. This can return false if the file is
// not considered a Tailwind root. When this happened, the root can be GCed.
public async generate(
@@ -452,3 +515,54 @@ class Root {
return false
}
}
+
+function isScannedFile(
+ file: string,
+ modules: vite.EnvironmentModuleNode[],
+ roots: Map,
+) {
+ let seen = new Set()
+ let q = [...modules]
+ let checks = {
+ file,
+ get realpath() {
+ try {
+ let realpath = realpathSync(file)
+ Object.defineProperty(checks, 'realpath', { value: realpath })
+ return realpath
+ } catch {
+ return null
+ }
+ },
+ }
+
+ while (q.length > 0) {
+ let module = q.shift()!
+ if (seen.has(module)) continue
+ seen.add(module)
+
+ if (module.id) {
+ let root = roots.get(module.id)
+
+ if (root) {
+ // If the file is part of the scanned files for this root, then we know
+ // for sure that it's being watched by any of the Tailwind CSS roots. It
+ // doesn't matter which root it is since it's only used to know whether
+ // we should trigger a full reload or not.
+ if (
+ root.scannedFiles.includes(checks.file) ||
+ (checks.realpath && root.scannedFiles.includes(checks.realpath))
+ ) {
+ return true
+ }
+ }
+ }
+
+ // Keep walking up the tree until we find a root.
+ for (let importer of module.importers) {
+ q.push(importer)
+ }
+ }
+
+ return false
+}
From 095ff96ba35de0824313fd150b6e70695d300dd1 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Tue, 17 Feb 2026 14:15:20 -0500
Subject: [PATCH 125/353] Improve performance in bigger projects (#19632)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR improves the performance of Oxide when scanning large codebases.
The `Oxide` API, looks something like this:
```ts
let scanner = new Scanner({ sources })
let candidates = scanner.scan() // Found candidates
let files = scanner.files // Scanned files
let globs = scanner.globs // Scanned globs
```
The `files` and `globs` are used to tell PostCSS, Vite, webpack etc
which files to watch for changes.
The `.scan()` operation extracts the candidates from the source files.
You can think of these as potential Tailwind CSS classes.
In all these scenarios we have to walk the file system and find files
that match the `sources`.
### 1. Prevent multiple file system walks
The first big win came from the fact that accessing `.files` after a
`.scan()` also does an entire walk of the file system (for the given
`sources`), which is unnecessary because we just walked the file system.
This is something that's not really an issue in smaller codebases
because we have `mtime` tracking. We don't re-scan a file if its `mtime`
hasn't changed since the last scan. However, in large codebases with
thousands of files, even walking the file system to check `mtime`s can
be expensive.
### 2. Use parallel file system walking
Another big win is to use a parallel file system walker instead of a
synchronous one. The big problem here is that the parallel build has
20ms-50ms of overhead which is noticeable on small codebases. We don't
really know if you have a small or big codebase ahead of time, so maybe
some kind of hint in the future would be useful.
So the solution I settled on right now is to use a synchronous walker
for the initial scan, and then switch to a parallel walker for
subsequent scans (think dev mode). This gives us the best of both
worlds: fast initial scan on small codebases, and fast re-scans on large
codebases.
Caveat: if you use the `@tailwindcss/cli` we know exactly which files
changed so we can just re-scan those files directly without walking the
file system at all. But in `@tailwindcss/postcss` we don't know which
files changed, so we have to walk the file system to check `mtime`s.
While this improvement is nice, it resulted in an annoying issue related
to `mtime` tracking. Since the parallel walker processes files in
parallel, the `mtime` was typed as `Arc>>` so to avoid locking, I decided to only walk the files
here and collect their paths. Then later we check the `mtime` to know
whether to re-scan them or not.
Initially I just removed the `mtime` tracking altogether. But it did
have an impact when actually extracting candidates from those files, so
I added it back later.
### 3. Delaying work
I was still a bit annoyed by the fact that we had to track `mtime`
values for every file. This seems like annoying overhead, especially
when doing a single build (no dev mode).
So the trick I applied here is to only start tracking `mtime` values
after the initial scan.
This means that, in dev mode, we would do this:
1. Walk entire file system to track files.
2. On a subsequent scan, walk entire file system (again) and start
tracking `mtime` values. This time, we use the parallel walker instead
of the synchronous one.
3. On further scans, only re-scan files whose `mtime` has changed
The trade-off here is that on the second scan we always re-scan all
files, even if they haven't changed. Since this typically only happens
in dev mode, I think this is an acceptable trade-off especially if the
initial build is therefor faster this way.
### 3. Small wins
There are also a few small wins in here that I would like to mention but
that are less significant:
1. Pre-computed normalized `source` patterns instead of in every walker
filter call.
2. Tried to avoid some allocations in various places. For example the
`pre_process_input` always called `content.to_vec()` which allocates.
Instead we now accept an owned `Vec` so we don't have to call
`.to_vec()` in the default case (in my testing, this is ~92% of the time
in the codebases I checked).
3. Made the `Cursor` struct smaller, which is used a lot during
candidate extraction.
### Benchmarks
Now for the fun stuff, the benchmarks!
The code for the benchmarks
```ts
import path from 'node:path'
import { bench, boxplot, do_not_optimize, run, summary } from 'mitata'
import { Scanner as ScannerPr } from '/path/to/repo/with/pr/branch/tailwindcss/crates/node'
import { Scanner as ScannerMain } from '/path/to/repo/with/main/branch/tailwindcss/crates/node'
let base = '/path/to/some/codebase'
let sources = [{ base, pattern: '**/*', negated: false }]
// Verify the results are the same before benchmarking
let scannerPr = new ScannerPr({ sources })
let scannerMain = new ScannerMain({ sources })
{
let aCandidates = scannerPr.scan()
let bCandidates = scannerMain.scan()
if (aCandidates.length !== bCandidates.length) {
throw new Error(`Mismatch in candidate count: ${aCandidates.length} vs ${bCandidates.length}`)
}
for (let i = 0; i < aCandidates.length; i++) {
if (aCandidates[i] !== bCandidates[i]) {
throw new Error(`Mismatch in candidate at index ${i}: ${aCandidates[i]} vs ${bCandidates[i]}`)
}
}
let aFiles = scannerPr.files
let bFiles = scannerMain.files
if (aFiles.length !== bFiles.length) {
throw new Error(`Mismatch in file count: ${aFiles.length} vs ${bFiles.length}`)
}
for (let i = 0; i < aFiles.length; i++) {
if (aFiles[i] !== bFiles[i]) {
throw new Error(`Mismatch in file at index ${i}: ${aFiles[i]} vs ${bFiles[i]}`)
}
}
console.log('Scanned', aFiles.length, 'files')
console.log('Extracted', aCandidates.length, 'candidates')
console.log('Base =', base)
console.log()
}
summary(() => {
boxplot(() => {
bench('PR (build, .scan()))', function* () {
yield {
[0]() {
return new ScannerPr({ sources })
},
bench(scanner: ScannerPr) {
do_not_optimize(scanner.scan())
},
}
})
bench('main (build, .scan()))', function* () {
yield {
[0]() {
return new ScannerMain({ sources })
},
bench(scanner: ScannerMain) {
do_not_optimize(scanner.scan())
},
}
})
})
})
summary(() => {
boxplot(() => {
bench('PR (build, .scan() + .files)', function* () {
yield {
[0]() {
return new ScannerPr({ sources })
},
bench(scanner: ScannerPr) {
do_not_optimize(scanner.scan())
do_not_optimize(scanner.files)
},
}
})
bench('main (build, .scan() + .files)', function* () {
yield {
[0]() {
return new ScannerMain({ sources })
},
bench(scanner: ScannerMain) {
do_not_optimize(scanner.scan())
do_not_optimize(scanner.files)
},
}
})
})
})
summary(() => {
boxplot(() => {
bench('PR (watch, .scan()))', function* () {
yield {
bench() {
do_not_optimize(scannerPr.scan())
},
}
})
bench('main (watch, .scan()))', function* () {
yield {
bench() {
do_not_optimize(scannerMain.scan())
},
}
})
})
})
summary(() => {
boxplot(() => {
bench('PR (watch, .scan() + .files)', function* () {
yield {
bench() {
do_not_optimize(scannerPr.scan())
do_not_optimize(scannerPr.files)
},
}
})
bench('main (watch, .scan() + .files)', function* () {
yield {
bench() {
do_not_optimize(scannerMain.scan())
do_not_optimize(scannerMain.files)
},
}
})
})
})
await run()
```
#### tailwindcss.com codebase
```
Scanned 462 files
Extracted 13200 candidates
Base = /Users/robin/github.com/tailwindlabs/tailwindcss.com
clk: ~3.09 GHz
cpu: Apple M1 Max
runtime: bun 1.3.3 (arm64-darwin)
```
In these benchmarks the `PR` one is consistently faster than `main`.
It's not by a lot but that's mainly because the codebase itself isn't
that big. It is a codebase with _a lot_ of candidates though, but not
that many files.
The candidate extraction was already pretty fast, so the wins here
mainly come from avoiding re-walking the file system when accessing
`.files`, and from delaying `mtime` tracking until after the initial
scan.
**Single initial build**:
It's not a lot, but it's a bit faster. This is due to avoiding tracking
the `mtime` values initially and making some small optimizations related
to the struct size and allocations.
```
benchmark avg (min … max) p75 / p99 (min … top 1%)
--------------------------------------------- -------------------------------
PR (build, .scan())) 22.87 ms/iter 23.28 ms █
(21.49 ms … 25.68 ms) 23.98 ms ▂ ▂ ▂ █ ▂▂
(832.00 kb … 2.69 mb) 1.41 mb ▆▆▆▆█▆▆█▁▆▆█▁▁█▁▆██▁▆
main (build, .scan())) 25.67 ms/iter 26.12 ms █ █ █
(24.54 ms … 27.74 ms) 27.06 ms █ █ █ ███
(432.00 kb … 2.78 mb) 996.00 kb ██▁████▁█▁████▁█▁▁█▁█
┌ ┐
╷ ┌─────┬──┐ ╷
PR (build, .scan())) ├────┤ │ ├─────┤
╵ └─────┴──┘ ╵
╷ ┌─────┬──┐ ╷
main (build, .scan())) ├──┤ │ ├───────┤
╵ └─────┴──┘ ╵
└ ┘
21.49 ms 24.28 ms 27.06 ms
summary
PR (build, .scan()))
1.12x faster than main (build, .scan()))
```
**Single initial build + accessing `.files`**:
We don't have to re-walk the entire file system even if we're just
dealing with ~462 scanned files.
```
benchmark avg (min … max) p75 / p99 (min … top 1%)
--------------------------------------------- -------------------------------
PR (build, .scan() + .files) 22.54 ms/iter 22.99 ms █ ▂
(21.41 ms … 25.86 ms) 24.26 ms █ ▅ ▅▅█▅ ▅▅
(368.00 kb … 2.05 mb) 853.00 kb █▇█▇▇████▇▇██▁▁▇▁▁▇▁▇
main (build, .scan() + .files) 32.15 ms/iter 32.17 ms █ ▂
(30.78 ms … 36.22 ms) 35.75 ms ▅█ ▅█ ▅
(400.00 kb … 2.45 mb) 952.00 kb ██▁██▇▇█▇▁▁▁▁▁▁▁▁▁▁▁▇
┌ ┐
╷┌──┬┐ ╷
PR (build, .scan() + .files) ├┤ │├───┤
╵└──┴┘ ╵
╷┌───┬ ╷
main (build, .scan() + .files) ├┤ │──────────┤
╵└───┴ ╵
└ ┘
21.41 ms 28.58 ms 35.75 ms
summary
PR (build, .scan() + .files)
1.43x faster than main (build, .scan() + .files)
```
**Watch/dev mode, only scanning**:
This now switches to the parallel walker, but since it's not a super big
codebase we don't see a huge win here yet.
```
benchmark avg (min … max) p75 / p99 (min … top 1%)
--------------------------------------------- -------------------------------
PR (watch, .scan())) 6.85 ms/iter 7.22 ms █▄
(6.34 ms … 7.94 ms) 7.91 ms ▄██▃
( 64.00 kb … 688.00 kb) 452.82 kb ▃████▆▂▂▁▂▁▂▁▁▁▅█▆▃▅▃
main (watch, .scan())) 7.92 ms/iter 8.08 ms █ █ ▃ █▃▃
(7.41 ms … 8.71 ms) 8.68 ms █▆█▆▃█████
( 0.00 b … 64.00 kb) 19.20 kb ▆▄██████████▆▁▆▆█▄▄▄▆
┌ ┐
╷ ┌──────┬──────┐ ╷
PR (watch, .scan())) ├──┤ │ ├────────────┤
╵ └──────┴──────┘ ╵
╷ ┌───┬──┐ ╷
main (watch, .scan())) ├────┤ │ ├───────────┤
╵ └───┴──┘ ╵
└ ┘
6.34 ms 7.51 ms 8.68 ms
summary
PR (watch, .scan()))
1.16x faster than main (watch, .scan()))
```
**Watch/dev mode, scanning + accessing `.files`**:
Again we avoid re-walking the entire file system when accessing
`.files`.
```
benchmark avg (min … max) p75 / p99 (min … top 1%)
--------------------------------------------- -------------------------------
PR (watch, .scan() + .files) 12.10 ms/iter 12.74 ms █ █ █ █ ▃▃▃
(10.69 ms … 13.89 ms) 13.81 ms █ █▂▂▂ ▇█▂█▂███▇
(128.00 kb … 10.73 mb) 5.23 mb █▆████▁█████████▆▆▆▆▆
main (watch, .scan() + .files) 14.44 ms/iter 14.74 ms █
(13.93 ms … 15.33 ms) 15.18 ms ███▅ █ ▅ ▅
( 16.00 kb … 80.00 kb) 39.51 kb █▅████▁███▅▁█████▅▁▅▅
┌ ┐
╷ ┌──────┬──────┐ ╷
PR (watch, .scan() + .files) ├──────┤ │ ├─────────┤
╵ └──────┴──────┘ ╵
╷ ┌───┬──┐ ╷
main (watch, .scan() + .files) ├─┤ │ ├───┤
╵ └───┴──┘ ╵
└ ┘
10.69 ms 12.93 ms 15.18 ms
summary
PR (watch, .scan() + .files)
1.19x faster than main (watch, .scan() + .files)
```
#### Synthetic 5000 files codebase
Based on the instructions from #19616 I created a codebase with 5000
files. Each file contains a `flex` class and a unique class like
`content-['/path/to/file']` to ensure we have a decent amount of unique
candidates.
You can test the script yourself by running this:
```
mkdir -p fixtures/app-5000/src/components/{auth,dashboard,settings,profile,notifications,messages,search,navigation,footer,sidebar}/sub{001..500} && for dir in fixtures/app-5000/src/components/*/sub*; do echo "export const Component = () => test
" > "$dir/index.tsx"; done && find fixtures/app-5000/src/components -type f | wc -lc
```
```
Scanned 5000 files
Extracted 5005 candidates
Base = /Users/robin/github.com/RobinMalfait/playground/scanner-benchmarks/fixtures/app-5000
clk: ~3.08 GHz
cpu: Apple M1 Max
runtime: bun 1.3.3 (arm64-darwin)
```
**Single initial build**:
As expected not a super big win here because it's a single build. But
there is a noticeable improvement.
```
benchmark avg (min … max) p75 / p99 (min … top 1%)
--------------------------------------------- -------------------------------
PR (build, .scan())) 217.27 ms/iter 211.97 ms █
(205.99 ms … 289.53 ms) 214.33 ms ▅ ▅ ▅▅▅▅█▅▅ ▅
( 3.34 mb … 4.25 mb) 3.72 mb █▁▁▁▁▁▁█▁███████▁▁▁▁█
main (build, .scan())) 249.26 ms/iter 239.88 ms █
(231.51 ms … 381.66 ms) 241.01 ms ▅ ▅ ▅▅ ▅ █▅ ▅▅▅
( 4.22 mb … 4.78 mb) 4.49 mb █▁▁▁▁█▁██▁▁█▁▁██▁▁███
┌ ┐
╷ ┌─────╷──┬
PR (build, .scan())) ├────┤ ┤ │
╵ └─────╵──┴
╷ ┌───────╷
main (build, .scan())) ├───┤ ┤
╵ └───────╵
└ ┘
205.99 ms 223.50 ms 241.01 ms
summary
PR (build, .scan()))
1.15x faster than main (build, .scan()))
```
**Single initial build + accessing `.files`**:
Now things are getting interesting. Almost a 2x speedup by avoiding
re-walking the file system when accessing `.files`.
```
benchmark avg (min … max) p75 / p99 (min … top 1%)
--------------------------------------------- -------------------------------
PR (build, .scan() + .files) 216.35 ms/iter 214.53 ms █ █ █
(211.00 ms … 242.64 ms) 221.45 ms █ █▅█ ▅▅ ▅ ▅
( 2.97 mb … 4.47 mb) 3.97 mb █▁███▁██▁▁▁▁▁▁█▁▁▁▁▁█
main (build, .scan() + .files) 414.79 ms/iter 406.05 ms ██
(396.72 ms … 542.30 ms) 413.69 ms ▅ ██▅ ▅▅ ▅ ▅ ▅
( 5.19 mb … 6.03 mb) 5.63 mb █▁▁▁███▁██▁█▁█▁▁▁▁▁▁█
┌ ┐
┌┬╷
PR (build, .scan() + .files) ││┤
└┴╵
╷┌──╷
main (build, .scan() + .files) ├┤ ┤
╵└──╵
└ ┘
211.00 ms 312.34 ms 413.69 ms
summary
PR (build, .scan() + .files)
1.92x faster than main (build, .scan() + .files)
```
**Watch/dev mode, only scanning**:
This is where we see bigger wins because now we're using the parallel
walker.
```
benchmark avg (min … max) p75 / p99 (min … top 1%)
--------------------------------------------- -------------------------------
PR (watch, .scan())) 76.26 ms/iter 77.41 ms █
(73.56 ms … 79.02 ms) 77.81 ms ▅ ▅ ▅ ▅▅ ▅▅▅ ▅ █
( 2.53 mb … 5.52 mb) 3.06 mb █▁▁▁█▁▁█▁██▁███▁▁▁█▁█
main (watch, .scan())) 166.71 ms/iter 165.14 ms █ █
(161.49 ms … 198.26 ms) 168.99 ms █ ▅█ ▅▅▅ ▅ ▅ ▅
( 1.08 mb … 2.72 mb) 1.24 mb █▁██▁███▁▁█▁▁█▁▁▁▁▁▁█
┌ ┐
╷┬┐
PR (watch, .scan())) ├││
╵┴┘
╷┌─┬╷
main (watch, .scan())) ├┤ │┤
╵└─┴╵
└ ┘
73.56 ms 121.28 ms 168.99 ms
summary
PR (watch, .scan()))
2.19x faster than main (watch, .scan()))
```
**Watch/dev mode, scanning + accessing `.files`**:
This is the biggest win of them all because we have all the benefits
combined:
1. Avoiding re-walking the file system when accessing `.files`
2. Using the parallel walker for faster file system walking
```
benchmark avg (min … max) p75 / p99 (min … top 1%)
--------------------------------------------- -------------------------------
PR (watch, .scan() + .files) 84.04 ms/iter 84.84 ms █
(80.96 ms … 87.53 ms) 87.27 ms ▅▅ ▅▅ ▅▅ █▅ ▅ ▅
( 15.42 mb … 31.34 mb) 22.16 mb ██▁▁▁██▁██▁██▁█▁▁▁▁▁█
main (watch, .scan() + .files) 338.59 ms/iter 353.89 ms █
(321.87 ms … 378.43 ms) 358.70 ms █ █
( 2.39 mb … 2.45 mb) 2.42 mb ███▁▁██▁▁▁▁▁▁▁▁▁▁██▁█
┌ ┐
┬┐
PR (watch, .scan() + .files) ││
┴┘
┌──┬─┐╷
main (watch, .scan() + .files) │ │ ├┤
└──┴─┘╵
└ ┘
80.96 ms 219.83 ms 358.70 ms
summary
PR (watch, .scan() + .files)
4.03x faster than main (watch, .scan() + .files)
```
## Test plan
1. All existing tests still pass
2. All public APIs remain the same
3. In the benchmarks I'm sharing, I first verify that the candidates
returned and the files returned are the same before and after the
change.
4. Benchmarked against real codebases, and against a synthetic large
codebase (5000 files).
Fixes: #19616
---
CHANGELOG.md | 1 +
crates/oxide/src/cursor.rs | 130 ++---
.../extractor/arbitrary_property_machine.rs | 18 +-
.../src/extractor/arbitrary_value_machine.rs | 12 +-
.../extractor/arbitrary_variable_machine.rs | 22 +-
.../oxide/src/extractor/candidate_machine.rs | 6 +-
.../src/extractor/css_variable_machine.rs | 8 +-
crates/oxide/src/extractor/mod.rs | 8 +-
.../oxide/src/extractor/modifier_machine.rs | 8 +-
.../src/extractor/named_utility_machine.rs | 30 +-
.../src/extractor/named_variant_machine.rs | 20 +-
.../src/extractor/pre_processors/clojure.rs | 30 +-
.../src/extractor/pre_processors/elixir.rs | 14 +-
.../src/extractor/pre_processors/haml.rs | 28 +-
.../src/extractor/pre_processors/json.rs | 4 +-
.../src/extractor/pre_processors/markdown.rs | 2 +-
.../oxide/src/extractor/pre_processors/pug.rs | 12 +-
.../src/extractor/pre_processors/ruby.rs | 27 +-
.../src/extractor/pre_processors/rust.rs | 10 +-
.../src/extractor/pre_processors/slim.rs | 20 +-
.../oxide/src/extractor/pre_processors/vue.rs | 3 +-
crates/oxide/src/extractor/string_machine.rs | 10 +-
crates/oxide/src/extractor/utility_machine.rs | 10 +-
crates/oxide/src/extractor/variant_machine.rs | 4 +-
crates/oxide/src/fast_skip.rs | 2 +-
crates/oxide/src/scanner/detect_sources.rs | 8 +-
crates/oxide/src/scanner/init_tracing.rs | 70 +++
crates/oxide/src/scanner/mod.rs | 541 ++++++++++--------
28 files changed, 579 insertions(+), 479 deletions(-)
create mode 100644 crates/oxide/src/scanner/init_tracing.rs
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a549a1232..065700829 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix infinite loop when using `@variant` inside `@custom-variant` ([#19633](https://github.com/tailwindlabs/tailwindcss/pull/19633))
- Allow multiples of `.25` in `aspect-*` fractions ([#19688](https://github.com/tailwindlabs/tailwindcss/pull/19688))
- Ensure changes to external files listed via `@source` trigger a full page reload when using `@tailwindcss/vite` ([#19670](https://github.com/tailwindlabs/tailwindcss/pull/19670))
+- Improve performance Oxide scanner in bigger projects ([#19632](https://github.com/tailwindlabs/tailwindcss/pull/19632))
### Deprecated
diff --git a/crates/oxide/src/cursor.rs b/crates/oxide/src/cursor.rs
index 818a0ef1b..71cdccdf6 100644
--- a/crates/oxide/src/cursor.rs
+++ b/crates/oxide/src/cursor.rs
@@ -1,44 +1,49 @@
use std::{ascii::escape_default, fmt::Display};
-#[derive(Debug, Clone)]
+#[derive(Debug, Clone, Copy)]
pub struct Cursor<'a> {
// The input we're scanning
pub input: &'a [u8],
// The location of the cursor in the input
pub pos: usize,
-
- /// Is the cursor at the start of the input
- pub at_start: bool,
-
- /// Is the cursor at the end of the input
- pub at_end: bool,
-
- /// The previously consumed character
- /// If `at_start` is true, this will be NUL
- pub prev: u8,
-
- /// The current character
- pub curr: u8,
-
- /// The upcoming character (if any)
- /// If `at_end` is true, this will be NUL
- pub next: u8,
}
impl<'a> Cursor<'a> {
+ #[inline(always)]
pub fn new(input: &'a [u8]) -> Self {
- let mut cursor = Self {
- input,
- pos: 0,
- at_start: true,
- at_end: false,
- prev: 0x00,
- curr: 0x00,
- next: 0x00,
- };
- cursor.move_to(0);
- cursor
+ Self { input, pos: 0 }
+ }
+
+ /// The current byte at `pos`, or 0x00 if past the end.
+ #[inline(always)]
+ pub fn curr(&self) -> u8 {
+ if self.pos < self.input.len() {
+ unsafe { *self.input.get_unchecked(self.pos) }
+ } else {
+ 0x00
+ }
+ }
+
+ /// The next byte at `pos + 1`, or 0x00 if past the end.
+ #[inline(always)]
+ pub fn next(&self) -> u8 {
+ let next_pos = self.pos + 1;
+ if next_pos < self.input.len() {
+ unsafe { *self.input.get_unchecked(next_pos) }
+ } else {
+ 0x00
+ }
+ }
+
+ /// The previous byte at `pos - 1`, or 0x00 if at the start.
+ #[inline(always)]
+ pub fn prev(&self) -> u8 {
+ if self.pos > 0 {
+ unsafe { *self.input.get_unchecked(self.pos - 1) }
+ } else {
+ 0x00
+ }
}
pub fn advance_by(&mut self, amount: usize) {
@@ -48,38 +53,15 @@ impl<'a> Cursor<'a> {
#[inline(always)]
pub fn advance(&mut self) {
self.pos += 1;
-
- self.prev = self.curr;
- self.curr = self.next;
- self.next = *self
- .input
- .get(self.pos.saturating_add(1))
- .unwrap_or(&0x00u8);
}
#[inline(always)]
pub fn advance_twice(&mut self) {
self.pos += 2;
-
- self.prev = self.next;
- self.curr = *self.input.get(self.pos).unwrap_or(&0x00u8);
- self.next = *self
- .input
- .get(self.pos.saturating_add(1))
- .unwrap_or(&0x00u8);
}
pub fn move_to(&mut self, pos: usize) {
- let len = self.input.len();
- let pos = pos.clamp(0, len);
-
- self.pos = pos;
- self.at_start = pos == 0;
- self.at_end = pos + 1 >= len;
-
- self.prev = *self.input.get(pos.wrapping_sub(1)).unwrap_or(&0x00u8);
- self.curr = *self.input.get(pos).unwrap_or(&0x00u8);
- self.next = *self.input.get(pos.saturating_add(1)).unwrap_or(&0x00u8);
+ self.pos = pos.min(self.input.len());
}
}
@@ -90,9 +72,9 @@ impl Display for Cursor<'_> {
let pos = format!("{: >len_count$}", self.pos, len_count = len.len());
write!(f, "{}/{} ", pos, len)?;
- if self.at_start {
+ if self.pos == 0 {
write!(f, "S ")?;
- } else if self.at_end {
+ } else if self.pos + 1 >= self.input.len() {
write!(f, "E ")?;
} else {
write!(f, "M ")?;
@@ -109,9 +91,9 @@ impl Display for Cursor<'_> {
write!(
f,
"[{} {} {}]",
- to_str(self.prev),
- to_str(self.curr),
- to_str(self.next)
+ to_str(self.prev()),
+ to_str(self.curr()),
+ to_str(self.next())
)
}
}
@@ -125,36 +107,28 @@ mod test {
fn test_cursor() {
let mut cursor = Cursor::new(b"hello world");
assert_eq!(cursor.pos, 0);
- assert!(cursor.at_start);
- assert!(!cursor.at_end);
- assert_eq!(cursor.prev, 0x00);
- assert_eq!(cursor.curr, b'h');
- assert_eq!(cursor.next, b'e');
+ assert_eq!(cursor.prev(), 0x00);
+ assert_eq!(cursor.curr(), b'h');
+ assert_eq!(cursor.next(), b'e');
cursor.advance_by(1);
assert_eq!(cursor.pos, 1);
- assert!(!cursor.at_start);
- assert!(!cursor.at_end);
- assert_eq!(cursor.prev, b'h');
- assert_eq!(cursor.curr, b'e');
- assert_eq!(cursor.next, b'l');
+ assert_eq!(cursor.prev(), b'h');
+ assert_eq!(cursor.curr(), b'e');
+ assert_eq!(cursor.next(), b'l');
// Advancing too far should stop at the end
cursor.advance_by(10);
assert_eq!(cursor.pos, 11);
- assert!(!cursor.at_start);
- assert!(cursor.at_end);
- assert_eq!(cursor.prev, b'd');
- assert_eq!(cursor.curr, 0x00);
- assert_eq!(cursor.next, 0x00);
+ assert_eq!(cursor.prev(), b'd');
+ assert_eq!(cursor.curr(), 0x00);
+ assert_eq!(cursor.next(), 0x00);
// Can't advance past the end
cursor.advance_by(1);
assert_eq!(cursor.pos, 11);
- assert!(!cursor.at_start);
- assert!(cursor.at_end);
- assert_eq!(cursor.prev, b'd');
- assert_eq!(cursor.curr, 0x00);
- assert_eq!(cursor.next, 0x00);
+ assert_eq!(cursor.prev(), b'd');
+ assert_eq!(cursor.curr(), 0x00);
+ assert_eq!(cursor.next(), 0x00);
}
}
diff --git a/crates/oxide/src/extractor/arbitrary_property_machine.rs b/crates/oxide/src/extractor/arbitrary_property_machine.rs
index 8fd13e394..a43253339 100644
--- a/crates/oxide/src/extractor/arbitrary_property_machine.rs
+++ b/crates/oxide/src/extractor/arbitrary_property_machine.rs
@@ -74,7 +74,7 @@ impl Machine for ArbitraryPropertyMachine {
#[inline]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- match cursor.curr.into() {
+ match cursor.curr().into() {
// Start of an arbitrary property
Class::OpenBracket => {
self.start_pos = cursor.pos;
@@ -97,8 +97,8 @@ impl Machine for ArbitraryPropertyMachine {
let len = cursor.input.len();
while cursor.pos < len {
- match cursor.curr.into() {
- Class::Dash => match cursor.next.into() {
+ match cursor.curr().into() {
+ Class::Dash => match cursor.next().into() {
// Start of a CSS variable
//
// E.g.: `[--my-color:red]`
@@ -137,7 +137,7 @@ impl ArbitraryPropertyMachine {
fn parse_property_variable(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
match self.css_variable_machine.next(cursor) {
MachineState::Idle => self.restart(),
- MachineState::Done(_) => match cursor.next.into() {
+ MachineState::Done(_) => match cursor.next().into() {
// End of the CSS variable, must be followed by a `:`
//
// E.g.: `[--my-color:red]`
@@ -165,8 +165,8 @@ impl Machine for ArbitraryPropertyMachine {
let len = cursor.input.len();
let start_of_value_pos = cursor.pos;
while cursor.pos < len {
- match cursor.curr.into() {
- Class::Escape => match cursor.next.into() {
+ match cursor.curr().into() {
+ Class::Escape => match cursor.next().into() {
// An escaped whitespace character is not allowed
//
// E.g.: `[color:var(--my-\ color)]`
@@ -181,7 +181,7 @@ impl Machine for ArbitraryPropertyMachine {
},
Class::OpenParen | Class::OpenBracket | Class::OpenCurly => {
- if !self.bracket_stack.push(cursor.curr) {
+ if !self.bracket_stack.push(cursor.curr()) {
return self.restart();
}
cursor.advance();
@@ -190,7 +190,7 @@ impl Machine for ArbitraryPropertyMachine {
Class::CloseParen | Class::CloseBracket | Class::CloseCurly
if !self.bracket_stack.is_empty() =>
{
- if !self.bracket_stack.pop(cursor.curr) {
+ if !self.bracket_stack.pop(cursor.curr()) {
return self.restart();
}
cursor.advance();
@@ -227,7 +227,7 @@ impl Machine for ArbitraryPropertyMachine {
Class::Slash if start_of_value_pos == cursor.pos => return self.restart(),
// String interpolation-like syntax is not allowed. E.g.: `[${x}]`
- Class::Dollar if matches!(cursor.next.into(), Class::OpenCurly) => {
+ Class::Dollar if matches!(cursor.next().into(), Class::OpenCurly) => {
return self.restart()
}
diff --git a/crates/oxide/src/extractor/arbitrary_value_machine.rs b/crates/oxide/src/extractor/arbitrary_value_machine.rs
index f5a612df1..cbef62c42 100644
--- a/crates/oxide/src/extractor/arbitrary_value_machine.rs
+++ b/crates/oxide/src/extractor/arbitrary_value_machine.rs
@@ -32,7 +32,7 @@ impl Machine for ArbitraryValueMachine {
#[inline]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
// An arbitrary value must start with an open bracket
- if Class::OpenBracket != cursor.curr.into() {
+ if Class::OpenBracket != cursor.curr().into() {
return MachineState::Idle;
}
@@ -42,8 +42,8 @@ impl Machine for ArbitraryValueMachine {
let len = cursor.input.len();
while cursor.pos < len {
- match cursor.curr.into() {
- Class::Escape => match cursor.next.into() {
+ match cursor.curr().into() {
+ Class::Escape => match cursor.next().into() {
// An escaped whitespace character is not allowed
//
// E.g.: `[color:var(--my-\ color)]`
@@ -61,7 +61,7 @@ impl Machine for ArbitraryValueMachine {
},
Class::OpenParen | Class::OpenBracket | Class::OpenCurly => {
- if !self.bracket_stack.push(cursor.curr) {
+ if !self.bracket_stack.push(cursor.curr()) {
return self.restart();
}
cursor.advance();
@@ -70,7 +70,7 @@ impl Machine for ArbitraryValueMachine {
Class::CloseParen | Class::CloseBracket | Class::CloseCurly
if !self.bracket_stack.is_empty() =>
{
- if !self.bracket_stack.pop(cursor.curr) {
+ if !self.bracket_stack.pop(cursor.curr()) {
return self.restart();
}
cursor.advance();
@@ -96,7 +96,7 @@ impl Machine for ArbitraryValueMachine {
Class::Whitespace => return self.restart(),
// String interpolation-like syntax is not allowed. E.g.: `[${x}]`
- Class::Dollar if matches!(cursor.next.into(), Class::OpenCurly) => {
+ Class::Dollar if matches!(cursor.next().into(), Class::OpenCurly) => {
return self.restart()
}
diff --git a/crates/oxide/src/extractor/arbitrary_variable_machine.rs b/crates/oxide/src/extractor/arbitrary_variable_machine.rs
index 6990e110b..e8d475557 100644
--- a/crates/oxide/src/extractor/arbitrary_variable_machine.rs
+++ b/crates/oxide/src/extractor/arbitrary_variable_machine.rs
@@ -80,13 +80,13 @@ impl Machine for ArbitraryVariableMachine {
#[inline(always)]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- match cursor.curr.into() {
+ match cursor.curr().into() {
// Arbitrary variables start with `(` followed by a CSS variable
//
// E.g.: `(--my-variable)`
// ^^
//
- Class::OpenParen => match cursor.next.into() {
+ Class::OpenParen => match cursor.next().into() {
Class::Dash => {
self.start_pos = cursor.pos;
cursor.advance();
@@ -117,7 +117,7 @@ impl Machine for ArbitraryVariableMachine {
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
match self.css_variable_machine.next(cursor) {
MachineState::Idle => self.restart(),
- MachineState::Done(_) => match cursor.next.into() {
+ MachineState::Done(_) => match cursor.next().into() {
// A CSS variable followed by a `,` means that there is a fallback
//
// E.g.: `(--my-color,red)`
@@ -134,7 +134,7 @@ impl Machine for ArbitraryVariableMachine {
_ => {
cursor.advance();
- match cursor.curr.into() {
+ match cursor.curr().into() {
// End of an arbitrary variable, must be followed by `)`
Class::CloseParen => self.done(self.start_pos, cursor),
@@ -156,7 +156,7 @@ impl Machine for ArbitraryVariableMachine {
let len = cursor.input.len();
while cursor.pos < len {
- match cursor.curr.into() {
+ match cursor.curr().into() {
// Valid data type characters
//
// E.g.: `(length:--my-length)`
@@ -169,7 +169,7 @@ impl Machine for ArbitraryVariableMachine {
//
// E.g.: `(length:--my-length)`
// ^
- Class::Colon => match cursor.next.into() {
+ Class::Colon => match cursor.next().into() {
Class::Dash => {
cursor.advance();
return self.transition::().next(cursor);
@@ -196,8 +196,8 @@ impl Machine for ArbitraryVariableMachine {
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
let len = cursor.input.len();
while cursor.pos < len {
- match cursor.curr.into() {
- Class::Escape => match cursor.next.into() {
+ match cursor.curr().into() {
+ Class::Escape => match cursor.next().into() {
// An escaped whitespace character is not allowed
//
// E.g.: `(--my-\ color)`
@@ -212,7 +212,7 @@ impl Machine for ArbitraryVariableMachine {
},
Class::OpenParen | Class::OpenBracket | Class::OpenCurly => {
- if !self.bracket_stack.push(cursor.curr) {
+ if !self.bracket_stack.push(cursor.curr()) {
return self.restart();
}
cursor.advance();
@@ -221,7 +221,7 @@ impl Machine for ArbitraryVariableMachine {
Class::CloseParen | Class::CloseBracket | Class::CloseCurly
if !self.bracket_stack.is_empty() =>
{
- if !self.bracket_stack.pop(cursor.curr) {
+ if !self.bracket_stack.pop(cursor.curr()) {
return self.restart();
}
cursor.advance();
@@ -253,7 +253,7 @@ impl Machine for ArbitraryVariableMachine {
Class::Whitespace => return self.restart(),
// String interpolation-like syntax is not allowed. E.g.: `[${x}]`
- Class::Dollar if matches!(cursor.next.into(), Class::OpenCurly) => {
+ Class::Dollar if matches!(cursor.next().into(), Class::OpenCurly) => {
return self.restart()
}
diff --git a/crates/oxide/src/extractor/candidate_machine.rs b/crates/oxide/src/extractor/candidate_machine.rs
index c82cc3707..a755cf02a 100644
--- a/crates/oxide/src/extractor/candidate_machine.rs
+++ b/crates/oxide/src/extractor/candidate_machine.rs
@@ -32,14 +32,14 @@ impl Machine for CandidateMachine {
while cursor.pos < len {
// Skip ahead for known characters that will never be part of a candidate. No need to
// run any sub-machines.
- if cursor.curr.is_ascii_whitespace() {
+ if cursor.curr().is_ascii_whitespace() {
self.reset();
cursor.advance();
continue;
}
// Candidates don't start with these characters, so we can skip ahead.
- if matches!(cursor.curr, b':' | b'"' | b'\'' | b'`') {
+ if matches!(cursor.curr(), b':' | b'"' | b'\'' | b'`') {
self.reset();
cursor.advance();
continue;
@@ -56,7 +56,7 @@ impl Machine for CandidateMachine {
// E.g.: `Some Class`
// ^ ^ Invalid, we can jump ahead to the next boundary
//
- if matches!(cursor.curr, b'<' | b'A'..=b'Z') {
+ if matches!(cursor.curr(), b'<' | b'A'..=b'Z') {
if let Some(offset) = cursor.input[cursor.pos..]
.iter()
.position(|&c| is_valid_before_boundary(&c))
diff --git a/crates/oxide/src/extractor/css_variable_machine.rs b/crates/oxide/src/extractor/css_variable_machine.rs
index 4e19c7111..7beb827ee 100644
--- a/crates/oxide/src/extractor/css_variable_machine.rs
+++ b/crates/oxide/src/extractor/css_variable_machine.rs
@@ -20,7 +20,7 @@ impl Machine for CssVariableMachine {
#[inline]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
// CSS Variables must start with `--`
- if Class::Dash != cursor.curr.into() || Class::Dash != cursor.next.into() {
+ if Class::Dash != cursor.curr().into() || Class::Dash != cursor.next().into() {
return MachineState::Idle;
}
@@ -30,11 +30,11 @@ impl Machine for CssVariableMachine {
cursor.advance_twice();
while cursor.pos < len {
- match cursor.curr.into() {
+ match cursor.curr().into() {
// https://drafts.csswg.org/css-syntax-3/#ident-token-diagram
//
Class::AllowedCharacter | Class::Dash => {
- match cursor.next.into() {
+ match cursor.next().into() {
// Valid character followed by a valid character or an escape character
//
// E.g.: `--my-variable`
@@ -58,7 +58,7 @@ impl Machine for CssVariableMachine {
}
}
- Class::Escape => match cursor.next.into() {
+ Class::Escape => match cursor.next().into() {
// An escaped whitespace character is not allowed
//
// In CSS it is allowed, but in the context of a class it's not because then we
diff --git a/crates/oxide/src/extractor/mod.rs b/crates/oxide/src/extractor/mod.rs
index add0de4ac..a37d6a0a4 100644
--- a/crates/oxide/src/extractor/mod.rs
+++ b/crates/oxide/src/extractor/mod.rs
@@ -86,7 +86,7 @@ impl<'a> Extractor<'a> {
{
let cursor = &mut self.cursor.clone();
while cursor.pos < len {
- if cursor.curr.is_ascii_whitespace() {
+ if cursor.curr().is_ascii_whitespace() {
cursor.advance();
continue;
}
@@ -104,7 +104,7 @@ impl<'a> Extractor<'a> {
let cursor = &mut self.cursor.clone();
while cursor.pos < len {
- if cursor.curr.is_ascii_whitespace() {
+ if cursor.curr().is_ascii_whitespace() {
cursor.advance();
continue;
}
@@ -147,7 +147,7 @@ impl<'a> Extractor<'a> {
let cursor = &mut self.cursor.clone();
while cursor.pos < len {
- if cursor.curr.is_ascii_whitespace() {
+ if cursor.curr().is_ascii_whitespace() {
cursor.advance();
continue;
}
@@ -238,7 +238,7 @@ mod tests {
use std::hint::black_box;
fn pre_process_input(input: &str, extension: &str) -> String {
- let input = crate::scanner::pre_process_input(input.as_bytes(), extension);
+ let input = crate::scanner::pre_process_input(input.as_bytes().to_vec(), extension);
String::from_utf8(input).unwrap()
}
diff --git a/crates/oxide/src/extractor/modifier_machine.rs b/crates/oxide/src/extractor/modifier_machine.rs
index 22668a828..811bc9ded 100644
--- a/crates/oxide/src/extractor/modifier_machine.rs
+++ b/crates/oxide/src/extractor/modifier_machine.rs
@@ -31,14 +31,14 @@ impl Machine for ModifierMachine {
#[inline]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
// A modifier must start with a `/`, everything else is not a valid start of a modifier
- if Class::Slash != cursor.curr.into() {
+ if Class::Slash != cursor.curr().into() {
return MachineState::Idle;
}
let start_pos = cursor.pos;
cursor.advance();
- match cursor.curr.into() {
+ match cursor.curr().into() {
// Start of an arbitrary value:
//
// ```
@@ -70,9 +70,9 @@ impl Machine for ModifierMachine {
Class::ValidStart => {
let len = cursor.input.len();
while cursor.pos < len {
- match cursor.curr.into() {
+ match cursor.curr().into() {
Class::ValidStart | Class::ValidInside => {
- match cursor.next.into() {
+ match cursor.next().into() {
// Only valid characters are allowed, if followed by another valid character
Class::ValidStart | Class::ValidInside => cursor.advance(),
diff --git a/crates/oxide/src/extractor/named_utility_machine.rs b/crates/oxide/src/extractor/named_utility_machine.rs
index d218dbeb7..24dc027b2 100644
--- a/crates/oxide/src/extractor/named_utility_machine.rs
+++ b/crates/oxide/src/extractor/named_utility_machine.rs
@@ -52,8 +52,8 @@ impl Machine for NamedUtilityMachine {
#[inline]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- match cursor.curr.into() {
- Class::AlphaLower => match cursor.next.into() {
+ match cursor.curr().into() {
+ Class::AlphaLower => match cursor.next().into() {
// Valid single character utility in between quotes
//
// E.g.: `
`
@@ -90,7 +90,7 @@ impl Machine for NamedUtilityMachine {
//
// E.g.: `-mx-2.5`
// ^^
- Class::Dash => match cursor.next.into() {
+ Class::Dash => match cursor.next().into() {
Class::AlphaLower => {
self.start_pos = cursor.pos;
cursor.advance();
@@ -118,7 +118,7 @@ impl Machine for NamedUtilityMachine {
let len = cursor.input.len();
while cursor.pos < len {
- match cursor.curr.into() {
+ match cursor.curr().into() {
// Followed by a boundary character, we are at the end of the utility.
//
// E.g.: `'flex'`
@@ -132,14 +132,14 @@ impl Machine for NamedUtilityMachine {
// E.g.: `:div="{ flex: true }"` (JavaScript object syntax)
// ^
Class::AlphaLower | Class::AlphaUpper => {
- if is_valid_after_boundary(&cursor.next) || {
+ if is_valid_after_boundary(&cursor.next()) || {
// Or any of these characters
//
// - `:`, because of JS object keys
// - `/`, because of modifiers
// - `!`, because of important
matches!(
- cursor.next.into(),
+ cursor.next().into(),
Class::Colon | Class::Slash | Class::Exclamation
)
} {
@@ -150,7 +150,7 @@ impl Machine for NamedUtilityMachine {
cursor.advance()
}
- Class::Dash => match cursor.next.into() {
+ Class::Dash => match cursor.next().into() {
// Start of an arbitrary value
//
// E.g.: `bg-[#0088cc]`
@@ -196,7 +196,7 @@ impl Machine for NamedUtilityMachine {
_ => return self.restart(),
},
- Class::Underscore => match cursor.next.into() {
+ Class::Underscore => match cursor.next().into() {
// Valid characters _if_ followed by another valid character. These characters are
// only valid inside of the utility but not at the end of the utility.
//
@@ -225,14 +225,14 @@ impl Machine for NamedUtilityMachine {
// ^
// E.g.: `:div="{ flex: true }"` (JavaScript object syntax)
// ^
- _ if is_valid_after_boundary(&cursor.next) || {
+ _ if is_valid_after_boundary(&cursor.next()) || {
// Or any of these characters
//
// - `:`, because of JS object keys
// - `/`, because of modifiers
// - `!`, because of important
matches!(
- cursor.next.into(),
+ cursor.next().into(),
Class::Colon | Class::Slash | Class::Exclamation
)
} =>
@@ -249,11 +249,11 @@ impl Machine for NamedUtilityMachine {
// E.g.: `px-2.5`
// ^^^
Class::Dot => {
- if !matches!(cursor.prev.into(), Class::Number) {
+ if !matches!(cursor.prev().into(), Class::Number) {
return self.restart();
}
- if !matches!(cursor.next.into(), Class::Number) {
+ if !matches!(cursor.next().into(), Class::Number) {
return self.restart();
}
@@ -278,7 +278,7 @@ impl Machine for NamedUtilityMachine {
//
Class::Number => {
if !matches!(
- cursor.prev.into(),
+ cursor.prev().into(),
Class::Dash
| Class::Underscore
| Class::Dot
@@ -290,7 +290,7 @@ impl Machine for NamedUtilityMachine {
}
if !matches!(
- cursor.next.into(),
+ cursor.next().into(),
Class::Dot
| Class::Number
| Class::AlphaLower
@@ -314,7 +314,7 @@ impl Machine for NamedUtilityMachine {
// ^^
// ```
Class::Percent => {
- if !matches!(cursor.prev.into(), Class::Number) {
+ if !matches!(cursor.prev().into(), Class::Number) {
return self.restart();
}
diff --git a/crates/oxide/src/extractor/named_variant_machine.rs b/crates/oxide/src/extractor/named_variant_machine.rs
index b6de8220b..285fe6ab5 100644
--- a/crates/oxide/src/extractor/named_variant_machine.rs
+++ b/crates/oxide/src/extractor/named_variant_machine.rs
@@ -81,8 +81,8 @@ impl Machine for NamedVariantMachine {
#[inline(always)]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- match cursor.curr.into() {
- Class::AlphaLower | Class::Star => match cursor.next.into() {
+ match cursor.curr().into() {
+ Class::AlphaLower | Class::Star => match cursor.next().into() {
// Valid single character variant, must be followed by a `:`
//
// E.g.: `
`
@@ -134,8 +134,8 @@ impl Machine for NamedVariantMachine {
let len = cursor.input.len();
while cursor.pos < len {
- match cursor.curr.into() {
- Class::Dash => match cursor.next.into() {
+ match cursor.curr().into() {
+ Class::Dash => match cursor.next().into() {
// Start of an arbitrary value
//
// E.g.: `data-[state=pending]:`.
@@ -192,7 +192,7 @@ impl Machine for NamedVariantMachine {
};
}
- Class::Underscore => match cursor.next.into() {
+ Class::Underscore => match cursor.next().into() {
// Valid characters _if_ followed by another valid character. These characters are
// only valid inside of the variant but not at the end of the variant.
//
@@ -240,11 +240,11 @@ impl Machine for NamedVariantMachine {
// E.g.: `2.5xl:flex`
// ^^^
Class::Dot => {
- if !matches!(cursor.prev.into(), Class::Number) {
+ if !matches!(cursor.prev().into(), Class::Number) {
return self.restart();
}
- if !matches!(cursor.next.into(), Class::Number) {
+ if !matches!(cursor.next().into(), Class::Number) {
return self.restart();
}
@@ -263,7 +263,7 @@ impl Machine for NamedVariantMachine {
impl NamedVariantMachine {
#[inline(always)]
fn parse_arbitrary_end(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- match cursor.next.into() {
+ match cursor.next().into() {
Class::Slash => {
cursor.advance();
self.transition::().next(cursor)
@@ -285,7 +285,7 @@ impl Machine for NamedVariantMachine {
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
match self.modifier_machine.next(cursor) {
MachineState::Idle => self.restart(),
- MachineState::Done(_) => match cursor.next.into() {
+ MachineState::Done(_) => match cursor.next().into() {
// Modifier must be followed by a `:`
//
// E.g.: `group-hover/name:`
@@ -308,7 +308,7 @@ impl Machine for NamedVariantMachine {
#[inline(always)]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- match cursor.curr.into() {
+ match cursor.curr().into() {
// The end of a variant must be the `:`
//
// E.g.: `hover:`
diff --git a/crates/oxide/src/extractor/pre_processors/clojure.rs b/crates/oxide/src/extractor/pre_processors/clojure.rs
index ecf02b4ff..3fb4ce601 100644
--- a/crates/oxide/src/extractor/pre_processors/clojure.rs
+++ b/crates/oxide/src/extractor/pre_processors/clojure.rs
@@ -32,14 +32,14 @@ impl PreProcessor for Clojure {
let mut cursor = cursor::Cursor::new(&content);
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Consume strings as-is
b'"' => {
result[cursor.pos] = b' ';
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escaped character, skip ahead to the next character
b'\\' => cursor.advance_twice(),
@@ -57,8 +57,8 @@ impl PreProcessor for Clojure {
// Discard line comments until the end of the line.
// Comments start with `;;`
- b';' if matches!(cursor.next, b';') => {
- while cursor.pos < len && cursor.curr != b'\n' {
+ b';' if matches!(cursor.next(), b';') => {
+ while cursor.pos < len && cursor.curr() != b'\n' {
result[cursor.pos] = b' ';
cursor.advance();
}
@@ -70,7 +70,7 @@ impl PreProcessor for Clojure {
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// A `.` surrounded by digits is a decimal number, so we don't want to replace it.
//
// E.g.:
@@ -78,8 +78,8 @@ impl PreProcessor for Clojure {
// gap-1.5
// ^
// ```
- b'.' if cursor.prev.is_ascii_digit()
- && cursor.next.is_ascii_digit() =>
+ b'.' if cursor.prev().is_ascii_digit()
+ && cursor.next().is_ascii_digit() =>
{
// Keep the `.` as-is
}
@@ -95,7 +95,7 @@ impl PreProcessor for Clojure {
result[cursor.pos] = b' ';
}
// End of keyword.
- _ if !is_keyword_character(cursor.curr) => {
+ _ if !is_keyword_character(cursor.curr()) => {
result[cursor.pos] = b' ';
break;
}
@@ -110,11 +110,11 @@ impl PreProcessor for Clojure {
// Handle quote with a list, e.g.: `'(…)`
// and with a vector, e.g.: `'[…]`
- b'\'' if matches!(cursor.next, b'[' | b'(') => {
+ b'\'' if matches!(cursor.next(), b'[' | b'(') => {
result[cursor.pos] = b' ';
cursor.advance();
result[cursor.pos] = b' ';
- let end = match cursor.curr {
+ let end = match cursor.curr() {
b'[' => b']',
b'(' => b')',
_ => unreachable!(),
@@ -122,7 +122,7 @@ impl PreProcessor for Clojure {
// Consume until the closing `]`
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
x if x == end => {
result[cursor.pos] = b' ';
break;
@@ -134,7 +134,7 @@ impl PreProcessor for Clojure {
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escaped character, skip ahead to the next character
b'\\' => cursor.advance_twice(),
@@ -157,14 +157,14 @@ impl PreProcessor for Clojure {
}
// Handle quote with a keyword, e.g.: `'bg-white`
- b'\'' if !cursor.next.is_ascii_whitespace() => {
+ b'\'' if !cursor.next().is_ascii_whitespace() => {
result[cursor.pos] = b' ';
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// End of keyword.
- _ if !is_keyword_character(cursor.curr) => {
+ _ if !is_keyword_character(cursor.curr()) => {
result[cursor.pos] = b' ';
break;
}
diff --git a/crates/oxide/src/extractor/pre_processors/elixir.rs b/crates/oxide/src/extractor/pre_processors/elixir.rs
index 87b89a2a9..7737a6b2d 100644
--- a/crates/oxide/src/extractor/pre_processors/elixir.rs
+++ b/crates/oxide/src/extractor/pre_processors/elixir.rs
@@ -13,13 +13,13 @@ impl PreProcessor for Elixir {
while cursor.pos < content.len() {
// Look for a sigil marker
- if cursor.curr != b'~' {
+ if cursor.curr() != b'~' {
cursor.advance();
continue;
}
// Scan charlists, strings, and wordlists
- if !matches!(cursor.next, b'c' | b'C' | b's' | b'S' | b'w' | b'W') {
+ if !matches!(cursor.next(), b'c' | b'C' | b's' | b'S' | b'w' | b'W') {
cursor.advance();
continue;
}
@@ -27,7 +27,7 @@ impl PreProcessor for Elixir {
cursor.advance_twice();
// Match the opening for a sigil
- if !matches!(cursor.curr, b'(' | b'[' | b'{') {
+ if !matches!(cursor.curr(), b'(' | b'[' | b'{') {
continue;
}
@@ -35,19 +35,19 @@ impl PreProcessor for Elixir {
result[cursor.pos] = b' ';
// Scan until we find a balanced closing one and replace it too
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
while cursor.pos < content.len() {
cursor.advance();
- match cursor.curr {
+ match cursor.curr() {
// Escaped character, skip ahead to the next character
b'\\' => cursor.advance_twice(),
b'(' | b'[' | b'{' => {
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
b')' | b']' | b'}' if !bracket_stack.is_empty() => {
- bracket_stack.pop(cursor.curr);
+ bracket_stack.pop(cursor.curr());
if bracket_stack.is_empty() {
// Replace the closing bracket with a space
diff --git a/crates/oxide/src/extractor/pre_processors/haml.rs b/crates/oxide/src/extractor/pre_processors/haml.rs
index a131618ab..99b7bd052 100644
--- a/crates/oxide/src/extractor/pre_processors/haml.rs
+++ b/crates/oxide/src/extractor/pre_processors/haml.rs
@@ -101,7 +101,7 @@ impl PreProcessor for Haml {
let mut last_newline_position = 0;
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escape the next character
b'\\' => {
cursor.advance_twice();
@@ -119,7 +119,7 @@ impl PreProcessor for Haml {
b'-' if cursor.input[last_newline_position..cursor.pos]
.iter()
.all(u8::is_ascii_whitespace)
- && matches!(cursor.next, b'#') =>
+ && matches!(cursor.next(), b'#') =>
{
// Just consume the comment
let updated_last_newline_position =
@@ -159,7 +159,7 @@ impl PreProcessor for Haml {
// Override the last known newline position
last_newline_position = end;
- let replaced = pre_process_input(ruby_code, "rb");
+ let replaced = pre_process_input(ruby_code.to_vec(), "rb");
result.replace_range(start..end, replaced);
}
@@ -190,7 +190,7 @@ impl PreProcessor for Haml {
// digit.
// E.g.: `bg-red-500.2xl:flex`
// ^^^
- if cursor.prev.is_ascii_digit() && cursor.next.is_ascii_digit() {
+ if cursor.prev().is_ascii_digit() && cursor.next().is_ascii_digit() {
let mut next_cursor = cursor.clone();
next_cursor.advance();
@@ -213,11 +213,11 @@ impl PreProcessor for Haml {
if bracket_stack.is_empty() {
result[cursor.pos] = b' ';
}
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
b')' | b']' | b'}' if !bracket_stack.is_empty() => {
- bracket_stack.pop(cursor.curr);
+ bracket_stack.pop(cursor.curr());
// Replace closing bracket with a space
if bracket_stack.is_empty() {
@@ -257,7 +257,7 @@ impl Haml {
// :url => { :action => "add", :id => product.id },
// :update => { :success => "cart", :failure => "error" }
// ```
- let evaluation_type = cursor.curr;
+ let evaluation_type = cursor.curr();
let block_indentation_level = cursor
.pos
@@ -267,17 +267,17 @@ impl Haml {
let mut last_newline_position = last_known_newline_position;
// Consume until the end of the line first
- while cursor.pos < len && cursor.curr != b'\n' {
+ while cursor.pos < len && cursor.curr() != b'\n' {
cursor.advance();
}
// Block is already done, aka just a line
- if evaluation_type == b'=' && cursor.prev != b',' {
+ if evaluation_type == b'=' && cursor.prev() != b',' {
return cursor.pos;
}
'outer: while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escape the next character
b'\\' => {
cursor.advance_twice();
@@ -289,7 +289,7 @@ impl Haml {
last_newline_position = cursor.pos;
// We are done with this block
- if evaluation_type == b'=' && cursor.prev != b',' {
+ if evaluation_type == b'=' && cursor.prev() != b',' {
break;
}
@@ -300,11 +300,11 @@ impl Haml {
// Skip whitespace and compute the indentation level
x if x.is_ascii_whitespace() => {
// Find first non-whitespace character
- while cursor.pos < len && cursor.curr.is_ascii_whitespace() {
- if cursor.curr == b'\n' {
+ while cursor.pos < len && cursor.curr().is_ascii_whitespace() {
+ if cursor.curr() == b'\n' {
last_newline_position = cursor.pos;
- if evaluation_type == b'=' && cursor.prev != b',' {
+ if evaluation_type == b'=' && cursor.prev() != b',' {
// We are done with this block
break 'outer;
}
diff --git a/crates/oxide/src/extractor/pre_processors/json.rs b/crates/oxide/src/extractor/pre_processors/json.rs
index 809eb501e..cd457050c 100644
--- a/crates/oxide/src/extractor/pre_processors/json.rs
+++ b/crates/oxide/src/extractor/pre_processors/json.rs
@@ -11,13 +11,13 @@ impl PreProcessor for Json {
let mut cursor = cursor::Cursor::new(content);
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Consume strings as-is
b'"' => {
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escaped character, skip ahead to the next character
b'\\' => cursor.advance_twice(),
diff --git a/crates/oxide/src/extractor/pre_processors/markdown.rs b/crates/oxide/src/extractor/pre_processors/markdown.rs
index 63dc37d1e..d2acc6a58 100644
--- a/crates/oxide/src/extractor/pre_processors/markdown.rs
+++ b/crates/oxide/src/extractor/pre_processors/markdown.rs
@@ -13,7 +13,7 @@ impl PreProcessor for Markdown {
let mut in_directive = false;
while cursor.pos < len {
- match (in_directive, cursor.curr) {
+ match (in_directive, cursor.curr()) {
(false, b'{') => {
result[cursor.pos] = b' ';
in_directive = true;
diff --git a/crates/oxide/src/extractor/pre_processors/pug.rs b/crates/oxide/src/extractor/pre_processors/pug.rs
index 7b44fcf5b..70dfe5683 100644
--- a/crates/oxide/src/extractor/pre_processors/pug.rs
+++ b/crates/oxide/src/extractor/pre_processors/pug.rs
@@ -15,7 +15,7 @@ impl PreProcessor for Pug {
let mut bracket_stack = BracketStack::default();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Only replace `.` with a space if it's not surrounded by numbers. E.g.:
//
// ```diff
@@ -43,7 +43,7 @@ impl PreProcessor for Pug {
// digit.
// E.g.: `bg-red-500.2xl:flex`
// ^^^
- if cursor.prev.is_ascii_digit() && cursor.next.is_ascii_digit() {
+ if cursor.prev().is_ascii_digit() && cursor.next().is_ascii_digit() {
let mut next_cursor = cursor.clone();
next_cursor.advance();
@@ -68,17 +68,17 @@ impl PreProcessor for Pug {
//
// However, we also need to make sure that we keep the parens that are part of the
// utility class. E.g.: `bg-(--my-color)`.
- b'(' if bracket_stack.is_empty() && !matches!(cursor.prev, b'-' | b'/') => {
+ b'(' if bracket_stack.is_empty() && !matches!(cursor.prev(), b'-' | b'/') => {
result[cursor.pos] = b' ';
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
b'(' | b'[' | b'{' => {
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
b')' | b']' | b'}' if !bracket_stack.is_empty() => {
- bracket_stack.pop(cursor.curr);
+ bracket_stack.pop(cursor.curr());
}
// Consume everything else
diff --git a/crates/oxide/src/extractor/pre_processors/ruby.rs b/crates/oxide/src/extractor/pre_processors/ruby.rs
index 89ac1ee7b..1f2221414 100644
--- a/crates/oxide/src/extractor/pre_processors/ruby.rs
+++ b/crates/oxide/src/extractor/pre_processors/ruby.rs
@@ -68,7 +68,8 @@ impl PreProcessor for Ruby {
}
let body = &content_as_str[body_start..body_end];
- let replaced = pre_process_input(body.as_bytes(), &lang.to_ascii_lowercase());
+ let replaced =
+ pre_process_input(body.as_bytes().to_vec(), &lang.to_ascii_lowercase());
result.replace_range(body_start..body_end, replaced);
break;
@@ -77,12 +78,12 @@ impl PreProcessor for Ruby {
// Ruby extraction
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
b'"' => {
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escaped character, skip ahead to the next character
b'\\' => cursor.advance_twice(),
@@ -102,7 +103,7 @@ impl PreProcessor for Ruby {
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escaped character, skip ahead to the next character
b'\\' => cursor.advance_twice(),
@@ -123,12 +124,12 @@ impl PreProcessor for Ruby {
// Except for strict locals, these are defined in a `<%# locals: … %>`. Checking if
// the comment is preceded by a `%` should be enough without having to perform more
// parsing logic. Worst case we _do_ scan a few comments.
- b'#' if !matches!(cursor.prev, b'%') => {
+ b'#' if !matches!(cursor.prev(), b'%') => {
result[cursor.pos] = b' ';
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// End of the comment
b'\n' => break,
@@ -148,7 +149,7 @@ impl PreProcessor for Ruby {
}
// Looking for `%w`, `%W`, or `%p`
- if cursor.curr != b'%' || !matches!(cursor.next, b'w' | b'W' | b'p') {
+ if cursor.curr() != b'%' || !matches!(cursor.next(), b'w' | b'W' | b'p') {
cursor.advance();
continue;
}
@@ -156,7 +157,7 @@ impl PreProcessor for Ruby {
cursor.advance_twice();
// Boundary character
- let boundary = match cursor.curr {
+ let boundary = match cursor.curr() {
b'[' => b']',
b'(' => b')',
b'{' => b'}',
@@ -177,11 +178,11 @@ impl PreProcessor for Ruby {
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Skip escaped characters
b'\\' => {
// Use backslash to embed spaces in the strings.
- if cursor.next == b' ' {
+ if cursor.next() == b' ' {
result[cursor.pos] = b' ';
}
@@ -190,19 +191,19 @@ impl PreProcessor for Ruby {
// Start of a nested bracket
b'[' | b'(' | b'{' => {
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
// End of a nested bracket
b']' | b')' | b'}' if !bracket_stack.is_empty() => {
- if !bracket_stack.pop(cursor.curr) {
+ if !bracket_stack.pop(cursor.curr()) {
// Unbalanced
cursor.advance();
}
}
// End of the pattern, replace the boundary character with a space
- _ if cursor.curr == boundary => {
+ _ if cursor.curr() == boundary => {
if boundary != b'\n' {
result[cursor.pos] = b' ';
}
diff --git a/crates/oxide/src/extractor/pre_processors/rust.rs b/crates/oxide/src/extractor/pre_processors/rust.rs
index 6404fffb5..34c9e0c91 100644
--- a/crates/oxide/src/extractor/pre_processors/rust.rs
+++ b/crates/oxide/src/extractor/pre_processors/rust.rs
@@ -33,7 +33,7 @@ impl Rust {
let mut bracket_stack = bracket_stack::BracketStack::default();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escaped character, skip ahead to the next character
b'\\' => {
cursor.advance_twice();
@@ -46,7 +46,7 @@ impl Rust {
cursor.advance();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Escaped character, skip ahead to the next character
b'\\' => cursor.advance_twice(),
@@ -89,7 +89,7 @@ impl Rust {
// digit.
// E.g.: `bg-red-500.2xl:flex`
// ^^^
- if cursor.prev.is_ascii_digit() && cursor.next.is_ascii_digit() {
+ if cursor.prev().is_ascii_digit() && cursor.next().is_ascii_digit() {
let mut next_cursor = cursor.clone();
next_cursor.advance();
@@ -103,11 +103,11 @@ impl Rust {
}
b'[' => {
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
b']' if !bracket_stack.is_empty() => {
- bracket_stack.pop(cursor.curr);
+ bracket_stack.pop(cursor.curr());
}
// Consume everything else
diff --git a/crates/oxide/src/extractor/pre_processors/slim.rs b/crates/oxide/src/extractor/pre_processors/slim.rs
index 6d41e5a09..eacfb55ee 100644
--- a/crates/oxide/src/extractor/pre_processors/slim.rs
+++ b/crates/oxide/src/extractor/pre_processors/slim.rs
@@ -15,7 +15,7 @@ impl PreProcessor for Slim {
let mut bracket_stack = BracketStack::default();
while cursor.pos < len {
- match cursor.curr {
+ match cursor.curr() {
// Only replace `.` with a space if it's not surrounded by numbers. E.g.:
//
// ```diff
@@ -43,7 +43,7 @@ impl PreProcessor for Slim {
// digit.
// E.g.: `bg-red-500.2xl:flex`
// ^^^
- if cursor.prev.is_ascii_digit() && cursor.next.is_ascii_digit() {
+ if cursor.prev().is_ascii_digit() && cursor.next().is_ascii_digit() {
let mut next_cursor = cursor.clone();
next_cursor.advance();
@@ -65,7 +65,7 @@ impl PreProcessor for Slim {
// class=%w[bg-blue-500 w-10 h-10]
// ]
// ```
- b'%' if matches!(cursor.next, b'w' | b'W')
+ b'%' if matches!(cursor.next(), b'w' | b'W')
&& matches!(cursor.input.get(cursor.pos + 2), Some(b'[' | b'(' | b'{')) =>
{
result[cursor.pos] = b' '; // Replace `%`
@@ -73,7 +73,7 @@ impl PreProcessor for Slim {
result[cursor.pos] = b' '; // Replace `w`
cursor.advance();
result[cursor.pos] = b' '; // Replace `[` or `(` or `{`
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
cursor.advance(); // Move past the bracket
continue;
}
@@ -96,10 +96,10 @@ impl PreProcessor for Slim {
// Instead of listing all boundary characters, let's list the characters we know
// will be invalid instead.
b'[' if bracket_stack.is_empty()
- && matches!(cursor.prev, b'a'..=b'z' | b'A'..=b'Z' | b'0'..=b'9') =>
+ && matches!(cursor.prev(), b'a'..=b'z' | b'A'..=b'Z' | b'0'..=b'9') =>
{
result[cursor.pos] = b' ';
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
// In Slim the class name shorthand can be followed by a parenthesis. E.g.:
@@ -114,17 +114,17 @@ impl PreProcessor for Slim {
//
// However, we also need to make sure that we keep the parens that are part of the
// utility class. E.g.: `bg-(--my-color)`.
- b'(' if bracket_stack.is_empty() && !matches!(cursor.prev, b'-' | b'/') => {
+ b'(' if bracket_stack.is_empty() && !matches!(cursor.prev(), b'-' | b'/') => {
result[cursor.pos] = b' ';
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
b'(' | b'[' | b'{' => {
- bracket_stack.push(cursor.curr);
+ bracket_stack.push(cursor.curr());
}
b')' | b']' | b'}' if !bracket_stack.is_empty() => {
- bracket_stack.pop(cursor.curr);
+ bracket_stack.pop(cursor.curr());
}
// Consume everything else
diff --git a/crates/oxide/src/extractor/pre_processors/vue.rs b/crates/oxide/src/extractor/pre_processors/vue.rs
index 119e2a3d2..1b9bf1668 100644
--- a/crates/oxide/src/extractor/pre_processors/vue.rs
+++ b/crates/oxide/src/extractor/pre_processors/vue.rs
@@ -14,13 +14,12 @@ pub struct Vue;
impl PreProcessor for Vue {
fn process(&self, content: &[u8]) -> Vec {
let mut result = content.to_vec();
-
let content_as_str = std::str::from_utf8(content).unwrap();
for (_, [lang, body]) in TEMPLATE_REGEX
.captures_iter(content_as_str)
.map(|c| c.extract())
{
- let replaced = pre_process_input(body.as_bytes(), lang);
+ let replaced = pre_process_input(body.as_bytes().to_vec(), lang);
result = result.replace(body, replaced);
}
diff --git a/crates/oxide/src/extractor/string_machine.rs b/crates/oxide/src/extractor/string_machine.rs
index 9148a1fbf..4fad49faa 100644
--- a/crates/oxide/src/extractor/string_machine.rs
+++ b/crates/oxide/src/extractor/string_machine.rs
@@ -30,20 +30,20 @@ impl Machine for StringMachine {
#[inline]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- if Class::Quote != cursor.curr.into() {
+ if Class::Quote != cursor.curr().into() {
return MachineState::Idle;
}
// Start of a string
let len = cursor.input.len();
let start_pos = cursor.pos;
- let end_char = cursor.curr;
+ let end_char = cursor.curr();
cursor.advance();
while cursor.pos < len {
- match cursor.curr.into() {
- Class::Escape => match cursor.next.into() {
+ match cursor.curr().into() {
+ Class::Escape => match cursor.next().into() {
// An escaped whitespace character is not allowed
Class::Whitespace => return MachineState::Idle,
@@ -52,7 +52,7 @@ impl Machine for StringMachine {
},
// End of the string
- Class::Quote if cursor.curr == end_char => return self.done(start_pos, cursor),
+ 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,
diff --git a/crates/oxide/src/extractor/utility_machine.rs b/crates/oxide/src/extractor/utility_machine.rs
index b9b1038cd..c116ec4e4 100644
--- a/crates/oxide/src/extractor/utility_machine.rs
+++ b/crates/oxide/src/extractor/utility_machine.rs
@@ -27,12 +27,12 @@ impl Machine for UtilityMachine {
#[inline]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- match cursor.curr.into() {
+ match cursor.curr().into() {
// LEGACY: Important marker
Class::Exclamation => {
self.legacy_important = true;
- match cursor.next.into() {
+ match cursor.next().into() {
// Start of an arbitrary property
//
// E.g.: `![color:red]`
@@ -78,7 +78,7 @@ impl UtilityMachine {
fn parse_arbitrary_property(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
match self.arbitrary_property_machine.next(cursor) {
MachineState::Idle => self.restart(),
- MachineState::Done(_) => match cursor.next.into() {
+ MachineState::Done(_) => match cursor.next().into() {
// End of arbitrary property, but there is a potential modifier.
//
// E.g.: `[color:#0088cc]/`
@@ -109,7 +109,7 @@ impl UtilityMachine {
fn parse_named_utility(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
match self.named_utility_machine.next(cursor) {
MachineState::Idle => self.restart(),
- MachineState::Done(_) => match cursor.next.into() {
+ MachineState::Done(_) => match cursor.next().into() {
// End of a named utility, but there is a potential modifier.
//
// E.g.: `bg-red-500/`
@@ -140,7 +140,7 @@ impl UtilityMachine {
fn parse_modifier(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
match self.modifier_machine.next(cursor) {
MachineState::Idle => self.restart(),
- MachineState::Done(_) => match cursor.next.into() {
+ MachineState::Done(_) => match cursor.next().into() {
// A modifier followed by a modifier is invalid
Class::Slash => self.restart(),
diff --git a/crates/oxide/src/extractor/variant_machine.rs b/crates/oxide/src/extractor/variant_machine.rs
index 23aa61798..9ec2adc09 100644
--- a/crates/oxide/src/extractor/variant_machine.rs
+++ b/crates/oxide/src/extractor/variant_machine.rs
@@ -16,7 +16,7 @@ impl Machine for VariantMachine {
#[inline]
fn next(&mut self, cursor: &mut cursor::Cursor<'_>) -> MachineState {
- match cursor.curr.into() {
+ match cursor.curr().into() {
// Start of an arbitrary variant
//
// E.g.: `[&:hover]:`
@@ -48,7 +48,7 @@ impl VariantMachine {
start_pos: usize,
cursor: &mut cursor::Cursor<'_>,
) -> MachineState {
- match cursor.next.into() {
+ match cursor.next().into() {
// End of an arbitrary value, must be followed by a `:`
//
// E.g.: `[&:hover]:`
diff --git a/crates/oxide/src/fast_skip.rs b/crates/oxide/src/fast_skip.rs
index 488e61bd6..54930548c 100644
--- a/crates/oxide/src/fast_skip.rs
+++ b/crates/oxide/src/fast_skip.rs
@@ -10,7 +10,7 @@ pub fn fast_skip(cursor: &Cursor) -> Option {
return None;
}
- if !cursor.curr.is_ascii_whitespace() {
+ if !cursor.curr().is_ascii_whitespace() {
return None;
}
diff --git a/crates/oxide/src/scanner/detect_sources.rs b/crates/oxide/src/scanner/detect_sources.rs
index 9dc340fba..c519cd00d 100644
--- a/crates/oxide/src/scanner/detect_sources.rs
+++ b/crates/oxide/src/scanner/detect_sources.rs
@@ -30,11 +30,9 @@ fn sort_by_dir_and_name(a: &DirEntry, z: &DirEntry) -> Ordering {
pub fn resolve_globs(
base: PathBuf,
- dirs: &[PathBuf],
+ dirs: &FxHashSet,
extensions: &FxHashSet,
) -> Vec {
- let allowed_paths: FxHashSet = FxHashSet::from_iter(dirs.iter().cloned());
-
// A list of known extensions + a list of extensions we found in the project.
let mut found_extensions: FxHashSet =
FxHashSet::from_iter(KNOWN_EXTENSIONS.iter().map(|x| x.to_string()));
@@ -72,7 +70,7 @@ pub fn resolve_globs(
continue;
}
- if !allowed_paths.contains(path) {
+ if !dirs.contains(path) {
let mut path = path;
while let Some(parent) = path.parent() {
if parent == base {
@@ -113,7 +111,7 @@ pub fn resolve_globs(
continue;
}
- if !allowed_paths.contains(path) {
+ if !dirs.contains(path) {
continue;
}
diff --git a/crates/oxide/src/scanner/init_tracing.rs b/crates/oxide/src/scanner/init_tracing.rs
new file mode 100644
index 000000000..2a570ff20
--- /dev/null
+++ b/crates/oxide/src/scanner/init_tracing.rs
@@ -0,0 +1,70 @@
+use std::fs::OpenOptions;
+use std::io::{self, Write};
+use std::path::Path;
+use std::sync::{self, Arc, Mutex};
+use tracing_subscriber::fmt::writer::BoxMakeWriter;
+
+pub static SHOULD_TRACE: sync::LazyLock = sync::LazyLock::new(
+ || matches!(std::env::var("DEBUG"), Ok(value) if value.eq("*") || (value.contains("tailwindcss:oxide") && !value.contains("-tailwindcss:oxide"))),
+);
+
+fn dim(input: &str) -> String {
+ format!("\u{001b}[2m{input}\u{001b}[22m")
+}
+
+fn blue(input: &str) -> String {
+ format!("\u{001b}[34m{input}\u{001b}[39m")
+}
+
+fn highlight(input: &str) -> String {
+ format!("{}{}{}", dim(&blue("`")), blue(input), dim(&blue("`")))
+}
+
+struct MutexWriter(Arc>);
+
+impl Write for MutexWriter {
+ fn write(&mut self, buf: &[u8]) -> io::Result {
+ self.0.lock().unwrap().write(buf)
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ self.0.lock().unwrap().flush()
+ }
+}
+
+pub fn init_tracing() {
+ if !*SHOULD_TRACE {
+ return;
+ }
+
+ let file_path = format!("tailwindcss-{}.log", std::process::id());
+ let file = OpenOptions::new()
+ .create(true)
+ .append(true)
+ .open(&file_path)
+ .unwrap_or_else(|_| panic!("Failed to open {file_path}"));
+
+ let file_path = Path::new(&file_path);
+ let absolute_file_path = dunce::canonicalize(file_path)
+ .unwrap_or_else(|_| panic!("Failed to canonicalize {file_path:?}"));
+ eprintln!(
+ "{} Writing debug info to: {}\n",
+ dim("[DEBUG]"),
+ highlight(absolute_file_path.as_path().to_str().unwrap())
+ );
+
+ let file = Arc::new(Mutex::new(file));
+
+ let writer: BoxMakeWriter = BoxMakeWriter::new({
+ let file = file.clone();
+ move || Box::new(MutexWriter(file.clone())) as Box
+ });
+
+ _ = tracing_subscriber::fmt()
+ .with_max_level(tracing::Level::INFO)
+ .with_span_events(tracing_subscriber::fmt::format::FmtSpan::ACTIVE)
+ .with_writer(writer)
+ .with_ansi(false)
+ .compact()
+ .try_init();
+}
diff --git a/crates/oxide/src/scanner/mod.rs b/crates/oxide/src/scanner/mod.rs
index ec6aea642..6d6cabc2a 100644
--- a/crates/oxide/src/scanner/mod.rs
+++ b/crates/oxide/src/scanner/mod.rs
@@ -1,5 +1,6 @@
pub mod auto_source_detection;
pub mod detect_sources;
+pub mod init_tracing;
pub mod sources;
use crate::extractor::{Extracted, Extractor};
@@ -14,15 +15,13 @@ use bstr::ByteSlice;
use fast_glob::glob_match;
use fxhash::{FxHashMap, FxHashSet};
use ignore::{gitignore::GitignoreBuilder, WalkBuilder};
+use init_tracing::{init_tracing, SHOULD_TRACE};
use rayon::prelude::*;
use std::collections::{BTreeMap, BTreeSet};
-use std::fs::OpenOptions;
-use std::io::{self, Write};
use std::path::{Path, PathBuf};
-use std::sync::{self, Arc, Mutex};
+use std::sync::{Arc, Mutex};
use std::time::SystemTime;
use tracing::event;
-use tracing_subscriber::fmt::writer::BoxMakeWriter;
// @source "some/folder"; // This is auto source detection
// @source "some/folder/**/*"; // This is auto source detection
@@ -34,70 +33,6 @@ use tracing_subscriber::fmt::writer::BoxMakeWriter;
//
// @source "do-include-me.bin"; // `.bin` is typically ignored, but now it's explicit so should be included
// @source "git-ignored.html"; // A git ignored file that is listed explicitly, should be scanned
-static SHOULD_TRACE: sync::LazyLock = sync::LazyLock::new(
- || matches!(std::env::var("DEBUG"), Ok(value) if value.eq("*") || (value.contains("tailwindcss:oxide") && !value.contains("-tailwindcss:oxide"))),
-);
-
-fn dim(input: &str) -> String {
- format!("\u{001b}[2m{input}\u{001b}[22m")
-}
-
-fn blue(input: &str) -> String {
- format!("\u{001b}[34m{input}\u{001b}[39m")
-}
-
-fn highlight(input: &str) -> String {
- format!("{}{}{}", dim(&blue("`")), blue(input), dim(&blue("`")))
-}
-
-fn init_tracing() {
- if !*SHOULD_TRACE {
- return;
- }
-
- let file_path = format!("tailwindcss-{}.log", std::process::id());
- let file = OpenOptions::new()
- .create(true)
- .append(true)
- .open(&file_path)
- .unwrap_or_else(|_| panic!("Failed to open {file_path}"));
-
- let file_path = Path::new(&file_path);
- let absolute_file_path = dunce::canonicalize(file_path)
- .unwrap_or_else(|_| panic!("Failed to canonicalize {file_path:?}"));
- eprintln!(
- "{} Writing debug info to: {}\n",
- dim("[DEBUG]"),
- highlight(absolute_file_path.as_path().to_str().unwrap())
- );
-
- let file = Arc::new(Mutex::new(file));
-
- let writer: BoxMakeWriter = BoxMakeWriter::new({
- let file = file.clone();
- move || Box::new(MutexWriter(file.clone())) as Box
- });
-
- _ = tracing_subscriber::fmt()
- .with_max_level(tracing::Level::INFO)
- .with_span_events(tracing_subscriber::fmt::format::FmtSpan::ACTIVE)
- .with_writer(writer)
- .with_ansi(false)
- .compact()
- .try_init();
-}
-
-struct MutexWriter(Arc>);
-
-impl Write for MutexWriter {
- fn write(&mut self, buf: &[u8]) -> io::Result {
- self.0.lock().unwrap().write(buf)
- }
-
- fn flush(&mut self) -> io::Result<()> {
- self.0.lock().unwrap().flush()
- }
-}
#[derive(Debug, Clone)]
pub enum ChangedContent {
@@ -129,26 +64,32 @@ pub struct Scanner {
/// The walker to detect all files that we have to scan
walker: Option,
- /// All changed content that we have to parse
- changed_content: Vec,
-
/// All found extensions
extensions: FxHashSet,
- /// All CSS files we want to scan for CSS variable usage
- css_files: Vec,
-
/// All files that we have to scan
- files: Vec,
+ files: FxHashSet,
/// All directories, sub-directories, etc… we saw during source detection
- dirs: Vec,
+ dirs: FxHashSet,
/// All generated globs, used for setting up watchers
globs: Option>,
/// Track unique set of candidates
candidates: FxHashSet,
+
+ /// Track mtimes for files so re-scans can skip unchanged files.
+ /// Only populated after the first scan completes (to avoid unnecessary
+ /// metadata calls on initial build).
+ mtimes: FxHashMap,
+
+ /// Whether we've completed at least one full scan. When false, we skip
+ /// mtime tracking entirely so the initial build stays fast.
+ has_scanned_once: bool,
+
+ /// Whether sources have been scanned since the last `scan()` call
+ sources_scanned: bool,
}
impl Scanner {
@@ -163,7 +104,6 @@ impl Scanner {
}
let sources = Sources::new(public_source_entries_to_private_source_entries(sources));
-
if *SHOULD_TRACE {
event!(tracing::Level::INFO, "Optimized sources:");
for source in sources.iter() {
@@ -171,29 +111,26 @@ impl Scanner {
}
}
+ let walker = create_walker(&sources);
+
Self {
- sources: sources.clone(),
- walker: create_walker(sources),
+ sources,
+ walker,
..Default::default()
}
}
pub fn scan(&mut self) -> Vec {
- self.scan_sources();
+ self.sources_scanned = false;
- // TODO: performance improvement, bail early if we don't have any changed content
- // if self.changed_content.is_empty() {
- // return vec![];
- // }
+ let (scanned_blobs, css_files) = self.discover_sources();
- let _new_candidates = self.extract_candidates();
+ self.extract_candidates(scanned_blobs, css_files);
- // Make sure we have a sorted list of candidates
- let mut candidates = self.candidates.iter().cloned().collect::>();
- candidates.par_sort_unstable();
-
- // Return all candidates instead of only the new ones
- candidates
+ // Return all candidates sorted
+ let mut result = self.candidates.iter().cloned().collect::>();
+ result.par_sort_unstable();
+ result
}
#[tracing::instrument(skip_all)]
@@ -208,7 +145,7 @@ impl Scanner {
// Raw content can be parsed directly, no need to verify if the file exists and is allowed
// to be scanned.
- self.changed_content.extend(changed_contents);
+ let mut content_to_scan: Vec = changed_contents;
// Fully resolve all files
let changed_files = changed_files
@@ -232,7 +169,7 @@ impl Scanner {
});
// All known files are allowed to be scanned
- self.changed_content.extend(known_files);
+ content_to_scan.extend(known_files);
// Figure out if the new unknown files are allowed to be scanned
if !new_unknown_files.is_empty() {
@@ -252,8 +189,8 @@ impl Scanner {
// When the file is found on disk it means that all the rules pass. We can
// extract the current file and remove it from the list of passed in files.
if file == path {
- self.files.push(path.to_path_buf()); // Track for future use
- self.changed_content.push(changed_file.clone()); // Track for parsing
+ self.files.insert(path.to_path_buf()); // Track for future use
+ content_to_scan.push(changed_file.clone()); // Track for parsing
drop_file_indexes.push(idx);
}
}
@@ -274,18 +211,17 @@ impl Scanner {
}
}
- self.extract_candidates()
+ // Read all content into blobs for extraction
+ let blobs = read_all_files(content_to_scan);
+ self.extract_candidates(blobs, vec![])
}
#[tracing::instrument(skip_all)]
- fn extract_candidates(&mut self) -> Vec {
- let changed_content = self.changed_content.drain(..).collect::>();
-
- // Extract all candidates from the changed content
- let mut new_candidates = parse_all_blobs(read_all_files(changed_content));
+ fn extract_candidates(&mut self, blobs: Vec>, css_files: Vec) -> Vec {
+ // Extract all candidates from the pre-read blobs
+ let mut new_candidates = parse_all_blobs(blobs);
// Extract all CSS variables from the CSS files
- let css_files = self.css_files.drain(..).collect::>();
if !css_files.is_empty() {
let css_variables = extract_css_variables(read_all_files(
css_files
@@ -297,63 +233,23 @@ impl Scanner {
new_candidates.extend(css_variables);
}
- // Only compute the new candidates and ignore the ones we already have. This is for
- // subsequent calls to prevent serializing the entire set of candidates every time.
- let mut new_candidates = new_candidates
- .into_par_iter()
- .filter(|candidate| !self.candidates.contains(candidate))
- .collect::>();
-
- new_candidates.par_sort_unstable();
+ // Only keep candidates we haven't seen before
+ for existing in self.candidates.iter() {
+ new_candidates.remove(existing);
+ }
// Track new candidates for subsequent calls
- self.candidates.par_extend(new_candidates.clone());
+ self.candidates.extend(new_candidates.iter().cloned());
- new_candidates
- }
+ let mut result: Vec = new_candidates.into_iter().collect();
+ result.par_sort_unstable();
- #[tracing::instrument(skip_all)]
- fn scan_sources(&mut self) {
- let Some(walker) = &mut self.walker else {
- return;
- };
-
- for entry in walker.build().filter_map(Result::ok) {
- let path = entry.into_path();
- let Ok(metadata) = path.metadata() else {
- continue;
- };
- if metadata.is_dir() {
- self.dirs.push(path);
- } else if metadata.is_file() {
- let extension = path
- .extension()
- .and_then(|x| x.to_str())
- .unwrap_or_default(); // In case the file has no extension
-
- match extension {
- // Special handing for CSS files, we don't want to extract candidates from
- // these files, but we do want to extract used CSS variables.
- "css" => {
- self.css_files.push(path.clone());
- }
- _ => {
- self.changed_content.push(ChangedContent::File(
- path.to_path_buf(),
- extension.to_owned(),
- ));
- }
- }
-
- self.extensions.insert(extension.to_owned());
- self.files.push(path);
- }
- }
+ result
}
#[tracing::instrument(skip_all)]
pub fn get_files(&mut self) -> Vec {
- self.scan_sources();
+ let _ = self.discover_sources();
self.files
.par_iter()
@@ -367,7 +263,7 @@ impl Scanner {
return globs.clone();
}
- self.scan_sources();
+ let _ = self.discover_sources();
let mut globs = vec![];
for source in self.sources.iter() {
@@ -456,6 +352,99 @@ impl Scanner {
})
.collect()
}
+
+ #[tracing::instrument(skip_all)]
+ fn discover_sources(&mut self) -> (Vec>, Vec) {
+ if self.sources_scanned {
+ return (vec![], vec![]);
+ }
+ self.sources_scanned = true;
+
+ let Some(walker) = &mut self.walker else {
+ return (vec![], vec![]);
+ };
+
+ // Use synchronous walk for the initial build (lower overhead) and parallel
+ // walk for subsequent calls (watch mode) where the overhead is amortised.
+ let all_entries = if self.has_scanned_once {
+ walk_parallel(walker)
+ } else {
+ walk_synchronous(walker)
+ };
+
+ let mut css_files: Vec = vec![];
+ let mut content_paths: Vec<(PathBuf, String)> = Vec::new();
+ let mut seen_files: FxHashSet = FxHashSet::default();
+
+ for (path, is_dir, extension) in all_entries {
+ if is_dir {
+ self.dirs.insert(path);
+ } else {
+ // Deduplicate: parallel walk can visit the same file from multiple threads
+ if !seen_files.insert(path.clone()) {
+ continue;
+ }
+
+ // On re-scans, check mtime to skip unchanged files.
+ // On the first scan we skip this entirely to avoid extra
+ // metadata syscalls.
+ let changed = if self.has_scanned_once {
+ let current_mtime = std::fs::metadata(&path)
+ .ok()
+ .and_then(|m| m.modified().ok());
+
+ match current_mtime {
+ Some(mtime) => {
+ let prev = self.mtimes.insert(path.clone(), mtime);
+ prev.is_none_or(|prev| prev != mtime)
+ }
+ None => true,
+ }
+ } else {
+ true
+ };
+
+ match extension.as_str() {
+ // Special handing for CSS files, we don't want to extract candidates from
+ // these files, but we do want to extract used CSS variables.
+ "css" => {
+ if changed {
+ css_files.push(path.clone());
+ }
+ }
+ _ => {
+ if changed {
+ content_paths.push((path.clone(), extension.clone()));
+ }
+ }
+ }
+
+ self.extensions.insert(extension);
+ self.files.insert(path);
+ }
+ }
+
+ // Read + preprocess all discovered files in parallel
+ let scanned_blobs: Vec> = content_paths
+ .into_par_iter()
+ .filter_map(|(path, ext)| {
+ let content = std::fs::read(&path).ok()?;
+ event!(tracing::Level::INFO, "Reading {:?}", path);
+ let processed = pre_process_input(content, &ext);
+ if processed.is_empty() {
+ None
+ } else {
+ Some(processed)
+ }
+ })
+ .collect();
+
+ if !self.has_scanned_once {
+ self.has_scanned_once = true;
+ }
+
+ (scanned_blobs, css_files)
+ }
}
fn read_changed_content(c: ChangedContent) -> Option> {
@@ -474,26 +463,26 @@ fn read_changed_content(c: ChangedContent) -> Option> {
ChangedContent::Content(contents, extension) => (contents.into_bytes(), extension),
};
- Some(pre_process_input(&content, &extension))
+ Some(pre_process_input(content, &extension))
}
-pub fn pre_process_input(content: &[u8], extension: &str) -> Vec {
+pub fn pre_process_input(content: Vec, extension: &str) -> Vec {
use crate::extractor::pre_processors::*;
match extension {
- "clj" | "cljs" | "cljc" => Clojure.process(content),
- "heex" | "eex" | "ex" | "exs" => Elixir.process(content),
- "cshtml" | "razor" => Razor.process(content),
- "haml" => Haml.process(content),
- "json" => Json.process(content),
- "md" | "mdx" => Markdown.process(content),
- "pug" => Pug.process(content),
- "rb" | "erb" => Ruby.process(content),
- "slim" | "slang" => Slim.process(content),
- "svelte" => Svelte.process(content),
- "rs" => Rust.process(content),
- "vue" => Vue.process(content),
- _ => content.to_vec(),
+ "clj" | "cljs" | "cljc" => Clojure.process(&content),
+ "heex" | "eex" | "ex" | "exs" => Elixir.process(&content),
+ "cshtml" | "razor" => Razor.process(&content),
+ "haml" => Haml.process(&content),
+ "json" => Json.process(&content),
+ "md" | "mdx" => Markdown.process(&content),
+ "pug" => Pug.process(&content),
+ "rb" | "erb" => Ruby.process(&content),
+ "slim" | "slang" => Slim.process(&content),
+ "svelte" => Svelte.process(&content),
+ "rs" => Rust.process(&content),
+ "vue" => Vue.process(&content),
+ _ => content,
}
}
@@ -512,23 +501,23 @@ fn read_all_files(changed_content: Vec) -> Vec> {
}
#[tracing::instrument(skip_all)]
-fn extract_css_variables(blobs: Vec>) -> Vec {
+fn extract_css_variables(blobs: Vec>) -> FxHashSet {
extract(blobs, |mut extractor| {
extractor.extract_variables_from_css()
})
}
#[tracing::instrument(skip_all)]
-fn parse_all_blobs(blobs: Vec>) -> Vec {
+fn parse_all_blobs(blobs: Vec>) -> FxHashSet {
extract(blobs, |mut extractor| extractor.extract())
}
#[tracing::instrument(skip_all)]
-fn extract(blobs: Vec>, handle: H) -> Vec
+fn extract(blobs: Vec>, handle: H) -> FxHashSet
where
H: Fn(Extractor) -> Vec + std::marker::Sync,
{
- let mut result: Vec<_> = blobs
+ blobs
.par_iter()
.flat_map(|blob| blob.par_split(|x| *x == b'\n'))
.filter_map(|blob| {
@@ -554,22 +543,97 @@ where
})
.into_iter()
.map(|s| unsafe { String::from_utf8_unchecked(s.to_vec()) })
- .collect();
-
- // SAFETY: Unstable sort is faster and in this scenario it's also safe because we are
- // guaranteed to have unique candidates.
- result.par_sort_unstable();
-
- result
+ .collect()
}
-/// Create a walker for the given sources to detect all the files that we have to scan.
+type WalkEntry = (PathBuf, bool, String);
+
+/// Walk the file system synchronously. Used for the initial build where the overhead of spawning
+/// parallel walker threads is not worth it.
+#[tracing::instrument(skip_all)]
+fn walk_synchronous(walker: &mut WalkBuilder) -> Vec {
+ let mut entries = Vec::new();
+
+ for entry in walker.build().filter_map(Result::ok) {
+ let is_dir = entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false);
+ let path = entry.into_path();
+
+ if is_dir {
+ entries.push((path, true, String::new()));
+ } else {
+ let ext = path
+ .extension()
+ .and_then(|x| x.to_str())
+ .unwrap_or_default()
+ .to_owned();
+ entries.push((path, false, ext));
+ }
+ }
+
+ entries
+}
+
+/// Walk the file system in parallel. Used in watch mode where the parallel walker overhead is
+/// amortised across many rebuilds and subsequent calls are much faster.
+#[tracing::instrument(skip_all)]
+fn walk_parallel(walker: &mut WalkBuilder) -> Vec {
+ struct FlushOnDrop {
+ local: Vec,
+ shared: Arc>>,
+ }
+
+ impl Drop for FlushOnDrop {
+ fn drop(&mut self) {
+ if !self.local.is_empty() {
+ self.shared.lock().unwrap().append(&mut self.local);
+ }
+ }
+ }
+
+ let collected: Arc>> = Arc::new(Mutex::new(Vec::new()));
+
+ walker.build_parallel().run(|| {
+ let mut buf = FlushOnDrop {
+ local: Vec::with_capacity(256),
+ shared: collected.clone(),
+ };
+
+ Box::new(move |entry| {
+ let Ok(entry) = entry else {
+ return ignore::WalkState::Continue;
+ };
+
+ let is_dir = entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false);
+ let path = entry.into_path();
+
+ if is_dir {
+ buf.local.push((path, true, String::new()));
+ } else {
+ let ext = path
+ .extension()
+ .and_then(|x| x.to_str())
+ .unwrap_or_default()
+ .to_owned();
+ buf.local.push((path, false, ext));
+ }
+
+ if buf.local.len() >= 256 {
+ buf.shared.lock().unwrap().append(&mut buf.local);
+ }
+
+ ignore::WalkState::Continue
+ })
+ });
+
+ // All threads have finished and flushed their buffers via FlushOnDrop::drop
+ Arc::try_unwrap(collected).unwrap().into_inner().unwrap()
+}
+
+/// Sets up a WalkBuilder with all source roots, gitignore rules, and source pattern matching.
///
-/// The `mtimes` map is used to keep track of the last modified time of each file. This is used to
-/// determine if a file or folder has changed since the last scan and we can skip folders that
-/// haven't changed.
-fn create_walker(sources: Sources) -> Option {
- let mtimes: Arc>> = Default::default();
+/// This is the common setup shared between the full walker (with mtime tracking for re-scans)
+/// and the parallel walker (without mtime tracking for the initial scan).
+fn create_walker(sources: &Sources) -> Option {
let mut other_roots: FxHashSet<&PathBuf> = FxHashSet::default();
let mut first_root: Option<&PathBuf> = None;
let mut ignores: BTreeMap<&PathBuf, BTreeSet> = Default::default();
@@ -717,75 +781,68 @@ fn create_walker(sources: Sources) -> Option {
builder.add_gitignore(ignore);
}
- builder.filter_entry({
- move |entry| {
- let path = entry.path();
+ // Pre-compute source matching data to avoid allocations in the hot filter_entry path
+ let auto_bases: Vec = sources
+ .iter()
+ .filter_map(|source| match source {
+ SourceEntry::Auto { base } | SourceEntry::External { base } => Some(base.clone()),
+ _ => None,
+ })
+ .collect();
- // Ensure the entries are matching any of the provided source patterns (this is
- // necessary for manual-patterns that can filter the file extension)
- if path.is_file() {
- let mut matches = false;
- for source in sources.iter() {
- match source {
- SourceEntry::Auto { base } | SourceEntry::External { base } => {
- if path.starts_with(base) {
- matches = true;
- break;
- }
- }
- SourceEntry::Pattern { base, pattern } => {
- let mut pattern = pattern.to_string();
- // Ensure that the pattern is pinned to the base path.
- if !pattern.starts_with("/") {
- pattern = format!("/{pattern}");
- }
+ let pattern_sources: Vec<(PathBuf, String)> = sources
+ .iter()
+ .filter_map(|source| match source {
+ SourceEntry::Pattern { base, pattern } => {
+ let normalized = if pattern.starts_with("/") {
+ pattern.to_string()
+ } else {
+ format!("/{pattern}")
+ };
+ Some((base.clone(), normalized))
+ }
+ _ => None,
+ })
+ .collect();
- // Check if path starts with base, if so, remove the prefix and check the remainder against the pattern
- let remainder = path.strip_prefix(base);
- if remainder.is_ok_and(|remainder| {
- let mut path_str = remainder.to_string_lossy().to_string();
- if !path_str.starts_with("/") {
- path_str = format!("/{path_str}");
- }
- glob_match(pattern, path_str.as_bytes())
- }) {
- matches = true;
- break;
- }
- }
- _ => {}
- }
- }
+ // Source pattern matching filter (lock-free, safe for parallel walking)
+ builder.filter_entry(move |entry| {
+ let path = entry.path();
- if !matches {
- return false;
+ // Ensure the entries are matching any of the provided source patterns (this is
+ // necessary for manual-patterns that can filter the file extension)
+ if path.is_file() {
+ let mut matches = false;
+
+ for base in &auto_bases {
+ if path.starts_with(base) {
+ matches = true;
+ break;
}
}
- let mut mtimes = mtimes.lock().unwrap();
- let current_time = match entry.metadata() {
- Ok(metadata) if metadata.is_file() => {
- if let Ok(time) = metadata.modified() {
- Some(time)
- } else {
- None
+ if !matches {
+ for (base, pattern) in &pattern_sources {
+ let remainder = path.strip_prefix(base);
+ if remainder.is_ok_and(|remainder| {
+ let mut path_str = remainder.to_string_lossy().to_string();
+ if !path_str.starts_with("/") {
+ path_str = format!("/{path_str}");
+ }
+ glob_match(pattern, path_str.as_bytes())
+ }) {
+ matches = true;
+ break;
}
}
- _ => None,
- };
+ }
- let previous_time =
- current_time.and_then(|time| mtimes.insert(entry.clone().into_path(), time));
-
- match (current_time, previous_time) {
- (Some(current), Some(prev)) if prev == current => false,
- _ => {
- event!(tracing::Level::INFO, "Discovering {:?}", path);
-
- true
- }
+ if !matches {
+ return false;
}
}
+
+ true
});
Some(builder)
From bc6e4b85bf1dce84e2947f81cbb9881a77427de7 Mon Sep 17 00:00:00 2001
From: Andrey Viktorov
Date: Wed, 18 Feb 2026 02:59:57 +0700
Subject: [PATCH 126/353] Fallback to `config.createResolver` for `client` and
`ssr` environments in `@tailwindcss/vite` (#19679)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Summary
Sometimes even if Vite Envrionment API is available, some plugins are
still override `config.createResolver` function to inject own aliases
Since technically `config.createResolver` was only [properly
deprecated](https://github.com/vitejs/vite/pull/20031) in Vite 7.0.0,
it's still a valid(-ish) to do so, even if it wasn't ever officially
supported
Vite already handles this in its internal css resolvers, but not exposes
the code to do so as part of public API, so I've copied and adapted it
Fixes #19677
## Test plan
Tested by copying built package into my repro from the issue, also ran
vite integration tests
---------
Co-authored-by: Robin Malfait
---
CHANGELOG.md | 1 +
integrations/vite/astro.test.ts | 72 ++++++++++++++++++++++++-
packages/@tailwindcss-vite/src/index.ts | 40 ++++++++++++--
3 files changed, 109 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 065700829..3feec1331 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Allow multiples of `.25` in `aspect-*` fractions ([#19688](https://github.com/tailwindlabs/tailwindcss/pull/19688))
- Ensure changes to external files listed via `@source` trigger a full page reload when using `@tailwindcss/vite` ([#19670](https://github.com/tailwindlabs/tailwindcss/pull/19670))
- Improve performance Oxide scanner in bigger projects ([#19632](https://github.com/tailwindlabs/tailwindcss/pull/19632))
+- Ensure import aliases in Astro v5 work without crashing ([#19677](https://github.com/tailwindlabs/tailwindcss/issues/19677))
### Deprecated
diff --git a/integrations/vite/astro.test.ts b/integrations/vite/astro.test.ts
index 43406624c..f828b5071 100644
--- a/integrations/vite/astro.test.ts
+++ b/integrations/vite/astro.test.ts
@@ -1,4 +1,4 @@
-import { candidate, fetchStyles, html, js, json, retryAssertion, test, ts } from '../utils'
+import { candidate, css, fetchStyles, html, js, json, retryAssertion, test, ts } from '../utils'
test(
'dev mode',
@@ -129,3 +129,73 @@ test(
await fs.expectFileToContain(files[0][0], [candidate`underline`, candidate`overline`])
},
)
+
+// https://github.com/tailwindlabs/tailwindcss/issues/19677
+test(
+ 'import aliases should work in
+
+
+ Astro
+
+