@elliemae/pui-app-sdk 5.28.0 → 5.30.0-rc.1

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 (35) hide show
  1. package/dist/cjs/communication/http-client/index.js +3 -1
  2. package/dist/cjs/index.js +0 -2
  3. package/dist/cjs/utils/app-config/index.js +0 -2
  4. package/dist/cjs/utils/auth/index.js +25 -4
  5. package/dist/cjs/utils/micro-frontend/guest.js +7 -2
  6. package/dist/cjs/utils/micro-frontend/host.js +7 -4
  7. package/dist/cjs/utils/micro-frontend/scripting-objects/analytics.js +11 -3
  8. package/dist/cjs/utils/micro-frontend/scripting-objects/logrocket.js +29 -0
  9. package/dist/cjs/view/fields/masked-input-text/index.js +2 -2
  10. package/dist/cjs/view/micro-iframe-app/iframe.html +2 -2
  11. package/dist/cjs/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +6 -2
  12. package/dist/cjs/view/wait-message/index.js +17 -1
  13. package/dist/esm/communication/http-client/index.js +3 -1
  14. package/dist/esm/index.js +0 -2
  15. package/dist/esm/utils/app-config/index.js +0 -2
  16. package/dist/esm/utils/auth/index.js +28 -4
  17. package/dist/esm/utils/micro-frontend/guest.js +7 -2
  18. package/dist/esm/utils/micro-frontend/host.js +7 -4
  19. package/dist/esm/utils/micro-frontend/scripting-objects/analytics.js +11 -3
  20. package/dist/esm/utils/micro-frontend/scripting-objects/logrocket.js +9 -0
  21. package/dist/esm/view/fields/masked-input-text/index.js +2 -2
  22. package/dist/esm/view/micro-iframe-app/iframe.html +2 -2
  23. package/dist/esm/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +6 -2
  24. package/dist/esm/view/wait-message/index.js +17 -1
  25. package/dist/types/lib/api/auth/index.d.ts +2 -0
  26. package/dist/types/lib/index.d.ts +0 -1
  27. package/dist/types/lib/utils/micro-frontend/guest.d.ts +2 -0
  28. package/dist/types/lib/utils/micro-frontend/host.d.ts +2 -0
  29. package/dist/types/lib/utils/micro-frontend/scripting-objects/analytics.d.ts +2 -1
  30. package/dist/types/lib/utils/micro-frontend/scripting-objects/logrocket.d.ts +3 -0
  31. package/dist/types/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +43 -41
  33. package/dist/cjs/analytics/appdynamics.js +0 -48
  34. package/dist/esm/analytics/appdynamics.js +0 -18
  35. package/dist/types/lib/analytics/appdynamics.d.ts +0 -10
@@ -39,14 +39,16 @@ var import_helper = require("../../utils/auth/helper.js");
39
39
  var import_retry = __toESM(require("./retry.js"));
40
40
  var import_request_interceptor = require("./request-interceptor.js");
41
41
  var import_response_interceptor = require("./response-interceptor.js");
42
+ var import_logrocket = require("../../utils/micro-frontend/scripting-objects/logrocket.js");
42
43
  const REQUEST_TIMEOUT = 2 * 60 * 1e3;
