caccl-send-request 2.2.5 → 2.2.7

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,8 +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
- // Check if we're currently in developer mode
60
- var thisIsDev = (process.env.NODE_ENV === 'development');
59
+ var ResponseType_1 = __importDefault(require("./ResponseType"));
61
60
  /**
62
61
  * Sends and retries an http request
63
62
  * @author Gabriel Abrams
@@ -71,17 +70,19 @@ var thisIsDev = (process.env.NODE_ENV === 'development');
71
70
  * fails
72
71
  * @param [opts.sendCrossDomainCredentials=true if in development mode] if true,
73
72
  * send cross-domain credentials even if not in dev mode
73
+ * @param [opts.responseType=ResponseType.JSON] expected response type
74
74
  * @returns { body, status, headers } on success
75
75
  */
76
76
  var sendRequest = function (opts) { return __awaiter(void 0, void 0, void 0, function () {
77
- var sendCrossDomainCredentials, numRetries, method, params, stringifiedParams, query, url, headers, data, encodedData, response, responseHeaders_1, responseBody, jsonErr_1, err_1;
78
- var _a;
79
- return __generator(this, function (_b) {
80
- 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) {
81
81
  case 0:
82
+ thisIsDev = (opts.host === 'localhost:8080');
82
83
  sendCrossDomainCredentials = !!(opts.sendCrossDomainCredentials
83
84
  || thisIsDev
84
- || ((_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');
85
86
  numRetries = (opts.numRetries ? opts.numRetries : 0);
86
87
  method = (opts.method || 'GET');
87
88
  if (opts.params) {
@@ -128,9 +129,9 @@ var sendRequest = function (opts) { return __awaiter(void 0, void 0, void 0, fun
128
129
  encodedData = JSON.stringify(data);
129
130
  }
130
131
  }
131
- _b.label = 1;
132
+ _c.label = 1;
132
133
  case 1:
133
- _b.trys.push([1, 7, , 8]);
134
+ _c.trys.push([1, 11, , 12]);
134
135
  return [4 /*yield*/, fetch(url, {
135
136
  method: method,
136
137
  mode: 'cors',
@@ -145,39 +146,46 @@ var sendRequest = function (opts) { return __awaiter(void 0, void 0, void 0, fun
145
146
  referrerPolicy: (sendCrossDomainCredentials ? 'origin' : undefined),
146
147
  })];
147
148
  case 2:
148
- response = _b.sent();
149
+ response = _c.sent();
149
150
  responseHeaders_1 = {};
150
151
  response.headers.forEach(function (value, key) {
151
152
  responseHeaders_1[key] = value;
152
153
  });
153
- _b.label = 3;
154
+ responseBody = void 0;
155
+ _c.label = 3;
154
156
  case 3:
155
- _b.trys.push([3, 5, , 6]);
156
- return [4 /*yield*/, response.json()];
157
- case 4:
158
- responseBody = _b.sent();
159
- return [2 /*return*/, {
160
- body: responseBody,
161
- status: response.status,
162
- headers: responseHeaders_1,
163
- }];
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()];
164
165
  case 5:
165
- jsonErr_1 = _b.sent();
166
- // 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();
167
175
  throw new caccl_error_1.default({
168
- message: "Response was not valid JSON: ".concat(jsonErr_1 === null || jsonErr_1 === void 0 ? void 0 : jsonErr_1.message),
169
- 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,
170
178
  });
171
- case 6: return [3 /*break*/, 8];
172
- case 7:
173
- err_1 = _b.sent();
179
+ case 10: return [3 /*break*/, 12];
180
+ case 11:
181
+ err_2 = _c.sent();
174
182
  // Request failed! Check if we have more attempts
175
183
  if (numRetries > 0) {
176
184
  // Update opts with one less retry
177
185
  return [2 /*return*/, sendRequest(__assign(__assign({}, opts), { numRetries: opts.numRetries - 1 }))];
178
186
  }
179
187
  // Self-signed certificate error:
180
- if (err_1.message.includes('self signed certificate')) {
188
+ if (err_2.message.includes('self signed certificate')) {
181
189
  throw new caccl_error_1.default({
182
190
  message: 'We refused to send a request because the receiver has self-signed certificates.',
183
191
  code: ErrorCode_1.default.SelfSigned,
@@ -185,10 +193,10 @@ var sendRequest = function (opts) { return __awaiter(void 0, void 0, void 0, fun
185
193
  }
186
194
  // No tries left
187
195
  throw new caccl_error_1.default({
188
- 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),
189
197
  code: ErrorCode_1.default.NotConnected,
190
198
  });
191
- case 8: return [2 /*return*/];
199
+ case 12: return [2 /*return*/];
192
200
  }
193
201
  });
194
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,0CAAoB;AAEpB,0BAA0B;AAC1B,4DAAqC;AAErC,sBAAsB;AACtB,0DAAoC;AACpC,gEAA0C;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,IAAM,WAAW,GAAG,UAClB,IASC;;;;;;gBAOK,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;gBAG7C,0BAA0B,GAAG,CAAC,CAAC,CACnC,IAAI,CAAC,0BAA0B;uBAC5B,SAAS;uBACT,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,WAAW,MAAK,SAAS,CAC3C,CAAC;gBAGI,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAGrD,MAAM,GAAwC,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;gBAM3E,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,MAAM,GAAG,EAAE,CAAC;oBACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU;4BAAT,GAAG,QAAA,EAAE,GAAG,QAAA;wBAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;4BACjD,MAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;yBAC5C;6BAAM;4BACJ,MAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;yBAC5B;oBACH,CAAC,CAAC,CAAC;iBACJ;gBAGK,iBAAiB,GAAG,YAAE,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE;oBACnD,gBAAgB,EAAE,IAAI;oBACtB,WAAW,EAAE,UAAU;iBACxB,CAAC,CAAC;gBAGG,KAAK,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,WAAI,iBAAiB,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAEhE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBACd,+CAA+C;oBAC/C,GAAG,GAAG,UAAG,IAAI,CAAC,IAAI,SAAG,KAAK,CAAE,CAAC;iBAC9B;qBAAM;oBACL,GAAG,GAAG,kBAAW,IAAI,CAAC,IAAI,SAAG,IAAI,CAAC,IAAI,SAAG,KAAK,CAAE,CAAC;iBAClD;gBAGK,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC/B,IAAI,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;oBAC5B,eAAe;oBACf,OAAO,CAAC,cAAc,CAAC,GAAG,mCAAmC,CAAC;oBAC9D,yBAAyB;oBACzB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACtD;qBAAM;oBACL,cAAc;oBACd,IAAI,GAAG,MAAM,CAAC;iBACf;gBAID,IAAI,IAAI,EAAE;oBACR,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,mCAAmC,EAAE;wBACnE,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;qBAC3C;yBAAM;wBACL,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;qBACpC;iBACF;;;;gBAIkB,qBAAM,KAAK,CAC1B,GAAG,EACH;wBACE,MAAM,QAAA;wBACN,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE;wBACtB,IAAI,EAAE,CACJ,CAAC,MAAM,KAAK,KAAK,IAAI,WAAW,CAAC;4BAC/B,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,SAAS,CACd;wBACD,WAAW,EAAE,CACX,0BAA0B;4BACxB,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,aAAa,CAClB;wBACD,QAAQ,EAAE,QAAQ;wBAClB,cAAc,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;qBACpE,CACF,EAAA;;gBAnBK,QAAQ,GAAG,SAmBhB;gBAGK,oBAEF,EAAE,CAAC;gBACP,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,GAAG;oBAClC,iBAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAGC,YAAY,SAAK,CAAC;;;;gBAEZ,KAAA,IAAI,CAAC,YAAY,CAAA;;yBAClB,sBAAY,CAAC,IAAI,CAAC,CAAlB,wBAAiB;yBAGjB,sBAAY,CAAC,IAAI,CAAC,CAAlB,wBAAiB;;;oBAFL,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;gBAApC,YAAY,GAAG,SAAqB,CAAC;gBACrC,wBAAM;oBAGS,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;gBAApC,YAAY,GAAG,SAAqB,CAAC;gBACrC,wBAAM;;;;gBAGV,MAAM,IAAI,qBAAU,CAAC;oBACnB,OAAO,EAAE,sCAA+B,IAAI,CAAC,YAAY,eAAM,KAAW,aAAX,KAAG,uBAAH,KAAG,CAAU,OAAO,CAAE;oBACrF,IAAI,EAAE,mBAAS,CAAC,kBAAkB;iBACnC,CAAC,CAAC;;;;gBAGL,iDAAiD;gBACjD,IAAI,UAAU,GAAG,CAAC,EAAE;oBAClB,kCAAkC;oBAClC,sBAAO,WAAW,uBACb,IAAI,KACP,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,IAC/B,EAAC;iBACJ;gBAED,iCAAiC;gBACjC,IAAI,KAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;oBACnD,MAAM,IAAI,qBAAU,CAAC;wBACnB,OAAO,EAAE,iFAAiF;wBAC1F,IAAI,EAAE,mBAAS,CAAC,UAAU;qBAC3B,CAAC,CAAC;iBACJ;gBAED,gBAAgB;gBAChB,MAAM,IAAI,qBAAU,CAAC;oBACnB,OAAO,EAAE,0HAAoH,KAAW,aAAX,KAAG,uBAAH,KAAG,CAAU,OAAO,CAAE;oBACnJ,IAAI,EAAE,mBAAS,CAAC,YAAY;iBAC7B,CAAC,CAAC;;;;KAEN,CAAC;AAEF,kBAAe,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "caccl-send-request",
3
- "version": "2.2.5",
3
+ "version": "2.2.7",
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.5",
39
+ "caccl-error": "^2.2.6",
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,9 +6,7 @@ import CACCLError from 'caccl-error';
6
6
 
7
7
  // Import shared types
8
8
  import ErrorCode from './ErrorCode';
9
-
10
- // Check if we're currently in developer mode
11
- const thisIsDev = (process.env.NODE_ENV === 'development');
9
+ import ResponseType from './ResponseType';
12
10
 
13
11
  /**
14
12
  * Sends and retries an http request
@@ -23,6 +21,7 @@ const thisIsDev = (process.env.NODE_ENV === 'development');
23
21
  * fails
24
22
  * @param [opts.sendCrossDomainCredentials=true if in development mode] if true,
25
23
  * send cross-domain credentials even if not in dev mode
24
+ * @param [opts.responseType=ResponseType.JSON] expected response type
26
25
  * @returns { body, status, headers } on success
27
26
  */
28
27
  const sendRequest = async (
@@ -34,12 +33,16 @@ const sendRequest = async (
34
33
  headers?: { [k in string]: any },
35
34
  numRetries?: number,
36
35
  sendCrossDomainCredentials?: boolean,
36
+ responseType?: ResponseType,
37
37
  },
38
38
  ): Promise<{
39
39
  body: any,
40
40
  status: number,
41
41
  headers: { [k in string]: any },
42
42
  }> => {
43
+ // Check if we're currently in developer mode
44
+ const thisIsDev = (opts.host === 'localhost:8080');
45
+
43
46
  // Check if we should be including credentials
44
47
  const sendCrossDomainCredentials = !!(
45
48
  opts.sendCrossDomainCredentials
@@ -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) {