Minimal reproduction attempt for voidzero-dev/oxc-angular-compiler#148.
The report claims that @oxc-angular/vite retains the TypeScript abstract keyword in compiled output, producing invalid JavaScript:
let BaseProvider = abstract class BaseProvider {
^ Expected a semicolon
Exact versions from the issue:
@oxc-angular/vite: 0.0.17- Vite: 8.0.0 (also tested with rolldown-vite 7.3.1)
- Angular: 20.x
npm install
# Test with Vite 8.0.0
npm run build
# Test with rolldown-vite 7.3.1
npx rolldown-vite build --config vite.config.rolldown.tsBoth build successfully. The abstract keyword is correctly stripped by Vite/Rolldown's built-in TypeScript handling, which runs after the Angular plugin's order: 'pre' transform.
The Angular compiler's transformAngularFile API does output code that retains abstract (it's a partial transform — it handles Angular decorators, not full TS→JS). But this is by design: the Vite plugin runs at order: 'pre', so Vite/Rolldown's TS stripping processes the output afterward and removes abstract, type annotations, etc.
var BaseProvider = class BaseProvider {
greet() {
return `Hello from ${this.name}`;
}
static ɵfac = ...
static ɵprov = ...
};- OS: Linux x86_64 (Ubuntu)
- Node.js: v22.22.0