# core/plugins/manifest.package.plugin.ts

> 21 lines of code and 6 definitions.

Tree: GovLab Docs
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/docs#file-docs-core-plugins-manifest-package-plugin-ts
Source text: https://banes-lab.com/source/docs/core/plugins/manifest.package.plugin.ts.txt

Listed in [core/plugins](https://banes-lab.com/api/source/docs/core/plugins.md), after [core/plugins/manifest.metric.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.metric.plugin.ts.md) and before [core/plugins/manifest.principle.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.principle.plugin.ts.md).

## Definitions

- `validate` (method_definition, line 15, exported)
- `SECTION` (lexical_declaration, line 5)
- `MODE_SEPARATOR` (lexical_declaration, line 6)
- `plugin` (lexical_declaration, line 8, exported)
- `contribute` (method_definition, line 9, exported)
- `deliverAs` (lexical_declaration, line 16, exported)

## Contained in

- [core/plugins](https://banes-lab.com/anatomy/docs/folder-docs-core-plugins.md)

## Uses

- [configuration/strings/manifest.strings.ts](https://banes-lab.com/source/docs/configuration/strings/manifest.strings.ts.md)

## Linked from

- [configuration/strings](https://banes-lab.com/anatomy/docs/folder-docs-configuration-strings.md)

## Source

```typescript
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))];
        },
    },
};
```
