11const defaultPlugins = [
2- [ require ( '@babel/plugin-proposal-class-properties' ) ] ,
2+ [ require ( '@babel/plugin-proposal-class-properties' ) , { loose : true } ] ,
33 [ require ( '@babel/plugin-proposal-optional-catch-binding' ) ] ,
44 [ require ( '@babel/plugin-syntax-dynamic-import' ) ] ,
55 [ require ( '@babel/plugin-syntax-export-default-from' ) ] ,
@@ -13,6 +13,13 @@ const defaultPlugins = [
1313 [ require ( '@babel/plugin-transform-async-to-generator' ) ] ,
1414] ;
1515
16+ // Additional plugins for Hermes because it doesn't support ES6 yet
17+ const hermesPlugins = [
18+ [ require ( '@babel/plugin-transform-classes' ) ] ,
19+ [ require ( '@babel/plugin-transform-shorthand-properties' ) ] ,
20+ [ require ( '@babel/plugin-transform-template-literals' ) , { loose : true } ] ,
21+ ] ;
22+
1623function isTypeScriptSource ( fileName : string ) {
1724 return ! ! fileName && fileName . endsWith ( '.ts' ) ;
1825}
@@ -21,7 +28,7 @@ function isTSXSource(fileName: string) {
2128 return ! ! fileName && fileName . endsWith ( '.tsx' ) ;
2229}
2330
24- export default function getHaulBabelPreset ( ) {
31+ export default function getHaulBabelPreset ( options : { hermes : boolean } ) {
2532 return {
2633 compact : false ,
2734 overrides : [
@@ -30,16 +37,18 @@ export default function getHaulBabelPreset() {
3037 plugins : [ require ( '@babel/plugin-transform-flow-strip-types' ) ] ,
3138 } ,
3239 {
33- plugins : defaultPlugins . concat (
34- process . env . HAUL_PLATFORM
40+ plugins : [
41+ ...defaultPlugins ,
42+ ...( options . hermes ? hermesPlugins : [ ] ) ,
43+ ...( process . env . HAUL_PLATFORM
3544 ? [
3645 [
3746 require ( './transforms/stripDeadPlatformSelect' ) ,
3847 { platform : process . env . HAUL_PLATFORM } ,
3948 ] ,
4049 ]
41- : [ ]
42- ) ,
50+ : [ ] ) ,
51+ ] ,
4352 } ,
4453 {
4554 test : / n o d e _ m o d u l e s \/ r e a c t - n a t i v e / ,
0 commit comments