studiokit-scaffolding-js 5.2.0-next.2.6 → 5.2.0-next.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/components/HOC/ModelErrorRedirectComponent.js +3 -2
- package/lib/redux/sagas/authSaga.js +4 -2
- package/lib/redux/sagas/modelFetchSaga.js +5 -3
- package/lib/services/fetchService.js +2 -1
- package/lib/types/net/HTTPStatusCode.d.ts +1 -0
- package/lib/types/net/HTTPStatusCode.js +1 -0
- package/package.json +1 -1
|
@@ -46,6 +46,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
46
46
|
var react_1 = __importStar(require("react"));
|
|
47
47
|
var react_router_dom_1 = require("react-router-dom");
|
|
48
48
|
var modelStatus_1 = require("../../constants/modelStatus");
|
|
49
|
+
var types_1 = require("../../types");
|
|
49
50
|
/**
|
|
50
51
|
* This component exists as a child to CollectionItemComponent to
|
|
51
52
|
* redirect the user to a 404/500 page if errors occur while fetching data.
|
|
@@ -71,13 +72,13 @@ function modelErrorRedirectComponent(WrappedComponent) {
|
|
|
71
72
|
model._metadata &&
|
|
72
73
|
model._metadata.hasError &&
|
|
73
74
|
model._metadata.lastFetchErrorData &&
|
|
74
|
-
model._metadata.lastFetchErrorData.status ===
|
|
75
|
+
model._metadata.lastFetchErrorData.status === types_1.HTTP_STATUS_CODE.NOT_FOUND;
|
|
75
76
|
var errorRoute = previousModelStatus === modelStatus_1.MODEL_STATUS.UNINITIALIZED &&
|
|
76
77
|
modelStatus === modelStatus_1.MODEL_STATUS.ERROR &&
|
|
77
78
|
model._metadata &&
|
|
78
79
|
model._metadata.hasError &&
|
|
79
80
|
model._metadata.lastFetchErrorData &&
|
|
80
|
-
model._metadata.lastFetchErrorData.status ===
|
|
81
|
+
model._metadata.lastFetchErrorData.status === types_1.HTTP_STATUS_CODE.INTERNAL_SERVER_ERROR;
|
|
81
82
|
if (notFoundRoute) {
|
|
82
83
|
var pathname = window.location.pathname;
|
|
83
84
|
return (react_1.default.createElement(react_router_dom_1.Redirect, { to: {
|
|
@@ -43,6 +43,7 @@ var effects_1 = require("redux-saga/effects");
|
|
|
43
43
|
var codeProviderService_1 = require("../../services/codeProviderService");
|
|
44
44
|
var ticketProviderService_1 = require("../../services/ticketProviderService");
|
|
45
45
|
var tokenPersistenceService_1 = require("../../services/tokenPersistenceService");
|
|
46
|
+
var types_1 = require("../../types");
|
|
46
47
|
var logger_1 = require("../../utils/logger");
|
|
47
48
|
var actions_1 = require("../actions");
|
|
48
49
|
//#region Helpers
|
|
@@ -138,7 +139,8 @@ function getTokenFromRefreshToken(oauthTokenParam) {
|
|
|
138
139
|
// any error response
|
|
139
140
|
if (fetchErrorAction) {
|
|
140
141
|
// ignore server errors
|
|
141
|
-
if (((_b = fetchErrorAction.errorData) === null || _b === void 0 ? void 0 : _b.status) &&
|
|
142
|
+
if (((_b = fetchErrorAction.errorData) === null || _b === void 0 ? void 0 : _b.status) &&
|
|
143
|
+
fetchErrorAction.errorData.status >= types_1.HTTP_STATUS_CODE.INTERNAL_SERVER_ERROR) {
|
|
142
144
|
return [2 /*return*/, oauthTokenParam];
|
|
143
145
|
}
|
|
144
146
|
return [2 /*return*/, null];
|
|
@@ -285,7 +287,7 @@ function handleAuthFailure(action) {
|
|
|
285
287
|
return __generator(this, function (_a) {
|
|
286
288
|
switch (_a.label) {
|
|
287
289
|
case 0:
|
|
288
|
-
if (!(oauthToken && action.errorData && action.errorData.status ===
|
|
290
|
+
if (!(oauthToken && action.errorData && action.errorData.status === types_1.HTTP_STATUS_CODE.UNAUTHORIZED)) return [3 /*break*/, 2];
|
|
289
291
|
logger.debug('token expired - refreshing');
|
|
290
292
|
return [4 /*yield*/, effects_1.call(performTokenRefresh)];
|
|
291
293
|
case 1:
|
|
@@ -308,8 +308,10 @@ function modelFetch(modelFetchRequestAction) {
|
|
|
308
308
|
// log to the console
|
|
309
309
|
logger.error(error);
|
|
310
310
|
didFail = true;
|
|
311
|
-
// Do not continue to retry if the response is between 400-500 (except 408:
|
|
312
|
-
if (errorData.status >=
|
|
311
|
+
// Do not continue to retry if the response is between 400-500 (except 408: request timeout)
|
|
312
|
+
if (errorData.status >= types_1.HTTP_STATUS_CODE.BAD_REQUEST &&
|
|
313
|
+
errorData.status < types_1.HTTP_STATUS_CODE.INTERNAL_SERVER_ERROR &&
|
|
314
|
+
errorData.status !== types_1.HTTP_STATUS_CODE.REQUEST_TIMEOUT) {
|
|
313
315
|
tryCount = tryLimit;
|
|
314
316
|
}
|
|
315
317
|
if (!(tryCount < tryLimit)) return [3 /*break*/, 16];
|
|
@@ -340,7 +342,7 @@ function modelFetch(modelFetchRequestAction) {
|
|
|
340
342
|
// dispatch that the fetch failed, which updates `_metadata` (and `guid`, if provided) at the target redux `modelPath`
|
|
341
343
|
_a.sent();
|
|
342
344
|
// Send error to error handler, except for 401s
|
|
343
|
-
if (errorData.status !==
|
|
345
|
+
if (errorData.status !== types_1.HTTP_STATUS_CODE.UNAUTHORIZED) {
|
|
344
346
|
errorHandler(error, modelFetchRequestAction, fetchConfig, lastFetchResult, errorData);
|
|
345
347
|
}
|
|
346
348
|
_a.label = 20;
|
|
@@ -30,6 +30,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
30
30
|
exports.sendFetch = exports.constructPath = exports.getApiRoot = exports.setApiRoot = void 0;
|
|
31
31
|
var lodash_1 = require("lodash");
|
|
32
32
|
var effects_1 = require("redux-saga/effects");
|
|
33
|
+
var types_1 = require("../types");
|
|
33
34
|
var error_1 = require("../utils/error");
|
|
34
35
|
var apiRoot;
|
|
35
36
|
/**
|
|
@@ -138,7 +139,7 @@ function sendFetch(config) {
|
|
|
138
139
|
isResponseJson = !!response_1.headers &&
|
|
139
140
|
response_1.headers.has('Content-Type') &&
|
|
140
141
|
isContentTypeJson(response_1.headers.get('Content-Type'));
|
|
141
|
-
if (!(response_1.status ===
|
|
142
|
+
if (!(response_1.status === types_1.HTTP_STATUS_CODE.NO_CONTENT)) return [3 /*break*/, 3];
|
|
142
143
|
result.data = isBodyJson ? config.body : undefined;
|
|
143
144
|
return [3 /*break*/, 8];
|
|
144
145
|
case 3:
|
|
@@ -9,6 +9,7 @@ var HTTP_STATUS_CODE;
|
|
|
9
9
|
HTTP_STATUS_CODE[HTTP_STATUS_CODE["BAD_REQUEST"] = 400] = "BAD_REQUEST";
|
|
10
10
|
HTTP_STATUS_CODE[HTTP_STATUS_CODE["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
|
|
11
11
|
HTTP_STATUS_CODE[HTTP_STATUS_CODE["FORBIDDEN"] = 403] = "FORBIDDEN";
|
|
12
|
+
HTTP_STATUS_CODE[HTTP_STATUS_CODE["NOT_FOUND"] = 404] = "NOT_FOUND";
|
|
12
13
|
HTTP_STATUS_CODE[HTTP_STATUS_CODE["REQUEST_TIMEOUT"] = 408] = "REQUEST_TIMEOUT";
|
|
13
14
|
HTTP_STATUS_CODE[HTTP_STATUS_CODE["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
|
|
14
15
|
})(HTTP_STATUS_CODE = exports.HTTP_STATUS_CODE || (exports.HTTP_STATUS_CODE = {}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "studiokit-scaffolding-js",
|
|
3
|
-
"version": "5.2.0-next.2.
|
|
3
|
+
"version": "5.2.0-next.2.7",
|
|
4
4
|
"description": "Common scaffolding for Studio apps at Purdue",
|
|
5
5
|
"repository": "https://gitlab.com/purdue-informatics/studiokit/studiokit-scaffolding-js",
|
|
6
6
|
"license": "MIT",
|