@maplibre/maplibre-gl-style-spec
Version:
a specification for maplibre styles
35 lines (32 loc) • 1.08 kB
text/typescript
import {ValidationError} from '../error/validation_error';
import {unbundle} from '../util/unbundle_jsonlint';
export function validateEnum(options) {
const key = options.key;
const value = options.value;
const valueSpec = options.valueSpec;
const errors = [];
if (Array.isArray(valueSpec.values)) {
// <=v7
if (valueSpec.values.indexOf(unbundle(value)) === -1) {
errors.push(
new ValidationError(
key,
value,
`expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`
)
);
}
} else {
// >=v8
if (Object.keys(valueSpec.values).indexOf(unbundle(value) as string) === -1) {
errors.push(
new ValidationError(
key,
value,
`expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`
)
);
}
}
return errors;
}