api-def 0.9.1 → 0.9.3

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 (122) hide show
  1. package/README.md +1 -1
  2. package/cjs/Api.d.ts +35 -35
  3. package/cjs/Api.js +140 -144
  4. package/cjs/ApiConstants.d.ts +58 -58
  5. package/cjs/ApiConstants.js +55 -55
  6. package/cjs/ApiTypes.d.ts +103 -103
  7. package/cjs/ApiTypes.js +4 -4
  8. package/cjs/ApiUtils.d.ts +6 -6
  9. package/cjs/ApiUtils.js +51 -53
  10. package/cjs/Endpoint.d.ts +52 -52
  11. package/cjs/Endpoint.js +104 -108
  12. package/cjs/EndpointBuilder.d.ts +14 -14
  13. package/cjs/EndpointBuilder.js +46 -46
  14. package/cjs/MockingTypes.d.ts +30 -30
  15. package/cjs/MockingTypes.js +2 -2
  16. package/cjs/QueryHandling.d.ts +3 -3
  17. package/cjs/QueryHandling.js +24 -24
  18. package/cjs/RequestConfig.d.ts +2 -2
  19. package/cjs/RequestConfig.js +74 -74
  20. package/cjs/RequestContext.d.ts +48 -48
  21. package/cjs/RequestContext.js +235 -238
  22. package/cjs/RequestError.d.ts +30 -30
  23. package/cjs/RequestError.js +47 -47
  24. package/cjs/Requester.d.ts +3 -3
  25. package/cjs/Requester.js +335 -336
  26. package/cjs/TextDecoding.d.ts +1 -1
  27. package/cjs/TextDecoding.js +152 -139
  28. package/cjs/UtilTypes.d.ts +5 -5
  29. package/cjs/UtilTypes.js +2 -2
  30. package/cjs/Utils.d.ts +15 -15
  31. package/cjs/Utils.js +79 -77
  32. package/cjs/Validation.d.ts +8 -8
  33. package/cjs/Validation.js +2 -2
  34. package/cjs/backend/AxiosRequestBackend.d.ts +13 -13
  35. package/cjs/backend/AxiosRequestBackend.js +99 -99
  36. package/cjs/backend/FetchRequestBackend.d.ts +15 -15
  37. package/cjs/backend/FetchRequestBackend.js +203 -202
  38. package/cjs/backend/MockRequestBackend.d.ts +11 -11
  39. package/cjs/backend/MockRequestBackend.js +164 -164
  40. package/cjs/backend/RequestBackend.d.ts +19 -19
  41. package/cjs/backend/RequestBackend.js +2 -2
  42. package/cjs/cache/CacheBackend.d.ts +6 -6
  43. package/cjs/cache/CacheBackend.js +2 -2
  44. package/cjs/cache/Caching.d.ts +10 -10
  45. package/cjs/cache/Caching.js +88 -88
  46. package/cjs/cache/LocalForageCacheBackend.d.ts +9 -9
  47. package/cjs/cache/LocalForageCacheBackend.js +24 -24
  48. package/cjs/cache/LocalStorageCacheBackend.d.ts +7 -7
  49. package/cjs/cache/LocalStorageCacheBackend.js +77 -77
  50. package/cjs/index.d.ts +13 -13
  51. package/cjs/index.js +41 -41
  52. package/cjs/middleware/CacheMiddleware.d.ts +7 -7
  53. package/cjs/middleware/CacheMiddleware.js +107 -107
  54. package/cjs/middleware/LoggingMiddleware.d.ts +6 -6
  55. package/cjs/middleware/LoggingMiddleware.js +82 -88
  56. package/cjs/util/retry/index.d.ts +3 -3
  57. package/cjs/util/retry/index.js +52 -52
  58. package/cjs/util/retry/lib/retry.d.ts +3 -3
  59. package/cjs/util/retry/lib/retry.js +50 -54
  60. package/cjs/util/retry/lib/retryOperation.d.ts +27 -27
  61. package/cjs/util/retry/lib/retryOperation.js +130 -134
  62. package/esm/Api.d.ts +35 -35
  63. package/esm/Api.js +92 -98
  64. package/esm/ApiConstants.d.ts +58 -58
  65. package/esm/ApiConstants.js +52 -52
  66. package/esm/ApiTypes.d.ts +103 -103
  67. package/esm/ApiTypes.js +1 -1
  68. package/esm/ApiUtils.d.ts +6 -6
  69. package/esm/ApiUtils.js +43 -45
  70. package/esm/Endpoint.d.ts +52 -52
  71. package/esm/Endpoint.js +66 -70
  72. package/esm/EndpointBuilder.d.ts +14 -14
  73. package/esm/EndpointBuilder.js +31 -31
  74. package/esm/MockingTypes.d.ts +30 -30
  75. package/esm/MockingTypes.js +1 -1
  76. package/esm/QueryHandling.d.ts +3 -3
  77. package/esm/QueryHandling.js +19 -19
  78. package/esm/RequestConfig.d.ts +2 -2
  79. package/esm/RequestConfig.js +56 -56
  80. package/esm/RequestContext.d.ts +48 -48
  81. package/esm/RequestContext.js +167 -170
  82. package/esm/RequestError.d.ts +30 -30
  83. package/esm/RequestError.js +42 -42
  84. package/esm/Requester.d.ts +3 -3
  85. package/esm/Requester.js +252 -253
  86. package/esm/TextDecoding.d.ts +1 -1
  87. package/esm/TextDecoding.js +148 -135
  88. package/esm/UtilTypes.d.ts +5 -5
  89. package/esm/UtilTypes.js +1 -1
  90. package/esm/Utils.d.ts +15 -15
  91. package/esm/Utils.js +66 -68
  92. package/esm/Validation.d.ts +8 -8
  93. package/esm/Validation.js +1 -1
  94. package/esm/backend/AxiosRequestBackend.d.ts +13 -13
  95. package/esm/backend/AxiosRequestBackend.js +62 -62
  96. package/esm/backend/FetchRequestBackend.d.ts +15 -15
  97. package/esm/backend/FetchRequestBackend.js +136 -136
  98. package/esm/backend/MockRequestBackend.d.ts +11 -11
  99. package/esm/backend/MockRequestBackend.js +116 -116
  100. package/esm/backend/RequestBackend.d.ts +19 -19
  101. package/esm/backend/RequestBackend.js +1 -1
  102. package/esm/cache/CacheBackend.d.ts +6 -6
  103. package/esm/cache/CacheBackend.js +1 -1
  104. package/esm/cache/Caching.d.ts +10 -10
  105. package/esm/cache/Caching.js +39 -39
  106. package/esm/cache/LocalForageCacheBackend.d.ts +9 -9
  107. package/esm/cache/LocalForageCacheBackend.js +20 -20
  108. package/esm/cache/LocalStorageCacheBackend.d.ts +7 -7
  109. package/esm/cache/LocalStorageCacheBackend.js +32 -32
  110. package/esm/index.d.ts +13 -13
  111. package/esm/index.js +14 -15
  112. package/esm/middleware/CacheMiddleware.d.ts +7 -7
  113. package/esm/middleware/CacheMiddleware.js +58 -58
  114. package/esm/middleware/LoggingMiddleware.d.ts +6 -6
  115. package/esm/middleware/LoggingMiddleware.js +77 -83
  116. package/esm/util/retry/index.d.ts +3 -3
  117. package/esm/util/retry/index.js +50 -50
  118. package/esm/util/retry/lib/retry.d.ts +3 -3
  119. package/esm/util/retry/lib/retry.js +35 -39
  120. package/esm/util/retry/lib/retryOperation.d.ts +27 -27
  121. package/esm/util/retry/lib/retryOperation.js +126 -132
  122. package/package.json +19 -34
