diff --git a/.changeset/sharp-terms-pay.md b/.changeset/sharp-terms-pay.md new file mode 100644 index 0000000000000..249af5b617971 --- /dev/null +++ b/.changeset/sharp-terms-pay.md @@ -0,0 +1,5 @@ +--- +'@eth-optimism/common-ts': patch +--- + +Have BaseServiceV2 throw when options are undefined diff --git a/packages/common-ts/src/base-service/base-service-v2.ts b/packages/common-ts/src/base-service/base-service-v2.ts index 17b7b1cad7288..1041196a3fd21 100644 --- a/packages/common-ts/src/base-service/base-service-v2.ts +++ b/packages/common-ts/src/base-service/base-service-v2.ts @@ -218,6 +218,16 @@ export abstract class BaseServiceV2< return acc }, {}) as TOptions + // Make sure all options are defined. + for (const [optionName, optionSpec] of Object.entries(params.optionsSpec)) { + if ( + optionSpec.default === undefined && + this.options[optionName] === undefined + ) { + throw new Error(`missing required option: ${optionName}`) + } + } + // Create the metrics objects. this.metrics = Object.keys(params.metricsSpec || {}).reduce((acc, key) => { const spec = params.metricsSpec[key]