/ opencodehub / src / lib / runner-registration-token.ts
Swadhin Biswas feat(api): add runner, analytics, packages, and security services · 3/6/2026
28f7954
33 lines · 1.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import crypto from "node:crypto";

export const RUNNER_REGISTRATION_TOKEN_PREFIX = "ACTIONS_RUNNER_TOKEN:";
export const LEGACY_RUNNER_REGISTRATION_TOKEN_NAME = "ACTIONS_RUNNER_TOKEN";

export function getRunnerRegistrationTokenTtlDays(): number {
  const parsed = Number(process.env.RUNNER_REGISTRATION_TOKEN_TTL_DAYS || "90");
  return Number.isFinite(parsed) && parsed > 0 ? parsed : 90;
}

export function getRunnerRegistrationTokenTtlMs(): number {
  return getRunnerRegistrationTokenTtlDays() * 24 * 60 * 60 * 1000;
}

export function createRunnerRegistrationTokenId(): string {
  return crypto.randomUUID();
}

export function createRunnerRegistrationSecret(): string {
  return crypto.randomBytes(24).toString("hex");
}

export function buildRunnerRegistrationTokenName(tokenId: string): string {
  return `${RUNNER_REGISTRATION_TOKEN_PREFIX}${tokenId}`;
}

export function isRunnerRegistrationTokenName(name: string): boolean {
  return (
    name === LEGACY_RUNNER_REGISTRATION_TOKEN_NAME ||
    name.startsWith(RUNNER_REGISTRATION_TOKEN_PREFIX)
  );
}