diff --git a/lib/index.js b/lib/index.js index 5b7ea68..8b696fb 100644 --- a/lib/index.js +++ b/lib/index.js @@ -98,12 +98,16 @@ class Config { const types = {} const defaults = {} this.deprecated = {} + this.deprecatedValues = {} for (const [key, def] of Object.entries(definitions)) { defaults[key] = def.default types[key] = def.type if (def.deprecated) { this.deprecated[key] = def.deprecated.trim().replace(/\n +/, '\n') } + if (def.deprecatedValues) { + this.deprecatedValues[key] = def.deprecatedValues + } } // populated the first time we flatten the object @@ -507,7 +511,13 @@ class Config { [_checkDeprecated] (key, where, obj, kv) { // XXX(npm9+) make this throw an error - if (this.deprecated[key]) { + const value = obj[key] + const hasDeprecatedValues = Array.isArray(this.deprecatedValues[key]) + const warn = + (hasDeprecatedValues && this.deprecatedValues[key].includes(value)) || + (!hasDeprecatedValues && this.deprecated[key]) + + if (warn) { log.warn('config', key, this.deprecated[key]) } }