refactor: ♻️ normalize avatax errors
This commit is contained in:
parent
24c31d733a
commit
20e8ed4086
4 changed files with 32 additions and 3 deletions
17
apps/taxes/src/modules/avatax/avatax-error-normalizer.ts
Normal file
17
apps/taxes/src/modules/avatax/avatax-error-normalizer.ts
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ import { AvataxConfig } from "../avatax-connection-schema";
|
||||||
import { ClientLogger } from "../../logs/client-logger";
|
import { ClientLogger } from "../../logs/client-logger";
|
||||||
import { AvataxCalculateTaxesPayloadService } from "./avatax-calculate-taxes-payload.service";
|
import { AvataxCalculateTaxesPayloadService } from "./avatax-calculate-taxes-payload.service";
|
||||||
import { AvataxCalculateTaxesResponseTransformer } from "./avatax-calculate-taxes-response-transformer";
|
import { AvataxCalculateTaxesResponseTransformer } from "./avatax-calculate-taxes-response-transformer";
|
||||||
|
import { AvataxErrorNormalizer } from "../avatax-error-normalizer";
|
||||||
|
|
||||||
export const SHIPPING_ITEM_CODE = "Shipping";
|
export const SHIPPING_ITEM_CODE = "Shipping";
|
||||||
|
|
||||||
|
@ -67,6 +68,8 @@ export class AvataxCalculateTaxesAdapter
|
||||||
|
|
||||||
return transformedResponse;
|
return transformedResponse;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
const errorNormalizer = new AvataxErrorNormalizer();
|
||||||
|
|
||||||
this.clientLogger.push({
|
this.clientLogger.push({
|
||||||
event: "[CalculateTaxes] createTransaction",
|
event: "[CalculateTaxes] createTransaction",
|
||||||
status: "error",
|
status: "error",
|
||||||
|
@ -75,7 +78,7 @@ export class AvataxCalculateTaxesAdapter
|
||||||
output: error,
|
output: error,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
throw error;
|
throw errorNormalizer.normalize(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import { AvataxClient, VoidTransactionArgs } from "../avatax-client";
|
||||||
import { AvataxConfig } from "../avatax-connection-schema";
|
import { AvataxConfig } from "../avatax-connection-schema";
|
||||||
import { ClientLogger } from "../../logs/client-logger";
|
import { ClientLogger } from "../../logs/client-logger";
|
||||||
import { AvataxOrderCancelledPayloadTransformer } from "./avatax-order-cancelled-payload-transformer";
|
import { AvataxOrderCancelledPayloadTransformer } from "./avatax-order-cancelled-payload-transformer";
|
||||||
|
import { AvataxErrorNormalizer } from "../avatax-error-normalizer";
|
||||||
|
|
||||||
export type AvataxOrderCancelledTarget = VoidTransactionArgs;
|
export type AvataxOrderCancelledTarget = VoidTransactionArgs;
|
||||||
|
|
||||||
|
@ -43,6 +44,8 @@ export class AvataxOrderCancelledAdapter implements WebhookAdapter<OrderCancelle
|
||||||
|
|
||||||
this.logger.debug(`Successfully voided the transaction of id: ${target.transactionCode}`);
|
this.logger.debug(`Successfully voided the transaction of id: ${target.transactionCode}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
const errorNormalizer = new AvataxErrorNormalizer();
|
||||||
|
|
||||||
this.clientLogger.push({
|
this.clientLogger.push({
|
||||||
event: "[OrderCancelled] voidTransaction",
|
event: "[OrderCancelled] voidTransaction",
|
||||||
status: "error",
|
status: "error",
|
||||||
|
@ -51,6 +54,8 @@ export class AvataxOrderCancelledAdapter implements WebhookAdapter<OrderCancelle
|
||||||
output: error,
|
output: error,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
throw errorNormalizer.normalize(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
import { AuthData } from "@saleor/app-sdk/APL";
|
import { AuthData } from "@saleor/app-sdk/APL";
|
||||||
import { OrderConfirmedSubscriptionFragment } from "../../../../generated/graphql";
|
import { OrderConfirmedSubscriptionFragment } from "../../../../generated/graphql";
|
||||||
import { Logger, createLogger } from "../../../lib/logger";
|
import { Logger, createLogger } from "../../../lib/logger";
|
||||||
|
import { ClientLogger } from "../../logs/client-logger";
|
||||||
import { CreateOrderResponse } from "../../taxes/tax-provider-webhook";
|
import { CreateOrderResponse } from "../../taxes/tax-provider-webhook";
|
||||||
import { WebhookAdapter } from "../../taxes/tax-webhook-adapter";
|
import { WebhookAdapter } from "../../taxes/tax-webhook-adapter";
|
||||||
import { AvataxClient } from "../avatax-client";
|
import { AvataxClient } from "../avatax-client";
|
||||||
import { AvataxConfig } from "../avatax-connection-schema";
|
import { AvataxConfig } from "../avatax-connection-schema";
|
||||||
import { ClientLogger } from "../../logs/client-logger";
|
|
||||||
import { AvataxOrderConfirmedPayloadService } from "./avatax-order-confirmed-payload.service";
|
import { AvataxOrderConfirmedPayloadService } from "./avatax-order-confirmed-payload.service";
|
||||||
import { AvataxOrderConfirmedResponseTransformer } from "./avatax-order-confirmed-response-transformer";
|
import { AvataxOrderConfirmedResponseTransformer } from "./avatax-order-confirmed-response-transformer";
|
||||||
|
import { AvataxErrorNormalizer } from "../avatax-error-normalizer";
|
||||||
|
|
||||||
type AvataxOrderConfirmedPayload = {
|
type AvataxOrderConfirmedPayload = {
|
||||||
order: OrderConfirmedSubscriptionFragment;
|
order: OrderConfirmedSubscriptionFragment;
|
||||||
|
@ -68,6 +69,8 @@ export class AvataxOrderConfirmedAdapter
|
||||||
|
|
||||||
return transformedResponse;
|
return transformedResponse;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
const errorNormalizer = new AvataxErrorNormalizer();
|
||||||
|
|
||||||
this.clientLogger.push({
|
this.clientLogger.push({
|
||||||
event: "[OrderConfirmed] createTransaction",
|
event: "[OrderConfirmed] createTransaction",
|
||||||
status: "error",
|
status: "error",
|
||||||
|
@ -76,7 +79,8 @@ export class AvataxOrderConfirmedAdapter
|
||||||
output: error,
|
output: error,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
throw error;
|
|
||||||
|
throw errorNormalizer.normalize(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue