From 755e541a2d2cd33f19d98d04e72180a05979ea69 Mon Sep 17 00:00:00 2001 From: John Yeo Date: Fri, 21 Nov 2025 08:09:13 +0000 Subject: [PATCH] chore: skipping recase errors in express middleware --- server/src/external/redis/redisUtils.ts | 3 +-- .../upgradeFlow/updateStripeSub2.ts | 9 ++++++--- server/src/utils/routerUtils/expressErrorSkip.ts | 14 +++++++++++++- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/server/src/external/redis/redisUtils.ts b/server/src/external/redis/redisUtils.ts index fc968ab89..6cfa1537a 100644 --- a/server/src/external/redis/redisUtils.ts +++ b/server/src/external/redis/redisUtils.ts @@ -1,5 +1,4 @@ -import { ErrCode } from "@autumn/shared"; -import RecaseError from "@/utils/errorUtils.js"; +import { ErrCode, RecaseError } from "@autumn/shared"; import { redis } from "./initRedis.js"; export const handleAttachRaceCondition = async ({ diff --git a/server/src/internal/customers/attach/attachFunctions/upgradeFlow/updateStripeSub2.ts b/server/src/internal/customers/attach/attachFunctions/upgradeFlow/updateStripeSub2.ts index 0ad86bf35..e037d2050 100644 --- a/server/src/internal/customers/attach/attachFunctions/upgradeFlow/updateStripeSub2.ts +++ b/server/src/internal/customers/attach/attachFunctions/upgradeFlow/updateStripeSub2.ts @@ -1,11 +1,14 @@ -import { type AttachConfig, ProrationBehavior } from "@autumn/shared"; +import { + type AttachConfig, + ProrationBehavior, + RecaseError, +} from "@autumn/shared"; import type Stripe from "stripe"; import { sanitizeSubItems } from "@/external/stripe/stripeSubUtils/getStripeSubItems.js"; import { createProrationInvoice } from "@/external/stripe/stripeSubUtils/updateStripeSub/createProrationinvoice.js"; import type { AttachParams } from "@/internal/customers/cusProducts/AttachParams.js"; import { freeTrialToStripeTimestamp } from "@/internal/products/free-trials/freeTrialUtils.js"; import { SubService } from "@/internal/subscriptions/SubService.js"; -import RecaseError from "@/utils/errorUtils.js"; import { nullish } from "@/utils/genUtils.js"; import type { ItemSet } from "@/utils/models/ItemSet.js"; import type { ExtendedRequest } from "@/utils/models/Request.js"; @@ -102,7 +105,7 @@ export const updateStripeSub2 = async ({ const { curMainProduct } = attachParamToCusProducts({ attachParams }); // 2. Create prorations for single use items - const { invoiceItems, cusEntIds } = await createUsageInvoiceItems({ + const { cusEntIds } = await createUsageInvoiceItems({ db, attachParams, cusProduct: curMainProduct!, diff --git a/server/src/utils/routerUtils/expressErrorSkip.ts b/server/src/utils/routerUtils/expressErrorSkip.ts index 76125186f..0a9caf4a4 100644 --- a/server/src/utils/routerUtils/expressErrorSkip.ts +++ b/server/src/utils/routerUtils/expressErrorSkip.ts @@ -1,4 +1,8 @@ -import { ErrCode, ProductNotFoundError } from "@autumn/shared"; +import { + ErrCode, + ProductNotFoundError, + RecaseError as SharedRecaseError, +} from "@autumn/shared"; import Stripe from "stripe"; import RecaseError from "../errorUtils.js"; @@ -35,6 +39,14 @@ export const handleExpressErrorSkip = ({ }) => { const originalUrl = req.originalUrl; + if (error instanceof SharedRecaseError) { + req.logger.warn(`${error.message}, path: ${originalUrl}`); + return res.status(error.statusCode).json({ + message: error.message, + code: error.code, + }); + } + // Handle RecaseError with EntityNotFound code if (error instanceof RecaseError) { if (error.code === ErrCode.EntityNotFound) {