@@ -26,6 +26,11 @@ export enum FantomTestConfigMode {
26
26
Optimized ,
27
27
}
28
28
29
+ export enum FantomTestConfigJsMode {
30
+ Development,
31
+ Optimized,
32
+ }
33
+
29
34
export type FantomTestConfigCommonFeatureFlags = Partial < {
30
35
[ key in keyof CommonFeatureFlags ] : CommonFeatureFlags [ key ] [ 'defaultValue' ] ,
31
36
} > ;
@@ -46,12 +51,14 @@ export type FantomTestConfigFeatureFlags = {
46
51
47
52
export type FantomTestConfig = {
48
53
mode : FantomTestConfigMode ,
54
+ jsMode : FantomTestConfigJsMode ,
49
55
hermesVariant : HermesVariant ,
50
56
flags : FantomTestConfigFeatureFlags ,
51
57
} ;
52
58
53
59
export type PartialFantomTestConfig = {
54
60
mode ?: FantomTestConfigMode ,
61
+ jsMode ?: FantomTestConfigJsMode ,
55
62
hermesVariant ?: HermesVariant ,
56
63
flags ?: Partial < FantomTestConfigFeatureFlags > ,
57
64
} ;
@@ -61,6 +68,9 @@ export const FantomTestConfigHermesVariant = HermesVariant;
61
68
export const DEFAULT_MODE : FantomTestConfigMode =
62
69
FantomTestConfigMode . DevelopmentWithSource ;
63
70
71
+ export const DEFAULT_JS_MODE : FantomTestConfigJsMode =
72
+ FantomTestConfigJsMode . Development ;
73
+
64
74
export const DEFAULT_HERMES_VARIANT : HermesVariant = HermesVariant . Hermes ;
65
75
66
76
export const DEFAULT_FEATURE_FLAGS : FantomTestConfigFeatureFlags = {
@@ -84,6 +94,7 @@ const MAX_FANTOM_CONFIGURATION_VARIATIONS = 12;
84
94
85
95
const VALID_FANTOM_PRAGMAS = [
86
96
'fantom_mode' ,
97
+ 'fantom_js_mode' ,
87
98
'fantom_flags' ,
88
99
'fantom_hermes_variant' ,
89
100
'fantom_react_fb_flags' ,
@@ -131,6 +142,7 @@ export function getOverrides(
131
142
* /**
132
143
* * @flow strict-local
133
144
* * @fantom_mode opt
145
+ * * @fantom_js_mode dev
134
146
* * @fantom_hermes_variant static_hermes_stable
135
147
* * @fantom_flags commonTestFlag:true
136
148
* * @fantom_flags jsOnlyTestFlag:true
@@ -163,6 +175,7 @@ export default function getFantomTestConfigs(
163
175
164
176
const config : FantomTestConfig = {
165
177
mode : DEFAULT_MODE ,
178
+ jsMode : DEFAULT_JS_MODE ,
166
179
hermesVariant : DEFAULT_HERMES_VARIANT ,
167
180
flags : {
168
181
common : {
@@ -217,6 +230,39 @@ export default function getFantomTestConfigs(
217
230
}
218
231
}
219
232
233
+ const maybeJsMode = pragmas . fantom_js_mode ;
234
+
235
+ if ( maybeJsMode != null ) {
236
+ if ( Array . isArray ( maybeJsMode ) ) {
237
+ throw new Error ( 'Expected a single value for @fantom_js_mode' ) ;
238
+ }
239
+
240
+ const jsMode = maybeJsMode ;
241
+
242
+ switch ( jsMode ) {
243
+ case 'dev' :
244
+ config . jsMode = FantomTestConfigJsMode . Development ;
245
+ break ;
246
+ case 'opt' :
247
+ config . jsMode = FantomTestConfigJsMode . Optimized ;
248
+ break ;
249
+ case '*' :
250
+ configVariations . push ( [
251
+ { jsMode : FantomTestConfigJsMode . Development } ,
252
+ { jsMode : FantomTestConfigJsMode . Optimized } ,
253
+ ] ) ;
254
+ break ;
255
+ default :
256
+ throw new Error ( `Invalid Fantom jsMode: ${ jsMode } ` ) ;
257
+ }
258
+ } else {
259
+ // If not set, match the native mode
260
+ config . jsMode =
261
+ config . mode === FantomTestConfigMode . Optimized
262
+ ? FantomTestConfigJsMode . Optimized
263
+ : FantomTestConfigJsMode . Development ;
264
+ }
265
+
220
266
const maybeHermesVariant = pragmas . fantom_hermes_variant ;
221
267
222
268
if ( maybeHermesVariant != null ) {
@@ -378,6 +424,7 @@ function getConfigurationVariations(
378
424
for (const currentConfigVariation of currentConfigVariations) {
379
425
const currentConfigWithVariation = {
380
426
mode : currentConfigVariation . mode ?? config . mode ,
427
+ jsMode : currentConfigVariation . jsMode ?? config . jsMode ,
381
428
hermesVariant :
382
429
currentConfigVariation . hermesVariant ?? config . hermesVariant ,
383
430
flags : {
0 commit comments