openclaw/src/secrets/secret-value.ts

34 lines
965 B
TypeScript

import { isNonEmptyString, isRecord } from "./shared.js";
export type SecretExpectedResolvedValue = "string" | "string-or-object"; // pragma: allowlist secret
export function isExpectedResolvedSecretValue(
value: unknown,
expected: SecretExpectedResolvedValue,
): boolean {
if (expected === "string") {
return isNonEmptyString(value);
}
return isNonEmptyString(value) || isRecord(value);
}
export function hasConfiguredPlaintextSecretValue(
value: unknown,
expected: SecretExpectedResolvedValue,
): boolean {
if (expected === "string") {
return isNonEmptyString(value);
}
return isNonEmptyString(value) || (isRecord(value) && Object.keys(value).length > 0);
}
export function assertExpectedResolvedSecretValue(params: {
value: unknown;
expected: SecretExpectedResolvedValue;
errorMessage: string;
}): void {
if (!isExpectedResolvedSecretValue(params.value, params.expected)) {
throw new Error(params.errorMessage);
}
}