# core/loaders/check.loader.ts

> 19 lines of code and 5 definitions.

Tree: GovLab Context
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/context#file-context-core-loaders-check-loader-ts
Source text: https://banes-lab.com/source/context/core/loaders/check.loader.ts.txt

Listed in [core/loaders](https://banes-lab.com/api/source/context/core/loaders.md), after [core/loaders/architecture.loader.ts](https://banes-lab.com/source/context/core/loaders/architecture.loader.ts.md) and before [core/loaders/document.loader.ts](https://banes-lab.com/source/context/core/loaders/document.loader.ts.md).

## Definitions

- `isStrings` (lexical_declaration, line 4)
- `isDeclaredCheck` (lexical_declaration, line 8)
- `record` (lexical_declaration, line 12)
- `loadDeclaredChecks` (lexical_declaration, line 16, exported)
- `parsed` (lexical_declaration, line 20, exported)

## Contained in

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

## Linked from

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

## Source

```typescript
import { existsSync, readFileSync } from "node:fs";
import type { DeclaredCheck } from "#types/check.types";

const isStrings = function isStrings(value: unknown): value is string[] {
    return Array.isArray(value) && value.every((item) => typeof item === "string");
};

const isDeclaredCheck = function isDeclaredCheck(value: unknown): value is DeclaredCheck {
    if (typeof value !== "object" || value === null) {
        return false;
    }
    const record: Record<string, unknown> = { ...value };
    return typeof record["check"] === "string" && isStrings(record["detects"]) && isStrings(record["enforces"]);
};

export const loadDeclaredChecks = function loadDeclaredChecks(file: string): readonly DeclaredCheck[] | null {
    if (!existsSync(file)) {
        return null;
    }
    const parsed: unknown = JSON.parse(readFileSync(file, "utf8"));
    return Array.isArray(parsed) ? parsed.filter(isDeclaredCheck) : null;
};
```
