@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.
Files changed (78) hide show
  1. package/dist/cjs/communication/http-client/baseQuery.js +42 -0
  2. package/dist/cjs/data/appMiddleware.js +51 -0
  3. package/dist/cjs/data/errorMiddleware.js +31 -0
  4. package/dist/cjs/data/index.js +3 -3
  5. package/dist/cjs/data/listenerMiddleware.js +58 -0
  6. package/dist/cjs/data/queryMiddleware.js +50 -0
  7. package/dist/cjs/data/react.js +32 -0
  8. package/dist/cjs/data/store.js +6 -2
  9. package/dist/cjs/data/useAppDispatch.js +25 -0
  10. package/dist/cjs/data/useAppMiddleware.js +34 -0
  11. package/dist/cjs/data/{react-redux.js → useAppSelector.js} +3 -5
  12. package/dist/cjs/data/useInjectListener.js +34 -0
  13. package/dist/cjs/data/useInjectQuery.js +33 -0
  14. package/dist/cjs/index.js +12 -5
  15. package/dist/cjs/utils/log-records.js +15 -15
  16. package/dist/cjs/utils/micro-frontend/console-logger.js +2 -1
  17. package/dist/cjs/view/breakpoint/use-breakpoint.js +2 -2
  18. package/dist/cjs/view/error-toast/index.js +3 -3
  19. package/dist/cjs/view/form/index.js +0 -1
  20. package/dist/cjs/view/live-message/index.js +3 -3
  21. package/dist/cjs/view/login/index.js +2 -2
  22. package/dist/cjs/view/micro-app/app-factory/index.js +1 -1
  23. package/dist/cjs/view/micro-app/resources/manifest.js +1 -1
  24. package/dist/cjs/view/modals/navigation-prompt/index.js +2 -2
  25. package/dist/cjs/view/modals/session-expiry/index.js +2 -2
  26. package/dist/cjs/view/session-timeout/index.js +2 -2
  27. package/dist/cjs/view/wait-message/index.js +17 -43
  28. package/dist/cjs/view/wait-message/wait-message-launcher.js +2 -2
  29. package/dist/esm/communication/http-client/baseQuery.js +22 -0
  30. package/dist/esm/data/appMiddleware.js +31 -0
  31. package/dist/esm/data/errorMiddleware.js +11 -0
  32. package/dist/esm/data/index.js +1 -1
  33. package/dist/esm/data/listenerMiddleware.js +38 -0
  34. package/dist/esm/data/queryMiddleware.js +30 -0
  35. package/dist/esm/data/react.js +12 -0
  36. package/dist/esm/data/store.js +7 -5
  37. package/dist/esm/data/useAppDispatch.js +5 -0
  38. package/dist/esm/data/useAppMiddleware.js +14 -0
  39. package/dist/esm/data/useAppSelector.js +5 -0
  40. package/dist/esm/data/useInjectListener.js +17 -0
  41. package/dist/esm/data/useInjectQuery.js +15 -0
  42. package/dist/esm/index.js +14 -1
  43. package/dist/esm/utils/log-records.js +15 -15
  44. package/dist/esm/utils/micro-frontend/console-logger.js +2 -1
  45. package/dist/esm/view/breakpoint/use-breakpoint.js +1 -1
  46. package/dist/esm/view/error-toast/index.js +1 -1
  47. package/dist/esm/view/form/index.js +0 -1
  48. package/dist/esm/view/live-message/index.js +1 -1
  49. package/dist/esm/view/login/index.js +1 -1
  50. package/dist/esm/view/micro-app/app-factory/index.js +1 -1
  51. package/dist/esm/view/micro-app/resources/manifest.js +1 -1
  52. package/dist/esm/view/modals/navigation-prompt/index.js +1 -1
  53. package/dist/esm/view/modals/session-expiry/index.js +1 -1
  54. package/dist/esm/view/session-timeout/index.js +1 -1
  55. package/dist/esm/view/wait-message/index.js +16 -32
  56. package/dist/esm/view/wait-message/wait-message-launcher.js +1 -1
  57. package/dist/types/lib/communication/http-client/baseQuery.d.ts +14 -0
  58. package/dist/types/lib/communication/http-client/index.d.ts +1 -1
  59. package/dist/types/lib/data/appMiddleware.d.ts +8 -0
  60. package/dist/types/lib/data/errorMiddleware.d.ts +2 -0
  61. package/dist/types/lib/data/index.d.ts +1 -1
  62. package/dist/types/lib/data/listenerMiddleware.d.ts +11 -0
  63. package/dist/types/lib/data/queryMiddleware.d.ts +11 -0
  64. package/dist/types/lib/data/react.d.ts +5 -0
  65. package/dist/types/lib/data/store.d.ts +4 -3
  66. package/dist/types/lib/data/{react-redux.d.ts → useAppDispatch.d.ts} +0 -3
  67. package/dist/types/lib/data/useAppMiddleware.d.ts +5 -0
  68. package/dist/types/lib/data/useAppSelector.d.ts +3 -0
  69. package/dist/types/lib/data/useInjectListener.d.ts +5 -0
  70. package/dist/types/lib/data/useInjectQuery.d.ts +7 -0
  71. package/dist/types/lib/index.d.ts +3 -1
  72. package/dist/types/lib/utils/log-records.d.ts +16 -36
  73. package/dist/types/lib/utils/testing/render-with-redux.d.ts +2 -2
  74. package/dist/types/lib/utils/testing/render-with-router-redux.d.ts +2 -2
  75. package/dist/types/lib/view/visually-hidden/index.d.ts +1 -1
  76. package/dist/types/lib/view/wait-message/index.d.ts +2 -8
  77. package/package.json +34 -32
  78. 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 import_react_redux = require("../../data/react-redux.js");
