import serverNativeModule from '@affine/server-native'; import { defineNativeModuleConfig } from '../../base'; export interface OAuthProviderConfig { clientId: string; clientSecret?: string; args?: Record; } export type OIDCArgs = { scope?: string; claim_id?: string; claim_email?: string; claim_name?: string; claim_email_verified?: string; }; export interface OAuthOIDCProviderConfig extends OAuthProviderConfig { issuer: string; allowPrivateNetwork?: boolean; args?: OIDCArgs; } export enum OAuthProviderName { Google = 'google', GitHub = 'github', Apple = 'apple', OIDC = 'oidc', } declare global { interface AppConfigSchema { oauth: { providers: { [OAuthProviderName.Google]: ConfigItem; [OAuthProviderName.GitHub]: ConfigItem; [OAuthProviderName.Apple]: ConfigItem; [OAuthProviderName.OIDC]: ConfigItem; }; }; } } defineNativeModuleConfig( 'oauth', serverNativeModule.appConfigDescriptors('oauth'), serverNativeModule.validateAppConfigValue );