fix typings and edge config key issue

This commit is contained in:
Sara
2023-11-01 13:48:32 +01:00
committed by Mathieu Virbel
parent 2847ee177b
commit 7ca152992c
6 changed files with 58 additions and 35 deletions

31
www/app/lib/edgeConfig.ts Normal file
View File

@@ -0,0 +1,31 @@
import { get } from "@vercel/edge-config";
type EdgeConfig = {
[domainWithDash: string]: {
features: {
[featureName in "requireLogin" | "privacy" | "browse"]: boolean;
};
auth_callback_url: string;
api_url: string;
};
};
export type DomainConfig = EdgeConfig["domainWithDash"];
// Edge config main keys can only be alphanumeric and _ or -
export function edgeKeyToDomain(key: string) {
return key.replaceAll(".", "_");
}
export function edgeDomainToKey(domain: string) {
return domain.replaceAll("_", ".");
}
// get edge config server-side (prefer DomainContext when available), domain is the hostname
export async function getConfig(domain: string) {
const config = await get(edgeDomainToKey(domain));
if (typeof config !== "object") throw Error("Error fetchig config");
return config as DomainConfig;
}