@shipengine/alchemy 5.0.30 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { CustomThemeData, Theme } from "@shipengine/giger-theme";
2
- import { ShipEngineProps } from "@shipengine/react-api";
2
+ import { ShipEngineAPIConfig, ShipEngineProps } from "@shipengine/react-api";
3
3
  export type AlchemyErrorHandler = (err: Error) => void;
4
4
  export type AlchemyContextValue = {
5
5
  baseURL: string;
@@ -12,17 +12,15 @@ export type AlchemyContextValue = {
12
12
  theme: Theme;
13
13
  };
14
14
  export declare const AlchemyContext: import("react").Context<AlchemyContextValue | undefined>;
15
- export interface AlchemyProviderProps {
16
- baseURL?: string;
15
+ export type AlchemyProviderProps = {
17
16
  cdnURL?: string;
18
17
  children: React.ReactNode;
19
18
  container?: HTMLElement;
20
- getToken: ShipEngineProps["getToken"];
21
19
  locale?: string;
22
20
  onError?: AlchemyErrorHandler;
23
21
  /** Scope of the Alchemy Provider. Can be null to not specify a specific element */
24
22
  scope?: string | null;
25
23
  themeConfig?: CustomThemeData;
26
- }
27
- export declare const AlchemyProvider: ({ baseURL, cdnURL, container, children, getToken, locale: localeProp, onError, scope, themeConfig, }: AlchemyProviderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
24
+ } & ShipEngineAPIConfig;
25
+ export declare const AlchemyProvider: ({ baseURL, cdnURL, container, children, getToken, locale: localeProp, onError, scope, themeConfig, onApiError, headers, }: AlchemyProviderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
28
26
  export declare const useAlchemy: () => AlchemyContextValue;
package/index.js CHANGED
@@ -11005,6 +11005,21 @@ class AddressesAPI {
11005
11005
 
11006
11006
  const isCodedErrors = (errs) => Array.isArray(errs) && errs.every((err) => isCodedError(err));
11007
11007
  const isCodedError = (err) => !!err.errorCode;
11008
+ const isDataCodedErrors = (data) => !!data.errors && isCodedErrors(data.errors);
11009
+ const parseError = (err) => {
11010
+ var _a;
11011
+ if (!((_a = err.response) == null ? void 0 : _a.data))
11012
+ return [new CodedError(err.message)];
11013
+ if (isDataCodedErrors(err.response.data)) {
11014
+ return err.response.data.errors.map((err2) => CodedError.fromObject(err2));
11015
+ } else if (isCodedErrors(err.response.data)) {
11016
+ return err.response.data.map((err2) => CodedError.fromObject(err2));
11017
+ } else if (isCodedError(err.response.data)) {
11018
+ return [CodedError.fromObject(err.response.data)];
11019
+ } else {
11020
+ return [new CodedError(err.message)];
11021
+ }
11022
+ };
11008
11023
 
11009
11024
  var axiosExports$1 = {};
11010
11025
  var axios$3 = {
@@ -16570,6 +16585,7 @@ var __async$y = (__this, __arguments, generator) => {
16570
16585
  });
16571
16586
  };
16572
16587
  const logger$1 = E({
16588
+ level: process.env.NODE_ENV === "production" ? "fatal" : "info",
16573
16589
  name: "shipengine-api",
16574
16590
  serializers: __spreadProps$2(__spreadValues$4({}, k), {
16575
16591
  req: (req) => ({
@@ -16591,9 +16607,8 @@ const logger$1 = E({
16591
16607
  }
16592
16608
  ]
16593
16609
  });
16594
- const isDataCodedErrors = (data) => !!data.errors && isCodedErrors(data.errors);
16595
16610
  class ShipEngineAPI {
16596
- constructor(token, { baseURL, headers, getToken }) {
16611
+ constructor(token, { baseURL, headers, getToken, onApiError }) {
16597
16612
  const client = axios.create({
16598
16613
  baseURL,
16599
16614
  headers: __spreadProps$2(__spreadValues$4({}, headers), {
@@ -16644,7 +16659,7 @@ class ShipEngineAPI {
16644
16659
  return res;
16645
16660
  },
16646
16661
  (err) => __async$y(this, null, function* () {
16647
- var _a, _b, _c, _d, _e, _f, _g;
16662
+ var _a, _b, _c, _d, _e, _f;
16648
16663
  logger$1.error(
16649
16664
  { err, req: err.config, res: err.response },
16650
16665
  "%s %s: %s %s - %s",
@@ -16663,22 +16678,9 @@ class ShipEngineAPI {
16663
16678
  }
16664
16679
  return axios(config);
16665
16680
  }
16666
- if ((_g = err.response) == null ? void 0 : _g.data) {
16667
- if (isDataCodedErrors(err.response.data)) {
16668
- return Promise.reject(
16669
- err.response.data.errors.map((err2) => CodedError.fromObject(err2))
16670
- );
16671
- }
16672
- if (isCodedErrors(err.response.data)) {
16673
- return Promise.reject(err.response.data.map((err2) => CodedError.fromObject(err2)));
16674
- }
16675
- if (isCodedError(err.response.data)) {
16676
- return Promise.reject([CodedError.fromObject(err.response.data)]);
16677
- }
16678
- return Promise.reject([new CodedError(err.response.data)]);
16679
- } else {
16680
- return Promise.reject([new CodedError(err.message)]);
16681
- }
16681
+ const codedErrors = parseError(err);
16682
+ onApiError == null ? void 0 : onApiError(codedErrors, err);
16683
+ return Promise.reject(codedErrors);
16682
16684
  })
16683
16685
  );
16684
16686
  this.client = client;
@@ -16842,21 +16844,29 @@ class ShipEngineAPI {
16842
16844
  }
16843
16845
 
16844
16846
  const ShipEngineContext = React.createContext(void 0);
16845
- const ShipEngine = ({ baseURL, children, headers, getToken }) => {
16847
+ const ShipEngine = ({
16848
+ baseURL,
16849
+ children,
16850
+ headers,
16851
+ getToken,
16852
+ onApiError
16853
+ }) => {
16846
16854
  const [client, setClient] = React.useState(() => {
16847
16855
  const token = getToken();
16848
16856
  if (typeof token === "string")
16849
16857
  return new ShipEngineAPI(token, {
16850
16858
  baseURL,
16851
16859
  getToken,
16852
- headers: headers != null ? headers : {}
16860
+ headers: headers != null ? headers : {},
16861
+ onApiError
16853
16862
  });
16854
16863
  token.then(
16855
16864
  (t) => setClient(
16856
16865
  new ShipEngineAPI(t, {
16857
16866
  baseURL,
16858
16867
  getToken,
16859
- headers: headers != null ? headers : {}
16868
+ headers: headers != null ? headers : {},
16869
+ onApiError
16860
16870
  })
16861
16871
  )
16862
16872
  );
@@ -16892,7 +16902,7 @@ const delay = (ms) => new Promise((resolve) => {
16892
16902
  setTimeout(() => resolve(true), ms);
16893
16903
  });
16894
16904
 
16895
- const onError = (errors) => errors.forEach(console.log);
16905
+ const onError = (_errors) => _default();
16896
16906
 
16897
16907
  var __defProp$3 = Object.defineProperty;
16898
16908
  var __defProps$1 = Object.defineProperties;
@@ -19056,7 +19066,9 @@ const AlchemyProvider = ({
19056
19066
  locale: localeProp,
19057
19067
  onError = _default,
19058
19068
  scope = "lmnt",
19059
- themeConfig
19069
+ themeConfig,
19070
+ onApiError,
19071
+ headers
19060
19072
  }) => {
19061
19073
  const locale = localeProp || getDefaultLocale();
19062
19074
  const resolveIcon = useLoadIcons({ cdnURL });
@@ -19078,7 +19090,7 @@ const AlchemyProvider = ({
19078
19090
  cdnUrl: cdnURL,
19079
19091
  resolveIcon,
19080
19092
  theme,
19081
- children: /* @__PURE__ */ jsx(ShipEngine, { baseURL, getToken, children })
19093
+ children: /* @__PURE__ */ jsx(ShipEngine, { baseURL, headers, getToken, onApiError, children })
19082
19094
  }
19083
19095
  ) });
19084
19096
  };
@@ -19794,8 +19806,10 @@ exports.getEmotionCache = getEmotionCache;
19794
19806
  exports.getEndUserIpAddress = getEndUserIpAddress;
19795
19807
  exports.isCodedError = isCodedError;
19796
19808
  exports.isCodedErrors = isCodedErrors;
19809
+ exports.isDataCodedErrors = isDataCodedErrors;
19797
19810
  exports.logger = logger;
19798
19811
  exports.onError = onError;
19812
+ exports.parseError = parseError;
19799
19813
  exports.retryUntil = retryUntil;
19800
19814
  exports.useAddFunds = useAddFunds;
19801
19815
  exports.useAlchemy = useAlchemy;
package/index.mjs CHANGED
@@ -10983,6 +10983,21 @@ class AddressesAPI {
10983
10983
 
10984
10984
  const isCodedErrors = (errs) => Array.isArray(errs) && errs.every((err) => isCodedError(err));
10985
10985
  const isCodedError = (err) => !!err.errorCode;
10986
+ const isDataCodedErrors = (data) => !!data.errors && isCodedErrors(data.errors);
10987
+ const parseError = (err) => {
10988
+ var _a;
10989
+ if (!((_a = err.response) == null ? void 0 : _a.data))
10990
+ return [new CodedError(err.message)];
10991
+ if (isDataCodedErrors(err.response.data)) {
10992
+ return err.response.data.errors.map((err2) => CodedError.fromObject(err2));
10993
+ } else if (isCodedErrors(err.response.data)) {
10994
+ return err.response.data.map((err2) => CodedError.fromObject(err2));
10995
+ } else if (isCodedError(err.response.data)) {
10996
+ return [CodedError.fromObject(err.response.data)];
10997
+ } else {
10998
+ return [new CodedError(err.message)];
10999
+ }
11000
+ };
10986
11001
 
10987
11002
  var axiosExports$1 = {};
10988
11003
  var axios$3 = {
@@ -16548,6 +16563,7 @@ var __async$y = (__this, __arguments, generator) => {
16548
16563
  });
16549
16564
  };
16550
16565
  const logger$1 = E({
16566
+ level: process.env.NODE_ENV === "production" ? "fatal" : "info",
16551
16567
  name: "shipengine-api",
16552
16568
  serializers: __spreadProps$2(__spreadValues$4({}, k), {
16553
16569
  req: (req) => ({
@@ -16569,9 +16585,8 @@ const logger$1 = E({
16569
16585
  }
16570
16586
  ]
16571
16587
  });
16572
- const isDataCodedErrors = (data) => !!data.errors && isCodedErrors(data.errors);
16573
16588
  class ShipEngineAPI {
16574
- constructor(token, { baseURL, headers, getToken }) {
16589
+ constructor(token, { baseURL, headers, getToken, onApiError }) {
16575
16590
  const client = axios.create({
16576
16591
  baseURL,
16577
16592
  headers: __spreadProps$2(__spreadValues$4({}, headers), {
@@ -16622,7 +16637,7 @@ class ShipEngineAPI {
16622
16637
  return res;
16623
16638
  },
16624
16639
  (err) => __async$y(this, null, function* () {
16625
- var _a, _b, _c, _d, _e, _f, _g;
16640
+ var _a, _b, _c, _d, _e, _f;
16626
16641
  logger$1.error(
16627
16642
  { err, req: err.config, res: err.response },
16628
16643
  "%s %s: %s %s - %s",
@@ -16641,22 +16656,9 @@ class ShipEngineAPI {
16641
16656
  }
16642
16657
  return axios(config);
16643
16658
  }
16644
- if ((_g = err.response) == null ? void 0 : _g.data) {
16645
- if (isDataCodedErrors(err.response.data)) {
16646
- return Promise.reject(
16647
- err.response.data.errors.map((err2) => CodedError.fromObject(err2))
16648
- );
16649
- }
16650
- if (isCodedErrors(err.response.data)) {
16651
- return Promise.reject(err.response.data.map((err2) => CodedError.fromObject(err2)));
16652
- }
16653
- if (isCodedError(err.response.data)) {
16654
- return Promise.reject([CodedError.fromObject(err.response.data)]);
16655
- }
16656
- return Promise.reject([new CodedError(err.response.data)]);
16657
- } else {
16658
- return Promise.reject([new CodedError(err.message)]);
16659
- }
16659
+ const codedErrors = parseError(err);
16660
+ onApiError == null ? void 0 : onApiError(codedErrors, err);
16661
+ return Promise.reject(codedErrors);
16660
16662
  })
16661
16663
  );
16662
16664
  this.client = client;
@@ -16820,21 +16822,29 @@ class ShipEngineAPI {
16820
16822
  }
16821
16823
 
16822
16824
  const ShipEngineContext = createContext(void 0);
16823
- const ShipEngine = ({ baseURL, children, headers, getToken }) => {
16825
+ const ShipEngine = ({
16826
+ baseURL,
16827
+ children,
16828
+ headers,
16829
+ getToken,
16830
+ onApiError
16831
+ }) => {
16824
16832
  const [client, setClient] = useState(() => {
16825
16833
  const token = getToken();
16826
16834
  if (typeof token === "string")
16827
16835
  return new ShipEngineAPI(token, {
16828
16836
  baseURL,
16829
16837
  getToken,
16830
- headers: headers != null ? headers : {}
16838
+ headers: headers != null ? headers : {},
16839
+ onApiError
16831
16840
  });
16832
16841
  token.then(
16833
16842
  (t) => setClient(
16834
16843
  new ShipEngineAPI(t, {
16835
16844
  baseURL,
16836
16845
  getToken,
16837
- headers: headers != null ? headers : {}
16846
+ headers: headers != null ? headers : {},
16847
+ onApiError
16838
16848
  })
16839
16849
  )
16840
16850
  );
@@ -16870,7 +16880,7 @@ const delay = (ms) => new Promise((resolve) => {
16870
16880
  setTimeout(() => resolve(true), ms);
16871
16881
  });
16872
16882
 
16873
- const onError = (errors) => errors.forEach(console.log);
16883
+ const onError = (_errors) => _default();
16874
16884
 
16875
16885
  var __defProp$3 = Object.defineProperty;
16876
16886
  var __defProps$1 = Object.defineProperties;
@@ -19034,7 +19044,9 @@ const AlchemyProvider = ({
19034
19044
  locale: localeProp,
19035
19045
  onError = _default,
19036
19046
  scope = "lmnt",
19037
- themeConfig
19047
+ themeConfig,
19048
+ onApiError,
19049
+ headers
19038
19050
  }) => {
19039
19051
  const locale = localeProp || getDefaultLocale();
19040
19052
  const resolveIcon = useLoadIcons({ cdnURL });
@@ -19056,7 +19068,7 @@ const AlchemyProvider = ({
19056
19068
  cdnUrl: cdnURL,
19057
19069
  resolveIcon,
19058
19070
  theme,
19059
- children: /* @__PURE__ */ jsx(ShipEngine, { baseURL, getToken, children })
19071
+ children: /* @__PURE__ */ jsx(ShipEngine, { baseURL, headers, getToken, onApiError, children })
19060
19072
  }
19061
19073
  ) });
19062
19074
  };
@@ -19729,4 +19741,4 @@ const alchemy = {
19729
19741
  createElement
19730
19742
  };
19731
19743
 
19732
- export { AccountSettingsAPI, AddressesAPI, AlchemyContext, AlchemyProvider, AlchemyTestProvider, CarriersAPI, CodedError, ConfirmationType, CreditCardVendor, Currency, CustomPackagesAPI, CustomsContentsType, CustomsNonDeliveryType, Element, ErrorBoundary, FundingSourcesAPI, InsuranceAPI, InsuranceProviderType, LabelsAPI, MetadataCapability, MetadataRequirement, MetadataSatisfyingFormTypes, OrderSourcesAPI, RateCardStatus, RateCardsAPI, RatesAPI, types as SE, SalesOrderShipmentsAPI, SalesOrdersAPI, ShipEngine, ShipEngineAPI, ShipEngineContext, ShipmentsAPI, ShippingRulesAPI, ThemesAPI, WarehousesAPI, alchemy, alchemy as default, delay, getEmotionCache, getEndUserIpAddress, isCodedError, isCodedErrors, logger, onError, retryUntil, useAddFunds, useAlchemy, useCalculateRates, useConnectCarrier, useCreateAccountImage, useCreateFundingSource, useCreateLabel, useCreateRateCard, useCreateSalesOrderShipment, useCreateShipment, useCreateShippingRule, useCreateWarehouse, useDeleteAccountImage, useDeleteRateCard, useDeleteShippingRule, useDeleteWarehouse, useDownloadRateCard, useEditShippingRule, useFundingSourcesAddFunds, useGetAccountBillingPlan, useGetAccountImages, useGetAccountSettings, useGetAutoFundingConfiguration, useGetCarrierById, useGetCountriesByCarrier, useGetCurrenciesByCarrier, useGetFundingSourceById, useGetFundingSourceMetadata, useGetFundingSourceTransactions, useGetInsuranceAccount, useGetLabel, useGetPackageRatingGroupByCarrier, useGetRateCardById, useGetSalesOrder, useGetSalesOrderShipment, useGetServicesByCarrier, useGetShipment, useGetShipmentRates, useGetShippingRuleById, useGetShippingRuleConditionsOptions, useGetThemeById, useGetZonesByCarrier, useI18n, useListCarriers, useListCustomPackageTypes, useListFundingSources, useListLabels, useListOrderSources, useListRateCards, useListSalesOrderShipments, useListSalesOrders, useListShipments, useListShippingRules, useListWarehouses, useLoadIcons, useNotifySalesOrderShipped, useParseAddress, usePublishRateCard, useRefreshOrderSource, useRefreshOrderSourceAsync, useRegisterCarrier, useShipEngine, useUpdateAccountBillingPlan, useUpdateAccountImage, useUpdateAccountSettings, useUpdateAutoFunding, useUpdateFundingSource, useUpdateRateCard, useUpdateSalesOrderShipment, useUpdateWarehouse, useUploadRateCard, useValidateAddresses, useVoidLabel };
19744
+ export { AccountSettingsAPI, AddressesAPI, AlchemyContext, AlchemyProvider, AlchemyTestProvider, CarriersAPI, CodedError, ConfirmationType, CreditCardVendor, Currency, CustomPackagesAPI, CustomsContentsType, CustomsNonDeliveryType, Element, ErrorBoundary, FundingSourcesAPI, InsuranceAPI, InsuranceProviderType, LabelsAPI, MetadataCapability, MetadataRequirement, MetadataSatisfyingFormTypes, OrderSourcesAPI, RateCardStatus, RateCardsAPI, RatesAPI, types as SE, SalesOrderShipmentsAPI, SalesOrdersAPI, ShipEngine, ShipEngineAPI, ShipEngineContext, ShipmentsAPI, ShippingRulesAPI, ThemesAPI, WarehousesAPI, alchemy, alchemy as default, delay, getEmotionCache, getEndUserIpAddress, isCodedError, isCodedErrors, isDataCodedErrors, logger, onError, parseError, retryUntil, useAddFunds, useAlchemy, useCalculateRates, useConnectCarrier, useCreateAccountImage, useCreateFundingSource, useCreateLabel, useCreateRateCard, useCreateSalesOrderShipment, useCreateShipment, useCreateShippingRule, useCreateWarehouse, useDeleteAccountImage, useDeleteRateCard, useDeleteShippingRule, useDeleteWarehouse, useDownloadRateCard, useEditShippingRule, useFundingSourcesAddFunds, useGetAccountBillingPlan, useGetAccountImages, useGetAccountSettings, useGetAutoFundingConfiguration, useGetCarrierById, useGetCountriesByCarrier, useGetCurrenciesByCarrier, useGetFundingSourceById, useGetFundingSourceMetadata, useGetFundingSourceTransactions, useGetInsuranceAccount, useGetLabel, useGetPackageRatingGroupByCarrier, useGetRateCardById, useGetSalesOrder, useGetSalesOrderShipment, useGetServicesByCarrier, useGetShipment, useGetShipmentRates, useGetShippingRuleById, useGetShippingRuleConditionsOptions, useGetThemeById, useGetZonesByCarrier, useI18n, useListCarriers, useListCustomPackageTypes, useListFundingSources, useListLabels, useListOrderSources, useListRateCards, useListSalesOrderShipments, useListSalesOrders, useListShipments, useListShippingRules, useListWarehouses, useLoadIcons, useNotifySalesOrderShipped, useParseAddress, usePublishRateCard, useRefreshOrderSource, useRefreshOrderSourceAsync, useRegisterCarrier, useShipEngine, useUpdateAccountBillingPlan, useUpdateAccountImage, useUpdateAccountSettings, useUpdateAutoFunding, useUpdateFundingSource, useUpdateRateCard, useUpdateSalesOrderShipment, useUpdateWarehouse, useUploadRateCard, useValidateAddresses, useVoidLabel };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipengine/alchemy",
3
- "version": "5.0.30",
3
+ "version": "5.1.0",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "exports": {