@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.
- package/dist/api.cjs +1767 -19
- package/dist/api.cjs.map +1 -1
- package/dist/api.d.cts +123 -4
- package/dist/api.d.ts +123 -4
- package/dist/api.js +1762 -15
- package/dist/api.js.map +1 -1
- package/dist/common-6DG-xEmM.d.cts +14 -0
- package/dist/common-CyapsM8n.d.ts +14 -0
- package/dist/elysia.cjs +118 -0
- package/dist/elysia.cjs.map +1 -0
- package/dist/elysia.d.cts +53 -0
- package/dist/elysia.d.ts +53 -0
- package/dist/elysia.js +83 -0
- package/dist/elysia.js.map +1 -0
- package/dist/express.cjs +41 -3
- package/dist/express.cjs.map +1 -1
- package/dist/express.d.cts +7 -7
- package/dist/express.d.ts +7 -7
- package/dist/express.js +30 -2
- package/dist/express.js.map +1 -1
- package/dist/fastify.cjs +103 -0
- package/dist/fastify.cjs.map +1 -0
- package/dist/fastify.d.cts +22 -0
- package/dist/fastify.d.ts +22 -0
- package/dist/fastify.js +68 -0
- package/dist/fastify.js.map +1 -0
- package/dist/hono.cjs +111 -0
- package/dist/hono.cjs.map +1 -0
- package/dist/hono.d.cts +18 -0
- package/dist/hono.d.ts +18 -0
- package/dist/hono.js +76 -0
- package/dist/hono.js.map +1 -0
- package/dist/next.cjs +178 -0
- package/dist/next.cjs.map +1 -0
- package/dist/next.d.cts +61 -0
- package/dist/next.d.ts +61 -0
- package/dist/next.js +143 -0
- package/dist/next.js.map +1 -0
- package/dist/nuxt.cjs +109 -0
- package/dist/nuxt.cjs.map +1 -0
- package/dist/nuxt.d.cts +19 -0
- package/dist/nuxt.d.ts +19 -0
- package/dist/nuxt.js +74 -0
- package/dist/nuxt.js.map +1 -0
- package/dist/sveltekit.cjs +134 -0
- package/dist/sveltekit.cjs.map +1 -0
- package/dist/sveltekit.d.cts +25 -0
- package/dist/sveltekit.d.ts +25 -0
- package/dist/sveltekit.js +99 -0
- package/dist/sveltekit.js.map +1 -0
- package/dist/tanstack-start.cjs +139 -0
- package/dist/tanstack-start.cjs.map +1 -0
- package/dist/tanstack-start.d.cts +32 -0
- package/dist/tanstack-start.d.ts +32 -0
- package/dist/tanstack-start.js +104 -0
- package/dist/tanstack-start.js.map +1 -0
- package/dist/{types-BH-88xJo.d.cts → types-D5t0sUEw.d.cts} +6 -2
- package/dist/{types-BH-88xJo.d.ts → types-D5t0sUEw.d.ts} +6 -2
- 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
|
package/dist/next.js.map
ADDED
|
@@ -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"]}
|
package/dist/nuxt.d.cts
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-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
|
package/dist/nuxt.js.map
ADDED
|
@@ -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 };
|