* Extract targets parser and compat data from preset-env * Review by Jùnliàng * isItemRequired -> targetsSupported * Export isRequired
41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
// @flow
|
|
|
|
import semver from "semver";
|
|
import { prettifyVersion } from "./pretty";
|
|
import {
|
|
semverify,
|
|
isUnreleasedVersion,
|
|
getLowestImplementedVersion,
|
|
} from "./utils";
|
|
import type { Targets } from "./types";
|
|
|
|
export function getInclusionReasons(
|
|
item: string,
|
|
targetVersions: Targets,
|
|
list: { [key: string]: Targets },
|
|
) {
|
|
const minVersions = list[item] || {};
|
|
|
|
return Object.keys(targetVersions).reduce((result, env) => {
|
|
const minVersion = getLowestImplementedVersion(minVersions, env);
|
|
const targetVersion = targetVersions[env];
|
|
|
|
if (!minVersion) {
|
|
result[env] = prettifyVersion(targetVersion);
|
|
} else {
|
|
const minIsUnreleased = isUnreleasedVersion(minVersion, env);
|
|
const targetIsUnreleased = isUnreleasedVersion(targetVersion, env);
|
|
|
|
if (
|
|
!targetIsUnreleased &&
|
|
(minIsUnreleased ||
|
|
semver.lt(targetVersion.toString(), semverify(minVersion)))
|
|
) {
|
|
result[env] = prettifyVersion(targetVersion);
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}, {});
|
|
}
|