{"version":3,"file":"hono.cjs","names":[],"sources":["../src/adapter/hono/handler.ts"],"sourcesContent":["import type { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport type { Context, MiddlewareHandler } from 'hono';\nimport type { ContentfulStatusCode } from 'hono/utils/http-status';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * Options for initializing a Hono middleware.\n */\nexport interface HonoOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n    /**\n     * Callback method for getting a ZenStackClient instance for the given request.\n     */\n    getClient: (ctx: Context) => Promise<ClientContract<Schema>> | ClientContract<Schema>;\n}\n\nexport function createHonoHandler<Schema extends SchemaDef>(options: HonoOptions<Schema>): MiddlewareHandler {\n    return async (ctx) => {\n        const client = await options.getClient(ctx);\n        if (!client) {\n            return ctx.json({ message: 'unable to get ZenStackClient from request context' }, 500);\n        }\n\n        const url = new URL(ctx.req.url);\n        const query = Object.fromEntries(url.searchParams);\n\n        const path = ctx.req.path.substring(ctx.req.routePath.length - 1);\n        if (!path) {\n            return ctx.json({ message: 'missing path parameter' }, 400);\n        }\n\n        let requestBody: unknown;\n        if (ctx.req.raw.body) {\n            try {\n                requestBody = await ctx.req.json();\n            } catch {\n                // noop\n            }\n        }\n\n        try {\n            const r = await options.apiHandler.handleRequest({\n                method: ctx.req.method,\n                path,\n                query,\n                requestBody,\n                client,\n            });\n            return ctx.json(r.body as object, r.status as ContentfulStatusCode);\n        } catch (err) {\n            logInternalError(options.apiHandler.log, err);\n            return ctx.json({ message: `An internal server error occurred` }, 500);\n        }\n    };\n}\n"],"mappings":";;;AAgBA,SAAgB,kBAA4C,SAAiD;AACzG,QAAO,OAAO,QAAQ;EAClB,MAAM,SAAS,MAAM,QAAQ,UAAU,IAAI;AAC3C,MAAI,CAAC,OACD,QAAO,IAAI,KAAK,EAAE,SAAS,qDAAqD,EAAE,IAAI;EAG1F,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI;EAChC,MAAM,QAAQ,OAAO,YAAY,IAAI,aAAa;EAElD,MAAM,OAAO,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,UAAU,SAAS,EAAE;AACjE,MAAI,CAAC,KACD,QAAO,IAAI,KAAK,EAAE,SAAS,0BAA0B,EAAE,IAAI;EAG/D,IAAI;AACJ,MAAI,IAAI,IAAI,IAAI,KACZ,KAAI;AACA,iBAAc,MAAM,IAAI,IAAI,MAAM;UAC9B;AAKZ,MAAI;GACA,MAAM,IAAI,MAAM,QAAQ,WAAW,cAAc;IAC7C,QAAQ,IAAI,IAAI;IAChB;IACA;IACA;IACA;IACH,CAAC;AACF,UAAO,IAAI,KAAK,EAAE,MAAgB,EAAE,OAA+B;WAC9D,KAAK;AACV,kBAAA,iBAAiB,QAAQ,WAAW,KAAK,IAAI;AAC7C,UAAO,IAAI,KAAK,EAAE,SAAS,qCAAqC,EAAE,IAAI"}