# core/adapters/server.adapter.ts

> 23 lines of code and 5 definitions.

Tree: Bane's Lab Deploy
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/deploy#file-deploy-core-adapters-server-adapter-ts
Source text: https://banes-lab.com/source/deploy/core/adapters/server.adapter.ts.txt

Listed in [core/adapters](https://banes-lab.com/api/source/deploy/core/adapters.md), after [core/adapters/search.adapter.ts](https://banes-lab.com/source/deploy/core/adapters/search.adapter.ts.md) and before [core/adapters/shell.adapter.ts](https://banes-lab.com/source/deploy/core/adapters/shell.adapter.ts.md).

## Definitions

- `logSize` (lexical_declaration, line 5, exported)
- `loggedSince` (lexical_declaration, line 14, exported)
- `size` (lexical_declaration, line 15, exported)
- `from` (lexical_declaration, line 16, exported)
- `result` (lexical_declaration, line 20, exported)

## Contained in

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

## Source

```typescript
import { LOG_SIZE_COMMAND, LOG_TAIL_COMMAND } from "#configuration/constants/nginx.constants";
import { PROBE_LOG_UNREADABLE } from "#configuration/strings/deployment.strings";
import type { Shell } from "#types/deployment.types";

export const logSize = async function logSize(shell: Shell, log: string): Promise<number> {
    const result = await shell.run(`${LOG_SIZE_COMMAND} ${log}`);
    const size = Number(result.stdout.trim());
    if (result.code !== 0 || !Number.isInteger(size)) {
        throw new Error(PROBE_LOG_UNREADABLE + log);
    }
    return size;
};

export const loggedSince = async function loggedSince(shell: Shell, log: string, offset: number): Promise<string> {
    const size = await logSize(shell, log);
    const from = size < offset ? 0 : offset;
    if (size === from) {
        return "";
    }
    const result = await shell.run(`${LOG_TAIL_COMMAND}${String(from + 1)} ${log}`);
    if (result.code !== 0) {
        throw new Error(PROBE_LOG_UNREADABLE + log);
    }
    return result.stdout.trim();
};
```
