api-def 0.4.1-alpha3 → 0.5.1
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/README.md +1 -1
- package/cjs/Api.d.ts +13 -15
- package/cjs/Api.js +28 -41
- package/cjs/ApiConstants.d.ts +28 -0
- package/cjs/ApiConstants.js +28 -0
- package/cjs/ApiTypes.d.ts +2 -7
- package/cjs/ApiUtils.d.ts +2 -10
- package/cjs/ApiUtils.js +24 -37
- package/cjs/Endpoint.d.ts +21 -5
- package/cjs/Endpoint.js +16 -31
- package/cjs/MockingTypes.d.ts +28 -0
- package/cjs/{lib/Utils.js → MockingTypes.js} +0 -0
- package/cjs/RequestContext.d.ts +9 -4
- package/cjs/RequestContext.js +4 -2
- package/cjs/RequestError.d.ts +21 -0
- package/cjs/RequestError.js +23 -0
- package/cjs/Requester.d.ts +2 -1
- package/cjs/Requester.js +153 -67
- package/cjs/TextDecoding.d.ts +1 -0
- package/cjs/TextDecoding.js +139 -0
- package/cjs/Utils.d.ts +9 -0
- package/cjs/Utils.js +30 -1
- package/cjs/backend/AxiosRequestBackend.d.ts +4 -3
- package/cjs/backend/AxiosRequestBackend.js +3 -0
- package/cjs/backend/FetchRequestBackend.d.ts +2 -1
- package/cjs/backend/FetchRequestBackend.js +12 -7
- package/cjs/backend/MockRequestBackend.d.ts +10 -0
- package/cjs/backend/MockRequestBackend.js +149 -0
- package/cjs/backend/RequestBackend.d.ts +4 -0
- package/cjs/cache/LocalForageCacheBackend.js +1 -0
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +2 -2
- package/cjs/util/retry/index.d.ts +3 -0
- package/cjs/util/retry/index.js +52 -0
- package/cjs/util/retry/lib/retry.d.ts +3 -0
- package/cjs/util/retry/lib/retry.js +54 -0
- package/cjs/util/retry/lib/retryOperation.d.ts +27 -0
- package/cjs/util/retry/lib/retryOperation.js +134 -0
- package/esm/Api.d.ts +13 -15
- package/esm/Api.js +24 -39
- package/esm/ApiConstants.d.ts +28 -0
- package/esm/ApiConstants.js +28 -0
- package/esm/ApiTypes.d.ts +2 -7
- package/esm/ApiUtils.d.ts +2 -10
- package/esm/ApiUtils.js +22 -35
- package/esm/Endpoint.d.ts +21 -5
- package/esm/Endpoint.js +16 -31
- package/esm/MockingTypes.d.ts +28 -0
- package/esm/{lib/backend/RequestBackend.js → MockingTypes.js} +0 -0
- package/esm/RequestContext.d.ts +9 -4
- package/esm/RequestContext.js +4 -2
- package/esm/RequestError.d.ts +21 -0
- package/esm/RequestError.js +18 -0
- package/esm/Requester.d.ts +2 -1
- package/esm/Requester.js +153 -67
- package/esm/TextDecoding.d.ts +1 -0
- package/esm/TextDecoding.js +135 -0
- package/esm/Utils.d.ts +9 -0
- package/esm/Utils.js +26 -0
- package/esm/backend/AxiosRequestBackend.d.ts +4 -3
- package/esm/backend/AxiosRequestBackend.js +3 -0
- package/esm/backend/FetchRequestBackend.d.ts +2 -1
- package/esm/backend/FetchRequestBackend.js +12 -7
- package/esm/backend/MockRequestBackend.d.ts +10 -0
- package/esm/backend/MockRequestBackend.js +147 -0
- package/esm/backend/RequestBackend.d.ts +4 -0
- package/esm/cache/LocalForageCacheBackend.js +1 -0
- package/esm/index.d.ts +1 -1
- package/esm/index.js +1 -1
- package/esm/util/retry/index.d.ts +3 -0
- package/esm/util/retry/index.js +50 -0
- package/esm/util/retry/lib/retry.d.ts +3 -0
- package/esm/util/retry/lib/retry.js +50 -0
- package/esm/util/retry/lib/retryOperation.d.ts +27 -0
- package/esm/util/retry/lib/retryOperation.js +132 -0
- package/package.json +29 -19
- package/CHANGELOG.md +0 -39
- package/cjs/Mocking.d.ts +0 -23
- package/cjs/Mocking.js +0 -81
- package/cjs/__tests__/mock/ExampleApis.d.ts +0 -3
- package/cjs/__tests__/mock/ExampleApis.js +0 -19
- package/cjs/lib/Api.d.ts +0 -32
- package/cjs/lib/Api.js +0 -126
- package/cjs/lib/ApiTypes.d.ts +0 -102
- package/cjs/lib/ApiTypes.js +0 -31
- package/cjs/lib/ApiUtils.d.ts +0 -13
- package/cjs/lib/ApiUtils.js +0 -60
- package/cjs/lib/Caching.d.ts +0 -9
- package/cjs/lib/Caching.js +0 -85
- package/cjs/lib/Endpoint.d.ts +0 -30
- package/cjs/lib/Endpoint.js +0 -121
- package/cjs/lib/EndpointBuilder.d.ts +0 -12
- package/cjs/lib/EndpointBuilder.js +0 -27
- package/cjs/lib/Mocking.d.ts +0 -23
- package/cjs/lib/Mocking.js +0 -80
- package/cjs/lib/RequestContext.d.ts +0 -28
- package/cjs/lib/RequestContext.js +0 -166
- package/cjs/lib/Requester.d.ts +0 -2
- package/cjs/lib/Requester.js +0 -164
- package/cjs/lib/Utils.d.ts +0 -1
- package/cjs/lib/backend/AxiosBackend.d.ts +0 -10
- package/cjs/lib/backend/AxiosBackend.js +0 -98
- package/cjs/lib/backend/AxiosRequestBackend.d.ts +0 -11
- package/cjs/lib/backend/AxiosRequestBackend.js +0 -99
- package/cjs/lib/backend/FetchBackend.d.ts +0 -8
- package/cjs/lib/backend/FetchBackend.js +0 -145
- package/cjs/lib/backend/FetchRequestBackend.d.ts +0 -9
- package/cjs/lib/backend/FetchRequestBackend.js +0 -150
- package/cjs/lib/backend/RequestBackend.d.ts +0 -11
- package/cjs/lib/backend/RequestBackend.js +0 -2
- package/cjs/lib/cache/CacheBackend.d.ts +0 -6
- package/cjs/lib/cache/CacheBackend.js +0 -2
- package/cjs/lib/cache/Caching.d.ts +0 -10
- package/cjs/lib/cache/Caching.js +0 -84
- package/cjs/lib/cache/LocalForageCacheBackend.d.ts +0 -9
- package/cjs/lib/cache/LocalForageCacheBackend.js +0 -25
- package/cjs/lib/cache/LocalStorageCacheBackend.d.ts +0 -7
- package/cjs/lib/cache/LocalStorageCacheBackend.js +0 -78
- package/cjs/lib/middleware/CacheMiddleware.d.ts +0 -7
- package/cjs/lib/middleware/CacheMiddleware.js +0 -107
- package/cjs/lib/middleware/LoggingMiddleware.d.ts +0 -7
- package/cjs/lib/middleware/LoggingMiddleware.js +0 -95
- package/esm/Mocking.d.ts +0 -23
- package/esm/Mocking.js +0 -77
- package/esm/__tests__/mock/ExampleApis.d.ts +0 -3
- package/esm/__tests__/mock/ExampleApis.js +0 -16
- package/esm/lib/Api.d.ts +0 -32
- package/esm/lib/Api.js +0 -123
- package/esm/lib/ApiTypes.d.ts +0 -102
- package/esm/lib/ApiTypes.js +0 -28
- package/esm/lib/ApiUtils.d.ts +0 -13
- package/esm/lib/ApiUtils.js +0 -57
- package/esm/lib/Caching.d.ts +0 -9
- package/esm/lib/Caching.js +0 -82
- package/esm/lib/Endpoint.d.ts +0 -30
- package/esm/lib/Endpoint.js +0 -119
- package/esm/lib/EndpointBuilder.d.ts +0 -12
- package/esm/lib/EndpointBuilder.js +0 -25
- package/esm/lib/Mocking.d.ts +0 -23
- package/esm/lib/Mocking.js +0 -77
- package/esm/lib/RequestContext.d.ts +0 -28
- package/esm/lib/RequestContext.js +0 -164
- package/esm/lib/Requester.d.ts +0 -2
- package/esm/lib/Requester.js +0 -161
- package/esm/lib/Utils.d.ts +0 -1
- package/esm/lib/Utils.js +0 -0
- package/esm/lib/backend/AxiosBackend.d.ts +0 -10
- package/esm/lib/backend/AxiosBackend.js +0 -95
- package/esm/lib/backend/AxiosRequestBackend.d.ts +0 -11
- package/esm/lib/backend/AxiosRequestBackend.js +0 -96
- package/esm/lib/backend/FetchBackend.d.ts +0 -8
- package/esm/lib/backend/FetchBackend.js +0 -143
- package/esm/lib/backend/FetchRequestBackend.d.ts +0 -9
- package/esm/lib/backend/FetchRequestBackend.js +0 -148
- package/esm/lib/backend/RequestBackend.d.ts +0 -11
- package/esm/lib/cache/CacheBackend.d.ts +0 -6
- package/esm/lib/cache/CacheBackend.js +0 -1
- package/esm/lib/cache/Caching.d.ts +0 -10
- package/esm/lib/cache/Caching.js +0 -81
- package/esm/lib/cache/LocalForageCacheBackend.d.ts +0 -9
- package/esm/lib/cache/LocalForageCacheBackend.js +0 -23
- package/esm/lib/cache/LocalStorageCacheBackend.d.ts +0 -7
- package/esm/lib/cache/LocalStorageCacheBackend.js +0 -76
- package/esm/lib/middleware/CacheMiddleware.d.ts +0 -7
- package/esm/lib/middleware/CacheMiddleware.js +0 -105
- package/esm/lib/middleware/LoggingMiddleware.d.ts +0 -7
- package/esm/lib/middleware/LoggingMiddleware.js +0 -92
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# [api-def](https://github.com/Censkh/api-def/) · [](https://github.com/Censkh/api-def/blob/master/LICENSE) [](https://www.npmjs.com/package/api-def)
|
|
1
|
+
# [api-def](https://github.com/Censkh/api-def/) · [](https://github.com/Censkh/api-def/blob/master/LICENSE) [](https://www.npmjs.com/package/api-def) [](https://github.com/Censkh/api-def/actions)
|
|
2
2
|
|
|
3
3
|
Typed APIs with middleware support
|
|
4
4
|
|
package/cjs/Api.d.ts
CHANGED
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import Endpoint from "./Endpoint";
|
|
2
|
+
import { ApiResponse, BaseRequestConfig, RequestConfig, RequestMiddleware } from "./ApiTypes";
|
|
3
3
|
import RequestBackend from "./backend/RequestBackend";
|
|
4
4
|
import EndpointBuilder from "./EndpointBuilder";
|
|
5
|
-
|
|
6
|
-
export declare
|
|
5
|
+
import { ApiMockingConfig } from "./MockingTypes";
|
|
6
|
+
export declare const getRequestBackend: () => RequestBackend | null;
|
|
7
|
+
export declare const isRequestBackendDefault: () => boolean;
|
|
7
8
|
export declare const setRequestBackend: (backend: RequestBackend) => void;
|
|
8
9
|
export interface ApiInfo {
|
|
9
10
|
readonly name: string;
|
|
10
11
|
readonly baseUrl: string;
|
|
11
12
|
readonly middleware?: RequestMiddleware[];
|
|
12
13
|
readonly config?: BaseRequestConfig | (() => BaseRequestConfig);
|
|
13
|
-
readonly mocking?:
|
|
14
|
-
}
|
|
15
|
-
export interface ApiMocking extends MockingConfig {
|
|
16
|
-
loaderPromise: null | Promise<ModulePossiblyDefault<any>>;
|
|
17
|
-
loaded: boolean;
|
|
14
|
+
readonly mocking?: ApiMockingConfig;
|
|
18
15
|
}
|
|
19
16
|
export declare class Api implements ApiInfo {
|
|
20
17
|
readonly baseUrl: string;
|
|
21
18
|
readonly name: string;
|
|
22
19
|
readonly middleware: RequestMiddleware[];
|
|
23
20
|
readonly config?: BaseRequestConfig | (() => BaseRequestConfig);
|
|
24
|
-
readonly mocking
|
|
25
|
-
|
|
21
|
+
readonly mocking?: ApiMockingConfig;
|
|
22
|
+
protected readonly endpoints: Record<string, Endpoint>;
|
|
26
23
|
constructor(info: ApiInfo);
|
|
27
24
|
endpoint(): EndpointBuilder;
|
|
28
25
|
getConfig(): BaseRequestConfig;
|
|
29
|
-
|
|
30
|
-
get<R = unknown>(path: string, config: RequestConfig)
|
|
31
|
-
post<R = unknown>(path: string, config: RequestConfig)
|
|
32
|
-
|
|
26
|
+
private hotRequest;
|
|
27
|
+
get: <R = unknown>(path: string, config: RequestConfig) => Promise<ApiResponse<R>>;
|
|
28
|
+
post: <R = unknown>(path: string, config: RequestConfig) => Promise<ApiResponse<R>>;
|
|
29
|
+
put: <R = unknown>(path: string, config: RequestConfig) => Promise<ApiResponse<R>>;
|
|
30
|
+
delete: <R = unknown>(path: string, config: RequestConfig) => Promise<ApiResponse<R>>;
|
|
33
31
|
}
|
package/cjs/Api.js
CHANGED
|
@@ -36,18 +36,26 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.Api = exports.setRequestBackend = exports.
|
|
39
|
+
exports.Api = exports.setRequestBackend = exports.isRequestBackendDefault = exports.getRequestBackend = void 0;
|
|
40
40
|
var Requester = require("./Requester");
|
|
41
41
|
var EndpointBuilder_1 = require("./EndpointBuilder");
|
|
42
42
|
var Utils = require("./Utils");
|
|
43
43
|
var FetchRequestBackend_1 = require("./backend/FetchRequestBackend");
|
|
44
44
|
var ApiConstants_1 = require("./ApiConstants");
|
|
45
45
|
// use fetch as default if it is present
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
var requestBackend = Utils.getGlobalFetch() ? new FetchRequestBackend_1.default() : null;
|
|
47
|
+
var requestBackendIsDefault = true;
|
|
48
|
+
var getRequestBackend = function () {
|
|
49
|
+
return requestBackend;
|
|
50
|
+
};
|
|
51
|
+
exports.getRequestBackend = getRequestBackend;
|
|
52
|
+
var isRequestBackendDefault = function () {
|
|
53
|
+
return requestBackendIsDefault;
|
|
54
|
+
};
|
|
55
|
+
exports.isRequestBackendDefault = isRequestBackendDefault;
|
|
48
56
|
var setRequestBackend = function (backend) {
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
requestBackendIsDefault = false;
|
|
58
|
+
requestBackend = backend;
|
|
51
59
|
};
|
|
52
60
|
exports.setRequestBackend = setRequestBackend;
|
|
53
61
|
var HotRequestHost = /** @class */ (function () {
|
|
@@ -75,18 +83,27 @@ var HotRequestHost = /** @class */ (function () {
|
|
|
75
83
|
}());
|
|
76
84
|
var Api = /** @class */ (function () {
|
|
77
85
|
function Api(info) {
|
|
86
|
+
var _this = this;
|
|
87
|
+
var _a;
|
|
78
88
|
this.endpoints = {};
|
|
89
|
+
this.hotRequest = function (requestMethod) { return function (path, config) { return __awaiter(_this, void 0, void 0, function () {
|
|
90
|
+
return __generator(this, function (_a) {
|
|
91
|
+
switch (_a.label) {
|
|
92
|
+
case 0: return [4 /*yield*/, Requester.submit(new HotRequestHost(this, path, requestMethod), config, null)];
|
|
93
|
+
case 1: return [2 /*return*/, (_a.sent())];
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}); }; };
|
|
97
|
+
this.get = this.hotRequest(ApiConstants_1.RequestMethod.GET);
|
|
98
|
+
this.post = this.hotRequest(ApiConstants_1.RequestMethod.POST);
|
|
99
|
+
this.put = this.hotRequest(ApiConstants_1.RequestMethod.PUT);
|
|
100
|
+
this.delete = this.hotRequest(ApiConstants_1.RequestMethod.DELETE);
|
|
79
101
|
this.name = info.name;
|
|
80
102
|
this.baseUrl = info.baseUrl;
|
|
81
103
|
this.middleware = info.middleware || [];
|
|
82
104
|
this.endpoints = {};
|
|
83
105
|
this.config = info.config;
|
|
84
|
-
this.mocking =
|
|
85
|
-
info.mocking &&
|
|
86
|
-
Utils.assign(info.mocking, {
|
|
87
|
-
loaderPromise: null,
|
|
88
|
-
loaded: false,
|
|
89
|
-
});
|
|
106
|
+
this.mocking = (_a = info.mocking) !== null && _a !== void 0 ? _a : undefined;
|
|
90
107
|
}
|
|
91
108
|
Api.prototype.endpoint = function () {
|
|
92
109
|
return new EndpointBuilder_1.default(this);
|
|
@@ -95,36 +112,6 @@ var Api = /** @class */ (function () {
|
|
|
95
112
|
return ((typeof this.config === "function" ? this.config() : this.config) ||
|
|
96
113
|
{});
|
|
97
114
|
};
|
|
98
|
-
Api.prototype.getEventHandlers = function () {
|
|
99
|
-
return {};
|
|
100
|
-
};
|
|
101
|
-
Api.prototype.get = function (path, config) {
|
|
102
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
103
|
-
return __generator(this, function (_a) {
|
|
104
|
-
switch (_a.label) {
|
|
105
|
-
case 0: return [4 /*yield*/, Requester.submit(new HotRequestHost(this, path, ApiConstants_1.RequestMethod.Get), config)];
|
|
106
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
Api.prototype.post = function (path, config) {
|
|
112
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
113
|
-
return __generator(this, function (_a) {
|
|
114
|
-
switch (_a.label) {
|
|
115
|
-
case 0: return [4 /*yield*/, Requester.submit(new HotRequestHost(this, path, ApiConstants_1.RequestMethod.Post), config)];
|
|
116
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
};
|
|
121
|
-
Api.prototype.getEndpointMocks = function () {
|
|
122
|
-
var _this = this;
|
|
123
|
-
return Object.keys(this.endpoints).reduce(function (mocks, key) {
|
|
124
|
-
mocks[key] = _this.endpoints[key].mocking;
|
|
125
|
-
return mocks;
|
|
126
|
-
}, {});
|
|
127
|
-
};
|
|
128
115
|
return Api;
|
|
129
116
|
}());
|
|
130
117
|
exports.Api = Api;
|
package/cjs/ApiConstants.d.ts
CHANGED
|
@@ -1,29 +1,57 @@
|
|
|
1
1
|
import { EnumOf } from "./Utils";
|
|
2
2
|
export declare const RequestMethod: {
|
|
3
|
+
/** @deprecated use 'POST' */
|
|
3
4
|
readonly Post: "post";
|
|
5
|
+
/** @deprecated use 'GET' */
|
|
4
6
|
readonly Get: "get";
|
|
7
|
+
readonly POST: "post";
|
|
8
|
+
readonly GET: "get";
|
|
9
|
+
readonly PUT: "put";
|
|
10
|
+
readonly DELETE: "delete";
|
|
5
11
|
};
|
|
6
12
|
export declare type RequestMethod = EnumOf<typeof RequestMethod>;
|
|
7
13
|
export declare const RequestEvent: {
|
|
14
|
+
/** @deprecated use 'BEFORE_SEND' */
|
|
8
15
|
readonly BeforeSend: "beforeSend";
|
|
16
|
+
/** @deprecated use 'SUCCESS' */
|
|
9
17
|
readonly Success: "success";
|
|
18
|
+
/** @deprecated use 'ERROR' */
|
|
10
19
|
readonly Error: "error";
|
|
20
|
+
/** @deprecated use 'UNRECOVERABLE_ERROR' */
|
|
11
21
|
readonly UnrecoverableError: "unrecoverableError";
|
|
22
|
+
readonly BEFORE_SEND: "beforeSend";
|
|
23
|
+
readonly SUCCESS: "success";
|
|
24
|
+
readonly ERROR: "error";
|
|
25
|
+
readonly UNRECOVERABLE_ERROR: "unrecoverableError";
|
|
12
26
|
};
|
|
13
27
|
export declare type RequestEvent = EnumOf<typeof RequestEvent>;
|
|
14
28
|
export declare const EventResultType: {
|
|
29
|
+
/** @deprecated use 'RESPOND' */
|
|
15
30
|
readonly Respond: "respond";
|
|
31
|
+
/** @deprecated use 'RETRY' */
|
|
16
32
|
readonly Retry: "retry";
|
|
33
|
+
readonly RESPOND: "respond";
|
|
34
|
+
readonly RETRY: "retry";
|
|
17
35
|
};
|
|
18
36
|
export declare type EventResultType = EnumOf<typeof EventResultType>;
|
|
19
37
|
export declare const CacheSource: {
|
|
38
|
+
/** @deprecated use 'API' */
|
|
20
39
|
readonly Api: "api";
|
|
40
|
+
/** @deprecated use 'LOCAL' */
|
|
21
41
|
readonly Local: "local";
|
|
42
|
+
readonly API: "api";
|
|
43
|
+
readonly LOCAL: "local";
|
|
22
44
|
};
|
|
23
45
|
export declare type CacheSource = EnumOf<typeof CacheSource>;
|
|
24
46
|
export declare const ResponseType: {
|
|
47
|
+
/** @deprecated use 'JSON' */
|
|
25
48
|
readonly Json: "json";
|
|
49
|
+
/** @deprecated use 'TEXT' */
|
|
26
50
|
readonly Text: "text";
|
|
51
|
+
/** @deprecated use 'ARRAY_BUFFER' */
|
|
27
52
|
readonly ArrayBuffer: "arraybuffer";
|
|
53
|
+
readonly JSON: "json";
|
|
54
|
+
readonly TEXT: "text";
|
|
55
|
+
readonly ARRAY_BUFFER: "arraybuffer";
|
|
28
56
|
};
|
|
29
57
|
export declare type ResponseType = EnumOf<typeof ResponseType>;
|
package/cjs/ApiConstants.js
CHANGED
|
@@ -2,25 +2,53 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ResponseType = exports.CacheSource = exports.EventResultType = exports.RequestEvent = exports.RequestMethod = void 0;
|
|
4
4
|
exports.RequestMethod = {
|
|
5
|
+
/** @deprecated use 'POST' */
|
|
5
6
|
Post: "post",
|
|
7
|
+
/** @deprecated use 'GET' */
|
|
6
8
|
Get: "get",
|
|
9
|
+
POST: "post",
|
|
10
|
+
GET: "get",
|
|
11
|
+
PUT: "put",
|
|
12
|
+
DELETE: "delete",
|
|
7
13
|
};
|
|
8
14
|
exports.RequestEvent = {
|
|
15
|
+
/** @deprecated use 'BEFORE_SEND' */
|
|
9
16
|
BeforeSend: "beforeSend",
|
|
17
|
+
/** @deprecated use 'SUCCESS' */
|
|
10
18
|
Success: "success",
|
|
19
|
+
/** @deprecated use 'ERROR' */
|
|
11
20
|
Error: "error",
|
|
21
|
+
/** @deprecated use 'UNRECOVERABLE_ERROR' */
|
|
12
22
|
UnrecoverableError: "unrecoverableError",
|
|
23
|
+
BEFORE_SEND: "beforeSend",
|
|
24
|
+
SUCCESS: "success",
|
|
25
|
+
ERROR: "error",
|
|
26
|
+
UNRECOVERABLE_ERROR: "unrecoverableError",
|
|
13
27
|
};
|
|
14
28
|
exports.EventResultType = {
|
|
29
|
+
/** @deprecated use 'RESPOND' */
|
|
15
30
|
Respond: "respond",
|
|
31
|
+
/** @deprecated use 'RETRY' */
|
|
16
32
|
Retry: "retry",
|
|
33
|
+
RESPOND: "respond",
|
|
34
|
+
RETRY: "retry",
|
|
17
35
|
};
|
|
18
36
|
exports.CacheSource = {
|
|
37
|
+
/** @deprecated use 'API' */
|
|
19
38
|
Api: "api",
|
|
39
|
+
/** @deprecated use 'LOCAL' */
|
|
20
40
|
Local: "local",
|
|
41
|
+
API: "api",
|
|
42
|
+
LOCAL: "local",
|
|
21
43
|
};
|
|
22
44
|
exports.ResponseType = {
|
|
45
|
+
/** @deprecated use 'JSON' */
|
|
23
46
|
Json: "json",
|
|
47
|
+
/** @deprecated use 'TEXT' */
|
|
24
48
|
Text: "text",
|
|
49
|
+
/** @deprecated use 'ARRAY_BUFFER' */
|
|
25
50
|
ArrayBuffer: "arraybuffer",
|
|
51
|
+
JSON: "json",
|
|
52
|
+
TEXT: "text",
|
|
53
|
+
ARRAY_BUFFER: "arraybuffer",
|
|
26
54
|
};
|
package/cjs/ApiTypes.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import RequestContext from "./RequestContext";
|
|
2
2
|
import { Api } from "./Api";
|
|
3
3
|
import { CacheSource, EventResultType, RequestEvent, RequestMethod, ResponseType } from "./ApiConstants";
|
|
4
|
-
export declare type
|
|
5
|
-
default?: T;
|
|
6
|
-
};
|
|
4
|
+
export declare type AcceptableStatus = number | [min: number, max: number];
|
|
7
5
|
export declare type Headers = Record<string, string | number | boolean | null | undefined>;
|
|
8
6
|
export declare type Params = string;
|
|
9
7
|
export declare type Query = Record<string, string | number | boolean | undefined | null>;
|
|
@@ -18,6 +16,7 @@ export interface BaseRequestConfig {
|
|
|
18
16
|
lock?: string | false;
|
|
19
17
|
retry?: number | false;
|
|
20
18
|
headers?: Readonly<Headers>;
|
|
19
|
+
acceptableStatus?: AcceptableStatus[];
|
|
21
20
|
}
|
|
22
21
|
export declare type RequestConfig<P extends Params | undefined = Params | undefined, Q extends Query | undefined = Query | undefined, B extends Body | undefined = Body | undefined> = (P extends undefined ? {
|
|
23
22
|
params?: never;
|
|
@@ -54,10 +53,6 @@ export interface RequestContextStats {
|
|
|
54
53
|
};
|
|
55
54
|
attempt: number;
|
|
56
55
|
}
|
|
57
|
-
export interface RequestError extends Error {
|
|
58
|
-
name: "RequestError";
|
|
59
|
-
response?: ApiResponse;
|
|
60
|
-
}
|
|
61
56
|
export interface RequestHost {
|
|
62
57
|
readonly method: RequestMethod;
|
|
63
58
|
readonly api: Api;
|
package/cjs/ApiUtils.d.ts
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import { ApiResponse, CancelledRequestError
|
|
2
|
-
export declare class ResponseBuilder<R> {
|
|
3
|
-
private _data;
|
|
4
|
-
private _status;
|
|
5
|
-
send(data: R): ApiResponse<R>;
|
|
6
|
-
data(data: R): this;
|
|
7
|
-
status(status: number): this;
|
|
8
|
-
build(): ApiResponse<R>;
|
|
9
|
-
}
|
|
1
|
+
import { AcceptableStatus, ApiResponse, CancelledRequestError } from "./ApiTypes";
|
|
10
2
|
export declare const isCancelledError: (error: Error) => error is CancelledRequestError;
|
|
11
3
|
export declare const isNetworkError: (error: Error) => boolean;
|
|
12
|
-
export declare const isRequestError: (error: Error) => error is RequestError;
|
|
13
4
|
export declare const parseResponseDataToObject: (response: ApiResponse) => void;
|
|
5
|
+
export declare const isAcceptableStatus: (status: number, acceptableStatus?: AcceptableStatus[] | undefined) => boolean;
|
package/cjs/ApiUtils.js
CHANGED
|
@@ -1,35 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var
|
|
5
|
-
function ResponseBuilder() {
|
|
6
|
-
this._status = 200;
|
|
7
|
-
}
|
|
8
|
-
ResponseBuilder.prototype.send = function (data) {
|
|
9
|
-
this.data(data);
|
|
10
|
-
return this.build();
|
|
11
|
-
};
|
|
12
|
-
ResponseBuilder.prototype.data = function (data) {
|
|
13
|
-
this._data = data;
|
|
14
|
-
return this;
|
|
15
|
-
};
|
|
16
|
-
ResponseBuilder.prototype.status = function (status) {
|
|
17
|
-
this._status = status;
|
|
18
|
-
return this;
|
|
19
|
-
};
|
|
20
|
-
ResponseBuilder.prototype.build = function () {
|
|
21
|
-
if (this._data === undefined) {
|
|
22
|
-
throw new Error("Response builder doesn't have a response");
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
headers: {},
|
|
26
|
-
data: this._data,
|
|
27
|
-
status: this._status,
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
return ResponseBuilder;
|
|
31
|
-
}());
|
|
32
|
-
exports.ResponseBuilder = ResponseBuilder;
|
|
3
|
+
exports.isAcceptableStatus = exports.parseResponseDataToObject = exports.isNetworkError = exports.isCancelledError = void 0;
|
|
4
|
+
var TextDecoding_1 = require("./TextDecoding");
|
|
33
5
|
var isCancelledError = function (error) {
|
|
34
6
|
return "isCancelledRequest" in error;
|
|
35
7
|
};
|
|
@@ -41,18 +13,13 @@ var isNetworkError = function (error) {
|
|
|
41
13
|
((_a = error.constructor) === null || _a === void 0 ? void 0 : _a.name) === "NetworkError");
|
|
42
14
|
};
|
|
43
15
|
exports.isNetworkError = isNetworkError;
|
|
44
|
-
var isRequestError = function (error) {
|
|
45
|
-
return "response" in error;
|
|
46
|
-
};
|
|
47
|
-
exports.isRequestError = isRequestError;
|
|
48
16
|
var parseResponseDataToObject = function (response) {
|
|
49
|
-
if (
|
|
50
|
-
response.data &&
|
|
17
|
+
if (response.data &&
|
|
51
18
|
typeof response.data === "object") {
|
|
52
19
|
var data = response.data;
|
|
53
20
|
if (data.constructor && data.constructor.name === "ArrayBuffer") {
|
|
54
21
|
try {
|
|
55
|
-
var decodedData = (response.data =
|
|
22
|
+
var decodedData = (response.data = TextDecoding_1.textDecode(data));
|
|
56
23
|
response.data = JSON.parse(decodedData);
|
|
57
24
|
}
|
|
58
25
|
catch (e) {
|
|
@@ -62,3 +29,23 @@ var parseResponseDataToObject = function (response) {
|
|
|
62
29
|
}
|
|
63
30
|
};
|
|
64
31
|
exports.parseResponseDataToObject = parseResponseDataToObject;
|
|
32
|
+
var DEFAULT_ACCEPTABLE_STATUS = [[200, 299], 304];
|
|
33
|
+
var isAcceptableStatus = function (status, acceptableStatus) {
|
|
34
|
+
var acceptable = acceptableStatus !== null && acceptableStatus !== void 0 ? acceptableStatus : DEFAULT_ACCEPTABLE_STATUS;
|
|
35
|
+
for (var _i = 0, acceptable_1 = acceptable; _i < acceptable_1.length; _i++) {
|
|
36
|
+
var cmpStatus = acceptable_1[_i];
|
|
37
|
+
if (Array.isArray(cmpStatus)) {
|
|
38
|
+
var min = cmpStatus[0], max = cmpStatus[1];
|
|
39
|
+
if (status >= min && status <= max) {
|
|
40
|
+
return (true);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else if (!isNaN(cmpStatus)) {
|
|
44
|
+
if (status === cmpStatus) {
|
|
45
|
+
return (true);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return (false);
|
|
50
|
+
};
|
|
51
|
+
exports.isAcceptableStatus = isAcceptableStatus;
|
package/cjs/Endpoint.d.ts
CHANGED
|
@@ -1,15 +1,33 @@
|
|
|
1
1
|
import { Api } from "./Api";
|
|
2
2
|
import { ApiResponse, BaseRequestConfig, Body, Params, Query, RequestConfig, RequestHost } from "./ApiTypes";
|
|
3
|
-
import
|
|
3
|
+
import * as Mocking from "./MockingTypes";
|
|
4
4
|
import { RequestMethod, ResponseType } from "./ApiConstants";
|
|
5
5
|
export interface EndpointConfig<R, P extends Params | undefined, Q extends Query | undefined, B extends Body | undefined> {
|
|
6
6
|
readonly id: string;
|
|
7
7
|
readonly method: RequestMethod;
|
|
8
|
+
readonly path: string;
|
|
9
|
+
/**
|
|
10
|
+
* Name your endpoint to help with debugging and documentation
|
|
11
|
+
* @default `id` is used as the name if no name is supplied
|
|
12
|
+
*/
|
|
8
13
|
readonly name?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Describe your endpoint to help with debugging and documentation
|
|
16
|
+
*/
|
|
9
17
|
readonly description?: string;
|
|
10
|
-
readonly path: string;
|
|
11
18
|
readonly config?: BaseRequestConfig;
|
|
19
|
+
/**
|
|
20
|
+
* Let the backend requestor (fetch, axios, etc.) know what type of response
|
|
21
|
+
* you are expecting from this endpoint
|
|
22
|
+
* @default `application/json`
|
|
23
|
+
*/
|
|
12
24
|
readonly responseType?: ResponseType;
|
|
25
|
+
/**
|
|
26
|
+
* Specify mocking for your endpoint upfront to help with disconnected dev,
|
|
27
|
+
* and testing.
|
|
28
|
+
* Enable/disable mocked returns for all endpoints on your API object.
|
|
29
|
+
*/
|
|
30
|
+
readonly mocking?: Mocking.EndpointMockingConfig<R, P, Q, B>;
|
|
13
31
|
}
|
|
14
32
|
export default class Endpoint<R = any, P extends Params | undefined = Params | undefined, Q extends Query | undefined = Query | undefined, B extends Body | undefined = Body | undefined> implements EndpointConfig<R, P, Q, B>, RequestHost {
|
|
15
33
|
readonly api: Api;
|
|
@@ -20,12 +38,10 @@ export default class Endpoint<R = any, P extends Params | undefined = Params | u
|
|
|
20
38
|
readonly path: string;
|
|
21
39
|
readonly config?: BaseRequestConfig;
|
|
22
40
|
readonly responseType: ResponseType;
|
|
23
|
-
mocking
|
|
41
|
+
readonly mocking?: Mocking.EndpointMockingConfig<R, P, Q, B>;
|
|
24
42
|
constructor(api: Api, info: EndpointConfig<R, P, Q, B>);
|
|
25
43
|
submit(config: RequestConfig<P, Q, B>): Promise<ApiResponse<R>>;
|
|
26
44
|
computePath(path: string, request: RequestConfig): string;
|
|
27
|
-
mock(mocker: MockingFunction<R, P, Q, B>): this;
|
|
28
|
-
mockBypass(): this;
|
|
29
45
|
get baseUrl(): string;
|
|
30
46
|
computeConfig<P extends Params | undefined, Q extends Query | undefined, B extends Body | undefined>(config: RequestConfig<P, Q, B>): RequestConfig<P, Q, B>;
|
|
31
47
|
}
|
package/cjs/Endpoint.js
CHANGED
|
@@ -37,12 +37,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
var Requester = require("./Requester");
|
|
40
|
-
var Mocking = require("./Mocking");
|
|
41
40
|
var Utils = require("./Utils");
|
|
42
41
|
var ApiConstants_1 = require("./ApiConstants");
|
|
43
42
|
var Endpoint = /** @class */ (function () {
|
|
44
43
|
function Endpoint(api, info) {
|
|
45
|
-
this.mocking = null;
|
|
46
44
|
this.api = api;
|
|
47
45
|
this.id = info.id;
|
|
48
46
|
this.method = info.method;
|
|
@@ -51,26 +49,25 @@ var Endpoint = /** @class */ (function () {
|
|
|
51
49
|
this.path = info.path;
|
|
52
50
|
this.config = info.config;
|
|
53
51
|
this.responseType = info.responseType || ApiConstants_1.ResponseType.Json;
|
|
52
|
+
this.mocking = info.mocking;
|
|
54
53
|
}
|
|
55
54
|
Endpoint.prototype.submit = function (config) {
|
|
56
|
-
var _a;
|
|
55
|
+
var _a, _b;
|
|
57
56
|
return __awaiter(this, void 0, void 0, function () {
|
|
58
|
-
var apiMocking;
|
|
59
|
-
return __generator(this, function (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
_b.label = 2;
|
|
71
|
-
case 2: return [2 /*return*/, Mocking.mockRequest(this, config)];
|
|
72
|
-
case 3: return [2 /*return*/, Requester.submit(this, config)];
|
|
57
|
+
var mock, apiMocking, mockingEnabled;
|
|
58
|
+
return __generator(this, function (_c) {
|
|
59
|
+
mock = false;
|
|
60
|
+
apiMocking = this.api.mocking;
|
|
61
|
+
if (apiMocking) {
|
|
62
|
+
mockingEnabled = (_a = (typeof apiMocking.enabled === "function" ? apiMocking.enabled() : apiMocking.enabled)) !== null && _a !== void 0 ? _a : false;
|
|
63
|
+
if (mockingEnabled) {
|
|
64
|
+
if (!((_b = this.mocking) === null || _b === void 0 ? void 0 : _b.handler)) {
|
|
65
|
+
throw new Error("[api-def] Endpoint for '" + this.path + "' has no mocking");
|
|
66
|
+
}
|
|
67
|
+
mock = true;
|
|
68
|
+
}
|
|
73
69
|
}
|
|
70
|
+
return [2 /*return*/, Requester.submit(this, config, mock ? this.mocking : null)];
|
|
74
71
|
});
|
|
75
72
|
});
|
|
76
73
|
};
|
|
@@ -84,22 +81,10 @@ var Endpoint = /** @class */ (function () {
|
|
|
84
81
|
}
|
|
85
82
|
}
|
|
86
83
|
if (computedPath.includes(":")) {
|
|
87
|
-
throw new Error("Not all path params have been resolved: '" + computedPath + "'");
|
|
84
|
+
throw new Error("[api-def] Not all path params have been resolved: '" + computedPath + "'");
|
|
88
85
|
}
|
|
89
86
|
return computedPath;
|
|
90
87
|
};
|
|
91
|
-
Endpoint.prototype.mock = function (mocker) {
|
|
92
|
-
this.mocking = {
|
|
93
|
-
func: mocker,
|
|
94
|
-
};
|
|
95
|
-
return this;
|
|
96
|
-
};
|
|
97
|
-
Endpoint.prototype.mockBypass = function () {
|
|
98
|
-
this.mocking = {
|
|
99
|
-
bypass: true,
|
|
100
|
-
};
|
|
101
|
-
return this;
|
|
102
|
-
};
|
|
103
88
|
Object.defineProperty(Endpoint.prototype, "baseUrl", {
|
|
104
89
|
get: function () {
|
|
105
90
|
return this.api.baseUrl;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ApiResponse, Body, Headers, Params, Query } from "./ApiTypes";
|
|
2
|
+
export interface ApiMockingConfig {
|
|
3
|
+
enabled: boolean | (() => boolean);
|
|
4
|
+
}
|
|
5
|
+
export interface MockRequest<R = any, P extends Params | undefined = Params | undefined, Q extends Query | undefined = Query | undefined, B extends Body | undefined = Body | undefined> {
|
|
6
|
+
params: P extends Params ? Record<P, string> : {};
|
|
7
|
+
body: B;
|
|
8
|
+
query: Q;
|
|
9
|
+
headers: Readonly<Headers>;
|
|
10
|
+
}
|
|
11
|
+
export interface MockResponse<R = any, P extends Params | undefined = Params | undefined, Q extends Query | undefined = Query | undefined, B extends Body | undefined = Body | undefined> {
|
|
12
|
+
statusCode: number;
|
|
13
|
+
response: R | undefined;
|
|
14
|
+
status(statusCode: number): this;
|
|
15
|
+
send(response: R): this;
|
|
16
|
+
}
|
|
17
|
+
export declare type MockRequestError = Error & {
|
|
18
|
+
response?: ApiResponse;
|
|
19
|
+
};
|
|
20
|
+
export declare type EndpointMockingFunction<R = any, P extends Params | undefined = Params | undefined, Q extends Query | undefined = Query | undefined, B extends Body | undefined = Body | undefined> = (req: MockRequest<R, P, Q, B>, res: MockResponse<R, P, Q, B>) => Promise<MockResponse<R, P, Q, B>> | MockResponse<R, P, Q, B>;
|
|
21
|
+
export interface EndpointMockingConfig<R = any, P extends Params | undefined = Params | undefined, Q extends Query | undefined = Query | undefined, B extends Body | undefined = Body | undefined> {
|
|
22
|
+
/**-
|
|
23
|
+
* The range supplied will be used to simulate the lag in obtaining a response
|
|
24
|
+
* your endpoint. If no values are supplied, a response will be returned immediately
|
|
25
|
+
*/
|
|
26
|
+
delay?: number | [minMs: number, maxMs: number];
|
|
27
|
+
handler: EndpointMockingFunction<R, P, Q, B>;
|
|
28
|
+
}
|
|
File without changes
|
package/cjs/RequestContext.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { ApiResponse, Body, EventResult, Headers, Params, Query, RequestCacheInfo, RequestConfig, RequestContextStats,
|
|
1
|
+
import { ApiResponse, Body, EventResult, Headers, Params, Query, RequestCacheInfo, RequestConfig, RequestContextStats, RequestEventHandlers, RequestHost } from "./ApiTypes";
|
|
2
2
|
import { Api } from "./Api";
|
|
3
3
|
import { RequestEvent, RequestMethod, ResponseType } from "./ApiConstants";
|
|
4
|
+
import { EndpointMockingConfig } from "./MockingTypes";
|
|
5
|
+
import { RequestError } from "./RequestError";
|
|
6
|
+
import RequestBackend from "./backend/RequestBackend";
|
|
4
7
|
export default class RequestContext<R = any, P extends Params | undefined = Params | undefined, Q extends Query | undefined = Query | undefined, B extends Body | undefined = Body | undefined> {
|
|
5
8
|
readonly id: number;
|
|
6
9
|
readonly key: string;
|
|
@@ -8,18 +11,20 @@ export default class RequestContext<R = any, P extends Params | undefined = Para
|
|
|
8
11
|
readonly stats: RequestContextStats;
|
|
9
12
|
private readonly host;
|
|
10
13
|
readonly eventHandlers: RequestEventHandlers<R>;
|
|
14
|
+
readonly backend: RequestBackend;
|
|
11
15
|
private canceler;
|
|
12
|
-
response: ApiResponse<R> | null;
|
|
16
|
+
response: ApiResponse<R> | null | undefined;
|
|
13
17
|
error: RequestError | null;
|
|
14
18
|
readonly cacheInfo: RequestCacheInfo;
|
|
15
19
|
cancelled: boolean;
|
|
16
20
|
readonly computedConfig: RequestConfig<P, Q, B>;
|
|
17
|
-
|
|
21
|
+
readonly mocking: EndpointMockingConfig<R, P, Q, B> | null | undefined;
|
|
22
|
+
constructor(backend: RequestBackend, host: RequestHost, config: RequestConfig<P, Q, B>, computedPath: string, mocking: EndpointMockingConfig<R, P, Q, B> | null | undefined);
|
|
18
23
|
get method(): RequestMethod;
|
|
19
24
|
get api(): Api;
|
|
20
25
|
get baseUrl(): string;
|
|
21
26
|
get responseType(): ResponseType;
|
|
22
|
-
initMiddleware
|
|
27
|
+
private initMiddleware;
|
|
23
28
|
private generateKey;
|
|
24
29
|
updateHeaders(newHeaders: Headers): this;
|
|
25
30
|
updateQuery(newQuery: Partial<Q>): this;
|
package/cjs/RequestContext.js
CHANGED
|
@@ -39,12 +39,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
var Utils = require("./Utils");
|
|
40
40
|
var contextIdCounter = 0;
|
|
41
41
|
var RequestContext = /** @class */ (function () {
|
|
42
|
-
function RequestContext(host, config, computedPath) {
|
|
42
|
+
function RequestContext(backend, host, config, computedPath, mocking) {
|
|
43
43
|
this.canceler = null;
|
|
44
|
-
this.response =
|
|
44
|
+
this.response = undefined;
|
|
45
45
|
this.error = null;
|
|
46
46
|
this.cacheInfo = { cached: false, source: null };
|
|
47
47
|
this.cancelled = false;
|
|
48
|
+
this.backend = backend;
|
|
48
49
|
this.id = contextIdCounter++;
|
|
49
50
|
this.host = host;
|
|
50
51
|
this.computedConfig = config;
|
|
@@ -56,6 +57,7 @@ var RequestContext = /** @class */ (function () {
|
|
|
56
57
|
cached: false,
|
|
57
58
|
};
|
|
58
59
|
this.eventHandlers = {};
|
|
60
|
+
this.mocking = mocking;
|
|
59
61
|
this.initMiddleware();
|
|
60
62
|
}
|
|
61
63
|
Object.defineProperty(RequestContext.prototype, "method", {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ApiResponse } from "./ApiTypes";
|
|
2
|
+
import { EnumOf } from "./Utils";
|
|
3
|
+
export declare const RequestErrorCode: {
|
|
4
|
+
readonly MISC_UNKNOWN_ERROR: "misc/unknown-error";
|
|
5
|
+
readonly REQUEST_NETWORK_ERROR: "request/network-error";
|
|
6
|
+
readonly REQUEST_INVALID_STATUS: "request/invalid-status";
|
|
7
|
+
readonly REQUEST_INVALID_CONFIG: "request/invalid-config";
|
|
8
|
+
};
|
|
9
|
+
export declare type RequestErrorCode = EnumOf<typeof RequestErrorCode>;
|
|
10
|
+
export interface RequestError extends Error {
|
|
11
|
+
isRequestError: true;
|
|
12
|
+
response: ApiResponse | undefined | null;
|
|
13
|
+
code: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const isRequestError: (error: Error) => error is RequestError;
|
|
16
|
+
export interface RequestErrorConfig {
|
|
17
|
+
error: Error;
|
|
18
|
+
code: string;
|
|
19
|
+
response?: ApiResponse | null;
|
|
20
|
+
}
|
|
21
|
+
export declare const convertToRequestError: (config: RequestErrorConfig) => RequestError;
|