From c3480e5666672eeda62e4b3af6e4356c12e00d8a Mon Sep 17 00:00:00 2001 From: Rik Smale Date: Fri, 28 Mar 2025 23:59:42 +0100 Subject: [PATCH] fix: remove using of includes to support IE --- src/lib/isBoolean.js | 5 +++-- src/lib/isDecimal.js | 2 +- src/lib/isIBAN.js | 5 +++-- src/lib/isIdentityCard.js | 3 ++- src/lib/isJSON.js | 3 ++- src/lib/isLatLong.js | 3 ++- src/lib/isURL.js | 5 +++-- src/lib/util/{includes.js => includesArray.js} | 0 src/lib/util/includesString.js | 3 +++ 9 files changed, 19 insertions(+), 10 deletions(-) rename src/lib/util/{includes.js => includesArray.js} (100%) create mode 100644 src/lib/util/includesString.js diff --git a/src/lib/isBoolean.js b/src/lib/isBoolean.js index 9fddc2b48..40ebd3504 100644 --- a/src/lib/isBoolean.js +++ b/src/lib/isBoolean.js @@ -1,4 +1,5 @@ import assertString from './util/assertString'; +import includes from './util/includesArray'; const defaultOptions = { loose: false }; const strictBooleans = ['true', 'false', '1', '0']; @@ -8,8 +9,8 @@ export default function isBoolean(str, options = defaultOptions) { assertString(str); if (options.loose) { - return looseBooleans.includes(str.toLowerCase()); + return includes(looseBooleans, str.toLowerCase()); } - return strictBooleans.includes(str); + return includes(strictBooleans, str); } diff --git a/src/lib/isDecimal.js b/src/lib/isDecimal.js index 488668a52..474eff2b0 100644 --- a/src/lib/isDecimal.js +++ b/src/lib/isDecimal.js @@ -1,6 +1,6 @@ import merge from './util/merge'; import assertString from './util/assertString'; -import includes from './util/includes'; +import includes from './util/includesArray'; import { decimal } from './alpha'; function decimalRegExp(options) { diff --git a/src/lib/isIBAN.js b/src/lib/isIBAN.js index 94ac67ca5..ed0abd6c0 100644 --- a/src/lib/isIBAN.js +++ b/src/lib/isIBAN.js @@ -1,4 +1,5 @@ import assertString from './util/assertString'; +import includes from './util/includesArray'; /** * List of country codes with @@ -131,7 +132,7 @@ function hasValidIbanFormat(str, options) { return false; } - const isoCountryCodeInWhiteList = options.whitelist.includes(isoCountryCode); + const isoCountryCodeInWhiteList = includes(options.whitelist, isoCountryCode); if (!isoCountryCodeInWhiteList) { return false; @@ -139,7 +140,7 @@ function hasValidIbanFormat(str, options) { } if (options.blacklist) { - const isoCountryCodeInBlackList = options.blacklist.includes(isoCountryCode); + const isoCountryCodeInBlackList = includes(options.blacklist, isoCountryCode); if (isoCountryCodeInBlackList) { return false; diff --git a/src/lib/isIdentityCard.js b/src/lib/isIdentityCard.js index 060618fce..fc37d4a29 100644 --- a/src/lib/isIdentityCard.js +++ b/src/lib/isIdentityCard.js @@ -1,4 +1,5 @@ import assertString from './util/assertString'; +import includes from './util/includesArray'; import isInt from './isInt'; const validators = { @@ -277,7 +278,7 @@ const validators = { const parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; - const checkAddressCode = addressCode => provincesAndCities.includes(addressCode); + const checkAddressCode = addressCode => includes(provincesAndCities, addressCode); const checkBirthDayCode = (birDayCode) => { const yyyy = parseInt(birDayCode.substring(0, 4), 10); diff --git a/src/lib/isJSON.js b/src/lib/isJSON.js index d3731e337..5c51dd31c 100644 --- a/src/lib/isJSON.js +++ b/src/lib/isJSON.js @@ -1,4 +1,5 @@ import assertString from './util/assertString'; +import includes from './util/includesArray'; import merge from './util/merge'; const default_json_options = { @@ -15,7 +16,7 @@ export default function isJSON(str, options) { } const obj = JSON.parse(str); - return primitives.includes(obj) || (!!obj && typeof obj === 'object'); + return includes(primitives, obj) || (!!obj && typeof obj === 'object'); } catch (e) { /* ignore */ } return false; } diff --git a/src/lib/isLatLong.js b/src/lib/isLatLong.js index 5c53c23aa..c4e622753 100644 --- a/src/lib/isLatLong.js +++ b/src/lib/isLatLong.js @@ -1,5 +1,6 @@ import assertString from './util/assertString'; import merge from './util/merge'; +import includes from './util/includesString'; const lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/; const long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/; @@ -15,7 +16,7 @@ export default function isLatLong(str, options) { assertString(str); options = merge(options, defaultLatLongOptions); - if (!str.includes(',')) return false; + if (!includes(str, ',')) return false; const pair = str.split(','); if ((pair[0].startsWith('(') && !pair[1].endsWith(')')) || (pair[1].endsWith(')') && !pair[0].startsWith('('))) return false; diff --git a/src/lib/isURL.js b/src/lib/isURL.js index 9bfafbf0c..24ac452ba 100644 --- a/src/lib/isURL.js +++ b/src/lib/isURL.js @@ -1,5 +1,6 @@ import assertString from './util/assertString'; import checkHost from './util/checkHost'; +import includes from './util/includesString'; import isFQDN from './isFQDN'; import isIP from './isIP'; @@ -53,11 +54,11 @@ export default function isURL(url, options) { return false; } - if (!options.allow_fragments && url.includes('#')) { + if (!options.allow_fragments && includes(url, '#')) { return false; } - if (!options.allow_query_components && (url.includes('?') || url.includes('&'))) { + if (!options.allow_query_components && (includes(url, '?') || includes(url, '&'))) { return false; } diff --git a/src/lib/util/includes.js b/src/lib/util/includesArray.js similarity index 100% rename from src/lib/util/includes.js rename to src/lib/util/includesArray.js diff --git a/src/lib/util/includesString.js b/src/lib/util/includesString.js new file mode 100644 index 000000000..41a50bba8 --- /dev/null +++ b/src/lib/util/includesString.js @@ -0,0 +1,3 @@ +const includes = (str, val) => str.indexOf(val) !== -1; + +export default includes;