feat(napi/transform): add TransformerOptions::assumptions (#7601)

so that I can use `setPublicClassFields` for #6735 when it's ready.
This commit is contained in:
翠 / green 2024-12-03 18:25:18 +09:00 committed by GitHub
parent 802233d151
commit 58643529d1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 44 additions and 0 deletions

View file

@ -74,6 +74,9 @@ pub struct TransformOptions {
/// @see {@link SourceMap}
pub sourcemap: Option<bool>,
/// Set assumptions in order to produce smaller output.
pub assumptions: Option<CompilerAssumptions>,
/// Configure how TypeScript is transformed.
pub typescript: Option<TypeScriptOptions>,
@ -114,6 +117,7 @@ impl TryFrom<TransformOptions> for oxc_transformer::TransformOptions {
};
Ok(Self {
cwd: options.cwd.map(PathBuf::from).unwrap_or_default(),
assumptions: options.assumptions.map(Into::into).unwrap_or_default(),
typescript: options
.typescript
.map(oxc_transformer::TypeScriptOptions::from)
@ -125,6 +129,36 @@ impl TryFrom<TransformOptions> for oxc_transformer::TransformOptions {
}
}
#[napi(object)]
#[derive(Default, Debug)]
pub struct CompilerAssumptions {
pub ignore_function_length: Option<bool>,
pub no_document_all: Option<bool>,
pub object_rest_no_symbols: Option<bool>,
pub pure_getters: Option<bool>,
pub set_public_class_fields: Option<bool>,
}
impl From<CompilerAssumptions> for oxc_transformer::CompilerAssumptions {
fn from(value: CompilerAssumptions) -> Self {
let ops = oxc_transformer::CompilerAssumptions::default();
Self {
ignore_function_length: value
.ignore_function_length
.unwrap_or(ops.ignore_function_length),
no_document_all: value.no_document_all.unwrap_or(ops.no_document_all),
object_rest_no_symbols: value
.object_rest_no_symbols
.unwrap_or(ops.object_rest_no_symbols),
pure_getters: value.pure_getters.unwrap_or(ops.pure_getters),
set_public_class_fields: value
.set_public_class_fields
.unwrap_or(ops.set_public_class_fields),
..ops
}
}
}
#[napi(object)]
#[derive(Default)]
pub struct TypeScriptOptions {

View file

@ -12,6 +12,14 @@ export interface ArrowFunctionsOptions {
spec?: boolean
}
export interface CompilerAssumptions {
ignoreFunctionLength?: boolean
noDocumentAll?: boolean
objectRestNoSymbols?: boolean
pureGetters?: boolean
setPublicClassFields?: boolean
}
export interface Es2015Options {
/** Transform arrow functions into function expressions. */
arrowFunction?: ArrowFunctionsOptions
@ -199,6 +207,8 @@ export interface TransformOptions {
* @see {@link SourceMap}
*/
sourcemap?: boolean
/** Set assumptions in order to produce smaller output. */
assumptions?: CompilerAssumptions
/** Configure how TypeScript is transformed. */
typescript?: TypeScriptOptions
/** Configure how TSX and JSX are transformed. */