From a1fc3030cf10b8db5425df60e176905af0d6827c Mon Sep 17 00:00:00 2001 From: David Murdoch Date: Tue, 21 Mar 2023 14:32:02 -0400 Subject: [PATCH 1/3] optimize --- src/packages/options/src/create.ts | 37 +++++++++++++----------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/src/packages/options/src/create.ts b/src/packages/options/src/create.ts index c52b46b1bc..5ee7755231 100644 --- a/src/packages/options/src/create.ts +++ b/src/packages/options/src/create.ts @@ -6,11 +6,9 @@ import { hasOwn } from "@ganache/utils"; export type NamespacedOptions = { [key: string]: Base.Config }; -export type ProviderOptions = Partial< - { - [K in keyof O]: ExternalConfig; - } ->; +export type ProviderOptions = Partial<{ + [K in keyof O]: ExternalConfig; +}>; export type InternalOptions = { [K in keyof O]: InternalConfig; @@ -38,22 +36,22 @@ const checkForConflicts = ( } }; -function fill(defaults: any, options: any, target: any, namespace: any) { - const def = defaults[namespace]; +function fill(options: any, target: any, def: any, namespace: any) { const config = (target[namespace] = target[namespace] || {}); const flavor = options.flavor; const suppliedOptions = new Set(); - const keys = Object.keys(def); + const entries = Object.entries(def) as [string, any][]; if (hasOwn(options, namespace)) { const namespaceOptions = options[namespace]; - for (let i = 0, l = keys.length; i < l; i++) { - const key = keys[i]; - const propDefinition = def[key]; + for (let i = 0, l = entries.length; i < l; i++) { + const entry = entries[i]; + const key = entry[0]; + const propDefinition = entry[1]; let value = namespaceOptions[key]; if (value !== undefined) { - const normalized = propDefinition.normalize(namespaceOptions[key]); + const normalized = propDefinition.normalize(value); if (normalized !== undefined) { checkForConflicts( key, @@ -85,9 +83,10 @@ function fill(defaults: any, options: any, target: any, namespace: any) { } } } else { - for (let i = 0, l = keys.length; i < l; i++) { - const key = keys[i]; - const propDefinition = def[key]; + for (let i = 0, l = entries.length; i < l; i++) { + const entry = entries[i]; + const key = entry[0]; + const propDefinition = entry[1]; const legacyName = propDefinition.legacyName || key; const value = options[legacyName]; @@ -112,19 +111,15 @@ function fill(defaults: any, options: any, target: any, namespace: any) { export class OptionsConfig { #defaults: Defaults; - #namespaces: UnionToTuple>; constructor(defaults: Defaults) { this.#defaults = defaults; - this.#namespaces = Object.keys(defaults) as UnionToTuple>; } normalize(options: ProviderOptions) { - const defaults = this.#defaults; - const out = {} as InternalOptions; - this.#namespaces.forEach(namespace => { - fill(defaults, options, out, namespace as keyof Defaults); + Object.entries(this.#defaults).forEach(([namespace, definition]) => { + fill(options, out, definition, namespace as keyof Defaults); }); return out; } From b6b65327cf9f589f16d0a2018686e96e5b3e47dc Mon Sep 17 00:00:00 2001 From: David Murdoch <187813+davidmurdoch@users.noreply.github.com> Date: Tue, 20 Jun 2023 17:30:29 -0400 Subject: [PATCH 2/3] Update src/packages/options/src/create.ts Co-authored-by: jeffsmale90 <6363749+jeffsmale90@users.noreply.github.com> --- src/packages/options/src/create.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/packages/options/src/create.ts b/src/packages/options/src/create.ts index 5ee7755231..2be20390d4 100644 --- a/src/packages/options/src/create.ts +++ b/src/packages/options/src/create.ts @@ -45,10 +45,7 @@ function fill(options: any, target: any, def: any, namespace: any) { if (hasOwn(options, namespace)) { const namespaceOptions = options[namespace]; - for (let i = 0, l = entries.length; i < l; i++) { - const entry = entries[i]; - const key = entry[0]; - const propDefinition = entry[1]; + for (const [key, propDefinition] of entries) { let value = namespaceOptions[key]; if (value !== undefined) { const normalized = propDefinition.normalize(value); From 183562f960f7723e3e16fce154f2da9548f3a885 Mon Sep 17 00:00:00 2001 From: David Murdoch <187813+davidmurdoch@users.noreply.github.com> Date: Tue, 20 Jun 2023 17:30:43 -0400 Subject: [PATCH 3/3] Update src/packages/options/src/create.ts Co-authored-by: jeffsmale90 <6363749+jeffsmale90@users.noreply.github.com> --- src/packages/options/src/create.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/packages/options/src/create.ts b/src/packages/options/src/create.ts index 2be20390d4..491728c828 100644 --- a/src/packages/options/src/create.ts +++ b/src/packages/options/src/create.ts @@ -80,10 +80,7 @@ function fill(options: any, target: any, def: any, namespace: any) { } } } else { - for (let i = 0, l = entries.length; i < l; i++) { - const entry = entries[i]; - const key = entry[0]; - const propDefinition = entry[1]; + for (const [key, propDefinition] of entries) { const legacyName = propDefinition.legacyName || key; const value = options[legacyName];