# configuration/strings/graph.strings.ts

> 21 lines of code and 7 definitions.

Tree: GovLab Patterns
Language: typescript
Layer: product
Canonical: https://banes-lab.com/anatomy/patterns#file-patterns-configuration-strings-graph-strings-ts
Source text: https://banes-lab.com/source/patterns/configuration/strings/graph.strings.ts.txt

Listed in [configuration/strings](https://banes-lab.com/api/source/patterns/configuration/strings.md), after [configuration/strings/code.strings.ts](https://banes-lab.com/source/patterns/configuration/strings/code.strings.ts.md) and before [configuration/strings/markup.strings.ts](https://banes-lab.com/source/patterns/configuration/strings/markup.strings.ts.md).

## Definitions

- `producedTwice` (lexical_declaration, line 1, exported)
- `missingProducer` (lexical_declaration, line 5, exported)
- `ownProducer` (lexical_declaration, line 9, exported)
- `effectCycle` (lexical_declaration, line 13, exported)
- `stepsBack` (lexical_declaration, line 17, exported)
- `orphanNode` (lexical_declaration, line 21, exported)
- `deadNode` (lexical_declaration, line 25, exported)

## Contained in

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

## Used by

- [core/validators/graph.validator.ts](https://banes-lab.com/source/patterns/core/validators/graph.validator.ts.md)

## Linked from

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

## Source

```typescript
export const producedTwice = function producedTwice(id: string): string {
    return `single-producer violated: node "${id}" produced twice`;
};

export const missingProducer = function missingProducer(id: string, producer: string): string {
    return `node "${id}" consumes missing producer "${producer}"`;
};

export const ownProducer = function ownProducer(id: string): string {
    return `node "${id}" is its own producer`;
};

export const effectCycle = function effectCycle(id: string): string {
    return `cycle in the effect layer through node "${id}"`;
};

export const stepsBack = function stepsBack(producer: string, id: string): string {
    return `edge "${producer}" → "${id}" steps back on the reasoning axis`;
};

export const orphanNode = function orphanNode(id: string): string {
    return `orphan node "${id}" has no producer`;
};

export const deadNode = function deadNode(id: string): string {
    return `dead node "${id}" reaches no sink`;
};
```
