Home / File/ migrate.ts — tailwindcss Source File

migrate.ts — tailwindcss Source File

Architecture documentation for migrate.ts, a typescript file in the tailwindcss codebase. 37 imports, 4 dependents.

File typescript UpgradeToolkit Codemods 37 imports 4 dependents 5 functions

Entity Profile

Dependency Diagram

graph LR
  75ba60a9_2614_1c57_ad40_3663d4315f3b["migrate.ts"]
  7d350d81_5de1_f9f3_5b2c_19ec8fd3c37e["canonicalize-candidates.ts"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> 7d350d81_5de1_f9f3_5b2c_19ec8fd3c37e
  d8e28189_3751_77bd_c810_1cd9c626b480["createSignatureOptions"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> d8e28189_3751_77bd_c810_1cd9c626b480
  81ec8f98_1fb2_d7c3_dd65_3a9e51b3be39["prepareDesignSystemStorage"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> 81ec8f98_1fb2_d7c3_dd65_3a9e51b3be39
  af1a6ece_0432_a556_fd63_8cb4a91f12ad["plugin-api.ts"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> af1a6ece_0432_a556_fd63_8cb4a91f12ad
  7fd72d4c_e95c_d849_1002_1e1c9d8aca1a["design-system.ts"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> 7fd72d4c_e95c_d849_1002_1e1c9d8aca1a
  c056448b_f7a2_9149_54e8_f0f8470fe3aa["default-map.ts"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> c056448b_f7a2_9149_54e8_f0f8470fe3aa
  bf2992f6_4a37_8536_70f8_94b13631027d["DefaultMap"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> bf2992f6_4a37_8536_70f8_94b13631027d
  d8b3b0ab_e770_e110_7520_a6fdabeda83a["splice-changes-into-string.ts"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> d8b3b0ab_e770_e110_7520_a6fdabeda83a
  0ad23c56_9291_b80b_7e43_b919fbc7087f["spliceChangesIntoString"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> 0ad23c56_9291_b80b_7e43_b919fbc7087f
  6818f003_fa74_ca6e_8dd1_99a7154be5c9["candidates.ts"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> 6818f003_fa74_ca6e_8dd1_99a7154be5c9
  f2c36345_eddf_1720_9a42_e1a49f2c7132["extractRawCandidates"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> f2c36345_eddf_1720_9a42_e1a49f2c7132
  0e3e8c5a_e3ef_6c0d_8a31_e358e2206f79["is-safe-migration.ts"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> 0e3e8c5a_e3ef_6c0d_8a31_e358e2206f79
  aa2e93eb_f211_d616_3736_f2a6e60dfa72["isSafeMigration"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> aa2e93eb_f211_d616_3736_f2a6e60dfa72
  d475bcf1_b109_d714_cc32_55d5655282ec["migrate-automatic-var-injection.ts"]
  75ba60a9_2614_1c57_ad40_3663d4315f3b --> d475bcf1_b109_d714_cc32_55d5655282ec
  style 75ba60a9_2614_1c57_ad40_3663d4315f3b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import fs from 'node:fs/promises'
import path, { extname } from 'node:path'
import {
  createSignatureOptions,
  prepareDesignSystemStorage,
  UTILITY_SIGNATURE_KEY,
} from '../../../../tailwindcss/src/canonicalize-candidates'
import type { Config } from '../../../../tailwindcss/src/compat/plugin-api'
import type { DesignSystem } from '../../../../tailwindcss/src/design-system'
import { DefaultMap } from '../../../../tailwindcss/src/utils/default-map'
import { spliceChangesIntoString, type StringChange } from '../../utils/splice-changes-into-string'
import { extractRawCandidates } from './candidates'
import { isSafeMigration } from './is-safe-migration'
import { migrateAutomaticVarInjection } from './migrate-automatic-var-injection'
import { migrateCamelcaseInNamedValue } from './migrate-camelcase-in-named-value'
import { migrateCanonicalizeCandidate } from './migrate-canonicalize-candidate'
import { migrateEmptyArbitraryValues } from './migrate-handle-empty-arbitrary-values'
import { migrateLegacyArbitraryValues } from './migrate-legacy-arbitrary-values'
import { migrateLegacyClasses } from './migrate-legacy-classes'
import { migrateMaxWidthScreen } from './migrate-max-width-screen'
import { migrateModernizeArbitraryValues } from './migrate-modernize-arbitrary-values'
import { migratePrefix } from './migrate-prefix'
import { migrateSimpleLegacyClasses } from './migrate-simple-legacy-classes'
import { migrateVariantOrder } from './migrate-variant-order'

export type Migration = (
  designSystem: DesignSystem,
  userConfig: Config | null,
  rawCandidate: string,
) => string | Promise<string>

export const DEFAULT_MIGRATIONS: Migration[] = [
  migrateEmptyArbitraryValues,
  migratePrefix,
  migrateCanonicalizeCandidate,
  migrateSimpleLegacyClasses,
  migrateCamelcaseInNamedValue,
  migrateLegacyClasses,
  migrateMaxWidthScreen,
  migrateVariantOrder, // Has to happen before migrations that modify variants
  migrateAutomaticVarInjection,
  migrateLegacyArbitraryValues,
  migrateModernizeArbitraryValues,
]

let migrateCached = new DefaultMap((baseDesignSystem: DesignSystem) => {
  let designSystem = prepareDesignSystemStorage(baseDesignSystem)
  let options = createSignatureOptions(designSystem)

  return new DefaultMap((userConfig: Config | null) => {
    return new DefaultMap(async (rawCandidate) => {
      let original = rawCandidate

      for (let migration of DEFAULT_MIGRATIONS) {
        rawCandidate = await migration(designSystem, userConfig, rawCandidate)
      }

      // Canonicalize the final migrated candidate to its final form
      rawCandidate = designSystem.canonicalizeCandidates([rawCandidate]).pop()!

// ... (71 more lines)

Subdomains

Types

Frequently Asked Questions

What does migrate.ts do?
migrate.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.ts?
migrate.ts defines 5 function(s): designSystem, migrate, migrateCached, migrateCandidate, migrateContents.
What does migrate.ts depend on?
migrate.ts imports 37 module(s): DefaultMap, candidates.ts, canonicalize-candidates.ts, createSignatureOptions, default-map.ts, design-system.ts, extractRawCandidates, is-safe-migration.ts, and 29 more.
What files import migrate.ts?
migrate.ts is imported by 4 file(s): index.ts, is-safe-migration.test.ts, migrate-at-apply.ts, migrate.test.ts.
Where is migrate.ts in the architecture?
migrate.ts is located at packages/@tailwindcss-upgrade/src/codemods/template/migrate.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