diff --git a/apps/taxes/src/modules/avatax/avatax-error-normalizer.ts b/apps/taxes/src/modules/avatax/avatax-error-normalizer.ts new file mode 100644 index 0000000..afa5ab6 --- /dev/null +++ b/apps/taxes/src/modules/avatax/avatax-error-normalizer.ts @@ -0,0 +1,17 @@ +import { createLogger } from "../../lib/logger"; +import { AvalaraError } from "avatax/lib/AvaTaxClient"; +import { TaxExternalError, TaxUnexpectedError } from "../taxes/tax-error"; + +export class AvataxErrorNormalizer { + private logger = createLogger({ name: "AvataxErrorNormalizer" }); + + normalize(error: unknown) { + if (error instanceof AvalaraError) { + this.logger.debug(error.stack, "AvalaraError occurred"); + + return new TaxExternalError(error.message); + } + + return TaxUnexpectedError.normalize(error); + } +} diff --git a/apps/taxes/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.ts b/apps/taxes/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.ts index 9b98c47..bb3dd29 100644 --- a/apps/taxes/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.ts +++ b/apps/taxes/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.ts @@ -8,6 +8,7 @@ import { AvataxConfig } from "../avatax-connection-schema"; import { ClientLogger } from "../../logs/client-logger"; import { AvataxCalculateTaxesPayloadService } from "./avatax-calculate-taxes-payload.service"; import { AvataxCalculateTaxesResponseTransformer } from "./avatax-calculate-taxes-response-transformer"; +import { AvataxErrorNormalizer } from "../avatax-error-normalizer"; export const SHIPPING_ITEM_CODE = "Shipping"; @@ -67,6 +68,8 @@ export class AvataxCalculateTaxesAdapter return transformedResponse; } catch (error) { + const errorNormalizer = new AvataxErrorNormalizer(); + this.clientLogger.push({ event: "[CalculateTaxes] createTransaction", status: "error", @@ -75,7 +78,7 @@ export class AvataxCalculateTaxesAdapter output: error, }, }); - throw error; + throw errorNormalizer.normalize(error); } } } diff --git a/apps/taxes/src/modules/avatax/order-cancelled/avatax-order-cancelled-adapter.ts b/apps/taxes/src/modules/avatax/order-cancelled/avatax-order-cancelled-adapter.ts index 47eca4b..0344ce6 100644 --- a/apps/taxes/src/modules/avatax/order-cancelled/avatax-order-cancelled-adapter.ts +++ b/apps/taxes/src/modules/avatax/order-cancelled/avatax-order-cancelled-adapter.ts @@ -5,6 +5,7 @@ import { AvataxClient, VoidTransactionArgs } from "../avatax-client"; import { AvataxConfig } from "../avatax-connection-schema"; import { ClientLogger } from "../../logs/client-logger"; import { AvataxOrderCancelledPayloadTransformer } from "./avatax-order-cancelled-payload-transformer"; +import { AvataxErrorNormalizer } from "../avatax-error-normalizer"; export type AvataxOrderCancelledTarget = VoidTransactionArgs; @@ -43,6 +44,8 @@ export class AvataxOrderCancelledAdapter implements WebhookAdapter