import * as AppSpec from "../../appSpec.js"; import { Branded } from "../../branded.js"; export type TsAppSpec = { app: { name: string; config: AppConfig; }; actions: Map; apiNamespaces: Map; apis: Map; auth?: AuthConfig; client?: ClientConfig; cruds: Map; db?: DbConfig; emailSender?: EmailSenderConfig; jobs: Map; pages: Map; queries: Map; routes: Map; server?: ServerConfig; websocket?: WebsocketConfig; }; export type AppConfig = { title: string; wasp: AppSpec.Wasp; head?: string[]; }; export type ActionConfig = { fn: ExtImport; entities?: string[]; auth?: boolean; }; export type ApiNamespaceConfig = { middlewareConfigFn: ExtImport; path: string; }; export type ApiConfig = { fn: ExtImport; middlewareConfigFn?: ExtImport; entities?: string[]; httpRoute: HttpRoute; auth?: boolean; }; export type HttpRoute = { method: AppSpec.HttpMethod; route: string; }; export type AuthConfig = { userEntity: string; methods: AuthMethods; onAuthFailedRedirectTo: string; onAuthSucceededRedirectTo?: string; onBeforeSignup?: ExtImport; onAfterSignup?: ExtImport; onAfterEmailVerified?: ExtImport; onBeforeOAuthRedirect?: ExtImport; onBeforeLogin?: ExtImport; onAfterLogin?: ExtImport; }; export type AuthMethods = { usernameAndPassword?: UsernameAndPasswordConfig; slack?: ExternalAuthConfig; discord?: ExternalAuthConfig; google?: ExternalAuthConfig; gitHub?: ExternalAuthConfig; keycloak?: ExternalAuthConfig; microsoft?: ExternalAuthConfig; email?: EmailAuthConfig; }; export type UsernameAndPasswordConfig = { userSignupFields?: ExtImport; }; export type EmailAuthConfig = { userSignupFields?: ExtImport; fromField: EmailFromField; emailVerification: EmailVerificationConfig; passwordReset: PasswordResetConfig; }; export type EmailVerificationConfig = { getEmailContentFn?: ExtImport; clientRoute: string; }; export type PasswordResetConfig = { getEmailContentFn?: ExtImport; clientRoute: string; }; export type ExternalAuthConfig = { configFn?: ExtImport; userSignupFields?: ExtImport; }; export type ClientConfig = { rootComponent?: ExtImport; setupFn?: ExtImport; baseDir?: `/${string}`; envValidationSchema?: ExtImport; }; export type CrudConfig = { entity: string; operations: CrudOperations; }; export type CrudOperations = { get?: CrudOperationOptions; getAll?: CrudOperationOptions; create?: CrudOperationOptions; update?: CrudOperationOptions; delete?: CrudOperationOptions; }; export type CrudOperationOptions = { isPublic?: boolean; overrideFn?: ExtImport; }; export type DbConfig = { seeds?: ExtImport[]; prismaSetupFn?: ExtImport; }; export type EmailSenderConfig = { provider: AppSpec.EmailProvider; defaultFrom?: EmailFromField; }; export type JobConfig = { executor: AppSpec.JobExecutor; perform: Perform; schedule?: Schedule; entities?: string[]; }; export type Perform = { fn: ExtImport; executorOptions?: ExecutorOptions; }; export type Schedule = { cron: string; args?: object; executorOptions?: ExecutorOptions; }; export type ExecutorOptions = { pgBoss: object; }; export type PageConfig = { component: ExtImport; authRequired?: boolean; }; export type QueryConfig = { fn: ExtImport; entities?: string[]; auth?: boolean; }; export type RouteConfig = { path: string; to: PageName; prerender?: boolean; lazy?: boolean; }; export type PageName = Branded; export type ServerConfig = { setupFn?: ExtImport; middlewareConfigFn?: ExtImport; envValidationSchema?: ExtImport; }; export type WebsocketConfig = { fn: ExtImport; autoConnect?: boolean; }; export type ExtImport = { import: string; from: AppSpec.ExtImport["path"]; } | { importDefault: string; from: AppSpec.ExtImport["path"]; }; export type EmailFromField = { name?: string; email: string; }; //# sourceMappingURL=tsAppSpec.d.ts.map