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

> 14 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-scope-plugin-ts
Source text: https://banes-lab.com/source/docs/core/plugins/manifest.scope.plugin.ts.txt

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

## Definitions

- `SECTION` (lexical_declaration, line 4)
- `HIDDEN_FLAG` (lexical_declaration, line 5)
- `PRIVATE_FLAG` (lexical_declaration, line 6)
- `plugin` (lexical_declaration, line 8, exported)
- `contribute` (method_definition, line 9, exported)
- `filter` (method_definition, line 12, exported)

## Contained in

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

## Source

```typescript
import type { ManifestPlugin } from "#types/manifest.types";
import { recordField } from "#core/selectors/record.selector";

const SECTION = "visibility";
const HIDDEN_FLAG = "hidden";
const PRIVATE_FLAG = "private";

export const plugin: ManifestPlugin = {
    contribute(manifest, entry) {
        entry[HIDDEN_FLAG] = recordField(manifest, SECTION)?.[HIDDEN_FLAG] === true;
    },
    filter(manifest) {
        return recordField(manifest, SECTION)?.[PRIVATE_FLAG] === true;
    },
    name: "visibility",
};
```
