@elliemae/pui-app-sdk 5.22.0 → 5.23.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 (141) hide show
  1. package/dist/cjs/analytics/index.js +2 -1
  2. package/dist/cjs/index.js +3 -0
  3. package/dist/cjs/utils/micro-frontend/app-bridge.js +38 -0
  4. package/dist/cjs/utils/micro-frontend/guest.js +101 -14
  5. package/dist/cjs/utils/micro-frontend/host.js +36 -3
  6. package/dist/cjs/utils/micro-frontend/scripting-objects/analytics.js +8 -14
  7. package/dist/cjs/utils/micro-frontend/tests/app.config.json +200 -0
  8. package/dist/cjs/utils/micro-frontend/tests/utils.js +116 -0
  9. package/dist/cjs/utils/testing/index.js +15 -1
  10. package/dist/cjs/view/guest-microapp.js +113 -0
  11. package/dist/cjs/view/micro-iframe-app/iframe/index.js +1 -1
  12. package/dist/cjs/view/micro-iframe-app/iframe.html +5 -1
  13. package/dist/cjs/view/micro-iframe-app/use-frame-loaded.js +3 -1
  14. package/dist/cjs/view/tests/__snapshots__/guest-microapp.test.tsx.snap +21 -0
  15. package/dist/cjs/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +208 -0
  16. package/dist/cjs/view/tests/app.config.json +200 -0
  17. package/dist/cjs/view/tests/constants.js +44 -0
  18. package/dist/cjs/view/tests/flights/23.1/app.checksum1.css +3 -0
  19. package/dist/cjs/view/tests/flights/23.1/app.checksum1.js +52 -0
  20. package/dist/cjs/view/tests/flights/23.1/manifest.json +4 -0
  21. package/dist/cjs/view/tests/flights/latest/app.checksum.css +3 -0
  22. package/dist/cjs/view/tests/flights/latest/app.checksum.js +52 -0
  23. package/dist/cjs/view/tests/flights/latest/manifest.json +4 -0
  24. package/dist/cjs/view/tests/hotels/23.1/app.checksum.css +3 -0
  25. package/dist/cjs/view/tests/hotels/23.1/app.checksum.js +52 -0
  26. package/dist/cjs/view/tests/hotels/23.1/manifest.json +4 -0
  27. package/dist/cjs/view/tests/hotels/latest/app.checksum.css +3 -0
  28. package/dist/cjs/view/tests/hotels/latest/app.checksum.js +52 -0
  29. package/dist/cjs/view/tests/hotels/latest/manifest.json +4 -0
  30. package/dist/cjs/view/tests/loan/latest/index.js +116 -0
  31. package/dist/cjs/view/tests/loan/latest/manifest.json +3 -0
  32. package/dist/cjs/view/tests/scriptingObjects/appraisalServiceModule.js +81 -0
  33. package/dist/cjs/{utils/micro-frontend/host-app.js → view/tests/scriptingObjects/constant.js} +5 -10
  34. package/dist/cjs/view/tests/scriptingObjects/global.js +40 -0
  35. package/dist/cjs/view/tests/scriptingObjects/loan.js +200 -0
  36. package/dist/cjs/view/tests/server.js +29 -0
  37. package/dist/cjs/view/tests/serverHandlers.js +210 -0
  38. package/dist/cjs/view/tests/task/latest/index.dev.js +67 -0
  39. package/dist/cjs/view/tests/task/latest/index.js +67 -0
  40. package/dist/cjs/view/tests/task/latest/manifest.json +4 -0
  41. package/dist/cjs/view/tests/travelhub/23.1/app.checksum.css +3 -0
  42. package/dist/cjs/view/tests/travelhub/23.1/app.checksum.js +25 -0
  43. package/dist/cjs/view/tests/travelhub/23.1/landing.checksum1.css +3 -0
  44. package/dist/cjs/view/tests/travelhub/23.1/landing.checksum1.js +6 -0
  45. package/dist/cjs/view/tests/travelhub/23.1/manifest.json +6 -0
  46. package/dist/cjs/view/tests/travelhub/latest/app.checksum.css +3 -0
  47. package/dist/cjs/view/tests/travelhub/latest/app.checksum.js +30 -0
  48. package/dist/cjs/view/tests/travelhub/latest/landing.checksum.css +3 -0
  49. package/dist/cjs/view/tests/travelhub/latest/landing.checksum.js +8 -0
  50. package/dist/cjs/view/tests/travelhub/latest/manifest.json +6 -0
  51. package/dist/cjs/{utils/micro-frontend/ssfguest-adapter.js → view/tests/utils.js} +34 -29
  52. package/dist/esm/analytics/index.js +2 -1
  53. package/dist/esm/index.js +7 -1
  54. package/dist/esm/utils/micro-frontend/app-bridge.js +18 -0
  55. package/dist/esm/utils/micro-frontend/guest.js +101 -14
  56. package/dist/esm/utils/micro-frontend/host.js +36 -3
  57. package/dist/esm/utils/micro-frontend/scripting-objects/analytics.js +8 -4
  58. package/dist/esm/utils/micro-frontend/tests/app.config.json +200 -0
  59. package/dist/esm/utils/micro-frontend/tests/utils.js +96 -0
  60. package/dist/esm/utils/testing/index.js +5 -1
  61. package/dist/esm/view/guest-microapp.js +83 -0
  62. package/dist/esm/view/micro-iframe-app/iframe/index.js +1 -1
  63. package/dist/esm/view/micro-iframe-app/iframe.html +5 -1
  64. package/dist/esm/view/micro-iframe-app/use-frame-loaded.js +3 -1
  65. package/dist/esm/view/tests/__snapshots__/guest-microapp.test.tsx.snap +21 -0
  66. package/dist/esm/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +208 -0
  67. package/dist/esm/view/tests/app.config.json +200 -0
  68. package/dist/esm/view/tests/constants.js +24 -0
  69. package/dist/esm/view/tests/flights/23.1/app.checksum1.css +3 -0
  70. package/dist/esm/view/tests/flights/23.1/app.checksum1.js +51 -0
  71. package/dist/esm/view/tests/flights/23.1/manifest.json +4 -0
  72. package/dist/esm/view/tests/flights/latest/app.checksum.css +3 -0
  73. package/dist/esm/view/tests/flights/latest/app.checksum.js +51 -0
  74. package/dist/esm/view/tests/flights/latest/manifest.json +4 -0
  75. package/dist/esm/view/tests/hotels/23.1/app.checksum.css +3 -0
  76. package/dist/esm/view/tests/hotels/23.1/app.checksum.js +51 -0
  77. package/dist/esm/view/tests/hotels/23.1/manifest.json +4 -0
  78. package/dist/esm/view/tests/hotels/latest/app.checksum.css +3 -0
  79. package/dist/esm/view/tests/hotels/latest/app.checksum.js +51 -0
  80. package/dist/esm/view/tests/hotels/latest/manifest.json +4 -0
  81. package/dist/esm/view/tests/loan/latest/index.js +115 -0
  82. package/dist/esm/view/tests/loan/latest/manifest.json +3 -0
  83. package/dist/esm/view/tests/scriptingObjects/appraisalServiceModule.js +63 -0
  84. package/dist/esm/view/tests/scriptingObjects/constant.js +4 -0
  85. package/dist/esm/view/tests/scriptingObjects/global.js +22 -0
  86. package/dist/esm/view/tests/scriptingObjects/loan.js +180 -0
  87. package/dist/esm/view/tests/server.js +9 -0
  88. package/dist/esm/view/tests/serverHandlers.js +180 -0
  89. package/dist/esm/view/tests/task/latest/index.dev.js +66 -0
  90. package/dist/esm/view/tests/task/latest/index.js +66 -0
  91. package/dist/esm/view/tests/task/latest/manifest.json +4 -0
  92. package/dist/esm/view/tests/travelhub/23.1/app.checksum.css +3 -0
  93. package/dist/esm/view/tests/travelhub/23.1/app.checksum.js +24 -0
  94. package/dist/esm/view/tests/travelhub/23.1/landing.checksum1.css +3 -0
  95. package/dist/esm/view/tests/travelhub/23.1/landing.checksum1.js +5 -0
  96. package/dist/esm/view/tests/travelhub/23.1/manifest.json +6 -0
  97. package/dist/esm/view/tests/travelhub/latest/app.checksum.css +3 -0
  98. package/dist/esm/view/tests/travelhub/latest/app.checksum.js +29 -0
  99. package/dist/esm/view/tests/travelhub/latest/landing.checksum.css +3 -0
  100. package/dist/esm/view/tests/travelhub/latest/landing.checksum.js +7 -0
  101. package/dist/esm/view/tests/travelhub/latest/manifest.json +6 -0
  102. package/dist/esm/view/tests/utils.js +33 -0
  103. package/dist/types/lib/index.d.ts +2 -1
  104. package/dist/types/lib/utils/micro-frontend/app-bridge.d.ts +4 -0
  105. package/dist/types/lib/utils/micro-frontend/guest.d.ts +46 -11
  106. package/dist/types/lib/utils/micro-frontend/host.d.ts +27 -10
  107. package/dist/types/lib/utils/micro-frontend/scripting-objects/analytics.d.ts +8 -5
  108. package/dist/types/lib/utils/micro-frontend/tests/utils.d.ts +39 -0
  109. package/dist/types/lib/utils/micro-frontend/types.d.ts +2 -1
  110. package/dist/types/lib/utils/testing/index.d.ts +57 -1
  111. package/dist/types/lib/utils/window.d.ts +13 -6
  112. package/dist/types/lib/view/guest-microapp.d.ts +13 -0
  113. package/dist/types/lib/view/micro-app/index.d.ts +5 -0
  114. package/dist/types/lib/view/micro-iframe-app/index.d.ts +5 -0
  115. package/dist/types/lib/view/tests/constants.d.ts +11 -0
  116. package/dist/types/lib/view/tests/flights/23.1/app.checksum1.d.ts +7 -0
  117. package/dist/types/lib/view/tests/flights/latest/app.checksum.d.ts +7 -0
  118. package/dist/types/lib/view/tests/hotels/23.1/app.checksum.d.ts +7 -0
  119. package/dist/types/lib/view/tests/hotels/latest/app.checksum.d.ts +7 -0
  120. package/dist/types/lib/view/tests/loan/latest/index.d.ts +11 -0
  121. package/dist/types/lib/view/tests/micro-iframe-app.test.d.ts +1 -0
  122. package/dist/types/lib/view/tests/scriptingObjects/appraisalServiceModule.d.ts +36 -0
  123. package/dist/types/lib/view/tests/scriptingObjects/constant.d.ts +1 -0
  124. package/dist/types/lib/view/tests/scriptingObjects/global.d.ts +9 -0
  125. package/dist/types/lib/view/tests/scriptingObjects/loan.d.ts +31 -0
  126. package/dist/types/lib/view/tests/server.d.ts +1 -0
  127. package/dist/types/lib/view/tests/serverHandlers.d.ts +5 -0
  128. package/dist/types/lib/view/tests/task/latest/index.d.ts +10 -0
  129. package/dist/types/lib/view/tests/task/latest/index.dev.d.ts +10 -0
  130. package/dist/types/lib/view/tests/travelhub/23.1/app.checksum.d.ts +7 -0
  131. package/dist/types/lib/view/tests/travelhub/23.1/landing.checksum1.d.ts +2 -0
  132. package/dist/types/lib/view/tests/travelhub/latest/app.checksum.d.ts +0 -0
  133. package/dist/types/lib/view/tests/travelhub/latest/landing.checksum.d.ts +0 -0
  134. package/dist/types/lib/view/tests/utils.d.ts +7 -0
  135. package/dist/types/tsconfig.tsbuildinfo +1 -1
  136. package/package.json +44 -44
  137. package/dist/esm/utils/micro-frontend/host-app.js +0 -9
  138. package/dist/esm/utils/micro-frontend/ssfguest-adapter.js +0 -28
  139. package/dist/types/lib/utils/micro-frontend/host-app.d.ts +0 -11
  140. package/dist/types/lib/utils/micro-frontend/ssfguest-adapter.d.ts +0 -7
  141. /package/dist/types/lib/{utils/micro-frontend/tests/guest-ssf-host.test.d.ts → view/tests/guest-microapp.test.d.ts} +0 -0
