migrate-at-layer-utilities.ts — tailwindcss Source File
Architecture documentation for migrate-at-layer-utilities.ts, a typescript file in the tailwindcss codebase. 11 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR 9e4e8a58_fb9b_d663_2880_954972aac787["migrate-at-layer-utilities.ts"] ef204000_8998_5a6c_5455_324b37624713["segment.ts"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> ef204000_8998_5a6c_5455_324b37624713 f712ed47_45d4_4e5a_dd73_fdefa1da71da["segment"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> f712ed47_45d4_4e5a_dd73_fdefa1da71da 41fd12a7_15c2_7d83_2e55_c5b9a8faf9b1["stylesheet.ts"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> 41fd12a7_15c2_7d83_2e55_c5b9a8faf9b1 c890fa7b_6e17_4e5d_74bf_b797d0f757b8["Stylesheet"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> c890fa7b_6e17_4e5d_74bf_b797d0f757b8 fff09679_e13c_392d_23bb_cebc04ddb008["version.ts"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> fff09679_e13c_392d_23bb_cebc04ddb008 200c8408_4d17_9364_423b_0ce2d40b1e09["walk.ts"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> 200c8408_4d17_9364_423b_0ce2d40b1e09 fb009bc2_68d9_5c0f_7fa7_fa364488e50a["walk"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> fb009bc2_68d9_5c0f_7fa7_fa364488e50a 5abba2e8_591c_8b93_1630_783a6907b808["WalkAction"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> 5abba2e8_591c_8b93_1630_783a6907b808 774029e2_692b_80c6_2613_ddc30ce9f146["walkDepth"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> 774029e2_692b_80c6_2613_ddc30ce9f146 ba54c7c3_7b1e_9984_bfef_a693a3df2d84["postcss"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> ba54c7c3_7b1e_9984_bfef_a693a3df2d84 b3ea5db5_86f5_16e3_3d86_d5e3d2610c6b["postcss-selector-parser"] 9e4e8a58_fb9b_d663_2880_954972aac787 --> b3ea5db5_86f5_16e3_3d86_d5e3d2610c6b bf639994_959a_cded_6f3a_163595545a18["migrate-at-layer-utilities.test.ts"] bf639994_959a_cded_6f3a_163595545a18 --> 9e4e8a58_fb9b_d663_2880_954972aac787 67f80607_3a88_f275_79a1_b9557100d939["migrate.ts"] 67f80607_3a88_f275_79a1_b9557100d939 --> 9e4e8a58_fb9b_d663_2880_954972aac787 style 9e4e8a58_fb9b_d663_2880_954972aac787 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { type AtRule, type Comment, type Plugin, type Rule } from 'postcss'
import SelectorParser from 'postcss-selector-parser'
import { segment } from '../../../../tailwindcss/src/utils/segment'
import { Stylesheet } from '../../stylesheet'
import * as version from '../../utils/version'
import { walk, WalkAction, walkDepth } from '../../utils/walk'
export function migrateAtLayerUtilities(stylesheet: Stylesheet): Plugin {
function migrate(atRule: AtRule) {
// Migrating `@layer utilities` to `@utility` is only supported in Tailwind
// CSS v3 projects. Tailwind CSS v4 projects could also have `@layer
// utilities` but those aren't actual utilities.
if (!version.isMajor(3)) return
// Only migrate `@layer utilities` and `@layer components`.
if (atRule.params !== 'utilities' && atRule.params !== 'components') return
// Keep rules that should not be turned into utilities as is. This will
// include rules with element or ID selectors.
let defaultsAtRule = atRule.clone()
// Clone each rule with multiple selectors into their own rule with a single
// selector.
walk(atRule, (node) => {
if (node.type !== 'rule') return
// Clone the node for each selector
let selectors = segment(node.selector, ',')
if (selectors.length > 1) {
let clonedNodes: Rule[] = []
for (let selector of selectors) {
let clone = node.clone({ selector })
clonedNodes.push(clone)
}
node.replaceWith(clonedNodes)
}
return WalkAction.Skip
})
// Track all the classes that we want to create an `@utility` for.
let classes = new Set<string>()
walk(atRule, (node) => {
if (node.type !== 'rule') return
// Find all the classes in the selector
SelectorParser((selectors) => {
selectors.each((selector) => {
walk(selector, (selectorNode) => {
// Ignore everything in `:not(…)`
if (selectorNode.type === 'pseudo' && selectorNode.value === ':not') {
return WalkAction.Skip
}
if (selectorNode.type === 'class') {
classes.add(selectorNode.value)
}
})
})
// ... (259 more lines)
Domain
Subdomains
Functions
Types
Dependencies
- Stylesheet
- WalkAction
- postcss
- postcss-selector-parser
- segment
- segment.ts
- stylesheet.ts
- version.ts
- walk
- walk.ts
- walkDepth
Imported By
Source
Frequently Asked Questions
What does migrate-at-layer-utilities.ts do?
migrate-at-layer-utilities.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the UpgradeToolkit domain, Codemods subdomain.
What functions are defined in migrate-at-layer-utilities.ts?
migrate-at-layer-utilities.ts defines 1 function(s): migrateAtLayerUtilities.
What does migrate-at-layer-utilities.ts depend on?
migrate-at-layer-utilities.ts imports 11 module(s): Stylesheet, WalkAction, postcss, postcss-selector-parser, segment, segment.ts, stylesheet.ts, version.ts, and 3 more.
What files import migrate-at-layer-utilities.ts?
migrate-at-layer-utilities.ts is imported by 2 file(s): migrate-at-layer-utilities.test.ts, migrate.ts.
Where is migrate-at-layer-utilities.ts in the architecture?
migrate-at-layer-utilities.ts is located at packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-layer-utilities.ts (domain: UpgradeToolkit, subdomain: Codemods, directory: packages/@tailwindcss-upgrade/src/codemods/css).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free