From a767989e876baa54c4fce6fbd039d33035e86592 Mon Sep 17 00:00:00 2001 From: ice breaker <1324318532@qq.com> Date: Tue, 16 Jul 2024 14:39:03 +0800 Subject: [PATCH] chore: collect tailwindcss 3.4.5 --- package.json | 4 +- packages/core/package.json | 2 +- packages/tailwindcss-patch/package.json | 6 +- .../test/__snapshots__/index.test.ts.snap | 122 +++++ .../test/__snapshots__/postcss.test.ts.snap | 2 +- .../test/fixtures/versions/3.4.5/lib/index.js | 2 + .../fixtures/versions/3.4.5/lib/plugin.js | 48 ++ .../3.4.5/lib/processTailwindFeatures.js | 62 +++ .../versions/3.4.5/lib/util/dataTypes.js | 421 ++++++++++++++++++ .../test/fixtures/versions/3.4.5/package.json | 118 +++++ .../versions/lts/lib/util/dataTypes.js | 8 +- .../test/fixtures/versions/lts/package.json | 2 +- .../test/fixtures/versions/package.json | 5 +- .../test/fixtures/versions/yarn.lock | 36 +- .../unplugin-tailwindcss-mangle/package.json | 2 +- .../test/__snapshots__/vite.test.ts.snap | 4 + .../test/__snapshots__/webpack.test.ts.snap | 1 + pnpm-lock.yaml | 224 +++++----- 18 files changed, 942 insertions(+), 127 deletions(-) create mode 100644 packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/index.js create mode 100644 packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/plugin.js create mode 100644 packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/processTailwindFeatures.js create mode 100644 packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/util/dataTypes.js create mode 100644 packages/tailwindcss-patch/test/fixtures/versions/3.4.5/package.json diff --git a/package.json b/package.json index 3324bb36..04d0c17d 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@types/fs-extra": "^11.0.4", "@types/lodash-es": "^4.17.12", "@types/node": "^20.14.10", - "@vitest/coverage-v8": "^2.0.2", + "@vitest/coverage-v8": "^2.0.3", "bumpp": "^9.4.1", "cross-env": "^7.0.3", "dedent": "^1.5.3", @@ -59,6 +59,6 @@ "unplugin": "^1.11.0", "unplugin-tailwindcss-mangle": "workspace:*", "vite-tsconfig-paths": "^4.3.2", - "vitest": "^2.0.2" + "vitest": "^2.0.3" } } diff --git a/packages/core/package.json b/packages/core/package.json index d96b76b3..f5600523 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -54,7 +54,7 @@ "@ast-core/escape": "^1.0.1", "@babel/parser": "^7.24.8", "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8", + "@babel/types": "^7.24.9", "@tailwindcss-mangle/config": "workspace:^", "@tailwindcss-mangle/shared": "workspace:^", "fast-sort": "^3.4.0", diff --git a/packages/tailwindcss-patch/package.json b/packages/tailwindcss-patch/package.json index 745725ee..46fa14bf 100644 --- a/packages/tailwindcss-patch/package.json +++ b/packages/tailwindcss-patch/package.json @@ -49,10 +49,10 @@ } }, "dependencies": { - "@babel/generator": "^7.24.8", + "@babel/generator": "^7.24.9", "@babel/parser": "^7.24.8", "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8", + "@babel/types": "^7.24.9", "@tailwindcss-mangle/config": "workspace:^", "cac": "^6.7.14", "jiti": "^1.21.6", @@ -68,7 +68,7 @@ "@types/semver": "^7.5.8", "pkg-types": "^1.1.3", "postcss7": "npm:postcss@7", - "tailwindcss": "^3.4.4", + "tailwindcss": "^3.4.5", "tailwindcss2": "npm:@tailwindcss/postcss7-compat@^2.2.17" }, "directories": { diff --git a/packages/tailwindcss-patch/test/__snapshots__/index.test.ts.snap b/packages/tailwindcss-patch/test/__snapshots__/index.test.ts.snap index ff39f2c3..704f138b 100644 --- a/packages/tailwindcss-patch/test/__snapshots__/index.test.ts.snap +++ b/packages/tailwindcss-patch/test/__snapshots__/index.test.ts.snap @@ -3015,3 +3015,125 @@ function processTailwindFeatures(setupContext) { }", } `; + +exports[`versions-patch > patch tailwindcss3.4.5 1`] = ` +{ + "plugin": ""use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +const _setupTrackingContext = /*#__PURE__*/_interop_require_default(require("./lib/setupTrackingContext")); +const _processTailwindFeatures = /*#__PURE__*/_interop_require_default(require("./processTailwindFeatures")); +const _sharedState = require("./lib/sharedState"); +const _findAtConfigPath = require("./lib/findAtConfigPath"); +function _interop_require_default(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} +const contextRef = { + value: [] +}; +module.exports = function tailwindcss(configOrPath) { + return { + postcssPlugin: "tailwindcss", + plugins: [_sharedState.env.DEBUG && function (root) { + console.log("\\n"); + console.time("JIT TOTAL"); + return root; + }, async function (root, result) { + contextRef.value.length = 0; + var _findAtConfigPath1; + // Use the path for the \`@config\` directive if it exists, otherwise use the + // path for the file being processed + configOrPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : configOrPath; + let context = (0, _setupTrackingContext.default)(configOrPath); + if (root.type === "document") { + let roots = root.nodes.filter(node => node.type === "root"); + for (const root of roots) { + if (root.type === "root") { + contextRef.value.push(await (0, _processTailwindFeatures.default)(context)(root, result)); + } + } + return; + } + contextRef.value.push(await (0, _processTailwindFeatures.default)(context)(root, result)); + }, _sharedState.env.DEBUG && function (root) { + console.timeEnd("JIT TOTAL"); + console.log("\\n"); + return root; + }].filter(Boolean) + }; +}; +module.exports.postcss = true; +module.exports.contextRef = contextRef;", + "processTailwindFeatures": ""use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function () { + return processTailwindFeatures; + } +}); +const _normalizeTailwindDirectives = /*#__PURE__*/_interop_require_default(require("./lib/normalizeTailwindDirectives")); +const _expandTailwindAtRules = /*#__PURE__*/_interop_require_default(require("./lib/expandTailwindAtRules")); +const _expandApplyAtRules = /*#__PURE__*/_interop_require_default(require("./lib/expandApplyAtRules")); +const _evaluateTailwindFunctions = /*#__PURE__*/_interop_require_default(require("./lib/evaluateTailwindFunctions")); +const _substituteScreenAtRules = /*#__PURE__*/_interop_require_default(require("./lib/substituteScreenAtRules")); +const _resolveDefaultsAtRules = /*#__PURE__*/_interop_require_default(require("./lib/resolveDefaultsAtRules")); +const _collapseAdjacentRules = /*#__PURE__*/_interop_require_default(require("./lib/collapseAdjacentRules")); +const _collapseDuplicateDeclarations = /*#__PURE__*/_interop_require_default(require("./lib/collapseDuplicateDeclarations")); +const _partitionApplyAtRules = /*#__PURE__*/_interop_require_default(require("./lib/partitionApplyAtRules")); +const _setupContextUtils = require("./lib/setupContextUtils"); +const _featureFlags = require("./featureFlags"); +function _interop_require_default(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} +function processTailwindFeatures(setupContext) { + return async function (root, result) { + let { + tailwindDirectives, + applyDirectives + } = (0, _normalizeTailwindDirectives.default)(root); + // Partition apply rules that are found in the css + // itself. + (0, _partitionApplyAtRules.default)()(root, result); + let context = setupContext({ + tailwindDirectives, + applyDirectives, + registerDependency(dependency) { + result.messages.push({ + plugin: "tailwindcss", + parent: result.opts.from, + ...dependency + }); + }, + createContext(tailwindConfig, changedContent) { + return (0, _setupContextUtils.createContext)(tailwindConfig, changedContent, root); + } + })(root, result); + if (context.tailwindConfig.separator === "-") { + throw new Error("The '-' character cannot be used as a custom separator in JIT mode due to parsing ambiguity. Please use another character like '_' instead."); + } + (0, _featureFlags.issueFlagNotices)(context.tailwindConfig); + await (0, _expandTailwindAtRules.default)(context)(root, result); + // Partition apply rules that are generated by + // addComponents, addUtilities and so on. + (0, _partitionApplyAtRules.default)()(root, result); + (0, _expandApplyAtRules.default)(context)(root, result); + (0, _evaluateTailwindFunctions.default)(context)(root, result); + (0, _substituteScreenAtRules.default)(context)(root, result); + (0, _resolveDefaultsAtRules.default)(context)(root, result); + (0, _collapseAdjacentRules.default)(context)(root, result); + (0, _collapseDuplicateDeclarations.default)(context)(root, result); + return context; + }; +}", +} +`; diff --git a/packages/tailwindcss-patch/test/__snapshots__/postcss.test.ts.snap b/packages/tailwindcss-patch/test/__snapshots__/postcss.test.ts.snap index cb446836..0139bb40 100644 --- a/packages/tailwindcss-patch/test/__snapshots__/postcss.test.ts.snap +++ b/packages/tailwindcss-patch/test/__snapshots__/postcss.test.ts.snap @@ -2,7 +2,7 @@ exports[`postcss > getCss 0.common 1`] = ` "/* -! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com +! tailwindcss v3.4.5 | MIT License | https://tailwindcss.com *//* 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) diff --git a/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/index.js b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/index.js new file mode 100644 index 00000000..c947d974 --- /dev/null +++ b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/index.js @@ -0,0 +1,2 @@ +"use strict"; +module.exports = require("./plugin"); diff --git a/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/plugin.js b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/plugin.js new file mode 100644 index 00000000..a234003b --- /dev/null +++ b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/plugin.js @@ -0,0 +1,48 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +const _setupTrackingContext = /*#__PURE__*/ _interop_require_default(require("./lib/setupTrackingContext")); +const _processTailwindFeatures = /*#__PURE__*/ _interop_require_default(require("./processTailwindFeatures")); +const _sharedState = require("./lib/sharedState"); +const _findAtConfigPath = require("./lib/findAtConfigPath"); +function _interop_require_default(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} +module.exports = function tailwindcss(configOrPath) { + return { + postcssPlugin: "tailwindcss", + plugins: [ + _sharedState.env.DEBUG && function(root) { + console.log("\n"); + console.time("JIT TOTAL"); + return root; + }, + async function(root, result) { + var _findAtConfigPath1; + // Use the path for the `@config` directive if it exists, otherwise use the + // path for the file being processed + configOrPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : configOrPath; + let context = (0, _setupTrackingContext.default)(configOrPath); + if (root.type === "document") { + let roots = root.nodes.filter((node)=>node.type === "root"); + for (const root of roots){ + if (root.type === "root") { + await (0, _processTailwindFeatures.default)(context)(root, result); + } + } + return; + } + await (0, _processTailwindFeatures.default)(context)(root, result); + }, + _sharedState.env.DEBUG && function(root) { + console.timeEnd("JIT TOTAL"); + console.log("\n"); + return root; + } + ].filter(Boolean) + }; +}; +module.exports.postcss = true; diff --git a/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/processTailwindFeatures.js b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/processTailwindFeatures.js new file mode 100644 index 00000000..a23f5df3 --- /dev/null +++ b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/processTailwindFeatures.js @@ -0,0 +1,62 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function() { + return processTailwindFeatures; + } +}); +const _normalizeTailwindDirectives = /*#__PURE__*/ _interop_require_default(require("./lib/normalizeTailwindDirectives")); +const _expandTailwindAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/expandTailwindAtRules")); +const _expandApplyAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/expandApplyAtRules")); +const _evaluateTailwindFunctions = /*#__PURE__*/ _interop_require_default(require("./lib/evaluateTailwindFunctions")); +const _substituteScreenAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/substituteScreenAtRules")); +const _resolveDefaultsAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/resolveDefaultsAtRules")); +const _collapseAdjacentRules = /*#__PURE__*/ _interop_require_default(require("./lib/collapseAdjacentRules")); +const _collapseDuplicateDeclarations = /*#__PURE__*/ _interop_require_default(require("./lib/collapseDuplicateDeclarations")); +const _partitionApplyAtRules = /*#__PURE__*/ _interop_require_default(require("./lib/partitionApplyAtRules")); +const _setupContextUtils = require("./lib/setupContextUtils"); +const _featureFlags = require("./featureFlags"); +function _interop_require_default(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} +function processTailwindFeatures(setupContext) { + return async function(root, result) { + let { tailwindDirectives , applyDirectives } = (0, _normalizeTailwindDirectives.default)(root); + // Partition apply rules that are found in the css + // itself. + (0, _partitionApplyAtRules.default)()(root, result); + let context = setupContext({ + tailwindDirectives, + applyDirectives, + registerDependency (dependency) { + result.messages.push({ + plugin: "tailwindcss", + parent: result.opts.from, + ...dependency + }); + }, + createContext (tailwindConfig, changedContent) { + return (0, _setupContextUtils.createContext)(tailwindConfig, changedContent, root); + } + })(root, result); + if (context.tailwindConfig.separator === "-") { + throw new Error("The '-' character cannot be used as a custom separator in JIT mode due to parsing ambiguity. Please use another character like '_' instead."); + } + (0, _featureFlags.issueFlagNotices)(context.tailwindConfig); + await (0, _expandTailwindAtRules.default)(context)(root, result); + // Partition apply rules that are generated by + // addComponents, addUtilities and so on. + (0, _partitionApplyAtRules.default)()(root, result); + (0, _expandApplyAtRules.default)(context)(root, result); + (0, _evaluateTailwindFunctions.default)(context)(root, result); + (0, _substituteScreenAtRules.default)(context)(root, result); + (0, _resolveDefaultsAtRules.default)(context)(root, result); + (0, _collapseAdjacentRules.default)(context)(root, result); + (0, _collapseDuplicateDeclarations.default)(context)(root, result); + }; +} diff --git a/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/util/dataTypes.js b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/util/dataTypes.js new file mode 100644 index 00000000..f16f0f19 --- /dev/null +++ b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/lib/util/dataTypes.js @@ -0,0 +1,421 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + normalize: function() { + return normalize; + }, + url: function() { + return url; + }, + number: function() { + return number; + }, + percentage: function() { + return percentage; + }, + length: function() { + return length; + }, + lineWidth: function() { + return lineWidth; + }, + shadow: function() { + return shadow; + }, + color: function() { + return color; + }, + image: function() { + return image; + }, + gradient: function() { + return gradient; + }, + position: function() { + return position; + }, + familyName: function() { + return familyName; + }, + genericName: function() { + return genericName; + }, + absoluteSize: function() { + return absoluteSize; + }, + relativeSize: function() { + return relativeSize; + } +}); +const _color = require("./color"); +const _parseBoxShadowValue = require("./parseBoxShadowValue"); +const _splitAtTopLevelOnly = require("./splitAtTopLevelOnly"); +let cssFunctions = [ + "min", + "max", + "clamp", + "calc" +]; +// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types +function isCSSFunction(value) { + return cssFunctions.some((fn)=>new RegExp(`^${fn}\\(.*\\)`).test(value)); +} +// These properties accept a `` as one of the values. This means that you can use them +// as: `timeline-scope: --tl;` +// +// Without the `var(--tl)`, in these cases we don't want to normalize the value, and you should add +// the `var()` yourself. +// +// More info: +// - https://drafts.csswg.org/scroll-animations/#propdef-timeline-scope +// - https://developer.mozilla.org/en-US/docs/Web/CSS/timeline-scope#dashed-ident +// - https://www.w3.org/TR/css-anchor-position-1 +// +const AUTO_VAR_INJECTION_EXCEPTIONS = new Set([ + // Concrete properties + "scroll-timeline-name", + "timeline-scope", + "view-timeline-name", + "font-palette", + "anchor-name", + "anchor-scope", + "position-anchor", + "position-try-options", + // Shorthand properties + "scroll-timeline", + "animation-timeline", + "view-timeline", + "position-try" +]); +function normalize(value, context = null, isRoot = true) { + let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property); + if (value.startsWith("--") && !isVarException) { + return `var(${value})`; + } + // Keep raw strings if it starts with `url(` + if (value.includes("url(")) { + return value.split(/(url\(.*?\))/g).filter(Boolean).map((part)=>{ + if (/^url\(.*?\)$/.test(part)) { + return part; + } + return normalize(part, context, false); + }).join(""); + } + // Convert `_` to ` `, except for escaped underscores `\_` + value = value.replace(/([^\\])_+/g, (fullMatch, characterBefore)=>characterBefore + " ".repeat(fullMatch.length - 1)).replace(/^_/g, " ").replace(/\\_/g, "_"); + // Remove leftover whitespace + if (isRoot) { + value = value.trim(); + } + value = normalizeMathOperatorSpacing(value); + return value; +} +/** + * Add spaces around operators inside math functions + * like calc() that do not follow an operator, '(', or `,`. + * + * @param {string} value + * @returns {string} + */ function normalizeMathOperatorSpacing(value) { + let preventFormattingInFunctions = [ + "theme" + ]; + let preventFormattingKeywords = [ + "min-content", + "max-content", + "fit-content", + // Env + "safe-area-inset-top", + "safe-area-inset-right", + "safe-area-inset-bottom", + "safe-area-inset-left", + "titlebar-area-x", + "titlebar-area-y", + "titlebar-area-width", + "titlebar-area-height", + "keyboard-inset-top", + "keyboard-inset-right", + "keyboard-inset-bottom", + "keyboard-inset-left", + "keyboard-inset-width", + "keyboard-inset-height", + "radial-gradient", + "linear-gradient", + "conic-gradient", + "repeating-radial-gradient", + "repeating-linear-gradient", + "repeating-conic-gradient" + ]; + return value.replace(/(calc|min|max|clamp)\(.+\)/g, (match)=>{ + let result = ""; + function lastChar() { + let char = result.trimEnd(); + return char[char.length - 1]; + } + for(let i = 0; i < match.length; i++){ + function peek(word) { + return word.split("").every((char, j)=>match[i + j] === char); + } + function consumeUntil(chars) { + let minIndex = Infinity; + for (let char of chars){ + let index = match.indexOf(char, i); + if (index !== -1 && index < minIndex) { + minIndex = index; + } + } + let result = match.slice(i, minIndex); + i += result.length - 1; + return result; + } + let char = match[i]; + // Handle `var(--variable)` + if (peek("var")) { + // When we consume until `)`, then we are dealing with this scenario: + // `var(--example)` + // + // When we consume until `,`, then we are dealing with this scenario: + // `var(--example, 1rem)` + // + // In this case we do want to "format", the default value as well + result += consumeUntil([ + ")", + "," + ]); + } else if (preventFormattingKeywords.some((keyword)=>peek(keyword))) { + let keyword = preventFormattingKeywords.find((keyword)=>peek(keyword)); + result += keyword; + i += keyword.length - 1; + } else if (preventFormattingInFunctions.some((fn)=>peek(fn))) { + result += consumeUntil([ + ")" + ]); + } else if (peek("[")) { + result += consumeUntil([ + "]" + ]); + } else if ([ + "+", + "-", + "*", + "/" + ].includes(char) && ![ + "(", + "+", + "-", + "*", + "/", + "," + ].includes(lastChar())) { + result += ` ${char} `; + } else { + result += char; + } + } + // Simplify multiple spaces + return result.replace(/\s+/g, " "); + }); +} +function url(value) { + return value.startsWith("url("); +} +function number(value) { + return !isNaN(Number(value)) || isCSSFunction(value); +} +function percentage(value) { + return value.endsWith("%") && number(value.slice(0, -1)) || isCSSFunction(value); +} +// Please refer to MDN when updating this list: +// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units +// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units +let lengthUnits = [ + "cm", + "mm", + "Q", + "in", + "pc", + "pt", + "px", + "em", + "ex", + "ch", + "rem", + "lh", + "rlh", + "vw", + "vh", + "vmin", + "vmax", + "vb", + "vi", + "svw", + "svh", + "lvw", + "lvh", + "dvw", + "dvh", + "cqw", + "cqh", + "cqi", + "cqb", + "cqmin", + "cqmax" +]; +let lengthUnitsPattern = `(?:${lengthUnits.join("|")})`; +function length(value) { + return value === "0" || new RegExp(`^[+-]?[0-9]*\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value); +} +let lineWidths = new Set([ + "thin", + "medium", + "thick" +]); +function lineWidth(value) { + return lineWidths.has(value); +} +function shadow(value) { + let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value)); + for (let parsedShadow of parsedShadows){ + if (!parsedShadow.valid) { + return false; + } + } + return true; +} +function color(value) { + let colors = 0; + let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, "_").every((part)=>{ + part = normalize(part); + if (part.startsWith("var(")) return true; + if ((0, _color.parseColor)(part, { + loose: true + }) !== null) return colors++, true; + return false; + }); + if (!result) return false; + return colors > 0; +} +function image(value) { + let images = 0; + let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part)=>{ + part = normalize(part); + if (part.startsWith("var(")) return true; + if (url(part) || gradient(part) || [ + "element(", + "image(", + "cross-fade(", + "image-set(" + ].some((fn)=>part.startsWith(fn))) { + images++; + return true; + } + return false; + }); + if (!result) return false; + return images > 0; +} +let gradientTypes = new Set([ + "conic-gradient", + "linear-gradient", + "radial-gradient", + "repeating-conic-gradient", + "repeating-linear-gradient", + "repeating-radial-gradient" +]); +function gradient(value) { + value = normalize(value); + for (let type of gradientTypes){ + if (value.startsWith(`${type}(`)) { + return true; + } + } + return false; +} +let validPositions = new Set([ + "center", + "top", + "right", + "bottom", + "left" +]); +function position(value) { + let positions = 0; + let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, "_").every((part)=>{ + part = normalize(part); + if (part.startsWith("var(")) return true; + if (validPositions.has(part) || length(part) || percentage(part)) { + positions++; + return true; + } + return false; + }); + if (!result) return false; + return positions > 0; +} +function familyName(value) { + let fonts = 0; + let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, ",").every((part)=>{ + part = normalize(part); + if (part.startsWith("var(")) return true; + // If it contains spaces, then it should be quoted + if (part.includes(" ")) { + if (!/(['"])([^"']+)\1/g.test(part)) { + return false; + } + } + // If it starts with a number, it's invalid + if (/^\d/g.test(part)) { + return false; + } + fonts++; + return true; + }); + if (!result) return false; + return fonts > 0; +} +let genericNames = new Set([ + "serif", + "sans-serif", + "monospace", + "cursive", + "fantasy", + "system-ui", + "ui-serif", + "ui-sans-serif", + "ui-monospace", + "ui-rounded", + "math", + "emoji", + "fangsong" +]); +function genericName(value) { + return genericNames.has(value); +} +let absoluteSizes = new Set([ + "xx-small", + "x-small", + "small", + "medium", + "large", + "x-large", + "xx-large", + "xxx-large" +]); +function absoluteSize(value) { + return absoluteSizes.has(value); +} +let relativeSizes = new Set([ + "larger", + "smaller" +]); +function relativeSize(value) { + return relativeSizes.has(value); +} diff --git a/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/package.json b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/package.json new file mode 100644 index 00000000..6c8cb1a0 --- /dev/null +++ b/packages/tailwindcss-patch/test/fixtures/versions/3.4.5/package.json @@ -0,0 +1,118 @@ +{ + "name": "tailwindcss", + "version": "3.4.5", + "description": "A utility-first CSS framework for rapidly building custom user interfaces.", + "license": "MIT", + "main": "lib/index.js", + "types": "types/index.d.ts", + "repository": "https://github.com/tailwindlabs/tailwindcss.git", + "bugs": "https://github.com/tailwindlabs/tailwindcss/issues", + "homepage": "https://tailwindcss.com", + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "scripts": { + "prebuild": "npm run generate && rimraf lib", + "build": "swc src --out-dir lib --copy-files", + "postbuild": "esbuild lib/cli-peer-dependencies.js --bundle --platform=node --outfile=peers/index.js --define:process.env.CSS_TRANSFORMER_WASM=false", + "rebuild-fixtures": "npm run build && node -r @swc/register scripts/rebuildFixtures.js", + "style": "eslint .", + "pretest": "npm run generate", + "test": "jest", + "test:integrations": "npm run test --prefix ./integrations", + "install:integrations": "node scripts/install-integrations.js", + "generate:plugin-list": "node -r @swc/register scripts/create-plugin-list.js", + "generate:types": "node -r @swc/register scripts/generate-types.js", + "generate": "npm run generate:plugin-list && npm run generate:types", + "release-channel": "node ./scripts/release-channel.js", + "release-notes": "node ./scripts/release-notes.js", + "prepublishOnly": "npm install --force && npm run build" + }, + "files": [ + "src/*", + "cli/*", + "lib/*", + "peers/*", + "scripts/*.js", + "stubs/*", + "nesting/*", + "types/**/*", + "*.d.ts", + "*.css", + "*.js" + ], + "devDependencies": { + "@swc/cli": "^0.1.62", + "@swc/core": "^1.3.55", + "@swc/jest": "^0.2.26", + "@swc/register": "^0.1.10", + "autoprefixer": "^10.4.14", + "browserslist": "^4.21.5", + "concurrently": "^8.0.1", + "cssnano": "^6.0.0", + "esbuild": "^0.20.2", + "eslint": "^8.39.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^4.2.1", + "jest": "^29.6.0", + "jest-diff": "^29.6.0", + "lightningcss": "1.24.1", + "prettier": "^2.8.8", + "rimraf": "^5.0.0", + "source-map-js": "^1.0.2", + "turbo": "^1.9.3" + }, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "browserslist": [ + "> 1%", + "not edge <= 18", + "not ie 11", + "not op_mini all" + ], + "jest": { + "testTimeout": 30000, + "setupFilesAfterEnv": [ + "/jest/customMatchers.js" + ], + "testPathIgnorePatterns": [ + "/node_modules/", + "/integrations/", + "/standalone-cli/", + "\\.test\\.skip\\.js$" + ], + "transformIgnorePatterns": [ + "node_modules/(?!lightningcss)" + ], + "transform": { + "\\.js$": "@swc/jest", + "\\.ts$": "@swc/jest" + } + }, + "engines": { + "node": ">=14.0.0" + } +} diff --git a/packages/tailwindcss-patch/test/fixtures/versions/lts/lib/util/dataTypes.js b/packages/tailwindcss-patch/test/fixtures/versions/lts/lib/util/dataTypes.js index 90b2877c..f16f0f19 100644 --- a/packages/tailwindcss-patch/test/fixtures/versions/lts/lib/util/dataTypes.js +++ b/packages/tailwindcss-patch/test/fixtures/versions/lts/lib/util/dataTypes.js @@ -77,6 +77,7 @@ function isCSSFunction(value) { // More info: // - https://drafts.csswg.org/scroll-animations/#propdef-timeline-scope // - https://developer.mozilla.org/en-US/docs/Web/CSS/timeline-scope#dashed-ident +// - https://www.w3.org/TR/css-anchor-position-1 // const AUTO_VAR_INJECTION_EXCEPTIONS = new Set([ // Concrete properties @@ -84,10 +85,15 @@ const AUTO_VAR_INJECTION_EXCEPTIONS = new Set([ "timeline-scope", "view-timeline-name", "font-palette", + "anchor-name", + "anchor-scope", + "position-anchor", + "position-try-options", // Shorthand properties "scroll-timeline", "animation-timeline", - "view-timeline" + "view-timeline", + "position-try" ]); function normalize(value, context = null, isRoot = true) { let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property); diff --git a/packages/tailwindcss-patch/test/fixtures/versions/lts/package.json b/packages/tailwindcss-patch/test/fixtures/versions/lts/package.json index ec4a212f..6c8cb1a0 100644 --- a/packages/tailwindcss-patch/test/fixtures/versions/lts/package.json +++ b/packages/tailwindcss-patch/test/fixtures/versions/lts/package.json @@ -1,6 +1,6 @@ { "name": "tailwindcss", - "version": "3.4.4", + "version": "3.4.5", "description": "A utility-first CSS framework for rapidly building custom user interfaces.", "license": "MIT", "main": "lib/index.js", diff --git a/packages/tailwindcss-patch/test/fixtures/versions/package.json b/packages/tailwindcss-patch/test/fixtures/versions/package.json index aa94838b..b91ce2d6 100644 --- a/packages/tailwindcss-patch/test/fixtures/versions/package.json +++ b/packages/tailwindcss-patch/test/fixtures/versions/package.json @@ -17,7 +17,7 @@ "packageManager": "yarn@1.22.22", "license": "ISC", "dependencies": { - "tailwindcss": "^3.4.4", + "tailwindcss": "^3.4.5", "tailwindcss3.0.0": "npm:tailwindcss@3.0.0", "tailwindcss3.2.1": "npm:tailwindcss@3.2.1", "tailwindcss3.2.2": "npm:tailwindcss@3.2.2", @@ -37,7 +37,8 @@ "tailwindcss3.4.1": "npm:tailwindcss@3.4.1", "tailwindcss3.4.2": "npm:tailwindcss@3.4.2", "tailwindcss3.4.3": "npm:tailwindcss@3.4.3", - "tailwindcss3.4.4": "npm:tailwindcss@3.4.4" + "tailwindcss3.4.4": "npm:tailwindcss@3.4.4", + "tailwindcss3.4.5": "npm:tailwindcss@3.4.5" }, "devDependencies": { "execa": "^7.1.1" diff --git a/packages/tailwindcss-patch/test/fixtures/versions/yarn.lock b/packages/tailwindcss-patch/test/fixtures/versions/yarn.lock index db809036..5c263d5f 100644 --- a/packages/tailwindcss-patch/test/fixtures/versions/yarn.lock +++ b/packages/tailwindcss-patch/test/fixtures/versions/yarn.lock @@ -1504,10 +1504,38 @@ supports-preserve-symlinks-flag@^1.0.0: resolve "^1.22.2" sucrase "^3.32.0" -tailwindcss@^3.4.4: - version "3.4.4" - resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.4.tgz#351d932273e6abfa75ce7d226b5bf3a6cb257c05" - integrity sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A== +"tailwindcss3.4.5@npm:tailwindcss@3.4.5": + version "3.4.5" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.5.tgz#0de2e92ed4d00fb015feb962fa0781605761724d" + integrity sha512-DlTxttYcogpDfx3tf/8jfnma1nfAYi2cBUYV2YNoPPecwmO3YGiFlOX9D8tGAu+EDF38ryBzvrDKU/BLMsUwbw== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.0" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +tailwindcss@^3.4.5: + version "3.4.5" + resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.5.tgz#0de2e92ed4d00fb015feb962fa0781605761724d" + integrity sha512-DlTxttYcogpDfx3tf/8jfnma1nfAYi2cBUYV2YNoPPecwmO3YGiFlOX9D8tGAu+EDF38ryBzvrDKU/BLMsUwbw== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" diff --git a/packages/unplugin-tailwindcss-mangle/package.json b/packages/unplugin-tailwindcss-mangle/package.json index a7d90089..7809e3a9 100644 --- a/packages/unplugin-tailwindcss-mangle/package.json +++ b/packages/unplugin-tailwindcss-mangle/package.json @@ -87,7 +87,7 @@ "normalize-newline": "^4.1.0", "postcss": "^8.4.38", "postcss-loader": "^8.1.1", - "tailwindcss": "^3.4.4", + "tailwindcss": "^3.4.5", "tailwindcss-patch": "workspace:^", "vite": "^5.3.3", "webpack": "^5.93.0", diff --git a/packages/unplugin-tailwindcss-mangle/test/__snapshots__/vite.test.ts.snap b/packages/unplugin-tailwindcss-mangle/test/__snapshots__/vite.test.ts.snap index d2dda1ad..23550d96 100644 --- a/packages/unplugin-tailwindcss-mangle/test/__snapshots__/vite.test.ts.snap +++ b/packages/unplugin-tailwindcss-mangle/test/__snapshots__/vite.test.ts.snap @@ -342,6 +342,7 @@ exports[`vite build > common build 2`] = ` } .tw-ca { --tw-backdrop-blur: blur(40px); + -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-ga { @@ -590,6 +591,7 @@ exports[`vite build > common build 3`] = `
+ " @@ -937,6 +939,7 @@ exports[`vite build > common build change class prefix 2`] = ` } .ice-ca { --tw-backdrop-blur: blur(40px); + -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) } .ice-ga { @@ -1185,6 +1188,7 @@ exports[`vite build > common build change class prefix 3`] = `
+ " diff --git a/packages/unplugin-tailwindcss-mangle/test/__snapshots__/webpack.test.ts.snap b/packages/unplugin-tailwindcss-mangle/test/__snapshots__/webpack.test.ts.snap index fd30aed0..d328e365 100644 --- a/packages/unplugin-tailwindcss-mangle/test/__snapshots__/webpack.test.ts.snap +++ b/packages/unplugin-tailwindcss-mangle/test/__snapshots__/webpack.test.ts.snap @@ -269,6 +269,7 @@ exports[`webpack build > common > assets 1`] = ` } .backdrop-blur-2xl { --tw-backdrop-blur: blur(40px); + -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) } .transition-colors { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97d2f3bc..37d7e619 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 2.27.7 '@icebreakers/eslint-config': specifier: ^0.3.12 - version: 0.3.12(eslint@9.7.0)(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)))(typescript@5.5.3)(vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2)) + version: 0.3.12(eslint@9.7.0)(tailwindcss@3.4.5(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)))(typescript@5.5.3)(vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2)) '@rollup/pluginutils': specifier: ^5.1.0 version: 5.1.0(rollup@4.18.1) @@ -39,8 +39,8 @@ importers: specifier: ^20.14.10 version: 20.14.10 '@vitest/coverage-v8': - specifier: ^2.0.2 - version: 2.0.2(vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2)) + specifier: ^2.0.3 + version: 2.0.3(vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2)) bumpp: specifier: ^9.4.1 version: 9.4.1(magicast@0.3.4) @@ -111,8 +111,8 @@ importers: specifier: ^4.3.2 version: 4.3.2(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2)) vitest: - specifier: ^2.0.2 - version: 2.0.2(@types/node@20.14.10)(terser@5.31.2) + specifier: ^2.0.3 + version: 2.0.3(@types/node@20.14.10)(terser@5.31.2) packages/config: dependencies: @@ -138,8 +138,8 @@ importers: specifier: ^7.24.8 version: 7.24.8 '@babel/types': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.24.9 + version: 7.24.9 '@tailwindcss-mangle/config': specifier: workspace:^ version: link:../config @@ -171,8 +171,8 @@ importers: packages/tailwindcss-patch: dependencies: '@babel/generator': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.24.9 + version: 7.24.9 '@babel/parser': specifier: ^7.24.8 version: 7.24.8 @@ -180,8 +180,8 @@ importers: specifier: ^7.24.8 version: 7.24.8 '@babel/types': - specifier: ^7.24.8 - version: 7.24.8 + specifier: ^7.24.9 + version: 7.24.9 '@tailwindcss-mangle/config': specifier: workspace:^ version: link:../config @@ -223,8 +223,8 @@ importers: specifier: npm:postcss@7 version: postcss@7.0.39 tailwindcss: - specifier: ^3.4.4 - version: 3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) + specifier: ^3.4.5 + version: 3.4.5(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) tailwindcss2: specifier: npm:@tailwindcss/postcss7-compat@^2.2.17 version: '@tailwindcss/postcss7-compat@2.2.17(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))' @@ -278,8 +278,8 @@ importers: specifier: ^8.1.1 version: 8.1.1(postcss@8.4.38)(typescript@5.5.3)(webpack@5.93.0) tailwindcss: - specifier: ^3.4.4 - version: 3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) + specifier: ^3.4.5 + version: 3.4.5(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) tailwindcss-patch: specifier: workspace:^ version: link:../tailwindcss-patch @@ -407,6 +407,10 @@ packages: resolution: {integrity: sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ==} engines: {node: '>=6.9.0'} + '@babel/generator@7.24.9': + resolution: {integrity: sha512-G8v3jRg+z8IwY1jHFxvCNhOPYPterE4XljNgdGTYfSTtzzwjIswIzIaSPSLs3R7yFuqnqNeay5rjICfqVr+/6A==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -502,8 +506,8 @@ packages: resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.8': - resolution: {integrity: sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==} + '@babel/types@7.24.9': + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -1778,28 +1782,28 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitest/coverage-v8@2.0.2': - resolution: {integrity: sha512-iA8eb4PMid3bMc++gfQSTvYE1QL//fC8pz+rKsTUDBFjdDiy/gH45hvpqyDu5K7FHhvgG0GNNCJzTMMSFKhoxg==} + '@vitest/coverage-v8@2.0.3': + resolution: {integrity: sha512-53d+6jXFdYbasXBmsL6qaGIfcY5eBQq0sP57AjdasOcSiGNj4qxkkpDKIitUNfjxcfAfUfQ8BD0OR2fSey64+g==} peerDependencies: - vitest: 2.0.2 + vitest: 2.0.3 - '@vitest/expect@2.0.2': - resolution: {integrity: sha512-nKAvxBYqcDugYZ4nJvnm5OR8eDJdgWjk4XM9owQKUjzW70q0icGV2HVnQOyYsp906xJaBDUXw0+9EHw2T8e0mQ==} + '@vitest/expect@2.0.3': + resolution: {integrity: sha512-X6AepoOYePM0lDNUPsGXTxgXZAl3EXd0GYe/MZyVE4HzkUqyUVC6S3PrY5mClDJ6/7/7vALLMV3+xD/Ko60Hqg==} - '@vitest/pretty-format@2.0.2': - resolution: {integrity: sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==} + '@vitest/pretty-format@2.0.3': + resolution: {integrity: sha512-URM4GLsB2xD37nnTyvf6kfObFafxmycCL8un3OC9gaCs5cti2u+5rJdIflZ2fUJUen4NbvF6jCufwViAFLvz1g==} - '@vitest/runner@2.0.2': - resolution: {integrity: sha512-OCh437Vi8Wdbif1e0OvQcbfM3sW4s2lpmOjAE7qfLrpzJX2M7J1IQlNvEcb/fu6kaIB9n9n35wS0G2Q3en5kHg==} + '@vitest/runner@2.0.3': + resolution: {integrity: sha512-EmSP4mcjYhAcuBWwqgpjR3FYVeiA4ROzRunqKltWjBfLNs1tnMLtF+qtgd5ClTwkDP6/DGlKJTNa6WxNK0bNYQ==} - '@vitest/snapshot@2.0.2': - resolution: {integrity: sha512-Yc2ewhhZhx+0f9cSUdfzPRcsM6PhIb+S43wxE7OG0kTxqgqzo8tHkXFuFlndXeDMp09G3sY/X5OAo/RfYydf1g==} + '@vitest/snapshot@2.0.3': + resolution: {integrity: sha512-6OyA6v65Oe3tTzoSuRPcU6kh9m+mPL1vQ2jDlPdn9IQoUxl8rXhBnfICNOC+vwxWY684Vt5UPgtcA2aPFBb6wg==} - '@vitest/spy@2.0.2': - resolution: {integrity: sha512-MgwJ4AZtCgqyp2d7WcQVE8aNG5vQ9zu9qMPYQHjsld/QVsrvg78beNrXdO4HYkP0lDahCO3P4F27aagIag+SGQ==} + '@vitest/spy@2.0.3': + resolution: {integrity: sha512-sfqyAw/ypOXlaj4S+w8689qKM1OyPOqnonqOc9T91DsoHbfN5mU7FdifWWv3MtQFf0lEUstEwR9L/q/M390C+A==} - '@vitest/utils@2.0.2': - resolution: {integrity: sha512-pxCY1v7kmOCWYWjzc0zfjGTA3Wmn8PKnlPvSrsA643P1NHl1fOyXj2Q9SaNlrlFE+ivCsxM80Ov3AR82RmHCWQ==} + '@vitest/utils@2.0.3': + resolution: {integrity: sha512-c/UdELMuHitQbbc/EVctlBaxoYAwQPQdSNwv7z/vHyBKy2edYZaFgptE27BRueZB7eW8po+cllotMNTDpL3HWg==} '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -4591,10 +4595,6 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-selector-parser@6.1.0: - resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} - engines: {node: '>=4'} - postcss-selector-parser@6.1.1: resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} engines: {node: '>=4'} @@ -5172,8 +5172,8 @@ packages: resolution: {integrity: sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg==} engines: {node: ^14.18.0 || >=16.0.0} - tailwindcss@3.4.4: - resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + tailwindcss@3.4.5: + resolution: {integrity: sha512-DlTxttYcogpDfx3tf/8jfnma1nfAYi2cBUYV2YNoPPecwmO3YGiFlOX9D8tGAu+EDF38ryBzvrDKU/BLMsUwbw==} engines: {node: '>=14.0.0'} hasBin: true @@ -5564,8 +5564,8 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - vite-node@2.0.2: - resolution: {integrity: sha512-w4vkSz1Wo+NIQg8pjlEn0jQbcM/0D+xVaYjhw3cvarTanLLBh54oNiRbsT8PNK5GfuST0IlVXjsNRoNlqvY/fw==} + vite-node@2.0.3: + resolution: {integrity: sha512-14jzwMx7XTcMB+9BhGQyoEAmSl0eOr3nrnn+Z12WNERtOvLN+d2scbRUvyni05rT3997Bg+rZb47NyP4IQPKXg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5613,15 +5613,15 @@ packages: vite: optional: true - vitest@2.0.2: - resolution: {integrity: sha512-WlpZ9neRIjNBIOQwBYfBSr0+of5ZCbxT2TVGKW4Lv0c8+srCFIiRdsP7U009t8mMn821HQ4XKgkx5dVWpyoyLw==} + vitest@2.0.3: + resolution: {integrity: sha512-o3HRvU93q6qZK4rI2JrhKyZMMuxg/JRt30E6qeQs6ueaiz5hr1cPj+Sk2kATgQzMMqsa2DiNI0TIK++1ULx8Jw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.0.2 - '@vitest/ui': 2.0.2 + '@vitest/browser': 2.0.3 + '@vitest/ui': 2.0.3 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5821,7 +5821,7 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@2.21.2(eslint-plugin-format@0.1.2(eslint@9.7.0))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2))': + '@antfu/eslint-config@2.21.2(eslint-plugin-format@0.1.2(eslint@9.7.0))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@antfu/install-pkg': 0.3.3 '@clack/prompts': 0.7.0 @@ -5846,7 +5846,7 @@ snapshots: eslint-plugin-toml: 0.11.1(eslint@9.7.0) eslint-plugin-unicorn: 54.0.0(eslint@9.7.0) eslint-plugin-unused-imports: 3.2.0(@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0) - eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2)) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2)) eslint-plugin-vue: 9.27.0(eslint@9.7.0) eslint-plugin-yml: 1.14.0(eslint@9.7.0) eslint-processor-vue-blocks: 0.1.2(eslint@9.7.0) @@ -5930,14 +5930,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.8 + '@babel/generator': 7.24.9 '@babel/helper-compilation-targets': 7.24.7 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) '@babel/helpers': 7.24.7 '@babel/parser': 7.24.8 '@babel/template': 7.24.7 '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 convert-source-map: 2.0.0 debug: 4.3.5 gensync: 1.0.0-beta.2 @@ -5948,14 +5948,21 @@ snapshots: '@babel/generator@7.24.8': dependencies: - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/generator@7.24.9': + dependencies: + '@babel/types': 7.24.9 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@babel/helper-compilation-targets@7.24.7': dependencies: @@ -5967,21 +5974,21 @@ snapshots: '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@babel/helper-function-name@7.24.7': dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color @@ -6001,13 +6008,13 @@ snapshots: '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@babel/helper-string-parser@7.24.8': {} @@ -6018,7 +6025,7 @@ snapshots: '@babel/helpers@7.24.7': dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@babel/highlight@7.24.7': dependencies: @@ -6029,7 +6036,7 @@ snapshots: '@babel/parser@7.24.8': dependencies: - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': dependencies: @@ -6043,7 +6050,7 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color @@ -6057,7 +6064,7 @@ snapshots: dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@babel/traverse@7.24.8': dependencies: @@ -6068,13 +6075,13 @@ snapshots: '@babel/helper-hoist-variables': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.24.8': + '@babel/types@7.24.9': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -6601,13 +6608,13 @@ snapshots: '@humanwhocodes/retry@0.3.0': {} - '@icebreakers/eslint-config@0.3.12(eslint@9.7.0)(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)))(typescript@5.5.3)(vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2))': + '@icebreakers/eslint-config@0.3.12(eslint@9.7.0)(tailwindcss@3.4.5(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)))(typescript@5.5.3)(vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2))': dependencies: - '@antfu/eslint-config': 2.21.2(eslint-plugin-format@0.1.2(eslint@9.7.0))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2)) + '@antfu/eslint-config': 2.21.2(eslint-plugin-format@0.1.2(eslint@9.7.0))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2)) eslint-plugin-format: 0.1.2(eslint@9.7.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@9.7.0) eslint-plugin-mdx: 3.1.5(eslint@9.7.0) - eslint-plugin-tailwindcss: 3.17.4(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))) + eslint-plugin-tailwindcss: 3.17.4(tailwindcss@3.4.5(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))) eslint-plugin-vuejs-accessibility: 2.3.1(eslint@9.7.0) local-pkg: 0.5.0 transitivePeerDependencies: @@ -7029,7 +7036,7 @@ snapshots: postcss-js: 2.0.3 postcss-load-config: 3.1.4(postcss@7.0.39)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) postcss-nested: 4.2.3 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.1 postcss-value-parser: 4.2.0 pretty-hrtime: 1.0.3 purgecss: 4.1.3 @@ -7057,14 +7064,14 @@ snapshots: '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@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.24.8 + '@babel/types': 7.24.9 '@types/babel__helper-plugin-utils@7.10.3': dependencies: @@ -7073,11 +7080,11 @@ snapshots: '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@types/concat-stream@2.0.3': dependencies: @@ -7281,7 +7288,7 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitest/coverage-v8@2.0.2(vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2))': + '@vitest/coverage-v8@2.0.3(vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -7296,39 +7303,39 @@ snapshots: strip-literal: 2.1.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.0.2(@types/node@20.14.10)(terser@5.31.2) + vitest: 2.0.3(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - supports-color - '@vitest/expect@2.0.2': + '@vitest/expect@2.0.3': dependencies: - '@vitest/spy': 2.0.2 - '@vitest/utils': 2.0.2 + '@vitest/spy': 2.0.3 + '@vitest/utils': 2.0.3 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.0.2': + '@vitest/pretty-format@2.0.3': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.0.2': + '@vitest/runner@2.0.3': dependencies: - '@vitest/utils': 2.0.2 + '@vitest/utils': 2.0.3 pathe: 1.1.2 - '@vitest/snapshot@2.0.2': + '@vitest/snapshot@2.0.3': dependencies: - '@vitest/pretty-format': 2.0.2 + '@vitest/pretty-format': 2.0.3 magic-string: 0.30.10 pathe: 1.1.2 - '@vitest/spy@2.0.2': + '@vitest/spy@2.0.3': dependencies: tinyspy: 3.0.0 - '@vitest/utils@2.0.2': + '@vitest/utils@2.0.3': dependencies: - '@vitest/pretty-format': 2.0.2 + '@vitest/pretty-format': 2.0.3 estree-walker: 3.0.3 loupe: 3.1.1 tinyrainbow: 1.2.0 @@ -7572,11 +7579,11 @@ snapshots: '@astrojs/markdown-remark': 5.1.1 '@astrojs/telemetry': 3.1.0 '@babel/core': 7.24.7 - '@babel/generator': 7.24.8 + '@babel/generator': 7.24.9 '@babel/parser': 7.24.8 '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.7) '@babel/traverse': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 acorn: 8.12.1 @@ -8662,11 +8669,11 @@ snapshots: regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-tailwindcss@3.17.4(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))): + eslint-plugin-tailwindcss@3.17.4(tailwindcss@3.4.5(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))): dependencies: fast-glob: 3.3.2 postcss: 8.4.39 - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) + tailwindcss: 3.4.5(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) eslint-plugin-toml@0.11.1(eslint@9.7.0): dependencies: @@ -8707,13 +8714,13 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 7.16.0(@typescript-eslint/parser@7.16.0(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3) - eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2)): + eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2)): dependencies: '@typescript-eslint/utils': 7.16.0(eslint@9.7.0)(typescript@5.5.3) eslint: 9.7.0 optionalDependencies: '@typescript-eslint/eslint-plugin': 7.16.0(@typescript-eslint/parser@7.16.0(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3) - vitest: 2.0.2(@types/node@20.14.10)(terser@5.31.2) + vitest: 2.0.3(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - supports-color - typescript @@ -9811,7 +9818,7 @@ snapshots: magicast@0.3.4: dependencies: '@babel/parser': 7.24.8 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 source-map-js: 1.2.0 make-dir@4.0.0: @@ -10824,17 +10831,12 @@ snapshots: postcss-nested@4.2.3: dependencies: postcss: 7.0.39 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.1 postcss-nested@6.0.1(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-selector-parser: 6.1.0 - - postcss-selector-parser@6.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 + postcss-selector-parser: 6.1.1 postcss-selector-parser@6.1.1: dependencies: @@ -10927,8 +10929,8 @@ snapshots: dependencies: commander: 8.3.0 glob: 7.2.3 - postcss: 8.4.38 - postcss-selector-parser: 6.1.0 + postcss: 8.4.39 + postcss-selector-parser: 6.1.1 queue-microtask@1.2.3: {} @@ -11519,7 +11521,7 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.6.3 - tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)): + tailwindcss@3.4.5(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -11540,7 +11542,7 @@ snapshots: postcss-js: 4.0.1(postcss@8.4.38) postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.1 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -11923,7 +11925,7 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/standalone': 7.22.10 - '@babel/types': 7.24.8 + '@babel/types': 7.24.9 defu: 6.1.4 jiti: 1.21.6 mri: 1.2.0 @@ -12004,7 +12006,7 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@2.0.2(@types/node@20.14.10)(terser@5.31.2): + vite-node@2.0.3(@types/node@20.14.10)(terser@5.31.2): dependencies: cac: 6.7.14 debug: 4.3.5 @@ -12046,15 +12048,15 @@ snapshots: optionalDependencies: vite: 5.3.3(@types/node@20.14.10)(terser@5.31.2) - vitest@2.0.2(@types/node@20.14.10)(terser@5.31.2): + vitest@2.0.3(@types/node@20.14.10)(terser@5.31.2): dependencies: '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.2 - '@vitest/pretty-format': 2.0.2 - '@vitest/runner': 2.0.2 - '@vitest/snapshot': 2.0.2 - '@vitest/spy': 2.0.2 - '@vitest/utils': 2.0.2 + '@vitest/expect': 2.0.3 + '@vitest/pretty-format': 2.0.3 + '@vitest/runner': 2.0.3 + '@vitest/snapshot': 2.0.3 + '@vitest/spy': 2.0.3 + '@vitest/utils': 2.0.3 chai: 5.1.1 debug: 4.3.5 execa: 8.0.1 @@ -12065,7 +12067,7 @@ snapshots: tinypool: 1.0.0 tinyrainbow: 1.2.0 vite: 5.3.3(@types/node@20.14.10)(terser@5.31.2) - vite-node: 2.0.2(@types/node@20.14.10)(terser@5.31.2) + vite-node: 2.0.3(@types/node@20.14.10)(terser@5.31.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.14.10