bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
534 lines (533 loc) • 171 kB
TypeScript
import type { CreateUserPayload } from "./auth/AppAuth";
import { Event } from "./core/events";
import { Connection, type LibSqlCredentials } from "./data";
import type { Hono } from "hono";
import { ModuleManager, type InitialModuleConfigs, type ModuleBuildContext, type ModuleConfigs, type ModuleManagerOptions, type Modules } from "./modules/ModuleManager";
import { AdminController, type AdminControllerOptions } from "./modules/server/AdminController";
import { Api, type ApiOptions } from "./Api";
import type { ServerEnv } from "./modules/Controller";
export type AppPlugin = (app: App) => Promise<void> | void;
declare abstract class AppEvent<A = {}> extends Event<{
app: App;
} & A> {
}
export declare class AppConfigUpdatedEvent extends AppEvent {
static slug: string;
}
export declare class AppBuiltEvent extends AppEvent {
static slug: string;
}
export declare class AppFirstBoot extends AppEvent {
static slug: string;
}
export declare class AppRequest extends AppEvent<{
request: Request;
}> {
static slug: string;
}
export declare class AppBeforeResponse extends AppEvent<{
request: Request;
response: Response;
}> {
static slug: string;
}
export declare const AppEvents: {
readonly AppConfigUpdatedEvent: typeof AppConfigUpdatedEvent;
readonly AppBuiltEvent: typeof AppBuiltEvent;
readonly AppFirstBoot: typeof AppFirstBoot;
readonly AppRequest: typeof AppRequest;
readonly AppBeforeResponse: typeof AppBeforeResponse;
};
export type AppOptions = {
plugins?: AppPlugin[];
seed?: (ctx: ModuleBuildContext & {
app: App;
}) => Promise<void>;
manager?: Omit<ModuleManagerOptions, "initial" | "onUpdated" | "seed">;
asyncEventsMode?: "sync" | "async" | "none";
};
export type CreateAppConfig = {
connection?: Connection | {
type: "libsql";
config: LibSqlCredentials;
} | LibSqlCredentials;
initialConfig?: InitialModuleConfigs;
options?: AppOptions;
};
export type AppConfig = InitialModuleConfigs;
export type LocalApiOptions = Request | ApiOptions;
export declare class App {
private connection;
private options?;
static readonly Events: {
readonly AppConfigUpdatedEvent: typeof AppConfigUpdatedEvent;
readonly AppBuiltEvent: typeof AppBuiltEvent;
readonly AppFirstBoot: typeof AppFirstBoot;
readonly AppRequest: typeof AppRequest;
readonly AppBeforeResponse: typeof AppBeforeResponse;
};
modules: ModuleManager;
adminController?: AdminController;
_id: string;
private trigger_first_boot;
private plugins;
private _building;
constructor(connection: Connection, _initialConfig?: InitialModuleConfigs, options?: AppOptions | undefined);
get emgr(): import("./core").EventManager<any>;
build(options?: {
sync?: boolean;
fetch?: boolean;
forceBuild?: boolean;
}): Promise<void>;
mutateConfig<Module extends keyof Modules>(module: Module): Pick<ReturnType<Modules[Module]["schema"]>, "patch" | "overwrite" | "set" | "remove">;
get server(): Hono<ServerEnv, import("hono/types").BlankSchema, "/">;
get em(): import("./data").EntityManager<import("./core").DB>;
get fetch(): Hono["fetch"];
get module(): Modules;
getSchema(): {
server: import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TBoolean;
basepath: import("@sinclair/typebox").TString;
entity_name: import("@sinclair/typebox").TString;
storage: import("@sinclair/typebox").TObject<{
body_max_size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}>;
adapter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<string>;
config: import("@sinclair/typebox").TObject<import("@sinclair/typebox").TProperties>;
}>[]>>;
}> | import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TBoolean;
basepath: import("@sinclair/typebox").TString;
entity_name: import("@sinclair/typebox").TString;
allow_register: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
jwt: import("@sinclair/typebox").TObject<{
secret: import("@sinclair/typebox").TString;
alg: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"HS256" | "HS384" | "HS512">>;
expires: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
issuer: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fields: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
}>;
cookie: import("@sinclair/typebox").TObject<{
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
sameSite: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"strict" | "lax" | "none">>;
secure: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
httpOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
expires: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
renew: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
pathSuccess: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
pathLoggedOut: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
strategies: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
type: import("@sinclair/typebox").TLiteral<"password"> | import("@sinclair/typebox").TLiteral<"oauth"> | import("@sinclair/typebox").TLiteral<"custom_oauth">;
config: import("@sinclair/typebox").TObject<{
hashing: import("@sinclair/typebox").TUnsafe<"plain" | "sha256" | "bcrypt">;
rounds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}> | import("@sinclair/typebox").TObject<{
name: import("@sinclair/typebox").TUnsafe<"google" | "github">;
type: import("@sinclair/typebox").TUnsafe<"oidc" | "oauth2">;
client: import("@sinclair/typebox").TObject<{
client_id: import("@sinclair/typebox").TString;
client_secret: import("@sinclair/typebox").TString;
}>;
}> | import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TUnsafe<"oidc" | "oauth2">;
name: import("@sinclair/typebox").TString;
client: import("@sinclair/typebox").TObject<{
client_id: import("@sinclair/typebox").TString;
client_secret: import("@sinclair/typebox").TString;
token_endpoint_auth_method: import("@sinclair/typebox").TUnsafe<"client_secret_basic">;
}>;
as: import("@sinclair/typebox").TObject<{
issuer: import("@sinclair/typebox").TString;
code_challenge_methods_supported: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"S256">>;
scopes_supported: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
scope_separator: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
authorization_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
token_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
userinfo_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
}>;
}>[]>>>;
guard: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>>;
roles: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
is_default: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
implicit_allow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>>>;
}> | import("@sinclair/typebox").TObject<{
cors: import("@sinclair/typebox").TObject<{
origin: import("@sinclair/typebox").TString;
allow_methods: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<string>>;
allow_headers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
}>;
}> | import("@sinclair/typebox").TObject<{
basepath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
default_primary_format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>;
entities: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
name_singular: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
sort_field: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
sort_dir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"asc" | "desc">>;
primary_format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>;
}>>;
fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"number"> | import("@sinclair/typebox").TLiteral<"boolean"> | import("@sinclair/typebox").TLiteral<"json"> | import("@sinclair/typebox").TLiteral<"text"> | import("@sinclair/typebox").TLiteral<"media"> | import("@sinclair/typebox").TLiteral<"enum"> | import("@sinclair/typebox").TLiteral<"date"> | import("@sinclair/typebox").TLiteral<"primary"> | import("@sinclair/typebox").TLiteral<"relation"> | import("@sinclair/typebox").TLiteral<"jsonschema">;
config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny]>>;
minLength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
maxLength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
pattern: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
html_config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
element: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
props: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{}>>;
}>>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TAny]>>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TAny]>>;
minimum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
maximum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
exclusiveMinimum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
exclusiveMaximum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
multipleOf: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TUnsafe<"date" | "week" | "datetime">;
timezone: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
min_date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
max_date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
reference: import("@sinclair/typebox").TString;
target: import("@sinclair/typebox").TString;
target_field: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
target_field_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"text" | "integer">>;
on_delete: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"no action" | "restrict" | "cascade" | "set null" | "set default">>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TLiteral<false>>;
format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
entity: import("@sinclair/typebox").TString;
min_items: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
max_items: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
mime_types: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny]>>;
options: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"strings">;
values: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
}>, import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"objects">;
values: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
label: import("@sinclair/typebox").TString;
value: import("@sinclair/typebox").TString;
}>>;
}>]>>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
schema: import("@sinclair/typebox").TObject<{}>;
ui_schema: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{}>>;
default_from_schema: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>>;
}>[]>>>;
}>>>;
relations: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<string>;
source: import("@sinclair/typebox").TString;
target: import("@sinclair/typebox").TString;
config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
mappedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
inversedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
connectionTable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
connectionTableMappedName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
mappedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
inversedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
sourceCardinality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
with_limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
fieldConfig: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
label: import("@sinclair/typebox").TString;
}>>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
mappedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
inversedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
targetCardinality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}>>;
}>[]>>>;
indices: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
entity: import("@sinclair/typebox").TString;
fields: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
unique: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>>>;
}> | import("@sinclair/typebox").TObject<{
basepath: import("@sinclair/typebox").TString;
flows: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
trigger: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"manual" | "event" | "http">;
config: import("@sinclair/typebox").TObject<{
mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">;
}> | import("@sinclair/typebox").TObject<{
mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">;
event: import("@sinclair/typebox").TString;
}> | import("@sinclair/typebox").TObject<{
mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">;
path: import("@sinclair/typebox").TString;
method: import("@sinclair/typebox").TUnsafe<"GET" | "POST" | "PATCH" | "PUT" | "DELETE">;
response_type: import("@sinclair/typebox").TUnsafe<"json" | "text" | "html">;
}>;
}>[]>;
tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"log" | "fetch" | "render" | "subflow">;
params: import("@sinclair/typebox").TObject<{
url: import("@sinclair/typebox").TString;
method: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TUnsafe<string>, import("@sinclair/typebox").TString]>, string>>;
headers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
key: import("@sinclair/typebox").TString;
value: import("@sinclair/typebox").TString;
}>>, import("@sinclair/typebox").TString]>, {
key: string;
value: string;
}[]>>;
body: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>, string>>;
normal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString]>, number>>;
}> | import("@sinclair/typebox").TObject<{
delay: import("@sinclair/typebox").TNumber;
}> | import("@sinclair/typebox").TObject<{
render: import("@sinclair/typebox").TString;
}> | import("@sinclair/typebox").TObject<{
flow: import("@sinclair/typebox").TAny;
input: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{
title: string;
} & import("@sinclair/typebox").TAny, import("@sinclair/typebox").TString]>, any>>;
loop: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>;
}>[]>>>;
connections: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
source: import("@sinclair/typebox").TString;
target: import("@sinclair/typebox").TString;
config: import("@sinclair/typebox").TObject<{
condition: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"success">;
}>, import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"error">;
}>, import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"matches">;
path: import("@sinclair/typebox").TString;
value: import("@sinclair/typebox").TString;
}>]>>;
max_retries: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}>;
}>>>;
start_task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
responding_task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>>;
}>;
data: import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TBoolean;
basepath: import("@sinclair/typebox").TString;
entity_name: import("@sinclair/typebox").TString;
storage: import("@sinclair/typebox").TObject<{
body_max_size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}>;
adapter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<string>;
config: import("@sinclair/typebox").TObject<import("@sinclair/typebox").TProperties>;
}>[]>>;
}> | import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TBoolean;
basepath: import("@sinclair/typebox").TString;
entity_name: import("@sinclair/typebox").TString;
allow_register: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
jwt: import("@sinclair/typebox").TObject<{
secret: import("@sinclair/typebox").TString;
alg: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"HS256" | "HS384" | "HS512">>;
expires: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
issuer: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fields: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
}>;
cookie: import("@sinclair/typebox").TObject<{
path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
sameSite: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"strict" | "lax" | "none">>;
secure: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
httpOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
expires: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
renew: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
pathSuccess: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
pathLoggedOut: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
strategies: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
type: import("@sinclair/typebox").TLiteral<"password"> | import("@sinclair/typebox").TLiteral<"oauth"> | import("@sinclair/typebox").TLiteral<"custom_oauth">;
config: import("@sinclair/typebox").TObject<{
hashing: import("@sinclair/typebox").TUnsafe<"plain" | "sha256" | "bcrypt">;
rounds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}> | import("@sinclair/typebox").TObject<{
name: import("@sinclair/typebox").TUnsafe<"google" | "github">;
type: import("@sinclair/typebox").TUnsafe<"oidc" | "oauth2">;
client: import("@sinclair/typebox").TObject<{
client_id: import("@sinclair/typebox").TString;
client_secret: import("@sinclair/typebox").TString;
}>;
}> | import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TUnsafe<"oidc" | "oauth2">;
name: import("@sinclair/typebox").TString;
client: import("@sinclair/typebox").TObject<{
client_id: import("@sinclair/typebox").TString;
client_secret: import("@sinclair/typebox").TString;
token_endpoint_auth_method: import("@sinclair/typebox").TUnsafe<"client_secret_basic">;
}>;
as: import("@sinclair/typebox").TObject<{
issuer: import("@sinclair/typebox").TString;
code_challenge_methods_supported: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"S256">>;
scopes_supported: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
scope_separator: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
authorization_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
token_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
userinfo_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
}>;
}>[]>>>;
guard: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>>;
roles: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
is_default: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
implicit_allow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>>>;
}> | import("@sinclair/typebox").TObject<{
cors: import("@sinclair/typebox").TObject<{
origin: import("@sinclair/typebox").TString;
allow_methods: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<string>>;
allow_headers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
}>;
}> | import("@sinclair/typebox").TObject<{
basepath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
default_primary_format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>;
entities: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
name_singular: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
sort_field: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
sort_dir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"asc" | "desc">>;
primary_format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>;
}>>;
fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<"number"> | import("@sinclair/typebox").TLiteral<"boolean"> | import("@sinclair/typebox").TLiteral<"json"> | import("@sinclair/typebox").TLiteral<"text"> | import("@sinclair/typebox").TLiteral<"media"> | import("@sinclair/typebox").TLiteral<"enum"> | import("@sinclair/typebox").TLiteral<"date"> | import("@sinclair/typebox").TLiteral<"primary"> | import("@sinclair/typebox").TLiteral<"relation"> | import("@sinclair/typebox").TLiteral<"jsonschema">;
config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny]>>;
minLength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
maxLength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
pattern: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
html_config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
element: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
props: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{}>>;
}>>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TAny]>>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;
hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
}>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TAny]>>;
minimum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
maximum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
exclusiveMinimum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
exclusiveMaximum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
multipleOf: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;