| 70 | * @returns {boolean} true if supports |
| 71 | */ |
| 72 | const rawChecker = (versions) => |
| 73 | browsers.every((v) => { |
| 74 | const [name, parsedVersion] = v.split(class="st">" "); |
| 75 | if (!name) return false; |
| 76 | const requiredVersion = versions[name]; |
| 77 | if (!requiredVersion) return false; |
| 78 | const [parsedMajor, parserMinor] = |
| 79 | class="cm">// safari TP supports all features for normal safari |
| 80 | parsedVersion === class="st">"TP" |
| 81 | ? [Infinity, Infinity] |
| 82 | : parsedVersion.includes(class="st">"-") |
| 83 | ? parsedVersion.split(class="st">"-")[0].split(class="st">".") |
| 84 | : parsedVersion.split(class="st">"."); |
| 85 | if (typeof requiredVersion === class="st">"number") { |
| 86 | return Number(parsedMajor) >= requiredVersion; |
| 87 | } |
| 88 | return requiredVersion[0] === Number(parsedMajor) |
| 89 | ? Number(parserMinor) >= requiredVersion[1] |
| 90 | : Number(parsedMajor) > requiredVersion[0]; |
| 91 | }); |
| 92 | const anyNode = browsers.some((b) => b.startsWith(class="st">"node ")); |
| 93 | const anyBrowser = browsers.some((b) => /^(?!node)/.test(b)); |
| 94 | const browserProperty = !anyBrowser ? false : anyNode ? null : true; |