···11import * as ident from '@atproto/syntax'
22import { InvalidRequestError } from '@atproto/xrpc-server'
33-import { Server } from '../../../../lexicon'
44-import { AppContext } from '../../../..'
33+import { Server } from '../../../../lexicon/index.js'
44+import { AppContext } from '../../../../index.js'
55import { Hono } from 'hono'
6677export const createResolveHandleRouter = (ctx: AppContext) => {
···33import { OutputSchema as GetPostsView } from '../../../../lexicon/types/so/sprk/feed/getPosts.js'
44import { AppContext } from '../../../../index.js'
55import { transformPostToPostView } from '../../../../utils/post-transformer.js'
66-import { Database } from '../../../../db.js'
66+import { Database } from '../../../../data-plane/server/index.js'
77import type * as SoSprkFeedDefs from '../../../../lexicon/types/so/sprk/feed/defs.js'
88import { optionalAuthMiddleware } from '../../../../auth/middleware.js'
99
···22import { CID } from 'multiformats/cid'
33import { Document } from 'mongoose'
44import { BidirectionalResolver } from '../id-resolver.js'
55-import { Database } from '../db.js'
55+import { Database } from '../data-plane/server/index.js'
66import { pino } from 'pino'
77import * as Post from './plugins/post.js'
88
+1-1
services/appview/src/services/plugins/post.ts
···11import { AtUri } from '@atproto/syntax'
22import { CID } from 'multiformats/cid'
33import { pino } from 'pino'
44-import { Database, PostDocument } from '../../db.js'
44+import { Database, PostDocument } from '../../data-plane/server/index.js'
5566const logger = pino({ name: 'post-processor' })
77
+1-1
services/appview/src/services/takedown.ts
···11-import { Database } from '../db.js'
11+import { Database } from '../data-plane/server/index.js'
2233export class TakedownService {
44 constructor(private db: Database) {}
+63
services/appview/src/utils/express-adapter.ts
···11+import { Context } from 'hono'
22+import { Request as ExpressRequest, Response as ExpressResponse } from 'express'
33+44+/**
55+ * Converts an Express middleware/router to a Hono middleware
66+ * @param expressRouter The Express router or middleware to convert
77+ * @returns A Hono middleware function
88+ */
99+export const expressToHono = (expressRouter: any) => {
1010+ return async (c: Context): Promise<Response | void> => {
1111+ console.log('Incoming request:', c.req.url)
1212+1313+ // Create a mutable Express-compatible request object
1414+ const req = {
1515+ url: c.req.url,
1616+ method: c.req.method,
1717+ headers: Object.fromEntries([...c.req.raw.headers]),
1818+ query: c.req.query(),
1919+ params: {},
2020+ body: await c.req.json().catch(() => ({})),
2121+ get: (name: string) => req.headers[name.toLowerCase()],
2222+ path: new URL(c.req.url).pathname
2323+ } as unknown as ExpressRequest
2424+2525+ console.log('Created Express request:', { url: req.url, method: req.method, path: req.path })
2626+2727+ return new Promise((resolve) => {
2828+ const res = {
2929+ setHeader: (name: string, value: string) => {
3030+ console.log('setHeader:', name, value)
3131+ c.header(name, value)
3232+ return res
3333+ },
3434+ end: (chunk: any) => {
3535+ console.log('end called with:', chunk)
3636+ resolve(c.body(chunk))
3737+ },
3838+ json: (body: any) => {
3939+ console.log('json called with:', body)
4040+ resolve(c.json(body))
4141+ },
4242+ status: (code: number) => {
4343+ console.log('status called with:', code)
4444+ c.status(code as any)
4545+ return res
4646+ },
4747+ send: (body: any) => {
4848+ console.log('send called with:', body)
4949+ resolve(c.body(body))
5050+ }
5151+ } as unknown as ExpressResponse
5252+5353+ console.log('Calling Express router')
5454+ expressRouter(req, res, (err: any) => {
5555+ console.log('Express router callback called', { err })
5656+ if (err) {
5757+ c.status(500)
5858+ resolve(c.json({ error: 'Internal Server Error' }))
5959+ }
6060+ })
6161+ })
6262+ }
6363+}
+1-1
services/appview/src/utils/post-transformer.ts
···11-import { Database, PostDocument } from '../db.js'
11+import { Database, PostDocument } from '../data-plane/server/index.js'
22import type { Label } from '../lexicon/types/com/atproto/label/defs.js'
33import type { ProfileViewBasic } from '../lexicon/types/so/sprk/actor/defs.js'
44import type * as SoSprkEmbedImages from '../lexicon/types/so/sprk/embed/images.js'