Skip to content

Commit

Permalink
fix(node/types): Add types for jsc.minify.format (#4492)
Browse files Browse the repository at this point in the history
  • Loading branch information
xnuk authored May 1, 2022
1 parent 9fc3d2c commit 3ed1538
Showing 1 changed file with 147 additions and 0 deletions.
147 changes: 147 additions & 0 deletions node-swc/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ export type TerserEcmaVersion = 5 | 2015 | 2016 | string | number;
export interface JsMinifyOptions {
compress?: TerserCompressOptions | boolean,

format?: JsFormatOptions & ToSnakeCaseProperties<JsFormatOptions>,

mangle?: TerserMangleOptions | boolean,

ecma?: TerserEcmaVersion,
Expand All @@ -38,6 +40,151 @@ export interface JsMinifyOptions {
inlineSourcesContent?: boolean
}

/**
* @example ToSnakeCase<'indentLevel'> == 'indent_level'
*/
type ToSnakeCase<T extends string> = T extends `${infer A}${infer B}`
? `${A extends Lowercase<A> ? A : `_${Lowercase<A>}`}${ToSnakeCase<B>}`
: T

/**
* @example ToSnakeCaseProperties<{indentLevel: 3}> == {indent_level: 3}
*/
type ToSnakeCaseProperties<T> = {
[K in keyof T as (K extends string ? ToSnakeCase<K> : K)]: T[K]
}

/**
* These properties are mostly not implemented yet,
* but it exists to support passing terser config to swc minify
* without modification.
*/
export interface JsFormatOptions {
/**
* Currently noop.
* @default false
* @alias ascii_only
*/
asciiOnly?: boolean

/**
* Currently noop.
* @default false
*/
beautify?: boolean

/**
* Currently noop.
* @default false
*/
braces?: boolean

/**
* - `false`: removes all comments
* - `'some'`: preserves some comments
* - `'all'`: preserves all comments
* @default false
*/
comments?: false | 'some' | 'all'

/**
* Currently noop.
* @default 5
*/
ecma?: TerserEcmaVersion

/**
* Currently noop.
* @alias indent_level
*/
indentLevel?: number

/**
* Currently noop.
* @alias indent_start
*/
indentStart?: number

/**
* Currently noop.
* @alias inline_script
*/
inlineScript?: number

/**
* Currently noop.
* @alias keep_numbers
*/
keepNumbers?: number

/**
* Currently noop.
* @alias keep_quoted_props
*/
keepQuotedProps?: boolean

/**
* Currently noop.
* @alias max_line_len
*/
maxLineLen?: number | false

/**
* Currently noop.
*/
preamble?: string

/**
* Currently noop.
* @alias quote_keys
*/
quoteKeys?: boolean

/**
* Currently noop.
* @alias quote_style
*/
quoteStyle?: boolean

/**
* Currently noop.
* @alias preserve_annotations
*/
preserveAnnotations?: boolean

/**
* Currently noop.
*/
safari10?: boolean

/**
* Currently noop.
*/
semicolons?: boolean

/**
* Currently noop.
*/
shebang?: boolean

/**
* Currently noop.
*/
webkit?: boolean

/**
* Currently noop.
* @alias wrap_iife
*/
wrapIife?: boolean

/**
* Currently noop.
* @alias wrap_func_args
*/
wrapFuncArgs?: boolean
}

export interface TerserCompressOptions {
arguments?: boolean,
arrows?: boolean,
Expand Down

1 comment on commit 3ed1538

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 3ed1538 Previous: de53a6f Ratio
es/full/minify/libraries/antd 1985583665 ns/iter (± 54615370) 1905994398 ns/iter (± 128911775) 1.04
es/full/minify/libraries/d3 554255605 ns/iter (± 7254954) 561944422 ns/iter (± 9241155) 0.99
es/full/minify/libraries/echarts 2519224290 ns/iter (± 26983240) 2358169520 ns/iter (± 5632352) 1.07
es/full/minify/libraries/jquery 109052917 ns/iter (± 1304162) 117453966 ns/iter (± 729743) 0.93
es/full/minify/libraries/lodash 126045189 ns/iter (± 1922887) 138961182 ns/iter (± 1091472) 0.91
es/full/minify/libraries/moment 62123439 ns/iter (± 1379050) 65818872 ns/iter (± 989764) 0.94
es/full/minify/libraries/react 20387103 ns/iter (± 339650) 20443278 ns/iter (± 120100) 1.00
es/full/minify/libraries/terser 765419999 ns/iter (± 25200334) 695878686 ns/iter (± 10304798) 1.10
es/full/minify/libraries/three 681559678 ns/iter (± 10952211) 687325040 ns/iter (± 9375183) 0.99
es/full/minify/libraries/typescript 4394392320 ns/iter (± 51186052) 4363312434 ns/iter (± 49568473) 1.01
es/full/minify/libraries/victory 933592482 ns/iter (± 19983805) 912240496 ns/iter (± 20072722) 1.02
es/full/minify/libraries/vue 156980159 ns/iter (± 5045876) 161470542 ns/iter (± 2414783) 0.97
es/full/codegen/es3 35223 ns/iter (± 2670) 33420 ns/iter (± 693) 1.05
es/full/codegen/es5 36140 ns/iter (± 1306) 33338 ns/iter (± 565) 1.08
es/full/codegen/es2015 35861 ns/iter (± 746) 33487 ns/iter (± 525) 1.07
es/full/codegen/es2016 35513 ns/iter (± 678) 33335 ns/iter (± 524) 1.07
es/full/codegen/es2017 35129 ns/iter (± 983) 33909 ns/iter (± 162) 1.04
es/full/codegen/es2018 35635 ns/iter (± 1078) 33894 ns/iter (± 165) 1.05
es/full/codegen/es2019 35550 ns/iter (± 1388) 33896 ns/iter (± 197) 1.05
es/full/codegen/es2020 35697 ns/iter (± 1014) 33915 ns/iter (± 153) 1.05
es/full/all/es3 203327854 ns/iter (± 4031916) 209992173 ns/iter (± 3383240) 0.97
es/full/all/es5 191599102 ns/iter (± 3969151) 200215522 ns/iter (± 2231084) 0.96
es/full/all/es2015 153372563 ns/iter (± 3426222) 159653982 ns/iter (± 2206055) 0.96
es/full/all/es2016 150840129 ns/iter (± 3562866) 157828236 ns/iter (± 2821989) 0.96
es/full/all/es2017 149966648 ns/iter (± 3517547) 156851511 ns/iter (± 1444846) 0.96
es/full/all/es2018 149164171 ns/iter (± 3863556) 154361400 ns/iter (± 2907891) 0.97
es/full/all/es2019 147398660 ns/iter (± 3975733) 154191147 ns/iter (± 1306345) 0.96
es/full/all/es2020 143696880 ns/iter (± 2281728) 148855119 ns/iter (± 2771950) 0.97
es/full/parser 724663 ns/iter (± 27857) 658337 ns/iter (± 17430) 1.10
es/full/base/fixer 30039 ns/iter (± 1076) 26082 ns/iter (± 364) 1.15
es/full/base/resolver_and_hygiene 128936 ns/iter (± 10813) 111155 ns/iter (± 1577) 1.16
serialization of ast node 170 ns/iter (± 2) 183 ns/iter (± 0) 0.93
serialization of serde 167 ns/iter (± 3) 164 ns/iter (± 0) 1.02
es/codegen/colors 69950 ns/iter (± 4054) 64798 ns/iter (± 999) 1.08
es/codegen/large 401530 ns/iter (± 19750) 379508 ns/iter (± 3898) 1.06
es/codegen/with-parser/colors 68410 ns/iter (± 2559) 63256 ns/iter (± 961) 1.08
es/codegen/with-parser/large 715616 ns/iter (± 23618) 669433 ns/iter (± 8148) 1.07
es/minify/libraries/antd 1921929042 ns/iter (± 8631345) 1916188198 ns/iter (± 37221863) 1.00
es/minify/libraries/d3 561124049 ns/iter (± 13174625) 561538175 ns/iter (± 6266846) 1.00
es/minify/libraries/echarts 2505369207 ns/iter (± 13846812) 2348296649 ns/iter (± 13360821) 1.07
es/minify/libraries/jquery 116179538 ns/iter (± 3885083) 111302569 ns/iter (± 1357712) 1.04
es/minify/libraries/lodash 131539925 ns/iter (± 2159320) 137764721 ns/iter (± 11344216) 0.95
es/minify/libraries/moment 60701459 ns/iter (± 628465) 64873306 ns/iter (± 850945) 0.94
es/minify/libraries/react 19571850 ns/iter (± 283894) 19547203 ns/iter (± 242584) 1.00
es/minify/libraries/terser 735167459 ns/iter (± 15021511) 677868320 ns/iter (± 16349757) 1.08
es/minify/libraries/three 695126467 ns/iter (± 8736609) 692013581 ns/iter (± 8821483) 1.00
es/minify/libraries/typescript 4325165268 ns/iter (± 50069493) 4313608903 ns/iter (± 23908868) 1.00
es/minify/libraries/victory 896398278 ns/iter (± 7664351) 896381804 ns/iter (± 7645493) 1.00
es/minify/libraries/vue 158274298 ns/iter (± 3843145) 157571713 ns/iter (± 2217530) 1.00
es/visitor/compare/clone 2675300 ns/iter (± 191895) 2724231 ns/iter (± 101351) 0.98
es/visitor/compare/visit_mut_span 3300152 ns/iter (± 190344) 3376880 ns/iter (± 156859) 0.98
es/visitor/compare/visit_mut_span_panic 3389601 ns/iter (± 263933) 3547637 ns/iter (± 244095) 0.96
es/visitor/compare/fold_span 4913746 ns/iter (± 274435) 4561933 ns/iter (± 181840) 1.08
es/visitor/compare/fold_span_panic 5258439 ns/iter (± 434275) 5223048 ns/iter (± 273200) 1.01
es/lexer/colors 24542 ns/iter (± 1214) 24980 ns/iter (± 328) 0.98
es/lexer/angular 11500334 ns/iter (± 518868) 12061549 ns/iter (± 64252) 0.95
es/lexer/backbone 1535208 ns/iter (± 41038) 1617772 ns/iter (± 13009) 0.95
es/lexer/jquery 8353662 ns/iter (± 287541) 8705510 ns/iter (± 27819) 0.96
es/lexer/jquery mobile 13673162 ns/iter (± 571433) 14102204 ns/iter (± 81694) 0.97
es/lexer/mootools 6354111 ns/iter (± 259086) 6706922 ns/iter (± 6040) 0.95
es/lexer/underscore 1280258 ns/iter (± 33023) 1352321 ns/iter (± 2022) 0.95
es/lexer/three 39610008 ns/iter (± 2243170) 40138600 ns/iter (± 90253) 0.99
es/lexer/yui 7287725 ns/iter (± 243793) 7181052 ns/iter (± 103018) 1.01
es/parser/colors 45814 ns/iter (± 4420) 42433 ns/iter (± 625) 1.08
es/parser/angular 23455788 ns/iter (± 824120) 22931474 ns/iter (± 296934) 1.02
es/parser/backbone 3207076 ns/iter (± 75072) 3079836 ns/iter (± 16600) 1.04
es/parser/jquery 18930297 ns/iter (± 1117006) 17627169 ns/iter (± 236120) 1.07
es/parser/jquery mobile 29664048 ns/iter (± 907795) 28028838 ns/iter (± 377138) 1.06
es/parser/mootools 14531306 ns/iter (± 448428) 13618749 ns/iter (± 184567) 1.07
es/parser/underscore 2778312 ns/iter (± 121130) 2581139 ns/iter (± 29902) 1.08
es/parser/three 83928898 ns/iter (± 1529112) 78113371 ns/iter (± 1315051) 1.07
es/parser/yui 14375980 ns/iter (± 793008) 12928676 ns/iter (± 465397) 1.11
es/preset-env/usage/builtin_type 169530 ns/iter (± 10018) 152936 ns/iter (± 5727) 1.11
es/preset-env/usage/property 42653 ns/iter (± 2140) 33230 ns/iter (± 879) 1.28
es/transforms/base/resolver 171965 ns/iter (± 7784) 161325 ns/iter (± 3075) 1.07
es/transforms/base/fixer 163079 ns/iter (± 4337) 152197 ns/iter (± 1421) 1.07
es/transforms/base/hygiene 400764 ns/iter (± 20178) 387113 ns/iter (± 3241) 1.04
es/transforms/base/resolver_with_hygiene 458866 ns/iter (± 14626) 451378 ns/iter (± 6462) 1.02
es/visitor/base-perf/module_clone 122438 ns/iter (± 5718) 110250 ns/iter (± 3509) 1.11
es/visitor/base-perf/fold_empty 138637 ns/iter (± 9058) 124362 ns/iter (± 3695) 1.11
es/visitor/base-perf/fold_noop_impl_all 138013 ns/iter (± 5573) 126889 ns/iter (± 2606) 1.09
es/visitor/base-perf/fold_noop_impl_vec 137792 ns/iter (± 3860) 126910 ns/iter (± 2486) 1.09
es/visitor/base-perf/boxing_boxed_clone 78 ns/iter (± 2) 81 ns/iter (± 0) 0.96
es/visitor/base-perf/boxing_unboxed_clone 125 ns/iter (± 3) 130 ns/iter (± 0) 0.96
es/visitor/base-perf/boxing_boxed 151 ns/iter (± 3) 159 ns/iter (± 1) 0.95
es/visitor/base-perf/boxing_unboxed 190 ns/iter (± 4) 193 ns/iter (± 2) 0.98
es/visitor/base-perf/visit_contains_this 4337 ns/iter (± 2618) 4176 ns/iter (± 110) 1.04
misc/visitors/time-complexity/time 5 107 ns/iter (± 5) 117 ns/iter (± 0) 0.91
misc/visitors/time-complexity/time 10 342 ns/iter (± 16) 361 ns/iter (± 5) 0.95
misc/visitors/time-complexity/time 15 715 ns/iter (± 30) 730 ns/iter (± 22) 0.98
misc/visitors/time-complexity/time 20 1369 ns/iter (± 80) 1346 ns/iter (± 59) 1.02
misc/visitors/time-complexity/time 40 4979 ns/iter (± 150) 4686 ns/iter (± 55) 1.06
misc/visitors/time-complexity/time 60 10580 ns/iter (± 407) 10246 ns/iter (± 130) 1.03
es/full-target/es2016 290464 ns/iter (± 16895) 300335 ns/iter (± 1762) 0.97
es/full-target/es2017 277957 ns/iter (± 10068) 284270 ns/iter (± 2134) 0.98
es/full-target/es2018 271935 ns/iter (± 22012) 271338 ns/iter (± 1747) 1.00
es2020_nullish_coalescing 150807 ns/iter (± 12937) 139321 ns/iter (± 1252) 1.08
es2020_optional_chaining 179541 ns/iter (± 5695) 174145 ns/iter (± 1852) 1.03
es2022_class_properties 183058 ns/iter (± 13127) 173927 ns/iter (± 2345) 1.05
es2018_object_rest_spread 137585 ns/iter (± 3742) 126205 ns/iter (± 3398) 1.09
es2019_optional_catch_binding 123219 ns/iter (± 4489) 112353 ns/iter (± 2709) 1.10
es2017_async_to_generator 124439 ns/iter (± 15175) 112580 ns/iter (± 2352) 1.11
es2016_exponentiation 142851 ns/iter (± 3560) 137515 ns/iter (± 957) 1.04
es2015_arrow 151471 ns/iter (± 6059) 139908 ns/iter (± 1755) 1.08
es2015_block_scoped_fn 145007 ns/iter (± 4873) 140190 ns/iter (± 678) 1.03
es2015_block_scoping 231233 ns/iter (± 9649) 236065 ns/iter (± 1331) 0.98
es2015_classes 211936 ns/iter (± 6968) 198153 ns/iter (± 1647) 1.07
es2015_computed_props 126470 ns/iter (± 5703) 114755 ns/iter (± 2385) 1.10
es2015_destructuring 211114 ns/iter (± 8301) 210317 ns/iter (± 2101) 1.00
es2015_duplicate_keys 126942 ns/iter (± 4655) 117106 ns/iter (± 2690) 1.08
es2015_parameters 159518 ns/iter (± 5905) 146429 ns/iter (± 2123) 1.09
es2015_fn_name 128815 ns/iter (± 5052) 109549 ns/iter (± 5026) 1.18
es2015_for_of 143995 ns/iter (± 5056) 132600 ns/iter (± 5749) 1.09
es2015_instanceof 133763 ns/iter (± 5161) 124598 ns/iter (± 1998) 1.07
es2015_shorthand_property 124954 ns/iter (± 2928) 112290 ns/iter (± 2791) 1.11
es2015_spread 124709 ns/iter (± 4470) 111901 ns/iter (± 2966) 1.11
es2015_sticky_regex 126119 ns/iter (± 4602) 113741 ns/iter (± 3109) 1.11
es2015_typeof_symbol 127530 ns/iter (± 4655) 114302 ns/iter (± 3654) 1.12
es/transform/baseline/base 113569 ns/iter (± 4352) 96065 ns/iter (± 3631) 1.18
es/transform/baseline/common_reserved_word 129748 ns/iter (± 4814) 113837 ns/iter (± 3942) 1.14
es/transform/baseline/common_typescript 258182 ns/iter (± 16348) 246020 ns/iter (± 2017) 1.05
es/target/es3 308017 ns/iter (± 13510) 302591 ns/iter (± 3960) 1.02
es/target/es2015 806486 ns/iter (± 22215) 877726 ns/iter (± 8778) 0.92
es/target/es2016 152997 ns/iter (± 3755) 137828 ns/iter (± 1190) 1.11
es/target/es2017 124773 ns/iter (± 5248) 112459 ns/iter (± 2901) 1.11
es/target/es2018 150305 ns/iter (± 4964) 142633 ns/iter (± 2570) 1.05
es/target/es2020 219200 ns/iter (± 9396) 216134 ns/iter (± 1663) 1.01
babelify-only 778983 ns/iter (± 46467) 817413 ns/iter (± 14113) 0.95
parse_and_babelify_angular 68598903 ns/iter (± 2582063) 82834931 ns/iter (± 1752486) 0.83
parse_and_babelify_backbone 7421750 ns/iter (± 278006) 8003483 ns/iter (± 309251) 0.93
parse_and_babelify_jquery 49375888 ns/iter (± 1931227) 54686744 ns/iter (± 4024462) 0.90
parse_and_babelify_jquery_mobile 91866083 ns/iter (± 2710998) 98311133 ns/iter (± 2680376) 0.93
parse_and_babelify_mootools 43055064 ns/iter (± 2611647) 41016111 ns/iter (± 1677067) 1.05
parse_and_babelify_underscore 6427728 ns/iter (± 209349) 7011034 ns/iter (± 121064) 0.92
parse_and_babelify_yui 37491833 ns/iter (± 2023204) 48266882 ns/iter (± 414334) 0.78

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.