@samitouri / QOS-React / commits / 91dab8e19c

[be] Dont copy default config values if key is present

Joe Savona committed Oct 3, 2023 at 16:57 UTC 91dab8e19c984f81e7fc2b5139a5427c7f284821
1 file changed +14 -5
compiler/packages/babel-plugin-react-forget/src/HIR/Environment.ts
+14 -5
@@ -246,7 +246,7 @@ export type EnvironmentConfig = {
246 bailoutOnHoleyArrays: boolean;
247 };
248
249 -const DEFAULT_ENVIRONMENT_CONFIG: EnvironmentConfig = {
249 +const DEFAULT_ENVIRONMENT_CONFIG: Readonly<EnvironmentConfig> = {
250 customHooks: null,
251
252 enableTreatHooksAsFunctions: true,
@@ -269,6 +269,10 @@ const DEFAULT_ENVIRONMENT_CONFIG: EnvironmentConfig = {
269 validateRefAccessDuringRender: false,
270 };
271
272 +function isEnvironmentConfigKey(key: string): key is keyof EnvironmentConfig {
273 + return Object.prototype.hasOwnProperty.call(DEFAULT_ENVIRONMENT_CONFIG, key);
274 +}
275 +
276 export type PartialEnvironmentConfig = Partial<EnvironmentConfig>;
277
278 export class Environment {
@@ -287,10 +291,15 @@ export class Environment {
291 ) {
292 this.#shapes = new Map(DEFAULT_SHAPES);
293 const config: EnvironmentConfig = { ...DEFAULT_ENVIRONMENT_CONFIG };
290 - for (const rawKey in DEFAULT_ENVIRONMENT_CONFIG) {
291 - const key = rawKey as keyof EnvironmentConfig;
292 - const value = partialConfig?.[key] ?? DEFAULT_ENVIRONMENT_CONFIG[key];
293 - config[key] = value as any;
294 + if (partialConfig != null) {
295 + for (const key of Object.keys(DEFAULT_ENVIRONMENT_CONFIG)) {
296 + if (!isEnvironmentConfigKey(key)) {
297 + continue;
298 + }
299 + if (Object.prototype.hasOwnProperty.call(partialConfig, key)) {
300 + config[key] = partialConfig[key] as any; // we know the key is present from hasOwnProperty
301 + }
302 + }
303 }
304 this.config = config;
305