Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
32 lines
720 B
Plaintext
32 lines
720 B
Plaintext
/**
|
|
* https://tc39.es/ecma402/#sec-getstringorbooleanoption
|
|
* @param opts
|
|
* @param prop
|
|
* @param values
|
|
* @param trueValue
|
|
* @param falsyValue
|
|
* @param fallback
|
|
*/
|
|
import { ToString } from "./262.js";
|
|
export function GetStringOrBooleanOption(opts, prop, values, trueValue, falsyValue, fallback) {
|
|
let value = opts[prop];
|
|
if (value === undefined) {
|
|
return fallback;
|
|
}
|
|
if (value === true) {
|
|
return trueValue;
|
|
}
|
|
const valueBoolean = Boolean(value);
|
|
if (valueBoolean === false) {
|
|
return falsyValue;
|
|
}
|
|
value = ToString(value);
|
|
if (value === "true" || value === "false") {
|
|
return fallback;
|
|
}
|
|
if ((values || []).indexOf(value) === -1) {
|
|
throw new RangeError(`Invalid value ${value}`);
|
|
}
|
|
return value;
|
|
}
|