# core/coordinators/dependency.coordinator.ts

> 27 lines of code and 8 definitions.

Tree: GovLab Docs
Language: typescript
Layer: application
Canonical: https://banes-lab.com/anatomy/docs#file-docs-core-coordinators-dependency-coordinator-ts
Source text: https://banes-lab.com/source/docs/core/coordinators/dependency.coordinator.ts.txt

Listed in [core/coordinators](https://banes-lab.com/api/source/docs/core/coordinators.md), after [core/coordinators/code.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/code.coordinator.ts.md) and before [core/coordinators/document.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/document.coordinator.ts.md).

## Definitions

- `workspaceMapTargetFor` (lexical_declaration, line 9, exported)
- `modules` (lexical_declaration, line 13, exported)
- `doc` (lexical_declaration, line 17, exported)
- `rel` (lexical_declaration, line 18, exported)
- `path` (lexical_declaration, line 19, exported)
- `rendered` (lexical_declaration, line 20, exported)
- `content` (lexical_declaration, line 21, exported)
- `[first]` (lexical_declaration, line 22, exported)

## Contained in

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

## Uses

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

## Linked from

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

## Source

```typescript
import type { WorkspaceMap, WorkspaceMapDeps } from "#types/document.output.types";
import { mermaidHardening } from "#core/analyzers/diagram.analyzer";
import { readTextSafe } from "#core/loaders/base.loader";
import { resolve } from "node:path";
import { stampGenerated } from "@govlab/canonical-write";
import { workspaceMapDoc } from "#core/converters/dependency.converter";
import { workspaceMapHardening } from "#configuration/strings/drift.strings";

export const workspaceMapTargetFor = function workspaceMapTargetFor(
    deps: WorkspaceMapDeps,
): () => Promise<WorkspaceMap | null> {
    return async function workspaceMapTarget(): Promise<WorkspaceMap | null> {
        const modules = deps.discoverAll();
        if (modules.length === 0) {
            return null;
        }
        const doc = workspaceMapDoc(modules);
        const rel = deps.declaredDocLocation(doc);
        const path = resolve(deps.root, rel);
        const rendered = await deps.formatMarkdown(deps.renderDeclaredDoc(doc));
        const content = stampGenerated(rendered, readTextSafe(path) ?? "", new Date());
        const [first] = mermaidHardening(content);
        if (first !== undefined) {
            throw new Error(workspaceMapHardening(rel, first.code, first.detail));
        }
        return { content, path, rel };
    };
};
```
