47 lines
1.2 KiB
TypeScript
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;
|
|
}
|
|
}
|