refactor app constructor params to move manager into app options

This commit is contained in:
dswbx
2025-02-18 09:36:59 +01:00
parent bd362607ae
commit e103d3ac33
4 changed files with 23 additions and 30 deletions

View File

@@ -26,6 +26,10 @@ export class AppFirstBoot extends AppEvent {
}
export const AppEvents = { AppConfigUpdatedEvent, AppBuiltEvent, AppFirstBoot } as const;
export type AppOptions = {
plugins?: AppPlugin[];
manager?: Omit<ModuleManagerOptions, "initial" | "onUpdated">;
};
export type CreateAppConfig = {
connection?:
| Connection
@@ -36,8 +40,7 @@ export type CreateAppConfig = {
}
| LibSqlCredentials;
initialConfig?: InitialModuleConfigs;
plugins?: AppPlugin[];
options?: Omit<ModuleManagerOptions, "initial" | "onUpdated">;
options?: AppOptions;
};
export type AppConfig = InitialModuleConfigs;
@@ -47,15 +50,16 @@ export class App {
static readonly Events = AppEvents;
adminController?: AdminController;
private trigger_first_boot = false;
private plugins: AppPlugin[];
constructor(
private connection: Connection,
_initialConfig?: InitialModuleConfigs,
private plugins: AppPlugin[] = [],
moduleManagerOptions?: ModuleManagerOptions
private options?: AppOptions
) {
this.plugins = options?.plugins ?? [];
this.modules = new ModuleManager(connection, {
...moduleManagerOptions,
...(options?.manager ?? {}),
initial: _initialConfig,
onUpdated: async (key, config) => {
// if the EventManager was disabled, we assume we shouldn't
@@ -201,5 +205,5 @@ export function createApp(config: CreateAppConfig = {}) {
throw new Error("Invalid connection");
}
return new App(connection, config.initialConfig, config.plugins, config.options);
return new App(connection, config.initialConfig, config.options);
}

View File

@@ -30,7 +30,6 @@ export function serve({
distPath,
connection,
initialConfig,
plugins,
options,
port = config.server.default_port,
onBuilt,
@@ -44,7 +43,6 @@ export function serve({
const app = await createApp({
connection,
initialConfig,
plugins,
options,
onBuilt,
buildConfig,

View File

@@ -17,10 +17,7 @@ The easiest to get started is using SQLite in-memory. When serving the API in th
the function accepts an object with connection details. To use an in-memory database, you can either omit the object completely or explicitly use it as follows:
```json
{
"type": "libsql",
"config": {
"url": ":memory:"
}
"url": ":memory:"
}
```
@@ -29,10 +26,7 @@ Just like the in-memory option, using a file is just as easy:
```json
{
"type": "libsql",
"config": {
"url": "file:<path/to/your/database.db>"
}
"url": "file:<path/to/your/database.db>"
}
```
Please note that using SQLite as a file is only supported in server environments.
@@ -47,10 +41,7 @@ turso dev
The command will yield a URL. Use it in the connection object:
```json
{
"type": "libsql",
"config": {
"url": "http://localhost:8080"
}
"url": "http://localhost:8080"
}
```
@@ -59,11 +50,8 @@ If you want to use LibSQL on Turso, [sign up for a free account](https://turso.t
connection object to your new database:
```json
{
"type": "libsql",
"config": {
"url": "libsql://your-database-url.turso.io",
"authToken": "your-auth-token"
}
"url": "libsql://your-database-url.turso.io",
"authToken": "your-auth-token"
}
```

View File

@@ -44,18 +44,21 @@ import type { Connection } from "bknd/data";
import type { Config } from "@libsql/client";
type AppPlugin = (app: App) => Promise<void> | void;
type ManagerOptions = {
basePath?: string;
trustFetched?: boolean;
onFirstBoot?: () => Promise<void>;
seed?: (ctx: ModuleBuildContext) => Promise<void>;
};
type CreateAppConfig = {
connection?:
| Connection
| Config;
initialConfig?: InitialModuleConfigs;
plugins?: AppPlugin[];
options?: {
basePath?: string;
trustFetched?: boolean;
onFirstBoot?: () => Promise<void>;
seed?: (ctx: ModuleBuildContext) => Promise<void>;
plugins?: AppPlugin[];
manager?: ManagerOptions
};
};
```