core/plugins/manifest.package.plugin.ts

core/plugins/manifest.package.plugin.ts is a file in GovLab Docs. 21 lines of code and 6 definitions.

import { DEFAULT_DELIVERY, DELIVERY_MODES } from "#configuration/constants/manifest.constants";
import type { ManifestPlugin } from "#types/manifest.types";
import { deliverMode } from "#configuration/strings/manifest.strings";

const SECTION = "deliverAs";
const MODE_SEPARATOR = " | ";

export const plugin: ManifestPlugin = {
    contribute(manifest, entry) {
        entry[SECTION] = manifest[SECTION] ?? DEFAULT_DELIVERY;
    },
    name: "delivery",
    section: {
        keys: [SECTION],
        validate(manifest) {
            const deliverAs = manifest[SECTION];
            if (deliverAs === undefined || (typeof deliverAs === "string" && DELIVERY_MODES.has(deliverAs))) {
                return [];
            }
            return [deliverMode([...DELIVERY_MODES].join(MODE_SEPARATOR))];
        },
    },
};