Skip to content

Commit 9a0ba87

Browse files
authored
add error register in rpc handler (#4356)
* add error register in rpc handler * fix * Create empty-pugs-prove.md * fixes * Update packages/blitz/src/errors.ts
1 parent c80ce51 commit 9a0ba87

File tree

4 files changed

+18
-3
lines changed

4 files changed

+18
-3
lines changed

.changeset/empty-pugs-prove.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@blitzjs/rpc": patch
3+
"blitz": patch
4+
---
5+
6+
fix: make sure blitz superjson custom error registers in rpc handler

packages/blitz-rpc/src/index-server.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {assert, Ctx, ResolverConfig} from "blitz"
1+
import {assert, Ctx, ResolverConfig, registerBlitzErrorClasses} from "blitz"
22
import {NextApiRequest, NextApiResponse} from "next"
33
import {resolve} from "path"
44
import {deserialize, parse, serialize as superjsonSerialize} from "superjson"
@@ -239,6 +239,7 @@ interface RpcConfig {
239239
}
240240

241241
export function rpcHandler(config?: RpcConfig) {
242+
registerBlitzErrorClasses()
242243
return async function handleRpcRequest(req: NextApiRequest, res: NextApiResponse, ctx: Ctx) {
243244
const resolverMap = await getResolverMap()
244245
assert(resolverMap, "No query or mutation resolvers found")
@@ -362,6 +363,7 @@ export function rpcHandler(config?: RpcConfig) {
362363
type Params = Record<string, unknown>
363364

364365
export function rpcAppHandler(config?: RpcConfig) {
366+
registerBlitzErrorClasses()
365367
async function handleRpcRequest(req: Request, context: {params: Params}, ctx?: Ctx) {
366368
const session = ctx?.session
367369
const resolverMap = await getResolverMap()

packages/blitz/src/errors.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,10 @@ export class PaginationArgumentError extends Error {
8989
}
9090
}
9191

92-
if (isNotInUserTestEnvironment() && !globalThis._BLITZ_ERROR_CLASS_REGISTERED) {
92+
let _blitzErrorClassRegistered = false
93+
94+
export function registerBlitzErrorClasses() {
95+
if (_blitzErrorClassRegistered || !isNotInUserTestEnvironment()) return
9396
SuperJson.registerClass(AuthenticationError, {
9497
identifier: "BlitzAuthenticationError",
9598
allowProps: errorProps,
@@ -125,5 +128,7 @@ if (isNotInUserTestEnvironment() && !globalThis._BLITZ_ERROR_CLASS_REGISTERED) {
125128
allowProps: errorProps,
126129
})
127130

128-
globalThis._BLITZ_ERROR_CLASS_REGISTERED = true
131+
_blitzErrorClassRegistered = true
129132
}
133+
134+
registerBlitzErrorClasses()

packages/blitz/src/index-browser.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
PaginationArgumentError,
99
RedirectError,
1010
OAuthError,
11+
registerBlitzErrorClasses,
1112
} from "./errors"
1213
import type {EventHooks, MiddlewareHooks} from "./types"
1314
export {
@@ -18,6 +19,7 @@ export {
1819
PaginationArgumentError,
1920
RedirectError,
2021
OAuthError,
22+
registerBlitzErrorClasses,
2123
}
2224
export * from "./utils/enhance-prisma"
2325

0 commit comments

Comments
 (0)