{"version":3,"file":"nuxt.mjs","names":[],"sources":["../src/adapter/nuxt/handler.ts"],"sourcesContent":["import type { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport {\n    defineEventHandler,\n    getQuery,\n    getRouterParams,\n    readBody,\n    setResponseStatus,\n    type H3Event,\n    type EventHandlerRequest,\n} from 'h3';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * Nuxt request handler options\n */\nexport interface NuxtHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n    /**\n     * Callback for getting a ZenStackClient for the given request\n     */\n    getClient: (event: H3Event<EventHandlerRequest>) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n}\n\nexport function createEventHandler<Schema extends SchemaDef>(options: NuxtHandlerOptions<Schema>) {\n    return defineEventHandler(async (event) => {\n        const client = await options.getClient(event);\n        if (!client) {\n            setResponseStatus(event, 500);\n            return { message: 'unable to get ZenStackClient from request context' };\n        }\n\n        const routerParam = getRouterParams(event);\n        const query = await getQuery(event);\n\n        let reqBody: unknown;\n        if (event.method === 'POST' || event.method === 'PUT' || event.method === 'PATCH') {\n            reqBody = await readBody(event);\n        }\n\n        try {\n            const { status, body } = await options.apiHandler.handleRequest({\n                method: event.method,\n                path: routerParam['_']!,\n                query: query as Record<string, string | string[]>,\n                requestBody: reqBody,\n                client,\n            });\n\n            setResponseStatus(event, status);\n            return body;\n        } catch (err) {\n            setResponseStatus(event, 500);\n            logInternalError(options.apiHandler.log, err);\n            return { message: 'An internal server error occurred' };\n        }\n    });\n}\n"],"mappings":";;;AAuBA,SAAgB,mBAA6C,SAAqC;AAC9F,QAAO,mBAAmB,OAAO,UAAU;EACvC,MAAM,SAAS,MAAM,QAAQ,UAAU,MAAM;AAC7C,MAAI,CAAC,QAAQ;AACT,qBAAkB,OAAO,IAAI;AAC7B,UAAO,EAAE,SAAS,qDAAqD;;EAG3E,MAAM,cAAc,gBAAgB,MAAM;EAC1C,MAAM,QAAQ,MAAM,SAAS,MAAM;EAEnC,IAAI;AACJ,MAAI,MAAM,WAAW,UAAU,MAAM,WAAW,SAAS,MAAM,WAAW,QACtE,WAAU,MAAM,SAAS,MAAM;AAGnC,MAAI;GACA,MAAM,EAAE,QAAQ,SAAS,MAAM,QAAQ,WAAW,cAAc;IAC5D,QAAQ,MAAM;IACd,MAAM,YAAY;IACX;IACP,aAAa;IACb;IACH,CAAC;AAEF,qBAAkB,OAAO,OAAO;AAChC,UAAO;WACF,KAAK;AACV,qBAAkB,OAAO,IAAI;AAC7B,oBAAiB,QAAQ,WAAW,KAAK,IAAI;AAC7C,UAAO,EAAE,SAAS,qCAAqC;;GAE7D"}