caccl-send-request 2.2.6 → 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.
- package/lib/ErrorCode.d.ts +1 -1
- package/lib/ErrorCode.js +1 -1
- package/lib/ErrorCode.js.map +1 -1
- package/lib/ResponseType.d.ts +9 -0
- package/lib/ResponseType.js +13 -0
- package/lib/ResponseType.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +37 -28
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/ErrorCode.ts +1 -1
- package/src/ResponseType.ts +10 -0
- package/src/index.ts +17 -11
package/lib/ErrorCode.d.ts
CHANGED
package/lib/ErrorCode.js
CHANGED
package/lib/ErrorCode.js.map
CHANGED
|
@@ -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,
|
|
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,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,
|
|
76
|
-
var
|
|
77
|
-
return __generator(this, function (
|
|
78
|
-
switch (
|
|
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
|
-
|| ((
|
|
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
|
-
|
|
132
|
+
_c.label = 1;
|
|
131
133
|
case 1:
|
|
132
|
-
|
|
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 =
|
|
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
|
-
|
|
154
|
+
responseBody = void 0;
|
|
155
|
+
_c.label = 3;
|
|
153
156
|
case 3:
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
165
|
-
|
|
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: "
|
|
168
|
-
code: ErrorCode_1.default.
|
|
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
|
|
171
|
-
case
|
|
172
|
-
|
|
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 (
|
|
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(
|
|
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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,0CAAoB;AAEpB,0BAA0B;AAC1B,4DAAqC;AAErC,sBAAsB;AACtB,0DAAoC;
|
|
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
package/src/ErrorCode.ts
CHANGED
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
|
|
144
|
+
// Process response based on responseType
|
|
145
|
+
let responseBody: any;
|
|
142
146
|
try {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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: `
|
|
153
|
-
code: ErrorCode.
|
|
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) {
|