43
44
  const getHTTPClient = ({
44
45
  baseURL = (0, import_config.getAppConfigValue)("serviceEndpoints.api", ""),
45
46
  headers = {}
46
47
  } = {}) => {
48
+ const logRocketSessionUrl = (0, import_logrocket.getLogRocket)()?.sessionURL || "";
47
49
  const client = import_axios.default.create({
48
50
  baseURL,
49
- headers
51
+ headers: logRocketSessionUrl ? { ...headers, "X-LogRocket-URL": logRocketSessionUrl } : headers
50
52
  });
51
53
  if (client?.defaults?.timeout) client.defaults.timeout = REQUEST_TIMEOUT;
52
54
  (0, import_retry.default)(client);
package/dist/cjs/index.js CHANGED
@@ -130,7 +130,6 @@ __export(index_exports, {
130
130
  sendMessageToHost: () => import_message_to_host_app.sendMessageToHost,
131
131
  setAppConfig: () => import_config.setAppConfig,
132
132
  setAppConfigValue: () => import_config.setAppConfigValue,
133
- setAppDynamicsUserData: () => import_appdynamics.setAppDynamicsUserData,
134
133
  setHostAppData: () => import_store2.setHostAppData,
135
134
  setLoginParams: () => import_loginParams.setLoginParams,
136
135
  startSideEffect: () => import_listenerMiddleware.startSideEffect,
@@ -240,7 +239,6 @@ var import_micro_iframe_app = require("./view/micro-iframe-app/index.js");
240
239
  var import_utils = require("./view/micro-app/utils.js");
241
240
  var import_store3 = require("./data/store.js");
242
241
  var import_guest_with_service = require("./utils/guest-with-service.js");
243
- var import_appdynamics = require("./analytics/appdynamics.js");
244
242
  var import_analytics = require("./analytics/index.js");
245
243
  var import_web_analytics = require("./utils/micro-frontend/scripting-objects/web-analytics.js");
246
244
  var import_analytics2 = require("./utils/micro-frontend/scripting-objects/analytics.js");
@@ -34,7 +34,6 @@ __export(app_config_exports, {
34
34
  module.exports = __toCommonJS(app_config_exports);
35
35
  var import_lodash = __toESM(require("lodash"));
36
36
  var import_config = require("./config.js");
37
- var import_appdynamics = require("../../analytics/appdynamics.js");
38
37
  var import_web_analytics = require("../micro-frontend/scripting-objects/web-analytics.js");
39
38
  var import_window = require("../window.js");
40
39
  var import_config2 = require("./config.js");
@@ -46,7 +45,6 @@ const parseAppConfig = (data) => {
46
45
  sessionStorage.setItem("envName", activeEnv);
47
46
  window.emui = window.emui || {};
48
47
  window.emui.appId = (0, import_config.getAppConfigValue)("appId") ?? window.emui.appId ?? "";
49
- (0, import_appdynamics.setAppDynamicsUserData)({ envName: activeEnv });
50
48
  (0, import_web_analytics.updateBAEventParameters)({ envName: activeEnv });
51
49
  };
52
50
  const getUnVersionedPath = (path) => path.replace(/(\d+\.\d+)(?!.*\d+\.\d+)/, "latest");
@@ -30,8 +30,10 @@ var import_history = require("../history.js");
30
30
  var import_auth = require("../../api/auth/index.js");
31
31
  var import_users = require("../../api/users/index.js");
32
32
  var import_user_session_event = require("../../analytics/user-session-event.js");
33
- var import_appdynamics = require("../../analytics/appdynamics.js");
33
+ var import_web_analytics = require("../micro-frontend/scripting-objects/web-analytics.js");
34
+ var import_logrocket = require("../micro-frontend/scripting-objects/logrocket.js");
34
35
  var import_helper = require("./helper.js");
36
+ var import_helpers = require("../helpers.js");
35
37
  var import_config = require("../app-config/config.js");
36
38
  var import_log_records = require("../log-records.js");
37
39
  var import_loginParams = require("./loginParams.js");
@@ -85,7 +87,15 @@ const endSession = async ({
85
87
  token
86
88
  });
87
89
  (0, import_user_session_event.logoutEvent)();
88
- (0, import_appdynamics.setAppDynamicsUserData)({ instanceId: "", userId: "" });
90
+ const logRocket = (0, import_logrocket.getLogRocket)();
91
+ if (logRocket) {
92
+ const eventData = {
93
+ ...(0, import_web_analytics.getBAEventParameters)(),
94
+ ...(0, import_helpers.getProductAppDetails)()
95
+ };
96
+ logRocket.track("logout", eventData);
97
+ }
98
+ (0, import_web_analytics.updateBAEventParameters)({ instanceId: "", userId: "" });
89
99
  const idpHost = (0, import_config.getAppConfigValue)(IDP_ENDPOINT_CONFIG_KEY, "");
90
100
  const logoutUrl = new URL("/authorize", idpHost);
91
101
  const params = {
@@ -131,7 +141,8 @@ const authorize = async ({
131
141
  const {
132
142
  encompass_instance_id: instanceId,
133
143
  user_name: userName,
134
- bearer_token: bearerToken
144
+ bearer_token: bearerToken,
145
+ user_key: userKey
135
146
  } = introspectResponse;
136
147
  const cred = {
137
148
  bearerToken,
@@ -143,7 +154,17 @@ const authorize = async ({
143
154
  sessionStorage.setItem("instanceId", instanceId);
144
155
  sessionStorage.setItem("userId", userName);
145
156
  (0, import_user_session_event.loginEvent)({ instanceId, userId: userName });
146
- (0, import_appdynamics.setAppDynamicsUserData)({ instanceId, userId: userName });
157
+ (0, import_web_analytics.updateBAEventParameters)({ instanceId, userId: userName });
158
+ const logRocket = (0, import_logrocket.getLogRocket)();
159
+ if (logRocket) {
160
+ const eventData = {
161
+ name: userName,
162
+ ...(0, import_web_analytics.getBAEventParameters)(),
163
+ ...(0, import_helpers.getProductAppDetails)()
164
+ };
165
+ logRocket.identify(userKey, eventData);
166
+ logRocket.track("login", eventData);
167
+ }
147
168
  const data = await (0, import_users.getUser)({ userName, isConsumerUser });
148
169
  sessionStorage.setItem("userSettings", JSON.stringify(data));
149
170
  const pathName = new URL(redirectUri).pathname;
@@ -43,7 +43,7 @@ var import_console_logger = require("../console-logger.js");
43
43
  var import_logger = require("../logger.js");
44
44
  var import_web_storage = require("../web-storage.js");
45
45
  var import_web_analytics = require("./scripting-objects/web-analytics.js");
46
- var import_appdynamics = require("../../analytics/appdynamics.js");
46
+ var import_logrocket = require("./scripting-objects/logrocket.js");
47
47
  var import_app_bridge = require("./app-bridge.js");
48
48
  var import_helpers = require("../helpers.js");
49
49
  const isCrossDomain = () => {
@@ -66,6 +66,10 @@ class CMicroAppGuest {
66
66
  #uuid;
67
67
  static instance;
68
68
  logger;
69
+ /**
70
+ * LogRocket instance
71
+ */
72
+ #logRocket;
69
73
  appId;
70
74
  props;
71
75
  containerId;
@@ -98,6 +102,8 @@ class CMicroAppGuest {
98
102
  };
99
103
  this.logger = params?.logger || import_console_logger.consoleLogger;
100
104
  (0, import_logger.setLogger)(this.logger);
105
+ this.#logRocket = params?.logRocket;
106
+ (0, import_logrocket.setLogRocket)(this.#logRocket);
101
107
  this.onInit = params?.onInit;
102
108
  this.onMount = params?.onMount;
103
109
  this.onUnmount = params?.onUnmount;
@@ -271,7 +277,6 @@ class CMicroAppGuest {
271
277
  const instanceId = this.getSessionStorageItem("instanceId") || "";
272
278
  const userId = this.getSessionStorageItem("userId") || "";
273
279
  (0, import_web_analytics.updateBAEventParameters)({ appId: this.appId, instanceId, userId });
274
- (0, import_appdynamics.setAppDynamicsUserData)({ appId: this.appId, instanceId, userId });
275
280
  const useParentHistory = (0, import_config.getAppConfigValue)("useParentHistory", true);
276
281
  if (useParentHistory && history) {
277
282
  this.props.history = history;
@@ -35,7 +35,7 @@ var import_console_logger = require("../console-logger.js");
35
35
  var import_logger = require("../logger.js");
36
36
  var import_constants = require("../constants.js");
37
37
  var import_window = require("../window.js");
38
- var import_appdynamics = require("../../analytics/appdynamics.js");
38
+ var import_logrocket = require("./scripting-objects/logrocket.js");
39
39
  var import_analytics = require("./scripting-objects/analytics.js");
40
40
  var import_web_analytics = require("./scripting-objects/web-analytics.js");
41
41
  var import_session = require("../session.js");
@@ -43,6 +43,10 @@ var import_app_bridge = require("./app-bridge.js");
43
43
  class CMicroAppHost {
44
44
  static instance;
45
45
  logger;
46
+ /**
47
+ * LogRocket instance
48
+ */
49
+ #logRocket;
46
50
  appId;
47
51
  props;
48
52
  activeGuests;
@@ -58,6 +62,8 @@ class CMicroAppHost {
58
62
  this.onInit = params?.onInit;
59
63
  this.logger = params?.logger || import_console_logger.consoleLogger;
60
64
  (0, import_logger.setLogger)(this.logger);
65
+ this.#logRocket = params?.logRocket;
66
+ (0, import_logrocket.setLogRocket)(this.#logRocket);
61
67
  this.onRenewSessionTimer = params?.onRenewSessionTimer;
62
68
  this.props = {
63
69
  systemVersion: params?.version ?? "latest",
@@ -101,9 +107,6 @@ class CMicroAppHost {
101
107
  }).catch(() => {
102
108
  });
103
109
  (0, import_web_analytics.updateBAEventParameters)({ appId: this.appId });
104
- (0, import_appdynamics.setAppDynamicsUserData)({
105
- appId: this.appId
106
- });
107
110
  }
108
111
  static getInstance(params) {
109
112
  if (!this.instance) {
@@ -25,6 +25,7 @@ var import_ssf_host = require("@elliemae/ssf-host");
25
25
  var import_web_analytics = require("./web-analytics.js");
26
26
  var import_helpers = require("../../helpers.js");
27
27
  var import_headSampler = require("../../headSampler.js");
28
+ var import_logrocket = require("./logrocket.js");
28
29
  class Analytics extends import_ssf_host.ScriptingObject {
29
30
  /**
30
31
  * logger instance
@@ -108,16 +109,23 @@ class Analytics extends import_ssf_host.ScriptingObject {
108
109
  /**
109
110
  * send business analytics event
110
111
  * @param event business analytics event
112
+ * @param eve
111
113
  * @returns promise
112
114
  */
113
- sendBAEvent = (event) => {
115
+ sendBAEvent = (eve) => {
116
+ const { event, ...rest } = eve ?? {};
117
+ if (!event) return Promise.resolve();
114
118
  const eventEx = {
115
119
  ...(0, import_web_analytics.getBAEventParameters)(),
116
120
  ...(0, import_helpers.getProductAppDetails)(),
117
- ...event
121
+ ...rest
118
122
  };
119
123
  window.gtmDataLayer = window.gtmDataLayer || [];
120
- window.gtmDataLayer.push(eventEx);
124
+ window.gtmDataLayer.push({ ...eventEx, event });
125
+ const logRocket = (0, import_logrocket.getLogRocket)();
126
+ if (logRocket) {
127
+ logRocket.track(event, eventEx);
128
+ }
121
129
  return Promise.resolve();
122
130
  };
123
131
  /**
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var logrocket_exports = {};
20
+ __export(logrocket_exports, {
21
+ getLogRocket: () => getLogRocket,
22
+ setLogRocket: () => setLogRocket
23
+ });
24
+ module.exports = __toCommonJS(logrocket_exports);
25
+ let gLogRocket = null;
26
+ const getLogRocket = () => gLogRocket;
27
+ const setLogRocket = (logrocket) => {
28
+ gLogRocket = logrocket || null;
29
+ };
@@ -48,11 +48,11 @@ const MaskedInputText = ({
48
48
  const opts = import_react.default.useMemo(
49
49
  () => ({
50
50
  ...maskOpts,
51
- onChange: (_, maskedValue) => setValue(name, maskedValue, {
51
+ onChange: ((_, maskedValue) => setValue(name, maskedValue, {
52
52
  shouldValidate: true,
53
53
  shouldDirty: true,
54
54
  shouldTouch: true
55
- }),
55
+ })),
56
56
  valueSetter: setVal
57
57
  }),
58
58
  [maskOpts, name, setValue]
@@ -31,7 +31,7 @@
31
31
  startVirtualPageMonitoringWithAutoEnd: function () {},
32
32
  };
33
33
  </script> -->
34
- <script>
34
+ <script nonce="__CSP_NONCE__">
35
35
  (function (i, s, o, g, r, a, m) {
36
36
  i['GoogleAnalyticsObject'] = r;
37
37
  (i[r] =
@@ -52,7 +52,7 @@
52
52
  'ga',
53
53
  );
54
54
  </script>
55
- <style>
55
+ <style nonce="__CSP_NONCE__">
56
56
  .full-width {
57
57
  width: 100%;
58
58
  }
@@ -118,7 +118,9 @@ exports[`MicroIFrameApp should open loanapp and call init and mount methods 1`]
118
118
  <script
119
119
  src="https://www.google-analytics.com/analytics.js"
120
120
  />
121
- <script>
121
+ <script
122
+ nonce="__CSP_NONCE__"
123
+ >
122
124
 
123
125
  (function (i, s, o, g, r, a, m) {
124
126
  i['GoogleAnalyticsObject'] = r;
@@ -143,7 +145,9 @@ exports[`MicroIFrameApp should open loanapp and call init and mount methods 1`]
143
145
  </script>
144
146
 
145
147
 
146
- <style>
148
+ <style
149
+ nonce="__CSP_NONCE__"
150
+ >
147
151
 
148
152
  .full-width {
149
153
  width: 100%;
@@ -39,6 +39,9 @@ var import_ds_circular_progress_indicator = require("@elliemae/ds-circular-progr
39
39
  var import_react2 = require("../../data/react.js");
40
40
  var import_use_html_wait_message = require("./use-html-wait-message.js");
41
41
  var import_user_wait_event = require("../../analytics/user-wait-event.js");
42
+ var import_logrocket = require("../../utils/micro-frontend/scripting-objects/logrocket.js");
43
+ var import_web_analytics = require("../../utils/micro-frontend/scripting-objects/web-analytics.js");
44
+ var import_helpers = require("../../utils/helpers.js");
42
45
  const StyledCircularIndicator = (0, import_styled_components.default)(import_ds_circular_progress_indicator.DSCircularIndeterminateIndicator)`
43
46
  position: absolute;
44
47
  left: 50%;
@@ -61,12 +64,19 @@ const WaitMessage = (0, import_react.memo)(
61
64
  const delay = (0, import_react2.useAppSelector)((state) => state.waitMessage?.delay);
62
65
  ref.current = isOpen ?? false;
63
66
  const message = (0, import_react2.useAppSelector)((state) => state.waitMessage?.message);
67
+ const logRocket = (0, import_logrocket.getLogRocket)();
64
68
  (0, import_react.useEffect)(() => {
65
69
  setTimeout(
66
70
  () => {
67
71
  if (isOpen && ref.current) {
68
72
  setShow(true);
69
73
  (0, import_user_wait_event.waitStartEvent)();
74
+ if (logRocket) {
75
+ logRocket.track("wait-spinner-start", {
76
+ ...(0, import_web_analytics.getBAEventParameters)(),
77
+ ...(0, import_helpers.getProductAppDetails)()
78
+ });
79
+ }
70
80
  }
71
81
  },
72
82
  delay ? 1e3 : 0
@@ -74,8 +84,14 @@ const WaitMessage = (0, import_react.memo)(
74
84
  if (!isOpen) {
75
85
  setShow(false);
76
86
  (0, import_user_wait_event.waitEndEvent)();
87
+ if (logRocket) {
88
+ logRocket.track("wait-spinner-end", {
89
+ ...(0, import_web_analytics.getBAEventParameters)(),
90
+ ...(0, import_helpers.getProductAppDetails)()
91
+ });
92
+ }
77
93
  }
78
- }, [delay, isOpen]);
94
+ }, [delay, isOpen, logRocket]);
79
95
  (0, import_use_html_wait_message.useHTMLWaitMessage)(isOpen !== null);
80
96
  return show ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
81
97
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_backdrop.DSBackdrop, { zIndex: theme.zIndex.loader }),
@@ -4,14 +4,16 @@ import { getAuthorizationHeader } from "../../utils/auth/helper.js";
4
4
  import setupRetry from "./retry.js";
5
5
  import { requestInterceptor } from "./request-interceptor.js";
6
6
  import { handleSuccess, handleFailure } from "./response-interceptor.js";
7
+ import { getLogRocket } from "../../utils/micro-frontend/scripting-objects/logrocket.js";
7
8
  const REQUEST_TIMEOUT = 2 * 60 * 1e3;
8
9
  const getHTTPClient = ({
9
10
  baseURL = getAppConfigValue("serviceEndpoints.api", ""),
10
11
  headers = {}
11
12
  } = {}) => {
13
+ const logRocketSessionUrl = getLogRocket()?.sessionURL || "";
12
14
  const client = axios.create({
13
15
  baseURL,
14
- headers
16
+ headers: logRocketSessionUrl ? { ...headers, "X-LogRocket-URL": logRocketSessionUrl } : headers
15
17
  });
16
18
  if (client?.defaults?.timeout) client.defaults.timeout = REQUEST_TIMEOUT;
17
19
  setupRetry(client);
package/dist/esm/index.js CHANGED
@@ -140,7 +140,6 @@ import { MicroIFrameApp } from "./view/micro-iframe-app/index.js";
140
140
  import { getNavigationLinks } from "./view/micro-app/utils.js";
141
141
  import { getStore } from "./data/store.js";
142
142
  import { RegisterService } from "./utils/guest-with-service.js";
143
- import { setAppDynamicsUserData } from "./analytics/appdynamics.js";
144
143
  import { sendBAEvent } from "./analytics/index.js";
145
144
  import { updateBAEventParameters } from "./utils/micro-frontend/scripting-objects/web-analytics.js";
146
145
  import { Analytics } from "./utils/micro-frontend/scripting-objects/analytics.js";
@@ -247,7 +246,6 @@ export {
247
246
  sendMessageToHost,
248
247
  setAppConfig,
249
248
  setAppConfigValue,
250
- setAppDynamicsUserData,
251
249
  setHostAppData,
252
250
  setLoginParams,
253
251
  startSideEffect,
@@ -1,6 +1,5 @@
1
1
  import _ from "lodash";
2
2
  import { getAppConfigValue, setAppConfig } from "./config.js";
3
- import { setAppDynamicsUserData } from "../../analytics/appdynamics.js";
4
3
  import { updateBAEventParameters } from "../micro-frontend/scripting-objects/web-analytics.js";
5
4
  import { getAssetPath } from "../window.js";
6
5
  import { getAppConfigValue as getAppConfigValue2 } from "./config.js";
@@ -12,7 +11,6 @@ const parseAppConfig = (data) => {
12
11
  sessionStorage.setItem("envName", activeEnv);
13
12
  window.emui = window.emui || {};
14
13
  window.emui.appId = getAppConfigValue("appId") ?? window.emui.appId ?? "";
15
- setAppDynamicsUserData({ envName: activeEnv });
16
14
  updateBAEventParameters({ envName: activeEnv });
17
15
  };
18
16
  const getUnVersionedPath = (path) => path.replace(/(\d+\.\d+)(?!.*\d+\.\d+)/, "latest");
@@ -6,8 +6,13 @@ import {
6
6
  } from "../../api/auth/index.js";
7
7
  import { getUser } from "../../api/users/index.js";
8
8
  import { loginEvent, logoutEvent } from "../../analytics/user-session-event.js";
9
- import { setAppDynamicsUserData } from "../../analytics/appdynamics.js";
9
+ import {
10
+ getBAEventParameters,
11
+ updateBAEventParameters
12
+ } from "../micro-frontend/scripting-objects/web-analytics.js";
13
+ import { getLogRocket } from "../micro-frontend/scripting-objects/logrocket.js";
10
14
  import { getAuthorizationHeader, setAuthorizationHeader } from "./helper.js";
15
+ import { getProductAppDetails } from "../helpers.js";
11
16
  import { getAppConfigValue } from "../app-config/config.js";
12
17
  import { logRecords } from "../log-records.js";
13
18
  import { setLoginParams } from "./loginParams.js";
@@ -61,7 +66,15 @@ const endSession = async ({
61
66
  token
62
67
  });
63
68
  logoutEvent();
64
- setAppDynamicsUserData({ instanceId: "", userId: "" });
69
+ const logRocket = getLogRocket();
70
+ if (logRocket) {
71
+ const eventData = {
72
+ ...getBAEventParameters(),
73
+ ...getProductAppDetails()
74
+ };
75
+ logRocket.track("logout", eventData);
76
+ }
77
+ updateBAEventParameters({ instanceId: "", userId: "" });
65
78
  const idpHost = getAppConfigValue(IDP_ENDPOINT_CONFIG_KEY, "");
66
79
  const logoutUrl = new URL("/authorize", idpHost);
67
80
  const params = {
@@ -107,7 +120,8 @@ const authorize = async ({
107
120
  const {
108
121
  encompass_instance_id: instanceId,
109
122
  user_name: userName,
110
- bearer_token: bearerToken
123
+ bearer_token: bearerToken,
124
+ user_key: userKey
111
125
  } = introspectResponse;
112
126
  const cred = {
113
127
  bearerToken,
@@ -119,7 +133,17 @@ const authorize = async ({
119
133
  sessionStorage.setItem("instanceId", instanceId);
120
134
  sessionStorage.setItem("userId", userName);
121
135
  loginEvent({ instanceId, userId: userName });
122
- setAppDynamicsUserData({ instanceId, userId: userName });
136
+ updateBAEventParameters({ instanceId, userId: userName });
137
+ const logRocket = getLogRocket();
138
+ if (logRocket) {
139
+ const eventData = {
140
+ name: userName,
141
+ ...getBAEventParameters(),
142
+ ...getProductAppDetails()
143
+ };
144
+ logRocket.identify(userKey, eventData);
145
+ logRocket.track("login", eventData);
146
+ }
123
147
  const data = await getUser({ userName, isConsumerUser });
124
148
  sessionStorage.setItem("userSettings", JSON.stringify(data));
125
149
  const pathName = new URL(redirectUri).pathname;
@@ -10,7 +10,7 @@ import { consoleLogger } from "../console-logger.js";
10
10
  import { setLogger } from "../logger.js";
11
11
  import { removeStorageEvents } from "../web-storage.js";
12
12
  import { updateBAEventParameters } from "./scripting-objects/web-analytics.js";
13
- import { setAppDynamicsUserData } from "../../analytics/appdynamics.js";
13
+ import { setLogRocket } from "./scripting-objects/logrocket.js";
14
14
  import { getAppBridge } from "./app-bridge.js";
15
15
  import { abortPromise } from "../helpers.js";
16
16
  const isCrossDomain = () => {
@@ -33,6 +33,10 @@ class CMicroAppGuest {
33
33
  #uuid;
34
34
  static instance;
35
35
  logger;
36
+ /**
37
+ * LogRocket instance
38
+ */
39
+ #logRocket;
36
40
  appId;
37
41
  props;
38
42
  containerId;
@@ -65,6 +69,8 @@ class CMicroAppGuest {
65
69
  };
66
70
  this.logger = params?.logger || consoleLogger;
67
71
  setLogger(this.logger);
72
+ this.#logRocket = params?.logRocket;
73
+ setLogRocket(this.#logRocket);
68
74
  this.onInit = params?.onInit;
69
75
  this.onMount = params?.onMount;
70
76
  this.onUnmount = params?.onUnmount;
@@ -238,7 +244,6 @@ class CMicroAppGuest {
238
244
  const instanceId = this.getSessionStorageItem("instanceId") || "";
239
245
  const userId = this.getSessionStorageItem("userId") || "";
240
246
  updateBAEventParameters({ appId: this.appId, instanceId, userId });
241
- setAppDynamicsUserData({ appId: this.appId, instanceId, userId });
242
247
  const useParentHistory = getAppConfigValue("useParentHistory", true);
243
248
  if (useParentHistory && history) {
244
249
  this.props.history = history;
@@ -20,7 +20,7 @@ import {
20
20
  getCurrentBreakpoint,
21
21
  getViewportSize as getWindowViewportSize
22
22
  } from "../window.js";
23
- import { setAppDynamicsUserData } from "../../analytics/appdynamics.js";
23
+ import { setLogRocket } from "./scripting-objects/logrocket.js";
24
24
  import { Analytics } from "./scripting-objects/analytics.js";
25
25
  import { updateBAEventParameters } from "./scripting-objects/web-analytics.js";
26
26
  import { renewSession } from "../session.js";
@@ -28,6 +28,10 @@ import { getAppBridge } from "./app-bridge.js";
28
28
  class CMicroAppHost {
29
29
  static instance;
30
30
  logger;
31
+ /**
32
+ * LogRocket instance
33
+ */
34
+ #logRocket;
31
35
  appId;
32
36
  props;
33
37
  activeGuests;
@@ -43,6 +47,8 @@ class CMicroAppHost {
43
47
  this.onInit = params?.onInit;
44
48
  this.logger = params?.logger || consoleLogger;
45
49
  setLogger(this.logger);
50
+ this.#logRocket = params?.logRocket;
51
+ setLogRocket(this.#logRocket);
46
52
  this.onRenewSessionTimer = params?.onRenewSessionTimer;
47
53
  this.props = {
48
54
  systemVersion: params?.version ?? "latest",
@@ -86,9 +92,6 @@ class CMicroAppHost {
86
92
  }).catch(() => {
87
93
  });
88
94
  updateBAEventParameters({ appId: this.appId });
89
- setAppDynamicsUserData({
90
- appId: this.appId
91
- });
92
95
  }
93
96
  static getInstance(params) {
94
97
  if (!this.instance) {
@@ -2,6 +2,7 @@ import { ScriptingObject } from "@elliemae/ssf-host";
2
2
  import { getBAEventParameters } from "./web-analytics.js";
3
3
  import { getProductAppDetails } from "../../helpers.js";
4
4
  import { HeadSampler } from "../../headSampler.js";
5
+ import { getLogRocket } from "./logrocket.js";
5
6
  class Analytics extends ScriptingObject {
6
7
  /**
7
8
  * logger instance
@@ -85,16 +86,23 @@ class Analytics extends ScriptingObject {
85
86
  /**
86
87
  * send business analytics event
87
88
  * @param event business analytics event
89
+ * @param eve
88
90
  * @returns promise
89
91
  */
90
- sendBAEvent = (event) => {
92
+ sendBAEvent = (eve) => {
93
+ const { event, ...rest } = eve ?? {};
94
+ if (!event) return Promise.resolve();
91
95
  const eventEx = {
92
96
  ...getBAEventParameters(),
93
97
  ...getProductAppDetails(),
94
- ...event
98
+ ...rest
95
99
  };
96
100
  window.gtmDataLayer = window.gtmDataLayer || [];
97
- window.gtmDataLayer.push(eventEx);
101
+ window.gtmDataLayer.push({ ...eventEx, event });
102
+ const logRocket = getLogRocket();
103
+ if (logRocket) {
104
+ logRocket.track(event, eventEx);
105
+ }
98
106
  return Promise.resolve();
99
107
  };
100
108
  /**
@@ -0,0 +1,9 @@
1
+ let gLogRocket = null;
2
+ const getLogRocket = () => gLogRocket;
3
+ const setLogRocket = (logrocket) => {
4
+ gLogRocket = logrocket || null;
5
+ };
6
+ export {
7
+ getLogRocket,
8
+ setLogRocket
9
+ };
@@ -18,11 +18,11 @@ const MaskedInputText = ({
18
18
  const opts = React.useMemo(
19
19
  () => ({
20
20
  ...maskOpts,
21
- onChange: (_, maskedValue) => setValue(name, maskedValue, {
21
+ onChange: ((_, maskedValue) => setValue(name, maskedValue, {
22
22
  shouldValidate: true,
23
23
  shouldDirty: true,
24
24
  shouldTouch: true
25
- }),
25
+ })),
26
26
  valueSetter: setVal
27
27
  }),
28
28
  [maskOpts, name, setValue]
@@ -31,7 +31,7 @@
31
31
  startVirtualPageMonitoringWithAutoEnd: function () {},
32
32
  };
33
33
  </script> -->
34
- <script>
34
+ <script nonce="__CSP_NONCE__">
35
35
  (function (i, s, o, g, r, a, m) {
36
36
  i['GoogleAnalyticsObject'] = r;
37
37
  (i[r] =
@@ -52,7 +52,7 @@
52
52
  'ga',
53
53
  );
54
54
  </script>
55
- <style>
55
+ <style nonce="__CSP_NONCE__">
56
56
  .full-width {
57
57
  width: 100%;
58
58
  }
@@ -118,7 +118,9 @@ exports[`MicroIFrameApp should open loanapp and call init and mount methods 1`]
118
118
  <script
119
119
  src="https://www.google-analytics.com/analytics.js"
120
120
  />
121
- <script>
121
+ <script
122
+ nonce="__CSP_NONCE__"
123
+ >
122
124
 
123
125
  (function (i, s, o, g, r, a, m) {
124
126
  i['GoogleAnalyticsObject'] = r;
@@ -143,7 +145,9 @@ exports[`MicroIFrameApp should open loanapp and call init and mount methods 1`]
143
145
  </script>
144
146
 
145
147
 
146
- <style>
148
+ <style
149
+ nonce="__CSP_NONCE__"
150
+ >
147
151
 
148
152
  .full-width {
149
153
  width: 100%;