frontend/.pnpm-store/v3/files/e1/08a87b7764ff309efb27c204fd4e9683869b9212a50dbb3cdcf1d51227813add3779a869d0e566c88da6ce1aafcb10d9df01b8525328ca011274fff8c3f34b-exec

32 lines
922 B
Plaintext
Executable File

import { ToString } from './262';
/**
* https://tc39.es/ecma402/#sec-getoption
* @param opts
* @param prop
* @param type
* @param values
* @param fallback
*/
export function GetOption(opts, prop, type, values, fallback) {
if (typeof opts !== 'object') {
throw new TypeError('Options must be an object');
}
var value = opts[prop];
if (value !== undefined) {
if (type !== 'boolean' && type !== 'string') {
throw new TypeError('invalid type');
}
if (type === 'boolean') {
value = Boolean(value);
}
if (type === 'string') {
value = ToString(value);
}
if (values !== undefined && !values.filter(function (val) { return val == value; }).length) {
throw new RangeError("".concat(value, " is not within ").concat(values.join(', ')));
}
return value;
}
return fallback;
}