mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-16 04:27:21 +00:00
fix types, refactor db manager to db
This commit is contained in:
@@ -2,7 +2,7 @@ import { describe, expect, mock, test } from "bun:test";
|
|||||||
import type { ModuleBuildContext } from "../../src";
|
import type { ModuleBuildContext } from "../../src";
|
||||||
import { App, createApp } from "core/test/utils";
|
import { App, createApp } from "core/test/utils";
|
||||||
import * as proto from "data/prototype";
|
import * as proto from "data/prototype";
|
||||||
import { DbModuleManager } from "modules/manager/DbModuleManager";
|
import { DbModuleManager } from "modules/db/DbModuleManager";
|
||||||
|
|
||||||
describe("App", () => {
|
describe("App", () => {
|
||||||
test("use db mode by default", async () => {
|
test("use db mode by default", async () => {
|
||||||
|
|||||||
@@ -2,13 +2,10 @@ import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
|
|||||||
import { disableConsoleLog, enableConsoleLog } from "core/utils";
|
import { disableConsoleLog, enableConsoleLog } from "core/utils";
|
||||||
|
|
||||||
import { Module } from "modules/Module";
|
import { Module } from "modules/Module";
|
||||||
import { getDefaultConfig } from "modules/manager/ModuleManager";
|
import { getDefaultConfig } from "modules/ModuleManager";
|
||||||
import {
|
import { type ConfigTable, DbModuleManager as ModuleManager } from "modules/db/DbModuleManager";
|
||||||
type ConfigTable,
|
|
||||||
DbModuleManager as ModuleManager,
|
|
||||||
} from "modules/manager/DbModuleManager";
|
|
||||||
|
|
||||||
import { CURRENT_VERSION, TABLE_NAME } from "modules/migrations";
|
import { CURRENT_VERSION, TABLE_NAME } from "modules/db/migrations";
|
||||||
import { getDummyConnection } from "../helper";
|
import { getDummyConnection } from "../helper";
|
||||||
import { s, stripMark } from "core/utils/schema";
|
import { s, stripMark } from "core/utils/schema";
|
||||||
import { Connection } from "data/connection/Connection";
|
import { Connection } from "data/connection/Connection";
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import {
|
|||||||
ModuleManager,
|
ModuleManager,
|
||||||
type ModuleBuildContext,
|
type ModuleBuildContext,
|
||||||
type ModuleManagerOptions,
|
type ModuleManagerOptions,
|
||||||
} from "modules/manager/ModuleManager";
|
} from "modules/ModuleManager";
|
||||||
import { DbModuleManager } from "modules/manager/DbModuleManager";
|
import { DbModuleManager } from "modules/db/DbModuleManager";
|
||||||
import * as SystemPermissions from "modules/permissions";
|
import * as SystemPermissions from "modules/permissions";
|
||||||
import { AdminController, type AdminControllerOptions } from "modules/server/AdminController";
|
import { AdminController, type AdminControllerOptions } from "modules/server/AdminController";
|
||||||
import { SystemController } from "modules/server/SystemController";
|
import { SystemController } from "modules/server/SystemController";
|
||||||
@@ -112,7 +112,7 @@ export type CreateAppConfig = {
|
|||||||
options?: AppOptions;
|
options?: AppOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AppConfig = InitialModuleConfigs;
|
export type AppConfig = { version: number } & ModuleConfigs;
|
||||||
export type LocalApiOptions = Request | ApiOptions;
|
export type LocalApiOptions = Request | ApiOptions;
|
||||||
|
|
||||||
export class App<C extends Connection = Connection, Options extends AppOptions = AppOptions> {
|
export class App<C extends Connection = Connection, Options extends AppOptions = AppOptions> {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export {
|
|||||||
type ModuleBuildContext,
|
type ModuleBuildContext,
|
||||||
type InitialModuleConfigs,
|
type InitialModuleConfigs,
|
||||||
ModuleManagerEvents,
|
ModuleManagerEvents,
|
||||||
} from "./modules/manager/ModuleManager";
|
} from "./modules/ModuleManager";
|
||||||
|
|
||||||
export type { ServerEnv } from "modules/Controller";
|
export type { ServerEnv } from "modules/Controller";
|
||||||
export type { BkndConfig } from "bknd/adapter";
|
export type { BkndConfig } from "bknd/adapter";
|
||||||
|
|||||||
@@ -6,10 +6,9 @@ import { EventManager, Event } from "core/events";
|
|||||||
import type { Connection } from "data/connection";
|
import type { Connection } from "data/connection";
|
||||||
import { EntityManager } from "data/entities/EntityManager";
|
import { EntityManager } from "data/entities/EntityManager";
|
||||||
import { Hono } from "hono";
|
import { Hono } from "hono";
|
||||||
import { CURRENT_VERSION } from "modules/migrations";
|
import type { ServerEnv } from "./Controller";
|
||||||
import type { ServerEnv } from "../Controller";
|
import { Module, type ModuleBuildContext } from "./Module";
|
||||||
import { Module, type ModuleBuildContext } from "../Module";
|
import { ModuleHelper } from "./ModuleHelper";
|
||||||
import { ModuleHelper } from "../ModuleHelper";
|
|
||||||
import { AppServer } from "modules/server/AppServer";
|
import { AppServer } from "modules/server/AppServer";
|
||||||
import { AppAuth } from "auth/AppAuth";
|
import { AppAuth } from "auth/AppAuth";
|
||||||
import { AppData } from "data/AppData";
|
import { AppData } from "data/AppData";
|
||||||
@@ -43,9 +42,7 @@ export type ModuleConfigs = {
|
|||||||
[K in keyof ModuleSchemas]: s.Static<ModuleSchemas[K]>;
|
[K in keyof ModuleSchemas]: s.Static<ModuleSchemas[K]>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type InitialModuleConfigs = {
|
export type InitialModuleConfigs = { version?: number } & PartialRec<ModuleConfigs>;
|
||||||
version?: number;
|
|
||||||
} & PartialRec<ModuleConfigs>;
|
|
||||||
|
|
||||||
enum Verbosity {
|
enum Verbosity {
|
||||||
silent = 0,
|
silent = 0,
|
||||||
@@ -7,7 +7,7 @@ import * as proto from "data/prototype";
|
|||||||
import { TransformPersistFailedException } from "data/errors";
|
import { TransformPersistFailedException } from "data/errors";
|
||||||
import type { Kysely } from "kysely";
|
import type { Kysely } from "kysely";
|
||||||
import { mergeWith } from "lodash-es";
|
import { mergeWith } from "lodash-es";
|
||||||
import { CURRENT_VERSION, TABLE_NAME, migrate } from "modules/migrations";
|
import { CURRENT_VERSION, TABLE_NAME, migrate } from "./migrations";
|
||||||
import { Module, type ModuleBuildContext } from "../Module";
|
import { Module, type ModuleBuildContext } from "../Module";
|
||||||
import {
|
import {
|
||||||
type InitialModuleConfigs,
|
type InitialModuleConfigs,
|
||||||
@@ -19,7 +19,7 @@ import {
|
|||||||
ModuleManager,
|
ModuleManager,
|
||||||
ModuleManagerConfigUpdateEvent,
|
ModuleManagerConfigUpdateEvent,
|
||||||
type ModuleManagerOptions,
|
type ModuleManagerOptions,
|
||||||
} from "./ModuleManager";
|
} from "../ModuleManager";
|
||||||
|
|
||||||
export type { ModuleBuildContext };
|
export type { ModuleBuildContext };
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ const configJsonSchema = s.anyOf([
|
|||||||
]);
|
]);
|
||||||
export const __bknd = proto.entity(TABLE_NAME, {
|
export const __bknd = proto.entity(TABLE_NAME, {
|
||||||
version: proto.number().required(),
|
version: proto.number().required(),
|
||||||
type: proto.enumm({ enum: ["config", "diff", "backup"] }).required(),
|
type: proto.enumm({ enum: ["config", "diff", "backup", "secrets"] }).required(),
|
||||||
json: proto.jsonSchema({ schema: configJsonSchema.toJSON() }).required(),
|
json: proto.jsonSchema({ schema: configJsonSchema.toJSON() }).required(),
|
||||||
created_at: proto.datetime(),
|
created_at: proto.datetime(),
|
||||||
updated_at: proto.datetime(),
|
updated_at: proto.datetime(),
|
||||||
@@ -10,7 +10,7 @@ export {
|
|||||||
type ModuleSchemas,
|
type ModuleSchemas,
|
||||||
MODULE_NAMES,
|
MODULE_NAMES,
|
||||||
type ModuleKey,
|
type ModuleKey,
|
||||||
} from "./manager/ModuleManager";
|
} from "./ModuleManager";
|
||||||
export type { ModuleBuildContext } from "./Module";
|
export type { ModuleBuildContext } from "./Module";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
} from "bknd/utils";
|
} from "bknd/utils";
|
||||||
import type { ModuleBuildContext } from "modules";
|
import type { ModuleBuildContext } from "modules";
|
||||||
import { excludePropertyTypes, rescursiveClean } from "./utils";
|
import { excludePropertyTypes, rescursiveClean } from "./utils";
|
||||||
import type { DbModuleManager } from "modules/manager/DbModuleManager";
|
import type { DbModuleManager } from "modules/db/DbModuleManager";
|
||||||
|
|
||||||
export const mcpSchemaSymbol = Symbol.for("bknd-mcp-schema");
|
export const mcpSchemaSymbol = Symbol.for("bknd-mcp-schema");
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export const serverConfigSchema = $object(
|
|||||||
{
|
{
|
||||||
description: "Server configuration",
|
description: "Server configuration",
|
||||||
},
|
},
|
||||||
);
|
).strict();
|
||||||
|
|
||||||
export type AppServerConfig = s.Static<typeof serverConfigSchema>;
|
export type AppServerConfig = s.Static<typeof serverConfigSchema>;
|
||||||
|
|
||||||
|
|||||||
@@ -26,12 +26,12 @@ import {
|
|||||||
type ModuleConfigs,
|
type ModuleConfigs,
|
||||||
type ModuleSchemas,
|
type ModuleSchemas,
|
||||||
type ModuleKey,
|
type ModuleKey,
|
||||||
} from "modules/manager/ModuleManager";
|
} from "modules/ModuleManager";
|
||||||
import * as SystemPermissions from "modules/permissions";
|
import * as SystemPermissions from "modules/permissions";
|
||||||
import { getVersion } from "core/env";
|
import { getVersion } from "core/env";
|
||||||
import type { Module } from "modules/Module";
|
import type { Module } from "modules/Module";
|
||||||
import { getSystemMcp } from "modules/mcp/system-mcp";
|
import { getSystemMcp } from "modules/mcp/system-mcp";
|
||||||
import { DbModuleManager } from "modules/manager/DbModuleManager";
|
import { DbModuleManager } from "modules/db/DbModuleManager";
|
||||||
|
|
||||||
export type ConfigUpdate<Key extends ModuleKey = ModuleKey> = {
|
export type ConfigUpdate<Key extends ModuleKey = ModuleKey> = {
|
||||||
success: true;
|
success: true;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export function syncConfig({
|
|||||||
|
|
||||||
if (firstBoot) {
|
if (firstBoot) {
|
||||||
firstBoot = false;
|
firstBoot = false;
|
||||||
await write?.(app.toJSON(true));
|
await write?.(app.toJSON(includeSecrets));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { ModuleConfigs, ModuleSchemas } from "modules";
|
import type { ModuleConfigs, ModuleSchemas } from "modules";
|
||||||
import { getDefaultConfig, getDefaultSchema } from "modules/manager/ModuleManager";
|
import { getDefaultConfig, getDefaultSchema } from "modules/ModuleManager";
|
||||||
import {
|
import {
|
||||||
createContext,
|
createContext,
|
||||||
startTransition,
|
startTransition,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { showRoutes } from "hono/dev";
|
|||||||
import { App, registries } from "./src";
|
import { App, registries } from "./src";
|
||||||
import { StorageLocalAdapter } from "./src/adapter/node";
|
import { StorageLocalAdapter } from "./src/adapter/node";
|
||||||
import type { Connection } from "./src/data/connection/Connection";
|
import type { Connection } from "./src/data/connection/Connection";
|
||||||
import { __bknd } from "modules/manager/DbModuleManager";
|
import { __bknd } from "modules/db/DbModuleManager";
|
||||||
import { nodeSqlite } from "./src/adapter/node/connection/NodeSqliteConnection";
|
import { nodeSqlite } from "./src/adapter/node/connection/NodeSqliteConnection";
|
||||||
import { libsql } from "./src/data/connection/sqlite/libsql/LibsqlConnection";
|
import { libsql } from "./src/data/connection/sqlite/libsql/LibsqlConnection";
|
||||||
import { $console } from "core/utils/console";
|
import { $console } from "core/utils/console";
|
||||||
|
|||||||
Reference in New Issue
Block a user