diff --git a/apps/taxes/src/modules/taxjar/calculate-taxes/taxjar-calculate-taxes-adapter.ts b/apps/taxes/src/modules/taxjar/calculate-taxes/taxjar-calculate-taxes-adapter.ts index ecd2651..9034ca3 100644 --- a/apps/taxes/src/modules/taxjar/calculate-taxes/taxjar-calculate-taxes-adapter.ts +++ b/apps/taxes/src/modules/taxjar/calculate-taxes/taxjar-calculate-taxes-adapter.ts @@ -8,6 +8,7 @@ import { TaxJarConfig } from "../taxjar-connection-schema"; import { TaxJarCalculateTaxesPayloadService } from "./taxjar-calculate-taxes-payload-service"; import { TaxJarCalculateTaxesResponseTransformer } from "./taxjar-calculate-taxes-response-transformer"; import { ClientLogger } from "../../logs/client-logger"; +import { TaxJarErrorNormalizer } from "../taxjar-error-normalizer"; export type TaxJarCalculateTaxesPayload = { taxBase: TaxBaseFragment; @@ -70,6 +71,8 @@ export class TaxJarCalculateTaxesAdapter return transformedResponse; } catch (error) { + const errorNormalizer = new TaxJarErrorNormalizer(); + this.clientLogger.push({ event: "[CalculateTaxes] fetchTaxForOrder", status: "error", @@ -78,7 +81,8 @@ export class TaxJarCalculateTaxesAdapter output: error, }, }); - throw error; + + throw errorNormalizer.normalize(error); } } } diff --git a/apps/taxes/src/modules/taxjar/order-confirmed/taxjar-order-confirmed-adapter.ts b/apps/taxes/src/modules/taxjar/order-confirmed/taxjar-order-confirmed-adapter.ts index 08d047f..95e279f 100644 --- a/apps/taxes/src/modules/taxjar/order-confirmed/taxjar-order-confirmed-adapter.ts +++ b/apps/taxes/src/modules/taxjar/order-confirmed/taxjar-order-confirmed-adapter.ts @@ -8,6 +8,7 @@ import { TaxJarConfig } from "../taxjar-connection-schema"; import { TaxJarOrderConfirmedPayloadService } from "./taxjar-order-confirmed-payload.service"; import { TaxJarOrderConfirmedResponseTransformer } from "./taxjar-order-confirmed-response-transformer"; import { ClientLogger } from "../../logs/client-logger"; +import { TaxJarErrorNormalizer } from "../taxjar-error-normalizer"; export type TaxJarOrderConfirmedPayload = { order: OrderConfirmedSubscriptionFragment; @@ -67,6 +68,8 @@ export class TaxJarOrderConfirmedAdapter return transformedResponse; } catch (error) { + const errorNormalizer = new TaxJarErrorNormalizer(); + this.clientLogger.push({ event: "[OrderConfirmed] createOrder", status: "error", @@ -75,7 +78,7 @@ export class TaxJarOrderConfirmedAdapter output: error, }, }); - throw error; + throw errorNormalizer.normalize(error); } } } diff --git a/apps/taxes/src/modules/taxjar/taxjar-error-normalizer.ts b/apps/taxes/src/modules/taxjar/taxjar-error-normalizer.ts new file mode 100644 index 0000000..5479aa2 --- /dev/null +++ b/apps/taxes/src/modules/taxjar/taxjar-error-normalizer.ts @@ -0,0 +1,17 @@ +import { TaxjarError } from "taxjar/dist/util/types"; +import { createLogger } from "../../lib/logger"; +import { TaxExternalError, TaxUnexpectedError } from "../taxes/tax-error"; + +export class TaxJarErrorNormalizer { + private logger = createLogger({ name: "TaxJarErrorNormalizer" }); + + normalize(error: unknown) { + if (error instanceof TaxjarError) { + this.logger.debug(error.stack, "TaxjarError occurred"); + + return new TaxExternalError(error.message); + } + + return TaxUnexpectedError.normalize(error); + } +}