ai-chatbot/lib/worldlabs/key-pool-config.ts
Your Name c4aafe9413
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
feat: store worldlabs import token in db
2026-04-05 23:15:25 +08:00

47 lines
1.2 KiB
TypeScript

import "server-only";
import { getSystemSetting } from "@/lib/db/queries";
export const WORLDLABS_KEY_POOL_CONFIG_KEY = "worldlabs_key_pool_config";
export type WorldLabsKeyPoolConfig = {
importToken: string;
};
export const defaultWorldLabsKeyPoolConfig: WorldLabsKeyPoolConfig = {
importToken: "",
};
function normalizeImportToken(value: unknown) {
return String(value || "")
.replace(/[\u2028\u2029]/g, "")
.replace(/[\u0000-\u001F\u007F]/g, "")
.trim();
}
export function normalizeWorldLabsKeyPoolConfig(
value: unknown
): WorldLabsKeyPoolConfig {
if (!value || typeof value !== "object") {
return defaultWorldLabsKeyPoolConfig;
}
const raw = value as Partial<WorldLabsKeyPoolConfig>;
return {
importToken: normalizeImportToken(raw.importToken),
};
}
export async function getWorldLabsKeyPoolConfig(): Promise<WorldLabsKeyPoolConfig> {
try {
const setting = await getSystemSetting({
key: WORLDLABS_KEY_POOL_CONFIG_KEY,
});
return setting?.value
? normalizeWorldLabsKeyPoolConfig(setting.value)
: defaultWorldLabsKeyPoolConfig;
} catch (_error) {
return defaultWorldLabsKeyPoolConfig;
}
}