Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 55830b3

Browse filesBrowse files
authored
feat: allow read useDefineForClassFields compiler option in tsconfig.json (#97)
* feat: allow read useDefineForClassFields compiler option in tsconfig.json * Update oxc
1 parent 145e106 commit 55830b3
Copy full SHA for 55830b3

File tree

Expand file treeCollapse file tree

9 files changed

+48
-7
lines changed
Filter options
Expand file treeCollapse file tree

9 files changed

+48
-7
lines changed

‎Cargo.lock

Copy file name to clipboardExpand all lines: Cargo.lock
+2-2Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml

Copy file name to clipboardExpand all lines: Cargo.toml
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ crate-type = ["cdylib"]
1111
napi = { version = "3.0.0-alpha.33", default-features = false, features = ["serde-json", "napi3"] }
1212
napi-derive = { version = "3.0.0-alpha.29", default-features = false, features = ["type-def"] }
1313
oxc = { version = "0.63.0", features = ["codegen", "transformer", "semantic", "regular_expression"] }
14-
oxc_resolver = { version = "5.1.1" }
14+
oxc_resolver = { version = "5.2.0" }
1515
phf = "0.11"
1616
serde_json = "1"
1717
tracing = "0.1"

‎packages/integrate-module-bundler/src/index.ts

Copy file name to clipboardExpand all lines: packages/integrate-module-bundler/src/index.ts
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ await test('resolve nestjs', async () => {
8282
const { app } = await bootstrap()
8383
const service = app.get(AppService)
8484
assert.equal(service.getHello(), 'Hello World!')
85+
assert.equal(service.websocket.port, 3001)
8586
await app.close()
8687
})
8788

‎packages/integrate-module-bundler/src/nestjs/app.controller.ts

Copy file name to clipboardExpand all lines: packages/integrate-module-bundler/src/nestjs/app.controller.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { AppService } from './app.service'
33

44
@Controller()
55
export class AppController {
6-
constructor(private readonly appService: AppService) {}
6+
constructor(public readonly appService: AppService) {}
77

88
@Get()
99
getHello(): string {

‎packages/integrate-module-bundler/src/nestjs/app.module.ts

Copy file name to clipboardExpand all lines: packages/integrate-module-bundler/src/nestjs/app.module.ts
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ import { Module } from '@nestjs/common'
22

33
import { AppController } from './app.controller'
44
import { AppService } from './app.service'
5+
import { ConfigService } from './config'
56

67
@Module({
78
imports: [],
89
controllers: [AppController],
9-
providers: [AppService],
10+
providers: [AppService, ConfigService],
1011
})
1112
export class AppModule {}

‎packages/integrate-module-bundler/src/nestjs/app.service.ts

Copy file name to clipboardExpand all lines: packages/integrate-module-bundler/src/nestjs/app.service.ts
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
import { Injectable } from '@nestjs/common'
22

3+
import { ConfigService } from './config'
4+
35
@Injectable()
46
export class AppService {
7+
public readonly websocket = {
8+
port: this.config.server.port + 1,
9+
}
10+
11+
constructor(private readonly config: ConfigService) {}
12+
513
getHello(): string {
614
return 'Hello World!'
715
}
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Injectable } from '@nestjs/common'
2+
3+
@Injectable()
4+
export class ConfigService {
5+
public readonly server = {
6+
port: 3000,
7+
}
8+
}

‎packages/integrate-module-bundler/tsconfig.json

Copy file name to clipboardExpand all lines: packages/integrate-module-bundler/tsconfig.json
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"outDir": "dist",
1111
"experimentalDecorators": true,
1212
"emitDecoratorMetadata": true,
13+
"useDefineForClassFields": false,
1314
"baseUrl": "./",
1415
"paths": {
1516
"@subdirectory/*": ["./src/subdirectory/*"]

‎src/lib.rs

Copy file name to clipboardExpand all lines: src/lib.rs
+24-2Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ use oxc::{
1616
semantic::SemanticBuilder,
1717
span::SourceType,
1818
transformer::{
19-
DecoratorOptions, EnvOptions, JsxOptions, JsxRuntime, Module, ProposalOptions,
20-
TransformOptions, Transformer, TransformerReturn, TypeScriptOptions,
19+
ClassPropertiesOptions, CompilerAssumptions, DecoratorOptions, ES2022Options, EnvOptions,
20+
JsxOptions, JsxRuntime, Module, ProposalOptions, RewriteExtensionsMode, TransformOptions,
21+
Transformer, TransformerReturn, TypeScriptOptions,
2122
},
2223
};
2324
use oxc_resolver::{
@@ -265,10 +266,17 @@ fn oxc_transform<S: TryAsStr>(
265266
.semantic
266267
.into_scoping();
267268

269+
let use_define_for_class_fields = compiler_options
270+
.and_then(|c| c.use_define_for_class_fields)
271+
.unwrap_or_default();
268272
let TransformerReturn { errors, .. } = Transformer::new(
269273
&allocator,
270274
src_path,
271275
&TransformOptions {
276+
assumptions: CompilerAssumptions {
277+
set_public_class_fields: use_define_for_class_fields,
278+
..Default::default()
279+
},
272280
decorator: DecoratorOptions {
273281
legacy: compiler_options
274282
.and_then(|c| c.experimental_decorators)
@@ -286,6 +294,9 @@ fn oxc_transform<S: TryAsStr>(
286294
_ => JsxRuntime::default(),
287295
})
288296
.unwrap_or_default(),
297+
import_source: compiler_options.and_then(|c| c.jsx_import_source.clone()),
298+
pragma: compiler_options.and_then(|c| c.jsx_factory.clone()),
299+
pragma_frag: compiler_options.and_then(|c| c.jsx_fragment_factory.clone()),
289300
..Default::default()
290301
},
291302
typescript: TypeScriptOptions {
@@ -297,10 +308,21 @@ fn oxc_transform<S: TryAsStr>(
297308
.and_then(|c| c.jsx_fragment_factory.as_ref())
298309
.map(|c| Cow::Borrowed(c.as_str()))
299310
.unwrap_or_default(),
311+
rewrite_import_extensions: compiler_options
312+
.and_then(|c| c.rewrite_relative_import_extensions)
313+
.unwrap_or_default()
314+
.then_some(RewriteExtensionsMode::Rewrite),
315+
only_remove_type_imports: false,
300316
..Default::default()
301317
},
302318
env: EnvOptions {
303319
module: module_target.unwrap_or_default(),
320+
es2022: ES2022Options {
321+
class_static_block: true,
322+
class_properties: Some(ClassPropertiesOptions {
323+
loose: use_define_for_class_fields,
324+
}),
325+
},
304326
..Default::default()
305327
},
306328
proposals: ProposalOptions {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.