migrate-preflight.ts — tailwindcss Source File
Architecture documentation for migrate-preflight.ts, a typescript file in the tailwindcss codebase. 13 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR 4ccbfbad_b80c_422a_38fe_dc35ee118e8d["migrate-preflight.ts"] 245c850a_c551_a2cf_854e_bba95b5a1339["apply-config-to-theme.ts"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> 245c850a_c551_a2cf_854e_bba95b5a1339 ae20c4fb_29d7_ca79_3c49_ca02c45d5369["keyPathToCssProperty"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> ae20c4fb_29d7_ca79_3c49_ca02c45d5369 af1a6ece_0432_a556_fd63_8cb4a91f12ad["plugin-api.ts"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> af1a6ece_0432_a556_fd63_8cb4a91f12ad 7fd72d4c_e95c_d849_1002_1e1c9d8aca1a["design-system.ts"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> 7fd72d4c_e95c_d849_1002_1e1c9d8aca1a e3e0c6b9_7cc3_bd6c_ce01_14f8efdc5a0d["to-key-path.ts"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> e3e0c6b9_7cc3_bd6c_ce01_14f8efdc5a0d 1b250eae_0bea_d404_ca9e_42da26c56b45["toKeyPath"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> 1b250eae_0bea_d404_ca9e_42da26c56b45 1d3f1613_f144_938f_08f7_49039a46ad49["value-parser.ts"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> 1d3f1613_f144_938f_08f7_49039a46ad49 d1b39b63_c9d5_6c28_0206_0ddc8b895876["walk.ts"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> d1b39b63_c9d5_6c28_0206_0ddc8b895876 ed78da58_8727_ad98_120c_61f35cea357a["walk"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> ed78da58_8727_ad98_120c_61f35cea357a 7b34c369_d799_30f1_b751_6e3fd5349f6b["WalkAction"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> 7b34c369_d799_30f1_b751_6e3fd5349f6b fff09679_e13c_392d_23bb_cebc04ddb008["version.ts"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> fff09679_e13c_392d_23bb_cebc04ddb008 211db6bb_9759_d0cf_acda_36d7f5733ce2["dedent"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> 211db6bb_9759_d0cf_acda_36d7f5733ce2 ba54c7c3_7b1e_9984_bfef_a693a3df2d84["postcss"] 4ccbfbad_b80c_422a_38fe_dc35ee118e8d --> ba54c7c3_7b1e_9984_bfef_a693a3df2d84 48369d9b_74af_14f1_33c7_7d263509d02f["migrate-preflight.test.ts"] 48369d9b_74af_14f1_33c7_7d263509d02f --> 4ccbfbad_b80c_422a_38fe_dc35ee118e8d style 4ccbfbad_b80c_422a_38fe_dc35ee118e8d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import dedent from 'dedent'
import postcss, { type Plugin, type Root } from 'postcss'
import { keyPathToCssProperty } from '../../../../tailwindcss/src/compat/apply-config-to-theme'
import type { Config } from '../../../../tailwindcss/src/compat/plugin-api'
import type { DesignSystem } from '../../../../tailwindcss/src/design-system'
import { toKeyPath } from '../../../../tailwindcss/src/utils/to-key-path'
import * as ValueParser from '../../../../tailwindcss/src/value-parser'
import { walk, WalkAction } from '../../../../tailwindcss/src/walk'
import * as version from '../../utils/version'
// Defaults in v4
const DEFAULT_BORDER_COLOR = 'currentcolor'
const css = dedent
const BORDER_COLOR_COMPATIBILITY_CSS = css`
/*
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: theme(borderColor.DEFAULT);
}
}
`
export function migratePreflight({
designSystem,
userConfig,
}: {
designSystem: DesignSystem | null
userConfig?: Config | null
}): Plugin {
// @ts-expect-error
let defaultBorderColor = userConfig?.theme?.borderColor?.DEFAULT
function canResolveThemeValue(path: string) {
if (!designSystem) return false
let variable = `--${keyPathToCssProperty(toKeyPath(path))}` as const
return Boolean(designSystem.theme.get([variable]))
}
function migrate(root: Root) {
// CSS for backwards compatibility with v3 should only injected in v3
// projects and not v4 projects.
if (!version.isMajor(3)) return
let isTailwindRoot = false
root.walkAtRules('import', (node) => {
if (
/['"]tailwindcss['"]/.test(node.params) ||
/['"]tailwindcss\/preflight['"]/.test(node.params)
// ... (125 more lines)
Domain
Subdomains
Dependencies
Imported By
Source
Frequently Asked Questions
What does migrate-preflight.ts do?
migrate-preflight.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-preflight.ts?
migrate-preflight.ts defines 3 function(s): eventuallyUnquote, migratePreflight, substituteFunctionsInValue.
What does migrate-preflight.ts depend on?
migrate-preflight.ts imports 13 module(s): WalkAction, apply-config-to-theme.ts, dedent, design-system.ts, keyPathToCssProperty, plugin-api.ts, postcss, to-key-path.ts, and 5 more.
What files import migrate-preflight.ts?
migrate-preflight.ts is imported by 2 file(s): migrate-preflight.test.ts, migrate.ts.
Where is migrate-preflight.ts in the architecture?
migrate-preflight.ts is located at packages/@tailwindcss-upgrade/src/codemods/css/migrate-preflight.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