astro-loader-pocketbase
Version:
A content loader for Astro that uses the PocketBase API
26 lines (23 loc) • 881 B
text/typescript
import type { PocketBaseLoaderBaseOptions } from "../types/pocketbase-loader-options.type";
import { getSuperuserToken } from "./get-superuser-token";
/**
* Creates a promise that resolves to a superuser token or undefined.
*/
export async function createTokenPromise(
options: Pick<PocketBaseLoaderBaseOptions, "superuserCredentials" | "url">
): Promise<string | undefined> {
if (options.superuserCredentials) {
if ("impersonateToken" in options.superuserCredentials) {
// Impersonate token provided, so use it directly.
return options.superuserCredentials.impersonateToken;
}
// Email and password provided, so get a temporary superuser token.
const token = await getSuperuserToken(
options.url,
options.superuserCredentials
);
return token;
}
// No credentials provided, so no token can be used.
return undefined;
}