93 lines
2.3 KiB
JavaScript
93 lines
2.3 KiB
JavaScript
/*eslint quotes: ["error", "double", { "avoidEscape": true }]*/
|
|
import semver from "semver";
|
|
import { isUnreleasedVersion, prettifyVersion, semverify } from "./utils";
|
|
|
|
const wordEnds = size => {
|
|
return size > 1 ? "s" : "";
|
|
};
|
|
|
|
export const logMessage = (message, context) => {
|
|
const pre = context ? `[${context}] ` : "";
|
|
const logStr = ` ${pre}${message}`;
|
|
console.log(logStr);
|
|
};
|
|
|
|
// Outputs a message that shows which target(s) caused an item to be included:
|
|
// transform-foo { "edge":"13", "firefox":"49", "ie":"10" }
|
|
export const logPlugin = (item, targetVersions, list, context) => {
|
|
const minVersions = list[item] || {};
|
|
|
|
const filteredList = Object.keys(targetVersions).reduce((result, env) => {
|
|
const minVersion = 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, semverify(minVersion)))
|
|
) {
|
|
result[env] = prettifyVersion(targetVersion);
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}, {});
|
|
|
|
const formattedTargets = JSON.stringify(filteredList)
|
|
.replace(/,/g, ", ")
|
|
.replace(/^\{"/, '{ "')
|
|
.replace(/"\}$/, '" }');
|
|
|
|
logMessage(`${item} ${formattedTargets}`, context);
|
|
};
|
|
|
|
export const logEntryPolyfills = (
|
|
importPolyfillIncluded,
|
|
polyfills,
|
|
filename,
|
|
onDebug,
|
|
) => {
|
|
if (!importPolyfillIncluded) {
|
|
console.log(
|
|
`
|
|
[${filename}] \`import '@babel/polyfill'\` was not found.`,
|
|
);
|
|
return;
|
|
}
|
|
if (!polyfills.size) {
|
|
console.log(
|
|
`
|
|
[${filename}] Based on your targets, none were added.`,
|
|
);
|
|
return;
|
|
}
|
|
|
|
console.log(
|
|
`
|
|
[${filename}] Replaced \`@babel/polyfill\` with the following polyfill${wordEnds(
|
|
polyfills.size,
|
|
)}:`,
|
|
);
|
|
onDebug(polyfills);
|
|
};
|
|
|
|
export const logUsagePolyfills = (polyfills, filename, onDebug) => {
|
|
if (!polyfills.size) {
|
|
console.log(
|
|
`
|
|
[${filename}] Based on your code and targets, none were added.`,
|
|
);
|
|
return;
|
|
}
|
|
console.log(
|
|
`
|
|
[${filename}] Added following polyfill${wordEnds(polyfills.size)}:`,
|
|
);
|
|
onDebug(polyfills);
|
|
};
|