From 2c5371610b3d9e457711ba7f1788c347769943f1 Mon Sep 17 00:00:00 2001 From: dswbx Date: Thu, 4 Sep 2025 13:00:27 +0200 Subject: [PATCH] fix types, refactor db manager to db --- app/__test__/app/App.spec.ts | 2 +- app/__test__/modules/ModuleManager.spec.ts | 9 +++------ app/src/App.ts | 6 +++--- app/src/index.ts | 2 +- app/src/modules/{manager => }/ModuleManager.ts | 11 ++++------- app/src/modules/{manager => db}/DbModuleManager.ts | 6 +++--- app/src/modules/{ => db}/migrations.ts | 0 app/src/modules/index.ts | 2 +- app/src/modules/mcp/McpSchemaHelper.ts | 2 +- app/src/modules/server/AppServer.ts | 2 +- app/src/modules/server/SystemController.ts | 4 ++-- app/src/plugins/dev/sync-config.plugin.ts | 2 +- app/src/ui/client/BkndProvider.tsx | 2 +- app/vite.dev.ts | 2 +- 14 files changed, 23 insertions(+), 29 deletions(-) rename app/src/modules/{manager => }/ModuleManager.ts (97%) rename app/src/modules/{manager => db}/DbModuleManager.ts (98%) rename app/src/modules/{ => db}/migrations.ts (100%) diff --git a/app/__test__/app/App.spec.ts b/app/__test__/app/App.spec.ts index d34dbea..fab85b8 100644 --- a/app/__test__/app/App.spec.ts +++ b/app/__test__/app/App.spec.ts @@ -2,7 +2,7 @@ import { describe, expect, mock, test } from "bun:test"; import type { ModuleBuildContext } from "../../src"; import { App, createApp } from "core/test/utils"; import * as proto from "data/prototype"; -import { DbModuleManager } from "modules/manager/DbModuleManager"; +import { DbModuleManager } from "modules/db/DbModuleManager"; describe("App", () => { test("use db mode by default", async () => { diff --git a/app/__test__/modules/ModuleManager.spec.ts b/app/__test__/modules/ModuleManager.spec.ts index 671f74b..66f2380 100644 --- a/app/__test__/modules/ModuleManager.spec.ts +++ b/app/__test__/modules/ModuleManager.spec.ts @@ -2,13 +2,10 @@ import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test"; import { disableConsoleLog, enableConsoleLog } from "core/utils"; import { Module } from "modules/Module"; -import { getDefaultConfig } from "modules/manager/ModuleManager"; -import { - type ConfigTable, - DbModuleManager as ModuleManager, -} from "modules/manager/DbModuleManager"; +import { getDefaultConfig } from "modules/ModuleManager"; +import { type ConfigTable, DbModuleManager as ModuleManager } from "modules/db/DbModuleManager"; -import { CURRENT_VERSION, TABLE_NAME } from "modules/migrations"; +import { CURRENT_VERSION, TABLE_NAME } from "modules/db/migrations"; import { getDummyConnection } from "../helper"; import { s, stripMark } from "core/utils/schema"; import { Connection } from "data/connection/Connection"; diff --git a/app/src/App.ts b/app/src/App.ts index 3fb5574..52826f3 100644 --- a/app/src/App.ts +++ b/app/src/App.ts @@ -11,8 +11,8 @@ import { ModuleManager, type ModuleBuildContext, type ModuleManagerOptions, -} from "modules/manager/ModuleManager"; -import { DbModuleManager } from "modules/manager/DbModuleManager"; +} from "modules/ModuleManager"; +import { DbModuleManager } from "modules/db/DbModuleManager"; import * as SystemPermissions from "modules/permissions"; import { AdminController, type AdminControllerOptions } from "modules/server/AdminController"; import { SystemController } from "modules/server/SystemController"; @@ -112,7 +112,7 @@ export type CreateAppConfig = { options?: AppOptions; }; -export type AppConfig = InitialModuleConfigs; +export type AppConfig = { version: number } & ModuleConfigs; export type LocalApiOptions = Request | ApiOptions; export class App { diff --git a/app/src/index.ts b/app/src/index.ts index 81d8185..46902cd 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -28,7 +28,7 @@ export { type ModuleBuildContext, type InitialModuleConfigs, ModuleManagerEvents, -} from "./modules/manager/ModuleManager"; +} from "./modules/ModuleManager"; export type { ServerEnv } from "modules/Controller"; export type { BkndConfig } from "bknd/adapter"; diff --git a/app/src/modules/manager/ModuleManager.ts b/app/src/modules/ModuleManager.ts similarity index 97% rename from app/src/modules/manager/ModuleManager.ts rename to app/src/modules/ModuleManager.ts index 6b29ef9..e035ad1 100644 --- a/app/src/modules/manager/ModuleManager.ts +++ b/app/src/modules/ModuleManager.ts @@ -6,10 +6,9 @@ import { EventManager, Event } from "core/events"; import type { Connection } from "data/connection"; import { EntityManager } from "data/entities/EntityManager"; import { Hono } from "hono"; -import { CURRENT_VERSION } from "modules/migrations"; -import type { ServerEnv } from "../Controller"; -import { Module, type ModuleBuildContext } from "../Module"; -import { ModuleHelper } from "../ModuleHelper"; +import type { ServerEnv } from "./Controller"; +import { Module, type ModuleBuildContext } from "./Module"; +import { ModuleHelper } from "./ModuleHelper"; import { AppServer } from "modules/server/AppServer"; import { AppAuth } from "auth/AppAuth"; import { AppData } from "data/AppData"; @@ -43,9 +42,7 @@ export type ModuleConfigs = { [K in keyof ModuleSchemas]: s.Static; }; -export type InitialModuleConfigs = { - version?: number; -} & PartialRec; +export type InitialModuleConfigs = { version?: number } & PartialRec; enum Verbosity { silent = 0, diff --git a/app/src/modules/manager/DbModuleManager.ts b/app/src/modules/db/DbModuleManager.ts similarity index 98% rename from app/src/modules/manager/DbModuleManager.ts rename to app/src/modules/db/DbModuleManager.ts index 18529e6..995d81d 100644 --- a/app/src/modules/manager/DbModuleManager.ts +++ b/app/src/modules/db/DbModuleManager.ts @@ -7,7 +7,7 @@ import * as proto from "data/prototype"; import { TransformPersistFailedException } from "data/errors"; import type { Kysely } from "kysely"; 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 { type InitialModuleConfigs, @@ -19,7 +19,7 @@ import { ModuleManager, ModuleManagerConfigUpdateEvent, type ModuleManagerOptions, -} from "./ModuleManager"; +} from "../ModuleManager"; export type { ModuleBuildContext }; @@ -45,7 +45,7 @@ const configJsonSchema = s.anyOf([ ]); export const __bknd = proto.entity(TABLE_NAME, { 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(), created_at: proto.datetime(), updated_at: proto.datetime(), diff --git a/app/src/modules/migrations.ts b/app/src/modules/db/migrations.ts similarity index 100% rename from app/src/modules/migrations.ts rename to app/src/modules/db/migrations.ts diff --git a/app/src/modules/index.ts b/app/src/modules/index.ts index efa525d..84a50cc 100644 --- a/app/src/modules/index.ts +++ b/app/src/modules/index.ts @@ -10,7 +10,7 @@ export { type ModuleSchemas, MODULE_NAMES, type ModuleKey, -} from "./manager/ModuleManager"; +} from "./ModuleManager"; export type { ModuleBuildContext } from "./Module"; export { diff --git a/app/src/modules/mcp/McpSchemaHelper.ts b/app/src/modules/mcp/McpSchemaHelper.ts index 7b1db61..ecb16e4 100644 --- a/app/src/modules/mcp/McpSchemaHelper.ts +++ b/app/src/modules/mcp/McpSchemaHelper.ts @@ -10,7 +10,7 @@ import { } from "bknd/utils"; import type { ModuleBuildContext } from "modules"; 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"); diff --git a/app/src/modules/server/AppServer.ts b/app/src/modules/server/AppServer.ts index 57af316..eeaab9f 100644 --- a/app/src/modules/server/AppServer.ts +++ b/app/src/modules/server/AppServer.ts @@ -30,7 +30,7 @@ export const serverConfigSchema = $object( { description: "Server configuration", }, -); +).strict(); export type AppServerConfig = s.Static; diff --git a/app/src/modules/server/SystemController.ts b/app/src/modules/server/SystemController.ts index 824801a..fde3d63 100644 --- a/app/src/modules/server/SystemController.ts +++ b/app/src/modules/server/SystemController.ts @@ -26,12 +26,12 @@ import { type ModuleConfigs, type ModuleSchemas, type ModuleKey, -} from "modules/manager/ModuleManager"; +} from "modules/ModuleManager"; import * as SystemPermissions from "modules/permissions"; import { getVersion } from "core/env"; import type { Module } from "modules/Module"; import { getSystemMcp } from "modules/mcp/system-mcp"; -import { DbModuleManager } from "modules/manager/DbModuleManager"; +import { DbModuleManager } from "modules/db/DbModuleManager"; export type ConfigUpdate = { success: true; diff --git a/app/src/plugins/dev/sync-config.plugin.ts b/app/src/plugins/dev/sync-config.plugin.ts index 24d84d3..535e538 100644 --- a/app/src/plugins/dev/sync-config.plugin.ts +++ b/app/src/plugins/dev/sync-config.plugin.ts @@ -28,7 +28,7 @@ export function syncConfig({ if (firstBoot) { firstBoot = false; - await write?.(app.toJSON(true)); + await write?.(app.toJSON(includeSecrets)); } }, }); diff --git a/app/src/ui/client/BkndProvider.tsx b/app/src/ui/client/BkndProvider.tsx index 2e6e6d2..fa8ed35 100644 --- a/app/src/ui/client/BkndProvider.tsx +++ b/app/src/ui/client/BkndProvider.tsx @@ -1,5 +1,5 @@ import type { ModuleConfigs, ModuleSchemas } from "modules"; -import { getDefaultConfig, getDefaultSchema } from "modules/manager/ModuleManager"; +import { getDefaultConfig, getDefaultSchema } from "modules/ModuleManager"; import { createContext, startTransition, diff --git a/app/vite.dev.ts b/app/vite.dev.ts index 9f8374c..f102ee4 100644 --- a/app/vite.dev.ts +++ b/app/vite.dev.ts @@ -4,7 +4,7 @@ import { showRoutes } from "hono/dev"; import { App, registries } from "./src"; import { StorageLocalAdapter } from "./src/adapter/node"; 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 { libsql } from "./src/data/connection/sqlite/libsql/LibsqlConnection"; import { $console } from "core/utils/console";