36 lines
1.4 KiB
TypeScript
Executable File
36 lines
1.4 KiB
TypeScript
Executable File
const boolean = function (value: any): boolean {
|
|
if (typeof value === 'string') {
|
|
// According to our ESLint rules, the regular expression following below
|
|
// should be using a named capture group. This is an official part of
|
|
// ES2018, but Firefox fails to implement it. There has been an open issue
|
|
// for this (see https://bugzilla.mozilla.org/show_bug.cgi?id=1362154) since
|
|
// 2016 now, and Mozilla fails to fix this. To avoid breaking support with
|
|
// Firefox, we explicitly disable the ESLint rule here and use a regular
|
|
// expression without a named capture group. We should check from time to
|
|
// time, whether support in Firefox has finally been added. Besides the
|
|
// issue, we can check this using the following link to the kangax table:
|
|
// https://kangax.github.io/compat-table/es2016plus/#test-RegExp_named_capture_groups
|
|
|
|
// The original line, which is failing in Firefox:
|
|
// return /^(?<truthy>true|t|yes|y|on|1)$/iu.test(value.trim());
|
|
|
|
// The replacement line, which should be removed at some point in the
|
|
// future, including the ESLint comments:
|
|
/* eslint-disable prefer-named-capture-group */
|
|
return /^(true|t|yes|y|on|1)$/iu.test(value.trim());
|
|
/* eslint-enable prefer-named-capture-group */
|
|
}
|
|
|
|
if (typeof value === 'number') {
|
|
return value === 1;
|
|
}
|
|
|
|
if (typeof value === 'boolean') {
|
|
return value;
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
export { boolean };
|