prefer set over array

This commit is contained in:
silverwind 2020-03-15 18:23:42 +01:00
parent ae8738de11
commit 9b01fe8932
Signed by: silverwind
GPG Key ID: 2E62B41C93869443

@ -511,29 +511,29 @@ function rangeToVersion(range) {
} }
} }
function findVersion(data, versions, opts) { function findVersion(data, versions, {range, semvers, usePre, useRel, useGreatest} = {}) {
let tempVersion = rangeToVersion(opts.range); let tempVersion = rangeToVersion(range);
let tempDate = 0; let tempDate = 0;
const semvers = opts.semvers.slice(); semvers = new Set(semvers);
const usePre = isRangePrerelease(opts.range) || opts.usePre; usePre = isRangePrerelease(range) || usePre;
if (usePre) { if (usePre) {
semvers.push("prerelease"); semvers.add("prerelease");
if (semvers.includes("patch")) semvers.push("prepatch"); if (semvers.has("patch")) semvers.add("prepatch");
if (semvers.includes("minor")) semvers.push("preminor"); if (semvers.has("minor")) semvers.add("preminor");
if (semvers.includes("major")) semvers.push("premajor"); if (semvers.has("major")) semvers.add("premajor");
} }
for (const version of versions) { for (const version of versions) {
const parsed = semver.parse(version); const parsed = semver.parse(version);
if (parsed.prerelease.length && (!usePre || opts.useRel)) continue; if (parsed.prerelease.length && (!usePre || useRel)) continue;
const diff = semver.diff(tempVersion, parsed.version); const diff = semver.diff(tempVersion, parsed.version);
if (!diff || !semvers.includes(diff)) continue; if (!diff || !semvers.has(diff)) continue;
// some registries like github don't have data.time available, fall back to greatest on them // some registries like github don't have data.time available, fall back to greatest on them
if (opts.useGreatest || !("time" in data)) { if (useGreatest || !("time" in data)) {
if (semver.gte(semver.coerce(parsed.version).version, tempVersion)) { if (semver.gte(semver.coerce(parsed.version).version, tempVersion)) {
tempVersion = parsed.version; tempVersion = parsed.version;
} }
@ -586,7 +586,7 @@ function findNewVersion(data, opts) {
// check if latestTag is allowed by semvers // check if latestTag is allowed by semvers
const diff = semver.diff(oldVersion, latestTag); const diff = semver.diff(oldVersion, latestTag);
if (diff && diff !== "prerelease" && !opts.semvers.includes(diff.replace(/^pre/, ""))) { if (diff && diff !== "prerelease" && !opts.semvers.has(diff.replace(/^pre/, ""))) {
return version; return version;
} }
@ -704,11 +704,11 @@ async function main() {
let semvers; let semvers;
if (patch === true || Array.isArray(patch) && patch.includes(data.name)) { if (patch === true || Array.isArray(patch) && patch.includes(data.name)) {
semvers = ["patch"]; semvers = new Set(["patch"]);
} else if (minor === true || Array.isArray(minor) && minor.includes(data.name)) { } else if (minor === true || Array.isArray(minor) && minor.includes(data.name)) {
semvers = ["patch", "minor"]; semvers = new Set(["patch", "minor"]);
} else { } else {
semvers = ["patch", "minor", "major"]; semvers = new Set(["patch", "minor", "major"]);
} }
const key = `${type}${sep}${data.name}`; const key = `${type}${sep}${data.name}`;