# configuration/strings/code.strings.ts

> 34 lines of code and 8 definitions.

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

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

## Definitions

- `duplicateDetail` (lexical_declaration, line 33, exported)
- `crossConcernDetail` (lexical_declaration, line 37, exported)
- `FINDING_KINDS` (lexical_declaration, line 1, exported)
- `REMEDY` (lexical_declaration, line 9, exported)
- `DEAD_DETAIL` (lexical_declaration, line 23, exported)
- `cycleDetail` (lexical_declaration, line 25, exported)
- `importCycleDetail` (lexical_declaration, line 29, exported)
- `MEMBER_ARROW` (lexical_declaration, line 41, exported)

## Contained in

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

## Used by

- [core/analyzers/concern.analyzer.ts](https://banes-lab.com/source/patterns/core/analyzers/concern.analyzer.ts.md)
- [core/analyzers/definition.analyzer.ts](https://banes-lab.com/source/patterns/core/analyzers/definition.analyzer.ts.md)

## Linked from

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

## Source

```typescript
export const FINDING_KINDS = {
    callCycle: "call-cycle",
    crossConcern: "cross-concern",
    deadCode: "dead-code",
    duplicate: "duplicate-definition",
    importCycle: "import-cycle",
} as const;

export const REMEDY: ReadonlyMap<string, string> = new Map([
    [
        FINDING_KINDS.callCycle,
        "invert a dependency to break the cycle (extract an interface / event / dispatch table) — dependency-inversion",
    ],
    [
        FINDING_KINDS.importCycle,
        "re-home shared code or add a shared abstraction so the module graph stays a DAG — zero_cross_module_reachin",
    ],
    [FINDING_KINDS.duplicate, "single-source the definition and re-export it — single-source-of-truth"],
    [FINDING_KINDS.deadCode, "remove it — no consumer references it — dead-code elimination"],
    [FINDING_KINDS.crossConcern, "split into per-concern collaborators — single-responsibility"],
]);

export const DEAD_DETAIL = "module-level, not exported, never referenced beyond its declaration — dead code";

export const cycleDetail = function cycleDetail(count: number, members: string): string {
    return `mutual-recursion cycle among ${count} definitions: ${members}`;
};

export const importCycleDetail = function importCycleDetail(count: number, members: string): string {
    return `import cycle across ${count} modules: ${members}`;
};

export const duplicateDetail = function duplicateDetail(count: number, files: string): string {
    return `identical definition in ${count} files: ${files}`;
};

export const crossConcernDetail = function crossConcernDetail(count: number): string {
    return `calls into ${count} distinct concerns — a cross-concern orchestrator`;
};

export const MEMBER_ARROW = " → ";
```
