@@ -22,6 +22,7 @@ use crate::{ast_grep, file_walker};
2222/// - `import { ... } from '@vitest/browser-preview/{name}'` → `import { ... } from '@voidzero-dev/vite-plus/test/browser-preview/{name}'`
2323/// - `import { ... } from '@vitest/browser-webdriverio'` → `import { ... } from '@voidzero-dev/vite-plus/test/browser-webdriverio'`
2424/// - `import { ... } from '@vitest/browser-webdriverio/{name}'` → `import { ... } from '@voidzero-dev/vite-plus/test/browser-webdriverio/{name}'`
25+ /// - `import { ... } from 'tsdown'` → `import { ... } from '@voidzero-dev/vite-plus/lib'`
2526///
2627/// **Declare module statements:**
2728/// - `declare module 'vite' { ... }` → `declare module '@voidzero-dev/vite-plus' { ... }`
@@ -37,6 +38,7 @@ use crate::{ast_grep, file_walker};
3738/// - `declare module '@vitest/browser-preview/{name}' { ... }` → `declare module '@voidzero-dev/vite-plus/test/browser-preview/{name}' { ... }`
3839/// - `declare module '@vitest/browser-webdriverio' { ... }` → `declare module '@voidzero-dev/vite-plus/test/browser-webdriverio' { ... }`
3940/// - `declare module '@vitest/browser-webdriverio/{name}' { ... }` → `declare module '@voidzero-dev/vite-plus/test/browser-webdriverio/{name}' { ... }`
41+ /// - `declare module 'tsdown' { ... }` → `declare module '@voidzero-dev/vite-plus/lib' { ... }`
4042const REWRITE_IMPORT_RULES : & str = r#"---
4143id: rewrite-vitest-config-import
4244language: TypeScript
@@ -229,6 +231,38 @@ transform:
229231 replace: vitest/
230232 by: "@voidzero-dev/vite-plus/test/"
231233fix: $NEW_IMPORT
234+ ---
235+ id: rewrite-tsdown-import
236+ language: TypeScript
237+ rule:
238+ pattern: $STR
239+ kind: string
240+ regex: ^['"]tsdown['"]$
241+ inside:
242+ kind: import_statement
243+ transform:
244+ NEW_IMPORT:
245+ replace:
246+ source: $STR
247+ replace: tsdown
248+ by: "@voidzero-dev/vite-plus/lib"
249+ fix: $NEW_IMPORT
250+ ---
251+ id: rewrite-declare-module-tsdown
252+ language: TypeScript
253+ rule:
254+ pattern: $STR
255+ kind: string
256+ regex: ^['"]tsdown['"]$
257+ inside:
258+ kind: module
259+ transform:
260+ NEW_IMPORT:
261+ replace:
262+ source: $STR
263+ replace: tsdown
264+ by: "@voidzero-dev/vite-plus/lib"
265+ fix: $NEW_IMPORT
232266"# ;
233267
234268/// Result of rewriting imports in a file
@@ -1393,6 +1427,86 @@ declare module '@voidzero-dev/vite-plus/test/browser' {
13931427 name: string;
13941428 configResolved?: (config: ResolvedConfig) => void;
13951429 }
1430+ }"#
1431+ ) ;
1432+ }
1433+
1434+ #[ test]
1435+ fn test_rewrite_import_content_tsdown ( ) {
1436+ let tsdown_config = r#"import { defineConfig } from 'tsdown';
1437+
1438+ export default defineConfig({
1439+ entry: 'src/index.ts',
1440+ });"# ;
1441+
1442+ let result = rewrite_import_content ( tsdown_config) . unwrap ( ) ;
1443+ assert ! ( result. updated) ;
1444+ assert_eq ! (
1445+ result. content,
1446+ r#"import { defineConfig } from '@voidzero-dev/vite-plus/lib';
1447+
1448+ export default defineConfig({
1449+ entry: 'src/index.ts',
1450+ });"#
1451+ ) ;
1452+ }
1453+
1454+ #[ test]
1455+ fn test_rewrite_import_content_tsdown_double_quotes ( ) {
1456+ let tsdown_config = r#"import { defineConfig } from "tsdown";
1457+
1458+ export default defineConfig({
1459+ entry: "src/index.ts",
1460+ });"# ;
1461+
1462+ let result = rewrite_import_content ( tsdown_config) . unwrap ( ) ;
1463+ assert ! ( result. updated) ;
1464+ assert_eq ! (
1465+ result. content,
1466+ r#"import { defineConfig } from "@voidzero-dev/vite-plus/lib";
1467+
1468+ export default defineConfig({
1469+ entry: "src/index.ts",
1470+ });"#
1471+ ) ;
1472+ }
1473+
1474+ #[ test]
1475+ fn test_rewrite_declare_module_tsdown ( ) {
1476+ let content = r#"declare module 'tsdown' {
1477+ interface BuildConfig {
1478+ custom?: boolean;
1479+ }
1480+ }"# ;
1481+
1482+ let result = rewrite_import_content ( content) . unwrap ( ) ;
1483+ assert ! ( result. updated) ;
1484+ assert_eq ! (
1485+ result. content,
1486+ r#"declare module '@voidzero-dev/vite-plus/lib' {
1487+ interface BuildConfig {
1488+ custom?: boolean;
1489+ }
1490+ }"#
1491+ ) ;
1492+ }
1493+
1494+ #[ test]
1495+ fn test_rewrite_declare_module_tsdown_double_quotes ( ) {
1496+ let content = r#"declare module "tsdown" {
1497+ interface BuildConfig {
1498+ custom?: boolean;
1499+ }
1500+ }"# ;
1501+
1502+ let result = rewrite_import_content ( content) . unwrap ( ) ;
1503+ assert ! ( result. updated) ;
1504+ assert_eq ! (
1505+ result. content,
1506+ r#"declare module "@voidzero-dev/vite-plus/lib" {
1507+ interface BuildConfig {
1508+ custom?: boolean;
1509+ }
13961510}"#
13971511 ) ;
13981512 }
0 commit comments