version.ts — tailwindcss Source File
Architecture documentation for version.ts, a typescript file in the tailwindcss codebase. 6 imports, 23 dependents.
Entity Profile
Dependency Diagram
graph LR 472e1b98_afcf_f1f2_ad91_916d742bb731["version.ts"] 28a2f72d_350c_6647_bf9d_77c69e637045["default-map.ts"] 472e1b98_afcf_f1f2_ad91_916d742bb731 --> 28a2f72d_350c_6647_bf9d_77c69e637045 cfb4af0e_7b2d_34a1_693a_90088443cfec["DefaultMap"] 472e1b98_afcf_f1f2_ad91_916d742bb731 --> cfb4af0e_7b2d_34a1_693a_90088443cfec db40ee65_f3fe_93a2_8502_7d805d2a1d6d["package-version.ts"] 472e1b98_afcf_f1f2_ad91_916d742bb731 --> db40ee65_f3fe_93a2_8502_7d805d2a1d6d de3714a2_211f_a4e9_f8b7_4a8dd2f45374["getPackageVersionSync"] 472e1b98_afcf_f1f2_ad91_916d742bb731 --> de3714a2_211f_a4e9_f8b7_4a8dd2f45374 69c3e246_0d60_1a3b_6419_4c423b01252f["node:child_process"] 472e1b98_afcf_f1f2_ad91_916d742bb731 --> 69c3e246_0d60_1a3b_6419_4c423b01252f 272c8bc4_0377_0dec_4ef7_a683aaf19ca3["semver"] 472e1b98_afcf_f1f2_ad91_916d742bb731 --> 272c8bc4_0377_0dec_4ef7_a683aaf19ca3 031a0782_4b19_e996_bb0e_a2f940729176["migrate-at-apply.test.ts"] 031a0782_4b19_e996_bb0e_a2f940729176 --> 472e1b98_afcf_f1f2_ad91_916d742bb731 2cb5ef1d_43c0_4377_fe5a_941d800f83c7["migrate-at-layer-utilities.test.ts"] 2cb5ef1d_43c0_4377_fe5a_941d800f83c7 --> 472e1b98_afcf_f1f2_ad91_916d742bb731 7de2c7a6_0dcf_0fb9_b7dd_c51f75983852["migrate-at-layer-utilities.ts"] 7de2c7a6_0dcf_0fb9_b7dd_c51f75983852 --> 472e1b98_afcf_f1f2_ad91_916d742bb731 45ec79c2_d411_4cc2_0b36_0b2e19cf72e6["migrate-preflight.test.ts"] 45ec79c2_d411_4cc2_0b36_0b2e19cf72e6 --> 472e1b98_afcf_f1f2_ad91_916d742bb731 f67a6019_88a0_ffd1_f91c_1a51645f6931["migrate-preflight.ts"] f67a6019_88a0_ffd1_f91c_1a51645f6931 --> 472e1b98_afcf_f1f2_ad91_916d742bb731 2b51b682_0d56_1a02_6f48_58a0c0a24159["is-safe-migration.test.ts"] 2b51b682_0d56_1a02_6f48_58a0c0a24159 --> 472e1b98_afcf_f1f2_ad91_916d742bb731 d5e14c3d_f7c4_162e_96e8_83915119d547["is-safe-migration.ts"] d5e14c3d_f7c4_162e_96e8_83915119d547 --> 472e1b98_afcf_f1f2_ad91_916d742bb731 eb383a06_7f86_e9c5_3adf_f49fd1939047["migrate-camelcase-in-named-value.test.ts"] eb383a06_7f86_e9c5_3adf_f49fd1939047 --> 472e1b98_afcf_f1f2_ad91_916d742bb731 style 472e1b98_afcf_f1f2_ad91_916d742bb731 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { execSync } from 'node:child_process'
import semver from 'semver'
import { DefaultMap } from '../../../tailwindcss/src/utils/default-map'
import { getPackageVersionSync } from './package-version'
/**
* Must be of major version.
*
* E.g.: `isMajor(3)`
*/
export function isMajor(version: number) {
return semver.satisfies(installedTailwindVersion(), `>=${version}.0.0 <${version + 1}.0.0`)
}
/**
* Must be of greater than the current major version including minor and patch.
*
* E.g.: `isGreaterThan(3)`
*/
export function isGreaterThan(version: number) {
return semver.gte(installedTailwindVersion(), `${version + 1}.0.0`)
}
let cache = new DefaultMap((base) => {
let tailwindVersion = getPackageVersionSync('tailwindcss', base)
if (!tailwindVersion) throw new Error('Tailwind CSS is not installed')
return tailwindVersion
})
export function installedTailwindVersion(base = process.cwd()): string {
return cache.get(base)
}
let expectedCache = new DefaultMap((base) => {
try {
// This will report a problem if the package.json/package-lock.json
// mismatches with the installed version in node_modules.
//
// Also tested this with Bun and PNPM, both seem to work fine.
execSync('npm ls tailwindcss --json', { cwd: base, stdio: 'pipe' })
return installedTailwindVersion(base)
} catch (_e) {
try {
let e = _e as { stdout: Buffer }
let data = JSON.parse(e.stdout.toString())
return (
// Could be a sub-dependency issue, but we are only interested in
// the top-level version mismatch.
/"(.*?)" from the root project/.exec(data.dependencies.tailwindcss.invalid)?.[1] ??
// Fallback to the installed version
installedTailwindVersion(base)
)
} catch {
// We don't know how to verify, so let's just return the installed
// version to not block the user.
return installedTailwindVersion(base)
}
}
})
export function expectedTailwindVersion(base = process.cwd()): string {
return expectedCache.get(base)
}
Domain
Subdomains
Functions
Dependencies
- DefaultMap
- default-map.ts
- getPackageVersionSync
- node:child_process
- package-version.ts
- semver
Imported By
- packages/@tailwindcss-upgrade/src/index.test.ts
- packages/@tailwindcss-upgrade/src/index.ts
- packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-apply.test.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-layer-utilities.test.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-layer-utilities.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-camelcase-in-named-value.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-camelcase-in-named-value.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-canonicalize-candidate.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-handle-empty-arbitrary-values.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-modernize-arbitrary-values.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-prefix.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-prefix.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-preflight.test.ts
- packages/@tailwindcss-upgrade/src/codemods/css/migrate-preflight.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-simple-legacy-classes.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-simple-legacy-classes.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-variant-order.test.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate-variant-order.ts
- packages/@tailwindcss-upgrade/src/codemods/template/migrate.test.ts
Source
Frequently Asked Questions
What does version.ts do?
version.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the CommandLineInterface domain, Renderer subdomain.
What functions are defined in version.ts?
version.ts defines 6 function(s): cache, expectedCache, expectedTailwindVersion, installedTailwindVersion, isGreaterThan, isMajor.
What does version.ts depend on?
version.ts imports 6 module(s): DefaultMap, default-map.ts, getPackageVersionSync, node:child_process, package-version.ts, semver.
What files import version.ts?
version.ts is imported by 23 file(s): index.test.ts, index.ts, is-safe-migration.test.ts, is-safe-migration.ts, migrate-at-apply.test.ts, migrate-at-layer-utilities.test.ts, migrate-at-layer-utilities.ts, migrate-camelcase-in-named-value.test.ts, and 15 more.
Where is version.ts in the architecture?
version.ts is located at packages/@tailwindcss-upgrade/src/utils/version.ts (domain: CommandLineInterface, subdomain: Renderer, directory: packages/@tailwindcss-upgrade/src/utils).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free