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