From bebf9e0411b83c6ef10b71e97201d7e09366d13d Mon Sep 17 00:00:00 2001 From: dswbx Date: Tue, 22 Jul 2025 20:32:07 +0200 Subject: [PATCH] feat/deno (#219) * update bun version * fix module manager's em reference * add basic deno example * finalize --- .github/workflows/test.yml | 2 +- app/package.json | 1 + app/src/data/entities/EntityManager.ts | 7 +++++++ app/src/modules/ModuleManager.ts | 4 +++- examples/deno/main.ts | 14 ++++++++++++++ examples/deno/package.json | 7 +++++++ 6 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 examples/deno/main.ts create mode 100644 examples/deno/package.json diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 13f989af..a807d563 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v1 with: - bun-version: "1.2.14" + bun-version: "1.2.19" - name: Install dependencies working-directory: ./app diff --git a/app/package.json b/app/package.json index dc2a4618..dcf8718a 100644 --- a/app/package.json +++ b/app/package.json @@ -13,6 +13,7 @@ "bugs": { "url": "https://github.com/bknd-io/bknd/issues" }, + "packageManager": "bun@1.2.19", "engines": { "node": ">=22" }, diff --git a/app/src/data/entities/EntityManager.ts b/app/src/data/entities/EntityManager.ts index ad8c7aac..544c8ad6 100644 --- a/app/src/data/entities/EntityManager.ts +++ b/app/src/data/entities/EntityManager.ts @@ -67,6 +67,13 @@ export class EntityManager { return new EntityManager(this._entities, this.connection, this._relations, this._indices); } + clear(): this { + this._entities = []; + this._relations = []; + this._indices = []; + return this; + } + get entities(): Entity[] { return this._entities; } diff --git a/app/src/modules/ModuleManager.ts b/app/src/modules/ModuleManager.ts index cd189ab7..e5e9e13b 100644 --- a/app/src/modules/ModuleManager.ts +++ b/app/src/modules/ModuleManager.ts @@ -267,7 +267,9 @@ export class ModuleManager { ctx(rebuild?: boolean): ModuleBuildContext { if (rebuild) { this.rebuildServer(); - this.em = new EntityManager([], this.connection, [], [], this.emgr); + this.em = this.em + ? this.em.clear() + : new EntityManager([], this.connection, [], [], this.emgr); this.guard = new Guard(); } diff --git a/examples/deno/main.ts b/examples/deno/main.ts new file mode 100644 index 00000000..58e052f2 --- /dev/null +++ b/examples/deno/main.ts @@ -0,0 +1,14 @@ +import { createRuntimeApp } from "bknd/adapter"; + +const app = await createRuntimeApp({ + connection: { + url: "file:./data.db", + }, + adminOptions: { + // currently needs a hosted version of the static assets + assetsPath: "https://cdn.bknd.io/bknd/static/0.15.0-rc.9/", + }, +}); + +// @ts-ignore +Deno.serve(app.fetch); diff --git a/examples/deno/package.json b/examples/deno/package.json new file mode 100644 index 00000000..97faf720 --- /dev/null +++ b/examples/deno/package.json @@ -0,0 +1,7 @@ +{ + "name": "bknd-deno-example", + "private": true, + "dependencies": { + "bknd": "file:../../app" + } +}