26
+ var import_react = require("../../data/react.js");
27
27
  const LiveMessage = () => {
28
- const message = (0, import_react_redux.useAppSelector)((state) => state.liveMessage?.message);
29
- const ariaLive = (0, import_react_redux.useAppSelector)((state) => state.liveMessage?.ariaLive);
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 import_react_redux = require("../../data/react-redux.js");
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, import_react_redux.useAppDispatch)();
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.message);
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.message);
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 import_react_redux = require("../../../data/react-redux.js");
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, import_react_redux.useAppDispatch)();
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 import_react_redux = require("../../../data/react-redux.js");
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, import_react_redux.useAppDispatch)();
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 import_react_redux = require("../../data/react-redux.js");
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, import_react_redux.useAppDispatch)();
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 import_styled_components = __toESM(require("styled-components"));
37
- var import_ds_backdrop = require("@elliemae/ds-backdrop");
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 = "xl",
51
- color = "light",
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, import_react_redux.useAppSelector)((state) => state.waitMessage?.isOpen);
58
- const message = (0, import_react_redux.useAppSelector)((state) => state.waitMessage?.message);
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 isOpen ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
67
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_backdrop.DSBackdrop, {}),
68
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
69
- StyledCircularIndicator,
70
- {
71
- id: "em-loading",
72
- size,
73
- color,
74
- showText,
75
- withTooltip,
76
- tooltipStartPlacementPreference,
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 import_react_redux = require("../../data/react-redux.js");
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, import_react_redux.useAppDispatch)();
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
+ };
@@ -3,7 +3,7 @@ import {
3
3
  useInjectSaga,
4
4
  createManager
5
5
  } from "redux-injectors";
6
- import { useAppDispatch, useAppSelector } from "./react-redux.js";
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
+ };
@@ -1,17 +1,18 @@
1
1
  import { configureStore } from "@reduxjs/toolkit";
2
- import {
3
- createInjectorsEnhancer
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 = { thunk: false }) => {
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,5 @@
1
+ import { useDispatch } from "react-redux";
2
+ const useAppDispatch = () => useDispatch();
3
+ export {
4
+ useAppDispatch
5
+ };
@@ -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,5 @@
1
+ import { useSelector } from "react-redux";
2
+ const useAppSelector = useSelector;
3
+ export {
4
+ useAppSelector
5
+ };
@@ -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
- message: "Unable to open Error Toast"
4
+ msg: "Unable to open Error Toast"
5
5
  },
6
6
  WAIT_MSG_OPEN_FAILED: {
7
7
  code: "appsdk02",
8
- message: "Unable to open Wait message"
8
+ msg: "Unable to open Wait message"
9
9
  },
10
10
  WAIT_MSG_CLOSE_FAILED: {
11
11
  code: "appsdk03",
12
- message: "Unable to close Wait message"
12
+ msg: "Unable to close Wait message"
13
13
  },
14
14
  APP_CONFIG_LOAD_FAILED: {
15
15
  code: "appsdk04",
16
- message: "Unable to load application configuration"
16
+ msg: "Unable to load application configuration"
17
17
  },
18
18
  ASSET_NOT_FOUND_IN_MANIFEST: (assetName) => ({
19
19
  code: "appsdk05",
20
- message: `Application load failed. unable to locate ${assetName} in the manifest`
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
- message: `Application load failed. Unable to load one or more application resources for appId: ${appId}. ${errMsg}`
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
- message: `Application ${appId} is loading...`
28
+ msg: `Application ${appId} is loading...`
29
29
  }),
30
30
  APP_LOADING_COMPLETE: (appId) => ({
31
31
  code: "appsdk08",
32
- message: `Application ${appId} loaded`
32
+ msg: `Application ${appId} loaded`
33
33
  }),
34
34
  APP_UNLOADING: (appId) => ({
35
35
  code: "appsdk09",
36
- message: `Application ${appId} unloading...`
36
+ msg: `Application ${appId} unloading...`
37
37
  }),
38
38
  APP_UNLOADING_COMPLETE: (appId) => ({
39
39
  code: "appsdk10",
40
- message: `Application ${appId} unloaded`
40
+ msg: `Application ${appId} unloaded`
41
41
  }),
42
42
  SSF_HOST_OBJECT_NOT_FOUND: (name) => ({
43
43
  code: "appsdk11",
44
- message: `Parent window doesn't expose SSF Object named ${name}`
44
+ msg: `Parent window doesn't expose SSF Object named ${name}`
45
45
  }),
46
46
  LOGIN_FAILED: {
47
47
  code: "appsdk12",
48
- message: "Unable to login the user."
48
+ msg: "Unable to login the user."
49
49
  },
50
50
  LOGOUT_FAILED: {
51
51
  code: "appsdk13",
52
- message: "Unable to logout the user."
52
+ msg: "Unable to logout the user."
53
53
  },
54
54
  SERVICE_WORKER_FAILED: {
55
55
  code: "appsdk14",
56
- message: "Service Worker Registration Failed"
56
+ msg: "Service Worker Registration Failed"
57
57
  },
58
58
  UNHANDLED_ERROR: {
59
59
  code: "appsdk15",
60
- message: "Unhandled error in react component"
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
- instanceId: "",
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-redux.js";
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-redux.js";
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);