@shipengine/js-api 0.52.2 → 0.53.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.
- package/client.d.ts +13 -2
- package/errors/utils.d.ts +4 -0
- package/index.js +23 -19
- package/index.mjs +22 -20
- package/package.json +1 -1
package/client.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { AxiosRequestHeaders } from "axios";
|
|
1
|
+
import { AxiosError, AxiosRequestHeaders } from "axios";
|
|
2
2
|
import { AccountBillingPlanAPI } from "./account-billing-plan";
|
|
3
3
|
import { AccountSettingsAPI } from "./account-settings";
|
|
4
4
|
import { AddressesAPI } from "./addresses";
|
|
5
5
|
import { CarriersAPI } from "./carriers";
|
|
6
6
|
import { CustomPackagesAPI } from "./custom-packages";
|
|
7
|
+
import { CodedError } from "./errors";
|
|
7
8
|
import { FundingSourcesAPI } from "./funding-sources";
|
|
8
9
|
import { InsuranceAPI } from "./insurance";
|
|
9
10
|
import { LabelsAPI } from "./labels";
|
|
@@ -20,6 +21,12 @@ import { WarehousesAPI } from "./warehouses";
|
|
|
20
21
|
* # ShipEngine API Client Headers
|
|
21
22
|
*/
|
|
22
23
|
export type ShipEngineAPIHeaders = AxiosRequestHeaders;
|
|
24
|
+
/**
|
|
25
|
+
* # ShipEngine API axios error response
|
|
26
|
+
*/
|
|
27
|
+
export type ApiError = AxiosError<{
|
|
28
|
+
errors: CodedError[];
|
|
29
|
+
} | CodedError[] | CodedError | string>;
|
|
23
30
|
/**
|
|
24
31
|
* # ShipEngine API Client Configuration
|
|
25
32
|
*/
|
|
@@ -36,6 +43,10 @@ export interface ShipEngineAPIConfig {
|
|
|
36
43
|
* `headers` are optional HTTP headers to be sent with all requests.
|
|
37
44
|
*/
|
|
38
45
|
headers?: ShipEngineAPIHeaders;
|
|
46
|
+
/**
|
|
47
|
+
* `onApiError` is an optional callback function that will be executed whenever there is an error.
|
|
48
|
+
*/
|
|
49
|
+
onApiError?: (errors: CodedError[], error: ApiError) => void;
|
|
39
50
|
}
|
|
40
51
|
/**
|
|
41
52
|
* # ShipEngine API Client
|
|
@@ -45,7 +56,7 @@ export interface ShipEngineAPIConfig {
|
|
|
45
56
|
*/
|
|
46
57
|
export declare class ShipEngineAPI {
|
|
47
58
|
private client;
|
|
48
|
-
constructor(token: string, { baseURL, headers, getToken }: ShipEngineAPIConfig);
|
|
59
|
+
constructor(token: string, { baseURL, headers, getToken, onApiError }: ShipEngineAPIConfig);
|
|
49
60
|
/**
|
|
50
61
|
* The `token` method takes in a string and sets it as the Authorization header for all requests.
|
|
51
62
|
*/
|
package/errors/utils.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { CodedError } from "./types";
|
|
2
2
|
export declare const isCodedErrors: (errs: any) => errs is CodedError[];
|
|
3
3
|
export declare const isCodedError: (err: any) => err is CodedError;
|
|
4
|
+
export declare const isDataCodedErrors: (data: any) => data is {
|
|
5
|
+
errors: CodedError[];
|
|
6
|
+
};
|
|
7
|
+
export declare const parseError: (err: any) => CodedError[];
|
package/index.js
CHANGED
|
@@ -229,6 +229,21 @@ class AddressesAPI {
|
|
|
229
229
|
|
|
230
230
|
const isCodedErrors = (errs) => Array.isArray(errs) && errs.every((err) => isCodedError(err));
|
|
231
231
|
const isCodedError = (err) => !!err.errorCode;
|
|
232
|
+
const isDataCodedErrors = (data) => !!data.errors && isCodedErrors(data.errors);
|
|
233
|
+
const parseError = (err) => {
|
|
234
|
+
var _a;
|
|
235
|
+
if (!((_a = err.response) == null ? void 0 : _a.data))
|
|
236
|
+
return [new CodedError(err.message)];
|
|
237
|
+
if (isDataCodedErrors(err.response.data)) {
|
|
238
|
+
return err.response.data.errors.map((err2) => CodedError.fromObject(err2));
|
|
239
|
+
} else if (isCodedErrors(err.response.data)) {
|
|
240
|
+
return err.response.data.map((err2) => CodedError.fromObject(err2));
|
|
241
|
+
} else if (isCodedError(err.response.data)) {
|
|
242
|
+
return [CodedError.fromObject(err.response.data)];
|
|
243
|
+
} else {
|
|
244
|
+
return [new CodedError(err.message)];
|
|
245
|
+
}
|
|
246
|
+
};
|
|
232
247
|
|
|
233
248
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
234
249
|
|
|
@@ -3864,6 +3879,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
3864
3879
|
});
|
|
3865
3880
|
};
|
|
3866
3881
|
const logger = E({
|
|
3882
|
+
level: process.env.NODE_ENV === "production" ? "fatal" : "info",
|
|
3867
3883
|
name: "shipengine-api",
|
|
3868
3884
|
serializers: __spreadProps(__spreadValues({}, k), {
|
|
3869
3885
|
req: (req) => ({
|
|
@@ -3885,9 +3901,8 @@ const logger = E({
|
|
|
3885
3901
|
}
|
|
3886
3902
|
]
|
|
3887
3903
|
});
|
|
3888
|
-
const isDataCodedErrors = (data) => !!data.errors && isCodedErrors(data.errors);
|
|
3889
3904
|
class ShipEngineAPI {
|
|
3890
|
-
constructor(token, { baseURL, headers, getToken }) {
|
|
3905
|
+
constructor(token, { baseURL, headers, getToken, onApiError }) {
|
|
3891
3906
|
const client = axios.create({
|
|
3892
3907
|
baseURL,
|
|
3893
3908
|
headers: __spreadProps(__spreadValues({}, headers), {
|
|
@@ -3938,7 +3953,7 @@ class ShipEngineAPI {
|
|
|
3938
3953
|
return res;
|
|
3939
3954
|
},
|
|
3940
3955
|
(err) => __async(this, null, function* () {
|
|
3941
|
-
var _a, _b, _c, _d, _e, _f
|
|
3956
|
+
var _a, _b, _c, _d, _e, _f;
|
|
3942
3957
|
logger.error(
|
|
3943
3958
|
{ err, req: err.config, res: err.response },
|
|
3944
3959
|
"%s %s: %s %s - %s",
|
|
@@ -3957,22 +3972,9 @@ class ShipEngineAPI {
|
|
|
3957
3972
|
}
|
|
3958
3973
|
return axios(config);
|
|
3959
3974
|
}
|
|
3960
|
-
|
|
3961
|
-
|
|
3962
|
-
|
|
3963
|
-
err.response.data.errors.map((err2) => CodedError.fromObject(err2))
|
|
3964
|
-
);
|
|
3965
|
-
}
|
|
3966
|
-
if (isCodedErrors(err.response.data)) {
|
|
3967
|
-
return Promise.reject(err.response.data.map((err2) => CodedError.fromObject(err2)));
|
|
3968
|
-
}
|
|
3969
|
-
if (isCodedError(err.response.data)) {
|
|
3970
|
-
return Promise.reject([CodedError.fromObject(err.response.data)]);
|
|
3971
|
-
}
|
|
3972
|
-
return Promise.reject([new CodedError(err.response.data)]);
|
|
3973
|
-
} else {
|
|
3974
|
-
return Promise.reject([new CodedError(err.message)]);
|
|
3975
|
-
}
|
|
3975
|
+
const codedErrors = parseError(err);
|
|
3976
|
+
onApiError == null ? void 0 : onApiError(codedErrors, err);
|
|
3977
|
+
return Promise.reject(codedErrors);
|
|
3976
3978
|
})
|
|
3977
3979
|
);
|
|
3978
3980
|
this.client = client;
|
|
@@ -4167,3 +4169,5 @@ exports.WarehousesAPI = WarehousesAPI;
|
|
|
4167
4169
|
exports.getEndUserIpAddress = getEndUserIpAddress;
|
|
4168
4170
|
exports.isCodedError = isCodedError;
|
|
4169
4171
|
exports.isCodedErrors = isCodedErrors;
|
|
4172
|
+
exports.isDataCodedErrors = isDataCodedErrors;
|
|
4173
|
+
exports.parseError = parseError;
|
package/index.mjs
CHANGED
|
@@ -225,6 +225,21 @@ class AddressesAPI {
|
|
|
225
225
|
|
|
226
226
|
const isCodedErrors = (errs) => Array.isArray(errs) && errs.every((err) => isCodedError(err));
|
|
227
227
|
const isCodedError = (err) => !!err.errorCode;
|
|
228
|
+
const isDataCodedErrors = (data) => !!data.errors && isCodedErrors(data.errors);
|
|
229
|
+
const parseError = (err) => {
|
|
230
|
+
var _a;
|
|
231
|
+
if (!((_a = err.response) == null ? void 0 : _a.data))
|
|
232
|
+
return [new CodedError(err.message)];
|
|
233
|
+
if (isDataCodedErrors(err.response.data)) {
|
|
234
|
+
return err.response.data.errors.map((err2) => CodedError.fromObject(err2));
|
|
235
|
+
} else if (isCodedErrors(err.response.data)) {
|
|
236
|
+
return err.response.data.map((err2) => CodedError.fromObject(err2));
|
|
237
|
+
} else if (isCodedError(err.response.data)) {
|
|
238
|
+
return [CodedError.fromObject(err.response.data)];
|
|
239
|
+
} else {
|
|
240
|
+
return [new CodedError(err.message)];
|
|
241
|
+
}
|
|
242
|
+
};
|
|
228
243
|
|
|
229
244
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
230
245
|
|
|
@@ -3860,6 +3875,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
3860
3875
|
});
|
|
3861
3876
|
};
|
|
3862
3877
|
const logger = E({
|
|
3878
|
+
level: process.env.NODE_ENV === "production" ? "fatal" : "info",
|
|
3863
3879
|
name: "shipengine-api",
|
|
3864
3880
|
serializers: __spreadProps(__spreadValues({}, k), {
|
|
3865
3881
|
req: (req) => ({
|
|
@@ -3881,9 +3897,8 @@ const logger = E({
|
|
|
3881
3897
|
}
|
|
3882
3898
|
]
|
|
3883
3899
|
});
|
|
3884
|
-
const isDataCodedErrors = (data) => !!data.errors && isCodedErrors(data.errors);
|
|
3885
3900
|
class ShipEngineAPI {
|
|
3886
|
-
constructor(token, { baseURL, headers, getToken }) {
|
|
3901
|
+
constructor(token, { baseURL, headers, getToken, onApiError }) {
|
|
3887
3902
|
const client = axios.create({
|
|
3888
3903
|
baseURL,
|
|
3889
3904
|
headers: __spreadProps(__spreadValues({}, headers), {
|
|
@@ -3934,7 +3949,7 @@ class ShipEngineAPI {
|
|
|
3934
3949
|
return res;
|
|
3935
3950
|
},
|
|
3936
3951
|
(err) => __async(this, null, function* () {
|
|
3937
|
-
var _a, _b, _c, _d, _e, _f
|
|
3952
|
+
var _a, _b, _c, _d, _e, _f;
|
|
3938
3953
|
logger.error(
|
|
3939
3954
|
{ err, req: err.config, res: err.response },
|
|
3940
3955
|
"%s %s: %s %s - %s",
|
|
@@ -3953,22 +3968,9 @@ class ShipEngineAPI {
|
|
|
3953
3968
|
}
|
|
3954
3969
|
return axios(config);
|
|
3955
3970
|
}
|
|
3956
|
-
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
err.response.data.errors.map((err2) => CodedError.fromObject(err2))
|
|
3960
|
-
);
|
|
3961
|
-
}
|
|
3962
|
-
if (isCodedErrors(err.response.data)) {
|
|
3963
|
-
return Promise.reject(err.response.data.map((err2) => CodedError.fromObject(err2)));
|
|
3964
|
-
}
|
|
3965
|
-
if (isCodedError(err.response.data)) {
|
|
3966
|
-
return Promise.reject([CodedError.fromObject(err.response.data)]);
|
|
3967
|
-
}
|
|
3968
|
-
return Promise.reject([new CodedError(err.response.data)]);
|
|
3969
|
-
} else {
|
|
3970
|
-
return Promise.reject([new CodedError(err.message)]);
|
|
3971
|
-
}
|
|
3971
|
+
const codedErrors = parseError(err);
|
|
3972
|
+
onApiError == null ? void 0 : onApiError(codedErrors, err);
|
|
3973
|
+
return Promise.reject(codedErrors);
|
|
3972
3974
|
})
|
|
3973
3975
|
);
|
|
3974
3976
|
this.client = client;
|
|
@@ -4131,4 +4133,4 @@ class ShipEngineAPI {
|
|
|
4131
4133
|
}
|
|
4132
4134
|
}
|
|
4133
4135
|
|
|
4134
|
-
export { AccountSettingsAPI, AddressesAPI, CarriersAPI, CodedError, ConfirmationType, CreditCardVendor, Currency, CustomPackagesAPI, CustomsContentsType, CustomsNonDeliveryType, FundingSourcesAPI, InsuranceAPI, InsuranceProviderType, LabelsAPI, MetadataCapability, MetadataRequirement, MetadataSatisfyingFormTypes, OrderSourcesAPI, RateCardStatus, RateCardsAPI, RatesAPI, types as SE, SalesOrderShipmentsAPI, SalesOrdersAPI, ShipEngineAPI, ShipmentsAPI, ShippingRulesAPI, ThemesAPI, WarehousesAPI, getEndUserIpAddress, isCodedError, isCodedErrors };
|
|
4136
|
+
export { AccountSettingsAPI, AddressesAPI, CarriersAPI, CodedError, ConfirmationType, CreditCardVendor, Currency, CustomPackagesAPI, CustomsContentsType, CustomsNonDeliveryType, FundingSourcesAPI, InsuranceAPI, InsuranceProviderType, LabelsAPI, MetadataCapability, MetadataRequirement, MetadataSatisfyingFormTypes, OrderSourcesAPI, RateCardStatus, RateCardsAPI, RatesAPI, types as SE, SalesOrderShipmentsAPI, SalesOrdersAPI, ShipEngineAPI, ShipmentsAPI, ShippingRulesAPI, ThemesAPI, WarehousesAPI, getEndUserIpAddress, isCodedError, isCodedErrors, isDataCodedErrors, parseError };
|