# core/loaders/asset.loader.ts

> 9 lines of code and 2 definitions.

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

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

## Definitions

- `walk` (lexical_declaration, line 5, exported)
- `target` (lexical_declaration, line 7, exported)

## Contained in

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

## Uses

- [core/resolvers/asset.resolver.ts](https://banes-lab.com/source/build-scripts/core/resolvers/asset.resolver.ts.md)

## Linked from

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

## Source

```typescript
import { relative, resolve } from "node:path";
import { readdirSync } from "node:fs";
import { toPosix } from "#core/resolvers/asset.resolver";

export const walk = function walk(root: string, dir: string): string[] {
    return readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
        const target = resolve(dir, entry.name);
        return entry.isDirectory() ? walk(root, target) : [toPosix(relative(root, target))];
    });
};
```
