# types/pattern.types.ts

> 18 lines of code and 5 definitions.

Tree: GovLab Patterns
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/patterns#file-patterns-types-pattern-types-ts
Source text: https://banes-lab.com/source/patterns/types/pattern.types.ts.txt

Listed in [types](https://banes-lab.com/api/source/patterns/types.md), after [types/page.types.ts](https://banes-lab.com/source/patterns/types/page.types.ts.md) and before [types/record.types.ts](https://banes-lab.com/source/patterns/types/record.types.ts.md).

## Definitions

- `Logger` (interface_declaration, line 1, exported)
- `FaceContext` (interface_declaration, line 5, exported)
- `PatternFaceDefinition` (interface_declaration, line 10, exported)
- `GovlabPatternsOptions` (interface_declaration, line 16, exported)
- `GovlabPatterns` (interface_declaration, line 20, exported)

## Contained in

- [types](https://banes-lab.com/anatomy/patterns/folder-patterns-types.md)

## Source

```typescript
export interface Logger {
    warn: (message: string, detail?: unknown) => void;
}

export interface FaceContext {
    logger?: Logger;
    canonicalizeId?: (term: string) => string;
}

export interface PatternFaceDefinition<P = unknown> {
    name: string;
    dependsOn?: readonly string[];
    build: (context: FaceContext, dependencies: Record<string, unknown>) => P;
}

export interface GovlabPatternsOptions {
    logger?: Logger;
}

export interface GovlabPatterns {
    faces: readonly string[];
}
```
