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.
Files changed (45) hide show
  1. package/lib/components/AppWrapper.d.ts +19 -0
  2. package/lib/components/AppWrapper.js +127 -0
  3. package/lib/components/AppWrapper.js.map +1 -0
  4. package/lib/components/ErrorBox.d.ts +12 -0
  5. package/lib/components/ErrorBox.js +65 -0
  6. package/lib/components/ErrorBox.js.map +1 -0
  7. package/lib/helpers/handleError.d.ts +14 -0
  8. package/lib/helpers/handleError.js +54 -0
  9. package/lib/helpers/handleError.js.map +1 -0
  10. package/lib/helpers/handleSuccess.d.ts +8 -0
  11. package/lib/helpers/handleSuccess.js +20 -0
  12. package/lib/helpers/handleSuccess.js.map +1 -0
  13. package/lib/helpers/parseRequest.d.ts +21 -0
  14. package/lib/helpers/parseRequest.js +240 -0
  15. package/lib/helpers/parseRequest.js.map +1 -0
  16. package/lib/helpers/showFatalError.d.ts +2 -0
  17. package/lib/helpers/showFatalError.js +5 -0
  18. package/lib/helpers/showFatalError.js.map +1 -0
  19. package/lib/helpers/visitServerEndpoint.d.ts +7 -1
  20. package/lib/helpers/visitServerEndpoint.js +57 -6
  21. package/lib/helpers/visitServerEndpoint.js.map +1 -1
  22. package/lib/types/ParamType.d.ts +17 -0
  23. package/lib/types/ParamType.js +21 -0
  24. package/lib/types/ParamType.js.map +1 -0
  25. package/lib/types/ReactKitErrorCode.d.ts +5 -1
  26. package/lib/types/ReactKitErrorCode.js +4 -0
  27. package/lib/types/ReactKitErrorCode.js.map +1 -1
  28. package/package.json +2 -1
  29. package/tsconfig.json +1 -1
  30. package/src/components/LoadingSpinner.tsx +0 -105
  31. package/src/components/Modal.tsx +0 -447
  32. package/src/errors/ErrorWithCode.tsx +0 -15
  33. package/src/helpers/abbreviate.tsx +0 -23
  34. package/src/helpers/avg.tsx +0 -22
  35. package/src/helpers/ceilToNumDecimals.tsx +0 -13
  36. package/src/helpers/floorToNumDecimals.tsx +0 -13
  37. package/src/helpers/forceNumIntoBounds.tsx +0 -19
  38. package/src/helpers/padDecimalZeros.tsx +0 -32
  39. package/src/helpers/padZerosLeft.tsx +0 -21
  40. package/src/helpers/roundToNumDecimals.tsx +0 -13
  41. package/src/helpers/sum.tsx +0 -16
  42. package/src/helpers/visitServerEndpoint.tsx +0 -59
  43. package/src/helpers/waitMs.tsx +0 -12
  44. package/src/types/ReactKitErrorCode.tsx +0 -12
  45. 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
- * Visit an endpoint on the server
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 (!response.body.success) {
72
- // Other errors
73
- throw new ErrorWithCode_1.default((response.body.message
74
- || 'An unknown error occurred. Please contact an admin.'), (response.body.code
75
- || ReactKitErrorCode_1.default.NoCode));
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,uCAA2C;AAE3C,sBAAsB;AACtB,0EAAoD;AACpD,iFAA2D;AAE3D;;;;;;;;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;gBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC1B,eAAe;oBACf,MAAM,IAAI,uBAAa,CACrB,CACE,QAAQ,CAAC,IAAI,CAAC,OAAO;2BAClB,qDAAqD,CACzD,EACD,CACE,QAAQ,CAAC,IAAI,CAAC,IAAI;2BACf,2BAAiB,CAAC,MAAM,CAC5B,CACF,CAAC;iBACH;gBAGO,IAAI,GAAK,QAAQ,CAAC,IAAI,KAAlB,CAAmB;gBAE/B,SAAS;gBACT,sBAAO,IAAI,EAAC;;;KACb,CAAC;AAEF,kBAAe,mBAAmB,CAAC"}
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"}
@@ -4,6 +4,10 @@
4
4
  */
5
5
  declare enum ReactKitErrorCode {
6
6
  NoResponse = "DRK1",
7
- NoCode = "DRK2"
7
+ NoCode = "DRK2",
8
+ SessionExpired = "DRK3",
9
+ MissingParameter = "DRK4",
10
+ InvalidParameter = "DRK5",
11
+ WrongCourse = "DRK6"
8
12
  }
9
13
  export default ReactKitErrorCode;
@@ -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,iBAGJ;AAHD,WAAK,iBAAiB;IACpB,wCAAmB,CAAA;IACnB,oCAAe,CAAA;AACjB,CAAC,EAHI,iBAAiB,KAAjB,iBAAiB,QAGrB;AAED,kBAAe,iBAAiB,CAAC"}
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.2",
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
@@ -10,7 +10,7 @@
10
10
  "target": "es5",
11
11
  "jsx": "react-jsx",
12
12
  "lib": [
13
- "es2015",
13
+ "es2017",
14
14
  "dom"
15
15
  ],
16
16
  "outDir": "./lib"
@@ -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;