# core/loaders/folder.loader.ts

> 15 lines of code and 3 definitions.

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

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

## Definitions

- `importFolder` (lexical_declaration, line 6, exported)
- `folder` (lexical_declaration, line 7, exported)
- `files` (lexical_declaration, line 8, exported)

## Contained in

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

## Used by

- [core/coordinators/graph.coordinator.ts](https://banes-lab.com/source/build-scripts/core/coordinators/graph.coordinator.ts.md)
- [core/pipelines/site.pipeline.ts](https://banes-lab.com/source/build-scripts/core/pipelines/site.pipeline.ts.md)

## Linked from

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

## Source

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

export const importFolder = async function importFolder(key: string, suffix: string): Promise<void> {
    const folder = absolutePath(key);
    const files = readdirSync(folder)
        .filter((name) => name.endsWith(suffix))
        .toSorted((left, right) => left.localeCompare(right));
    await Promise.all(
        files.map(async (name) => {
            await import(pathToFileURL(join(folder, name)).href);
        }),
    );
};
```
