From 951c14513825b19f2f646c97e5cac3dfd3ef9172 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 17 Feb 2025 15:09:46 -0600 Subject: [PATCH] api: set vars while constructing DittoApp --- packages/api/DittoApp.test.ts | 11 +++++++++-- packages/api/DittoApp.ts | 13 +++++++++++++ packages/api/DittoRoute.ts | 9 +-------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/packages/api/DittoApp.test.ts b/packages/api/DittoApp.test.ts index b6525eed..9bab8eab 100644 --- a/packages/api/DittoApp.test.ts +++ b/packages/api/DittoApp.test.ts @@ -1,10 +1,17 @@ +import { DittoConf } from '@ditto/conf'; +import { DittoDB } from '@ditto/db'; import { Hono } from '@hono/hono'; +import { MockRelay } from '@nostrify/nostrify/test'; import { DittoApp } from './DittoApp.ts'; import { DittoRoute } from './DittoRoute.ts'; -Deno.test('DittoApp', () => { - const app = new DittoApp(); +Deno.test('DittoApp', async () => { + await using db = DittoDB.create('memory://'); + const conf = new DittoConf(new Map()); + const store = new MockRelay(); + + const app = new DittoApp({ conf, db, store }); const hono = new Hono(); const route = new DittoRoute(); diff --git a/packages/api/DittoApp.ts b/packages/api/DittoApp.ts index 3e154e17..9180bb13 100644 --- a/packages/api/DittoApp.ts +++ b/packages/api/DittoApp.ts @@ -1,8 +1,21 @@ import { Hono } from '@hono/hono'; +import type { HonoOptions } from '@hono/hono/hono-base'; import type { DittoEnv } from './DittoEnv.ts'; export class DittoApp extends Hono { // @ts-ignore Require a DittoRoute for type safety. declare route: (path: string, app: Hono) => Hono; + + constructor(vars: Omit, opts: HonoOptions = {}) { + super(opts); + + this.use((c, next) => { + c.set('db', vars.db); + c.set('conf', vars.conf); + c.set('store', vars.store); + c.set('signal', c.req.raw.signal); + return next(); + }); + } } diff --git a/packages/api/DittoRoute.ts b/packages/api/DittoRoute.ts index d1b06a86..73a63090 100644 --- a/packages/api/DittoRoute.ts +++ b/packages/api/DittoRoute.ts @@ -1,4 +1,4 @@ -import { type Context, type ErrorHandler, Hono } from '@hono/hono'; +import { type ErrorHandler, Hono } from '@hono/hono'; import { HTTPException } from '@hono/hono/http-exception'; import type { HonoOptions } from '@hono/hono/hono-base'; @@ -13,7 +13,6 @@ export class DittoRoute extends Hono { super(opts); this.use((c, next) => { - this.setSignal(c); this.assertVars(c.var); return next(); }); @@ -21,12 +20,6 @@ export class DittoRoute extends Hono { this.onError(this._errorHandler); } - private setSignal(c: Context): void { - if (!c.var.signal) { - c.set('signal', c.req.raw.signal); - } - } - private assertVars(vars: Partial): DittoEnv['Variables'] { if (!vars.db) this.throwMissingVar('db'); if (!vars.conf) this.throwMissingVar('conf');