dce-reactkit 2.0.2 → 2.0.5
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/AppWrapper.d.ts +19 -0
- package/lib/components/AppWrapper.js +127 -0
- package/lib/components/AppWrapper.js.map +1 -0
- package/lib/components/ErrorBox.d.ts +12 -0
- package/lib/components/ErrorBox.js +65 -0
- package/lib/components/ErrorBox.js.map +1 -0
- package/lib/helpers/handleError.d.ts +14 -0
- package/lib/helpers/handleError.js +54 -0
- package/lib/helpers/handleError.js.map +1 -0
- package/lib/helpers/handleSuccess.d.ts +8 -0
- package/lib/helpers/handleSuccess.js +20 -0
- package/lib/helpers/handleSuccess.js.map +1 -0
- package/lib/helpers/parseRequest.d.ts +21 -0
- package/lib/helpers/parseRequest.js +240 -0
- package/lib/helpers/parseRequest.js.map +1 -0
- package/lib/helpers/showFatalError.d.ts +2 -0
- package/lib/helpers/showFatalError.js +5 -0
- package/lib/helpers/showFatalError.js.map +1 -0
- package/lib/helpers/visitServerEndpoint.d.ts +7 -1
- package/lib/helpers/visitServerEndpoint.js +57 -6
- package/lib/helpers/visitServerEndpoint.js.map +1 -1
- package/lib/types/ParamType.d.ts +17 -0
- package/lib/types/ParamType.js +21 -0
- package/lib/types/ParamType.js.map +1 -0
- package/lib/types/ReactKitErrorCode.d.ts +5 -1
- package/lib/types/ReactKitErrorCode.js +4 -0
- package/lib/types/ReactKitErrorCode.js.map +1 -1
- package/package.json +2 -1
- package/tsconfig.json +1 -1
- package/src/components/LoadingSpinner.tsx +0 -105
- package/src/components/Modal.tsx +0 -447
- package/src/errors/ErrorWithCode.tsx +0 -15
- package/src/helpers/abbreviate.tsx +0 -23
- package/src/helpers/avg.tsx +0 -22
- package/src/helpers/ceilToNumDecimals.tsx +0 -13
- package/src/helpers/floorToNumDecimals.tsx +0 -13
- package/src/helpers/forceNumIntoBounds.tsx +0 -19
- package/src/helpers/padDecimalZeros.tsx +0 -32
- package/src/helpers/padZerosLeft.tsx +0 -21
- package/src/helpers/roundToNumDecimals.tsx +0 -13
- package/src/helpers/sum.tsx +0 -16
- package/src/helpers/visitServerEndpoint.tsx +0 -59
- package/src/helpers/waitMs.tsx +0 -12
- package/src/types/ReactKitErrorCode.tsx +0 -12
- package/src/types/Variant.tsx +0 -16
|
@@ -39,13 +39,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
40
|
};
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.setSessionExpiryHandler = void 0;
|
|
42
43
|
// Initialize caccl
|
|
43
44
|
var client_1 = require("caccl/client");
|
|
44
45
|
// Import custom error
|
|
45
46
|
var ErrorWithCode_1 = __importDefault(require("../errors/ErrorWithCode"));
|
|
46
47
|
var ReactKitErrorCode_1 = __importDefault(require("../types/ReactKitErrorCode"));
|
|
48
|
+
/*------------------------------------------------------------------------*/
|
|
49
|
+
/* Listener */
|
|
50
|
+
/*------------------------------------------------------------------------*/
|
|
51
|
+
// Handler for session expiry
|
|
52
|
+
var sessionExpiryHandler;
|
|
53
|
+
// Keep track of whether or not session expiry has already been handled
|
|
54
|
+
var sessionAlreadyExpired = false;
|
|
47
55
|
/**
|
|
48
|
-
*
|
|
56
|
+
* Set the session expiry handler
|
|
57
|
+
* @author Gabe Abrams
|
|
58
|
+
* @param handler new handler to use when session expires
|
|
59
|
+
*/
|
|
60
|
+
var setSessionExpiryHandler = function (handler) {
|
|
61
|
+
sessionExpiryHandler = handler;
|
|
62
|
+
};
|
|
63
|
+
exports.setSessionExpiryHandler = setSessionExpiryHandler;
|
|
64
|
+
/*------------------------------------------------------------------------*/
|
|
65
|
+
/* Main */
|
|
66
|
+
/*------------------------------------------------------------------------*/
|
|
67
|
+
/**
|
|
68
|
+
* Visit an endpoint on the server [for client only]
|
|
49
69
|
* @author Gabe Abrams
|
|
50
70
|
* @param opts object containing all arguments
|
|
51
71
|
* @param opts.path - the path of the server endpoint
|
|
@@ -68,12 +88,43 @@ var visitServerEndpoint = function (opts) { return __awaiter(void 0, void 0, voi
|
|
|
68
88
|
if (!response || !response.body) {
|
|
69
89
|
throw new ErrorWithCode_1.default('We didn\'t get a response from the server. Please check your internet connection.', ReactKitErrorCode_1.default.NoResponse);
|
|
70
90
|
}
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
91
|
+
if (!!response.body.success) return [3 /*break*/, 6];
|
|
92
|
+
if (!(response.body.code === ReactKitErrorCode_1.default.SessionExpired)) return [3 /*break*/, 5];
|
|
93
|
+
if (!sessionAlreadyExpired) return [3 /*break*/, 3];
|
|
94
|
+
// Never return (browser is already reloading)
|
|
95
|
+
return [4 /*yield*/, new Promise(function () {
|
|
96
|
+
// Promise that never returns
|
|
97
|
+
})];
|
|
98
|
+
case 2:
|
|
99
|
+
// Never return (browser is already reloading)
|
|
100
|
+
_a.sent();
|
|
101
|
+
_a.label = 3;
|
|
102
|
+
case 3:
|
|
103
|
+
sessionAlreadyExpired = true;
|
|
104
|
+
// Show session expiration message
|
|
105
|
+
if (sessionExpiryHandler) {
|
|
106
|
+
// Use handler
|
|
107
|
+
sessionExpiryHandler();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Fallback to alert
|
|
111
|
+
// eslint-disable-next-line no-alert
|
|
112
|
+
alert('Your session has expired. Please start over.');
|
|
76
113
|
}
|
|
114
|
+
// Never return (don't continue execution)
|
|
115
|
+
return [4 /*yield*/, new Promise(function () {
|
|
116
|
+
// Promise that never returns
|
|
117
|
+
})];
|
|
118
|
+
case 4:
|
|
119
|
+
// Never return (don't continue execution)
|
|
120
|
+
_a.sent();
|
|
121
|
+
_a.label = 5;
|
|
122
|
+
case 5:
|
|
123
|
+
// Other errors
|
|
124
|
+
throw new ErrorWithCode_1.default((response.body.message
|
|
125
|
+
|| 'An unknown error occurred. Please contact an admin.'), (response.body.code
|
|
126
|
+
|| ReactKitErrorCode_1.default.NoCode));
|
|
127
|
+
case 6:
|
|
77
128
|
body = response.body.body;
|
|
78
129
|
// Return
|
|
79
130
|
return [2 /*return*/, body];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitServerEndpoint.js","sourceRoot":"","sources":["../../src/helpers/visitServerEndpoint.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"visitServerEndpoint.js","sourceRoot":"","sources":["../../src/helpers/visitServerEndpoint.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,uCAA2C;AAE3C,sBAAsB;AACtB,0EAAoD;AACpD,iFAA2D;AAE3D,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,6BAA6B;AAC7B,IAAI,oBAAgC,CAAC;AAErC,uEAAuE;AACvE,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAElC;;;;GAIG;AACI,IAAM,uBAAuB,GAAG,UAAC,OAAmB;IACzD,oBAAoB,GAAG,OAAO,CAAC;AACjC,CAAC,CAAC;AAFW,QAAA,uBAAuB,2BAElC;AAEF,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E;;;;;;;;GAQG;AACH,IAAM,mBAAmB,GAAG,UAC1B,IAIC;;;;oBAGgB,qBAAM,IAAA,oBAAW,EAAC;oBACjC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,EAAA;;gBAJI,QAAQ,GAAG,SAIf;gBAEF,oBAAoB;gBACpB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC/B,MAAM,IAAI,uBAAa,CACrB,mFAAmF,EACnF,2BAAiB,CAAC,UAAU,CAC7B,CAAC;iBACH;qBACG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAtB,wBAAsB;qBAEpB,CAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,2BAAiB,CAAC,cAAc,CAAA,EAAvD,wBAAuD;qBAErD,qBAAqB,EAArB,wBAAqB;gBACvB,8CAA8C;gBAC9C,qBAAM,IAAI,OAAO,CAA2B;wBAC1C,6BAA6B;oBAC/B,CAAC,CAAC,EAAA;;gBAHF,8CAA8C;gBAC9C,SAEE,CAAC;;;gBAEL,qBAAqB,GAAG,IAAI,CAAC;gBAE7B,kCAAkC;gBAClC,IAAI,oBAAoB,EAAE;oBACxB,cAAc;oBACd,oBAAoB,EAAE,CAAC;iBACxB;qBAAM;oBACL,oBAAoB;oBAEpB,oCAAoC;oBACpC,KAAK,CAAC,8CAA8C,CAAC,CAAC;iBACvD;gBAED,0CAA0C;gBAC1C,qBAAM,IAAI,OAAO,CAA2B;wBAC1C,6BAA6B;oBAC/B,CAAC,CAAC,EAAA;;gBAHF,0CAA0C;gBAC1C,SAEE,CAAC;;;YAGL,eAAe;YACf,MAAM,IAAI,uBAAa,CACrB,CACE,QAAQ,CAAC,IAAI,CAAC,OAAO;mBAClB,qDAAqD,CACzD,EACD,CACE,QAAQ,CAAC,IAAI,CAAC,IAAI;mBACf,2BAAiB,CAAC,MAAM,CAC5B,CACF,CAAC;;gBAII,IAAI,GAAK,QAAQ,CAAC,IAAI,KAAlB,CAAmB;gBAE/B,SAAS;gBACT,sBAAO,IAAI,EAAC;;;KACb,CAAC;AAEF,kBAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API param types
|
|
3
|
+
* @author Gabe Abrams
|
|
4
|
+
*/
|
|
5
|
+
declare enum ParamType {
|
|
6
|
+
Boolean = "boolean",
|
|
7
|
+
BooleanOptional = "boolean-optional",
|
|
8
|
+
Float = "float",
|
|
9
|
+
FloatOptional = "float-optional",
|
|
10
|
+
Int = "int",
|
|
11
|
+
IntOptional = "int-optional",
|
|
12
|
+
JSON = "json",
|
|
13
|
+
JSONOptional = "json-optional",
|
|
14
|
+
String = "string",
|
|
15
|
+
StringOptional = "string-optional"
|
|
16
|
+
}
|
|
17
|
+
export default ParamType;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* API param types
|
|
5
|
+
* @author Gabe Abrams
|
|
6
|
+
*/
|
|
7
|
+
var ParamType;
|
|
8
|
+
(function (ParamType) {
|
|
9
|
+
ParamType["Boolean"] = "boolean";
|
|
10
|
+
ParamType["BooleanOptional"] = "boolean-optional";
|
|
11
|
+
ParamType["Float"] = "float";
|
|
12
|
+
ParamType["FloatOptional"] = "float-optional";
|
|
13
|
+
ParamType["Int"] = "int";
|
|
14
|
+
ParamType["IntOptional"] = "int-optional";
|
|
15
|
+
ParamType["JSON"] = "json";
|
|
16
|
+
ParamType["JSONOptional"] = "json-optional";
|
|
17
|
+
ParamType["String"] = "string";
|
|
18
|
+
ParamType["StringOptional"] = "string-optional";
|
|
19
|
+
})(ParamType || (ParamType = {}));
|
|
20
|
+
exports.default = ParamType;
|
|
21
|
+
//# sourceMappingURL=ParamType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParamType.js","sourceRoot":"","sources":["../../src/types/ParamType.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,IAAK,SAWJ;AAXD,WAAK,SAAS;IACZ,gCAAmB,CAAA;IACnB,iDAAoC,CAAA;IACpC,4BAAe,CAAA;IACf,6CAAgC,CAAA;IAChC,wBAAW,CAAA;IACX,yCAA4B,CAAA;IAC5B,0BAAa,CAAA;IACb,2CAA8B,CAAA;IAC9B,8BAAiB,CAAA;IACjB,+CAAkC,CAAA;AACpC,CAAC,EAXI,SAAS,KAAT,SAAS,QAWb;AAED,kBAAe,SAAS,CAAC"}
|
|
@@ -9,6 +9,10 @@ var ReactKitErrorCode;
|
|
|
9
9
|
(function (ReactKitErrorCode) {
|
|
10
10
|
ReactKitErrorCode["NoResponse"] = "DRK1";
|
|
11
11
|
ReactKitErrorCode["NoCode"] = "DRK2";
|
|
12
|
+
ReactKitErrorCode["SessionExpired"] = "DRK3";
|
|
13
|
+
ReactKitErrorCode["MissingParameter"] = "DRK4";
|
|
14
|
+
ReactKitErrorCode["InvalidParameter"] = "DRK5";
|
|
15
|
+
ReactKitErrorCode["WrongCourse"] = "DRK6";
|
|
12
16
|
})(ReactKitErrorCode || (ReactKitErrorCode = {}));
|
|
13
17
|
exports.default = ReactKitErrorCode;
|
|
14
18
|
//# sourceMappingURL=ReactKitErrorCode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactKitErrorCode.js","sourceRoot":"","sources":["../../src/types/ReactKitErrorCode.tsx"],"names":[],"mappings":";AAAA,4BAA4B;;AAE5B;;;GAGG;AACH,IAAK,
|
|
1
|
+
{"version":3,"file":"ReactKitErrorCode.js","sourceRoot":"","sources":["../../src/types/ReactKitErrorCode.tsx"],"names":[],"mappings":";AAAA,4BAA4B;;AAE5B;;;GAGG;AACH,IAAK,iBAOJ;AAPD,WAAK,iBAAiB;IACpB,wCAAmB,CAAA;IACnB,oCAAe,CAAA;IACf,4CAAuB,CAAA;IACvB,8CAAyB,CAAA;IACzB,8CAAyB,CAAA;IACzB,yCAAoB,CAAA;AACtB,CAAC,EAPI,iBAAiB,KAAjB,iBAAiB,QAOrB;AAED,kBAAe,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dce-reactkit",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"module": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"react-bootstrap": "^2.2.3"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
+
"@types/express": "^4.17.13",
|
|
25
26
|
"@typescript-eslint/eslint-plugin": "^5.18.0",
|
|
26
27
|
"@typescript-eslint/parser": "^5.18.0",
|
|
27
28
|
"eslint": "^8.12.0",
|
package/tsconfig.json
CHANGED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Loading spinner/indicator
|
|
3
|
-
* @author Gabe Abrams
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Import FontAwesome Icons
|
|
7
|
-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
8
|
-
import { faCircle } from '@fortawesome/free-solid-svg-icons';
|
|
9
|
-
|
|
10
|
-
/*------------------------------------------------------------------------*/
|
|
11
|
-
/* Style */
|
|
12
|
-
/*------------------------------------------------------------------------*/
|
|
13
|
-
|
|
14
|
-
const style = `
|
|
15
|
-
/* Blips */
|
|
16
|
-
.LoadingSpinner-blip-1,
|
|
17
|
-
.LoadingSpinner-blip-2,
|
|
18
|
-
.LoadingSpinner-blip-3,
|
|
19
|
-
.LoadingSpinner-blip-4 {
|
|
20
|
-
font-size: 25px;
|
|
21
|
-
opacity: 0.6;
|
|
22
|
-
margin-top: 20px;
|
|
23
|
-
margin-bottom: 20px;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/* First Blip */
|
|
27
|
-
.LoadingSpinner-blip-1 {
|
|
28
|
-
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/* Second Blip */
|
|
32
|
-
.LoadingSpinner-blip-2 {
|
|
33
|
-
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
34
|
-
-webkit-animation-delay: 0.1s;
|
|
35
|
-
animation-delay: 0.1s;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/* Third Blip */
|
|
39
|
-
.LoadingSpinner-blip-3 {
|
|
40
|
-
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
41
|
-
animation-delay: 0.2s;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* Fourth Blip */
|
|
45
|
-
.LoadingSpinner-blip-4 {
|
|
46
|
-
animation: LoadingSpinner-pop-animation 2s infinite;
|
|
47
|
-
animation-delay: 0.3s;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/* Pop Animation for Each Blip */
|
|
51
|
-
@keyframes LoadingSpinner-pop-animation {
|
|
52
|
-
0% {
|
|
53
|
-
transform: scale(1.0);
|
|
54
|
-
}
|
|
55
|
-
10% {
|
|
56
|
-
transform: scale(1.5);
|
|
57
|
-
}
|
|
58
|
-
30% {
|
|
59
|
-
transform: scale(1.0);
|
|
60
|
-
}
|
|
61
|
-
100% {
|
|
62
|
-
transform: scale(1.0);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
`;
|
|
66
|
-
|
|
67
|
-
/*------------------------------------------------------------------------*/
|
|
68
|
-
/* Component */
|
|
69
|
-
/*------------------------------------------------------------------------*/
|
|
70
|
-
|
|
71
|
-
const LoadingSpinner = () => {
|
|
72
|
-
/*------------------------------------------------------------------------*/
|
|
73
|
-
/* Render */
|
|
74
|
-
/*------------------------------------------------------------------------*/
|
|
75
|
-
|
|
76
|
-
// Add all four blips to a container
|
|
77
|
-
return (
|
|
78
|
-
<div className="text-center LoadingSpinner LoadingSpinner-container">
|
|
79
|
-
<style>{style}</style>
|
|
80
|
-
<FontAwesomeIcon
|
|
81
|
-
icon={faCircle}
|
|
82
|
-
className="LoadingSpinner-blip-1 me-1"
|
|
83
|
-
/>
|
|
84
|
-
<FontAwesomeIcon
|
|
85
|
-
icon={faCircle}
|
|
86
|
-
className="LoadingSpinner-blip-2 me-1"
|
|
87
|
-
/>
|
|
88
|
-
<FontAwesomeIcon
|
|
89
|
-
icon={faCircle}
|
|
90
|
-
className="LoadingSpinner-blip-3 me-1"
|
|
91
|
-
/>
|
|
92
|
-
<FontAwesomeIcon
|
|
93
|
-
icon={faCircle}
|
|
94
|
-
className="LoadingSpinner-blip-4"
|
|
95
|
-
/>
|
|
96
|
-
</div>
|
|
97
|
-
);
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
/*------------------------------------------------------------------------*/
|
|
101
|
-
/* Wrap Up */
|
|
102
|
-
/*------------------------------------------------------------------------*/
|
|
103
|
-
|
|
104
|
-
// Export component
|
|
105
|
-
export default LoadingSpinner;
|