@netlify/build
Version: 
Netlify build module
56 lines (55 loc) • 1.88 kB
JavaScript
// Retrieve plugin's package.json details to include in error messages.
// Please note `pluginPackageJson` has been normalized by `normalize-package-data`.
export const getPluginInfo = function ({ pluginPackageJson = {} }, { packageName, loadedFrom }) {
    if (Object.keys(pluginPackageJson).length === 0) {
        return;
    }
    return Object.entries(FIELDS)
        .map(([name, getField]) => serializeField({ name, getField, pluginPackageJson, packageName, loadedFrom }))
        .filter(Boolean)
        .join('\n');
};
// Serialize a single package.json field
const serializeField = function ({ name, getField, pluginPackageJson, packageName, loadedFrom }) {
    const field = getField(pluginPackageJson, { packageName, loadedFrom });
    if (field === undefined) {
        return;
    }
    const nameA = `${name}:`.padEnd(NAME_PADDING);
    return `${nameA}${field}`;
};
const NAME_PADDING = 16;
const getPackage = function (_, { packageName }) {
    return packageName;
};
const getVersion = function ({ version }) {
    if (version === '') {
        return;
    }
    return version;
};
export const getHomepage = function (pluginPackageJson = {}, { loadedFrom } = {}) {
    return (getRepository(pluginPackageJson) ||
        getNpmLink(pluginPackageJson, { loadedFrom }) ||
        getIssuesLink(pluginPackageJson));
};
const getRepository = function ({ repository: { url } = {} }) {
    return url;
};
const getNpmLink = function ({ name }, { loadedFrom }) {
    if (!name || loadedFrom === 'local') {
        return;
    }
    return `https://www.npmjs.com/package/${name}`;
};
const getIssuesLink = function ({ bugs: { url } = {} }) {
    return url;
};
// List of package.json to serialize
const FIELDS = {
    Package: getPackage,
    Version: getVersion,
    Repository: getRepository,
    'npm link': getNpmLink,
    'Report issues': getIssuesLink,
};