@orpc/server 0.0.0-next.150aa84 → 0.0.0-next.158dbb5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +3 -0
  2. package/dist/adapters/aws-lambda/index.d.mts +5 -5
  3. package/dist/adapters/aws-lambda/index.d.ts +5 -5
  4. package/dist/adapters/aws-lambda/index.mjs +3 -3
  5. package/dist/adapters/bun-ws/index.d.mts +5 -5
  6. package/dist/adapters/bun-ws/index.d.ts +5 -5
  7. package/dist/adapters/bun-ws/index.mjs +2 -2
  8. package/dist/adapters/crossws/index.d.mts +5 -5
  9. package/dist/adapters/crossws/index.d.ts +5 -5
  10. package/dist/adapters/crossws/index.mjs +2 -2
  11. package/dist/adapters/fastify/index.d.mts +53 -0
  12. package/dist/adapters/fastify/index.d.ts +53 -0
  13. package/dist/adapters/fastify/index.mjs +54 -0
  14. package/dist/adapters/fetch/index.d.mts +5 -5
  15. package/dist/adapters/fetch/index.d.ts +5 -5
  16. package/dist/adapters/fetch/index.mjs +3 -3
  17. package/dist/adapters/message-port/index.d.mts +35 -9
  18. package/dist/adapters/message-port/index.d.ts +35 -9
  19. package/dist/adapters/message-port/index.mjs +28 -12
  20. package/dist/adapters/node/index.d.mts +6 -6
  21. package/dist/adapters/node/index.d.ts +6 -6
  22. package/dist/adapters/node/index.mjs +3 -3
  23. package/dist/adapters/standard/index.d.mts +6 -6
  24. package/dist/adapters/standard/index.d.ts +6 -6
  25. package/dist/adapters/standard/index.mjs +2 -2
  26. package/dist/adapters/standard-peer/index.d.mts +3 -3
  27. package/dist/adapters/standard-peer/index.d.ts +3 -3
  28. package/dist/adapters/websocket/index.d.mts +9 -7
  29. package/dist/adapters/websocket/index.d.ts +9 -7
  30. package/dist/adapters/websocket/index.mjs +2 -2
  31. package/dist/adapters/ws/index.d.mts +5 -5
  32. package/dist/adapters/ws/index.d.ts +5 -5
  33. package/dist/adapters/ws/index.mjs +2 -2
  34. package/dist/helpers/index.d.mts +16 -1
  35. package/dist/helpers/index.d.ts +16 -1
  36. package/dist/helpers/index.mjs +11 -1
  37. package/dist/hibernation/index.d.mts +2 -2
  38. package/dist/hibernation/index.d.ts +2 -2
  39. package/dist/index.d.mts +6 -6
  40. package/dist/index.d.ts +6 -6
  41. package/dist/index.mjs +8 -5
  42. package/dist/plugins/index.d.mts +5 -2
  43. package/dist/plugins/index.d.ts +5 -2
  44. package/dist/plugins/index.mjs +13 -11
  45. package/dist/shared/{server.CYNGeoCm.d.mts → server.B4BGqy3Y.d.mts} +2 -3
  46. package/dist/shared/{server.CYNGeoCm.d.ts → server.B4BGqy3Y.d.ts} +2 -3
  47. package/dist/shared/{server.BHZCyRuJ.mjs → server.Bxx6tqNe.mjs} +1 -1
  48. package/dist/shared/{server.D0H-iaY3.d.ts → server.COL12UTb.d.ts} +3 -3
  49. package/dist/shared/{server.BEFBl-Cb.d.mts → server.CVKCo60T.d.mts} +2 -2
  50. package/dist/shared/{server.jMTkVNIb.d.ts → server.Cb6yD7DZ.d.ts} +1 -1
  51. package/dist/shared/{server.BU4WI18A.d.mts → server.Ck-gOLzq.d.mts} +3 -3
  52. package/dist/shared/{server.gqRxT-yN.d.mts → server.DBCUJijK.d.mts} +1 -1
  53. package/dist/shared/{server.B7b2w3_i.d.ts → server.DNtJ-p60.d.ts} +2 -2
  54. package/dist/shared/{server.Bmh5xd4n.d.ts → server.DPIFWpxG.d.ts} +1 -1
  55. package/dist/shared/{server.7jWaIryJ.mjs → server.Ds4HPpvH.mjs} +16 -23
  56. package/dist/shared/{server.DhJj-1X9.d.mts → server.DzV1hr3z.d.mts} +1 -1
  57. package/dist/shared/{server.BW-nUGgA.mjs → server.TEVCLCFC.mjs} +3 -0
  58. package/package.json +21 -12
