# core/loaders/surface.loader.ts

> 11 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-core-loaders-surface-loader-ts
Source text: https://banes-lab.com/source/build-scripts/core/loaders/surface.loader.ts.txt

Listed in [core/loaders](https://banes-lab.com/api/source/build-scripts/core/loaders.md), after [core/loaders/structure.loader.ts](https://banes-lab.com/source/build-scripts/core/loaders/structure.loader.ts.md) and before [core/loaders/tree.loader.ts](https://banes-lab.com/source/build-scripts/core/loaders/tree.loader.ts.md).

## Definitions

- `loadRecordings` (lexical_declaration, line 9, exported)
- `UTF8` (lexical_declaration, line 5)
- `RECORDING_SUFFIX` (lexical_declaration, line 7)
- `folder` (lexical_declaration, line 10, exported)

## Contained in

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

## Used by

- [core/loaders/site.loader.ts](https://banes-lab.com/source/build-scripts/core/loaders/site.loader.ts.md)

## Linked from

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

## Source

```typescript
import { readFileSync, readdirSync } from "node:fs";
import { absolutePath } from "@ssot/paths";
import { join } from "node:path";

const UTF8 = "utf8";

const RECORDING_SUFFIX = ".json";

export const loadRecordings = function loadRecordings(): readonly unknown[] {
    const folder = absolutePath("app.surfaces");
    return readdirSync(folder)
        .filter((name) => name.endsWith(RECORDING_SUFFIX))
        .map((name): unknown => JSON.parse(readFileSync(join(folder, name), UTF8)));
};
```
