migrate-automatic-var-injection.ts — tailwindcss Source File
Architecture documentation for migrate-automatic-var-injection.ts, a typescript file in the tailwindcss codebase. 9 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR d475bcf1_b109_d714_cc32_55d5655282ec["migrate-automatic-var-injection.ts"] 669e6a28_c71f_3c5e_9c53_915cede7da78["candidate.ts"] d475bcf1_b109_d714_cc32_55d5655282ec --> 669e6a28_c71f_3c5e_9c53_915cede7da78 f29ee016_da0a_a564_1658_fedaaac680b6["cloneCandidate"] d475bcf1_b109_d714_cc32_55d5655282ec --> f29ee016_da0a_a564_1658_fedaaac680b6 af1a6ece_0432_a556_fd63_8cb4a91f12ad["plugin-api.ts"] d475bcf1_b109_d714_cc32_55d5655282ec --> af1a6ece_0432_a556_fd63_8cb4a91f12ad 7fd72d4c_e95c_d849_1002_1e1c9d8aca1a["design-system.ts"] d475bcf1_b109_d714_cc32_55d5655282ec --> 7fd72d4c_e95c_d849_1002_1e1c9d8aca1a 85d6ae08_36c8_19d7_3202_a198cb21ed1e["types.ts"] d475bcf1_b109_d714_cc32_55d5655282ec --> 85d6ae08_36c8_19d7_3202_a198cb21ed1e 1d3f1613_f144_938f_08f7_49039a46ad49["value-parser.ts"] d475bcf1_b109_d714_cc32_55d5655282ec --> 1d3f1613_f144_938f_08f7_49039a46ad49 d1b39b63_c9d5_6c28_0206_0ddc8b895876["walk.ts"] d475bcf1_b109_d714_cc32_55d5655282ec --> d1b39b63_c9d5_6c28_0206_0ddc8b895876 ed78da58_8727_ad98_120c_61f35cea357a["walk"] d475bcf1_b109_d714_cc32_55d5655282ec --> ed78da58_8727_ad98_120c_61f35cea357a 7b34c369_d799_30f1_b751_6e3fd5349f6b["WalkAction"] d475bcf1_b109_d714_cc32_55d5655282ec --> 7b34c369_d799_30f1_b751_6e3fd5349f6b 8a408602_eeed_cb31_ce6b_b112c205dc45["migrate-automatic-var-injection.test.ts"] 8a408602_eeed_cb31_ce6b_b112c205dc45 --> d475bcf1_b109_d714_cc32_55d5655282ec 75ba60a9_2614_1c57_ad40_3663d4315f3b["migrate.ts"] 75ba60a9_2614_1c57_ad40_3663d4315f3b --> d475bcf1_b109_d714_cc32_55d5655282ec style d475bcf1_b109_d714_cc32_55d5655282ec fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { cloneCandidate, type Candidate, type Variant } from '../../../../tailwindcss/src/candidate'
import type { Config } from '../../../../tailwindcss/src/compat/plugin-api'
import type { DesignSystem } from '../../../../tailwindcss/src/design-system'
import type { Writable } from '../../../../tailwindcss/src/types'
import * as ValueParser from '../../../../tailwindcss/src/value-parser'
import { walk, WalkAction } from '../../../../tailwindcss/src/walk'
export function migrateAutomaticVarInjection(
designSystem: DesignSystem,
_userConfig: Config | null,
rawCandidate: string,
): string {
for (let readonlyCandidate of designSystem.parseCandidate(rawCandidate)) {
// The below logic makes extended use of mutation. Since candidates in the
// DesignSystem are cached, we can't mutate them directly.
let candidate = cloneCandidate(readonlyCandidate) as Writable<Candidate>
let didChange = false
// Add `var(…)` in modifier position, e.g.:
//
// `bg-red-500/[--my-opacity]` => `bg-red-500/[var(--my-opacity)]`
if (
'modifier' in candidate &&
candidate.modifier?.kind === 'arbitrary' &&
!isAutomaticVarInjectionException(designSystem, candidate, candidate.modifier.value)
) {
let { value, didChange: modifierDidChange } = injectVar(candidate.modifier.value)
candidate.modifier.value = value
didChange ||= modifierDidChange
}
// Add `var(…)` to all variants, e.g.:
//
// `supports-[--test]:flex'` => `supports-[var(--test)]:flex`
for (let variant of candidate.variants) {
let didChangeVariant = injectVarIntoVariant(designSystem, variant)
if (didChangeVariant) {
didChange = true
}
}
// Add `var(…)` to arbitrary candidates, e.g.:
//
// `[color:--my-color]` => `[color:var(--my-color)]`
if (
candidate.kind === 'arbitrary' &&
!isAutomaticVarInjectionException(designSystem, candidate, candidate.value)
) {
let { value, didChange: valueDidChange } = injectVar(candidate.value)
candidate.value = value
didChange ||= valueDidChange
}
// Add `var(…)` to arbitrary values for functional candidates, e.g.:
//
// `bg-[--my-color]` => `bg-[var(--my-color)]`
if (
candidate.kind === 'functional' &&
candidate.value &&
// ... (121 more lines)
Domain
Subdomains
Functions
Dependencies
Imported By
Source
Frequently Asked Questions
What does migrate-automatic-var-injection.ts do?
migrate-automatic-var-injection.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-automatic-var-injection.ts?
migrate-automatic-var-injection.ts defines 5 function(s): createEmptyCandidate, injectVar, injectVarIntoVariant, isAutomaticVarInjectionException, migrateAutomaticVarInjection.
What does migrate-automatic-var-injection.ts depend on?
migrate-automatic-var-injection.ts imports 9 module(s): WalkAction, candidate.ts, cloneCandidate, design-system.ts, plugin-api.ts, types.ts, value-parser.ts, walk, and 1 more.
What files import migrate-automatic-var-injection.ts?
migrate-automatic-var-injection.ts is imported by 2 file(s): migrate-automatic-var-injection.test.ts, migrate.ts.
Where is migrate-automatic-var-injection.ts in the architecture?
migrate-automatic-var-injection.ts is located at packages/@tailwindcss-upgrade/src/codemods/template/migrate-automatic-var-injection.ts (domain: UpgradeToolkit, subdomain: Codemods, directory: packages/@tailwindcss-upgrade/src/codemods/template).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free