@zenstackhq/server 3.0.0-beta.13 → 3.0.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/api.cjs +1767 -19
  2. package/dist/api.cjs.map +1 -1
  3. package/dist/api.d.cts +123 -4
  4. package/dist/api.d.ts +123 -4
  5. package/dist/api.js +1762 -15
  6. package/dist/api.js.map +1 -1
  7. package/dist/common-6DG-xEmM.d.cts +14 -0
  8. package/dist/common-CyapsM8n.d.ts +14 -0
  9. package/dist/elysia.cjs +118 -0
  10. package/dist/elysia.cjs.map +1 -0
  11. package/dist/elysia.d.cts +53 -0
  12. package/dist/elysia.d.ts +53 -0
  13. package/dist/elysia.js +83 -0
  14. package/dist/elysia.js.map +1 -0
  15. package/dist/express.cjs +41 -3
  16. package/dist/express.cjs.map +1 -1
  17. package/dist/express.d.cts +7 -7
  18. package/dist/express.d.ts +7 -7
  19. package/dist/express.js +30 -2
  20. package/dist/express.js.map +1 -1
  21. package/dist/fastify.cjs +103 -0
  22. package/dist/fastify.cjs.map +1 -0
  23. package/dist/fastify.d.cts +22 -0
  24. package/dist/fastify.d.ts +22 -0
  25. package/dist/fastify.js +68 -0
  26. package/dist/fastify.js.map +1 -0
  27. package/dist/hono.cjs +111 -0
  28. package/dist/hono.cjs.map +1 -0
  29. package/dist/hono.d.cts +18 -0
  30. package/dist/hono.d.ts +18 -0
  31. package/dist/hono.js +76 -0
  32. package/dist/hono.js.map +1 -0
  33. package/dist/next.cjs +178 -0
  34. package/dist/next.cjs.map +1 -0
  35. package/dist/next.d.cts +61 -0
  36. package/dist/next.d.ts +61 -0
  37. package/dist/next.js +143 -0
  38. package/dist/next.js.map +1 -0
  39. package/dist/nuxt.cjs +109 -0
  40. package/dist/nuxt.cjs.map +1 -0
  41. package/dist/nuxt.d.cts +19 -0
  42. package/dist/nuxt.d.ts +19 -0
  43. package/dist/nuxt.js +74 -0
  44. package/dist/nuxt.js.map +1 -0
  45. package/dist/sveltekit.cjs +134 -0
  46. package/dist/sveltekit.cjs.map +1 -0
  47. package/dist/sveltekit.d.cts +25 -0
  48. package/dist/sveltekit.d.ts +25 -0
  49. package/dist/sveltekit.js +99 -0
  50. package/dist/sveltekit.js.map +1 -0
  51. package/dist/tanstack-start.cjs +139 -0
  52. package/dist/tanstack-start.cjs.map +1 -0
  53. package/dist/tanstack-start.d.cts +32 -0
  54. package/dist/tanstack-start.d.ts +32 -0
  55. package/dist/tanstack-start.js +104 -0
  56. package/dist/tanstack-start.js.map +1 -0
  57. package/dist/{types-BH-88xJo.d.cts → types-D5t0sUEw.d.cts} +6 -2
  58. package/dist/{types-BH-88xJo.d.ts → types-D5t0sUEw.d.ts} +6 -2
  59. package/package.json +120 -8
