Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f6a8d51

Browse files
authored
fix(node): fix type errors (#1642)
### Description - closes #1639 This PR renames rust side struct to match js naming `BindingJsonSourcemap` to workaround napi's inconsistent dts emit. I also added `build-types-check` to verify type check passes for its package types exports (similar to how vite does). I'm not sure changing rust side naming is ideal. Another workaround is to prevent napi renaming by `napi_derive::napi(object, js_name = "BindingJSONSourcemap"))`. I don't think I can figure the fix on napi side, so I thought it's worth suggesting a quick fix here. Please let me know what you think. Thanks!
1 parent 77b107b commit f6a8d51

8 files changed

Lines changed: 32 additions & 12 deletions

File tree

crates/rolldown_binding/src/types/binding_sourcemap.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ use serde::Deserialize;
66
#[derive(Deserialize, Debug, Derivative)]
77
pub struct BindingSourcemap {
88
#[serde(skip_deserializing, default = "default_sourcemap")]
9-
pub inner: Either<String, BindingJSONSourcemap>,
9+
pub inner: Either<String, BindingJsonSourcemap>,
1010
}
1111

12-
fn default_sourcemap() -> Either<String, BindingJSONSourcemap> {
12+
fn default_sourcemap() -> Either<String, BindingJsonSourcemap> {
1313
Either::A(String::default())
1414
}
1515

@@ -27,7 +27,7 @@ impl TryFrom<BindingSourcemap> for rolldown_sourcemap::SourceMap {
2727

2828
#[derive(Deserialize, Debug, Default, Derivative)]
2929
#[napi_derive::napi(object)]
30-
pub struct BindingJSONSourcemap {
30+
pub struct BindingJsonSourcemap {
3131
pub file: Option<String>,
3232
pub mappings: Option<String>,
3333
pub source_root: Option<String>,
@@ -36,10 +36,10 @@ pub struct BindingJSONSourcemap {
3636
pub names: Option<Vec<String>>,
3737
}
3838

39-
impl TryFrom<BindingJSONSourcemap> for rolldown_sourcemap::SourceMap {
39+
impl TryFrom<BindingJsonSourcemap> for rolldown_sourcemap::SourceMap {
4040
type Error = anyhow::Error;
4141

42-
fn try_from(value: BindingJSONSourcemap) -> Result<Self, Self::Error> {
42+
fn try_from(value: BindingJsonSourcemap) -> Result<Self, Self::Error> {
4343
rolldown_sourcemap::SourceMap::from_json(rolldown_sourcemap::JSONSourceMap {
4444
file: value.file,
4545
mappings: value.mappings,

packages/rolldown/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,9 @@
5858
"bak_build-node": "unbuild",
5959
"build-node": "node ../../node_modules/npm-rolldown/bin/cli.js -c ./rolldown.config.mjs",
6060
"build-types": "tsc -p ./tsconfig.dts.json",
61-
"build-native:debug": "run-s build-binding build-types build-node",
62-
"build-native:release": "run-s build-binding:release build-types build-node",
61+
"build-types-check": "tsc -p ./tsconfig.check.json",
62+
"build-native:debug": "run-s build-binding build-types build-node build-types-check",
63+
"build-native:release": "run-s build-binding:release build-types build-node build-types-check",
6364
"build-wasi:debug": "run-s build-binding:wasi build-node",
6465
"build-wasi:release": "run-s build-binding:wasi:release build-node",
6566
"# Scrips for checking #": "_",

packages/rolldown/src/binding.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ export interface BindingResolveOptions {
248248
}
249249

250250
export interface BindingSourcemap {
251-
inner: string | BindingJSONSourcemap
251+
inner: string | BindingJsonSourcemap
252252
}
253253

254254
export interface BindingTreeshake {

packages/rolldown/src/options/normalized-input-options.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
import type { InputOptions } from './input-options'
77
import type { RolldownPlugin } from '../plugin'
88
import type { LogLevel } from '../log/logging'
9-
import { NormalizedTreeshakingOptions } from '../../src/treeshake'
9+
import { NormalizedTreeshakingOptions } from '../treeshake'
1010

1111
export interface NormalizedInputOptions
1212
extends Omit<InputOptions, 'treeshake'> {

packages/rolldown/src/rolldown-binding.wasi-browser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ function __napi_rs_initialize_modules(__napiInstance) {
144144
__napiInstance.exports['__napi_register__BindingRenderedModule_struct_79']?.()
145145
__napiInstance.exports['__napi_register__AliasItem_struct_80']?.()
146146
__napiInstance.exports['__napi_register__BindingSourcemap_struct_81']?.()
147-
__napiInstance.exports['__napi_register__BindingJSONSourcemap_struct_82']?.()
147+
__napiInstance.exports['__napi_register__BindingJsonSourcemap_struct_82']?.()
148148
}
149149
export const BindingLog = __napiModule.exports.BindingLog
150150
export const BindingModuleInfo = __napiModule.exports.BindingModuleInfo

packages/rolldown/src/rolldown-binding.wasi.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ function __napi_rs_initialize_modules(__napiInstance) {
179179
__napiInstance.exports['__napi_register__BindingRenderedModule_struct_79']?.()
180180
__napiInstance.exports['__napi_register__AliasItem_struct_80']?.()
181181
__napiInstance.exports['__napi_register__BindingSourcemap_struct_81']?.()
182-
__napiInstance.exports['__napi_register__BindingJSONSourcemap_struct_82']?.()
182+
__napiInstance.exports['__napi_register__BindingJsonSourcemap_struct_82']?.()
183183
}
184184
module.exports.BindingLog = __napiModule.exports.BindingLog
185185
module.exports.BindingModuleInfo = __napiModule.exports.BindingModuleInfo

packages/rolldown/src/utils/normalize-tree-shake.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { InputOptions } from '../options/input-options'
2-
import { NormalizedTreeshakingOptions } from '../../src/treeshake'
2+
import { NormalizedTreeshakingOptions } from '../treeshake'
33
import { isRegExp } from 'node:util/types'
44

55
export function normalizeTreeshakeOptions(
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
// copied from Vite
3+
// https://github.com/vitejs/vite/blob/1465b2064ee23ac5df5414b13355a394ccd931af/packages/vite/tsconfig.check.json
4+
"compilerOptions": {
5+
"target": "ES2020",
6+
"moduleResolution": "node16",
7+
"module": "node16",
8+
"lib": ["ES2020", "DOM"], // ES2020 is very conservative check for client types, could be bumped if needed
9+
"types": [], // Avoid checking unrelated node_modules types
10+
"noEmit": true,
11+
"strict": true,
12+
"exactOptionalPropertyTypes": true
13+
},
14+
"include": [
15+
// check only package exports
16+
"dist/types/index.d.ts",
17+
"dist/types/parallel-plugin.d.ts"
18+
]
19+
}

0 commit comments

Comments
 (0)