@@ -38,7 +38,8 @@ const sendBAEvent = ({
38
38
  self = true
39
39
  }) => {
40
40
  if (!self) {
41
- const sendEvent = import_guest.CMicroAppGuest.getInstance()?.getHost()?.sendBAEvent;
41
+ const host = import_guest.CMicroAppGuest.getInstance()?.getHost();
42
+ const sendEvent = host?.sendBAEvent;
42
43
  if (sendEvent) {
43
44
  sendEvent(data);
44
45
  } else {
package/dist/cjs/index.js CHANGED
@@ -32,6 +32,7 @@ __export(index_exports, {
32
32
  Analytics: () => import_analytics2.Analytics,
33
33
  AppRoot: () => import_app_root.AppRoot,
34
34
  Autocomplete: () => import_autocomplete.Autocomplete,
35
+ CMicroApp: () => import_guest.CMicroAppGuest,
35
36
  CMicroAppGuest: () => import_guest.CMicroAppGuest,
36
37
  CMicroAppHost: () => import_host.CMicroAppHost,
37
38
  CheckBox: () => import_check_box.CheckBox,
@@ -48,6 +49,7 @@ __export(index_exports, {
48
49
  FormItemLayout: () => import_form_item_layout.FormItemLayout,
49
50
  FormLayoutBlockItem: () => import_form_layout_block_item.FormLayoutBlockItem,
50
51
  FormSubmitButton: () => import_submit_button.FormSubmitButton,
52
+ GuestMicroApp: () => import_guest_microapp.GuestMicroApp,
51
53
  InputMask: () => import_input_mask.InputMask,
52
54
  InputText: () => import_input_text.InputText,
53
55
  LargeTextBox: () => import_large_text_box.LargeTextBox,
@@ -233,6 +235,7 @@ var import_live_message = require("./data/live-message/index.js");
233
235
  var import_error = require("./data/error/index.js");
234
236
  var import_actions4 = require("./data/logout/actions.js");
235
237
  var import_micro_app = require("./view/micro-app/index.js");
238
+ var import_guest_microapp = require("./view/guest-microapp.js");
236
239
  var import_micro_iframe_app = require("./view/micro-iframe-app/index.js");
237
240
  var import_utils = require("./view/micro-app/utils.js");
238
241
  var import_store3 = require("./data/store.js");
@@ -0,0 +1,38 @@
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 app_bridge_exports = {};
20
+ __export(app_bridge_exports, {
21
+ getAppBridge: () => getAppBridge
22
+ });
23
+ module.exports = __toCommonJS(app_bridge_exports);
24
+ var import_pui_app_bridge = require("@elliemae/pui-app-bridge");
25
+ var import_logger = require("../logger.js");
26
+ let appBridge = null;
27
+ const getAppBridge = async () => {
28
+ if (!appBridge) {
29
+ const logger = (0, import_logger.getLogger)();
30
+ const version = window.emui?.version || "latest";
31
+ appBridge = new import_pui_app_bridge.CAppBridge({
32
+ logger,
33
+ version
34
+ });
35
+ await appBridge.init();
36
+ }
37
+ return appBridge;
38
+ };
@@ -34,6 +34,7 @@ module.exports = __toCommonJS(guest_exports);
34
34
  var import_lodash = __toESM(require("lodash"));
35
35
  var import_uuid = require("uuid");
36
36
  var import_pui_theme = require("@elliemae/pui-theme");
37
+ var import_ssf_guest = require("@elliemae/ssf-guest");
37
38
  var import_window = require("../window.js");
38
39
  var import_app_config = require("../app-config/index.js");
39
40
  var import_config = require("../app-config/config.js");
@@ -43,8 +44,7 @@ var import_logger = require("../logger.js");
43
44
  var import_web_storage = require("../web-storage.js");
44
45
  var import_web_analytics = require("./scripting-objects/web-analytics.js");
45
46
  var import_appdynamics = require("../../analytics/appdynamics.js");
46
- var import_ssfguest_adapter = require("./ssfguest-adapter.js");
47
- var import_host_app = require("./host-app.js");
47
+ var import_app_bridge = require("./app-bridge.js");
48
48
  const isCrossDomain = () => {
49
49
  try {
50
50
  window.parent.document;
@@ -53,6 +53,11 @@ const isCrossDomain = () => {
53
53
  return true;
54
54
  }
55
55
  };
56
+ var CommunicationMethod = /* @__PURE__ */ ((CommunicationMethod2) => {
57
+ CommunicationMethod2["SSF"] = "ssf";
58
+ CommunicationMethod2["APPSDK"] = "app-sdk";
59
+ return CommunicationMethod2;
60
+ })(CommunicationMethod || {});
56
61
  class CMicroAppGuest {
57
62
  /**
58
63
  * unique microapp id
@@ -63,6 +68,14 @@ class CMicroAppGuest {
63
68
  appId;
64
69
  props;
65
70
  containerId;
71
+ /**
72
+ * communication method used between microapps
73
+ */
74
+ #communicationMethod;
75
+ /**
76
+ * AppBridge instance
77
+ */
78
+ #appBridge = null;
66
79
  onInit;
67
80
  onMount;
68
81
  onUnmount;
@@ -73,6 +86,7 @@ class CMicroAppGuest {
73
86
  window.emui.uuid = window.emui.uuid || (0, import_uuid.v4)();
74
87
  this.appId = window.emui?.appId || (0, import_config.getAppConfigValue)("appId");
75
88
  this.#uuid = window.emui.uuid;
89
+ this.#communicationMethod = "app-sdk" /* APPSDK */;
76
90
  this.props = {
77
91
  host: null,
78
92
  hostUrl: null,
@@ -94,7 +108,7 @@ class CMicroAppGuest {
94
108
  }
95
109
  static getInstance(params) {
96
110
  if (!this.instance) {
97
- this.instance = new this(params);
111
+ this.instance = new CMicroAppGuest(params);
98
112
  }
99
113
  return this.instance;
100
114
  }
@@ -110,6 +124,46 @@ class CMicroAppGuest {
110
124
  getLogger() {
111
125
  return this.logger;
112
126
  }
127
+ getObject(objectId) {
128
+ let host = null;
129
+ if (this.#communicationMethod === "ssf" /* SSF */) {
130
+ host = this.getHost();
131
+ return host.getObject(objectId);
132
+ }
133
+ host = this.getHost();
134
+ if (!host) return Promise.resolve(null);
135
+ return host.getObject(objectId);
136
+ }
137
+ /**
138
+ * subscribe to the scripting object event
139
+ * @param {SubscribeParam<EventId, AppEvents[EventId]>} params - the parameters for the subscription
140
+ * @param {string} params.soName - the name of the scripting object
141
+ * @param {string} params.eventName - the name of the event
142
+ * @param {Function} params.callback - the callback function to be called when the event is triggered
143
+ * @returns {void}
144
+ */
145
+ subscribe(params) {
146
+ let host = null;
147
+ if (this.#communicationMethod === "ssf" /* SSF */) {
148
+ host = this.getHost();
149
+ return host.subscribe(params);
150
+ }
151
+ host = this.getHost();
152
+ return host.subscribe(params);
153
+ }
154
+ /**
155
+ * unsubscribe from the scripting object event
156
+ * @param params - parameters for the unsubscription
157
+ */
158
+ unsubscribe(params) {
159
+ let host = null;
160
+ if (this.#communicationMethod === "ssf" /* SSF */) {
161
+ host = this.getHost();
162
+ host.unsubscribe(params);
163
+ }
164
+ host = this.getHost();
165
+ host.unsubscribe(params);
166
+ }
113
167
  getProps() {
114
168
  return this.props;
115
169
  }
@@ -174,21 +228,22 @@ class CMicroAppGuest {
174
228
  }
175
229
  getSessionStorageItem(key) {
176
230
  let value = sessionStorage.getItem(key);
177
- if (!value && this.props.host?.getItem) {
178
- value = this.props.host.getItem(key);
231
+ const host = this.getHost();
232
+ if (!value && host?.getItem) {
233
+ value = host.getItem(key);
179
234
  }
180
235
  return value;
181
236
  }
182
- async getSSFAdapter() {
237
+ async findHost() {
183
238
  let host = null;
184
239
  if (window.parent !== window) {
185
240
  if (!isCrossDomain()) {
186
- host = window.parent?.emui?.MicroAppHost || null;
241
+ host = window.parent?.emui?.MicroAppHost ?? null;
187
242
  }
188
243
  if (!host) {
189
- const ssfAdapter = new import_ssfguest_adapter.SSFGuestAdapter();
190
- if (!await ssfAdapter.init()) return null;
191
- host = ssfAdapter;
244
+ host = new import_ssf_guest.SSFGuest({ appLogger: this.logger });
245
+ await host.connect();
246
+ this.#communicationMethod = "ssf" /* SSF */;
192
247
  }
193
248
  }
194
249
  return host;
@@ -200,17 +255,21 @@ class CMicroAppGuest {
200
255
  this.props = import_lodash.default.merge(this.props, options);
201
256
  this.props.history = options?.history || this.props.history;
202
257
  if (!this.props.host) {
203
- const host = await this.getSSFAdapter();
204
- if (host) this.props.host = host;
258
+ const host = await this.findHost();
259
+ if (host) {
260
+ this.props.host = host;
261
+ }
205
262
  }
206
- if (this.props.host) (0, import_host_app.setHostApp)(this.props.host);
207
263
  __webpack_public_path__ = __webpack_public_path__.replace(/\/?$/, "/");
208
264
  return (0, import_app_config.loadAppConfig)().then(() => {
209
265
  const instanceId = this.getSessionStorageItem("instanceId") || "";
210
266
  const userId = this.getSessionStorageItem("userId") || "";
211
267
  (0, import_web_analytics.updateBAEventParameters)({ appId: this.appId, instanceId, userId });
212
268
  (0, import_appdynamics.setAppDynamicsUserData)({ appId: this.appId, instanceId, userId });
213
- if (this.onInit) this.onInit(this.props);
269
+ return (0, import_app_bridge.getAppBridge)().then((appBridge) => {
270
+ this.#appBridge = appBridge;
271
+ if (this.onInit) this.onInit(this.props);
272
+ });
214
273
  });
215
274
  }
216
275
  mount(options = { containerId: "app-container" }) {
@@ -231,4 +290,32 @@ class CMicroAppGuest {
231
290
  navigate(url, state) {
232
291
  if (url) this.props.history.push(url, state);
233
292
  }
293
+ /**
294
+ * add scripting object for child microapp to use
295
+ * @param so - The scripting object to be added.
296
+ * @param params - Optional parameters for adding the scripting object.
297
+ */
298
+ addScriptingObject(so, params) {
299
+ if (this.#appBridge) {
300
+ this.#appBridge.addScriptingObject(so, params);
301
+ }
302
+ }
303
+ /**
304
+ * dispatch event to child microapp
305
+ * @param {DispatchEventParams<EventId, Params>} params - event parameters
306
+ */
307
+ async dispatchEvent(params) {
308
+ if (this.#appBridge) {
309
+ await this.#appBridge.dispatchEvent(params);
310
+ }
311
+ }
312
+ /**
313
+ * removes scripting object from child microapp use
314
+ * @param objectId unique id of the scripting object
315
+ */
316
+ removeScriptingObject(objectId) {
317
+ if (this.#appBridge) {
318
+ this.#appBridge.removeScriptingObject(objectId);
319
+ }
320
+ }
234
321
  }
@@ -39,7 +39,7 @@ var import_appdynamics = require("../../analytics/appdynamics.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");
42
- var import_host_app = require("./host-app.js");
42
+ var import_app_bridge = require("./app-bridge.js");
43
43
  class CMicroAppHost {
44
44
  static instance;
45
45
  logger;
@@ -51,6 +51,7 @@ class CMicroAppHost {
51
51
  throttleRenewSessionTimer;
52
52
  scriptingObjects;
53
53
  #ssfHostRef;
54
+ #appBridge = null;
54
55
  // eslint-disable-next-line max-statements
55
56
  constructor(params) {
56
57
  this.appId = (0, import_config.getAppConfigValue)("appId");
@@ -91,6 +92,11 @@ class CMicroAppHost {
91
92
  }
92
93
  );
93
94
  (0, import_app_config.loadAppConfig)().then(() => {
95
+ (0, import_app_bridge.getAppBridge)().then((appBridge) => {
96
+ this.#appBridge = appBridge;
97
+ }).catch((ex) => {
98
+ throw ex;
99
+ });
94
100
  if (this.onInit) this.onInit(this.props);
95
101
  }).catch(() => {
96
102
  });
@@ -101,8 +107,7 @@ class CMicroAppHost {
101
107
  }
102
108
  static getInstance(params) {
103
109
  if (!this.instance) {
104
- this.instance = new this(params);
105
- (0, import_host_app.setHostApp)(this.instance);
110
+ this.instance = new CMicroAppHost(params);
106
111
  }
107
112
  return this.instance;
108
113
  }
@@ -196,4 +201,32 @@ class CMicroAppHost {
196
201
  async getObject(name) {
197
202
  return this.scriptingObjects[name];
198
203
  }
204
+ /**
205
+ * add scripting object for child microapp to use
206
+ * @param so - The scripting object to be added.
207
+ * @param params - Optional parameters for adding the scripting object.
208
+ */
209
+ addScriptingObject(so, params) {
210
+ if (this.#appBridge) {
211
+ this.#appBridge.addScriptingObject(so, params);
212
+ }
213
+ }
214
+ /**
215
+ * dispatch event to child microapp
216
+ * @param {DispatchEventParams<EventId, Params>} params - event parameters
217
+ */
218
+ async dispatchEvent(params) {
219
+ if (this.#appBridge) {
220
+ await this.#appBridge.dispatchEvent(params);
221
+ }
222
+ }
223
+ /**
224
+ * removes scripting object from child microapp use
225
+ * @param objectId unique id of the scripting object
226
+ */
227
+ removeScriptingObject(objectId) {
228
+ if (this.#appBridge) {
229
+ this.#appBridge.removeScriptingObject(objectId);
230
+ }
231
+ }
199
232
  }
@@ -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,25 +15,17 @@ 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 analytics_exports = {};
30
20
  __export(analytics_exports, {
31
21
  Analytics: () => Analytics
32
22
  });
33
23
  module.exports = __toCommonJS(analytics_exports);
34
- var import_em_ssf_host = __toESM(require("@elliemae/em-ssf-host"));
24
+ var import_ssf_host = require("@elliemae/ssf-host");
35
25
  var import_web_analytics = require("./web-analytics.js");
36
26
  var import_helpers = require("../../helpers.js");
37
27
  var import_headSampler = require("../../headSampler.js");
38
- class Analytics extends import_em_ssf_host.default.ScriptingObject {
28
+ class Analytics extends import_ssf_host.ScriptingObject {
39
29
  /**
40
30
  * logger instance
41
31
  */
@@ -141,7 +131,10 @@ class Analytics extends import_em_ssf_host.default.ScriptingObject {
141
131
  if (!options || !options?.appId || !options?.appUrl)
142
132
  throw new Error("parameter options is required");
143
133
  const startMark = performance.mark(name, { detail: options });
144
- return Promise.resolve(startMark);
134
+ return Promise.resolve({
135
+ name: startMark.name,
136
+ startTime: startMark.startTime
137
+ });
145
138
  };
146
139
  /**
147
140
  * end timing measure
@@ -160,11 +153,12 @@ class Analytics extends import_em_ssf_host.default.ScriptingObject {
160
153
  * await analytics.endTiming('LongTask', { appId: 'loanApp', appUrl: 'https://loanApp.com' });
161
154
  * ```
162
155
  */
156
+ // eslint-disable-next-line complexity
163
157
  endTiming = (start, options) => {
164
158
  if (!start) throw new Error("parameter start is required");
165
159
  if (!options || !options?.appId || !options?.appUrl)
166
160
  throw new Error("parameter options is required");
167
- const measurementName = start.name ?? start;
161
+ const measurementName = start?.name ?? start;
168
162
  const startMark = performance.getEntriesByName(
169
163
  measurementName,
170
164
  "mark"
@@ -0,0 +1,200 @@
1
+ {
2
+ "appId": "microfe",
3
+ "activeEnv": "localhost",
4
+ "googleTagManager": true,
5
+ "sessionTimeoutWarnInterval": "7200000",
6
+ "sessionTimeoutInterval": "9000000",
7
+ "microFrontendApps": {
8
+ "loanapp": {
9
+ "name": "Loan",
10
+ "hostUrl": "./loan",
11
+ "development": {
12
+ "files": ["index.js"]
13
+ },
14
+ "production": {
15
+ "files": ["index.js"]
16
+ }
17
+ },
18
+ "taskapp": {
19
+ "name": "Task",
20
+ "hostUrl": "./task",
21
+ "mode": "development",
22
+ "development": {
23
+ "files": ["index.dev.js"]
24
+ },
25
+ "production": {
26
+ "files": ["index.js"]
27
+ }
28
+ },
29
+ "travelhub": {
30
+ "name": "TravelHub",
31
+ "hostUrl": "./travelhub",
32
+ "development": {
33
+ "files": ["app.js", "landing.js", "app.css", "landing.css"]
34
+ },
35
+ "production": {
36
+ "files": ["app.js", "landing.js", "app.css", "landing.css"]
37
+ }
38
+ },
39
+ "flights": {
40
+ "name": "Flights",
41
+ "hostUrl": "./flights",
42
+ "development": {
43
+ "files": ["app.js", "app.css"]
44
+ },
45
+ "production": {
46
+ "files": ["app.js", "app.css"]
47
+ }
48
+ },
49
+ "hotels": {
50
+ "name": "Hotels",
51
+ "hostUrl": "./hotels",
52
+ "development": {
53
+ "files": ["app.js", "app.css"]
54
+ },
55
+ "production": {
56
+ "files": ["app.js", "app.css"]
57
+ }
58
+ }
59
+ },
60
+ "serviceEndpoints": {
61
+ "api": "",
62
+ "idp": "https://int.idp.ellielabs.com",
63
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
64
+ },
65
+ "env": {
66
+ "localhost": {
67
+ "serviceEndpoints": {
68
+ "api": "",
69
+ "idp": "https://int.idp.ellielabs.com",
70
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
71
+ }
72
+ },
73
+ "dev": {
74
+ "serviceEndpoints": {
75
+ "api": "https://dev.api.puiservice.rd.elliemae.io",
76
+ "idp": "https://int.idp.ellielabs.com",
77
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
78
+ }
79
+ },
80
+ "dev2": {
81
+ "serviceEndpoints": {
82
+ "api": "https://int.api.ellielabs.com",
83
+ "idp": "https://int.idp.ellielabs.com",
84
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
85
+ }
86
+ },
87
+ "qa": {
88
+ "serviceEndpoints": {
89
+ "api": "https://dev.api.puiservice.rd.elliemae.io",
90
+ "idp": "https://int.idp.ellielabs.com",
91
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
92
+ }
93
+ },
94
+ "qa2": {
95
+ "serviceEndpoints": {
96
+ "api": "https://int.api.ellielabs.com",
97
+ "idp": "https://int.idp.ellielabs.com",
98
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
99
+ }
100
+ },
101
+ "qa3": {
102
+ "serviceEndpoints": {
103
+ "api": "https://int.api.ellielabs.com",
104
+ "idp": "https://int.idp.ellielabs.com",
105
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
106
+ }
107
+ },
108
+ "int": {
109
+ "serviceEndpoints": {
110
+ "api": "https://int.api.ellielabs.com",
111
+ "idp": "https://int.idp.ellielabs.com",
112
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
113
+ }
114
+ },
115
+ "peg-osb1": {
116
+ "serviceEndpoints": {
117
+ "api": "https://encompass-peg-api.elliemae.com",
118
+ "idp": "https://peg.idp.ellielabs.com/authorize",
119
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
120
+ }
121
+ },
122
+ "peg-osb2": {
123
+ "serviceEndpoints": {
124
+ "api": "https://encompass-peg2-api.elliemae.com",
125
+ "idp": "https://peg.idp.ellielabs.com/authorize",
126
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
127
+ }
128
+ },
129
+ "peg": {
130
+ "serviceEndpoints": {
131
+ "api": "https://peg2-west.api.ellielabs.com",
132
+ "idp": "https://peg.idp.ellielabs.com/authorize",
133
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
134
+ }
135
+ },
136
+ "peg-oapi-west": {
137
+ "serviceEndpoints": {
138
+ "api": "https://peg2-west.api.ellielabs.com",
139
+ "idp": "https://peg.idp.ellielabs.com/authorize",
140
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
141
+ }
142
+ },
143
+ "peg-oapi-east": {
144
+ "serviceEndpoints": {
145
+ "api": "https://peg2-east.api.ellielabs.com",
146
+ "idp": "https://peg.idp.ellielabs.com/authorize",
147
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
148
+ }
149
+ },
150
+ "peg2-oapi-east": {
151
+ "serviceEndpoints": {
152
+ "api": "https://peg2-east.api.ellielabs.com",
153
+ "idp": "https://peg.idp.ellielabs.com/authorize",
154
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
155
+ }
156
+ },
157
+ "peg3": {
158
+ "serviceEndpoints": {
159
+ "api": "https://pel1.api.ellielabs.com",
160
+ "idp": "https://peg3.idp.ellielabs.com/authorize",
161
+ "logger": "https://int.api.ellielabs.com/diagnostics/v2/logging"
162
+ }
163
+ },
164
+ "stage": {
165
+ "serviceEndpoints": {
166
+ "api": "https://stg.api.elliemae.com",
167
+ "idp": "https://stg.idp.elliemae.com/authorize",
168
+ "logger": "https://api.ellielabs.com/diagnostics/v2/logging"
169
+ }
170
+ },
171
+ "beta": {
172
+ "serviceEndpoints": {
173
+ "api": "https://concept.api.elliemae.com",
174
+ "idp": "https://concept.idp.elliemae.com/authorize",
175
+ "logger": "https://api.ellielabs.com/diagnostics/v2/logging"
176
+ }
177
+ },
178
+ "demo": {
179
+ "serviceEndpoints": {
180
+ "api": "https://concept.api.elliemae.com",
181
+ "idp": "https://concept.idp.elliemae.com/authorize",
182
+ "logger": "https://api.ellielabs.com/diagnostics/v2/logging"
183
+ }
184
+ },
185
+ "epc": {
186
+ "serviceEndpoints": {
187
+ "api": "https://concept.api.elliemae.com",
188
+ "idp": "https://concept.idp.elliemae.com/authorize",
189
+ "logger": "https://api.ellielabs.com/diagnostics/v2/logging"
190
+ }
191
+ },
192
+ "prod": {
193
+ "serviceEndpoints": {
194
+ "api": "https://api.elliemae.com",
195
+ "idp": "https://idp.elliemae.com/authorize",
196
+ "logger": "https://api.ellielabs.com/diagnostics/v2/logging"
197
+ }
198
+ }
199
+ }
200
+ }