Throw an error when _getProfile doesn't have a matching profile (#1826)

This commit is contained in:
toasted-nutbread 2021-07-13 20:19:48 -04:00 committed by GitHub
parent 437b588411
commit d5320c71a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -996,14 +996,27 @@ class Backend {
_getProfile(optionsContext, useSchema=false) {
const options = this._getOptionsFull(useSchema);
const profiles = options.profiles;
if (optionsContext.current) {
return profiles[options.profileCurrent];
if (!optionsContext.current) {
// Specific index
const {index} = optionsContext;
if (typeof index === 'number') {
if (index < 0 || index >= profiles.length) {
throw this._createDataError(`Invalid profile index: ${index}`, optionsContext);
}
if (typeof optionsContext.index === 'number') {
return profiles[optionsContext.index];
return profiles[index];
}
// From context
const profile = this._getProfileFromContext(options, optionsContext);
return profile !== null ? profile : profiles[options.profileCurrent];
if (profile !== null) {
return profile;
}
}
// Default
const {profileCurrent} = options;
if (profileCurrent < 0 || profileCurrent >= profiles.length) {
throw this._createDataError(`Invalid current profile index: ${profileCurrent}`, optionsContext);
}
return profiles[profileCurrent];
}
_getProfileFromContext(options, optionsContext) {
@ -1030,6 +1043,12 @@ class Backend {
return null;
}
_createDataError(message, data) {
const error = new Error(message);
error.data = data;
return error;
}
_clearProfileConditionsSchemaCache() {
this._profileConditionsSchemaCache = [];
}