Skip to content

Conversation

@srobinson
Copy link
Member

  • fix: migrate to @eslint/css-tree to support CSS variables (var())

    • Replace css-tree with @eslint/css-tree v3.6.6
    • Add var() detection to skip validation for CSS custom properties
    • Update all imports across 8 files
    • Fix TypeScript types for walk() callbacks
    • Remove @types/css-tree dependency

    Resolves issue where properties containing var() would report validation
    errors even though expansion was successful. CSS variables are runtime
    values that cannot be validated at parse time.

  • docs: update bundle sizes and dependencies in README

    • Update bundle size: ~68KB (ESM), ~73KB (CJS) minified + brotli
    • Remove css-tree from installation (now bundled dependency)
    • Update test count: 973 tests
    • Update acknowledgments to @eslint/css-tree
    • Add accurate performance metrics
  • docs: update comment to reference @eslint/css-tree

  • docs: link to b_values fork in acknowledgments

  • docs: add separate acknowledgment for b_values

    • Keep @eslint/css-tree link to upstream repo
    • Add b_values link for CSS value expansion/validation work

- Replace css-tree with @eslint/css-tree v3.6.6
- Add var() detection to skip validation for CSS custom properties
- Update all imports across 8 files
- Fix TypeScript types for walk() callbacks
- Remove @types/css-tree dependency

Resolves issue where properties containing var() would report validation
errors even though expansion was successful. CSS variables are runtime
values that cannot be validated at parse time.
- Update bundle size: ~68KB (ESM), ~73KB (CJS) minified + brotli
- Remove css-tree from installation (now bundled dependency)
- Update test count: 973 tests
- Update acknowledgments to @eslint/css-tree
- Add accurate performance metrics
- Keep @eslint/css-tree link to upstream repo
- Add b_values link for CSS value expansion/validation work
Copilot AI review requested due to automatic review settings November 11, 2025 12:18
@srobinson srobinson closed this Nov 11, 2025
@srobinson srobinson deleted the develop branch November 11, 2025 12:19
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR migrates the CSS parsing dependency from css-tree to @eslint/css-tree and adds support for CSS variables (var() functions) which cannot be validated at parse time.

Key Changes

  • Replaced css-tree with @eslint/css-tree v3.6.6 across all source files
  • Added containsVar() function to detect and skip validation of properties containing CSS variables
  • Updated TypeScript types for walk() callbacks from csstree.Value to csstree.CssNode with type guards
  • Changed package dependency from peer to bundled, updated README installation instructions accordingly

Reviewed Changes

Copilot reviewed 11 out of 12 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/internal/layer-parser-utils.ts Updated import and walk callback types with type guard
src/internal/is-value-node.ts Updated type import to @eslint/css-tree
src/handlers/transition/transition-layers.ts Updated import and walk callback types with type guard
src/handlers/mask/mask-layers.ts Updated import and walk callback types with type guard
src/handlers/grid/expand.ts Updated import and walk callback types with type guard
src/handlers/background/background-layers.ts Updated import and walk callback types with type guard
src/handlers/animation/animation-layers.ts Updated import and walk callback types with type guard
src/core/validate.ts Updated import, added containsVar() function and validation skip logic
pnpm-lock.yaml Updated dependencies from css-tree@3.1.0 to @eslint/css-tree@3.6.6 with mdn-data@2.23.0
package.json Changed css-tree from peerDependency to bundled dependency @eslint/css-tree
docs.llm/llm_src.txt Updated imports across all code sections (with one comment needing correction)
README.md Updated bundle sizes, installation instructions, test counts, and acknowledgments
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


/**
* Checks if a CSS value node contains var() function.
* CSS variables cannot be validated by css-tree as they are runtime values.
Copy link

Copilot AI Nov 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment still references "css-tree library" but should be updated to "@eslint/css-tree" to match the migration.

Suggested change
* CSS variables cannot be validated by css-tree as they are runtime values.
* CSS variables cannot be validated by @eslint/css-tree as they are runtime values.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants