Home / File/ migrate.ts — tailwindcss Source File

migrate.ts — tailwindcss Source File

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

File typescript CommandLineInterface Codemods 39 imports 4 dependents 5 functions

Entity Profile

Dependency Diagram

graph LR
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4["migrate.ts"]
  f6c14bbb_2e42_58cc_18f1_c89a243da9c0["canonicalize-candidates.ts"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> f6c14bbb_2e42_58cc_18f1_c89a243da9c0
  4dc6b705_787e_a2cd_e871_d6f226448e19["createSignatureOptions"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> 4dc6b705_787e_a2cd_e871_d6f226448e19
  26169039_1fd2_e320_1f63_11ec10a6fc52["prepareDesignSystemStorage"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> 26169039_1fd2_e320_1f63_11ec10a6fc52
  da5d1116_ab2a_437a_6b13_c1429fd546fa["plugin-api.ts"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> da5d1116_ab2a_437a_6b13_c1429fd546fa
  0255ffc0_a3d5_e883_5143_99660766448f["Config"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> 0255ffc0_a3d5_e883_5143_99660766448f
  bdedd2f6_da4b_69dc_e990_0814b59fbe6e["design-system.ts"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> bdedd2f6_da4b_69dc_e990_0814b59fbe6e
  665aa4ed_d86e_30e5_80d5_cd56b8ca8b62["DesignSystem"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> 665aa4ed_d86e_30e5_80d5_cd56b8ca8b62
  28a2f72d_350c_6647_bf9d_77c69e637045["default-map.ts"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> 28a2f72d_350c_6647_bf9d_77c69e637045
  cfb4af0e_7b2d_34a1_693a_90088443cfec["DefaultMap"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> cfb4af0e_7b2d_34a1_693a_90088443cfec
  53e05093_45c6_ed5a_9c90_dcc94281fddf["splice-changes-into-string.ts"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> 53e05093_45c6_ed5a_9c90_dcc94281fddf
  e861d3a6_b533_683d_56f9_f09ab6c0d58e["spliceChangesIntoString"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> e861d3a6_b533_683d_56f9_f09ab6c0d58e
  530db924_e458_e8b2_fde4_45f3e78b4424["candidates.ts"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> 530db924_e458_e8b2_fde4_45f3e78b4424
  8b1ca68c_6690_d65e_cc71_429e9efe9dc5["extractRawCandidates"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> 8b1ca68c_6690_d65e_cc71_429e9efe9dc5
  d5e14c3d_f7c4_162e_96e8_83915119d547["is-safe-migration.ts"]
  e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 --> d5e14c3d_f7c4_162e_96e8_83915119d547
  style e39bed3f_bfbf_a8c6_90a0_aa2ce3be1ef4 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 CommandLineInterface 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 39 module(s): Config, DefaultMap, DesignSystem, candidates.ts, canonicalize-candidates.ts, createSignatureOptions, default-map.ts, design-system.ts, and 31 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: CommandLineInterface, 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