UNPKG

bknd

Version:

Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.

85 lines (84 loc) 2.97 kB
import type { Connection } from "../../data/connection"; import type { EntityManager } from "../../data/entities/EntityManager"; import * as proto from "../../data/prototype"; import { type ModuleBuildContext } from "../Module"; import { type ModuleConfigs, type Modules, type ModuleKey, ModuleManager, type ModuleManagerOptions } from "../ModuleManager"; export type { ModuleBuildContext }; export type ConfigTable<Json = ModuleConfigs> = { id?: number; version: number; type: "config" | "diff" | "backup"; json: Json; created_at?: Date; updated_at?: Date; }; export declare const __bknd: import("../..").Entity<"__bknd", { version: import("../../data/fields").NumberField<true>; type: import("../../data/fields").EnumField<true, string>; json: import("../../data/fields").JsonSchemaField<true, object>; created_at: import("../../data/fields").DateField<false> & { required: () => import("../../data/fields").DateField<true>; }; updated_at: import("../../data/fields").DateField<false> & { required: () => import("../../data/fields").DateField<true>; }; }>; type ConfigTable2 = proto.Schema<typeof __bknd>; interface T_INTERNAL_EM { __bknd: ConfigTable2; } export declare class DbModuleManager extends ModuleManager { __em: EntityManager<T_INTERNAL_EM>; private _version; private readonly _booted_with?; private _stable_configs; buildSyncConfig: { force?: boolean; drop?: boolean; }; constructor(connection: Connection, options?: Partial<ModuleManagerOptions>); /** * This is set through module's setListener * It's called everytime a module's config is updated in SchemaObject * Needs to rebuild modules and save to database */ protected onModuleConfigUpdated(key: string, config: any): Promise<void>; private repo; private mutator; private get db(); syncConfigTable(): Promise<{ sql: string; parameters: readonly unknown[]; }[]>; private fetch; save(): Promise<this>; private revertModules; /** * Validates received diffs for an additional security control. * Checks: * - check if module is registered * - run modules onBeforeUpdate() for added protection * * **Important**: Throw `Error` so it won't get catched. * * @param diffs * @private */ private validateDiffs; build(opts?: { fetch?: boolean; }): Promise<this>; protected buildModules(options?: { graceful?: boolean; ignoreFlags?: boolean; }): Promise<{ built: boolean; modules: ModuleKey[]; synced: boolean; saved: boolean; reloaded: boolean; }>; protected setupInitial(): Promise<void>; mutateConfigSafe<Module extends keyof Modules>(name: Module): Pick<ReturnType<Modules[Module]["schema"]>, "set" | "patch" | "overwrite" | "remove">; version(): number; }