# types/edit.types.ts

> 57 lines of code and 11 definitions.

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

Listed in [types](https://banes-lab.com/api/source/quality/types.md), after [types/ecosystem.types.ts](https://banes-lab.com/source/quality/types/ecosystem.types.ts.md) and before [types/emitter.types.ts](https://banes-lab.com/source/quality/types/emitter.types.ts.md).

## Definitions

- `FixableResult` (interface_declaration, line 3, exported)
- `SafeFixFs` (interface_declaration, line 9, exported)
- `SafeFixOptions` (interface_declaration, line 17, exported)
- `SafeFixOutcome` (interface_declaration, line 24, exported)
- `FixAction` (interface_declaration, line 30, exported)
- `CommitContext` (interface_declaration, line 36, exported)
- `CuratedResult` (interface_declaration, line 43, exported)
- `CuratedSuggestion` (interface_declaration, line 48, exported)
- `RangeFix` (interface_declaration, line 55, exported)
- `CuratedApplyResult` (interface_declaration, line 60, exported)
- `LineRange` (interface_declaration, line 65, exported)

## Contained in

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

## Source

```typescript
import type { Linter } from "eslint";

export interface FixableResult {
    filePath: string;
    messages: readonly { fatal?: boolean | undefined }[];
    output?: string | undefined;
}

export interface SafeFixFs {
    read: (file: string) => string;
    write: (file: string, data: string) => void;
    rename: (from: string, to: string) => void;
    ensureDir: (dir: string) => void;
    remove?: (file: string) => void;
}

export interface SafeFixOptions {
    root: string;
    dryRun?: boolean | undefined;
    backup?: boolean | undefined;
    fs?: SafeFixFs;
}

export interface SafeFixOutcome {
    written: string[];
    skipped: string[];
    pending: string[];
}

export interface FixAction {
    file: string;
    kind: "pending" | "skipped" | "written";
    original?: string;
}

export interface CommitContext {
    file: string;
    fs: SafeFixFs;
    output: string;
    temp: string;
}

export interface CuratedResult {
    errorCount: number;
    messages: Linter.LintMessage[];
}

export interface CuratedSuggestion {
    messageId: string | null;
    pick: "prefix" | "sole";
    prefix: string;
    ruleId: string;
}

export interface RangeFix {
    range: readonly [number, number];
    text: string;
}

export interface CuratedApplyResult {
    appliedCount: number;
    output: string;
}

export interface LineRange {
    end: number;
    start: number;
}
```
