# core/predicates/asset.predicate.ts

> 21 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-predicates-asset-predicate-ts
Source text: https://banes-lab.com/source/build-scripts/core/predicates/asset.predicate.ts.txt

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

## Definitions

- `isServed` (lexical_declaration, line 17, exported)
- `SLASH` (lexical_declaration, line 11)
- `ASSET_ROUTES` (lexical_declaration, line 13)

## Contained in

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

## Uses

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

## Used by

- [core/validators/metadata.validator.ts](https://banes-lab.com/source/build-scripts/core/validators/metadata.validator.ts.md)

## Linked from

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

## Source

```typescript
import {
    ASSET_KEYS,
    SERVED_EXTENSIONS,
    SERVED_ROOT_FILES,
    SERVED_ROUTES,
} from "#configuration/constants/asset.constants";
import { extensionOf, toPosix } from "#core/resolvers/asset.resolver";
import { absolutePath } from "@ssot/paths";
import { relative } from "node:path";

const SLASH = "/";

const ASSET_ROUTES: readonly string[] = ASSET_KEYS.map(
    (key) => toPosix(relative(absolutePath("app.public"), absolutePath(key))) + SLASH,
);

export const isServed = function isServed(file: string): boolean {
    return (
        SERVED_ROOT_FILES.has(file) ||
        SERVED_EXTENSIONS.has(extensionOf(file)) ||
        SERVED_ROUTES.some((route) => file.startsWith(route)) ||
        ASSET_ROUTES.some((route) => file.startsWith(route))
    );
};
```