@@ -13,7 +13,6 @@ type ORPCErrorConstructorMap<T extends ErrorMap> = {
13
13
  [K in keyof T]: K extends ORPCErrorCode ? T[K] extends ErrorMapItem<infer UInputSchema> ? ORPCErrorConstructorMapItem<K, InferSchemaInput<UInputSchema>> : never : never;
14
14
  };
15
15
  declare function createORPCErrorConstructorMap<T extends ErrorMap>(errors: T): ORPCErrorConstructorMap<T>;
16
- declare function validateORPCError(map: ErrorMap, error: ORPCError<any, any>): Promise<ORPCError<string, unknown>>;
17
16
 
18
17
  declare const LAZY_SYMBOL: unique symbol;
19
18
  interface LazyMeta {
@@ -190,5 +189,5 @@ type InferRouterOutputs<T extends AnyRouter> = T extends Procedure<any, any, any
190
189
  [K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterOutputs<U> : never;
191
190
  };
192
191
 
193
- export { middlewareOutputFn as B, isProcedure as F, createProcedureClient as G, Procedure as P, mergeCurrentContext as m, createORPCErrorConstructorMap as n, LAZY_SYMBOL as o, lazy as q, isLazy as r, getLazyMeta as s, unlazy as u, validateORPCError as v };
194
- export type { AnyProcedure as A, Context as C, ProcedureHandlerOptions as D, ProcedureDef as E, InferRouterInitialContexts as H, InferRouterInitialContext as I, InferRouterCurrentContexts as J, InferRouterInputs as K, Lazyable as L, MergedInitialContext as M, InferRouterOutputs as N, ORPCErrorConstructorMap as O, Router as R, AnyMiddleware as a, AnyRouter as b, Lazy as c, ProcedureClientInterceptorOptions as d, Middleware as e, MergedCurrentContext as f, MapInputMiddleware as g, CreateProcedureClientOptions as h, ProcedureClient as i, ProcedureHandler as j, ORPCErrorConstructorMapItemOptions as k, ORPCErrorConstructorMapItem as l, LazyMeta as p, MiddlewareResult as t, MiddlewareNextFnOptions as w, MiddlewareNextFn as x, MiddlewareOutputFn as y, MiddlewareOptions as z };
192
+ export { isProcedure as E, createProcedureClient as F, Procedure as P, mergeCurrentContext as m, createORPCErrorConstructorMap as n, LAZY_SYMBOL as o, lazy as q, isLazy as r, getLazyMeta as s, unlazy as u, middlewareOutputFn as z };
193
+ export type { AnyProcedure as A, ProcedureHandlerOptions as B, Context as C, ProcedureDef as D, InferRouterInitialContexts as G, InferRouterCurrentContexts as H, InferRouterInitialContext as I, InferRouterInputs as J, InferRouterOutputs as K, Lazyable as L, MergedInitialContext as M, ORPCErrorConstructorMap as O, Router as R, AnyMiddleware as a, AnyRouter as b, Lazy as c, ProcedureClientInterceptorOptions as d, Middleware as e, MergedCurrentContext as f, MapInputMiddleware as g, CreateProcedureClientOptions as h, ProcedureClient as i, ProcedureHandler as j, ORPCErrorConstructorMapItemOptions as k, ORPCErrorConstructorMapItem as l, LazyMeta as p, MiddlewareResult as t, MiddlewareNextFnOptions as v, MiddlewareNextFn as w, MiddlewareOutputFn as x, MiddlewareOptions as y };
@@ -2,7 +2,7 @@ import { toHttpPath, StandardRPCJsonSerializer, StandardRPCSerializer } from '@o
2
2
  import { ORPCError, toORPCError } from '@orpc/client';
3
3
  import { toArray, intercept, runWithSpan, ORPC_NAME, isAsyncIteratorObject, asyncIteratorWithSpan, setSpanError, parseEmptyableJSON, NullProtoObj, value } from '@orpc/shared';
4
4
  import { flattenHeader } from '@orpc/standard-server';
5
- import { c as createProcedureClient, t as traverseContractProcedures, i as isProcedure, u as unlazy, g as getRouter, a as createContractedProcedure } from './server.7jWaIryJ.mjs';
5
+ import { c as createProcedureClient, t as traverseContractProcedures, i as isProcedure, u as unlazy, g as getRouter, a as createContractedProcedure } from './server.Ds4HPpvH.mjs';
6
6
 
7
7
  class CompositeStandardHandlerPlugin {
8
8
  plugins;
@@ -1,9 +1,9 @@
1
1
  import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
2
- import { b as AnyRouter, C as Context, R as Router } from './server.CYNGeoCm.js';
3
- import { i as StandardMatcher, h as StandardMatchResult, e as StandardHandlerOptions, f as StandardHandler } from './server.Bmh5xd4n.js';
2
+ import { b as AnyRouter, C as Context, R as Router } from './server.B4BGqy3Y.js';
3
+ import { i as StandardMatcher, h as StandardMatchResult, e as StandardHandlerOptions, f as StandardHandler } from './server.DPIFWpxG.js';
4
4
  import { HTTPPath } from '@orpc/client';
5
5
  import { Value } from '@orpc/shared';
6
- import { T as TraverseContractProcedureCallbackOptions } from './server.jMTkVNIb.js';
6
+ import { T as TraverseContractProcedureCallbackOptions } from './server.Cb6yD7DZ.js';
7
7
 
8
8
  interface StandardRPCMatcherOptions {
9
9
  /**
@@ -1,5 +1,5 @@
1
- import { C as Context } from './server.CYNGeoCm.mjs';
2
- import { b as StandardHandleOptions } from './server.gqRxT-yN.mjs';
1
+ import { C as Context } from './server.B4BGqy3Y.mjs';
2
+ import { b as StandardHandleOptions } from './server.DBCUJijK.mjs';
3
3
 
4
4
  type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
5
5
  context?: T;
@@ -1,5 +1,5 @@
1
1
  import { ErrorMap, EnhanceRouteOptions, MergedErrorMap, AnyContractRouter, AnyContractProcedure } from '@orpc/contract';
2
- import { a as AnyMiddleware, L as Lazyable, b as AnyRouter, C as Context, c as Lazy, A as AnyProcedure, P as Procedure, M as MergedInitialContext } from './server.CYNGeoCm.js';
2
+ import { a as AnyMiddleware, L as Lazyable, b as AnyRouter, C as Context, c as Lazy, A as AnyProcedure, P as Procedure, M as MergedInitialContext } from './server.B4BGqy3Y.js';
3
3
 
4
4
  declare function getRouter<T extends Lazyable<AnyRouter | undefined>>(router: T, path: readonly string[]): T extends Lazy<any> ? Lazy<AnyRouter | undefined> : Lazyable<AnyRouter | undefined>;
5
5
  type AccessibleLazyRouter<T extends Lazyable<AnyRouter | undefined>> = T extends Lazy<infer U extends AnyRouter | undefined | Lazy<AnyRouter | undefined>> ? AccessibleLazyRouter<U> : T extends AnyProcedure | undefined ? Lazy<T> : Lazy<T> & {
@@ -1,9 +1,9 @@
1
1
  import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
2
- import { b as AnyRouter, C as Context, R as Router } from './server.CYNGeoCm.mjs';
3
- import { i as StandardMatcher, h as StandardMatchResult, e as StandardHandlerOptions, f as StandardHandler } from './server.gqRxT-yN.mjs';
2
+ import { b as AnyRouter, C as Context, R as Router } from './server.B4BGqy3Y.mjs';
3
+ import { i as StandardMatcher, h as StandardMatchResult, e as StandardHandlerOptions, f as StandardHandler } from './server.DBCUJijK.mjs';
4
4
  import { HTTPPath } from '@orpc/client';
5
5
  import { Value } from '@orpc/shared';
6
- import { T as TraverseContractProcedureCallbackOptions } from './server.DhJj-1X9.mjs';
6
+ import { T as TraverseContractProcedureCallbackOptions } from './server.DzV1hr3z.mjs';
7
7
 
8
8
  interface StandardRPCMatcherOptions {
9
9
  /**
@@ -2,7 +2,7 @@ import { HTTPPath, ORPCError } from '@orpc/client';
2
2
  import { Meta } from '@orpc/contract';
3
3
  import { Interceptor } from '@orpc/shared';
4
4
  import { StandardResponse, StandardLazyRequest } from '@orpc/standard-server';
5
- import { C as Context, R as Router, b as AnyRouter, A as AnyProcedure, d as ProcedureClientInterceptorOptions } from './server.CYNGeoCm.mjs';
5
+ import { C as Context, R as Router, b as AnyRouter, A as AnyProcedure, d as ProcedureClientInterceptorOptions } from './server.B4BGqy3Y.mjs';
6
6
 
7
7
  interface StandardHandlerPlugin<T extends Context> {
8
8
  order?: number;
@@ -1,5 +1,5 @@
1
- import { C as Context } from './server.CYNGeoCm.js';
2
- import { b as StandardHandleOptions } from './server.Bmh5xd4n.js';
1
+ import { C as Context } from './server.B4BGqy3Y.js';
2
+ import { b as StandardHandleOptions } from './server.DPIFWpxG.js';
3
3
 
4
4
  type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
5
5
  context?: T;
@@ -2,7 +2,7 @@ import { HTTPPath, ORPCError } from '@orpc/client';
2
2
  import { Meta } from '@orpc/contract';
3
3
  import { Interceptor } from '@orpc/shared';
4
4
  import { StandardResponse, StandardLazyRequest } from '@orpc/standard-server';
5
- import { C as Context, R as Router, b as AnyRouter, A as AnyProcedure, d as ProcedureClientInterceptorOptions } from './server.CYNGeoCm.js';
5
+ import { C as Context, R as Router, b as AnyRouter, A as AnyProcedure, d as ProcedureClientInterceptorOptions } from './server.B4BGqy3Y.js';
6
6
 
7
7
  interface StandardHandlerPlugin<T extends Context> {
8
8
  order?: number;
@@ -1,6 +1,6 @@
1
- import { isContractProcedure, ValidationError, mergePrefix, mergeErrorMap, enhanceRoute } from '@orpc/contract';
2
- import { resolveMaybeOptionalOptions, toArray, value, runWithSpan, intercept, isAsyncIteratorObject, asyncIteratorWithSpan } from '@orpc/shared';
3
- import { ORPCError, fallbackORPCErrorStatus, mapEventIterator } from '@orpc/client';
1
+ import { isContractProcedure, validateORPCError, ValidationError, mergePrefix, mergeErrorMap, enhanceRoute } from '@orpc/contract';
2
+ import { resolveMaybeOptionalOptions, toArray, value, runWithSpan, intercept, isAsyncIteratorObject, overlayProxy, asyncIteratorWithSpan } from '@orpc/shared';
3
+ import { ORPCError, mapEventIterator } from '@orpc/client';
4
4
  import { HibernationEventIterator } from '@orpc/standard-server';
5
5
 
6
6
  const LAZY_SYMBOL = Symbol("ORPC_LAZY_SYMBOL");
@@ -88,21 +88,6 @@ function createORPCErrorConstructorMap(errors) {
88
88
  });
89
89
  return proxy;
90
90
  }
91
- async function validateORPCError(map, error) {
92
- const { code, status, message, data, cause, defined } = error;
93
- const config = map?.[error.code];
94
- if (!config || fallbackORPCErrorStatus(error.code, config.status) !== error.status) {
95
- return defined ? new ORPCError(code, { defined: false, status, message, data, cause }) : error;
96
- }
97
- if (!config.data) {
98
- return defined ? error : new ORPCError(code, { defined: true, status, message, data, cause });
99
- }
100
- const validated = await config.data["~standard"].validate(error.data);
101
- if (validated.issues) {
102
- return defined ? new ORPCError(code, { defined: false, status, message, data, cause }) : error;
103
- }
104
- return new ORPCError(code, { defined: true, status, message, data: validated.value, cause });
105
- }
106
91
 
107
92
  function middlewareOutputFn(output) {
108
93
  return { output, context: {} };
@@ -147,7 +132,7 @@ function createProcedureClient(lazyableProcedure, ...rest) {
147
132
  if (output instanceof HibernationEventIterator) {
148
133
  return output;
149
134
  }
150
- return mapEventIterator(
135
+ return overlayProxy(output, mapEventIterator(
151
136
  asyncIteratorWithSpan(
152
137
  { name: "consume_event_iterator_output", signal: callerOptions?.signal },
153
138
  output
@@ -156,7 +141,7 @@ function createProcedureClient(lazyableProcedure, ...rest) {
156
141
  value: (v) => v,
157
142
  error: (e) => validateError(e)
158
143
  }
159
- );
144
+ ));
160
145
  }
161
146
  return output;
162
147
  } catch (e) {
@@ -179,7 +164,11 @@ async function validateInput(procedure, input) {
179
164
  data: {
180
165
  issues: result.issues
181
166
  },
182
- cause: new ValidationError({ message: "Input validation failed", issues: result.issues })
167
+ cause: new ValidationError({
168
+ message: "Input validation failed",
169
+ issues: result.issues,
170
+ data: input
171
+ })
183
172
  });
184
173
  }
185
174
  return result.value;
@@ -198,7 +187,11 @@ async function validateOutput(procedure, output) {
198
187
  if (result.issues) {
199
188
  throw new ORPCError("INTERNAL_SERVER_ERROR", {
200
189
  message: "Output validation failed",
201
- cause: new ValidationError({ message: "Output validation failed", issues: result.issues })
190
+ cause: new ValidationError({
191
+ message: "Output validation failed",
192
+ issues: result.issues,
193
+ data: output
194
+ })
202
195
  });
203
196
  }
204
197
  return result.value;
@@ -413,4 +406,4 @@ function call(procedure, input, ...rest) {
413
406
  return createProcedureClient(procedure, options)(input, options);
414
407
  }
415
408
 
416
- export { LAZY_SYMBOL as L, Procedure as P, createContractedProcedure as a, addMiddleware as b, createProcedureClient as c, isLazy as d, enhanceRouter as e, createAssertedLazyProcedure as f, getRouter as g, createORPCErrorConstructorMap as h, isProcedure as i, getLazyMeta as j, middlewareOutputFn as k, lazy as l, mergeCurrentContext as m, isStartWithMiddlewares as n, mergeMiddlewares as o, call as p, getHiddenRouterContract as q, createAccessibleLazyRouter as r, setHiddenRouterContract as s, traverseContractProcedures as t, unlazy as u, validateORPCError as v, resolveContractProcedures as w, unlazyRouter as x };
409
+ export { LAZY_SYMBOL as L, Procedure as P, createContractedProcedure as a, addMiddleware as b, createProcedureClient as c, isLazy as d, enhanceRouter as e, createAssertedLazyProcedure as f, getRouter as g, createORPCErrorConstructorMap as h, isProcedure as i, getLazyMeta as j, middlewareOutputFn as k, lazy as l, mergeCurrentContext as m, isStartWithMiddlewares as n, mergeMiddlewares as o, call as p, getHiddenRouterContract as q, createAccessibleLazyRouter as r, setHiddenRouterContract as s, traverseContractProcedures as t, unlazy as u, resolveContractProcedures as v, unlazyRouter as w };
@@ -1,5 +1,5 @@
1
1
  import { ErrorMap, EnhanceRouteOptions, MergedErrorMap, AnyContractRouter, AnyContractProcedure } from '@orpc/contract';
2
- import { a as AnyMiddleware, L as Lazyable, b as AnyRouter, C as Context, c as Lazy, A as AnyProcedure, P as Procedure, M as MergedInitialContext } from './server.CYNGeoCm.mjs';
2
+ import { a as AnyMiddleware, L as Lazyable, b as AnyRouter, C as Context, c as Lazy, A as AnyProcedure, P as Procedure, M as MergedInitialContext } from './server.B4BGqy3Y.mjs';
3
3
 
4
4
  declare function getRouter<T extends Lazyable<AnyRouter | undefined>>(router: T, path: readonly string[]): T extends Lazy<any> ? Lazy<AnyRouter | undefined> : Lazyable<AnyRouter | undefined>;
5
5
  type AccessibleLazyRouter<T extends Lazyable<AnyRouter | undefined>> = T extends Lazy<infer U extends AnyRouter | undefined | Lazy<AnyRouter | undefined>> ? AccessibleLazyRouter<U> : T extends AnyProcedure | undefined ? Lazy<T> : Lazy<T> & {
@@ -3,6 +3,9 @@ import { ORPCError, fallbackContractConfig } from '@orpc/contract';
3
3
  const STRICT_GET_METHOD_PLUGIN_IS_GET_METHOD_CONTEXT_SYMBOL = Symbol("STRICT_GET_METHOD_PLUGIN_IS_GET_METHOD_CONTEXT");
4
4
  class StrictGetMethodPlugin {
5
5
  error;
6
+ /**
7
+ * make sure execute before batch plugin to get real method
8
+ */
6
9
  order = 7e6;
7
10
  constructor(options = {}) {
8
11
  this.error = options.error ?? new ORPCError("METHOD_NOT_SUPPORTED");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orpc/server",
3
3
  "type": "module",
4
- "version": "0.0.0-next.150aa84",
4
+ "version": "0.0.0-next.158dbb5",
5
5
  "license": "MIT",
6
6
  "homepage": "https://orpc.unnoq.com",
7
7
  "repository": {
@@ -54,6 +54,11 @@
54
54
  "import": "./dist/adapters/node/index.mjs",
55
55
  "default": "./dist/adapters/node/index.mjs"
56
56
  },
57
+ "./fastify": {
58
+ "types": "./dist/adapters/fastify/index.d.mts",
59
+ "import": "./dist/adapters/fastify/index.mjs",
60
+ "default": "./dist/adapters/fastify/index.mjs"
61
+ },
57
62
  "./aws-lambda": {
58
63
  "types": "./dist/adapters/aws-lambda/index.d.mts",
59
64
  "import": "./dist/adapters/aws-lambda/index.mjs",
@@ -102,22 +107,26 @@
102
107
  },
103
108
  "dependencies": {
104
109
  "cookie": "^1.0.2",
105
- "@orpc/client": "0.0.0-next.150aa84",
106
- "@orpc/interop": "0.0.0-next.150aa84",
107
- "@orpc/shared": "0.0.0-next.150aa84",
108
- "@orpc/standard-server-aws-lambda": "0.0.0-next.150aa84",
109
- "@orpc/standard-server": "0.0.0-next.150aa84",
110
- "@orpc/standard-server-fetch": "0.0.0-next.150aa84",
111
- "@orpc/standard-server-node": "0.0.0-next.150aa84",
112
- "@orpc/contract": "0.0.0-next.150aa84",
113
- "@orpc/standard-server-peer": "0.0.0-next.150aa84"
110
+ "@orpc/client": "0.0.0-next.158dbb5",
111
+ "@orpc/contract": "0.0.0-next.158dbb5",
112
+ "@orpc/interop": "0.0.0-next.158dbb5",
113
+ "@orpc/standard-server": "0.0.0-next.158dbb5",
114
+ "@orpc/standard-server-aws-lambda": "0.0.0-next.158dbb5",
115
+ "@orpc/standard-server-fastify": "0.0.0-next.158dbb5",
116
+ "@orpc/standard-server-fetch": "0.0.0-next.158dbb5",
117
+ "@orpc/standard-server-node": "0.0.0-next.158dbb5",
118
+ "@orpc/shared": "0.0.0-next.158dbb5",
119
+ "@orpc/standard-server-peer": "0.0.0-next.158dbb5"
114
120
  },
115
121
  "devDependencies": {
122
+ "@tanstack/router-core": "^1.133.20",
116
123
  "@types/ws": "^8.18.1",
117
124
  "crossws": "^0.4.1",
118
- "next": "^15.5.0",
125
+ "fastify": "^5.6.1",
126
+ "next": "^16.0.0",
119
127
  "supertest": "^7.1.4",
120
- "ws": "^8.18.3"
128
+ "ws": "^8.18.3",
129
+ "zod": "^4.1.12"
121
130
  },
122
131
  "scripts": {
123
132
  "build": "unbuild",