Skip to content

Commit 3e1c464

Browse files
committed
feat(tailwindcss-patch): tighten public option types
1 parent 87f04e9 commit 3e1c464

40 files changed

+850
-159
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"tailwindcss-patch": minor
3+
"@tailwindcss-mangle/config": minor
4+
---
5+
6+
Remove legacy public option type aliases from the v9 alpha line and keep only the modern option names such as `TailwindCssPatchOptions`, `TailwindCssOptions`, `TailwindV2V3Options`, and `TailwindV4Options`.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"build": "turbo run build --filter=./packages/*",
1212
"dev": "pnpm -r run dev",
1313
"test": "turbo run test --filter=./packages/*",
14+
"test:types": "turbo run test:types --filter=./packages/*",
1415
"check:boundaries": "node scripts/check-package-boundaries.mjs",
1516
"test:e2e": "pnpm run test:e2e:apps",
1617
"test:e2e:apps": "TWM_APPS_E2E=1 vitest run --config e2e/vitest.config.ts e2e/apps.e2e.test.ts",
@@ -113,6 +114,7 @@
113114
"tailwindcss": "catalog:tailwindcss3",
114115
"tailwindcss-patch": "workspace:*",
115116
"tailwindcss2": "catalog:tailwindcss2",
117+
"tsd": "^0.33.0",
116118
"tsdown": "^0.21.2",
117119
"tslib": "^2.8.1",
118120
"tsup": "^8.5.1",

packages/config/src/types.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ export interface TransformerOptions {
4646
preserve?: TransformerPreserveOptions
4747
}
4848

