api-def 0.6.0-alpha13 → 0.6.0-alpha16

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/cjs/Requester.js CHANGED
@@ -211,7 +211,7 @@ var makeRequest = function (context) { return __awaiter(void 0, void 0, void 0,
211
211
  });
212
212
  }); };
213
213
  var parseResponse = function (context, response, error) { return __awaiter(void 0, void 0, void 0, function () {
214
- var parsedResponse, contentType, inferredResponseType, data, decodedData;
214
+ var parsedResponse_1, contentType, inferredResponseType, data, decodedData;
215
215
  var _a;
216
216
  return __generator(this, function (_b) {
217
217
  switch (_b.label) {
@@ -219,12 +219,13 @@ var parseResponse = function (context, response, error) { return __awaiter(void
219
219
  if (!response) return [3 /*break*/, 2];
220
220
  return [4 /*yield*/, context.backend.convertResponse(context, response)];
221
221
  case 1:
222
- parsedResponse = _b.sent();
222
+ parsedResponse_1 = _b.sent();
223
223
  // lowercase all header names
224
- response.headers = Object.keys(response.headers).reduce(function (headers, header) {
225
- headers[header.toLowerCase()] = response.headers[header];
224
+ parsedResponse_1.headers = parsedResponse_1.__lowercaseHeaders || Object.keys(parsedResponse_1.headers).reduce(function (headers, header) {
225
+ headers[header.toLowerCase()] = parsedResponse_1.headers[header];
226
+ return headers;
226
227
  }, {});
227
- contentType = response.headers["Content-Type"];
228
+ contentType = parsedResponse_1.headers["content-type"];
228
229
  inferredResponseType = ApiUtils_1.inferResponseType(contentType);
229
230
  if (!error) {
230
231
  // expand to array buffer once we support that in inferResponseType
@@ -232,13 +233,13 @@ var parseResponse = function (context, response, error) { return __awaiter(void
232
233
  throw RequestError_1.convertToRequestError({
233
234
  error: new Error("[api-def] Expected '" + context.responseType + "' response, got '" + inferredResponseType + "' (from 'Content-Type' of '" + contentType + "')"),
234
235
  code: RequestError_1.RequestErrorCode.REQUEST_MISMATCH_RESPONSE_TYPE,
235
- response: parsedResponse,
236
+ response: parsedResponse_1,
236
237
  });
237
238
  }
238
239
  // transform arrayBuffer to json
239
240
  if (inferredResponseType === "arraybuffer" && context.responseType === "json") {
240
- if (parsedResponse.data &&
241
- typeof parsedResponse.data === "object") {
241
+ if (parsedResponse_1.data &&
242
+ typeof parsedResponse_1.data === "object") {
242
243
  data = response.data;
243
244
  if (((_a = data.constructor) === null || _a === void 0 ? void 0 : _a.name) === "ArrayBuffer") {
244
245
  try {
@@ -249,14 +250,14 @@ var parseResponse = function (context, response, error) { return __awaiter(void
249
250
  throw RequestError_1.convertToRequestError({
250
251
  error: new Error("[api-def] Expected '" + context.responseType + "' response, got '" + inferredResponseType + "' (from 'Content-Type' of '" + contentType + "')"),
251
252
  code: RequestError_1.RequestErrorCode.REQUEST_MISMATCH_RESPONSE_TYPE,
252
- response: parsedResponse,
253
+ response: parsedResponse_1,
253
254
  });
254
255
  }
255
256
  }
256
257
  }
257
258
  }
258
259
  }
259
- return [2 /*return*/, parsedResponse];
260
+ return [2 /*return*/, parsedResponse_1];
260
261
  case 2: return [2 /*return*/, response];
261
262
  }
262
263
  });
@@ -1,4 +1,4 @@
1
- import RequestBackend, { RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
1
+ import RequestBackend, { ConvertedApiResponse, RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
2
2
  import { ApiResponse } from "../ApiTypes";
3
3
  import type { AxiosError, AxiosResponse } from "axios";
4
4
  import RequestContext from "../RequestContext";
@@ -7,7 +7,7 @@ export default class AxiosRequestBackend implements RequestBackend<AxiosResponse
7
7
  readonly id = "axios";
8
8
  constructor(axiosLibrary: any);
9
9
  extractResponseFromError(error: Error): Promise<AxiosResponse | null | undefined>;
10
- convertResponse<T>(context: RequestContext, response: AxiosResponse): Promise<ApiResponse<T>>;
10
+ convertResponse<T>(context: RequestContext, response: AxiosResponse): Promise<ConvertedApiResponse<T>>;
11
11
  makeRequest(context: RequestContext): RequestOperation<AxiosResponse>;
12
12
  getErrorInfo(error: Error, response: ApiResponse | undefined | null): RequestBackendErrorInfo | undefined;
13
13
  }
@@ -61,6 +61,7 @@ var AxiosRequestBackend = /** @class */ (function () {
61
61
  AxiosRequestBackend.prototype.convertResponse = function (context, response) {
62
62
  return __awaiter(this, void 0, void 0, function () {
63
63
  return __generator(this, function (_a) {
64
+ response.__lowercaseHeaders = response._lowerCaseResponseHeaders;
64
65
  return [2 /*return*/, response];
65
66
  });
66
67
  });
@@ -1,4 +1,4 @@
1
- import RequestBackend, { RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
1
+ import RequestBackend, { ConvertedApiResponse, RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
2
2
  import { ApiResponse } from "../ApiTypes";
3
3
  import RequestContext from "../RequestContext";
4
4
  import { Fetch } from "../Utils";
@@ -9,7 +9,7 @@ export default class FetchRequestBackend implements RequestBackend<Response> {
9
9
  extractResponseFromError(error: Error): Promise<Response | null | undefined>;
10
10
  convertResponse<T>(context: RequestContext, response: Response & {
11
11
  __text?: string;
12
- }): Promise<ApiResponse<T>>;
12
+ }): Promise<ConvertedApiResponse<T>>;
13
13
  makeRequest(context: RequestContext): RequestOperation<Response>;
14
14
  getErrorInfo(error: Error, response: ApiResponse | undefined | null): RequestBackendErrorInfo | undefined;
15
15
  }
@@ -7,10 +7,13 @@ export interface RequestOperation<R> {
7
7
  export interface RequestBackendErrorInfo {
8
8
  code: string;
9
9
  }
10
+ export declare type ConvertedApiResponse<T> = ApiResponse<T> & {
11
+ __lowercaseHeaders?: any;
12
+ };
10
13
  export default interface RequestBackend<R = any> {
11
14
  readonly id: string;
12
15
  makeRequest(context: RequestContext): RequestOperation<R>;
13
- convertResponse<T>(context: RequestContext, response: R): Promise<ApiResponse<T>>;
16
+ convertResponse<T>(context: RequestContext, response: R): Promise<ConvertedApiResponse<T>>;
14
17
  extractResponseFromError(error: Error): Promise<R | null | undefined>;
15
18
  getErrorInfo(error: Error, response: ApiResponse | undefined | null): RequestBackendErrorInfo | undefined;
16
19
  }
package/esm/Requester.js CHANGED
@@ -207,7 +207,7 @@ var makeRequest = function (context) { return __awaiter(void 0, void 0, void 0,
207
207
  });
208
208
  }); };
209
209
  var parseResponse = function (context, response, error) { return __awaiter(void 0, void 0, void 0, function () {
210
- var parsedResponse, contentType, inferredResponseType, data, decodedData;
210
+ var parsedResponse_1, contentType, inferredResponseType, data, decodedData;
211
211
  var _a;
212
212
  return __generator(this, function (_b) {
213
213
  switch (_b.label) {
@@ -215,12 +215,13 @@ var parseResponse = function (context, response, error) { return __awaiter(void
215
215
  if (!response) return [3 /*break*/, 2];
216
216
  return [4 /*yield*/, context.backend.convertResponse(context, response)];
217
217
  case 1:
218
- parsedResponse = _b.sent();
218
+ parsedResponse_1 = _b.sent();
219
219
  // lowercase all header names
220
- response.headers = Object.keys(response.headers).reduce(function (headers, header) {
221
- headers[header.toLowerCase()] = response.headers[header];
220
+ parsedResponse_1.headers = parsedResponse_1.__lowercaseHeaders || Object.keys(parsedResponse_1.headers).reduce(function (headers, header) {
221
+ headers[header.toLowerCase()] = parsedResponse_1.headers[header];
222
+ return headers;
222
223
  }, {});
223
- contentType = response.headers["Content-Type"];
224
+ contentType = parsedResponse_1.headers["content-type"];
224
225
  inferredResponseType = inferResponseType(contentType);
225
226
  if (!error) {
226
227
  // expand to array buffer once we support that in inferResponseType
@@ -228,13 +229,13 @@ var parseResponse = function (context, response, error) { return __awaiter(void
228
229
  throw convertToRequestError({
229
230
  error: new Error("[api-def] Expected '" + context.responseType + "' response, got '" + inferredResponseType + "' (from 'Content-Type' of '" + contentType + "')"),
230
231
  code: RequestErrorCode.REQUEST_MISMATCH_RESPONSE_TYPE,
231
- response: parsedResponse,
232
+ response: parsedResponse_1,
232
233
  });
233
234
  }
234
235
  // transform arrayBuffer to json
235
236
  if (inferredResponseType === "arraybuffer" && context.responseType === "json") {
236
- if (parsedResponse.data &&
237
- typeof parsedResponse.data === "object") {
237
+ if (parsedResponse_1.data &&
238
+ typeof parsedResponse_1.data === "object") {
238
239
  data = response.data;
239
240
  if (((_a = data.constructor) === null || _a === void 0 ? void 0 : _a.name) === "ArrayBuffer") {
240
241
  try {
@@ -245,14 +246,14 @@ var parseResponse = function (context, response, error) { return __awaiter(void
245
246
  throw convertToRequestError({
246
247
  error: new Error("[api-def] Expected '" + context.responseType + "' response, got '" + inferredResponseType + "' (from 'Content-Type' of '" + contentType + "')"),
247
248
  code: RequestErrorCode.REQUEST_MISMATCH_RESPONSE_TYPE,
248
- response: parsedResponse,
249
+ response: parsedResponse_1,
249
250
  });
250
251
  }
251
252
  }
252
253
  }
253
254
  }
254
255
  }
255
- return [2 /*return*/, parsedResponse];
256
+ return [2 /*return*/, parsedResponse_1];
256
257
  case 2: return [2 /*return*/, response];
257
258
  }
258
259
  });
@@ -1,4 +1,4 @@
1
- import RequestBackend, { RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
1
+ import RequestBackend, { ConvertedApiResponse, RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
2
2
  import { ApiResponse } from "../ApiTypes";
3
3
  import type { AxiosError, AxiosResponse } from "axios";
4
4
  import RequestContext from "../RequestContext";
@@ -7,7 +7,7 @@ export default class AxiosRequestBackend implements RequestBackend<AxiosResponse
7
7
  readonly id = "axios";
8
8
  constructor(axiosLibrary: any);
9
9
  extractResponseFromError(error: Error): Promise<AxiosResponse | null | undefined>;
10
- convertResponse<T>(context: RequestContext, response: AxiosResponse): Promise<ApiResponse<T>>;
10
+ convertResponse<T>(context: RequestContext, response: AxiosResponse): Promise<ConvertedApiResponse<T>>;
11
11
  makeRequest(context: RequestContext): RequestOperation<AxiosResponse>;
12
12
  getErrorInfo(error: Error, response: ApiResponse | undefined | null): RequestBackendErrorInfo | undefined;
13
13
  }
@@ -57,6 +57,7 @@ var AxiosRequestBackend = /** @class */ (function () {
57
57
  AxiosRequestBackend.prototype.convertResponse = function (context, response) {
58
58
  return __awaiter(this, void 0, void 0, function () {
59
59
  return __generator(this, function (_a) {
60
+ response.__lowercaseHeaders = response._lowerCaseResponseHeaders;
60
61
  return [2 /*return*/, response];
61
62
  });
62
63
  });
@@ -1,4 +1,4 @@
1
- import RequestBackend, { RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
1
+ import RequestBackend, { ConvertedApiResponse, RequestBackendErrorInfo, RequestOperation } from "./RequestBackend";
2
2
  import { ApiResponse } from "../ApiTypes";
3
3
  import RequestContext from "../RequestContext";
4
4
  import { Fetch } from "../Utils";
@@ -9,7 +9,7 @@ export default class FetchRequestBackend implements RequestBackend<Response> {
9
9
  extractResponseFromError(error: Error): Promise<Response | null | undefined>;
10
10
  convertResponse<T>(context: RequestContext, response: Response & {
11
11
  __text?: string;
12
- }): Promise<ApiResponse<T>>;
12
+ }): Promise<ConvertedApiResponse<T>>;
13
13
  makeRequest(context: RequestContext): RequestOperation<Response>;
14
14
  getErrorInfo(error: Error, response: ApiResponse | undefined | null): RequestBackendErrorInfo | undefined;
15
15
  }
@@ -7,10 +7,13 @@ export interface RequestOperation<R> {
7
7
  export interface RequestBackendErrorInfo {
8
8
  code: string;
9
9
  }
10
+ export declare type ConvertedApiResponse<T> = ApiResponse<T> & {
11
+ __lowercaseHeaders?: any;
12
+ };
10
13
  export default interface RequestBackend<R = any> {
11
14
  readonly id: string;
12
15
  makeRequest(context: RequestContext): RequestOperation<R>;
13
- convertResponse<T>(context: RequestContext, response: R): Promise<ApiResponse<T>>;
16
+ convertResponse<T>(context: RequestContext, response: R): Promise<ConvertedApiResponse<T>>;
14
17
  extractResponseFromError(error: Error): Promise<R | null | undefined>;
15
18
  getErrorInfo(error: Error, response: ApiResponse | undefined | null): RequestBackendErrorInfo | undefined;
16
19
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "api-def",
3
- "version": "0.6.0-alpha13",
3
+ "version": "0.6.0-alpha16",
4
4
  "description": "Typed API definitions with middleware support",
5
5
  "main": "cjs/index.js",
6
6
  "types": "esm/index.d.ts",