@elliemae/pui-app-sdk 4.12.0-next.1 → 4.12.0
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/dist/cjs/communication/http-client/baseQuery.js +42 -0
- package/dist/cjs/data/appMiddleware.js +51 -0
- package/dist/cjs/data/errorMiddleware.js +31 -0
- package/dist/cjs/data/index.js +3 -3
- package/dist/cjs/data/listenerMiddleware.js +58 -0
- package/dist/cjs/data/queryMiddleware.js +50 -0
- package/dist/cjs/data/react.js +32 -0
- package/dist/cjs/data/store.js +6 -2
- package/dist/cjs/data/useAppDispatch.js +25 -0
- package/dist/cjs/data/useAppMiddleware.js +34 -0
- package/dist/cjs/data/{react-redux.js → useAppSelector.js} +3 -5
- package/dist/cjs/data/useInjectListener.js +34 -0
- package/dist/cjs/data/useInjectQuery.js +33 -0
- package/dist/cjs/index.js +12 -5
- package/dist/cjs/utils/log-records.js +15 -15
- package/dist/cjs/utils/micro-frontend/console-logger.js +2 -1
- package/dist/cjs/view/breakpoint/use-breakpoint.js +2 -2
- package/dist/cjs/view/error-toast/index.js +3 -3
- package/dist/cjs/view/form/index.js +0 -1
- package/dist/cjs/view/live-message/index.js +3 -3
- package/dist/cjs/view/login/index.js +2 -2
- package/dist/cjs/view/micro-app/app-factory/index.js +1 -1
- package/dist/cjs/view/micro-app/resources/manifest.js +1 -1
- package/dist/cjs/view/modals/navigation-prompt/index.js +2 -2
- package/dist/cjs/view/modals/session-expiry/index.js +2 -2
- package/dist/cjs/view/session-timeout/index.js +2 -2
- package/dist/cjs/view/wait-message/index.js +17 -43
- package/dist/cjs/view/wait-message/wait-message-launcher.js +2 -2
- package/dist/esm/communication/http-client/baseQuery.js +22 -0
- package/dist/esm/data/appMiddleware.js +31 -0
- package/dist/esm/data/errorMiddleware.js +11 -0
- package/dist/esm/data/index.js +1 -1
- package/dist/esm/data/listenerMiddleware.js +38 -0
- package/dist/esm/data/queryMiddleware.js +30 -0
- package/dist/esm/data/react.js +12 -0
- package/dist/esm/data/store.js +7 -5
- package/dist/esm/data/useAppDispatch.js +5 -0
- package/dist/esm/data/useAppMiddleware.js +14 -0
- package/dist/esm/data/useAppSelector.js +5 -0
- package/dist/esm/data/useInjectListener.js +17 -0
- package/dist/esm/data/useInjectQuery.js +15 -0
- package/dist/esm/index.js +14 -1
- package/dist/esm/utils/log-records.js +15 -15
- package/dist/esm/utils/micro-frontend/console-logger.js +2 -1
- package/dist/esm/view/breakpoint/use-breakpoint.js +1 -1
- package/dist/esm/view/error-toast/index.js +1 -1
- package/dist/esm/view/form/index.js +0 -1
- package/dist/esm/view/live-message/index.js +1 -1
- package/dist/esm/view/login/index.js +1 -1
- package/dist/esm/view/micro-app/app-factory/index.js +1 -1
- package/dist/esm/view/micro-app/resources/manifest.js +1 -1
- package/dist/esm/view/modals/navigation-prompt/index.js +1 -1
- package/dist/esm/view/modals/session-expiry/index.js +1 -1
- package/dist/esm/view/session-timeout/index.js +1 -1
- package/dist/esm/view/wait-message/index.js +16 -32
- package/dist/esm/view/wait-message/wait-message-launcher.js +1 -1
- package/dist/types/lib/communication/http-client/baseQuery.d.ts +14 -0
- package/dist/types/lib/communication/http-client/index.d.ts +1 -1
- package/dist/types/lib/data/appMiddleware.d.ts +8 -0
- package/dist/types/lib/data/errorMiddleware.d.ts +2 -0
- package/dist/types/lib/data/index.d.ts +1 -1
- package/dist/types/lib/data/listenerMiddleware.d.ts +11 -0
- package/dist/types/lib/data/queryMiddleware.d.ts +11 -0
- package/dist/types/lib/data/react.d.ts +5 -0
- package/dist/types/lib/data/store.d.ts +4 -3
- package/dist/types/lib/data/{react-redux.d.ts → useAppDispatch.d.ts} +0 -3
- package/dist/types/lib/data/useAppMiddleware.d.ts +5 -0
- package/dist/types/lib/data/useAppSelector.d.ts +3 -0
- package/dist/types/lib/data/useInjectListener.d.ts +5 -0
- package/dist/types/lib/data/useInjectQuery.d.ts +7 -0
- package/dist/types/lib/index.d.ts +3 -1
- package/dist/types/lib/utils/log-records.d.ts +16 -36
- package/dist/types/lib/utils/testing/render-with-redux.d.ts +2 -2
- package/dist/types/lib/utils/testing/render-with-router-redux.d.ts +2 -2
- package/dist/types/lib/view/visually-hidden/index.d.ts +1 -1
- package/dist/types/lib/view/wait-message/index.d.ts +2 -8
- package/package.json +34 -32
- package/dist/esm/data/react-redux.js +0 -7
|
@@ -36,7 +36,6 @@ var import_styled_components = __toESM(require("styled-components"));
|
|
|
36
36
|
var import_react_hook_form = require("react-hook-form");
|
|
37
37
|
const StyledForm = import_styled_components.default.form`
|
|
38
38
|
width: 100%;
|
|
39
|
-
height: 100%;
|
|
40
39
|
`;
|
|
41
40
|
const Form = ({
|
|
42
41
|
/* eslint-disable indent */
|
|
@@ -23,9 +23,9 @@ __export(live_message_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(live_message_exports);
|
|
24
24
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
25
|
var import_react_aria_live = require("react-aria-live");
|
|
26
|
-
var
|
|
26
|
+
var import_react = require("../../data/react.js");
|
|
27
27
|
const LiveMessage = () => {
|
|
28
|
-
const message = (0,
|
|
29
|
-
const ariaLive = (0,
|
|
28
|
+
const message = (0, import_react.useAppSelector)((state) => state.liveMessage?.message);
|
|
29
|
+
const ariaLive = (0, import_react.useAppSelector)((state) => state.liveMessage?.ariaLive);
|
|
30
30
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_aria_live.LiveMessage, { message, "aria-live": ariaLive });
|
|
31
31
|
};
|
|
@@ -23,7 +23,7 @@ __export(login_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(login_exports);
|
|
24
24
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
25
|
var import_react = require("react");
|
|
26
|
-
var
|
|
26
|
+
var import_react2 = require("../../data/react.js");
|
|
27
27
|
var import_auth = require("../../utils/auth/index.js");
|
|
28
28
|
var import_actions = require("../../data/auth/actions.js");
|
|
29
29
|
const Login = ({
|
|
@@ -33,7 +33,7 @@ const Login = ({
|
|
|
33
33
|
children
|
|
34
34
|
}) => {
|
|
35
35
|
const [userAuthorized, setUserAuthorized] = (0, import_react.useState)(false);
|
|
36
|
-
const dispatch = (0,
|
|
36
|
+
const dispatch = (0, import_react2.useAppDispatch)();
|
|
37
37
|
(0, import_react.useEffect)(() => {
|
|
38
38
|
(0, import_auth.login)({ clientId, scope, responseType }).then(({ authorized }) => {
|
|
39
39
|
if (authorized)
|
|
@@ -116,7 +116,7 @@ const waitAndInitApplication = (appConfig, requests) => (
|
|
|
116
116
|
Promise.all(requests).then(addAppToActiveAppList.bind(null, appConfig.id)).then(initApplication.bind(null, appConfig)).catch((err) => {
|
|
117
117
|
const logRecord = import_log_records.logRecords.APP_INIT_FAILED(appConfig.id, err.message);
|
|
118
118
|
(0, import_micro_frontend.getLogger)().error({ ...logRecord, exception: err });
|
|
119
|
-
throw new Error(logRecord.
|
|
119
|
+
throw new Error(logRecord.msg);
|
|
120
120
|
})
|
|
121
121
|
);
|
|
122
122
|
const removeAssetsFromDOM = (id, documentEle = document) => {
|
|
@@ -61,7 +61,7 @@ const getFullFileNameofAssetsFromManifest = (manifest, assetNames = []) => asset
|
|
|
61
61
|
else {
|
|
62
62
|
const logRecord = import_log_records.logRecords.ASSET_NOT_FOUND_IN_MANIFEST(assetName);
|
|
63
63
|
(0, import_micro_frontend.getLogger)().error(logRecord);
|
|
64
|
-
throw new Error(logRecord.
|
|
64
|
+
throw new Error(logRecord.msg);
|
|
65
65
|
}
|
|
66
66
|
return assets;
|
|
67
67
|
}, []);
|
|
@@ -26,11 +26,11 @@ var import_react = require("react");
|
|
|
26
26
|
var import_ds_icons = require("@elliemae/ds-icons");
|
|
27
27
|
var import_ds_button = require("@elliemae/ds-button");
|
|
28
28
|
var import_ds_dialog = require("@elliemae/ds-dialog");
|
|
29
|
-
var
|
|
29
|
+
var import_react2 = require("../../../data/react.js");
|
|
30
30
|
var import_actions = require("../../../data/navigation-prompt/actions.js");
|
|
31
31
|
const NavigationPrompt = (0, import_react.memo)(
|
|
32
32
|
({ open = false }) => {
|
|
33
|
-
const dispatch = (0,
|
|
33
|
+
const dispatch = (0, import_react2.useAppDispatch)();
|
|
34
34
|
const cancelDialog = () => dispatch(import_actions.navigationPrompt.cancel());
|
|
35
35
|
const confirmDialog = () => dispatch(import_actions.navigationPrompt.confirm());
|
|
36
36
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_dialog.DSDialog, { isOpen: open, onClickOutside: cancelDialog, centered: true, children: [
|
|
@@ -26,7 +26,7 @@ var import_react = require("react");
|
|
|
26
26
|
var import_ds_button = require("@elliemae/ds-button");
|
|
27
27
|
var import_ds_icons = require("@elliemae/ds-icons");
|
|
28
28
|
var import_ds_dialog = require("@elliemae/ds-dialog");
|
|
29
|
-
var
|
|
29
|
+
var import_react2 = require("../../../data/react.js");
|
|
30
30
|
var import_actions = require("../../../data/logout/actions.js");
|
|
31
31
|
var import_session = require("../../../utils/session.js");
|
|
32
32
|
var import_customHooks = require("./customHooks.js");
|
|
@@ -34,7 +34,7 @@ const SessionExpiry = (0, import_react.memo)(
|
|
|
34
34
|
({ open, warningNotifiedAt = 0 }) => {
|
|
35
35
|
const [isOpen, setIsOpen] = (0, import_react.useState)(open);
|
|
36
36
|
const timeLeft = (0, import_customHooks.useTrackSessionExpiry)(warningNotifiedAt);
|
|
37
|
-
const dispatch = (0,
|
|
37
|
+
const dispatch = (0, import_react2.useAppDispatch)();
|
|
38
38
|
(0, import_react.useEffect)(() => {
|
|
39
39
|
setIsOpen(open);
|
|
40
40
|
}, [open]);
|
|
@@ -23,12 +23,12 @@ __export(session_timeout_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(session_timeout_exports);
|
|
24
24
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
25
|
var import_react = require("react");
|
|
26
|
-
var
|
|
26
|
+
var import_react2 = require("../../data/react.js");
|
|
27
27
|
var import_actions = require("../../data/logout/actions.js");
|
|
28
28
|
var import_session = require("../../utils/session.js");
|
|
29
29
|
var import_session_expiry = require("../modals/session-expiry/index.js");
|
|
30
30
|
const SessionTimeout = () => {
|
|
31
|
-
const dispatch = (0,
|
|
31
|
+
const dispatch = (0, import_react2.useAppDispatch)();
|
|
32
32
|
const [showSessionExpiryWarning, setSessionExpiryWarning] = (0, import_react.useState)(false);
|
|
33
33
|
const [warningNotifiedAt, setwarningNotifiedAt] = (0, import_react.useState)();
|
|
34
34
|
(0, import_react.useEffect)(() => {
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
6
|
var __export = (target, all) => {
|
|
9
7
|
for (var name in all)
|
|
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
15
|
}
|
|
18
16
|
return to;
|
|
19
17
|
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
19
|
var wait_message_exports = {};
|
|
30
20
|
__export(wait_message_exports, {
|
|
@@ -33,29 +23,18 @@ __export(wait_message_exports, {
|
|
|
33
23
|
module.exports = __toCommonJS(wait_message_exports);
|
|
34
24
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
25
|
var import_react = require("react");
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var import_ds_circular_progress_indicator = require("@elliemae/ds-circular-progress-indicator");
|
|
39
|
-
var import_react_redux = require("../../data/react-redux.js");
|
|
26
|
+
var import_ds_loading_indicator = require("@elliemae/ds-loading-indicator");
|
|
27
|
+
var import_react2 = require("../../data/react.js");
|
|
40
28
|
var import_use_html_wait_message = require("./use-html-wait-message.js");
|
|
41
29
|
var import_user_wait_event = require("../../analytics/user-wait-event.js");
|
|
42
|
-
const StyledCircularIndicator = (0, import_styled_components.default)(import_ds_circular_progress_indicator.DSCircularIndeterminateIndicator)`
|
|
43
|
-
position: absolute;
|
|
44
|
-
left: 50%;
|
|
45
|
-
top: 50%;
|
|
46
|
-
transform: translate(-50%, -50%);
|
|
47
|
-
`;
|
|
48
30
|
const WaitMessage = (0, import_react.memo)(
|
|
49
31
|
({
|
|
50
|
-
size = "
|
|
51
|
-
|
|
52
|
-
showText = true,
|
|
53
|
-
withTooltip = false,
|
|
54
|
-
tooltipStartPlacementPreference = "center",
|
|
32
|
+
size = "m",
|
|
33
|
+
style = { color: "white", fontSize: "1.25rem" },
|
|
55
34
|
...rest
|
|
56
35
|
}) => {
|
|
57
|
-
const isOpen = (0,
|
|
58
|
-
const message = (0,
|
|
36
|
+
const isOpen = (0, import_react2.useAppSelector)((state) => state.waitMessage?.isOpen);
|
|
37
|
+
const message = (0, import_react2.useAppSelector)((state) => state.waitMessage?.message);
|
|
59
38
|
(0, import_react.useEffect)(() => {
|
|
60
39
|
if (isOpen)
|
|
61
40
|
(0, import_user_wait_event.waitStartEvent)();
|
|
@@ -63,21 +42,16 @@ const WaitMessage = (0, import_react.memo)(
|
|
|
63
42
|
(0, import_user_wait_event.waitEndEvent)();
|
|
64
43
|
}, [isOpen]);
|
|
65
44
|
(0, import_use_html_wait_message.useHTMLWaitMessage)(isOpen !== null);
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
...rest,
|
|
78
|
-
text: message
|
|
79
|
-
}
|
|
80
|
-
)
|
|
81
|
-
] }) : null;
|
|
45
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
46
|
+
import_ds_loading_indicator.DSLoadingIndicator,
|
|
47
|
+
{
|
|
48
|
+
id: "em-loading",
|
|
49
|
+
size,
|
|
50
|
+
style,
|
|
51
|
+
...rest,
|
|
52
|
+
loading: isOpen,
|
|
53
|
+
message
|
|
54
|
+
}
|
|
55
|
+
);
|
|
82
56
|
}
|
|
83
57
|
);
|
|
@@ -22,10 +22,10 @@ __export(wait_message_launcher_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(wait_message_launcher_exports);
|
|
24
24
|
var import_react = require("react");
|
|
25
|
-
var
|
|
25
|
+
var import_react2 = require("../../data/react.js");
|
|
26
26
|
var import_actions = require("../../data/wait-message/actions.js");
|
|
27
27
|
const WaitMessageLauncher = () => {
|
|
28
|
-
const dispatch = (0,
|
|
28
|
+
const dispatch = (0, import_react2.useAppDispatch)();
|
|
29
29
|
(0, import_react.useEffect)(() => {
|
|
30
30
|
dispatch(import_actions.waitMessage.open());
|
|
31
31
|
return () => {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { getAuthHTTPClient } from "./index.js";
|
|
2
|
+
const sdkBaseQuery = ({ baseUrl } = {}) => async ({ url, method, data, params, headers }) => {
|
|
3
|
+
try {
|
|
4
|
+
const result = await getAuthHTTPClient({
|
|
5
|
+
baseURL: baseUrl,
|
|
6
|
+
headers
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
8
|
+
}).request({ url, method, data, params });
|
|
9
|
+
return { data: result.data };
|
|
10
|
+
} catch (axiosError) {
|
|
11
|
+
const err = axiosError;
|
|
12
|
+
return {
|
|
13
|
+
error: {
|
|
14
|
+
status: err.response?.status,
|
|
15
|
+
data: err.response?.data || err.message
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
sdkBaseQuery
|
|
22
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { compose } from "redux";
|
|
2
|
+
const middlewareDispatchFns = /* @__PURE__ */ new Map();
|
|
3
|
+
let store;
|
|
4
|
+
const appMiddleware = (_store) => {
|
|
5
|
+
store = _store;
|
|
6
|
+
const dispatchFns = Array.from(middlewareDispatchFns.values());
|
|
7
|
+
return (next) => (action) => (
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
9
|
+
compose(...dispatchFns)(next)(action)
|
|
10
|
+
);
|
|
11
|
+
};
|
|
12
|
+
const addMiddleware = ({
|
|
13
|
+
key,
|
|
14
|
+
middleware
|
|
15
|
+
}) => {
|
|
16
|
+
if (middlewareDispatchFns.has(key) || !store)
|
|
17
|
+
return;
|
|
18
|
+
middlewareDispatchFns.set(key, middleware(store));
|
|
19
|
+
};
|
|
20
|
+
const removeMiddleware = (key) => {
|
|
21
|
+
middlewareDispatchFns.delete(key);
|
|
22
|
+
};
|
|
23
|
+
const resetMiddlewares = () => {
|
|
24
|
+
middlewareDispatchFns.clear();
|
|
25
|
+
};
|
|
26
|
+
export {
|
|
27
|
+
addMiddleware,
|
|
28
|
+
appMiddleware,
|
|
29
|
+
removeMiddleware,
|
|
30
|
+
resetMiddlewares
|
|
31
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { isRejectedWithValue } from "@reduxjs/toolkit";
|
|
2
|
+
import { actions as error } from "./error/index.js";
|
|
3
|
+
const errorMiddleware = (api) => (next) => (action) => {
|
|
4
|
+
if (isRejectedWithValue(action)) {
|
|
5
|
+
api.dispatch(error.set({ messageText: action?.error?.data?.message }));
|
|
6
|
+
}
|
|
7
|
+
return next(action);
|
|
8
|
+
};
|
|
9
|
+
export {
|
|
10
|
+
errorMiddleware
|
|
11
|
+
};
|
package/dist/esm/data/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
useInjectSaga,
|
|
4
4
|
createManager
|
|
5
5
|
} from "redux-injectors";
|
|
6
|
-
import { useAppDispatch, useAppSelector } from "./react
|
|
6
|
+
import { useAppDispatch, useAppSelector } from "./react.js";
|
|
7
7
|
import { createAppStore, getStore } from "./store.js";
|
|
8
8
|
export {
|
|
9
9
|
createAppStore as configureStore,
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createListenerMiddleware } from "@reduxjs/toolkit";
|
|
2
|
+
let listenerAPI;
|
|
3
|
+
const rtkListenerMiddleware = createListenerMiddleware();
|
|
4
|
+
const listenerDispatchFns = /* @__PURE__ */ new Map();
|
|
5
|
+
const listenerMiddleware = (_listenerAPI) => {
|
|
6
|
+
listenerAPI = _listenerAPI;
|
|
7
|
+
return rtkListenerMiddleware.middleware(listenerAPI);
|
|
8
|
+
};
|
|
9
|
+
const addListener = ({
|
|
10
|
+
key,
|
|
11
|
+
listener
|
|
12
|
+
}) => {
|
|
13
|
+
if (listenerDispatchFns.has(key) && listenerAPI) {
|
|
14
|
+
listenerDispatchFns.set(key, listener);
|
|
15
|
+
return rtkListenerMiddleware.startListening(listener);
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
};
|
|
19
|
+
const removeListener = (key) => {
|
|
20
|
+
const listener = listenerDispatchFns.get(key);
|
|
21
|
+
if (listener) {
|
|
22
|
+
listenerDispatchFns.delete(key);
|
|
23
|
+
return rtkListenerMiddleware.stopListening(listener);
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
};
|
|
27
|
+
const resetListeners = () => {
|
|
28
|
+
listenerDispatchFns.forEach((listener) => {
|
|
29
|
+
rtkListenerMiddleware.stopListening(listener);
|
|
30
|
+
});
|
|
31
|
+
listenerDispatchFns.clear();
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
addListener,
|
|
35
|
+
listenerMiddleware,
|
|
36
|
+
removeListener,
|
|
37
|
+
resetListeners
|
|
38
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { compose } from "redux";
|
|
2
|
+
const middlewareDispatchFns = /* @__PURE__ */ new Map();
|
|
3
|
+
let store;
|
|
4
|
+
const queryMiddleware = (_store) => {
|
|
5
|
+
store = _store;
|
|
6
|
+
return (next) => (action) => (
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
8
|
+
compose(...middlewareDispatchFns.values())(next)(action)
|
|
9
|
+
);
|
|
10
|
+
};
|
|
11
|
+
const addMiddleware = ({
|
|
12
|
+
reducerPath,
|
|
13
|
+
middleware
|
|
14
|
+
}) => {
|
|
15
|
+
if (middlewareDispatchFns.has(reducerPath) || !store)
|
|
16
|
+
return;
|
|
17
|
+
middlewareDispatchFns.set(reducerPath, middleware(store));
|
|
18
|
+
};
|
|
19
|
+
const removeMiddleware = (reducerPath) => {
|
|
20
|
+
middlewareDispatchFns.delete(reducerPath);
|
|
21
|
+
};
|
|
22
|
+
const resetMiddlewares = () => {
|
|
23
|
+
middlewareDispatchFns.clear();
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
addMiddleware,
|
|
27
|
+
queryMiddleware,
|
|
28
|
+
removeMiddleware,
|
|
29
|
+
resetMiddlewares
|
|
30
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useInjectQuery } from "./useInjectQuery.js";
|
|
2
|
+
import { useInjectListener } from "./useInjectListener.js";
|
|
3
|
+
import { useAppDispatch } from "./useAppDispatch.js";
|
|
4
|
+
import { useAppSelector } from "./useAppSelector.js";
|
|
5
|
+
import { useAppMiddleware } from "./useAppMiddleware.js";
|
|
6
|
+
export {
|
|
7
|
+
useAppDispatch,
|
|
8
|
+
useAppMiddleware,
|
|
9
|
+
useAppSelector,
|
|
10
|
+
useInjectListener,
|
|
11
|
+
useInjectQuery
|
|
12
|
+
};
|
package/dist/esm/data/store.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { configureStore } from "@reduxjs/toolkit";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
} from "redux-injectors";
|
|
2
|
+
import { setupListeners } from "@reduxjs/toolkit/query/react";
|
|
3
|
+
import { createInjectorsEnhancer } from "redux-injectors";
|
|
5
4
|
import createSagaMiddleware from "redux-saga";
|
|
6
5
|
import { createReducer } from "./reducers.js";
|
|
7
6
|
import { enableHotReloading } from "./webpack-hmr.js";
|
|
7
|
+
import { queryMiddleware } from "./queryMiddleware.js";
|
|
8
|
+
import { listenerMiddleware } from "./listenerMiddleware.js";
|
|
8
9
|
const rootReducer = createReducer();
|
|
9
10
|
let appStore = null;
|
|
10
11
|
const setStore = (store) => {
|
|
11
12
|
appStore = store;
|
|
12
13
|
};
|
|
13
14
|
const getStore = () => appStore;
|
|
14
|
-
const createStore = (initialState, sagaMiddleware, history, middlewareConfig = {
|
|
15
|
+
const createStore = (initialState, sagaMiddleware, history, middlewareConfig = {}) => {
|
|
15
16
|
const { run: runSaga } = sagaMiddleware;
|
|
16
17
|
const enhancers = [
|
|
17
18
|
createInjectorsEnhancer({
|
|
@@ -21,11 +22,12 @@ const createStore = (initialState, sagaMiddleware, history, middlewareConfig = {
|
|
|
21
22
|
];
|
|
22
23
|
const baseStore = configureStore({
|
|
23
24
|
reducer: rootReducer,
|
|
24
|
-
middleware: (getDefaultMiddleware) => getDefaultMiddleware(middlewareConfig).concat(sagaMiddleware),
|
|
25
|
+
middleware: (getDefaultMiddleware) => getDefaultMiddleware(middlewareConfig).prepend(listenerMiddleware).concat([sagaMiddleware, queryMiddleware]),
|
|
25
26
|
devTools: true,
|
|
26
27
|
preloadedState: initialState,
|
|
27
28
|
enhancers
|
|
28
29
|
});
|
|
30
|
+
setupListeners(baseStore.dispatch);
|
|
29
31
|
enableHotReloading(baseStore);
|
|
30
32
|
return baseStore;
|
|
31
33
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import { addMiddleware, removeMiddleware } from "./appMiddleware.js";
|
|
3
|
+
const useAppMiddleware = ({
|
|
4
|
+
key,
|
|
5
|
+
middleware
|
|
6
|
+
}) => useEffect(() => {
|
|
7
|
+
addMiddleware({ key, middleware });
|
|
8
|
+
return () => {
|
|
9
|
+
removeMiddleware(key);
|
|
10
|
+
};
|
|
11
|
+
}, [key, middleware]);
|
|
12
|
+
export {
|
|
13
|
+
useAppMiddleware
|
|
14
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import {
|
|
3
|
+
addListener,
|
|
4
|
+
removeListener
|
|
5
|
+
} from "./listenerMiddleware.js";
|
|
6
|
+
const useInjectListener = ({
|
|
7
|
+
key,
|
|
8
|
+
listener
|
|
9
|
+
}) => useEffect(() => {
|
|
10
|
+
addListener({ key, listener });
|
|
11
|
+
return () => {
|
|
12
|
+
removeListener(key);
|
|
13
|
+
};
|
|
14
|
+
}, [key, listener]);
|
|
15
|
+
export {
|
|
16
|
+
useInjectListener
|
|
17
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useInjectReducer } from "redux-injectors";
|
|
2
|
+
import {
|
|
3
|
+
addMiddleware
|
|
4
|
+
} from "./queryMiddleware.js";
|
|
5
|
+
const useInjectQuery = ({
|
|
6
|
+
reducerPath,
|
|
7
|
+
reducer,
|
|
8
|
+
middleware
|
|
9
|
+
}) => {
|
|
10
|
+
useInjectReducer({ key: reducerPath, reducer });
|
|
11
|
+
addMiddleware({ reducerPath, middleware });
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
useInjectQuery
|
|
15
|
+
};
|
package/dist/esm/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
getHTTPClient,
|
|
4
4
|
getAuthHTTPClient
|
|
5
5
|
} from "./communication/http-client/index.js";
|
|
6
|
+
import { sdkBaseQuery } from "./communication/http-client/baseQuery.js";
|
|
6
7
|
import { onAuthorizationFailure } from "./communication/http-client/response-interceptor.js";
|
|
7
8
|
import { auth } from "./data/auth/actions.js";
|
|
8
9
|
import { RequireAuth } from "./view/require-auth.js";
|
|
@@ -10,12 +11,19 @@ import { authentication } from "./sideeffect/auth/index.js";
|
|
|
10
11
|
import { authReducer } from "./data/auth/reducer.js";
|
|
11
12
|
import { Page } from "./view/page.js";
|
|
12
13
|
import { default as default2 } from "./utils/constants.js";
|
|
13
|
-
import { useAppDispatch, useAppSelector } from "./data/react-redux.js";
|
|
14
14
|
import {
|
|
15
15
|
useInjectReducer,
|
|
16
16
|
useInjectSaga,
|
|
17
17
|
createManager
|
|
18
18
|
} from "redux-injectors";
|
|
19
|
+
import {
|
|
20
|
+
useInjectQuery,
|
|
21
|
+
useInjectListener,
|
|
22
|
+
useAppDispatch,
|
|
23
|
+
useAppSelector,
|
|
24
|
+
useAppMiddleware
|
|
25
|
+
} from "./data/react.js";
|
|
26
|
+
import { errorMiddleware } from "./data/errorMiddleware.js";
|
|
19
27
|
import { getAuthorizationHeader } from "./utils/auth/helper.js";
|
|
20
28
|
import { getRedirectUrl, removeDoubleSlash } from "./utils/url.js";
|
|
21
29
|
import { createAppStore } from "./data/store.js";
|
|
@@ -164,6 +172,7 @@ export {
|
|
|
164
172
|
createManager,
|
|
165
173
|
enableReactAppForHostIntegration,
|
|
166
174
|
actions2 as error,
|
|
175
|
+
errorMiddleware,
|
|
167
176
|
fetchHostAppData,
|
|
168
177
|
getUser as fetchUserSettings,
|
|
169
178
|
getApiActionCreator,
|
|
@@ -201,6 +210,7 @@ export {
|
|
|
201
210
|
renderWithRouter,
|
|
202
211
|
renderWithRouterRedux,
|
|
203
212
|
resetUserIdleTime,
|
|
213
|
+
sdkBaseQuery,
|
|
204
214
|
sendBAEvent,
|
|
205
215
|
sendMessageToHost,
|
|
206
216
|
setAppConfig,
|
|
@@ -213,7 +223,10 @@ export {
|
|
|
213
223
|
trackActivity,
|
|
214
224
|
updateBAEventParameters,
|
|
215
225
|
useAppDispatch,
|
|
226
|
+
useAppMiddleware,
|
|
216
227
|
useAppSelector,
|
|
228
|
+
useInjectListener,
|
|
229
|
+
useInjectQuery,
|
|
217
230
|
useInjectReducer,
|
|
218
231
|
useInjectSaga,
|
|
219
232
|
useMediaQueryList,
|
|
@@ -1,63 +1,63 @@
|
|
|
1
1
|
const logRecords = {
|
|
2
2
|
ERR_TOAST_OPEN_FAILED: {
|
|
3
3
|
code: "appsdk001",
|
|
4
|
-
|
|
4
|
+
msg: "Unable to open Error Toast"
|
|
5
5
|
},
|
|
6
6
|
WAIT_MSG_OPEN_FAILED: {
|
|
7
7
|
code: "appsdk02",
|
|
8
|
-
|
|
8
|
+
msg: "Unable to open Wait message"
|
|
9
9
|
},
|
|
10
10
|
WAIT_MSG_CLOSE_FAILED: {
|
|
11
11
|
code: "appsdk03",
|
|
12
|
-
|
|
12
|
+
msg: "Unable to close Wait message"
|
|
13
13
|
},
|
|
14
14
|
APP_CONFIG_LOAD_FAILED: {
|
|
15
15
|
code: "appsdk04",
|
|
16
|
-
|
|
16
|
+
msg: "Unable to load application configuration"
|
|
17
17
|
},
|
|
18
18
|
ASSET_NOT_FOUND_IN_MANIFEST: (assetName) => ({
|
|
19
19
|
code: "appsdk05",
|
|
20
|
-
|
|
20
|
+
msg: `Application load failed. unable to locate ${assetName} in the manifest`
|
|
21
21
|
}),
|
|
22
22
|
APP_INIT_FAILED: (appId, errMsg) => ({
|
|
23
23
|
code: "appsdk06",
|
|
24
|
-
|
|
24
|
+
msg: `Application load failed. Unable to load one or more application resources for appId: ${appId}. ${errMsg}`
|
|
25
25
|
}),
|
|
26
26
|
APP_LOADING: (appId) => ({
|
|
27
27
|
code: "appsdk07",
|
|
28
|
-
|
|
28
|
+
msg: `Application ${appId} is loading...`
|
|
29
29
|
}),
|
|
30
30
|
APP_LOADING_COMPLETE: (appId) => ({
|
|
31
31
|
code: "appsdk08",
|
|
32
|
-
|
|
32
|
+
msg: `Application ${appId} loaded`
|
|
33
33
|
}),
|
|
34
34
|
APP_UNLOADING: (appId) => ({
|
|
35
35
|
code: "appsdk09",
|
|
36
|
-
|
|
36
|
+
msg: `Application ${appId} unloading...`
|
|
37
37
|
}),
|
|
38
38
|
APP_UNLOADING_COMPLETE: (appId) => ({
|
|
39
39
|
code: "appsdk10",
|
|
40
|
-
|
|
40
|
+
msg: `Application ${appId} unloaded`
|
|
41
41
|
}),
|
|
42
42
|
SSF_HOST_OBJECT_NOT_FOUND: (name) => ({
|
|
43
43
|
code: "appsdk11",
|
|
44
|
-
|
|
44
|
+
msg: `Parent window doesn't expose SSF Object named ${name}`
|
|
45
45
|
}),
|
|
46
46
|
LOGIN_FAILED: {
|
|
47
47
|
code: "appsdk12",
|
|
48
|
-
|
|
48
|
+
msg: "Unable to login the user."
|
|
49
49
|
},
|
|
50
50
|
LOGOUT_FAILED: {
|
|
51
51
|
code: "appsdk13",
|
|
52
|
-
|
|
52
|
+
msg: "Unable to logout the user."
|
|
53
53
|
},
|
|
54
54
|
SERVICE_WORKER_FAILED: {
|
|
55
55
|
code: "appsdk14",
|
|
56
|
-
|
|
56
|
+
msg: "Service Worker Registration Failed"
|
|
57
57
|
},
|
|
58
58
|
UNHANDLED_ERROR: {
|
|
59
59
|
code: "appsdk15",
|
|
60
|
-
|
|
60
|
+
msg: "Unhandled error in react component"
|
|
61
61
|
}
|
|
62
62
|
};
|
|
63
63
|
export {
|
|
@@ -7,10 +7,11 @@ const logger = (() => {
|
|
|
7
7
|
transport: Console(),
|
|
8
8
|
index: "app",
|
|
9
9
|
environment: getAppConfigValue("activeEnv"),
|
|
10
|
+
logger: "icemt.app.logger",
|
|
10
11
|
team: "app team",
|
|
11
12
|
appName: "ICEMT App",
|
|
12
13
|
appVersion: "latest",
|
|
13
|
-
|
|
14
|
+
tenantId: "",
|
|
14
15
|
userId: ""
|
|
15
16
|
});
|
|
16
17
|
})();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useContext } from "react";
|
|
2
2
|
import { ThemeContext } from "styled-components";
|
|
3
3
|
import { publish } from "pubsub-js";
|
|
4
|
-
import { useAppDispatch } from "../../data/react
|
|
4
|
+
import { useAppDispatch } from "../../data/react.js";
|
|
5
5
|
import { breakpoint } from "../../data/breakpoint/index.js";
|
|
6
6
|
import { useMediaQueryList } from "./use-media-query-list.js";
|
|
7
7
|
import { HOST_WINDOW_BREAKPOINT_CHANGED } from "../../utils/constants.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, memo } from "react";
|
|
3
3
|
import { ToastPosition, ToastType, DSToast, toast } from "@elliemae/ds-toast";
|
|
4
|
-
import { useAppSelector, useAppDispatch } from "../../data/react
|
|
4
|
+
import { useAppSelector, useAppDispatch } from "../../data/react.js";
|
|
5
5
|
import { actions as error } from "../../data/error/index.js";
|
|
6
6
|
const ErrorToast = memo((props) => {
|
|
7
7
|
const storeError = useAppSelector((state) => state?.error);
|