caccl-send-request 2.2.6 → 2.2.8

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.
@@ -1,6 +1,6 @@
1
1
  declare enum ErrorCode {
2
2
  NotConnected = "CSR1",
3
3
  SelfSigned = "CSR2",
4
- NotJSON = "CSR3"
4
+ ResponseParseError = "CSR3"
5
5
  }
6
6
  export default ErrorCode;
package/lib/ErrorCode.js CHANGED
@@ -5,7 +5,7 @@ var ErrorCode;
5
5
  (function (ErrorCode) {
6
6
  ErrorCode["NotConnected"] = "CSR1";
7
7
  ErrorCode["SelfSigned"] = "CSR2";
8
- ErrorCode["NotJSON"] = "CSR3";
8
+ ErrorCode["ResponseParseError"] = "CSR3";
9
9
  })(ErrorCode || (ErrorCode = {}));
10
10
  ;
11
11
  exports.default = ErrorCode;
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorCode.js","sourceRoot":"","sources":["../src/ErrorCode.ts"],"names":[],"mappings":";AAAA,2BAA2B;;AAE3B,IAAK,SAIJ;AAJD,WAAK,SAAS;IACZ,kCAAqB,CAAA;IACrB,gCAAmB,CAAA;IACnB,6BAAgB,CAAA;AAClB,CAAC,EAJI,SAAS,KAAT,SAAS,QAIb;AAAA,CAAC;AAEF,kBAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"ErrorCode.js","sourceRoot":"","sources":["../src/ErrorCode.ts"],"names":[],"mappings":";AAAA,2BAA2B;;AAE3B,IAAK,SAIJ;AAJD,WAAK,SAAS;IACZ,kCAAqB,CAAA;IACrB,gCAAmB,CAAA;IACnB,wCAA2B,CAAA;AAC7B,CAAC,EAJI,SAAS,KAAT,SAAS,QAIb;AAAA,CAAC;AAEF,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Response types
3
+ * @author Yuen Ler Chow
4
+ */
5
+ declare enum ResponseType {
6
+ Text = "Text",
7
+ JSON = "JSON"
8
+ }
9
+ export default ResponseType;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Response types
5
+ * @author Yuen Ler Chow
6
+ */
7
+ var ResponseType;
8
+ (function (ResponseType) {
9
+ ResponseType["Text"] = "Text";
10
+ ResponseType["JSON"] = "JSON";
11
+ })(ResponseType || (ResponseType = {}));
12
+ exports.default = ResponseType;
13
+ //# sourceMappingURL=ResponseType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseType.js","sourceRoot":"","sources":["../src/ResponseType.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,IAAK,YAGJ;AAHD,WAAK,YAAY;IACf,6BAAa,CAAA;IACb,6BAAa,CAAA;AACf,CAAC,EAHI,YAAY,KAAZ,YAAY,QAGhB;AAED,kBAAe,YAAY,CAAC"}
package/lib/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import ResponseType from './ResponseType';
1
2
  /**
2
3
  * Sends and retries an http request
3
4
  * @author Gabriel Abrams
@@ -11,6 +12,7 @@
11
12
  * fails
12
13
  * @param [opts.sendCrossDomainCredentials=true if in development mode] if true,
13
14
  * send cross-domain credentials even if not in dev mode
15
+ * @param [opts.responseType=ResponseType.JSON] expected response type
14
16
  * @returns { body, status, headers } on success
15
17
  */
