next-auth-pubkey
Version:
A light-weight Lightning and Nostr auth provider for your Next.js app that's entirely self-hosted and plugs seamlessly into the next-auth framework.
103 lines • 2.63 kB
TypeScript
import { QRGenerator, AvatarGenerator, NameGenerator } from "../../generators/types.js";
export type HardConfig = {
apis: {
create: string;
poll: string;
callback: string;
token: string;
lightningSignIn: string;
nostrSignIn: string;
avatar: string;
qr: string;
diagnostics: string;
};
ids: {
wrapper: string;
title: string;
qr: string;
copy: string;
button: string;
loading: string;
error: string;
details: string;
};
intervals: {
refreshToken: number;
idToken: number;
};
};
export type StorageData = {
k1: string;
state: string;
pubkey?: string | null;
sig?: string | null;
success?: boolean | null;
[key: string | number | symbol]: unknown;
};
export type RequiredConfig = {
baseUrl: string;
secret: string;
storage: {
set: (args: {
k1: string;
data: {
k1: string;
state: string;
};
}, url: URL, config: Config) => Promise<undefined>;
get: (args: {
k1: string;
}, url: URL, config: Config) => Promise<StorageData | null | undefined>;
update: (args: {
k1: string;
data: {
pubkey: string;
sig: string;
success: boolean;
};
}, url: URL, config: Config) => Promise<undefined>;
delete: (args: {
k1: string;
}, url: URL, config: Config) => Promise<undefined>;
};
generateQr: QRGenerator;
};
export type ThemeStyles = {
background: string;
backgroundCard: string;
text: string;
signInButtonBackground: string;
signInButtonText: string;
qrBackground: string;
qrForeground: string;
qrMargin: number;
};
type DeepPartial<T> = T extends object ? {
[P in keyof T]?: DeepPartial<T[P]>;
} : T;
export type OptionalConfig = {
pages: {
lightningSignIn: string;
nostrSignIn: string;
error: string;
};
generateAvatar: AvatarGenerator | null;
generateName: NameGenerator | null;
flags: {
diagnostics: boolean;
logs: boolean;
};
theme: {
colorScheme?: "dark" | "light";
} & ThemeStyles;
intervals: {
poll: number;
create: number;
};
};
export type UserConfig = RequiredConfig & DeepPartial<OptionalConfig>;
export type Config = HardConfig & RequiredConfig & OptionalConfig & {
theme: ThemeStyles;
};
export {};
//# sourceMappingURL=types.d.ts.map