# types/structure.types.ts

> 32 lines of code and 4 definitions.

Tree: Bane's Lab Build Scripts
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/build-scripts#file-build-scripts-types-structure-types-ts
Source text: https://banes-lab.com/source/build-scripts/types/structure.types.ts.txt

Listed in [types](https://banes-lab.com/api/source/build-scripts/types.md), after [types/source.types.ts](https://banes-lab.com/source/build-scripts/types/source.types.ts.md) and before [types/surface.types.ts](https://banes-lab.com/source/build-scripts/types/surface.types.ts.md).

## Definitions

- `DiskFile` (interface_declaration, line 4, exported)
- `PublishedFacts` (interface_declaration, line 15, exported)
- `DiskFolder` (interface_declaration, line 21, exported)
- `TreeScope` (interface_declaration, line 30, exported)

## Contained in

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

## Source

```typescript
import type { AnatomyLines, FolderRole } from "@banes-lab/web/types/anatomy.types.js";
import type { ExclusionReason } from "@ssot/secrets";

export interface DiskFile {
    readonly bytes: number;
    readonly excluded?: ExclusionReason;
    readonly generated: boolean;
    readonly inherited: boolean;
    readonly lines: AnatomyLines;
    readonly name: string;
    readonly path: string;
    readonly text: string;
}

export interface PublishedFacts {
    readonly excluded?: string;
    readonly generated: boolean;
    readonly inherited: boolean;
}

export interface DiskFolder {
    readonly files: readonly DiskFile[];
    readonly folders: readonly DiskFolder[];
    readonly governedBy?: string;
    readonly name: string;
    readonly path: string;
    readonly role: FolderRole;
}

export interface TreeScope {
    readonly excluded: (file: string) => ExclusionReason | null;
    readonly moduleDir: string;
    readonly pruned: (folder: string) => boolean;
    readonly root: string;
    readonly shipped: ReadonlySet<string>;
}
```
