@zenstackhq/server 3.0.0-beta.25 → 3.0.0-beta.27

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/elysia.cjs CHANGED
@@ -66,7 +66,7 @@ __name(logInternalError, "logInternalError");
66
66
  function createElysiaHandler(options) {
67
67
  return async (app) => {
68
68
  app.all("/*", async (ctx) => {
69
- const { request, body, set } = ctx;
69
+ const { query, body, set, request } = ctx;
70
70
  const client = await options.getClient(ctx);
71
71
  if (!client) {
72
72
  set.status = 500;
@@ -75,7 +75,6 @@ function createElysiaHandler(options) {
75
75
  };
76
76
  }
77
77
  const url = new URL(request.url);
78
- const query = Object.fromEntries(url.searchParams);
79
78
  let path = url.pathname;
80
79
  if (options.basePath && path.startsWith(options.basePath)) {
81
80
  path = path.slice(options.basePath.length);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/adapter/elysia/index.ts","../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/elysia/handler.ts"],"sourcesContent":["export { createElysiaHandler, type ElysiaOptions } 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 { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { Elysia, type Context as ElysiaContext } from 'elysia';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * Options for initializing an Elysia middleware.\n */\nexport interface ElysiaOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback method for getting a ZenStackClient instance for the given request context.\n */\n getClient: (context: ElysiaContext) => Promise<ClientContract<Schema>> | ClientContract<Schema>;\n\n /**\n * Optional base path to strip from the request path before passing to the API handler.\n */\n basePath?: string;\n}\n\n/**\n * Creates an Elysia middleware handler for ZenStack.\n * This handler provides automatic CRUD APIs through Elysia's routing system.\n */\nexport function createElysiaHandler<Schema extends SchemaDef>(options: ElysiaOptions<Schema>) {\n return async (app: Elysia) => {\n app.all('/*', async (ctx: ElysiaContext) => {\n const { request, body, set } = ctx;\n const client = await options.getClient(ctx);\n if (!client) {\n set.status = 500;\n return {\n message: 'unable to get ZenStackClient from request context',\n };\n }\n\n const url = new URL(request.url);\n const query = Object.fromEntries(url.searchParams);\n let path = url.pathname;\n\n if (options.basePath && path.startsWith(options.basePath)) {\n path = path.slice(options.basePath.length);\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n }\n\n if (!path || path === '/') {\n set.status = 400;\n return {\n message: 'missing path parameter',\n };\n }\n\n try {\n const r = await options.apiHandler.handleRequest({\n method: request.method,\n path,\n query,\n requestBody: body,\n client,\n });\n\n set.status = r.status;\n return r.body;\n } catch (err) {\n set.status = 500;\n logInternalError(options.apiHandler.log, err);\n return {\n message: 'An internal server error occurred',\n };\n }\n });\n\n return app;\n };\n}\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;;;ACUT,SAASM,oBAA8CC,SAA8B;AACxF,SAAO,OAAOC,QAAAA;AACVA,QAAIC,IAAI,MAAM,OAAOC,QAAAA;AACjB,YAAM,EAAEC,SAASC,MAAMC,IAAG,IAAKH;AAC/B,YAAMI,SAAS,MAAMP,QAAQQ,UAAUL,GAAAA;AACvC,UAAI,CAACI,QAAQ;AACTD,YAAIG,SAAS;AACb,eAAO;UACHC,SAAS;QACb;MACJ;AAEA,YAAMC,MAAM,IAAIC,IAAIR,QAAQO,GAAG;AAC/B,YAAME,QAAQC,OAAOC,YAAYJ,IAAIK,YAAY;AACjD,UAAIC,OAAON,IAAIO;AAEf,UAAIlB,QAAQmB,YAAYF,KAAKG,WAAWpB,QAAQmB,QAAQ,GAAG;AACvDF,eAAOA,KAAKI,MAAMrB,QAAQmB,SAASG,MAAM;AACzC,YAAI,CAACL,KAAKG,WAAW,GAAA,GAAM;AACvBH,iBAAO,MAAMA;QACjB;MACJ;AAEA,UAAI,CAACA,QAAQA,SAAS,KAAK;AACvBX,YAAIG,SAAS;AACb,eAAO;UACHC,SAAS;QACb;MACJ;AAEA,UAAI;AACA,cAAMa,IAAI,MAAMvB,QAAQwB,WAAWC,cAAc;UAC7CC,QAAQtB,QAAQsB;UAChBT;UACAJ;UACAc,aAAatB;UACbE;QACJ,CAAA;AAEAD,YAAIG,SAASc,EAAEd;AACf,eAAOc,EAAElB;MACb,SAASuB,KAAK;AACVtB,YAAIG,SAAS;AACboB,yBAAiB7B,QAAQwB,WAAWM,KAAKF,GAAAA;AACzC,eAAO;UACHlB,SAAS;QACb;MACJ;IACJ,CAAA;AAEA,WAAOT;EACX;AACJ;AApDgBF;","names":["log","logger","level","message","error","getMessage","includes","logFn","match","with","console","debug","info","warn","exhaustive","logInternalError","logger","err","log","Error","stack","createElysiaHandler","options","app","all","ctx","request","body","set","client","getClient","status","message","url","URL","query","Object","fromEntries","searchParams","path","pathname","basePath","startsWith","slice","length","r","apiHandler","handleRequest","method","requestBody","err","logInternalError","log"]}
1
+ {"version":3,"sources":["../src/adapter/elysia/index.ts","../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/elysia/handler.ts"],"sourcesContent":["export { createElysiaHandler, type ElysiaOptions } 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 { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { Elysia, type Context as ElysiaContext } from 'elysia';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * Options for initializing an Elysia middleware.\n */\nexport interface ElysiaOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback method for getting a ZenStackClient instance for the given request context.\n */\n getClient: (context: ElysiaContext) => Promise<ClientContract<Schema>> | ClientContract<Schema>;\n\n /**\n * Optional base path to strip from the request path before passing to the API handler.\n */\n basePath?: string;\n}\n\n/**\n * Creates an Elysia middleware handler for ZenStack.\n * This handler provides automatic CRUD APIs through Elysia's routing system.\n */\nexport function createElysiaHandler<Schema extends SchemaDef>(options: ElysiaOptions<Schema>) {\n return async (app: Elysia) => {\n app.all('/*', async (ctx: ElysiaContext) => {\n const { query, body, set, request } = ctx;\n const client = await options.getClient(ctx);\n if (!client) {\n set.status = 500;\n return {\n message: 'unable to get ZenStackClient from request context',\n };\n }\n\n const url = new URL(request.url);\n let path = url.pathname;\n\n if (options.basePath && path.startsWith(options.basePath)) {\n path = path.slice(options.basePath.length);\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n }\n\n if (!path || path === '/') {\n set.status = 400;\n return {\n message: 'missing path parameter',\n };\n }\n\n try {\n const r = await options.apiHandler.handleRequest({\n method: request.method,\n path,\n query,\n requestBody: body,\n client,\n });\n\n set.status = r.status;\n return r.body;\n } catch (err) {\n set.status = 500;\n logInternalError(options.apiHandler.log, err);\n return {\n message: 'An internal server error occurred',\n };\n }\n });\n\n return app;\n };\n}\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;;;ACUT,SAASM,oBAA8CC,SAA8B;AACxF,SAAO,OAAOC,QAAAA;AACVA,QAAIC,IAAI,MAAM,OAAOC,QAAAA;AACjB,YAAM,EAAEC,OAAOC,MAAMC,KAAKC,QAAO,IAAKJ;AACtC,YAAMK,SAAS,MAAMR,QAAQS,UAAUN,GAAAA;AACvC,UAAI,CAACK,QAAQ;AACTF,YAAII,SAAS;AACb,eAAO;UACHC,SAAS;QACb;MACJ;AAEA,YAAMC,MAAM,IAAIC,IAAIN,QAAQK,GAAG;AAC/B,UAAIE,OAAOF,IAAIG;AAEf,UAAIf,QAAQgB,YAAYF,KAAKG,WAAWjB,QAAQgB,QAAQ,GAAG;AACvDF,eAAOA,KAAKI,MAAMlB,QAAQgB,SAASG,MAAM;AACzC,YAAI,CAACL,KAAKG,WAAW,GAAA,GAAM;AACvBH,iBAAO,MAAMA;QACjB;MACJ;AAEA,UAAI,CAACA,QAAQA,SAAS,KAAK;AACvBR,YAAII,SAAS;AACb,eAAO;UACHC,SAAS;QACb;MACJ;AAEA,UAAI;AACA,cAAMS,IAAI,MAAMpB,QAAQqB,WAAWC,cAAc;UAC7CC,QAAQhB,QAAQgB;UAChBT;UACAV;UACAoB,aAAanB;UACbG;QACJ,CAAA;AAEAF,YAAII,SAASU,EAAEV;AACf,eAAOU,EAAEf;MACb,SAASoB,KAAK;AACVnB,YAAII,SAAS;AACbgB,yBAAiB1B,QAAQqB,WAAWM,KAAKF,GAAAA;AACzC,eAAO;UACHd,SAAS;QACb;MACJ;IACJ,CAAA;AAEA,WAAOV;EACX;AACJ;AAnDgBF;","names":["log","logger","level","message","error","getMessage","includes","logFn","match","with","console","debug","info","warn","exhaustive","logInternalError","logger","err","log","Error","stack","createElysiaHandler","options","app","all","ctx","query","body","set","request","client","getClient","status","message","url","URL","path","pathname","basePath","startsWith","slice","length","r","apiHandler","handleRequest","method","requestBody","err","logInternalError","log"]}
package/dist/elysia.js CHANGED
@@ -32,7 +32,7 @@ __name(logInternalError, "logInternalError");
32
32
  function createElysiaHandler(options) {
33
33
  return async (app) => {
34
34
  app.all("/*", async (ctx) => {
35
- const { request, body, set } = ctx;
35
+ const { query, body, set, request } = ctx;
36
36
  const client = await options.getClient(ctx);
37
37
  if (!client) {
38
38
  set.status = 500;
@@ -41,7 +41,6 @@ function createElysiaHandler(options) {
41
41
  };
42
42
  }
43
43
  const url = new URL(request.url);
44
- const query = Object.fromEntries(url.searchParams);
45
44
  let path = url.pathname;
46
45
  if (options.basePath && path.startsWith(options.basePath)) {
47
46
  path = path.slice(options.basePath.length);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/elysia/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 { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { Elysia, type Context as ElysiaContext } from 'elysia';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * Options for initializing an Elysia middleware.\n */\nexport interface ElysiaOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback method for getting a ZenStackClient instance for the given request context.\n */\n getClient: (context: ElysiaContext) => Promise<ClientContract<Schema>> | ClientContract<Schema>;\n\n /**\n * Optional base path to strip from the request path before passing to the API handler.\n */\n basePath?: string;\n}\n\n/**\n * Creates an Elysia middleware handler for ZenStack.\n * This handler provides automatic CRUD APIs through Elysia's routing system.\n */\nexport function createElysiaHandler<Schema extends SchemaDef>(options: ElysiaOptions<Schema>) {\n return async (app: Elysia) => {\n app.all('/*', async (ctx: ElysiaContext) => {\n const { request, body, set } = ctx;\n const client = await options.getClient(ctx);\n if (!client) {\n set.status = 500;\n return {\n message: 'unable to get ZenStackClient from request context',\n };\n }\n\n const url = new URL(request.url);\n const query = Object.fromEntries(url.searchParams);\n let path = url.pathname;\n\n if (options.basePath && path.startsWith(options.basePath)) {\n path = path.slice(options.basePath.length);\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n }\n\n if (!path || path === '/') {\n set.status = 400;\n return {\n message: 'missing path parameter',\n };\n }\n\n try {\n const r = await options.apiHandler.handleRequest({\n method: request.method,\n path,\n query,\n requestBody: body,\n client,\n });\n\n set.status = r.status;\n return r.body;\n } catch (err) {\n set.status = 500;\n logInternalError(options.apiHandler.log, err);\n return {\n message: 'An internal server error occurred',\n };\n }\n });\n\n return app;\n };\n}\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;;;ACUT,SAASM,oBAA8CC,SAA8B;AACxF,SAAO,OAAOC,QAAAA;AACVA,QAAIC,IAAI,MAAM,OAAOC,QAAAA;AACjB,YAAM,EAAEC,SAASC,MAAMC,IAAG,IAAKH;AAC/B,YAAMI,SAAS,MAAMP,QAAQQ,UAAUL,GAAAA;AACvC,UAAI,CAACI,QAAQ;AACTD,YAAIG,SAAS;AACb,eAAO;UACHC,SAAS;QACb;MACJ;AAEA,YAAMC,MAAM,IAAIC,IAAIR,QAAQO,GAAG;AAC/B,YAAME,QAAQC,OAAOC,YAAYJ,IAAIK,YAAY;AACjD,UAAIC,OAAON,IAAIO;AAEf,UAAIlB,QAAQmB,YAAYF,KAAKG,WAAWpB,QAAQmB,QAAQ,GAAG;AACvDF,eAAOA,KAAKI,MAAMrB,QAAQmB,SAASG,MAAM;AACzC,YAAI,CAACL,KAAKG,WAAW,GAAA,GAAM;AACvBH,iBAAO,MAAMA;QACjB;MACJ;AAEA,UAAI,CAACA,QAAQA,SAAS,KAAK;AACvBX,YAAIG,SAAS;AACb,eAAO;UACHC,SAAS;QACb;MACJ;AAEA,UAAI;AACA,cAAMa,IAAI,MAAMvB,QAAQwB,WAAWC,cAAc;UAC7CC,QAAQtB,QAAQsB;UAChBT;UACAJ;UACAc,aAAatB;UACbE;QACJ,CAAA;AAEAD,YAAIG,SAASc,EAAEd;AACf,eAAOc,EAAElB;MACb,SAASuB,KAAK;AACVtB,YAAIG,SAAS;AACboB,yBAAiB7B,QAAQwB,WAAWM,KAAKF,GAAAA;AACzC,eAAO;UACHlB,SAAS;QACb;MACJ;IACJ,CAAA;AAEA,WAAOT;EACX;AACJ;AApDgBF;","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","createElysiaHandler","options","app","all","ctx","request","body","set","client","getClient","status","message","url","URL","query","Object","fromEntries","searchParams","path","pathname","basePath","startsWith","slice","length","r","apiHandler","handleRequest","method","requestBody","err","logInternalError","log"]}
1
+ {"version":3,"sources":["../src/api/utils.ts","../src/adapter/common.ts","../src/adapter/elysia/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 { ClientContract } from '@zenstackhq/orm';\nimport type { SchemaDef } from '@zenstackhq/orm/schema';\nimport { Elysia, type Context as ElysiaContext } from 'elysia';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * Options for initializing an Elysia middleware.\n */\nexport interface ElysiaOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback method for getting a ZenStackClient instance for the given request context.\n */\n getClient: (context: ElysiaContext) => Promise<ClientContract<Schema>> | ClientContract<Schema>;\n\n /**\n * Optional base path to strip from the request path before passing to the API handler.\n */\n basePath?: string;\n}\n\n/**\n * Creates an Elysia middleware handler for ZenStack.\n * This handler provides automatic CRUD APIs through Elysia's routing system.\n */\nexport function createElysiaHandler<Schema extends SchemaDef>(options: ElysiaOptions<Schema>) {\n return async (app: Elysia) => {\n app.all('/*', async (ctx: ElysiaContext) => {\n const { query, body, set, request } = ctx;\n const client = await options.getClient(ctx);\n if (!client) {\n set.status = 500;\n return {\n message: 'unable to get ZenStackClient from request context',\n };\n }\n\n const url = new URL(request.url);\n let path = url.pathname;\n\n if (options.basePath && path.startsWith(options.basePath)) {\n path = path.slice(options.basePath.length);\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n }\n\n if (!path || path === '/') {\n set.status = 400;\n return {\n message: 'missing path parameter',\n };\n }\n\n try {\n const r = await options.apiHandler.handleRequest({\n method: request.method,\n path,\n query,\n requestBody: body,\n client,\n });\n\n set.status = r.status;\n return r.body;\n } catch (err) {\n set.status = 500;\n logInternalError(options.apiHandler.log, err);\n return {\n message: 'An internal server error occurred',\n };\n }\n });\n\n return app;\n };\n}\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;;;ACUT,SAASM,oBAA8CC,SAA8B;AACxF,SAAO,OAAOC,QAAAA;AACVA,QAAIC,IAAI,MAAM,OAAOC,QAAAA;AACjB,YAAM,EAAEC,OAAOC,MAAMC,KAAKC,QAAO,IAAKJ;AACtC,YAAMK,SAAS,MAAMR,QAAQS,UAAUN,GAAAA;AACvC,UAAI,CAACK,QAAQ;AACTF,YAAII,SAAS;AACb,eAAO;UACHC,SAAS;QACb;MACJ;AAEA,YAAMC,MAAM,IAAIC,IAAIN,QAAQK,GAAG;AAC/B,UAAIE,OAAOF,IAAIG;AAEf,UAAIf,QAAQgB,YAAYF,KAAKG,WAAWjB,QAAQgB,QAAQ,GAAG;AACvDF,eAAOA,KAAKI,MAAMlB,QAAQgB,SAASG,MAAM;AACzC,YAAI,CAACL,KAAKG,WAAW,GAAA,GAAM;AACvBH,iBAAO,MAAMA;QACjB;MACJ;AAEA,UAAI,CAACA,QAAQA,SAAS,KAAK;AACvBR,YAAII,SAAS;AACb,eAAO;UACHC,SAAS;QACb;MACJ;AAEA,UAAI;AACA,cAAMS,IAAI,MAAMpB,QAAQqB,WAAWC,cAAc;UAC7CC,QAAQhB,QAAQgB;UAChBT;UACAV;UACAoB,aAAanB;UACbG;QACJ,CAAA;AAEAF,YAAII,SAASU,EAAEV;AACf,eAAOU,EAAEf;MACb,SAASoB,KAAK;AACVnB,YAAII,SAAS;AACbgB,yBAAiB1B,QAAQqB,WAAWM,KAAKF,GAAAA;AACzC,eAAO;UACHd,SAAS;QACb;MACJ;IACJ,CAAA;AAEA,WAAOV;EACX;AACJ;AAnDgBF;","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","createElysiaHandler","options","app","all","ctx","query","body","set","request","client","getClient","status","message","url","URL","path","pathname","basePath","startsWith","slice","length","r","apiHandler","handleRequest","method","requestBody","err","logInternalError","log"]}
package/dist/nuxt.cjs CHANGED
@@ -37,7 +37,6 @@ module.exports = __toCommonJS(nuxt_exports);
37
37
 
38
38
  // src/adapter/nuxt/handler.ts
39
39
  var import_h3 = require("h3");
40
- var import_app = require("nuxt/app");
41
40
 
42
41
  // src/api/utils.ts
43
42
  var import_decimal = require("decimal.js");
@@ -71,7 +70,7 @@ function createEventHandler(options) {
71
70
  return (0, import_h3.defineEventHandler)(async (event) => {
72
71
  const client = await options.getClient(event);
73
72
  if (!client) {
74
- (0, import_app.setResponseStatus)(event, 500);
73
+ (0, import_h3.setResponseStatus)(event, 500);
75
74
  return {
76
75
  message: "unable to get ZenStackClient from request context"
77
76
  };
@@ -90,10 +89,10 @@ function createEventHandler(options) {
90
89
  requestBody: reqBody,
91
90
  client
92
91
  });
93
- (0, import_app.setResponseStatus)(event, status);
92
+ (0, import_h3.setResponseStatus)(event, status);
94
93
  return body;
95
94
  } catch (err) {
96
- (0, import_app.setResponseStatus)(event, 500);
95
+ (0, import_h3.setResponseStatus)(event, 500);
97
96
  logInternalError(options.apiHandler.log, err);
98
97
  return {
99
98
  message: "An internal server error occurred"
package/dist/nuxt.cjs.map CHANGED
@@ -1 +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"]}
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 {\n defineEventHandler,\n getQuery,\n getRouterParams,\n readBody,\n setResponseStatus,\n type H3Event,\n type EventHandlerRequest,\n} from 'h3';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * Nuxt request handler options\n */\nexport interface NuxtHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback for getting a ZenStackClient for the given request\n */\n getClient: (event: H3Event<EventHandlerRequest>) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n}\n\nexport function createEventHandler<Schema extends SchemaDef>(options: NuxtHandlerOptions<Schema>) {\n return defineEventHandler(async (event) => {\n const client = await options.getClient(event);\n if (!client) {\n setResponseStatus(event, 500);\n return { message: 'unable to get ZenStackClient from request context' };\n }\n\n const routerParam = getRouterParams(event);\n const query = await getQuery(event);\n\n let reqBody: unknown;\n if (event.method === 'POST' || event.method === 'PUT' || event.method === 'PATCH') {\n reqBody = await readBody(event);\n }\n\n try {\n const { status, body } = await options.apiHandler.handleRequest({\n method: event.method,\n path: routerParam['_']!,\n query: query as Record<string, string | string[]>,\n requestBody: reqBody,\n client,\n });\n\n setResponseStatus(event, status);\n return body;\n } catch (err) {\n setResponseStatus(event, 500);\n logInternalError(options.apiHandler.log, err);\n return { message: 'An internal server error occurred' };\n }\n });\n}\n","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,gBAQO;;;ACVP,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;;;AFST,SAASM,mBAA6CC,SAAmC;AAC5F,aAAOC,8BAAmB,OAAOC,UAAAA;AAC7B,UAAMC,SAAS,MAAMH,QAAQI,UAAUF,KAAAA;AACvC,QAAI,CAACC,QAAQ;AACTE,uCAAkBH,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,uCAAkBH,OAAOY,MAAAA;AACzB,aAAOC;IACX,SAASK,KAAK;AACVf,uCAAkBH,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.js CHANGED
@@ -2,8 +2,7 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
4
  // src/adapter/nuxt/handler.ts
5
- import { defineEventHandler, getQuery, getRouterParams, readBody } from "h3";
6
- import { setResponseStatus } from "nuxt/app";
5
+ import { defineEventHandler, getQuery, getRouterParams, readBody, setResponseStatus } from "h3";
7
6
 
8
7
  // src/api/utils.ts
9
8
  import { Decimal } from "decimal.js";
package/dist/nuxt.js.map CHANGED
@@ -1 +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"]}
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 {\n defineEventHandler,\n getQuery,\n getRouterParams,\n readBody,\n setResponseStatus,\n type H3Event,\n type EventHandlerRequest,\n} from 'h3';\nimport { logInternalError, type CommonAdapterOptions } from '../common';\n\n/**\n * Nuxt request handler options\n */\nexport interface NuxtHandlerOptions<Schema extends SchemaDef> extends CommonAdapterOptions<Schema> {\n /**\n * Callback for getting a ZenStackClient for the given request\n */\n getClient: (event: H3Event<EventHandlerRequest>) => ClientContract<Schema> | Promise<ClientContract<Schema>>;\n}\n\nexport function createEventHandler<Schema extends SchemaDef>(options: NuxtHandlerOptions<Schema>) {\n return defineEventHandler(async (event) => {\n const client = await options.getClient(event);\n if (!client) {\n setResponseStatus(event, 500);\n return { message: 'unable to get ZenStackClient from request context' };\n }\n\n const routerParam = getRouterParams(event);\n const query = await getQuery(event);\n\n let reqBody: unknown;\n if (event.method === 'POST' || event.method === 'PUT' || event.method === 'PATCH') {\n reqBody = await readBody(event);\n }\n\n try {\n const { status, body } = await options.apiHandler.handleRequest({\n method: event.method,\n path: routerParam['_']!,\n query: query as Record<string, string | string[]>,\n requestBody: reqBody,\n client,\n });\n\n setResponseStatus(event, status);\n return body;\n } catch (err) {\n setResponseStatus(event, 500);\n logInternalError(options.apiHandler.log, err);\n return { message: 'An internal server error occurred' };\n }\n });\n}\n","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,SACIA,oBACAC,UACAC,iBACAC,UACAC,yBAGG;;;ACVP,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;;;AFST,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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenstackhq/server",
3
- "version": "3.0.0-beta.25",
3
+ "version": "3.0.0-beta.27",
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.0.0-beta.25",
124
- "@zenstackhq/orm": "3.0.0-beta.25"
123
+ "@zenstackhq/common-helpers": "3.0.0-beta.27",
124
+ "@zenstackhq/orm": "3.0.0-beta.27"
125
125
  },
126
126
  "devDependencies": {
127
127
  "@sveltejs/kit": "^2.48.3",
@@ -139,10 +139,10 @@
139
139
  "nuxt": "^4.2.0",
140
140
  "supertest": "^7.1.4",
141
141
  "zod": "^4.1.0",
142
- "@zenstackhq/eslint-config": "3.0.0-beta.25",
143
- "@zenstackhq/testtools": "3.0.0-beta.25",
144
- "@zenstackhq/vitest-config": "3.0.0-beta.25",
145
- "@zenstackhq/typescript-config": "3.0.0-beta.25"
142
+ "@zenstackhq/eslint-config": "3.0.0-beta.27",
143
+ "@zenstackhq/testtools": "3.0.0-beta.27",
144
+ "@zenstackhq/typescript-config": "3.0.0-beta.27",
145
+ "@zenstackhq/vitest-config": "3.0.0-beta.27"
146
146
  },
147
147
  "peerDependencies": {
148
148
  "@sveltejs/kit": "^2.0.0",