Home / File/ migrate-preflight.ts — tailwindcss Source File

migrate-preflight.ts — tailwindcss Source File

Architecture documentation for migrate-preflight.ts, a typescript file in the tailwindcss codebase. 13 imports, 2 dependents.

File typescript UpgradeToolkit Codemods 13 imports 2 dependents 3 functions

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)

Subdomains

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