@shipengine/alchemy 5.1.6 → 5.1.7

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.
Files changed (3) hide show
  1. package/index.js +33 -21
  2. package/index.mjs +34 -23
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -11020,6 +11020,21 @@ const parseError = (err) => {
11020
11020
  return [new CodedError(err.message)];
11021
11021
  }
11022
11022
  };
11023
+ const nonTokenRelatedErrors = [
11024
+ "The JWT `scope` claim is invalid.",
11025
+ "Missing required scopes for this request.",
11026
+ "Your Stamps.com username or password are invalid",
11027
+ "Authorization has been denied for this request."
11028
+ ];
11029
+ const isInvalidTokenError = (err) => {
11030
+ var _a;
11031
+ const response = err.response;
11032
+ const responseData = (_a = err.response) == null ? void 0 : _a.data;
11033
+ if ((response == null ? void 0 : response.status) === 401 && responseData.errorSource === "shipengine" && responseData.errorType === "security" && !nonTokenRelatedErrors.includes(responseData.message)) {
11034
+ return true;
11035
+ }
11036
+ return false;
11037
+ };
11023
11038
 
11024
11039
  var axiosExports$1 = {};
11025
11040
  var axios$3 = {
@@ -16697,7 +16712,7 @@ class ShipEngineAPI {
16697
16712
  return res;
16698
16713
  },
16699
16714
  (err) => __async$A(this, null, function* () {
16700
- var _a, _b, _c, _d, _e, _f;
16715
+ var _a, _b, _c, _d, _e;
16701
16716
  logger$1.error(
16702
16717
  { err, req: err.config, res: err.response },
16703
16718
  "%s %s: %s %s - %s",
@@ -16707,7 +16722,7 @@ class ShipEngineAPI {
16707
16722
  (_e = err.response) == null ? void 0 : _e.statusText,
16708
16723
  err.message
16709
16724
  );
16710
- if (((_f = err.response) == null ? void 0 : _f.status) === 401) {
16725
+ if (isInvalidTokenError(err)) {
16711
16726
  const token2 = yield getToken();
16712
16727
  const config = err.config;
16713
16728
  if (config) {
@@ -16898,28 +16913,24 @@ const ShipEngine = ({
16898
16913
  getToken,
16899
16914
  onApiError
16900
16915
  }) => {
16916
+ const [client, setClient] = React.useState();
16901
16917
  const [queryClient] = React.useState(() => new reactQuery.QueryClient());
16902
- const [client, setClient] = React.useState(() => {
16918
+ React.useEffect(() => {
16903
16919
  const token = getToken();
16904
- if (typeof token === "string")
16905
- return new ShipEngineAPI(token, {
16906
- baseURL,
16907
- getToken,
16908
- headers: headers != null ? headers : {},
16909
- onApiError
16920
+ const commonClientProps = {
16921
+ baseURL,
16922
+ getToken,
16923
+ headers: headers != null ? headers : {},
16924
+ onApiError
16925
+ };
16926
+ if (typeof token === "string") {
16927
+ setClient(new ShipEngineAPI(token, commonClientProps));
16928
+ } else {
16929
+ token.then((t) => {
16930
+ setClient(new ShipEngineAPI(t, commonClientProps));
16910
16931
  });
16911
- token.then(
16912
- (t) => setClient(
16913
- new ShipEngineAPI(t, {
16914
- baseURL,
16915
- getToken,
16916
- headers: headers != null ? headers : {},
16917
- onApiError
16918
- })
16919
- )
16920
- );
16921
- return void 0;
16922
- });
16932
+ }
16933
+ }, []);
16923
16934
  if (!client) {
16924
16935
  return /* @__PURE__ */ jsxRuntime.jsx(
16925
16936
  "div",
@@ -20006,6 +20017,7 @@ exports.getEndUserIpAddress = getEndUserIpAddress;
20006
20017
  exports.isCodedError = isCodedError;
20007
20018
  exports.isCodedErrors = isCodedErrors;
20008
20019
  exports.isDataCodedErrors = isDataCodedErrors;
20020
+ exports.isInvalidTokenError = isInvalidTokenError;
20009
20021
  exports.logger = logger;
20010
20022
  exports.onError = onError;
20011
20023
  exports.parseError = parseError;
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { createContext, forwardRef, useContext, createElement as createElement$1, Fragment, useState, useCallback, useMemo, useRef } from 'react';
2
+ import { createContext, forwardRef, useContext, createElement as createElement$1, Fragment, useState, useEffect, useCallback, useMemo, useRef } from 'react';
3
3
  import { jsx as jsx$1 } from 'react/jsx-runtime';
4
4
  import { GigerProvider, GigerTestProvider, DefaultPortalRefProvider } from '@shipengine/giger';
5
5
  import { QueryClient, QueryClientProvider, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
@@ -10998,6 +10998,21 @@ const parseError = (err) => {
10998
10998
  return [new CodedError(err.message)];
10999
10999
  }
11000
11000
  };
11001
+ const nonTokenRelatedErrors = [
11002
+ "The JWT `scope` claim is invalid.",
11003
+ "Missing required scopes for this request.",
11004
+ "Your Stamps.com username or password are invalid",
11005
+ "Authorization has been denied for this request."
11006
+ ];
11007
+ const isInvalidTokenError = (err) => {
11008
+ var _a;
11009
+ const response = err.response;
11010
+ const responseData = (_a = err.response) == null ? void 0 : _a.data;
11011
+ if ((response == null ? void 0 : response.status) === 401 && responseData.errorSource === "shipengine" && responseData.errorType === "security" && !nonTokenRelatedErrors.includes(responseData.message)) {
11012
+ return true;
11013
+ }
11014
+ return false;
11015
+ };
11001
11016
 
11002
11017
  var axiosExports$1 = {};
11003
11018
  var axios$3 = {
@@ -16675,7 +16690,7 @@ class ShipEngineAPI {
16675
16690
  return res;
16676
16691
  },
16677
16692
  (err) => __async$A(this, null, function* () {
16678
- var _a, _b, _c, _d, _e, _f;
16693
+ var _a, _b, _c, _d, _e;
16679
16694
  logger$1.error(
16680
16695
  { err, req: err.config, res: err.response },
16681
16696
  "%s %s: %s %s - %s",
@@ -16685,7 +16700,7 @@ class ShipEngineAPI {
16685
16700
  (_e = err.response) == null ? void 0 : _e.statusText,
16686
16701
  err.message
16687
16702
  );
16688
- if (((_f = err.response) == null ? void 0 : _f.status) === 401) {
16703
+ if (isInvalidTokenError(err)) {
16689
16704
  const token2 = yield getToken();
16690
16705
  const config = err.config;
16691
16706
  if (config) {
@@ -16876,28 +16891,24 @@ const ShipEngine = ({
16876
16891
  getToken,
16877
16892
  onApiError
16878
16893
  }) => {
16894
+ const [client, setClient] = useState();
16879
16895
  const [queryClient] = useState(() => new QueryClient());
16880
- const [client, setClient] = useState(() => {
16896
+ useEffect(() => {
16881
16897
  const token = getToken();
16882
- if (typeof token === "string")
16883
- return new ShipEngineAPI(token, {
16884
- baseURL,
16885
- getToken,
16886
- headers: headers != null ? headers : {},
16887
- onApiError
16898
+ const commonClientProps = {
16899
+ baseURL,
16900
+ getToken,
16901
+ headers: headers != null ? headers : {},
16902
+ onApiError
16903
+ };
16904
+ if (typeof token === "string") {
16905
+ setClient(new ShipEngineAPI(token, commonClientProps));
16906
+ } else {
16907
+ token.then((t) => {
16908
+ setClient(new ShipEngineAPI(t, commonClientProps));
16888
16909
  });
16889
- token.then(
16890
- (t) => setClient(
16891
- new ShipEngineAPI(t, {
16892
- baseURL,
16893
- getToken,
16894
- headers: headers != null ? headers : {},
16895
- onApiError
16896
- })
16897
- )
16898
- );
16899
- return void 0;
16900
- });
16910
+ }
16911
+ }, []);
16901
16912
  if (!client) {
16902
16913
  return /* @__PURE__ */ jsx$1(
16903
16914
  "div",
@@ -19939,4 +19950,4 @@ const alchemy = {
19939
19950
  createElement
19940
19951
  };
19941
19952
 
19942
- export { AccountSettingsAPI, AddressesAPI, AlchemyContext, AlchemyProvider, AlchemyTestProvider, CarriersAPI, CodedError, ConfirmationType, ConnectionsAPI, 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, useAddInsuranceFunds, useAlchemy, useCalculateRates, useConnectCarrier, useCreateAccountImage, useCreateFundingSource, useCreateLabel, useCreateRateCard, useCreateSalesOrderShipment, useCreateShipment, useCreateShippingRule, useCreateWarehouse, useDeactivateOrderSource, useDeleteAccountImage, useDeleteRateCard, useDeleteShippingRule, useDeleteWarehouse, useDownloadRateCard, useEditShippingRule, useFundingSourcesAddFunds, useGetAccountBillingPlan, useGetAccountImages, useGetAccountSettings, useGetAutoFundingConfiguration, useGetCarrierById, useGetCarrierConnectionForm, useGetCountriesByCarrier, useGetCurrenciesByCarrier, useGetFundingSourceById, useGetFundingSourceMetadata, useGetFundingSourceTransactions, useGetInsuranceAccount, useGetLabel, useGetPackageRatingGroupByCarrier, useGetRateCardById, useGetSalesOrder, useGetSalesOrderShipment, useGetServicesByCarrier, useGetShipment, useGetShipmentRates, useGetShippingRuleById, useGetShippingRuleConditionsOptions, useGetThemeById, useGetZonesByCarrier, useI18n, useListCarrierConnections, 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 };
19953
+ export { AccountSettingsAPI, AddressesAPI, AlchemyContext, AlchemyProvider, AlchemyTestProvider, CarriersAPI, CodedError, ConfirmationType, ConnectionsAPI, 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, isInvalidTokenError, logger, onError, parseError, retryUntil, useAddFunds, useAddInsuranceFunds, useAlchemy, useCalculateRates, useConnectCarrier, useCreateAccountImage, useCreateFundingSource, useCreateLabel, useCreateRateCard, useCreateSalesOrderShipment, useCreateShipment, useCreateShippingRule, useCreateWarehouse, useDeactivateOrderSource, useDeleteAccountImage, useDeleteRateCard, useDeleteShippingRule, useDeleteWarehouse, useDownloadRateCard, useEditShippingRule, useFundingSourcesAddFunds, useGetAccountBillingPlan, useGetAccountImages, useGetAccountSettings, useGetAutoFundingConfiguration, useGetCarrierById, useGetCarrierConnectionForm, useGetCountriesByCarrier, useGetCurrenciesByCarrier, useGetFundingSourceById, useGetFundingSourceMetadata, useGetFundingSourceTransactions, useGetInsuranceAccount, useGetLabel, useGetPackageRatingGroupByCarrier, useGetRateCardById, useGetSalesOrder, useGetSalesOrderShipment, useGetServicesByCarrier, useGetShipment, useGetShipmentRates, useGetShippingRuleById, useGetShippingRuleConditionsOptions, useGetThemeById, useGetZonesByCarrier, useI18n, useListCarrierConnections, 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.1.6",
3
+ "version": "5.1.7",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "exports": {