reworked html serving, added new permissions for api/auth, updated adapters

This commit is contained in:
dswbx
2024-11-23 11:21:09 +01:00
parent 6077f0e64f
commit 2433833ad0
30 changed files with 418 additions and 298 deletions

View File

@@ -1,15 +1,37 @@
import { readFile } from "node:fs/promises";
import path from "node:path";
import { App, type CreateAppConfig } from "bknd";
import { LibsqlConnection } from "bknd/data";
import { serveStatic } from "hono/bun";
let app: App;
export function serve(config: CreateAppConfig, distPath?: string) {
async function getConnection(conn?: CreateAppConfig["connection"]) {
if (conn) {
if (LibsqlConnection.isConnection(conn)) {
return conn;
}
return new LibsqlConnection(conn.config);
}
const createClient = await import("@libsql/client/node").then((m) => m.createClient);
if (!createClient) {
throw new Error('libsql client not found, you need to install "@libsql/client/node"');
}
console.log("Using in-memory database");
return new LibsqlConnection(createClient({ url: ":memory:" }));
}
export function serve(_config: Partial<CreateAppConfig> = {}, distPath?: string) {
const root = path.resolve(distPath ?? "./node_modules/bknd/dist", "static");
let app: App;
return async (req: Request) => {
if (!app) {
app = App.create(config);
const connection = await getConnection(_config.connection);
app = App.create({
..._config,
connection
});
app.emgr.on(
"app-built",
@@ -20,7 +42,7 @@ export function serve(config: CreateAppConfig, distPath?: string) {
root
})
);
app.module?.server?.setAdminHtml(await readFile(root + "/index.html", "utf-8"));
app.registerAdminController();
},
"sync"
);
@@ -28,6 +50,6 @@ export function serve(config: CreateAppConfig, distPath?: string) {
await app.build();
}
return app.modules.server.fetch(req);
return app.fetch(req);
};
}