core/adapters/server.adapter.ts

core/adapters/server.adapter.ts is a file in Bane's Lab Deploy. 23 lines of code and 5 definitions.

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();
};