Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions crates/vite_migration/src/import_rewriter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ use crate::{ast_grep, file_walker};
/// - `import { ... } from '@vitest/browser-preview/{name}'` → `import { ... } from '@voidzero-dev/vite-plus/test/browser-preview/{name}'`
/// - `import { ... } from '@vitest/browser-webdriverio'` → `import { ... } from '@voidzero-dev/vite-plus/test/browser-webdriverio'`
/// - `import { ... } from '@vitest/browser-webdriverio/{name}'` → `import { ... } from '@voidzero-dev/vite-plus/test/browser-webdriverio/{name}'`
/// - `import { ... } from 'tsdown'` → `import { ... } from '@voidzero-dev/vite-plus/lib'`
///
/// **Declare module statements:**
/// - `declare module 'vite' { ... }` → `declare module '@voidzero-dev/vite-plus' { ... }`
Expand All @@ -37,6 +38,7 @@ use crate::{ast_grep, file_walker};
/// - `declare module '@vitest/browser-preview/{name}' { ... }` → `declare module '@voidzero-dev/vite-plus/test/browser-preview/{name}' { ... }`
/// - `declare module '@vitest/browser-webdriverio' { ... }` → `declare module '@voidzero-dev/vite-plus/test/browser-webdriverio' { ... }`
/// - `declare module '@vitest/browser-webdriverio/{name}' { ... }` → `declare module '@voidzero-dev/vite-plus/test/browser-webdriverio/{name}' { ... }`
/// - `declare module 'tsdown' { ... }` → `declare module '@voidzero-dev/vite-plus/lib' { ... }`
const REWRITE_IMPORT_RULES: &str = r#"---
id: rewrite-vitest-config-import
language: TypeScript
Expand Down Expand Up @@ -229,6 +231,38 @@ transform:
replace: vitest/
by: "@voidzero-dev/vite-plus/test/"
fix: $NEW_IMPORT
---
id: rewrite-tsdown-import
language: TypeScript
rule:
pattern: $STR
kind: string
regex: ^['"]tsdown['"]$
inside:
kind: import_statement
transform:
NEW_IMPORT:
replace:
source: $STR
replace: tsdown
by: "@voidzero-dev/vite-plus/lib"
fix: $NEW_IMPORT
---
id: rewrite-declare-module-tsdown
language: TypeScript
rule:
pattern: $STR
kind: string
regex: ^['"]tsdown['"]$
inside:
kind: module
transform:
NEW_IMPORT:
replace:
source: $STR
replace: tsdown
by: "@voidzero-dev/vite-plus/lib"
fix: $NEW_IMPORT
"#;

/// Result of rewriting imports in a file
Expand Down Expand Up @@ -1393,6 +1427,86 @@ declare module '@voidzero-dev/vite-plus/test/browser' {
name: string;
configResolved?: (config: ResolvedConfig) => void;
}
}"#
);
}

#[test]
fn test_rewrite_import_content_tsdown() {
let tsdown_config = r#"import { defineConfig } from 'tsdown';

export default defineConfig({
entry: 'src/index.ts',
});"#;

let result = rewrite_import_content(tsdown_config).unwrap();
assert!(result.updated);
assert_eq!(
result.content,
r#"import { defineConfig } from '@voidzero-dev/vite-plus/lib';

export default defineConfig({
entry: 'src/index.ts',
});"#
);
}

#[test]
fn test_rewrite_import_content_tsdown_double_quotes() {
let tsdown_config = r#"import { defineConfig } from "tsdown";

export default defineConfig({
entry: "src/index.ts",
});"#;

let result = rewrite_import_content(tsdown_config).unwrap();
assert!(result.updated);
assert_eq!(
result.content,
r#"import { defineConfig } from "@voidzero-dev/vite-plus/lib";

export default defineConfig({
entry: "src/index.ts",
});"#
);
}

#[test]
fn test_rewrite_declare_module_tsdown() {
let content = r#"declare module 'tsdown' {
interface BuildConfig {
custom?: boolean;
}
}"#;

let result = rewrite_import_content(content).unwrap();
assert!(result.updated);
assert_eq!(
result.content,
r#"declare module '@voidzero-dev/vite-plus/lib' {
interface BuildConfig {
custom?: boolean;
}
}"#
);
}

#[test]
fn test_rewrite_declare_module_tsdown_double_quotes() {
let content = r#"declare module "tsdown" {
interface BuildConfig {
custom?: boolean;
}
}"#;

let result = rewrite_import_content(content).unwrap();
assert!(result.updated);
assert_eq!(
result.content,
r#"declare module "@voidzero-dev/vite-plus/lib" {
interface BuildConfig {
custom?: boolean;
}
}"#
);
}
Expand Down
2 changes: 1 addition & 1 deletion crates/vite_migration/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ mod vite_config;
pub use file_walker::{WalkResult, find_ts_files};
pub use import_rewriter::{BatchRewriteResult, rewrite_imports_in_directory};
pub use package::rewrite_scripts;
pub use vite_config::{MergeResult, merge_json_config};
pub use vite_config::{MergeResult, merge_json_config, merge_tsdown_config};
Loading
Loading