{"version":3,"file":"tanstack-start.mjs","names":["Handler"],"sources":["../src/adapter/tanstack-start/handler.ts","../src/adapter/tanstack-start/index.ts"],"sourcesContent":["import type { SchemaDef } from '@zenstackhq/orm/schema';\nimport type { TanStackStartOptions } from '.';\nimport { logInternalError } from '../common';\n\n/**\n * Creates a TanStack Start server route handler which encapsulates ZenStack CRUD operations.\n *\n * @param options Options for initialization\n * @returns A TanStack Start server route handler\n */\nexport default function factory<Schema extends SchemaDef>(\n    options: TanStackStartOptions<Schema>,\n): ({ request, params }: { request: Request; params: Record<string, string> }) => Promise<Response> {\n    return async ({ request, params }: { request: Request; params: Record<string, string> }) => {\n        const client = await options.getClient(request, params);\n        if (!client) {\n            return new Response(JSON.stringify({ message: 'unable to get ZenStackClient from request context' }), {\n                status: 500,\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n            });\n        }\n\n        const url = new URL(request.url);\n        const query = Object.fromEntries(url.searchParams);\n\n        // Extract path from params._splat for catch-all routes\n        const path = params['_splat'];\n\n        if (!path) {\n            return new Response(JSON.stringify({ message: 'missing path parameter' }), {\n                status: 400,\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n            });\n        }\n\n        let requestBody: unknown;\n        if (request.body) {\n            try {\n                requestBody = await request.json();\n            } catch {\n                // noop\n            }\n        }\n\n        try {\n            const r = await options.apiHandler.handleRequest({\n                method: request.method!,\n                path,\n                query,\n                requestBody,\n                client,\n            });\n            return new Response(JSON.stringify(r.body), {\n                status: r.status,\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n            });\n        } catch (err) {\n            logInternalError(options.apiHandler.log, err);\n            return new Response(JSON.stringify({ message: 'An internal server error occurred' }), {\n                status: 500,\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n            });\n        }\n    };\n}\n","import type { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport type { CommonAdapterOptions } from '../common';\nimport { default as Handler } from './handler';\n\n/**\n * Options for initializing a TanStack Start server route handler.\n */\nexport interface TanStackStartOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n    /**\n     * Callback method for getting a ZenStackClient instance for the given request and params.\n     */\n    getClient: (\n        request: Request,\n        params: Record<string, string>,\n    ) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n}\n\n/**\n * Creates a TanStack Start server route handler.\n * @see https://zenstack.dev/docs/reference/server-adapters/tanstack-start\n */\nexport function TanStackStartHandler<Schema extends SchemaDef>(\n    options: TanStackStartOptions<Schema>,\n): ReturnType<typeof Handler> {\n    return Handler(options);\n}\n\nexport default TanStackStartHandler;\n"],"mappings":";;;;;;;;AAUA,SAAwB,QACpB,SACgG;AAChG,QAAO,OAAO,EAAE,SAAS,aAAmE;EACxF,MAAM,SAAS,MAAM,QAAQ,UAAU,SAAS,OAAO;AACvD,MAAI,CAAC,OACD,QAAO,IAAI,SAAS,KAAK,UAAU,EAAE,SAAS,qDAAqD,CAAC,EAAE;GAClG,QAAQ;GACR,SAAS,EACL,gBAAgB,oBACnB;GACJ,CAAC;EAGN,MAAM,MAAM,IAAI,IAAI,QAAQ,IAAI;EAChC,MAAM,QAAQ,OAAO,YAAY,IAAI,aAAa;EAGlD,MAAM,OAAO,OAAO;AAEpB,MAAI,CAAC,KACD,QAAO,IAAI,SAAS,KAAK,UAAU,EAAE,SAAS,0BAA0B,CAAC,EAAE;GACvE,QAAQ;GACR,SAAS,EACL,gBAAgB,oBACnB;GACJ,CAAC;EAGN,IAAI;AACJ,MAAI,QAAQ,KACR,KAAI;AACA,iBAAc,MAAM,QAAQ,MAAM;UAC9B;AAKZ,MAAI;GACA,MAAM,IAAI,MAAM,QAAQ,WAAW,cAAc;IAC7C,QAAQ,QAAQ;IAChB;IACA;IACA;IACA;IACH,CAAC;AACF,UAAO,IAAI,SAAS,KAAK,UAAU,EAAE,KAAK,EAAE;IACxC,QAAQ,EAAE;IACV,SAAS,EACL,gBAAgB,oBACnB;IACJ,CAAC;WACG,KAAK;AACV,oBAAiB,QAAQ,WAAW,KAAK,IAAI;AAC7C,UAAO,IAAI,SAAS,KAAK,UAAU,EAAE,SAAS,qCAAqC,CAAC,EAAE;IAClF,QAAQ;IACR,SAAS,EACL,gBAAgB,oBACnB;IACJ,CAAC;;;;;;;;;;AC/Cd,SAAgB,qBACZ,SAC0B;AAC1B,QAAOA,QAAQ,QAAQ"}