feat(FN-3868): add changeset for github tracking settings
Adds a changeset for the GitHub tracking settings feature (FN-3868), preparing it for the next release. The feature itself was implemented in earlier steps; this changeset marks it for publication to npm. Fusion-Task-Id: FN-3868
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import type { UnavailableNodePolicy } from "./types.js";
|
||||
import type { GithubAuthMode, UnavailableNodePolicy } from "./types.js";
|
||||
|
||||
const UNAVAILABLE_NODE_POLICIES: readonly UnavailableNodePolicy[] = ["block", "fallback-local"] as const;
|
||||
const GITHUB_AUTH_MODES: readonly GithubAuthMode[] = ["gh-cli", "token"] as const;
|
||||
const GITHUB_REPO_SLUG_PATTERN = /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/;
|
||||
|
||||
/**
|
||||
* Validates a project unavailable-node routing policy value.
|
||||
@@ -18,3 +20,29 @@ export function validateUnavailableNodePolicy(value: unknown): UnavailableNodePo
|
||||
? (value as UnavailableNodePolicy)
|
||||
: undefined;
|
||||
}
|
||||
|
||||
/** Returns a validated GitHub auth mode for project settings, otherwise undefined. */
|
||||
export function validateGithubAuthMode(value: unknown): GithubAuthMode | undefined {
|
||||
if (value === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
if (typeof value !== "string") {
|
||||
return undefined;
|
||||
}
|
||||
return (GITHUB_AUTH_MODES as readonly string[]).includes(value) ? (value as GithubAuthMode) : undefined;
|
||||
}
|
||||
|
||||
/** Returns a validated owner/repo GitHub slug, otherwise undefined. Empty string is treated as unset. */
|
||||
export function validateGithubRepoSlug(value: unknown): string | undefined {
|
||||
if (value === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
if (typeof value !== "string") {
|
||||
return undefined;
|
||||
}
|
||||
const trimmed = value.trim();
|
||||
if (trimmed.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
return GITHUB_REPO_SLUG_PATTERN.test(trimmed) ? trimmed : undefined;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user