diff --git a/app/src/App.ts b/app/src/App.ts index ea88f42..caf1e6a 100644 --- a/app/src/App.ts +++ b/app/src/App.ts @@ -16,7 +16,7 @@ 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"; -import type { MaybePromise } from "core/types"; +import type { MaybePromise, PartialRec } from "core/types"; import type { ServerEnv } from "modules/Controller"; import type { IEmailDriver, ICacheDriver } from "core/drivers"; @@ -99,14 +99,18 @@ export type AppOptions = { }; export type CreateAppConfig = { connection?: Connection | { url: string }; - config?: InitialModuleConfigs; + config?: PartialRec; options?: AppOptions; }; export type AppConfig = { version: number } & ModuleConfigs; export type LocalApiOptions = Request | ApiOptions; -export class App { +export class App< + C extends Connection = Connection, + Config extends PartialRec = PartialRec, + Options extends AppOptions = AppOptions, +> { static readonly Events = AppEvents; modules: ModuleManager; @@ -121,7 +125,7 @@ export class App Promise; + onBuilt?: (app: App) => MaybePromise; }; async function makeApp(config: MakeAppConfig) { diff --git a/app/src/data/entities/Result.ts b/app/src/data/entities/Result.ts index 2816efd..b637e1a 100644 --- a/app/src/data/entities/Result.ts +++ b/app/src/data/entities/Result.ts @@ -72,12 +72,12 @@ export class Result { return this.first().parameters; } - get data() { + get data(): T { if (this.options.single) { return this.first().data?.[0]; } - return this.first().data ?? []; + return this.first().data ?? ([] as T); } async execute(qb: Compilable | Compilable[]) { diff --git a/app/src/data/entities/index.ts b/app/src/data/entities/index.ts index 5beca37..59b16b9 100644 --- a/app/src/data/entities/index.ts +++ b/app/src/data/entities/index.ts @@ -4,5 +4,6 @@ export * from "./mutation/Mutator"; export * from "./query/Repository"; export * from "./query/WhereBuilder"; export * from "./query/WithBuilder"; +export * from "./Result"; export * from "./query/RepositoryResult"; export * from "./mutation/MutatorResult"; diff --git a/app/src/index.ts b/app/src/index.ts index 46902cd..def9264 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -29,6 +29,7 @@ export { type InitialModuleConfigs, ModuleManagerEvents, } from "./modules/ModuleManager"; +export type * from "modules/ModuleApi"; export type { ServerEnv } from "modules/Controller"; export type { BkndConfig } from "bknd/adapter"; @@ -128,6 +129,7 @@ export type { EntityRelation } from "data/relations"; export type * from "data/entities/Entity"; export type { EntityManager } from "data/entities/EntityManager"; export type { SchemaManager } from "data/schema/SchemaManager"; +export type * from "data/entities"; export { BaseIntrospector, Connection,