16
18
  declare const sendRequest: (opts: {
@@ -25,6 +27,7 @@ declare const sendRequest: (opts: {
25
27
  };
26
28
  numRetries?: number;
27
29
  sendCrossDomainCredentials?: boolean;
30
+ responseType?: ResponseType;
28
31
  }) => Promise<{
29
32
  body: any;
30
33
  status: number;
package/lib/index.js CHANGED
@@ -56,6 +56,7 @@ var qs_1 = __importDefault(require("qs"));
56
56
  var caccl_error_1 = __importDefault(require("caccl-error"));
57
57
  // Import shared types
58
58
  var ErrorCode_1 = __importDefault(require("./ErrorCode"));
59
+ var ResponseType_1 = __importDefault(require("./ResponseType"));
59
60
  /**
60
61
  * Sends and retries an http request
61
62
  * @author Gabriel Abrams
@@ -69,18 +70,19 @@ var ErrorCode_1 = __importDefault(require("./ErrorCode"));
69
70
  * fails
70
71
  * @param [opts.sendCrossDomainCredentials=true if in development mode] if true,
71
72
  * send cross-domain credentials even if not in dev mode
73
+ * @param [opts.responseType=ResponseType.JSON] expected response type
72
74
  * @returns { body, status, headers } on success
73
75
  */
74
76
  var sendRequest = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
75
- var thisIsDev, sendCrossDomainCredentials, numRetries, method, params, stringifiedParams, query, url, headers, data, encodedData, response, responseHeaders_1, responseBody, jsonErr_1, err_1;
76
- var _a;
77
- return __generator(this, function (_b) {
78
- switch (_b.label) {
77
+ var thisIsDev, sendCrossDomainCredentials, numRetries, method, params, stringifiedParams, query, url, headers, data, encodedData, response, responseHeaders_1, responseBody, _a, err_1, err_2;
78
+ var _b;
79
+ return __generator(this, function (_c) {
80
+ switch (_c.label) {
79
81
  case 0:
80
82
  thisIsDev = (opts.host === 'localhost:8080');
81
83
  sendCrossDomainCredentials = !!(opts.sendCrossDomainCredentials
82
84
  || thisIsDev
83
- || ((_a = opts.headers) === null || _a === void 0 ? void 0 : _a.credentials) === 'include');
85
+ || ((_b = opts.headers) === null || _b === void 0 ? void 0 : _b.credentials) === 'include');
84
86
  numRetries = (opts.numRetries ? opts.numRetries : 0);
85
87
  method = (opts.method || 'GET');
86
88
  if (opts.params) {
@@ -127,9 +129,9 @@ var sendRequest = function (opts) { return __awaiter(void 0, void 0, void 0, fun
127
129
  encodedData = JSON.stringify(data);
128
130
  }
129
131
  }
130
- _b.label = 1;
132
+ _c.label = 1;
131
133
  case 1:
132
- _b.trys.push([1, 7, , 8]);
134
+ _c.trys.push([1, 11, , 12]);
133
135
  return [4 /*yield*/, fetch(url, {
134
136
  method: method,
135
137
  mode: 'cors',
@@ -144,39 +146,46 @@ var sendRequest = function (opts) { return __awaiter(void 0, void 0, void 0, fun
144
146
  referrerPolicy: (sendCrossDomainCredentials ? 'origin' : undefined),
145
147
  })];
146
148
  case 2:
147
- response = _b.sent();
149
+ response = _c.sent();
148
150
  responseHeaders_1 = {};
149
151
  response.headers.forEach(function (value, key) {
150
152
  responseHeaders_1[key] = value;
151
153
  });
152
- _b.label = 3;
154
+ responseBody = void 0;
155
+ _c.label = 3;
153
156
  case 3:
154
- _b.trys.push([3, 5, , 6]);
155
- return [4 /*yield*/, response.json()];
156
- case 4:
157
- responseBody = _b.sent();
158
- return [2 /*return*/, {
159
- body: responseBody,
160
- status: response.status,
161
- headers: responseHeaders_1,
162
- }];
157
+ _c.trys.push([3, 9, , 10]);
158
+ _a = opts.responseType;
159
+ switch (_a) {
160
+ case ResponseType_1.default.Text: return [3 /*break*/, 4];
161
+ case ResponseType_1.default.JSON: return [3 /*break*/, 6];
162
+ }
163
+ return [3 /*break*/, 6];
164
+ case 4: return [4 /*yield*/, response.text()];
163
165
  case 5:
164
- jsonErr_1 = _b.sent();
165
- // Not JSON
166
+ responseBody = _c.sent();
167
+ return [3 /*break*/, 8];
168
+ case 6: return [4 /*yield*/, response.json()];
169
+ case 7:
170
+ responseBody = _c.sent();
171
+ return [3 /*break*/, 8];
172
+ case 8: return [3 /*break*/, 10];
173
+ case 9:
174
+ err_1 = _c.sent();
166
175
  throw new caccl_error_1.default({
167
- message: "Response was not valid JSON: ".concat(jsonErr_1 === null || jsonErr_1 === void 0 ? void 0 : jsonErr_1.message),
168
- code: ErrorCode_1.default.NotJSON,
176
+ message: "Failed to parse response as ".concat(opts.responseType, ": ").concat(err_1 === null || err_1 === void 0 ? void 0 : err_1.message),
177
+ code: ErrorCode_1.default.ResponseParseError,
169
178
  });
170
- case 6: return [3 /*break*/, 8];
171
- case 7:
172
- err_1 = _b.sent();
179
+ case 10: return [3 /*break*/, 12];
180
+ case 11:
181
+ err_2 = _c.sent();
173
182
  // Request failed! Check if we have more attempts
174
183
  if (numRetries > 0) {
175
184
  // Update opts with one less retry
176
185
  return [2 /*return*/, sendRequest(__assign(__assign({}, opts), { numRetries: opts.numRetries - 1 }))];
177
186
  }
178
187
  // Self-signed certificate error:
179
- if (err_1.message.includes('self signed certificate')) {
188
+ if (err_2.message.includes('self signed certificate')) {
180
189
  throw new caccl_error_1.default({
181
190
  message: 'We refused to send a request because the receiver has self-signed certificates.',
182
191
  code: ErrorCode_1.default.SelfSigned,
@@ -184,10 +193,10 @@ var sendRequest = function (opts) { return __awaiter(void 0, void 0, void 0, fun
184
193
  }
185
194
  // No tries left
186
195
  throw new caccl_error_1.default({
187
- message: "We encountered an error when trying to send a network request. If this issue persists, contact an admin. Error: ".concat(err_1 === null || err_1 === void 0 ? void 0 : err_1.message),
196
+ message: "We encountered an error when trying to send a network request. If this issue persists, contact an admin. Error: ".concat(err_2 === null || err_2 === void 0 ? void 0 : err_2.message),
188
197
  code: ErrorCode_1.default.NotConnected,
189
198
  });
190
- case 8: return [2 /*return*/];
199
+ case 12: return [2 /*return*/];
191
200
  }
192
201
  });
193
202
  }); };
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "caccl-send-request",
3
- "version": "2.2.6",
3
+ "version": "2.2.8",
4
4
  "description": "The default request sender used throughout the CACCL project.",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -36,7 +36,7 @@
36
36
  "typescript": "^4.5.5"
37
37
  },
38
38
  "dependencies": {
39
- "caccl-error": "^2.2.6",
39
+ "caccl-error": "^2.2.8",
40
40
  "qs": "^6.9.6"
41
41
  }
42
42
  }
package/src/ErrorCode.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  enum ErrorCode {
4
4
  NotConnected = 'CSR1',
5
5
  SelfSigned = 'CSR2',
6
- NotJSON = 'CSR3',
6
+ ResponseParseError = 'CSR3',
7
7
  };
8
8
 
9
9
  export default ErrorCode;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Response types
3
+ * @author Yuen Ler Chow
4
+ */
5
+ enum ResponseType {
6
+ Text = 'Text',
7
+ JSON = 'JSON',
8
+ }
9
+
10
+ export default ResponseType;
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ import CACCLError from 'caccl-error';
6
6
 
7
7
  // Import shared types
8
8
  import ErrorCode from './ErrorCode';
9
+ import ResponseType from './ResponseType';
9
10
 
10
11
  /**
11
12
  * Sends and retries an http request
@@ -20,6 +21,7 @@ import ErrorCode from './ErrorCode';
20
21
  * fails
21
22
  * @param [opts.sendCrossDomainCredentials=true if in development mode] if true,
22
23
  * send cross-domain credentials even if not in dev mode
24
+ * @param [opts.responseType=ResponseType.JSON] expected response type
23
25
  * @returns { body, status, headers } on success
24
26
  */
25
27
  const sendRequest = async (
@@ -31,6 +33,7 @@ const sendRequest = async (
31
33
  headers?: { [k in string]: any },
32
34
  numRetries?: number,
33
35
  sendCrossDomainCredentials?: boolean,
36
+ responseType?: ResponseType,
34
37
  },
35
38
  ): Promise<{
36
39
  body: any,
@@ -138,19 +141,22 @@ const sendRequest = async (
138
141
  responseHeaders[key] = value;
139
142
  });
140
143
 
141
- // Process json response
144
+ // Process response based on responseType
145
+ let responseBody: any;
142
146
  try {
143
- const responseBody = await response.json();
144
- return {
145
- body: responseBody,
146
- status: response.status,
147
- headers: responseHeaders,
148
- };
149
- } catch (jsonErr) {
150
- // Not JSON
147
+ switch (opts.responseType) {
148
+ case ResponseType.Text:
149
+ responseBody = await response.text();
150
+ break;
151
+ case ResponseType.JSON:
152
+ default:
153
+ responseBody = await response.json();
154
+ break;
155
+ }
156
+ } catch (err) {
151
157
  throw new CACCLError({
152
- message: `Response was not valid JSON: ${(jsonErr as any)?.message}`,
153
- code: ErrorCode.NotJSON,
158
+ message: `Failed to parse response as ${opts.responseType}: ${(err as any)?.message}`,
159
+ code: ErrorCode.ResponseParseError,
154
160
  });
155
161
  }
156
162
  } catch (err) {