@@ -1,202 +1,203 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (_) try {
33
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- Object.defineProperty(exports, "__esModule", { value: true });
54
- var Utils = require("../Utils");
55
- var Utils_1 = require("../Utils");
56
- var ApiUtils_1 = require("../ApiUtils");
57
- var RequestError_1 = require("../RequestError");
58
- var FetchError = /** @class */ (function (_super) {
59
- __extends(FetchError, _super);
60
- function FetchError() {
61
- return _super !== null && _super.apply(this, arguments) || this;
62
- }
63
- return FetchError;
64
- }(Error));
65
- var FetchRequestBackend = /** @class */ (function () {
66
- function FetchRequestBackend(fetchLibrary) {
67
- this.fetch = (0, Utils_1.getGlobalFetch)();
68
- this.id = "fetch";
69
- if (fetchLibrary !== undefined) {
70
- this.fetch = fetchLibrary;
71
- // otherwise window throws illegal invocation
72
- if (fetchLibrary === (0, Utils_1.getGlobalFetch)()) {
73
- this.fetch = fetchLibrary.bind((0, Utils_1.getGlobal)());
74
- }
75
- }
76
- }
77
- FetchRequestBackend.prototype.extractResponseFromError = function (error) {
78
- return __awaiter(this, void 0, void 0, function () {
79
- var fetchError;
80
- return __generator(this, function (_a) {
81
- if ("response" in error) {
82
- fetchError = error;
83
- return [2 /*return*/, fetchError.response ? fetchError.response : null];
84
- }
85
- return [2 /*return*/, undefined];
86
- });
87
- });
88
- };
89
- FetchRequestBackend.prototype.convertResponse = function (context, response) {
90
- var _a;
91
- return __awaiter(this, void 0, void 0, function () {
92
- var status, headers, processedHeaders, convertedResponse, responseType, text, data, error_1;
93
- return __generator(this, function (_b) {
94
- switch (_b.label) {
95
- case 0:
96
- status = response.status, headers = response.headers;
97
- processedHeaders = {};
98
- headers.forEach(function (value, key) {
99
- processedHeaders[key] = value;
100
- });
101
- convertedResponse = {
102
- __lowercaseHeaders: processedHeaders,
103
- method: context.method,
104
- url: response.url,
105
- data: undefined,
106
- status: status,
107
- headers: processedHeaders,
108
- };
109
- responseType = (_a = context.responseType) !== null && _a !== void 0 ? _a : (0, ApiUtils_1.inferResponseType)(response.headers.get("Content-Type"));
110
- _b.label = 1;
111
- case 1:
112
- _b.trys.push([1, 7, , 8]);
113
- if (!(responseType === "arraybuffer")) return [3 /*break*/, 3];
114
- return [4 /*yield*/, response.arrayBuffer()];
115
- case 2:
116
- data = _b.sent();
117
- return [3 /*break*/, 6];
118
- case 3:
119
- if (!(responseType === "json")) return [3 /*break*/, 5];
120
- return [4 /*yield*/, response.text()];
121
- case 4:
122
- text = _b.sent();
123
- data = JSON.parse(text);
124
- return [3 /*break*/, 6];
125
- case 5:
126
- data = response.text();
127
- _b.label = 6;
128
- case 6: return [3 /*break*/, 8];
129
- case 7:
130
- error_1 = _b.sent();
131
- throw (0, RequestError_1.convertToRequestError)({
132
- error: Object.assign(new Error("[api-def] Failed to parse response as '".concat(responseType, "'").concat(text ? ", got: ".concat(text) : "")), {
133
- cause: error_1,
134
- }),
135
- code: RequestError_1.RequestErrorCode.REQUEST_MISMATCH_RESPONSE_TYPE,
136
- context: context,
137
- response: convertedResponse,
138
- });
139
- case 8:
140
- convertedResponse.data = data;
141
- return [2 /*return*/, convertedResponse];
142
- }
143
- });
144
- });
145
- };
146
- FetchRequestBackend.prototype.makeRequest = function (context) {
147
- if (!this.fetch) {
148
- throw new Error("[api-def] No fetch impl was provided to FetchRequestBackend");
149
- }
150
- var computedConfig = context.computedConfig;
151
- // abort controller is a newer feature than fetch
152
- var abortController = AbortController && new AbortController();
153
- var abortSignal = abortController ? abortController.signal : undefined;
154
- var softAbort = false;
155
- var responded = false;
156
- var body = context.getParsedBody();
157
- var bodyJsonify = body !== null && typeof body === "object";
158
- var headers = Utils.assign({
159
- // logic from axios
160
- "Content-Type": bodyJsonify ? "application/json;charset=utf-8" : "application/x-www-form-urlencoded",
161
- }, computedConfig.headers);
162
- var parsedHeaders = Object.keys(headers).reduce(function (parsedHeaders, key) {
163
- var value = headers[key];
164
- if (value !== undefined) {
165
- parsedHeaders[key] = value;
166
- }
167
- return parsedHeaders;
168
- }, {});
169
- var url = context.requestUrl;
170
- var promise = this.fetch(url.href, {
171
- method: context.method.toUpperCase(),
172
- body: bodyJsonify ? JSON.stringify(body) : body,
173
- headers: parsedHeaders,
174
- mode: "cors",
175
- signal: abortSignal,
176
- }).then(function (response) {
177
- responded = true;
178
- if (!response.ok) {
179
- var error = new FetchError("Fetch failed");
180
- error.response = response;
181
- throw error;
182
- }
183
- if (softAbort) {
184
- throw new Error("[api-def] Request was aborted");
185
- }
186
- return response;
187
- });
188
- return {
189
- promise: promise,
190
- canceler: abortSignal
191
- ? function () { return !responded && abortController.abort(); }
192
- : function () {
193
- softAbort = true;
194
- },
195
- };
196
- };
197
- FetchRequestBackend.prototype.getErrorInfo = function (error, response) {
198
- return undefined;
199
- };
200
- return FetchRequestBackend;
201
- }());
202
- exports.default = FetchRequestBackend;
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ var ApiUtils_1 = require("../ApiUtils");
55
+ var RequestError_1 = require("../RequestError");
56
+ var Utils = require("../Utils");
57
+ var Utils_1 = require("../Utils");
58
+ var FetchError = /** @class */ (function (_super) {
59
+ __extends(FetchError, _super);
60
+ function FetchError() {
61
+ return _super !== null && _super.apply(this, arguments) || this;
62
+ }
63
+ return FetchError;
64
+ }(Error));
65
+ var FetchRequestBackend = /** @class */ (function () {
66
+ function FetchRequestBackend(fetchLibrary) {
67
+ this.fetch = (0, Utils_1.getGlobalFetch)();
68
+ this.id = "fetch";
69
+ if (fetchLibrary !== undefined) {
70
+ this.fetch = fetchLibrary;
71
+ // otherwise window throws illegal invocation
72
+ if (fetchLibrary === (0, Utils_1.getGlobalFetch)()) {
73
+ this.fetch = fetchLibrary.bind((0, Utils_1.getGlobal)());
74
+ }
75
+ }
76
+ }
77
+ FetchRequestBackend.prototype.extractResponseFromError = function (error) {
78
+ return __awaiter(this, void 0, void 0, function () {
79
+ var fetchError;
80
+ return __generator(this, function (_a) {
81
+ if ("response" in error) {
82
+ fetchError = error;
83
+ return [2 /*return*/, fetchError.response ? fetchError.response : null];
84
+ }
85
+ return [2 /*return*/, undefined];
86
+ });
87
+ });
88
+ };
89
+ FetchRequestBackend.prototype.convertResponse = function (context, response) {
90
+ var _a;
91
+ return __awaiter(this, void 0, void 0, function () {
92
+ var status, headers, processedHeaders, convertedResponse, responseType, text, data, error_1;
93
+ return __generator(this, function (_b) {
94
+ switch (_b.label) {
95
+ case 0:
96
+ status = response.status, headers = response.headers;
97
+ processedHeaders = {};
98
+ headers.forEach(function (value, key) {
99
+ processedHeaders[key] = value;
100
+ });
101
+ convertedResponse = {
102
+ __lowercaseHeaders: processedHeaders,
103
+ method: context.method,
104
+ url: response.url,
105
+ data: undefined,
106
+ status: status,
107
+ headers: processedHeaders,
108
+ };
109
+ responseType = (_a = context.responseType) !== null && _a !== void 0 ? _a : (0, ApiUtils_1.inferResponseType)(response.headers.get("Content-Type"));
110
+ _b.label = 1;
111
+ case 1:
112
+ _b.trys.push([1, 8, , 9]);
113
+ if (!(responseType === "arraybuffer")) return [3 /*break*/, 3];
114
+ return [4 /*yield*/, response.arrayBuffer()];
115
+ case 2:
116
+ data = _b.sent();
117
+ return [3 /*break*/, 7];
118
+ case 3:
119
+ if (!(responseType === "json")) return [3 /*break*/, 5];
120
+ return [4 /*yield*/, response.text()];
121
+ case 4:
122
+ text = _b.sent();
123
+ data = JSON.parse(text);
124
+ return [3 /*break*/, 7];
125
+ case 5: return [4 /*yield*/, response.text()];
126
+ case 6:
127
+ data = _b.sent();
128
+ _b.label = 7;
129
+ case 7: return [3 /*break*/, 9];
130
+ case 8:
131
+ error_1 = _b.sent();
132
+ throw (0, RequestError_1.convertToRequestError)({
133
+ error: Object.assign(new Error("[api-def] Failed to parse response as '".concat(responseType, "'").concat(text ? ", got: ".concat(text) : "")), {
134
+ cause: error_1,
135
+ }),
136
+ code: RequestError_1.RequestErrorCode.REQUEST_MISMATCH_RESPONSE_TYPE,
137
+ context: context,
138
+ response: convertedResponse,
139
+ });
140
+ case 9:
141
+ convertedResponse.data = data;
142
+ return [2 /*return*/, convertedResponse];
143
+ }
144
+ });
145
+ });
146
+ };
147
+ FetchRequestBackend.prototype.makeRequest = function (context) {
148
+ if (!this.fetch) {
149
+ throw new Error("[api-def] No fetch impl was provided to FetchRequestBackend");
150
+ }
151
+ var computedConfig = context.computedConfig;
152
+ // abort controller is a newer feature than fetch
153
+ var abortController = AbortController && new AbortController();
154
+ var abortSignal = abortController ? abortController.signal : undefined;
155
+ var softAbort = false;
156
+ var responded = false;
157
+ var body = context.getParsedBody();
158
+ var bodyJsonify = body !== null && typeof body === "object";
159
+ var headers = Utils.assign({
160
+ // logic from axios
161
+ "Content-Type": bodyJsonify ? "application/json;charset=utf-8" : "application/x-www-form-urlencoded",
162
+ }, computedConfig.headers);
163
+ var parsedHeaders = Object.keys(headers).reduce(function (parsedHeaders, key) {
164
+ var value = headers[key];
165
+ if (value !== undefined) {
166
+ parsedHeaders[key] = value;
167
+ }
168
+ return parsedHeaders;
169
+ }, {});
170
+ var url = context.requestUrl;
171
+ var promise = this.fetch(url.href, {
172
+ method: context.method.toUpperCase(),
173
+ body: bodyJsonify ? JSON.stringify(body) : body,
174
+ headers: parsedHeaders,
175
+ mode: "cors",
176
+ signal: abortSignal,
177
+ }).then(function (response) {
178
+ responded = true;
179
+ if (!response.ok) {
180
+ var error = new FetchError("Fetch failed");
181
+ error.response = response;
182
+ throw error;
183
+ }
184
+ if (softAbort) {
185
+ throw new Error("[api-def] Request was aborted");
186
+ }
187
+ return response;
188
+ });
189
+ return {
190
+ promise: promise,
191
+ canceler: abortSignal
192
+ ? function () { return !responded && abortController.abort(); }
193
+ : function () {
194
+ softAbort = true;
195
+ },
196
+ };
197
+ };
198
+ FetchRequestBackend.prototype.getErrorInfo = function (error, response) {
199
+ return undefined;
200
+ };
201
+ return FetchRequestBackend;
202
+ }());
203
+ exports.default = FetchRequestBackend;
@@ -1,11 +1,11 @@
1
- import RequestBackend, { RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
2
- import { ApiResponse } from "../ApiTypes";
3
- import RequestContext from "../RequestContext";
4
- export default class MockRequestBackend implements RequestBackend<ApiResponse> {
5
- readonly id = "mock";
6
- convertResponse<T>(context: RequestContext, response: ApiResponse, error?: boolean): Promise<ApiResponse<T>>;
7
- extractResponseFromError(error: Error): Promise<ApiResponse | null | undefined>;
8
- private runRequest;
9
- makeRequest(context: RequestContext): RequestOperation<ApiResponse>;
10
- getErrorInfo(error: Error, response: ApiResponse | undefined | null): RequestBackendErrorInfo | undefined;
11
- }
1
+ import { ApiResponse } from "../ApiTypes";
2
+ import RequestContext from "../RequestContext";
3
+ import RequestBackend, { RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
4
+ export default class MockRequestBackend implements RequestBackend<ApiResponse> {
5
+ readonly id = "mock";
6
+ convertResponse<T>(context: RequestContext, response: ApiResponse, error?: boolean): Promise<ApiResponse<T>>;
7
+ extractResponseFromError(error: Error): Promise<ApiResponse | null | undefined>;
8
+ private runRequest;
9
+ makeRequest(context: RequestContext): RequestOperation<ApiResponse>;
10
+ getErrorInfo(error: Error, response: ApiResponse | undefined | null): RequestBackendErrorInfo | undefined;
11
+ }