From 9bdb95c9e34cef640534e5e5a1e2225a80442000 Mon Sep 17 00:00:00 2001
From: HelenHuang <LinHuang@pollex.com.tw>
Date: 星期四, 09 六月 2022 15:48:15 +0800
Subject: [PATCH] TODO#139894 [ footer -最下方說明與保經代合作 ] 文案修改

---
 PAMapp/node_modules/browserslist/index.js |  247 ++++++++++++++++++++++++++----------------------
 1 files changed, 134 insertions(+), 113 deletions(-)

diff --git a/PAMapp/node_modules/browserslist/index.js b/PAMapp/node_modules/browserslist/index.js
index e1785be..37e35b3 100644
--- a/PAMapp/node_modules/browserslist/index.js
+++ b/PAMapp/node_modules/browserslist/index.js
@@ -13,45 +13,42 @@
 var QUERY_OR = 1
 var QUERY_AND = 2
 
-function isVersionsMatch (versionA, versionB) {
+function isVersionsMatch(versionA, versionB) {
   return (versionA + '.').indexOf(versionB + '.') === 0
 }
 
-function isEolReleased (name) {
+function isEolReleased(name) {
   var version = name.slice(1)
-  return jsReleases.some(function (i) {
-    return isVersionsMatch(i.version, version)
+  return browserslist.nodeVersions.some(function (i) {
+    return isVersionsMatch(i, version)
   })
 }
 
-function normalize (versions) {
+function normalize(versions) {
   return versions.filter(function (version) {
     return typeof version === 'string'
   })
 }
 
-function normalizeElectron (version) {
+function normalizeElectron(version) {
   var versionToUse = version
   if (version.split('.').length === 3) {
-    versionToUse = version
-      .split('.')
-      .slice(0, -1)
-      .join('.')
+    versionToUse = version.split('.').slice(0, -1).join('.')
   }
   return versionToUse
 }
 
-function nameMapper (name) {
-  return function mapName (version) {
+function nameMapper(name) {
+  return function mapName(version) {
     return name + ' ' + version
   }
 }
 
-function getMajor (version) {
+function getMajor(version) {
   return parseInt(version.split('.')[0])
 }
 
-function getMajorVersions (released, number) {
+function getMajorVersions(released, number) {
   if (released.length === 0) return []
   var majorVersions = uniq(released.map(getMajor))
   var minimum = majorVersions[majorVersions.length - number]
@@ -66,7 +63,7 @@
   return selected
 }
 
-function uniq (array) {
+function uniq(array) {
   var filtered = []
   for (var i = 0; i < array.length; i++) {
     if (filtered.indexOf(array[i]) === -1) filtered.push(array[i])
@@ -76,13 +73,13 @@
 
 // Helpers
 
-function fillUsage (result, name, data) {
+function fillUsage(result, name, data) {
   for (var i in data) {
     result[name + ' ' + i] = data[i]
   }
 }
 
-function generateFilter (sign, version) {
+function generateFilter(sign, version) {
   version = parseFloat(version)
   if (sign === '>') {
     return function (v) {
@@ -103,7 +100,7 @@
   }
 }
 
-function generateSemverFilter (sign, version) {
+function generateSemverFilter(sign, version) {
   version = version.split('.').map(parseSimpleInt)
   version[1] = version[1] || 0
   version[2] = version[2] || 0
@@ -130,17 +127,17 @@
   }
 }
 
-function parseSimpleInt (x) {
+function parseSimpleInt(x) {
   return parseInt(x)
 }
 
-function compare (a, b) {
+function compare(a, b) {
   if (a < b) return -1
   if (a > b) return +1
   return 0
 }
 
-function compareSemver (a, b) {
+function compareSemver(a, b) {
   return (
     compare(parseInt(a[0]), parseInt(b[0])) ||
     compare(parseInt(a[1] || '0'), parseInt(b[1] || '0')) ||
@@ -149,7 +146,7 @@
 }
 
 // this follows the npm-like semver behavior
-function semverFilterLoose (operator, range) {
+function semverFilterLoose(operator, range) {
   range = range.split('.').map(parseSimpleInt)
   if (typeof range[1] === 'undefined') {
     range[1] = 'x'
@@ -162,8 +159,8 @@
         version = version.split('.').map(parseSimpleInt)
         return compareSemverLoose(version, range) <= 0
       }
-    default:
     case '>=':
+    default:
       return function (version) {
         version = version.split('.').map(parseSimpleInt)
         return compareSemverLoose(version, range) >= 0
@@ -172,7 +169,7 @@
 }
 
 // this follows the npm-like semver behavior
-function compareSemverLoose (version, range) {
+function compareSemverLoose(version, range) {
   if (version[0] !== range[0]) {
     return version[0] < range[0] ? -1 : +1
   }
@@ -185,7 +182,7 @@
   return 0
 }
 
-function resolveVersion (data, version) {
+function resolveVersion(data, version) {
   if (data.versions.indexOf(version) !== -1) {
     return version
   } else if (browserslist.versionAliases[data.name][version]) {
@@ -195,7 +192,7 @@
   }
 }
 
-function normalizeVersion (data, version) {
+function normalizeVersion(data, version) {
   var resolved = resolveVersion(data, version)
   if (resolved) {
     return resolved
@@ -206,19 +203,20 @@
   }
 }
 
-function filterByYear (since, context) {
+function filterByYear(since, context) {
   since = since / 1000
   return Object.keys(agents).reduce(function (selected, name) {
     var data = byName(name, context)
     if (!data) return selected
     var versions = Object.keys(data.releaseDate).filter(function (v) {
-      return data.releaseDate[v] >= since
+      var date = data.releaseDate[v]
+      return date !== null && date >= since
     })
     return selected.concat(versions.map(nameMapper(data.name)))
   }, [])
 }
 
-function cloneData (data) {
+function cloneData(data) {
   return {
     name: data.name,
     versions: data.versions,
@@ -227,14 +225,14 @@
   }
 }
 
-function mapVersions (data, map) {
+function mapVersions(data, map) {
   data.versions = data.versions.map(function (i) {
     return map[i] || i
   })
   data.released = data.versions.map(function (i) {
     return map[i] || i
   })
-  var fixedDate = { }
+  var fixedDate = {}
   for (var i in data.releaseDate) {
     fixedDate[map[i] || i] = data.releaseDate[i]
   }
@@ -242,7 +240,7 @@
   return data
 }
 
-function byName (name, context) {
+function byName(name, context) {
   name = name.toLowerCase()
   name = browserslist.aliases[name] || name
   if (context.mobileToDesktop && browserslist.desktopNames[name]) {
@@ -261,34 +259,38 @@
   return browserslist.data[name]
 }
 
-function normalizeAndroidVersions (androidVersions, chromeVersions) {
+function normalizeAndroidVersions(androidVersions, chromeVersions) {
   var firstEvergreen = ANDROID_EVERGREEN_FIRST
   var last = chromeVersions[chromeVersions.length - 1]
   return androidVersions
-    .filter(function (version) { return /^(?:[2-4]\.|[34]$)/.test(version) })
+    .filter(function (version) {
+      return /^(?:[2-4]\.|[34]$)/.test(version)
+    })
     .concat(chromeVersions.slice(firstEvergreen - last - 1))
 }
 
-function normalizeAndroidData (android, chrome) {
+function normalizeAndroidData(android, chrome) {
   android.released = normalizeAndroidVersions(android.released, chrome.released)
   android.versions = normalizeAndroidVersions(android.versions, chrome.versions)
   return android
 }
 
-function checkName (name, context) {
+function checkName(name, context) {
   var data = byName(name, context)
   if (!data) throw new BrowserslistError('Unknown browser ' + name)
   return data
 }
 
-function unknownQuery (query) {
+function unknownQuery(query) {
   return new BrowserslistError(
-    'Unknown browser query `' + query + '`. ' +
-    'Maybe you are using old Browserslist or made typo in query.'
+    'Unknown browser query `' +
+      query +
+      '`. ' +
+      'Maybe you are using old Browserslist or made typo in query.'
   )
 }
 
-function filterAndroid (list, versions, context) {
+function filterAndroid(list, versions, context) {
   if (context.mobileToDesktop) return list
   var released = browserslist.data.android.released
   var last = released[released.length - 1]
@@ -308,7 +310,7 @@
  * the select function in `queries`.
  * @returns {string[]} A list of browsers
  */
-function resolve (queries, context) {
+function resolve(queries, context) {
   if (Array.isArray(queries)) {
     queries = flatten(queries.map(parse))
   } else {
@@ -323,7 +325,10 @@
       if (index === 0) {
         throw new BrowserslistError(
           'Write any browsers query (for instance, `defaults`) ' +
-          'before `' + selection + '`')
+            'before `' +
+            selection +
+            '`'
+        )
       }
       selection = selection.slice(4)
     }
@@ -356,7 +361,7 @@
           case QUERY_OR:
           default:
             if (isExclude) {
-              var filter = { }
+              var filter = {}
               array.forEach(function (j) {
                 filter[j] = true
               })
@@ -373,7 +378,7 @@
   }, [])
 }
 
-var cache = { }
+var cache = {}
 
 /**
  * Return array of browsers by selection queries.
@@ -392,6 +397,7 @@
  *                                                     version in direct query.
  * @param {boolean} [opts.dangerousExtend] Disable security checks
  *                                         for extend query.
+ * @param {boolean} [opts.throwOnMissing] Throw error on missing env.
  * @param {boolean} [opts.mobileToDesktop] Alias mobile browsers to the desktop
  *                                         version when Can I Use doesn't have
  *                                         data about the specified version.
@@ -400,8 +406,8 @@
  * @example
  * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8']
  */
-function browserslist (queries, opts) {
-  if (typeof opts === 'undefined') opts = { }
+function browserslist(queries, opts) {
+  if (typeof opts === 'undefined') opts = {}
 
   if (typeof opts.path === 'undefined') {
     opts.path = path.resolve ? path.resolve('.') : '.'
@@ -418,7 +424,8 @@
 
   if (!(typeof queries === 'string' || Array.isArray(queries))) {
     throw new BrowserslistError(
-      'Browser queries must be an array or string. Got ' + typeof queries + '.')
+      'Browser queries must be an array or string. Got ' + typeof queries + '.'
+    )
   }
 
   var context = {
@@ -432,7 +439,7 @@
   env.oldDataWarning(browserslist.data)
   var stats = env.getStat(opts, browserslist.data)
   if (stats) {
-    context.customUsage = { }
+    context.customUsage = {}
     for (var browser in stats) {
       fillUsage(context.customUsage, browser, stats[browser])
     }
@@ -461,7 +468,7 @@
   return result
 }
 
-function parse (queries) {
+function parse(queries) {
   var qs = []
   do {
     queries = doMatch(queries, qs)
@@ -469,7 +476,7 @@
   return qs
 }
 
-function doMatch (string, qs) {
+function doMatch(string, qs) {
   var or = /^(?:,\s*|\s+or\s+)(.*)/i
   var and = /^\s+and\s+(.*)/i
 
@@ -488,7 +495,7 @@
   })
 }
 
-function find (string, predicate) {
+function find(string, predicate) {
   for (var n = 1, max = string.length; n <= max; n++) {
     var parsed = string.substr(-n, n)
     if (predicate(parsed, n, max)) {
@@ -498,7 +505,7 @@
   return ''
 }
 
-function flatten (array) {
+function flatten(array) {
   if (!Array.isArray(array)) return [array]
   return array.reduce(function (a, b) {
     return a.concat(flatten(b))
@@ -506,20 +513,15 @@
 }
 
 // Will be filled by Can I Use data below
-browserslist.cache = { }
-browserslist.data = { }
+browserslist.cache = {}
+browserslist.data = {}
 browserslist.usage = {
-  global: { },
+  global: {},
   custom: null
 }
 
 // Default browsers query
-browserslist.defaults = [
-  '> 0.5%',
-  'last 2 versions',
-  'Firefox ESR',
-  'not dead'
-]
+browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead']
 
 // Browser names aliases
 browserslist.aliases = {
@@ -548,7 +550,7 @@
 }
 
 // Aliases to work with joined versions like `ios_saf 7.0-7.1`
-browserslist.versionAliases = { }
+browserslist.versionAliases = {}
 
 browserslist.clearCaches = env.clearCaches
 browserslist.parseConfig = env.parseConfig
@@ -597,7 +599,7 @@
     if ('dataByBrowser' in stats) {
       stats = stats.dataByBrowser
     }
-    data = { }
+    data = {}
     for (var name in stats) {
       for (var version in stats[name]) {
         data[name + ' ' + version] = stats[name][version]
@@ -614,12 +616,9 @@
   }, 0)
 }
 
-function nodeQuery (context, version) {
-  var nodeReleases = jsReleases.filter(function (i) {
-    return i.name === 'nodejs'
-  })
-  var matched = nodeReleases.filter(function (i) {
-    return isVersionsMatch(i.version, version)
+function nodeQuery(context, version) {
+  var matched = browserslist.nodeVersions.filter(function (i) {
+    return isVersionsMatch(i, version)
   })
   if (matched.length === 0) {
     if (context.ignoreUnknownVersions) {
@@ -628,25 +627,23 @@
       throw new BrowserslistError('Unknown version ' + version + ' of Node.js')
     }
   }
-  return ['node ' + matched[matched.length - 1].version]
+  return ['node ' + matched[matched.length - 1]]
 }
 
-function sinceQuery (context, year, month, date) {
+function sinceQuery(context, year, month, date) {
   year = parseInt(year)
   month = parseInt(month || '01') - 1
   date = parseInt(date || '01')
   return filterByYear(Date.UTC(year, month, date, 0, 0, 0), context)
 }
 
-function coverQuery (context, coverage, statMode) {
+function coverQuery(context, coverage, statMode) {
   coverage = parseFloat(coverage)
   var usage = browserslist.usage.global
   if (statMode) {
-    if (statMode.match(/^my\s+stats$/)) {
+    if (statMode.match(/^my\s+stats$/i)) {
       if (!context.customUsage) {
-        throw new BrowserslistError(
-          'Custom usage statistics was not provided'
-        )
+        throw new BrowserslistError('Custom usage statistics was not provided')
       }
       usage = context.customUsage
     } else {
@@ -666,7 +663,7 @@
   var coveraged = 0
   var result = []
   var version
-  for (var i = 0; i <= versions.length; i++) {
+  for (var i = 0; i < versions.length; i++) {
     version = versions[i]
     if (usage[version] === 0) break
     coveraged += usage[version]
@@ -717,6 +714,16 @@
     }
   },
   {
+    regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i,
+    select: function (context, versions) {
+      return getMajorVersions(browserslist.nodeVersions, versions).map(
+        function (version) {
+          return 'node ' + version
+        }
+      )
+    }
+  },
+  {
     regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i,
     select: function (context, versions, name) {
       var data = checkName(name, context)
@@ -736,6 +743,14 @@
         .map(function (i) {
           return 'chrome ' + e2c[i]
         })
+    }
+  },
+  {
+    regexp: /^last\s+(\d+)\s+node\s+versions?$/i,
+    select: function (context, versions) {
+      return browserslist.nodeVersions.slice(-versions).map(function (version) {
+        return 'node ' + version
+      })
     }
   },
   {
@@ -832,19 +847,24 @@
       }
       var usage = context.customUsage
       return Object.keys(usage).reduce(function (result, version) {
+        var percentage = usage[version]
+        if (percentage == null) {
+          return result
+        }
+
         if (sign === '>') {
-          if (usage[version] > popularity) {
+          if (percentage > popularity) {
             result.push(version)
           }
         } else if (sign === '<') {
-          if (usage[version] < popularity) {
+          if (percentage < popularity) {
             result.push(version)
           }
         } else if (sign === '<=') {
-          if (usage[version] <= popularity) {
+          if (percentage <= popularity) {
             result.push(version)
           }
-        } else if (usage[version] >= popularity) {
+        } else if (percentage >= popularity) {
           result.push(version)
         }
         return result
@@ -867,19 +887,24 @@
       }
       var usage = context.customUsage
       return Object.keys(usage).reduce(function (result, version) {
+        var percentage = usage[version]
+        if (percentage == null) {
+          return result
+        }
+
         if (sign === '>') {
-          if (usage[version] > popularity) {
+          if (percentage > popularity) {
             result.push(version)
           }
         } else if (sign === '<') {
-          if (usage[version] < popularity) {
+          if (percentage < popularity) {
             result.push(version)
           }
         } else if (sign === '<=') {
-          if (usage[version] <= popularity) {
+          if (percentage <= popularity) {
             result.push(version)
           }
-        } else if (usage[version] >= popularity) {
+        } else if (percentage >= popularity) {
           result.push(version)
         }
         return result
@@ -898,19 +923,24 @@
       env.loadCountry(browserslist.usage, place, browserslist.data)
       var usage = browserslist.usage[place]
       return Object.keys(usage).reduce(function (result, version) {
+        var percentage = usage[version]
+        if (percentage == null) {
+          return result
+        }
+
         if (sign === '>') {
-          if (usage[version] > popularity) {
+          if (percentage > popularity) {
             result.push(version)
           }
         } else if (sign === '<') {
-          if (usage[version] < popularity) {
+          if (percentage < popularity) {
             result.push(version)
           }
         } else if (sign === '<=') {
-          if (usage[version] <= popularity) {
+          if (percentage <= popularity) {
             result.push(version)
           }
-        } else if (usage[version] >= popularity) {
+        } else if (percentage >= popularity) {
           result.push(version)
         }
         return result
@@ -918,11 +948,11 @@
     }
   },
   {
-    regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/,
+    regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i,
     select: coverQuery
   },
   {
-    regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/,
+    regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i,
     select: coverQuery
   },
   {
@@ -965,14 +995,7 @@
   {
     regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i,
     select: function (context, from, to) {
-      var nodeVersions = jsReleases
-        .filter(function (i) {
-          return i.name === 'nodejs'
-        })
-        .map(function (i) {
-          return i.version
-        })
-      return nodeVersions
+      return browserslist.nodeVersions
         .filter(semverFilterLoose('>=', from))
         .filter(semverFilterLoose('<=', to))
         .map(function (v) {
@@ -986,7 +1009,7 @@
       var data = checkName(name, context)
       from = parseFloat(normalizeVersion(data, from) || from)
       to = parseFloat(normalizeVersion(data, to) || to)
-      function filter (v) {
+      function filter(v) {
         var parsed = parseFloat(v)
         return parsed >= from && parsed <= to
       }
@@ -1007,14 +1030,7 @@
   {
     regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i,
     select: function (context, sign, version) {
-      var nodeVersions = jsReleases
-        .filter(function (i) {
-          return i.name === 'nodejs'
-        })
-        .map(function (i) {
-          return i.version
-        })
-      return nodeVersions
+      return browserslist.nodeVersions
         .filter(generateSemverFilter(sign, version))
         .map(function (v) {
           return 'node ' + v
@@ -1039,7 +1055,7 @@
   {
     regexp: /^(firefox|ff|fx)\s+esr$/i,
     select: function () {
-      return ['firefox 78', 'firefox 91']
+      return ['firefox 91']
     }
   },
   {
@@ -1159,6 +1175,7 @@
     regexp: /^dead$/i,
     select: function (context) {
       var dead = [
+        'Baidu >= 0',
         'ie <= 10',
         'ie_mob <= 11',
         'bb <= 10',
@@ -1180,11 +1197,11 @@
       }
     }
   }
-];
+]
 
 // Get and convert Can I Use data
 
-(function () {
+;(function () {
   for (var name in agents) {
     var browser = agents[name]
     browserslist.data[name] = {
@@ -1195,7 +1212,7 @@
     }
     fillUsage(browserslist.usage.global, name, browser.usage_global)
 
-    browserslist.versionAliases[name] = { }
+    browserslist.versionAliases[name] = {}
     for (var i = 0; i < browser.versions.length; i++) {
       var full = browser.versions[i]
       if (!full) continue
@@ -1210,6 +1227,10 @@
   }
 
   browserslist.versionAliases.op_mob['59'] = '58'
-}())
+
+  browserslist.nodeVersions = jsReleases.map(function (release) {
+    return release.version
+  })
+})()
 
 module.exports = browserslist

--
Gitblit v1.8.0