@zenstackhq/server 3.0.0 → 3.1.1
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 +3 -1
- package/dist/api.cjs.map +1 -1
- package/dist/api.js +3 -1
- package/dist/api.js.map +1 -1
- package/dist/sveltekit.cjs +60 -2
- package/dist/sveltekit.cjs.map +1 -1
- package/dist/sveltekit.d.cts +20 -4
- package/dist/sveltekit.d.ts +20 -4
- package/dist/sveltekit.js +58 -1
- package/dist/sveltekit.js.map +1 -1
- package/package.json +8 -8
package/dist/sveltekit.cjs
CHANGED
|
@@ -31,7 +31,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
// src/adapter/sveltekit/index.ts
|
|
32
32
|
var sveltekit_exports = {};
|
|
33
33
|
__export(sveltekit_exports, {
|
|
34
|
-
SvelteKitHandler: () => createHandler
|
|
34
|
+
SvelteKitHandler: () => createHandler,
|
|
35
|
+
SvelteKitRouteHandler: () => createHandler2
|
|
35
36
|
});
|
|
36
37
|
module.exports = __toCommonJS(sveltekit_exports);
|
|
37
38
|
|
|
@@ -127,8 +128,65 @@ function createHandler(options) {
|
|
|
127
128
|
};
|
|
128
129
|
}
|
|
129
130
|
__name(createHandler, "createHandler");
|
|
131
|
+
|
|
132
|
+
// src/adapter/sveltekit/route-handler.ts
|
|
133
|
+
var import_kit = require("@sveltejs/kit");
|
|
134
|
+
function createHandler2(options) {
|
|
135
|
+
return async (event) => {
|
|
136
|
+
const client = await options.getClient(event);
|
|
137
|
+
if (!client) {
|
|
138
|
+
return (0, import_kit.json)({
|
|
139
|
+
message: "unable to get ZenStackClient from request context"
|
|
140
|
+
}, {
|
|
141
|
+
status: 400
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
const query = Object.fromEntries(event.url.searchParams);
|
|
145
|
+
let requestBody;
|
|
146
|
+
if (event.request.body) {
|
|
147
|
+
try {
|
|
148
|
+
requestBody = await event.request.json();
|
|
149
|
+
} catch {
|
|
150
|
+
return (0, import_kit.json)({
|
|
151
|
+
message: "invalid JSON payload"
|
|
152
|
+
}, {
|
|
153
|
+
status: 400
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const path = event.params["path"];
|
|
158
|
+
if (!path) {
|
|
159
|
+
return (0, import_kit.json)({
|
|
160
|
+
message: "route is missing path parameter"
|
|
161
|
+
}, {
|
|
162
|
+
status: 400
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
const r = await options.apiHandler.handleRequest({
|
|
167
|
+
method: event.request.method,
|
|
168
|
+
path,
|
|
169
|
+
query,
|
|
170
|
+
requestBody,
|
|
171
|
+
client
|
|
172
|
+
});
|
|
173
|
+
return (0, import_kit.json)(r.body, {
|
|
174
|
+
status: r.status
|
|
175
|
+
});
|
|
176
|
+
} catch (err) {
|
|
177
|
+
logInternalError(options.apiHandler.log, err);
|
|
178
|
+
return (0, import_kit.json)({
|
|
179
|
+
message: "An internal server error occurred"
|
|
180
|
+
}, {
|
|
181
|
+
status: 500
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
__name(createHandler2, "createHandler");
|
|
130
187
|
// Annotate the CommonJS export names for ESM import in node:
|
|
131
188
|
0 && (module.exports = {
|
|
132
|
-
SvelteKitHandler
|
|
189
|
+
SvelteKitHandler,
|
|
190
|
+
SvelteKitRouteHandler
|
|
133
191
|
});
|
|
134
192
|
//# sourceMappingURL=sveltekit.cjs.map
|
package/dist/sveltekit.cjs.map
CHANGED
|
@@ -1 +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"]}
|
|
1
|
+
{"version":3,"sources":["../src/adapter/sveltekit/index.ts","../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/sveltekit/handler.ts","../src/adapter/sveltekit/route-handler.ts"],"sourcesContent":["export { SvelteKitHandler, type SvelteKitHandlerOptions } from './handler';\nexport { SvelteKitRouteHandler, type SvelteKitRouteHandlerOptions } from './route-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. This handler is to be used in `hooks.server.ts`.\n * @deprecated use `SvelteKitRouteHandler` instead.\n */\nfunction 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","import { json, type RequestEvent, type RequestHandler } 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 route handler options\n */\nexport interface SvelteKitRouteHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback for getting a ZenStackClient for the given request event\n */\n getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n}\n\n/**\n * SvelteKit server route handler for handling CRUD requests. This handler is to be used in a `+server.ts`\n * API route file.\n */\nfunction createHandler<Schema extends SchemaDef>(options: SvelteKitRouteHandlerOptions<Schema>): RequestHandler {\n return async (event) => {\n const client = await options.getClient(event);\n if (!client) {\n return json({ message: 'unable to get ZenStackClient from request context' }, { status: 400 });\n }\n\n const query = Object.fromEntries(event.url.searchParams);\n let requestBody: unknown;\n if (event.request.body) {\n try {\n requestBody = await event.request.json();\n } catch {\n return json({ message: 'invalid JSON payload' }, { status: 400 });\n }\n }\n\n const path = event.params['path'];\n if (!path) {\n return json({ message: 'route is missing path parameter' }, { status: 400 });\n }\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 json(r.body, { status: r.status });\n } catch (err) {\n logInternalError(options.apiHandler.log, err);\n return json({ message: 'An internal server error occurred' }, { status: 500 });\n }\n };\n}\n\nexport { createHandler as SvelteKitRouteHandler };\n"],"mappings":"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","names":["createHandler","log","logger","level","message","error","getMessage","includes","logFn","match","with","console","debug","info","warn","exhaustive","logInternalError","logger","err","log","Error","stack","createHandler","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","options","event","client","getClient","json","message","status","query","Object","fromEntries","url","searchParams","requestBody","request","body","path","params","r","apiHandler","handleRequest","method","err","logInternalError","log"]}
|
package/dist/sveltekit.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RequestEvent, Handle } from '@sveltejs/kit';
|
|
1
|
+
import { RequestEvent, Handle, RequestHandler } from '@sveltejs/kit';
|
|
2
2
|
import { ClientContract } from '@zenstackhq/orm';
|
|
3
3
|
import { SchemaDef } from '@zenstackhq/orm/schema';
|
|
4
4
|
import { C as CommonAdapterOptions } from './common-Cuu8bjzK.cjs';
|
|
@@ -18,8 +18,24 @@ interface SvelteKitHandlerOptions<Schema extends SchemaDef> extends CommonAdapte
|
|
|
18
18
|
getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* SvelteKit server hooks handler for handling CRUD requests.
|
|
21
|
+
* SvelteKit server hooks handler for handling CRUD requests. This handler is to be used in `hooks.server.ts`.
|
|
22
|
+
* @deprecated use `SvelteKitRouteHandler` instead.
|
|
22
23
|
*/
|
|
23
|
-
declare function createHandler<Schema extends SchemaDef>(options: SvelteKitHandlerOptions<Schema>): Handle;
|
|
24
|
+
declare function createHandler$1<Schema extends SchemaDef>(options: SvelteKitHandlerOptions<Schema>): Handle;
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
/**
|
|
27
|
+
* SvelteKit route handler options
|
|
28
|
+
*/
|
|
29
|
+
interface SvelteKitRouteHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {
|
|
30
|
+
/**
|
|
31
|
+
* Callback for getting a ZenStackClient for the given request event
|
|
32
|
+
*/
|
|
33
|
+
getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* SvelteKit server route handler for handling CRUD requests. This handler is to be used in a `+server.ts`
|
|
37
|
+
* API route file.
|
|
38
|
+
*/
|
|
39
|
+
declare function createHandler<Schema extends SchemaDef>(options: SvelteKitRouteHandlerOptions<Schema>): RequestHandler;
|
|
40
|
+
|
|
41
|
+
export { createHandler$1 as SvelteKitHandler, type SvelteKitHandlerOptions, createHandler as SvelteKitRouteHandler, type SvelteKitRouteHandlerOptions };
|
package/dist/sveltekit.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RequestEvent, Handle } from '@sveltejs/kit';
|
|
1
|
+
import { RequestEvent, Handle, RequestHandler } from '@sveltejs/kit';
|
|
2
2
|
import { ClientContract } from '@zenstackhq/orm';
|
|
3
3
|
import { SchemaDef } from '@zenstackhq/orm/schema';
|
|
4
4
|
import { C as CommonAdapterOptions } from './common-WHbiInuf.js';
|
|
@@ -18,8 +18,24 @@ interface SvelteKitHandlerOptions<Schema extends SchemaDef> extends CommonAdapte
|
|
|
18
18
|
getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* SvelteKit server hooks handler for handling CRUD requests.
|
|
21
|
+
* SvelteKit server hooks handler for handling CRUD requests. This handler is to be used in `hooks.server.ts`.
|
|
22
|
+
* @deprecated use `SvelteKitRouteHandler` instead.
|
|
22
23
|
*/
|
|
23
|
-
declare function createHandler<Schema extends SchemaDef>(options: SvelteKitHandlerOptions<Schema>): Handle;
|
|
24
|
+
declare function createHandler$1<Schema extends SchemaDef>(options: SvelteKitHandlerOptions<Schema>): Handle;
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
/**
|
|
27
|
+
* SvelteKit route handler options
|
|
28
|
+
*/
|
|
29
|
+
interface SvelteKitRouteHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {
|
|
30
|
+
/**
|
|
31
|
+
* Callback for getting a ZenStackClient for the given request event
|
|
32
|
+
*/
|
|
33
|
+
getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* SvelteKit server route handler for handling CRUD requests. This handler is to be used in a `+server.ts`
|
|
37
|
+
* API route file.
|
|
38
|
+
*/
|
|
39
|
+
declare function createHandler<Schema extends SchemaDef>(options: SvelteKitRouteHandlerOptions<Schema>): RequestHandler;
|
|
40
|
+
|
|
41
|
+
export { createHandler$1 as SvelteKitHandler, type SvelteKitHandlerOptions, createHandler as SvelteKitRouteHandler, type SvelteKitRouteHandlerOptions };
|
package/dist/sveltekit.js
CHANGED
|
@@ -93,7 +93,64 @@ function createHandler(options) {
|
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
95
|
__name(createHandler, "createHandler");
|
|
96
|
+
|
|
97
|
+
// src/adapter/sveltekit/route-handler.ts
|
|
98
|
+
import { json } from "@sveltejs/kit";
|
|
99
|
+
function createHandler2(options) {
|
|
100
|
+
return async (event) => {
|
|
101
|
+
const client = await options.getClient(event);
|
|
102
|
+
if (!client) {
|
|
103
|
+
return json({
|
|
104
|
+
message: "unable to get ZenStackClient from request context"
|
|
105
|
+
}, {
|
|
106
|
+
status: 400
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
const query = Object.fromEntries(event.url.searchParams);
|
|
110
|
+
let requestBody;
|
|
111
|
+
if (event.request.body) {
|
|
112
|
+
try {
|
|
113
|
+
requestBody = await event.request.json();
|
|
114
|
+
} catch {
|
|
115
|
+
return json({
|
|
116
|
+
message: "invalid JSON payload"
|
|
117
|
+
}, {
|
|
118
|
+
status: 400
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const path = event.params["path"];
|
|
123
|
+
if (!path) {
|
|
124
|
+
return json({
|
|
125
|
+
message: "route is missing path parameter"
|
|
126
|
+
}, {
|
|
127
|
+
status: 400
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const r = await options.apiHandler.handleRequest({
|
|
132
|
+
method: event.request.method,
|
|
133
|
+
path,
|
|
134
|
+
query,
|
|
135
|
+
requestBody,
|
|
136
|
+
client
|
|
137
|
+
});
|
|
138
|
+
return json(r.body, {
|
|
139
|
+
status: r.status
|
|
140
|
+
});
|
|
141
|
+
} catch (err) {
|
|
142
|
+
logInternalError(options.apiHandler.log, err);
|
|
143
|
+
return json({
|
|
144
|
+
message: "An internal server error occurred"
|
|
145
|
+
}, {
|
|
146
|
+
status: 500
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
__name(createHandler2, "createHandler");
|
|
96
152
|
export {
|
|
97
|
-
createHandler as SvelteKitHandler
|
|
153
|
+
createHandler as SvelteKitHandler,
|
|
154
|
+
createHandler2 as SvelteKitRouteHandler
|
|
98
155
|
};
|
|
99
156
|
//# sourceMappingURL=sveltekit.js.map
|
package/dist/sveltekit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/sveltekit/handler.ts"],"sourcesContent":["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,SAASA,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;;;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":["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","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"]}
|
|
1
|
+
{"version":3,"sources":["../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/sveltekit/handler.ts","../src/adapter/sveltekit/route-handler.ts"],"sourcesContent":["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. This handler is to be used in `hooks.server.ts`.\n * @deprecated use `SvelteKitRouteHandler` instead.\n */\nfunction 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","import { json, type RequestEvent, type RequestHandler } 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 route handler options\n */\nexport interface SvelteKitRouteHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback for getting a ZenStackClient for the given request event\n */\n getClient: (event: RequestEvent) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n}\n\n/**\n * SvelteKit server route handler for handling CRUD requests. This handler is to be used in a `+server.ts`\n * API route file.\n */\nfunction createHandler<Schema extends SchemaDef>(options: SvelteKitRouteHandlerOptions<Schema>): RequestHandler {\n return async (event) => {\n const client = await options.getClient(event);\n if (!client) {\n return json({ message: 'unable to get ZenStackClient from request context' }, { status: 400 });\n }\n\n const query = Object.fromEntries(event.url.searchParams);\n let requestBody: unknown;\n if (event.request.body) {\n try {\n requestBody = await event.request.json();\n } catch {\n return json({ message: 'invalid JSON payload' }, { status: 400 });\n }\n }\n\n const path = event.params['path'];\n if (!path) {\n return json({ message: 'route is missing path parameter' }, { status: 400 });\n }\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 json(r.body, { status: r.status });\n } catch (err) {\n logInternalError(options.apiHandler.log, err);\n return json({ message: 'An internal server error occurred' }, { status: 500 });\n }\n };\n}\n\nexport { createHandler as SvelteKitRouteHandler };\n"],"mappings":"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","names":["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","createHandler","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","json","createHandler","options","event","client","getClient","json","message","status","query","Object","fromEntries","url","searchParams","requestBody","request","body","path","params","r","apiHandler","handleRequest","method","err","logInternalError","log"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"description": "ZenStack automatic CRUD API handlers and server adapters",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -120,8 +120,8 @@
|
|
|
120
120
|
"ts-pattern": "^5.7.1",
|
|
121
121
|
"url-pattern": "^1.0.3",
|
|
122
122
|
"zod-validation-error": "^4.0.1",
|
|
123
|
-
"@zenstackhq/common-helpers": "3.
|
|
124
|
-
"@zenstackhq/orm": "3.
|
|
123
|
+
"@zenstackhq/common-helpers": "3.1.1",
|
|
124
|
+
"@zenstackhq/orm": "3.1.1"
|
|
125
125
|
},
|
|
126
126
|
"devDependencies": {
|
|
127
127
|
"@sveltejs/kit": "^2.48.3",
|
|
@@ -136,13 +136,13 @@
|
|
|
136
136
|
"h3": "^1.15.4",
|
|
137
137
|
"hono": "^4.6.3",
|
|
138
138
|
"next": "16.0.10",
|
|
139
|
-
"nuxt": "
|
|
139
|
+
"nuxt": "4.2.2",
|
|
140
140
|
"supertest": "^7.1.4",
|
|
141
141
|
"zod": "^4.1.0",
|
|
142
|
-
"@zenstackhq/eslint-config": "3.
|
|
143
|
-
"@zenstackhq/testtools": "3.
|
|
144
|
-
"@zenstackhq/
|
|
145
|
-
"@zenstackhq/
|
|
142
|
+
"@zenstackhq/eslint-config": "3.1.1",
|
|
143
|
+
"@zenstackhq/testtools": "3.1.1",
|
|
144
|
+
"@zenstackhq/vitest-config": "3.1.1",
|
|
145
|
+
"@zenstackhq/typescript-config": "3.1.1"
|
|
146
146
|
},
|
|
147
147
|
"peerDependencies": {
|
|
148
148
|
"@sveltejs/kit": "^2.0.0",
|