package/dist/next.js ADDED
@@ -0,0 +1,143 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/adapter/next/app-route-handler.ts
5
+ import { NextResponse } from "next/server";
6
+
7
+ // src/api/utils.ts
8
+ import { Decimal } from "decimal.js";
9
+ import SuperJSON from "superjson";
10
+ import { match } from "ts-pattern";
11
+ import { fromError as fromError3 } from "zod-validation-error/v3";
12
+ import { fromError as fromError4 } from "zod-validation-error/v4";
13
+ function log(logger, level, message, error) {
14
+ if (!logger) {
15
+ return;
16
+ }
17
+ const getMessage = typeof message === "function" ? message : () => message;
18
+ if (typeof logger === "function") {
19
+ logger(level, getMessage(), error);
20
+ } else if (logger.includes(level)) {
21
+ const logFn = match(level).with("debug", () => console.debug).with("info", () => console.info).with("warn", () => console.warn).with("error", () => console.error).exhaustive();
22
+ logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `
23
+ ${error}` : ""}`);
24
+ }
25
+ }
26
+ __name(log, "log");
27
+
28
+ // src/adapter/common.ts
29
+ function logInternalError(logger, err) {
30
+ log(logger, "error", `An unhandled error occurred while processing the request: ${err}${err instanceof Error ? "\n" + err.stack : ""}`);
31
+ }
32
+ __name(logInternalError, "logInternalError");
33
+
34
+ // src/adapter/next/app-route-handler.ts
35
+ function factory(options) {
36
+ return async (req, context) => {
37
+ const client = await options.getClient(req);
38
+ if (!client) {
39
+ return NextResponse.json({
40
+ message: "unable to get ZenStackClient from request context"
41
+ }, {
42
+ status: 500
43
+ });
44
+ }
45
+ let params;
46
+ const url = new URL(req.url);
47
+ const query = Object.fromEntries(url.searchParams);
48
+ try {
49
+ params = await context.params;
50
+ } catch {
51
+ return NextResponse.json({
52
+ message: "Failed to resolve request parameters"
53
+ }, {
54
+ status: 500
55
+ });
56
+ }
57
+ if (!params.path) {
58
+ return NextResponse.json({
59
+ message: "missing path parameter"
60
+ }, {
61
+ status: 400
62
+ });
63
+ }
64
+ const path = params.path.join("/");
65
+ let requestBody;
66
+ if (req.body) {
67
+ try {
68
+ requestBody = await req.json();
69
+ } catch {
70
+ }
71
+ }
72
+ try {
73
+ const r = await options.apiHandler.handleRequest({
74
+ method: req.method,
75
+ path,
76
+ query,
77
+ requestBody,
78
+ client
79
+ });
80
+ return NextResponse.json(r.body, {
81
+ status: r.status
82
+ });
83
+ } catch (err) {
84
+ logInternalError(options.apiHandler.log, err);
85
+ return NextResponse.json({
86
+ message: "An internal server error occurred"
87
+ }, {
88
+ status: 500
89
+ });
90
+ }
91
+ };
92
+ }
93
+ __name(factory, "factory");
94
+
95
+ // src/adapter/next/pages-route-handler.ts
96
+ function factory2(options) {
97
+ return async (req, res) => {
98
+ const client = await options.getClient(req, res);
99
+ if (!client) {
100
+ res.status(500).json({
101
+ message: "unable to get ZenStackClient from request context"
102
+ });
103
+ return;
104
+ }
105
+ if (!req.query["path"]) {
106
+ res.status(400).json({
107
+ message: "missing path parameter"
108
+ });
109
+ return;
110
+ }
111
+ const path = req.query["path"].join("/");
112
+ try {
113
+ const r = await options.apiHandler.handleRequest({
114
+ method: req.method,
115
+ path,
116
+ query: req.query,
117
+ requestBody: req.body,
118
+ client
119
+ });
120
+ res.status(r.status).send(r.body);
121
+ } catch (err) {
122
+ logInternalError(options.apiHandler.log, err);
123
+ res.status(500).send({
124
+ message: "An internal server error occurred"
125
+ });
126
+ }
127
+ };
128
+ }
129
+ __name(factory2, "factory");
130
+
131
+ // src/adapter/next/index.ts
132
+ function NextRequestHandler(options) {
133
+ if (options.useAppDir === true) {
134
+ return factory(options);
135
+ } else {
136
+ return factory2(options);
137
+ }
138
+ }
139
+ __name(NextRequestHandler, "NextRequestHandler");
140
+ export {
141
+ NextRequestHandler
142
+ };
143
+ //# sourceMappingURL=next.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapter/next/app-route-handler.ts","../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/next/pages-route-handler.ts","../src/adapter/next/index.ts"],"sourcesContent":["import type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { NextRequest, NextResponse } from 'next/server';\nimport type { AppRouteRequestHandlerOptions } from '.';\nimport { logInternalError } from '../common';\n\ntype Context = { params: Promise<{ path: string[] }> };\n\n/**\n * Creates a Next.js \"app router\" API route request handler that handles ZenStack CRUD requests.\n *\n * @param options Options for initialization\n * @returns An API route request handler\n */\nexport default function factory<Schema extends SchemaDef>(\n options: AppRouteRequestHandlerOptions<Schema>,\n): (req: NextRequest, context: Context) => Promise<NextResponse> {\n return async (req: NextRequest, context: Context) => {\n const client = await options.getClient(req);\n if (!client) {\n return NextResponse.json({ message: 'unable to get ZenStackClient from request context' }, { status: 500 });\n }\n\n let params: Awaited<Context['params']>;\n const url = new URL(req.url);\n const query = Object.fromEntries(url.searchParams);\n\n try {\n params = await context.params;\n } catch {\n return NextResponse.json({ message: 'Failed to resolve request parameters' }, { status: 500 });\n }\n\n if (!params.path) {\n return NextResponse.json(\n { message: 'missing path parameter' },\n {\n status: 400,\n },\n );\n }\n const path = params.path.join('/');\n\n let requestBody: unknown;\n if (req.body) {\n try {\n requestBody = await req.json();\n } catch {\n // noop\n }\n }\n\n try {\n const r = await options.apiHandler.handleRequest({\n method: req.method!,\n path,\n query,\n requestBody,\n client,\n });\n return NextResponse.json(r.body, { status: r.status });\n } catch (err) {\n logInternalError(options.apiHandler.log, err);\n return NextResponse.json({ message: 'An internal server error occurred' }, { status: 500 });\n }\n };\n}\n","import { Decimal } from 'decimal.js';\nimport SuperJSON from 'superjson';\nimport { match } from 'ts-pattern';\nimport { ZodError } from 'zod';\nimport { fromError as fromError3 } from 'zod-validation-error/v3';\nimport { fromError as fromError4 } from 'zod-validation-error/v4';\nimport type { LogConfig, LogLevel } from '../types';\n\nexport function log(logger: LogConfig | undefined, level: LogLevel, message: string | (() => string), error?: unknown) {\n if (!logger) {\n return;\n }\n\n const getMessage = typeof message === 'function' ? message : () => message;\n\n if (typeof logger === 'function') {\n logger(level, getMessage(), error);\n } else if (logger.includes(level)) {\n const logFn = match(level)\n .with('debug', () => console.debug)\n .with('info', () => console.info)\n .with('warn', () => console.warn)\n .with('error', () => console.error)\n .exhaustive();\n logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `\\n${error}` : ''}`);\n }\n}\n\n/**\n * Registers custom superjson serializers.\n */\nexport function registerCustomSerializers() {\n SuperJSON.registerCustom<Decimal, string>(\n {\n isApplicable: (v): v is Decimal => Decimal.isDecimal(v),\n serialize: (v) => v.toJSON(),\n deserialize: (v) => new Decimal(v),\n },\n 'Decimal',\n );\n\n // `Buffer` is not available in edge runtime\n if (globalThis.Buffer) {\n SuperJSON.registerCustom<Buffer, string>(\n {\n isApplicable: (v): v is Buffer => Buffer.isBuffer(v),\n serialize: (v) => v.toString('base64'),\n deserialize: (v) => Buffer.from(v, 'base64'),\n },\n 'Bytes',\n );\n }\n}\n\n/**\n * Format ZodError into a readable string\n */\nexport function getZodErrorMessage(error: ZodError): string {\n if ('_zod' in error) {\n return fromError4(error).toString();\n } else {\n return fromError3(error).toString();\n }\n}\n","import type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { log } from '../api/utils';\nimport type { ApiHandler, LogConfig } from '../types';\n\n/**\n * Options common to all adapters\n */\nexport interface CommonAdapterOptions<Schema extends SchemaDef> {\n /**\n * The API handler to process requests\n */\n apiHandler: ApiHandler<Schema>;\n}\n\nexport function logInternalError(logger: LogConfig | undefined, err: unknown) {\n log(\n logger,\n 'error',\n `An unhandled error occurred while processing the request: ${err}${err instanceof Error ? '\\n' + err.stack : ''}`,\n );\n}\n","import type { SchemaDef } from '@zenstackhq/orm/schema';\nimport type { NextApiRequest, NextApiResponse } from 'next';\nimport type { PageRouteRequestHandlerOptions } from '.';\nimport { logInternalError } from '../common';\n\n/**\n * Creates a Next.js API endpoint \"pages\" router request handler that handles ZenStack CRUD requests.\n *\n * @param options Options for initialization\n * @returns An API endpoint request handler\n */\nexport default function factory<Schema extends SchemaDef>(\n options: PageRouteRequestHandlerOptions<Schema>,\n): (req: NextApiRequest, res: NextApiResponse) => Promise<void> {\n return async (req: NextApiRequest, res: NextApiResponse) => {\n const client = await options.getClient(req, res);\n if (!client) {\n res.status(500).json({ message: 'unable to get ZenStackClient from request context' });\n return;\n }\n\n if (!req.query['path']) {\n res.status(400).json({ message: 'missing path parameter' });\n return;\n }\n const path = (req.query['path'] as string[]).join('/');\n\n try {\n const r = await options.apiHandler.handleRequest({\n method: req.method!,\n path,\n query: req.query as Record<string, string | string[]>,\n requestBody: req.body,\n client,\n });\n res.status(r.status).send(r.body);\n } catch (err) {\n logInternalError(options.apiHandler.log, err);\n res.status(500).send({ message: 'An internal server error occurred' });\n }\n };\n}\n","import type { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport type { NextApiRequest, NextApiResponse } from 'next';\nimport type { NextRequest } from 'next/server';\nimport type { CommonAdapterOptions } from '../common';\nimport { default as AppRouteHandler } from './app-route-handler';\nimport { default as PagesRouteHandler } from './pages-route-handler';\n\n/**\n * Options for initializing a Next.js API endpoint request handler.\n */\nexport interface PageRouteRequestHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback for getting a ZenStackClient for the given request\n */\n getClient: (req: NextApiRequest, res: NextApiResponse) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n\n /**\n * Use app dir or not\n */\n useAppDir?: false | undefined;\n}\n\n/**\n * Options for initializing a Next.js 13 app dir API route handler.\n */\nexport interface AppRouteRequestHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback for getting a ZenStackClient for the given request.\n */\n getClient: (req: NextRequest) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n\n /**\n * Use app dir or not\n */\n useAppDir: true;\n}\n\n/**\n * Creates a Next.js API route handler.\n */\nexport function NextRequestHandler<Schema extends SchemaDef>(\n options: PageRouteRequestHandlerOptions<Schema>,\n): ReturnType<typeof PagesRouteHandler>;\nexport function NextRequestHandler<Schema extends SchemaDef>(\n options: AppRouteRequestHandlerOptions<Schema>,\n): ReturnType<typeof AppRouteHandler>;\nexport function NextRequestHandler<Schema extends SchemaDef>(\n options: PageRouteRequestHandlerOptions<Schema> | AppRouteRequestHandlerOptions<Schema>,\n) {\n if (options.useAppDir === true) {\n return AppRouteHandler(options);\n } else {\n return PagesRouteHandler(options);\n }\n}\n"],"mappings":"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","names":["NextResponse","Decimal","SuperJSON","match","fromError","fromError3","fromError4","log","logger","level","message","error","getMessage","includes","logFn","match","with","console","debug","info","warn","exhaustive","logInternalError","logger","err","log","Error","stack","options","req","context","client","getClient","NextResponse","json","message","status","params","url","URL","query","Object","fromEntries","searchParams","path","join","requestBody","body","r","apiHandler","handleRequest","method","err","logInternalError","log","factory","factory","options","req","res","client","getClient","status","json","message","query","path","join","r","apiHandler","handleRequest","method","requestBody","body","send","err","logInternalError","log","NextRequestHandler","options","useAppDir","AppRouteHandler","PagesRouteHandler"]}
package/dist/nuxt.cjs ADDED
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/adapter/nuxt/index.ts
32
+ var nuxt_exports = {};
33
+ __export(nuxt_exports, {
34
+ createEventHandler: () => createEventHandler
35
+ });
36
+ module.exports = __toCommonJS(nuxt_exports);
37
+
38
+ // src/adapter/nuxt/handler.ts
39
+ var import_h3 = require("h3");
40
+ var import_app = require("nuxt/app");
41
+
42
+ // src/api/utils.ts
43
+ var import_decimal = require("decimal.js");
44
+ var import_superjson = __toESM(require("superjson"), 1);
45
+ var import_ts_pattern = require("ts-pattern");
46
+ var import_v3 = require("zod-validation-error/v3");
47
+ var import_v4 = require("zod-validation-error/v4");
48
+ function log(logger, level, message, error) {
49
+ if (!logger) {
50
+ return;
51
+ }
52
+ const getMessage = typeof message === "function" ? message : () => message;
53
+ if (typeof logger === "function") {
54
+ logger(level, getMessage(), error);
55
+ } else if (logger.includes(level)) {
56
+ const logFn = (0, import_ts_pattern.match)(level).with("debug", () => console.debug).with("info", () => console.info).with("warn", () => console.warn).with("error", () => console.error).exhaustive();
57
+ logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `
58
+ ${error}` : ""}`);
59
+ }
60
+ }
61
+ __name(log, "log");
62
+
63
+ // src/adapter/common.ts
64
+ function logInternalError(logger, err) {
65
+ log(logger, "error", `An unhandled error occurred while processing the request: ${err}${err instanceof Error ? "\n" + err.stack : ""}`);
66
+ }
67
+ __name(logInternalError, "logInternalError");
68
+
69
+ // src/adapter/nuxt/handler.ts
70
+ function createEventHandler(options) {
71
+ return (0, import_h3.defineEventHandler)(async (event) => {
72
+ const client = await options.getClient(event);
73
+ if (!client) {
74
+ (0, import_app.setResponseStatus)(event, 500);
75
+ return {
76
+ message: "unable to get ZenStackClient from request context"
77
+ };
78
+ }
79
+ const routerParam = (0, import_h3.getRouterParams)(event);
80
+ const query = await (0, import_h3.getQuery)(event);
81
+ let reqBody;
82
+ if (event.method === "POST" || event.method === "PUT" || event.method === "PATCH") {
83
+ reqBody = await (0, import_h3.readBody)(event);
84
+ }
85
+ try {
86
+ const { status, body } = await options.apiHandler.handleRequest({
87
+ method: event.method,
88
+ path: routerParam["_"],
89
+ query,
90
+ requestBody: reqBody,
91
+ client
92
+ });
93
+ (0, import_app.setResponseStatus)(event, status);
94
+ return body;
95
+ } catch (err) {
96
+ (0, import_app.setResponseStatus)(event, 500);
97
+ logInternalError(options.apiHandler.log, err);
98
+ return {
99
+ message: "An internal server error occurred"
100
+ };
101
+ }
102
+ });
103
+ }
104
+ __name(createEventHandler, "createEventHandler");
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ createEventHandler
108
+ });
109
+ //# sourceMappingURL=nuxt.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapter/nuxt/index.ts","../src/adapter/nuxt/handler.ts","../src/api/utils.ts","../src/adapter/common.ts"],"sourcesContent":["export { createEventHandler, type NuxtHandlerOptions } from './handler';\n","import type { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { H3Event, defineEventHandler, getQuery, getRouterParams, readBody, type EventHandlerRequest } from 'h3';\nimport { setResponseStatus } from 'nuxt/app';\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","import { Decimal } from 'decimal.js';\nimport SuperJSON from 'superjson';\nimport { match } from 'ts-pattern';\nimport { ZodError } from 'zod';\nimport { fromError as fromError3 } from 'zod-validation-error/v3';\nimport { fromError as fromError4 } from 'zod-validation-error/v4';\nimport type { LogConfig, LogLevel } from '../types';\n\nexport function log(logger: LogConfig | undefined, level: LogLevel, message: string | (() => string), error?: unknown) {\n if (!logger) {\n return;\n }\n\n const getMessage = typeof message === 'function' ? message : () => message;\n\n if (typeof logger === 'function') {\n logger(level, getMessage(), error);\n } else if (logger.includes(level)) {\n const logFn = match(level)\n .with('debug', () => console.debug)\n .with('info', () => console.info)\n .with('warn', () => console.warn)\n .with('error', () => console.error)\n .exhaustive();\n logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `\\n${error}` : ''}`);\n }\n}\n\n/**\n * Registers custom superjson serializers.\n */\nexport function registerCustomSerializers() {\n SuperJSON.registerCustom<Decimal, string>(\n {\n isApplicable: (v): v is Decimal => Decimal.isDecimal(v),\n serialize: (v) => v.toJSON(),\n deserialize: (v) => new Decimal(v),\n },\n 'Decimal',\n );\n\n // `Buffer` is not available in edge runtime\n if (globalThis.Buffer) {\n SuperJSON.registerCustom<Buffer, string>(\n {\n isApplicable: (v): v is Buffer => Buffer.isBuffer(v),\n serialize: (v) => v.toString('base64'),\n deserialize: (v) => Buffer.from(v, 'base64'),\n },\n 'Bytes',\n );\n }\n}\n\n/**\n * Format ZodError into a readable string\n */\nexport function getZodErrorMessage(error: ZodError): string {\n if ('_zod' in error) {\n return fromError4(error).toString();\n } else {\n return fromError3(error).toString();\n }\n}\n","import type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { log } from '../api/utils';\nimport type { ApiHandler, LogConfig } from '../types';\n\n/**\n * Options common to all adapters\n */\nexport interface CommonAdapterOptions<Schema extends SchemaDef> {\n /**\n * The API handler to process requests\n */\n apiHandler: ApiHandler<Schema>;\n}\n\nexport function logInternalError(logger: LogConfig | undefined, err: unknown) {\n log(\n logger,\n 'error',\n `An unhandled error occurred while processing the request: ${err}${err instanceof Error ? '\\n' + err.stack : ''}`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACEA,gBAA2G;AAC3G,iBAAkC;;;ACHlC,qBAAwB;AACxB,uBAAsB;AACtB,wBAAsB;AAEtB,gBAAwC;AACxC,gBAAwC;AAGjC,SAASA,IAAIC,QAA+BC,OAAiBC,SAAkCC,OAAe;AACjH,MAAI,CAACH,QAAQ;AACT;EACJ;AAEA,QAAMI,aAAa,OAAOF,YAAY,aAAaA,UAAU,MAAMA;AAEnE,MAAI,OAAOF,WAAW,YAAY;AAC9BA,WAAOC,OAAOG,WAAAA,GAAcD,KAAAA;EAChC,WAAWH,OAAOK,SAASJ,KAAAA,GAAQ;AAC/B,UAAMK,YAAQC,yBAAMN,KAAAA,EACfO,KAAK,SAAS,MAAMC,QAAQC,KAAK,EACjCF,KAAK,QAAQ,MAAMC,QAAQE,IAAI,EAC/BH,KAAK,QAAQ,MAAMC,QAAQG,IAAI,EAC/BJ,KAAK,SAAS,MAAMC,QAAQN,KAAK,EACjCU,WAAU;AACfP,UAAM,wBAAwBL,KAAAA,KAAUG,WAAAA,CAAAA,GAAeD,QAAQ;EAAKA,KAAAA,KAAU,EAAA,EAAI;EACtF;AACJ;AAlBgBJ;;;ACMT,SAASe,iBAAiBC,QAA+BC,KAAY;AACxEC,MACIF,QACA,SACA,6DAA6DC,GAAAA,GAAMA,eAAeE,QAAQ,OAAOF,IAAIG,QAAQ,EAAA,EAAI;AAEzH;AANgBL;;;AFET,SAASM,mBAA6CC,SAAmC;AAC5F,aAAOC,8BAAmB,OAAOC,UAAAA;AAC7B,UAAMC,SAAS,MAAMH,QAAQI,UAAUF,KAAAA;AACvC,QAAI,CAACC,QAAQ;AACTE,wCAAkBH,OAAO,GAAA;AACzB,aAAO;QAAEI,SAAS;MAAoD;IAC1E;AAEA,UAAMC,kBAAcC,2BAAgBN,KAAAA;AACpC,UAAMO,QAAQ,UAAMC,oBAASR,KAAAA;AAE7B,QAAIS;AACJ,QAAIT,MAAMU,WAAW,UAAUV,MAAMU,WAAW,SAASV,MAAMU,WAAW,SAAS;AAC/ED,gBAAU,UAAME,oBAASX,KAAAA;IAC7B;AAEA,QAAI;AACA,YAAM,EAAEY,QAAQC,KAAI,IAAK,MAAMf,QAAQgB,WAAWC,cAAc;QAC5DL,QAAQV,MAAMU;QACdM,MAAMX,YAAY,GAAA;QAClBE;QACAU,aAAaR;QACbR;MACJ,CAAA;AAEAE,wCAAkBH,OAAOY,MAAAA;AACzB,aAAOC;IACX,SAASK,KAAK;AACVf,wCAAkBH,OAAO,GAAA;AACzBmB,uBAAiBrB,QAAQgB,WAAWM,KAAKF,GAAAA;AACzC,aAAO;QAAEd,SAAS;MAAoC;IAC1D;EACJ,CAAA;AACJ;AAjCgBP;","names":["log","logger","level","message","error","getMessage","includes","logFn","match","with","console","debug","info","warn","exhaustive","logInternalError","logger","err","log","Error","stack","createEventHandler","options","defineEventHandler","event","client","getClient","setResponseStatus","message","routerParam","getRouterParams","query","getQuery","reqBody","method","readBody","status","body","apiHandler","handleRequest","path","requestBody","err","logInternalError","log"]}
@@ -0,0 +1,19 @@
1
+ import * as h3 from 'h3';
2
+ import { H3Event, EventHandlerRequest } from 'h3';
3
+ import { ClientContract } from '@zenstackhq/orm';
4
+ import { SchemaDef } from '@zenstackhq/orm/schema';
5
+ import { C as CommonAdapterOptions } from './common-6DG-xEmM.cjs';
6
+ import './types-D5t0sUEw.cjs';
7
+
8
+ /**
9
+ * Nuxt request handler options
10
+ */
11
+ interface NuxtHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {
12
+ /**
13
+ * Callback for getting a ZenStackClient for the given request
14
+ */
15
+ getClient: (event: H3Event<EventHandlerRequest>) => ClientContract<Schema> | Promise<ClientContract<Schema>>;
16
+ }
17
+ declare function createEventHandler<Schema extends SchemaDef>(options: NuxtHandlerOptions<Schema>): h3.EventHandler<EventHandlerRequest, Promise<unknown>>;
18
+
19
+ export { type NuxtHandlerOptions, createEventHandler };
package/dist/nuxt.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import * as h3 from 'h3';
2
+ import { H3Event, EventHandlerRequest } from 'h3';
3
+ import { ClientContract } from '@zenstackhq/orm';
4
+ import { SchemaDef } from '@zenstackhq/orm/schema';
5
+ import { C as CommonAdapterOptions } from './common-CyapsM8n.js';
6
+ import './types-D5t0sUEw.js';
7
+
8
+ /**
9
+ * Nuxt request handler options
10
+ */
11
+ interface NuxtHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {
12
+ /**
13
+ * Callback for getting a ZenStackClient for the given request
14
+ */
15
+ getClient: (event: H3Event<EventHandlerRequest>) => ClientContract<Schema> | Promise<ClientContract<Schema>>;
16
+ }
17
+ declare function createEventHandler<Schema extends SchemaDef>(options: NuxtHandlerOptions<Schema>): h3.EventHandler<EventHandlerRequest, Promise<unknown>>;
18
+
19
+ export { type NuxtHandlerOptions, createEventHandler };
package/dist/nuxt.js ADDED
@@ -0,0 +1,74 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/adapter/nuxt/handler.ts
5
+ import { defineEventHandler, getQuery, getRouterParams, readBody } from "h3";
6
+ import { setResponseStatus } from "nuxt/app";
7
+
8
+ // src/api/utils.ts
9
+ import { Decimal } from "decimal.js";
10
+ import SuperJSON from "superjson";
11
+ import { match } from "ts-pattern";
12
+ import { fromError as fromError3 } from "zod-validation-error/v3";
13
+ import { fromError as fromError4 } from "zod-validation-error/v4";
14
+ function log(logger, level, message, error) {
15
+ if (!logger) {
16
+ return;
17
+ }
18
+ const getMessage = typeof message === "function" ? message : () => message;
19
+ if (typeof logger === "function") {
20
+ logger(level, getMessage(), error);
21
+ } else if (logger.includes(level)) {
22
+ const logFn = match(level).with("debug", () => console.debug).with("info", () => console.info).with("warn", () => console.warn).with("error", () => console.error).exhaustive();
23
+ logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `
24
+ ${error}` : ""}`);
25
+ }
26
+ }
27
+ __name(log, "log");
28
+
29
+ // src/adapter/common.ts
30
+ function logInternalError(logger, err) {
31
+ log(logger, "error", `An unhandled error occurred while processing the request: ${err}${err instanceof Error ? "\n" + err.stack : ""}`);
32
+ }
33
+ __name(logInternalError, "logInternalError");
34
+
35
+ // src/adapter/nuxt/handler.ts
36
+ function createEventHandler(options) {
37
+ return defineEventHandler(async (event) => {
38
+ const client = await options.getClient(event);
39
+ if (!client) {
40
+ setResponseStatus(event, 500);
41
+ return {
42
+ message: "unable to get ZenStackClient from request context"
43
+ };
44
+ }
45
+ const routerParam = getRouterParams(event);
46
+ const query = await getQuery(event);
47
+ let reqBody;
48
+ if (event.method === "POST" || event.method === "PUT" || event.method === "PATCH") {
49
+ reqBody = await readBody(event);
50
+ }
51
+ try {
52
+ const { status, body } = await options.apiHandler.handleRequest({
53
+ method: event.method,
54
+ path: routerParam["_"],
55
+ query,
56
+ requestBody: reqBody,
57
+ client
58
+ });
59
+ setResponseStatus(event, status);
60
+ return body;
61
+ } catch (err) {
62
+ setResponseStatus(event, 500);
63
+ logInternalError(options.apiHandler.log, err);
64
+ return {
65
+ message: "An internal server error occurred"
66
+ };
67
+ }
68
+ });
69
+ }
70
+ __name(createEventHandler, "createEventHandler");
71
+ export {
72
+ createEventHandler
73
+ };
74
+ //# sourceMappingURL=nuxt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapter/nuxt/handler.ts","../src/api/utils.ts","../src/adapter/common.ts"],"sourcesContent":["import type { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { H3Event, defineEventHandler, getQuery, getRouterParams, readBody, type EventHandlerRequest } from 'h3';\nimport { setResponseStatus } from 'nuxt/app';\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","import { Decimal } from 'decimal.js';\nimport SuperJSON from 'superjson';\nimport { match } from 'ts-pattern';\nimport { ZodError } from 'zod';\nimport { fromError as fromError3 } from 'zod-validation-error/v3';\nimport { fromError as fromError4 } from 'zod-validation-error/v4';\nimport type { LogConfig, LogLevel } from '../types';\n\nexport function log(logger: LogConfig | undefined, level: LogLevel, message: string | (() => string), error?: unknown) {\n if (!logger) {\n return;\n }\n\n const getMessage = typeof message === 'function' ? message : () => message;\n\n if (typeof logger === 'function') {\n logger(level, getMessage(), error);\n } else if (logger.includes(level)) {\n const logFn = match(level)\n .with('debug', () => console.debug)\n .with('info', () => console.info)\n .with('warn', () => console.warn)\n .with('error', () => console.error)\n .exhaustive();\n logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `\\n${error}` : ''}`);\n }\n}\n\n/**\n * Registers custom superjson serializers.\n */\nexport function registerCustomSerializers() {\n SuperJSON.registerCustom<Decimal, string>(\n {\n isApplicable: (v): v is Decimal => Decimal.isDecimal(v),\n serialize: (v) => v.toJSON(),\n deserialize: (v) => new Decimal(v),\n },\n 'Decimal',\n );\n\n // `Buffer` is not available in edge runtime\n if (globalThis.Buffer) {\n SuperJSON.registerCustom<Buffer, string>(\n {\n isApplicable: (v): v is Buffer => Buffer.isBuffer(v),\n serialize: (v) => v.toString('base64'),\n deserialize: (v) => Buffer.from(v, 'base64'),\n },\n 'Bytes',\n );\n }\n}\n\n/**\n * Format ZodError into a readable string\n */\nexport function getZodErrorMessage(error: ZodError): string {\n if ('_zod' in error) {\n return fromError4(error).toString();\n } else {\n return fromError3(error).toString();\n }\n}\n","import type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { log } from '../api/utils';\nimport type { ApiHandler, LogConfig } from '../types';\n\n/**\n * Options common to all adapters\n */\nexport interface CommonAdapterOptions<Schema extends SchemaDef> {\n /**\n * The API handler to process requests\n */\n apiHandler: ApiHandler<Schema>;\n}\n\nexport function logInternalError(logger: LogConfig | undefined, err: unknown) {\n log(\n logger,\n 'error',\n `An unhandled error occurred while processing the request: ${err}${err instanceof Error ? '\\n' + err.stack : ''}`,\n );\n}\n"],"mappings":";;;;AAEA,SAAkBA,oBAAoBC,UAAUC,iBAAiBC,gBAA0C;AAC3G,SAASC,yBAAyB;;;ACHlC,SAASC,eAAe;AACxB,OAAOC,eAAe;AACtB,SAASC,aAAa;AAEtB,SAASC,aAAaC,kBAAkB;AACxC,SAASD,aAAaE,kBAAkB;AAGjC,SAASC,IAAIC,QAA+BC,OAAiBC,SAAkCC,OAAe;AACjH,MAAI,CAACH,QAAQ;AACT;EACJ;AAEA,QAAMI,aAAa,OAAOF,YAAY,aAAaA,UAAU,MAAMA;AAEnE,MAAI,OAAOF,WAAW,YAAY;AAC9BA,WAAOC,OAAOG,WAAAA,GAAcD,KAAAA;EAChC,WAAWH,OAAOK,SAASJ,KAAAA,GAAQ;AAC/B,UAAMK,QAAQC,MAAMN,KAAAA,EACfO,KAAK,SAAS,MAAMC,QAAQC,KAAK,EACjCF,KAAK,QAAQ,MAAMC,QAAQE,IAAI,EAC/BH,KAAK,QAAQ,MAAMC,QAAQG,IAAI,EAC/BJ,KAAK,SAAS,MAAMC,QAAQN,KAAK,EACjCU,WAAU;AACfP,UAAM,wBAAwBL,KAAAA,KAAUG,WAAAA,CAAAA,GAAeD,QAAQ;EAAKA,KAAAA,KAAU,EAAA,EAAI;EACtF;AACJ;AAlBgBJ;;;ACMT,SAASe,iBAAiBC,QAA+BC,KAAY;AACxEC,MACIF,QACA,SACA,6DAA6DC,GAAAA,GAAMA,eAAeE,QAAQ,OAAOF,IAAIG,QAAQ,EAAA,EAAI;AAEzH;AANgBL;;;AFET,SAASM,mBAA6CC,SAAmC;AAC5F,SAAOC,mBAAmB,OAAOC,UAAAA;AAC7B,UAAMC,SAAS,MAAMH,QAAQI,UAAUF,KAAAA;AACvC,QAAI,CAACC,QAAQ;AACTE,wBAAkBH,OAAO,GAAA;AACzB,aAAO;QAAEI,SAAS;MAAoD;IAC1E;AAEA,UAAMC,cAAcC,gBAAgBN,KAAAA;AACpC,UAAMO,QAAQ,MAAMC,SAASR,KAAAA;AAE7B,QAAIS;AACJ,QAAIT,MAAMU,WAAW,UAAUV,MAAMU,WAAW,SAASV,MAAMU,WAAW,SAAS;AAC/ED,gBAAU,MAAME,SAASX,KAAAA;IAC7B;AAEA,QAAI;AACA,YAAM,EAAEY,QAAQC,KAAI,IAAK,MAAMf,QAAQgB,WAAWC,cAAc;QAC5DL,QAAQV,MAAMU;QACdM,MAAMX,YAAY,GAAA;QAClBE;QACAU,aAAaR;QACbR;MACJ,CAAA;AAEAE,wBAAkBH,OAAOY,MAAAA;AACzB,aAAOC;IACX,SAASK,KAAK;AACVf,wBAAkBH,OAAO,GAAA;AACzBmB,uBAAiBrB,QAAQgB,WAAWM,KAAKF,GAAAA;AACzC,aAAO;QAAEd,SAAS;MAAoC;IAC1D;EACJ,CAAA;AACJ;AAjCgBP;","names":["defineEventHandler","getQuery","getRouterParams","readBody","setResponseStatus","Decimal","SuperJSON","match","fromError","fromError3","fromError4","log","logger","level","message","error","getMessage","includes","logFn","match","with","console","debug","info","warn","exhaustive","logInternalError","logger","err","log","Error","stack","createEventHandler","options","defineEventHandler","event","client","getClient","setResponseStatus","message","routerParam","getRouterParams","query","getQuery","reqBody","method","readBody","status","body","apiHandler","handleRequest","path","requestBody","err","logInternalError","log"]}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/adapter/sveltekit/index.ts
32
+ var sveltekit_exports = {};
33
+ __export(sveltekit_exports, {
34
+ SvelteKitHandler: () => createHandler
35
+ });
36
+ module.exports = __toCommonJS(sveltekit_exports);
37
+
38
+ // src/api/utils.ts
39
+ var import_decimal = require("decimal.js");
40
+ var import_superjson = __toESM(require("superjson"), 1);
41
+ var import_ts_pattern = require("ts-pattern");
42
+ var import_v3 = require("zod-validation-error/v3");
43
+ var import_v4 = require("zod-validation-error/v4");
44
+ function log(logger, level, message, error) {
45
+ if (!logger) {
46
+ return;
47
+ }
48
+ const getMessage = typeof message === "function" ? message : () => message;
49
+ if (typeof logger === "function") {
50
+ logger(level, getMessage(), error);
51
+ } else if (logger.includes(level)) {
52
+ const logFn = (0, import_ts_pattern.match)(level).with("debug", () => console.debug).with("info", () => console.info).with("warn", () => console.warn).with("error", () => console.error).exhaustive();
53
+ logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `
54
+ ${error}` : ""}`);
55
+ }
56
+ }
57
+ __name(log, "log");
58
+
59
+ // src/adapter/common.ts
60
+ function logInternalError(logger, err) {
61
+ log(logger, "error", `An unhandled error occurred while processing the request: ${err}${err instanceof Error ? "\n" + err.stack : ""}`);
62
+ }
63
+ __name(logInternalError, "logInternalError");
64
+
65
+ // src/adapter/sveltekit/handler.ts
66
+ function createHandler(options) {
67
+ return async ({ event, resolve }) => {
68
+ if (event.url.pathname.startsWith(options.prefix)) {
69
+ const client = await options.getClient(event);
70
+ if (!client) {
71
+ return new Response(JSON.stringify({
72
+ message: "unable to get ZenStackClient from request context"
73
+ }), {
74
+ status: 400,
75
+ headers: {
76
+ "content-type": "application/json"
77
+ }
78
+ });
79
+ }
80
+ const query = Object.fromEntries(event.url.searchParams);
81
+ let requestBody;
82
+ if (event.request.body) {
83
+ try {
84
+ const text = await event.request.text();
85
+ if (text) {
86
+ requestBody = JSON.parse(text);
87
+ }
88
+ } catch {
89
+ return new Response(JSON.stringify({
90
+ message: "invalid JSON payload"
91
+ }), {
92
+ status: 400,
93
+ headers: {
94
+ "content-type": "application/json"
95
+ }
96
+ });
97
+ }
98
+ }
99
+ const path = event.url.pathname.substring(options.prefix.length);
100
+ try {
101
+ const r = await options.apiHandler.handleRequest({
102
+ method: event.request.method,
103
+ path,
104
+ query,
105
+ requestBody,
106
+ client
107
+ });
108
+ return new Response(JSON.stringify(r.body), {
109
+ status: r.status,
110
+ headers: {
111
+ "content-type": "application/json"
112
+ }
113
+ });
114
+ } catch (err) {
115
+ logInternalError(options.apiHandler.log, err);
116
+ return new Response(JSON.stringify({
117
+ message: "An internal server error occurred"
118
+ }), {
119
+ status: 500,
120
+ headers: {
121
+ "content-type": "application/json"
122
+ }
123
+ });
124
+ }
125
+ }
126
+ return resolve(event);
127
+ };
128
+ }
129
+ __name(createHandler, "createHandler");
130
+ // Annotate the CommonJS export names for ESM import in node:
131
+ 0 && (module.exports = {
132
+ SvelteKitHandler
133
+ });
134
+ //# sourceMappingURL=sveltekit.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapter/sveltekit/index.ts","../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/sveltekit/handler.ts"],"sourcesContent":["export { SvelteKitHandler, type SvelteKitHandlerOptions } from './handler';\n","import { Decimal } from 'decimal.js';\nimport SuperJSON from 'superjson';\nimport { match } from 'ts-pattern';\nimport { ZodError } from 'zod';\nimport { fromError as fromError3 } from 'zod-validation-error/v3';\nimport { fromError as fromError4 } from 'zod-validation-error/v4';\nimport type { LogConfig, LogLevel } from '../types';\n\nexport function log(logger: LogConfig | undefined, level: LogLevel, message: string | (() => string), error?: unknown) {\n if (!logger) {\n return;\n }\n\n const getMessage = typeof message === 'function' ? message : () => message;\n\n if (typeof logger === 'function') {\n logger(level, getMessage(), error);\n } else if (logger.includes(level)) {\n const logFn = match(level)\n .with('debug', () => console.debug)\n .with('info', () => console.info)\n .with('warn', () => console.warn)\n .with('error', () => console.error)\n .exhaustive();\n logFn(`@zenstackhq/server: [${level}] ${getMessage()}${error ? `\\n${error}` : ''}`);\n }\n}\n\n/**\n * Registers custom superjson serializers.\n */\nexport function registerCustomSerializers() {\n SuperJSON.registerCustom<Decimal, string>(\n {\n isApplicable: (v): v is Decimal => Decimal.isDecimal(v),\n serialize: (v) => v.toJSON(),\n deserialize: (v) => new Decimal(v),\n },\n 'Decimal',\n );\n\n // `Buffer` is not available in edge runtime\n if (globalThis.Buffer) {\n SuperJSON.registerCustom<Buffer, string>(\n {\n isApplicable: (v): v is Buffer => Buffer.isBuffer(v),\n serialize: (v) => v.toString('base64'),\n deserialize: (v) => Buffer.from(v, 'base64'),\n },\n 'Bytes',\n );\n }\n}\n\n/**\n * Format ZodError into a readable string\n */\nexport function getZodErrorMessage(error: ZodError): string {\n if ('_zod' in error) {\n return fromError4(error).toString();\n } else {\n return fromError3(error).toString();\n }\n}\n","import type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { log } from '../api/utils';\nimport type { ApiHandler, LogConfig } from '../types';\n\n/**\n * Options common to all adapters\n */\nexport interface CommonAdapterOptions<Schema extends SchemaDef> {\n /**\n * The API handler to process requests\n */\n apiHandler: ApiHandler<Schema>;\n}\n\nexport function logInternalError(logger: LogConfig | undefined, err: unknown) {\n log(\n logger,\n 'error',\n `An unhandled error occurred while processing the request: ${err}${err instanceof Error ? '\\n' + err.stack : ''}`,\n );\n}\n","import { type Handle, type RequestEvent } from '@sveltejs/kit';\nimport type { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * SvelteKit request handler options\n */\nexport interface SvelteKitHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Url prefix, e.g.: /api\n */\n prefix: string;\n\n /**\n * Callback for getting a ZenStackClient for the given request\n */\n getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n}\n\n/**\n * SvelteKit server hooks handler for handling CRUD requests.\n */\nexport default function createHandler<Schema extends SchemaDef>(options: SvelteKitHandlerOptions<Schema>): Handle {\n return async ({ event, resolve }) => {\n if (event.url.pathname.startsWith(options.prefix)) {\n const client = await options.getClient(event);\n if (!client) {\n return new Response(JSON.stringify({ message: 'unable to get ZenStackClient from request context' }), {\n status: 400,\n headers: {\n 'content-type': 'application/json',\n },\n });\n }\n\n const query = Object.fromEntries(event.url.searchParams);\n let requestBody: unknown;\n if (event.request.body) {\n try {\n const text = await event.request.text();\n if (text) {\n requestBody = JSON.parse(text);\n }\n } catch {\n return new Response(JSON.stringify({ message: 'invalid JSON payload' }), {\n status: 400,\n headers: {\n 'content-type': 'application/json',\n },\n });\n }\n }\n\n const path = event.url.pathname.substring(options.prefix.length);\n\n try {\n const r = await options.apiHandler.handleRequest({\n method: event.request.method,\n path,\n query,\n requestBody,\n client,\n });\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 return resolve(event);\n };\n}\n\nexport { createHandler as SvelteKitHandler };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACAA,qBAAwB;AACxB,uBAAsB;AACtB,wBAAsB;AAEtB,gBAAwC;AACxC,gBAAwC;AAGjC,SAASA,IAAIC,QAA+BC,OAAiBC,SAAkCC,OAAe;AACjH,MAAI,CAACH,QAAQ;AACT;EACJ;AAEA,QAAMI,aAAa,OAAOF,YAAY,aAAaA,UAAU,MAAMA;AAEnE,MAAI,OAAOF,WAAW,YAAY;AAC9BA,WAAOC,OAAOG,WAAAA,GAAcD,KAAAA;EAChC,WAAWH,OAAOK,SAASJ,KAAAA,GAAQ;AAC/B,UAAMK,YAAQC,yBAAMN,KAAAA,EACfO,KAAK,SAAS,MAAMC,QAAQC,KAAK,EACjCF,KAAK,QAAQ,MAAMC,QAAQE,IAAI,EAC/BH,KAAK,QAAQ,MAAMC,QAAQG,IAAI,EAC/BJ,KAAK,SAAS,MAAMC,QAAQN,KAAK,EACjCU,WAAU;AACfP,UAAM,wBAAwBL,KAAAA,KAAUG,WAAAA,CAAAA,GAAeD,QAAQ;EAAKA,KAAAA,KAAU,EAAA,EAAI;EACtF;AACJ;AAlBgBJ;;;ACMT,SAASe,iBAAiBC,QAA+BC,KAAY;AACxEC,MACIF,QACA,SACA,6DAA6DC,GAAAA,GAAMA,eAAeE,QAAQ,OAAOF,IAAIG,QAAQ,EAAA,EAAI;AAEzH;AANgBL;;;ACSD,SAAf,cAAgEM,SAAwC;AACpG,SAAO,OAAO,EAAEC,OAAOC,QAAO,MAAE;AAC5B,QAAID,MAAME,IAAIC,SAASC,WAAWL,QAAQM,MAAM,GAAG;AAC/C,YAAMC,SAAS,MAAMP,QAAQQ,UAAUP,KAAAA;AACvC,UAAI,CAACM,QAAQ;AACT,eAAO,IAAIE,SAASC,KAAKC,UAAU;UAAEC,SAAS;QAAoD,CAAA,GAAI;UAClGC,QAAQ;UACRC,SAAS;YACL,gBAAgB;UACpB;QACJ,CAAA;MACJ;AAEA,YAAMC,QAAQC,OAAOC,YAAYhB,MAAME,IAAIe,YAAY;AACvD,UAAIC;AACJ,UAAIlB,MAAMmB,QAAQC,MAAM;AACpB,YAAI;AACA,gBAAMC,OAAO,MAAMrB,MAAMmB,QAAQE,KAAI;AACrC,cAAIA,MAAM;AACNH,0BAAcT,KAAKa,MAAMD,IAAAA;UAC7B;QACJ,QAAQ;AACJ,iBAAO,IAAIb,SAASC,KAAKC,UAAU;YAAEC,SAAS;UAAuB,CAAA,GAAI;YACrEC,QAAQ;YACRC,SAAS;cACL,gBAAgB;YACpB;UACJ,CAAA;QACJ;MACJ;AAEA,YAAMU,OAAOvB,MAAME,IAAIC,SAASqB,UAAUzB,QAAQM,OAAOoB,MAAM;AAE/D,UAAI;AACA,cAAMC,IAAI,MAAM3B,QAAQ4B,WAAWC,cAAc;UAC7CC,QAAQ7B,MAAMmB,QAAQU;UACtBN;UACAT;UACAI;UACAZ;QACJ,CAAA;AAEA,eAAO,IAAIE,SAASC,KAAKC,UAAUgB,EAAEN,IAAI,GAAG;UACxCR,QAAQc,EAAEd;UACVC,SAAS;YACL,gBAAgB;UACpB;QACJ,CAAA;MACJ,SAASiB,KAAK;AACVC,yBAAiBhC,QAAQ4B,WAAWK,KAAKF,GAAAA;AACzC,eAAO,IAAItB,SAASC,KAAKC,UAAU;UAAEC,SAAS;QAAoC,CAAA,GAAI;UAClFC,QAAQ;UACRC,SAAS;YACL,gBAAgB;UACpB;QACJ,CAAA;MACJ;IACJ;AAEA,WAAOZ,QAAQD,KAAAA;EACnB;AACJ;AA7DwBiC;","names":["log","logger","level","message","error","getMessage","includes","logFn","match","with","console","debug","info","warn","exhaustive","logInternalError","logger","err","log","Error","stack","options","event","resolve","url","pathname","startsWith","prefix","client","getClient","Response","JSON","stringify","message","status","headers","query","Object","fromEntries","searchParams","requestBody","request","body","text","parse","path","substring","length","r","apiHandler","handleRequest","method","err","logInternalError","log","createHandler"]}
@@ -0,0 +1,25 @@
1
+ import { RequestEvent, Handle } from '@sveltejs/kit';
2
+ import { ClientContract } from '@zenstackhq/orm';
3
+ import { SchemaDef } from '@zenstackhq/orm/schema';
4
+ import { C as CommonAdapterOptions } from './common-6DG-xEmM.cjs';
5
+ import './types-D5t0sUEw.cjs';
6
+
7
+ /**
8
+ * SvelteKit request handler options
9
+ */
10
+ interface SvelteKitHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {
11
+ /**
12
+ * Url prefix, e.g.: /api
13
+ */
14
+ prefix: string;
15
+ /**
16
+ * Callback for getting a ZenStackClient for the given request
17
+ */
18
+ getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;
19
+ }
20
+ /**
21
+ * SvelteKit server hooks handler for handling CRUD requests.
22
+ */
23
+ declare function createHandler<Schema extends SchemaDef>(options: SvelteKitHandlerOptions<Schema>): Handle;
24
+
25
+ export { createHandler as SvelteKitHandler, type SvelteKitHandlerOptions };
@@ -0,0 +1,25 @@
1
+ import { RequestEvent, Handle } from '@sveltejs/kit';
2
+ import { ClientContract } from '@zenstackhq/orm';
3
+ import { SchemaDef } from '@zenstackhq/orm/schema';
4
+ import { C as CommonAdapterOptions } from './common-CyapsM8n.js';
5
+ import './types-D5t0sUEw.js';
6
+
7
+ /**
8
+ * SvelteKit request handler options
9
+ */
10
+ interface SvelteKitHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {
11
+ /**
12
+ * Url prefix, e.g.: /api
13
+ */
14
+ prefix: string;
15
+ /**
16
+ * Callback for getting a ZenStackClient for the given request
17
+ */
18
+ getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;
19
+ }
20
+ /**
21
+ * SvelteKit server hooks handler for handling CRUD requests.
22
+ */
23
+ declare function createHandler<Schema extends SchemaDef>(options: SvelteKitHandlerOptions<Schema>): Handle;
24
+
25
+ export { createHandler as SvelteKitHandler, type SvelteKitHandlerOptions };