# core/reporters/site.reporter.ts

> 31 lines of code and 1 definition.

Tree: GovLab Stats
Language: typescript
Layer: operations
Canonical: https://banes-lab.com/anatomy/stats#file-stats-core-reporters-site-reporter-ts
Source text: https://banes-lab.com/source/stats/core/reporters/site.reporter.ts.txt

Listed in [core/reporters](https://banes-lab.com/api/source/stats/core/reporters.md), after [core/reporters/report.reporter.ts](https://banes-lab.com/source/stats/core/reporters/report.reporter.ts.md) and before [core/reporters/taxonomy.reporter.ts](https://banes-lab.com/source/stats/core/reporters/taxonomy.reporter.ts.md).

## Definitions

- `appSection` (lexical_declaration, line 4, exported)

## Contained in

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

## Uses

- [core/formatters/metric.formatter.ts](https://banes-lab.com/source/stats/core/formatters/metric.formatter.ts.md)

## Used by

- [core/reporters/report.reporter.ts](https://banes-lab.com/source/stats/core/reporters/report.reporter.ts.md)

## Linked from

- [core/formatters](https://banes-lab.com/anatomy/stats/folder-stats-core-formatters.md)
- [core/reporters](https://banes-lab.com/anatomy/stats/folder-stats-core-reporters.md)

## Source

```typescript
import { humanBytes, num } from "#core/formatters/metric.formatter";
import type { AppStats } from "#types/site.types";

export const appSection = function appSection(app: AppStats): string[] {
    if (!app.present) {
        return [];
    }
    return [
        "### Pages",
        "",
        "| Page | Role | Files | Lines | Systems |",
        "| --- | --- | ---: | ---: | ---: |",
        ...app.pages.map(
            (page) =>
                `| \`${page.name}\` | ${page.isRoot ? "root" : "nested"} | ${num(page.files)} | ${num(page.lines)} | ${num(page.systems)} |`,
        ),
        "",
        "| Container | Subsystems |",
        "| --- | ---: |",
        ...app.subsystems.map((entry) => `| \`${entry.container}\` | ${num(entry.folders)} |`),
        "",
        "| Application | Value |",
        "| --- | ---: |",
        `| nested pages | ${num(app.pages.filter((page) => !page.isRoot).length)} |`,
        `| stylesheets | ${num(app.styles)} |`,
        `| source files | ${num(app.sourceFiles)} |`,
        `| source lines | ${num(app.sourceLines)} |`,
        `| asset files | ${num(app.assetFiles)} |`,
        `| asset size | ${humanBytes(app.assetBytes)} |`,
        "",
    ];
};
```