49-
export interface TailwindLocatorOptions {
49+
export interface TailwindV2V3Options {
5050
cwd?: string
5151
config?: string
5252
}
5353

54-
export interface TailwindNextOptions {
54+
export interface TailwindV4Options {
5555
sources?: SourceEntry[]
5656
base?: string
5757
css?: string
@@ -94,20 +94,20 @@ export interface RegistryCacheOptions {
9494
driver?: 'file' | 'memory' | 'noop'
9595
}
9696

97-
export interface TailwindTargetOptions {
97+
export interface TailwindCssOptions {
9898
version?: 2 | 3 | 4
9999
packageName?: string
100100
resolve?: PackageResolvingOptions
101-
v2?: TailwindLocatorOptions
102-
v3?: TailwindLocatorOptions
103-
v4?: TailwindNextOptions
101+
v2?: TailwindV2V3Options
102+
v3?: TailwindV2V3Options
103+
v4?: TailwindV4Options
104104
cwd?: string
105105
config?: string
106106
}
107107

108108
export interface RegistryOptions {
109109
projectRoot?: string
110-
tailwindcss?: TailwindTargetOptions
110+
tailwindcss?: TailwindCssOptions
111111
apply?: RegistryApplyOptions
112112
extract?: RegistryExtractOptions
113113
cache?: RegistryCacheOptions

packages/config/test/defaults.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { omit } from 'lodash-es'
33
import { getDefaultRegistryConfig, getDefaultTransformerConfig, getDefaultUserConfig } from '@/defaults'
44

55
function omitCwdPath(o: any) {
6-
return omit(o, ['registry.tailwind.cwd'])
6+
return omit(o, ['registry.tailwindcss.cwd'])
77
}
88

99
function normaliseRegex(value: any): any {

packages/tailwindcss-patch/MIGRATION.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,33 @@ const patcher = new TailwindcssPatcher({
6969

7070
Legacy constructor aliases are no longer accepted in v9.
7171

72+
### Type names
73+
74+
The alpha line now only exposes the modern public option type names. Historical aliases were removed instead of being kept with `@deprecated`.
75+
76+
Use these names in user code:
77+
78+
- `TailwindCssPatchOptions`
79+
- `TailwindCssOptions`
80+
- `TailwindV2V3Options`
81+
- `TailwindV4Options`
82+
- `ApplyOptions`
83+
- `ExtractOptions`
84+
- `CacheOptions`
85+
- `ExposeContextOptions`
86+
- `ExtendLengthUnitsOptions`
87+
- `NormalizedTailwindCssPatchOptions`
88+
89+
Removed type names:
90+
91+
- `TailwindcssPatchOptions`
92+
- `NormalizedTailwindcssPatchOptions`
93+
- `TailwindLocatorOptions`
94+
- `TailwindNextOptions`
95+
- `TailwindTargetOptions`
96+
97+
If your code imported the removed names, switch imports to the modern names before adopting the current alpha builds.
98+
7299
Migration mapping:
73100

74101
- `cwd` -> `projectRoot`

packages/tailwindcss-patch/README-cn.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,25 @@ pnpm dlx tw-patch validate --report-file .tw-patch/migrate-report.json --json
6060

6161
CLI 会通过 `@tailwindcss-mangle/config` 加载 `tailwindcss-patch.config.ts`。v9 仅接受现代 `registry` 结构;如果项目里仍有旧字段,请先执行 `tw-patch migrate`,详情见 [迁移指南](./MIGRATION.md)
6262

63+
### 公开类型名
64+
65+
当前 alpha 只导出新的 options 类型名:
66+
67+
```ts
68+
import type {
69+
ApplyOptions,
70+
CacheOptions,
71+
ExtractOptions,
72+
TailwindCssOptions,
73+
TailwindCssPatchOptions,
74+
TailwindV2V3Options,
75+
TailwindV4Options,
76+
NormalizedTailwindCssPatchOptions,
77+
} from 'tailwindcss-patch'
78+
```
79+
80+
`TailwindcssPatchOptions``TailwindLocatorOptions``TailwindTargetOptions` 这样的旧别名已经不再导出。
81+
6382
### v9 升级步骤
6483

6584
1. 先执行 `pnpm dlx tw-patch migrate --dry-run`,确认有哪些配置需要改写。

packages/tailwindcss-patch/README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,25 @@ Skip `next()` to fully replace a command (e.g. custom `init` or cache clearing b
117117

118118
The CLI loads `tailwindcss-patch.config.ts` via `@tailwindcss-mangle/config`. v9 expects the modern `registry` shape; use `tw-patch migrate` before upgrading if your config still uses deprecated keys.
119119

120+
### Public Type Names
121+
122+
The current alpha exports the modern option type names only:
123+
124+
```ts
125+
import type {
126+
ApplyOptions,
127+
CacheOptions,
128+
ExtractOptions,
129+
TailwindCssOptions,
130+
TailwindCssPatchOptions,
131+
TailwindV2V3Options,
132+
TailwindV4Options,
133+
NormalizedTailwindCssPatchOptions,
134+
} from 'tailwindcss-patch'
135+
```
136+
137+
Older aliases such as `TailwindcssPatchOptions`, `TailwindLocatorOptions`, and `TailwindTargetOptions` are intentionally removed in the alpha line.
138+
120139
### v9 upgrade flow
121140

122141
1. Run `pnpm dlx tw-patch migrate --dry-run` to preview required config rewrites.

packages/tailwindcss-patch/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,23 @@
3939
"files": [
4040
"bin",
4141
"dist",
42-
"schema"
42+
"schema",
43+
"src"
4344
],
4445
"scripts": {
4546
"dev": "tsup --watch --sourcemap",
4647
"build": "tsup",
4748
"test": "vitest run",
49+
"test:types": "pnpm build && tsd --typings dist/index.d.mts --files test-d/**/*.test-d.ts",
4850
"test:dev": "vitest",
4951
"bench:cold-start": "node --import tsx bench/cold-start.ts",
5052
"patch": "tsx dev/bin.ts install",
5153
"r0": "tsx dev/bin.ts extract",
5254
"r1": "tsx dev/bin.ts extract --css index.css"
5355
},
56+
"tsd": {
57+
"directory": "test-d"
58+
},
5459
"publishConfig": {
5560
"access": "public",
5661
"registry": "https://registry.npmjs.org/",

packages/tailwindcss-patch/src/api/tailwindcss-patcher.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import type { SourceEntry } from '@tailwindcss/oxide'
22
import type { PackageInfo } from 'local-pkg'
3-
import type { NormalizedTailwindcssPatchOptions } from '../config'
3+
import type { NormalizedTailwindCssPatchOptions } from '../config'
44
import type {
55
CacheClearOptions,
66
CacheClearResult,
77
CacheContextMetadata,
88
CacheReadMeta,
99
ExtractResult,
10-
TailwindcssPatchOptions,
10+
TailwindCssPatchOptions,
1111
TailwindTokenByFileMap,
1212
TailwindTokenFileKey,
1313
TailwindTokenReport,
@@ -92,7 +92,7 @@ function resolveMajorVersionOrThrow(
9292

9393
function createCollector(
9494
packageInfo: PackageInfo,
95-
options: NormalizedTailwindcssPatchOptions,
95+
options: NormalizedTailwindCssPatchOptions,
9696
majorVersion: TailwindMajorVersion,
9797
snapshotFactory: () => string,
9898
): TailwindCollector {
@@ -104,7 +104,7 @@ function createCollector(
104104
}
105105

106106
export class TailwindcssPatcher {
107-
public readonly options: NormalizedTailwindcssPatchOptions
107+
public readonly options: NormalizedTailwindCssPatchOptions
108108
public readonly packageInfo: PackageInfo
109109
public readonly majorVersion: TailwindMajorVersion
110110

@@ -117,7 +117,7 @@ export class TailwindcssPatcher {
117117
private readonly collector: TailwindCollector
118118
private patchMemo: PatchMemo | undefined
119119

120-
constructor(options: TailwindcssPatchOptions = {}) {
120+
constructor(options: TailwindCssPatchOptions = {}) {
121121
this.options = normalizeOptions(options)
122122
const packageInfo = getPackageInfoSync(
123123
this.options.tailwind.packageName,

packages/tailwindcss-patch/src/cache/context.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { PackageInfo } from 'local-pkg'
2-
import type { NormalizedTailwindcssPatchOptions } from '../options/types'
2+
import type { NormalizedTailwindCssPatchOptions } from '../options/types'
33
import type { CacheContextDescriptor, CacheContextMetadata } from './types'
44
import { createHash } from 'node:crypto'
55
import process from 'node:process'
@@ -49,7 +49,7 @@ function resolveFileMtimeMsSync(value: string | undefined): number | undefined {
4949
}
5050

5151
function resolveTailwindConfigPath(
52-
options: NormalizedTailwindcssPatchOptions,
52+
options: NormalizedTailwindCssPatchOptions,
5353
majorVersion: 2 | 3 | 4,
5454
): string | undefined {
5555
const tailwind = options.tailwind
@@ -114,7 +114,7 @@ function hash(input: string): string {
114114
return createHash('sha256').update(input).digest('hex')
115115
}
116116

117-
function toFingerprintOptions(normalized: NormalizedTailwindcssPatchOptions) {
117+
function toFingerprintOptions(normalized: NormalizedTailwindCssPatchOptions) {
118118
return {
119119
overwrite: normalized.overwrite,
120120
output: {
@@ -136,7 +136,7 @@ function toFingerprintOptions(normalized: NormalizedTailwindcssPatchOptions) {
136136
}
137137

138138
export function createCacheContextDescriptor(
139-
options: NormalizedTailwindcssPatchOptions,
139+
options: NormalizedTailwindCssPatchOptions,
140140
packageInfo: PackageInfo,
141141
majorVersion: 2 | 3 | 4,
142142
): CacheContextDescriptor {

0 commit comments

Comments
 (0)