@elliemae/pui-app-sdk 5.40.3 → 5.40.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/demo/{6879.3434f1e9.iframe.bundle.js → 1080.92f6b67a.iframe.bundle.js} +480 -480
  2. package/demo/1080.92f6b67a.iframe.bundle.js.br +0 -0
  3. package/demo/1080.92f6b67a.iframe.bundle.js.gz +0 -0
  4. package/demo/docs/{6879.3434f1e9.iframe.bundle.js → 1080.92f6b67a.iframe.bundle.js} +480 -480
  5. package/demo/docs/1080.92f6b67a.iframe.bundle.js.br +0 -0
  6. package/demo/docs/1080.92f6b67a.iframe.bundle.js.gz +0 -0
  7. package/demo/docs/iframe.html +1 -1
  8. package/demo/docs/index.html +1 -1
  9. package/demo/docs/{main.f4b9fb997236ae69d894.manager.bundle.js → main.cfd2e2085f77fe383f8d.manager.bundle.js} +1 -1
  10. package/demo/docs/{main.f4b9fb997236ae69d894.manager.bundle.js.br → main.cfd2e2085f77fe383f8d.manager.bundle.js.br} +0 -0
  11. package/demo/docs/{main.f4b9fb997236ae69d894.manager.bundle.js.gz → main.cfd2e2085f77fe383f8d.manager.bundle.js.gz} +0 -0
  12. package/demo/docs/main.f92b110f.iframe.bundle.js +5 -0
  13. package/demo/docs/main.f92b110f.iframe.bundle.js.br +0 -0
  14. package/demo/docs/main.f92b110f.iframe.bundle.js.gz +0 -0
  15. package/demo/docs/project.json +1 -1
  16. package/demo/iframe.html +1 -1
  17. package/demo/index.html +1 -1
  18. package/demo/{main.f4b9fb997236ae69d894.manager.bundle.js → main.cfd2e2085f77fe383f8d.manager.bundle.js} +1 -1
  19. package/demo/{main.f4b9fb997236ae69d894.manager.bundle.js.br → main.cfd2e2085f77fe383f8d.manager.bundle.js.br} +0 -0
  20. package/demo/{main.f4b9fb997236ae69d894.manager.bundle.js.gz → main.cfd2e2085f77fe383f8d.manager.bundle.js.gz} +0 -0
  21. package/demo/main.f92b110f.iframe.bundle.js +5 -0
  22. package/demo/main.f92b110f.iframe.bundle.js.br +0 -0
  23. package/demo/main.f92b110f.iframe.bundle.js.gz +0 -0
  24. package/demo/project.json +1 -1
  25. package/dist/cjs/utils/micro-frontend/guest-host-context.js +47 -0
  26. package/dist/cjs/utils/micro-frontend/guest.js +4 -3
  27. package/dist/cjs/utils/micro-frontend/host.js +4 -3
  28. package/dist/cjs/utils/micro-frontend/index.js +4 -1
  29. package/dist/cjs/utils/micro-frontend/module-so.js +5 -1
  30. package/dist/cjs/utils/micro-frontend/tests/guest-test-utils.js +27 -0
  31. package/dist/cjs/view/guest-microapp.js +30 -8
  32. package/dist/cjs/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +2 -2
  33. package/dist/esm/utils/micro-frontend/guest-host-context.js +27 -0
  34. package/dist/esm/utils/micro-frontend/guest.js +4 -3
  35. package/dist/esm/utils/micro-frontend/host.js +4 -3
  36. package/dist/esm/utils/micro-frontend/index.js +4 -1
  37. package/dist/esm/utils/micro-frontend/module-so.js +5 -1
  38. package/dist/esm/utils/micro-frontend/tests/guest-test-utils.js +7 -0
  39. package/dist/esm/view/guest-microapp.js +33 -8
  40. package/dist/esm/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +2 -2
  41. package/dist/types/lib/utils/micro-frontend/guest-host-context.d.ts +40 -0
  42. package/dist/types/lib/utils/micro-frontend/guest.d.ts +2 -1
  43. package/dist/types/lib/utils/micro-frontend/host.d.ts +2 -1
  44. package/dist/types/lib/utils/micro-frontend/module-so.d.ts +7 -5
  45. package/dist/types/lib/utils/micro-frontend/tests/guest-host-context.test.d.ts +1 -0
  46. package/dist/types/lib/utils/micro-frontend/tests/guest-test-utils.d.ts +2 -0
  47. package/dist/types/lib/view/guest-microapp.d.ts +12 -1
  48. package/dist/types/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +6 -6
  50. package/build/docs/404.html +0 -16
  51. package/build/docs/api/classes/Analytics/index.html +0 -270
  52. package/build/docs/api/classes/CMicroAppGuest/index.html +0 -261
  53. package/build/docs/api/classes/CMicroAppHost/index.html +0 -346
  54. package/build/docs/api/classes/ErrorBoundary/index.html +0 -354
  55. package/build/docs/api/classes/GuestModule/index.html +0 -148
  56. package/build/docs/api/functions/AppRoot/index.html +0 -27
  57. package/build/docs/api/functions/Autocomplete/index.html +0 -22
  58. package/build/docs/api/functions/CheckBox/index.html +0 -22
  59. package/build/docs/api/functions/ComboBox/index.html +0 -27
  60. package/build/docs/api/functions/ComboBoxV3/index.html +0 -22
  61. package/build/docs/api/functions/ConnectForm/index.html +0 -22
  62. package/build/docs/api/functions/DateInput/index.html +0 -22
  63. package/build/docs/api/functions/DatePicker/index.html +0 -27
  64. package/build/docs/api/functions/DateRangePicker/index.html +0 -22
  65. package/build/docs/api/functions/DateTimePicker/index.html +0 -22
  66. package/build/docs/api/functions/Form/index.html +0 -34
  67. package/build/docs/api/functions/FormItemLayout/index.html +0 -22
  68. package/build/docs/api/functions/FormLayoutBlockItem/index.html +0 -22
  69. package/build/docs/api/functions/FormSubmitButton/index.html +0 -22
  70. package/build/docs/api/functions/InputMask/index.html +0 -22
  71. package/build/docs/api/functions/InputText/index.html +0 -22
  72. package/build/docs/api/functions/LargeTextBox/index.html +0 -22
  73. package/build/docs/api/functions/MaskedInputText/index.html +0 -22
  74. package/build/docs/api/functions/Page/index.html +0 -22
  75. package/build/docs/api/functions/Radio/index.html +0 -22
  76. package/build/docs/api/functions/RadioGroup/index.html +0 -22
  77. package/build/docs/api/functions/RegisterService/index.html +0 -27
  78. package/build/docs/api/functions/RenderWithStateAddOns/index.html +0 -22
  79. package/build/docs/api/functions/RequireAuth/index.html +0 -28
  80. package/build/docs/api/functions/SessionTimeout/index.html +0 -19
  81. package/build/docs/api/functions/TextBox/index.html +0 -27
  82. package/build/docs/api/functions/Toggle/index.html +0 -22
  83. package/build/docs/api/functions/authSaga/index.html +0 -19
  84. package/build/docs/api/functions/authorize/index.html +0 -44
  85. package/build/docs/api/functions/buildModuleParams/index.html +0 -31
  86. package/build/docs/api/functions/cleanup/index.html +0 -20
  87. package/build/docs/api/functions/configureStore/index.html +0 -56
  88. package/build/docs/api/functions/createGuestModule/index.html +0 -39
  89. package/build/docs/api/functions/createManager/index.html +0 -41
  90. package/build/docs/api/functions/enableReactAppForHostIntegration/index.html +0 -22
  91. package/build/docs/api/functions/fetchHostAppData/index.html +0 -24
  92. package/build/docs/api/functions/fetchUserSettings/index.html +0 -22
  93. package/build/docs/api/functions/getApiActionCreator/index.html +0 -30
  94. package/build/docs/api/functions/getAppConfig/index.html +0 -19
  95. package/build/docs/api/functions/getAppConfigValue/index.html +0 -35
  96. package/build/docs/api/functions/getAuthHTTPClient/index.html +0 -38
  97. package/build/docs/api/functions/getAuthorizationHeader/index.html +0 -23
  98. package/build/docs/api/functions/getHTTPClient/index.html +0 -36
  99. package/build/docs/api/functions/getHostAppDataByKey/index.html +0 -27
  100. package/build/docs/api/functions/getLogger/index.html +0 -19
  101. package/build/docs/api/functions/getMicroFrontEndAppConfig/index.html +0 -23
  102. package/build/docs/api/functions/getNavigationLinks/index.html +0 -19
  103. package/build/docs/api/functions/getRedirectUrl/index.html +0 -19
  104. package/build/docs/api/functions/getSelectField/index.html +0 -33
  105. package/build/docs/api/functions/getStore/index.html +0 -23
  106. package/build/docs/api/functions/initServiceWorker/index.html +0 -22
  107. package/build/docs/api/functions/isCIBuild/index.html +0 -19
  108. package/build/docs/api/functions/isProd/index.html +0 -19
  109. package/build/docs/api/functions/isUserAuthorized/index.html +0 -23
  110. package/build/docs/api/functions/listenStorageEvents/index.html +0 -19
  111. package/build/docs/api/functions/loadAppConfig/index.html +0 -30
  112. package/build/docs/api/functions/loadable/index.html +0 -37
  113. package/build/docs/api/functions/login/index.html +0 -62
  114. package/build/docs/api/functions/notifyGuestUnloadComplete/index.html +0 -26
  115. package/build/docs/api/functions/onAuthorizationFailure/index.html +0 -28
  116. package/build/docs/api/functions/onGuestUnloadStart/index.html +0 -19
  117. package/build/docs/api/functions/redactPii/index.html +0 -32
  118. package/build/docs/api/functions/removeDoubleSlash/index.html +0 -22
  119. package/build/docs/api/functions/removeStorageEvents/index.html +0 -19
  120. package/build/docs/api/functions/render/index.html +0 -392
  121. package/build/docs/api/functions/renderHook/index.html +0 -37
  122. package/build/docs/api/functions/renderWithHostData/index.html +0 -22
  123. package/build/docs/api/functions/renderWithRedux/index.html +0 -392
  124. package/build/docs/api/functions/renderWithRouter/index.html +0 -392
  125. package/build/docs/api/functions/renderWithRouterRedux/index.html +0 -392
  126. package/build/docs/api/functions/sdkBaseQuery/index.html +0 -37
  127. package/build/docs/api/functions/sendBAEvent/index.html +0 -34
  128. package/build/docs/api/functions/sendMessageToHost/index.html +0 -24
  129. package/build/docs/api/functions/setAppConfig/index.html +0 -27
  130. package/build/docs/api/functions/setAppConfigValue/index.html +0 -35
  131. package/build/docs/api/functions/setHostAppData/index.html +0 -25
  132. package/build/docs/api/functions/setLoginParams/index.html +0 -29
  133. package/build/docs/api/functions/subscribeToResetSession/index.html +0 -28
  134. package/build/docs/api/functions/subscribeToSessionExpiry/index.html +0 -28
  135. package/build/docs/api/functions/subscribeToSessionExpiryWarning/index.html +0 -28
  136. package/build/docs/api/functions/trackActivity/index.html +0 -31
  137. package/build/docs/api/functions/useAppDispatch/index.html +0 -24
  138. package/build/docs/api/functions/useAppMiddleware/index.html +0 -25
  139. package/build/docs/api/functions/useInjectQuery/index.html +0 -35
  140. package/build/docs/api/functions/useInjectReducer/index.html +0 -31
  141. package/build/docs/api/functions/useInjectSaga/index.html +0 -33
  142. package/build/docs/api/functions/useInjectSideEffect/index.html +0 -25
  143. package/build/docs/api/functions/useMediaQueryList/index.html +0 -26
  144. package/build/docs/api/functions/useStateSelector/index.html +0 -38
  145. package/build/docs/api/functions/useStateSelectorShallow/index.html +0 -39
  146. package/build/docs/api/functions/waitFor/index.html +0 -27
  147. package/build/docs/api/functions/waitForElementToBeRemoved/index.html +0 -27
  148. package/build/docs/api/functions/withAppDecorator/index.html +0 -26
  149. package/build/docs/api/index.html +0 -29
  150. package/build/docs/api/interfaces/AppConfig/index.html +0 -46
  151. package/build/docs/api/interfaces/GuestProps/index.html +0 -86
  152. package/build/docs/api/interfaces/UseStateSelectorOptions/index.html +0 -25
  153. package/build/docs/api/type-aliases/AppDispatch/index.html +0 -17
  154. package/build/docs/api/type-aliases/AppStore/index.html +0 -17
  155. package/build/docs/api/type-aliases/Await/index.html +0 -20
  156. package/build/docs/api/type-aliases/EMUI/index.html +0 -62
  157. package/build/docs/api/type-aliases/HostOptions/index.html +0 -28
  158. package/build/docs/api/type-aliases/HostProvidedParams/index.html +0 -33
  159. package/build/docs/api/type-aliases/ModuleOverrides/index.html +0 -47
  160. package/build/docs/api/type-aliases/OnHostInitCallback/index.html +0 -22
  161. package/build/docs/api/type-aliases/OnInitCallback/index.html +0 -22
  162. package/build/docs/api/type-aliases/OnMountCallback/index.html +0 -22
  163. package/build/docs/api/type-aliases/OnUnMountCallback/index.html +0 -22
  164. package/build/docs/api/type-aliases/RootState/index.html +0 -17
  165. package/build/docs/api/type-aliases/SelectStateFieldFunction/index.html +0 -29
  166. package/build/docs/api/variables/ErrorToast/index.html +0 -17
  167. package/build/docs/api/variables/FormPropsContext/index.html +0 -24
  168. package/build/docs/api/variables/GuestMicroApp/index.html +0 -20
  169. package/build/docs/api/variables/MASK_PIPES/index.html +0 -17
  170. package/build/docs/api/variables/MASK_TYPES/index.html +0 -17
  171. package/build/docs/api/variables/MicroApp/index.html +0 -21
  172. package/build/docs/api/variables/MicroIFrameApp/index.html +0 -21
  173. package/build/docs/api/variables/NavigationPrompt/index.html +0 -17
  174. package/build/docs/api/variables/NavigationPromptActions/index.html +0 -22
  175. package/build/docs/api/variables/Themes/index.html +0 -22
  176. package/build/docs/api/variables/VisuallyHidden/index.html +0 -17
  177. package/build/docs/api/variables/WaitMessage/index.html +0 -17
  178. package/build/docs/api/variables/act/index.html +0 -20
  179. package/build/docs/api/variables/ariaLive/index.html +0 -17
  180. package/build/docs/api/variables/auth/index.html +0 -40
  181. package/build/docs/api/variables/authReducer/index.html +0 -17
  182. package/build/docs/api/variables/clearSideEffects/index.html +0 -21
  183. package/build/docs/api/variables/createSideEffect/index.html +0 -19
  184. package/build/docs/api/variables/decorators/index.html +0 -222
  185. package/build/docs/api/variables/endSession/index.html +0 -37
  186. package/build/docs/api/variables/error/index.html +0 -17
  187. package/build/docs/api/variables/errorMiddleware/index.html +0 -17
  188. package/build/docs/api/variables/fireEvent/index.html +0 -17
  189. package/build/docs/api/variables/globalConstants/index.html +0 -22
  190. package/build/docs/api/variables/history/index.html +0 -17
  191. package/build/docs/api/variables/httpClientProps/index.html +0 -17
  192. package/build/docs/api/variables/logout/index.html +0 -22
  193. package/build/docs/api/variables/memoryHistory/index.html +0 -17
  194. package/build/docs/api/variables/removeSideEffect/index.html +0 -20
  195. package/build/docs/api/variables/resetUserIdleTime/index.html +0 -23
  196. package/build/docs/api/variables/screen/index.html +0 -17
  197. package/build/docs/api/variables/startSideEffect/index.html +0 -21
  198. package/build/docs/api/variables/updateBAEventParameters/index.html +0 -27
  199. package/build/docs/api/variables/useAppSelector/index.html +0 -21
  200. package/build/docs/api/variables/waitMessageAction/index.html +0 -43
  201. package/build/docs/api/variables/within/index.html +0 -17
  202. package/build/docs/assets/css/styles.0fad824b.css +0 -1
  203. package/build/docs/assets/js/04ee7372.a9b3e0ad.js +0 -1
  204. package/build/docs/assets/js/05fd5745.f77a9872.js +0 -1
  205. package/build/docs/assets/js/075aa584.dde55d25.js +0 -1
  206. package/build/docs/assets/js/0a1bd0e5.3336afb7.js +0 -1
  207. package/build/docs/assets/js/0f302db7.690bba2c.js +0 -1
  208. package/build/docs/assets/js/10c70e6f.3a611c9f.js +0 -1
  209. package/build/docs/assets/js/110b6cba.2039a4be.js +0 -1
  210. package/build/docs/assets/js/1126.2b1e83b8.js +0 -1
  211. package/build/docs/assets/js/1127.ce24a599.js +0 -1
  212. package/build/docs/assets/js/1154937a.58ab70e0.js +0 -1
  213. package/build/docs/assets/js/1298.f98e394e.js +0 -1
  214. package/build/docs/assets/js/14efea89.c724a605.js +0 -1
  215. package/build/docs/assets/js/15f40f8f.62fbc501.js +0 -1
  216. package/build/docs/assets/js/1617.443ab77e.js +0 -1
  217. package/build/docs/assets/js/16427680.5a41da14.js +0 -1
  218. package/build/docs/assets/js/16fba083.0c978e4b.js +0 -1
  219. package/build/docs/assets/js/1700.bb38b1b9.js +0 -1
  220. package/build/docs/assets/js/17896441.87af09c7.js +0 -1
  221. package/build/docs/assets/js/1a5ba401.bdd09a56.js +0 -1
  222. package/build/docs/assets/js/1ad86f56.5c4d3ed7.js +0 -1
  223. package/build/docs/assets/js/1cc7c915.18a50af2.js +0 -1
  224. package/build/docs/assets/js/1dfec420.e8ed9238.js +0 -1
  225. package/build/docs/assets/js/1fcf59a8.501bb96b.js +0 -1
  226. package/build/docs/assets/js/2026.f4b8efbd.js +0 -1
  227. package/build/docs/assets/js/213.07804718.js +0 -1
  228. package/build/docs/assets/js/2297.998393a9.js +0 -1
  229. package/build/docs/assets/js/22c6ac39.38c10213.js +0 -1
  230. package/build/docs/assets/js/242.98ba961c.js +0 -1
  231. package/build/docs/assets/js/247.f91b8960.js +0 -1
  232. package/build/docs/assets/js/24b1c163.4390b04b.js +0 -1
  233. package/build/docs/assets/js/25ae0bf1.3ff15c6f.js +0 -1
  234. package/build/docs/assets/js/2673.1111af38.js +0 -1
  235. package/build/docs/assets/js/27c4a013.bceaff37.js +0 -1
  236. package/build/docs/assets/js/27c8b774.1ec1881a.js +0 -1
  237. package/build/docs/assets/js/2805.21b4fb8d.js +0 -1
  238. package/build/docs/assets/js/2b2c5b3b.41587ade.js +0 -1
  239. package/build/docs/assets/js/3072782a.825cd627.js +0 -1
  240. package/build/docs/assets/js/3204d46b.7af2b3bd.js +0 -1
  241. package/build/docs/assets/js/322ec2e7.529db700.js +0 -1
  242. package/build/docs/assets/js/336f5910.34c060aa.js +0 -1
  243. package/build/docs/assets/js/3395.f8117aa5.js +0 -1
  244. package/build/docs/assets/js/3499.2c20c6ff.js +0 -1
  245. package/build/docs/assets/js/3552.2d0559a3.js +0 -1
  246. package/build/docs/assets/js/365a2c17.6afbd7ba.js +0 -1
  247. package/build/docs/assets/js/379bbc32.cfc06360.js +0 -1
  248. package/build/docs/assets/js/3992.aa5529d1.js +0 -2
  249. package/build/docs/assets/js/3992.aa5529d1.js.LICENSE.txt +0 -1
  250. package/build/docs/assets/js/3accd241.850fb650.js +0 -1
  251. package/build/docs/assets/js/3b0e1261.9caf419d.js +0 -1
  252. package/build/docs/assets/js/3b333d5b.831324f6.js +0 -1
  253. package/build/docs/assets/js/3cb0b0a9.99866080.js +0 -1
  254. package/build/docs/assets/js/3cd01694.04367956.js +0 -1
  255. package/build/docs/assets/js/4069.77c5dcc9.js +0 -1
  256. package/build/docs/assets/js/4134.d6069e6e.js +0 -1
  257. package/build/docs/assets/js/413bfdf1.2e754bf4.js +0 -1
  258. package/build/docs/assets/js/41f4ce7f.8662231d.js +0 -1
  259. package/build/docs/assets/js/4257.60660403.js +0 -1
  260. package/build/docs/assets/js/46eb403d.e5123d24.js +0 -1
  261. package/build/docs/assets/js/4772.988b91f1.js +0 -1
  262. package/build/docs/assets/js/4780.8d49dc64.js +0 -1
  263. package/build/docs/assets/js/47f7a134.2369c86a.js +0 -1
  264. package/build/docs/assets/js/4884.48d16d5b.js +0 -1
  265. package/build/docs/assets/js/4acce17e.b84485e3.js +0 -1
  266. package/build/docs/assets/js/4b10ac31.ffdbb394.js +0 -1
  267. package/build/docs/assets/js/4eef183e.99934dfe.js +0 -1
  268. package/build/docs/assets/js/50ae2c89.ea85453c.js +0 -1
  269. package/build/docs/assets/js/50b500dc.b1dafbf4.js +0 -1
  270. package/build/docs/assets/js/5113883b.19fc9d2f.js +0 -1
  271. package/build/docs/assets/js/5196.dda420ed.js +0 -1
  272. package/build/docs/assets/js/51cd08ce.eedf6a77.js +0 -1
  273. package/build/docs/assets/js/5248.5442863c.js +0 -1
  274. package/build/docs/assets/js/533e434c.6a22f28d.js +0 -1
  275. package/build/docs/assets/js/53defe29.b34f5bfe.js +0 -1
  276. package/build/docs/assets/js/5428.28b1d8b6.js +0 -1
  277. package/build/docs/assets/js/54dea6f0.7b5fa5e6.js +0 -1
  278. package/build/docs/assets/js/550f7dc1.a569914a.js +0 -1
  279. package/build/docs/assets/js/5575829c.04c44eb2.js +0 -1
  280. package/build/docs/assets/js/58e12487.6e6066d3.js +0 -1
  281. package/build/docs/assets/js/59169cbb.2d2d02ce.js +0 -1
  282. package/build/docs/assets/js/5964.fbd55ce8.js +0 -1
  283. package/build/docs/assets/js/5968.7a565a4e.js +0 -1
  284. package/build/docs/assets/js/5c5cf8ae.cf6912f5.js +0 -1
  285. package/build/docs/assets/js/5ca2639d.8b06c9ea.js +0 -1
  286. package/build/docs/assets/js/5da011d0.872006f0.js +0 -1
  287. package/build/docs/assets/js/5e13701d.8a6b7fd6.js +0 -1
  288. package/build/docs/assets/js/5e7ee35c.01ca7414.js +0 -1
  289. package/build/docs/assets/js/5e8c322a.0391dec4.js +0 -1
  290. package/build/docs/assets/js/5e95c892.f11d5bd6.js +0 -1
  291. package/build/docs/assets/js/5ebc190f.49776b06.js +0 -1
  292. package/build/docs/assets/js/5f21eb71.536ccef3.js +0 -1
  293. package/build/docs/assets/js/60781fed.87f57230.js +0 -1
  294. package/build/docs/assets/js/61b0e64b.c86eca9e.js +0 -1
  295. package/build/docs/assets/js/61f3b5cc.197d138c.js +0 -1
  296. package/build/docs/assets/js/62e1e335.d54d1d6e.js +0 -1
  297. package/build/docs/assets/js/6486.776625d1.js +0 -1
  298. package/build/docs/assets/js/6611.481d87ff.js +0 -2
  299. package/build/docs/assets/js/6611.481d87ff.js.LICENSE.txt +0 -9
  300. package/build/docs/assets/js/6aac2d5c.95d7104d.js +0 -1
  301. package/build/docs/assets/js/6b345055.f4f6c3b9.js +0 -1
  302. package/build/docs/assets/js/6b7fcc15.290796d9.js +0 -1
  303. package/build/docs/assets/js/6ca90961.8833c635.js +0 -1
  304. package/build/docs/assets/js/6d1f0509.55213557.js +0 -1
  305. package/build/docs/assets/js/6daa33e8.c1c74588.js +0 -1
  306. package/build/docs/assets/js/7080.73a89c35.js +0 -1
  307. package/build/docs/assets/js/7201.26026979.js +0 -1
  308. package/build/docs/assets/js/7344.12628cac.js +0 -1
  309. package/build/docs/assets/js/749b3cb7.660b1c4b.js +0 -1
  310. package/build/docs/assets/js/7516.78c3385c.js +0 -1
  311. package/build/docs/assets/js/7525.69d857f8.js +0 -1
  312. package/build/docs/assets/js/7540.ee4aa270.js +0 -1
  313. package/build/docs/assets/js/78fde597.9598cb2a.js +0 -1
  314. package/build/docs/assets/js/7985.6aac4971.js +0 -1
  315. package/build/docs/assets/js/7b224b5a.d21317ac.js +0 -1
  316. package/build/docs/assets/js/7c822e85.3cc0a954.js +0 -1
  317. package/build/docs/assets/js/7cde3459.802fae28.js +0 -1
  318. package/build/docs/assets/js/7d256524.087a46e5.js +0 -1
  319. package/build/docs/assets/js/7d48b3e7.5d6ce912.js +0 -1
  320. package/build/docs/assets/js/80392bdc.dbd30f9e.js +0 -1
  321. package/build/docs/assets/js/8049.5b4457b0.js +0 -1
  322. package/build/docs/assets/js/805daf1e.305437dc.js +0 -1
  323. package/build/docs/assets/js/8152.32ad98ca.js +0 -1
  324. package/build/docs/assets/js/821.19f6a696.js +0 -1
  325. package/build/docs/assets/js/822e0178.3c0d623a.js +0 -1
  326. package/build/docs/assets/js/82894961.81f97aaf.js +0 -1
  327. package/build/docs/assets/js/8290.f0834113.js +0 -1
  328. package/build/docs/assets/js/8355.bcde11e0.js +0 -1
  329. package/build/docs/assets/js/8389.b3f6164d.js +0 -1
  330. package/build/docs/assets/js/8585.e50595e8.js +0 -1
  331. package/build/docs/assets/js/85dc4c9b.d835c54a.js +0 -1
  332. package/build/docs/assets/js/8788.c86aea45.js +0 -1
  333. package/build/docs/assets/js/88a4c043.ca8fd05b.js +0 -1
  334. package/build/docs/assets/js/90579cbd.0835e6a5.js +0 -1
  335. package/build/docs/assets/js/90bbfd1d.d0fd53f0.js +0 -1
  336. package/build/docs/assets/js/9178.f2e05b02.js +0 -1
  337. package/build/docs/assets/js/9210.b5a9980e.js +0 -1
  338. package/build/docs/assets/js/9354.77e86f51.js +0 -1
  339. package/build/docs/assets/js/936.275fbed5.js +0 -1
  340. package/build/docs/assets/js/9550cc1f.e19e7779.js +0 -1
  341. package/build/docs/assets/js/9574.c7203040.js +0 -1
  342. package/build/docs/assets/js/97.d2ed6ba9.js +0 -1
  343. package/build/docs/assets/js/9852.cf8f89a9.js +0 -1
  344. package/build/docs/assets/js/9953.90bfd954.js +0 -1
  345. package/build/docs/assets/js/999f4a99.31e9f0f9.js +0 -1
  346. package/build/docs/assets/js/99a35e8f.3cb224e6.js +0 -1
  347. package/build/docs/assets/js/9ab62f73.a44012b0.js +0 -1
  348. package/build/docs/assets/js/9ea6fe4d.ebd612bc.js +0 -1
  349. package/build/docs/assets/js/a09470d9.16bfeef9.js +0 -1
  350. package/build/docs/assets/js/a0eb976e.f6504d94.js +0 -1
  351. package/build/docs/assets/js/a17fb045.0c651699.js +0 -1
  352. package/build/docs/assets/js/a2537f00.c241e3f2.js +0 -1
  353. package/build/docs/assets/js/a29a6e44.58d6b878.js +0 -1
  354. package/build/docs/assets/js/a3ecf861.0f55d8fd.js +0 -1
  355. package/build/docs/assets/js/a48fd09c.50989621.js +0 -1
  356. package/build/docs/assets/js/a6c41565.0821af7d.js +0 -1
  357. package/build/docs/assets/js/a6c5c03c.0e69962a.js +0 -1
  358. package/build/docs/assets/js/a769954d.02ea4cc3.js +0 -1
  359. package/build/docs/assets/js/a7861986.e4d90417.js +0 -1
  360. package/build/docs/assets/js/a7bd4aaa.3faf623f.js +0 -1
  361. package/build/docs/assets/js/a8687130.681fc6b9.js +0 -1
  362. package/build/docs/assets/js/a94703ab.9865def5.js +0 -1
  363. package/build/docs/assets/js/a9ba6591.bcdf3f9d.js +0 -1
  364. package/build/docs/assets/js/ab05b3aa.63cf7d9f.js +0 -1
  365. package/build/docs/assets/js/aba21aa0.4d968e31.js +0 -1
  366. package/build/docs/assets/js/ac9d64ec.dd98824b.js +0 -1
  367. package/build/docs/assets/js/aeb9810c.f3c24439.js +0 -1
  368. package/build/docs/assets/js/b0125fa2.c7fba4da.js +0 -1
  369. package/build/docs/assets/js/b0ccf0d8.89a4a7e2.js +0 -1
  370. package/build/docs/assets/js/b1474780.0982f737.js +0 -1
  371. package/build/docs/assets/js/b2a255cc.df3fdd56.js +0 -1
  372. package/build/docs/assets/js/b31a5f55.9a4737ac.js +0 -1
  373. package/build/docs/assets/js/b4285021.67b039a1.js +0 -1
  374. package/build/docs/assets/js/b784b5bb.7d7bb82c.js +0 -1
  375. package/build/docs/assets/js/b8c1226b.a92653b3.js +0 -1
  376. package/build/docs/assets/js/b93b454c.f87b4896.js +0 -1
  377. package/build/docs/assets/js/bc717899.36b37795.js +0 -1
  378. package/build/docs/assets/js/bf1a96cc.8abf8470.js +0 -1
  379. package/build/docs/assets/js/c10ec81d.0dff1cac.js +0 -1
  380. package/build/docs/assets/js/c254daed.d6764cd8.js +0 -1
  381. package/build/docs/assets/js/c377a04b.a6a0a334.js +0 -1
  382. package/build/docs/assets/js/c52b5473.1a1069c1.js +0 -1
  383. package/build/docs/assets/js/c5e9787b.448cc7d9.js +0 -1
  384. package/build/docs/assets/js/c7710052.d061cfdd.js +0 -1
  385. package/build/docs/assets/js/c8a9fc86.daf30d50.js +0 -1
  386. package/build/docs/assets/js/c90572d4.42231642.js +0 -1
  387. package/build/docs/assets/js/cfad4bb4.edde6aa3.js +0 -1
  388. package/build/docs/assets/js/d071c513.a096e87e.js +0 -1
  389. package/build/docs/assets/js/d0fd4a71.1d53f49d.js +0 -1
  390. package/build/docs/assets/js/d1d7a857.424e14dc.js +0 -1
  391. package/build/docs/assets/js/d38c25bf.1430a667.js +0 -1
  392. package/build/docs/assets/js/d3d37933.d7f15fe8.js +0 -1
  393. package/build/docs/assets/js/d71e6c8a.f4306e16.js +0 -1
  394. package/build/docs/assets/js/d9084ecb.61eb0649.js +0 -1
  395. package/build/docs/assets/js/de3ee31a.0992aa16.js +0 -1
  396. package/build/docs/assets/js/e0db4c79.6fcade57.js +0 -1
  397. package/build/docs/assets/js/e4ad89b2.9ca87caa.js +0 -1
  398. package/build/docs/assets/js/e876cff6.7c7560ed.js +0 -1
  399. package/build/docs/assets/js/e917d7c9.b54a542b.js +0 -1
  400. package/build/docs/assets/js/e9f568e8.b96fc01f.js +0 -1
  401. package/build/docs/assets/js/ea5986e4.ff0e5037.js +0 -1
  402. package/build/docs/assets/js/eb84a108.be29052f.js +0 -1
  403. package/build/docs/assets/js/ed6a4585.c5d8bf90.js +0 -1
  404. package/build/docs/assets/js/f4180cff.dae060fd.js +0 -1
  405. package/build/docs/assets/js/f7084923.91b0c545.js +0 -1
  406. package/build/docs/assets/js/f72a372a.4118877c.js +0 -1
  407. package/build/docs/assets/js/f72c86d0.d74270de.js +0 -1
  408. package/build/docs/assets/js/f8fa0321.c4c3a620.js +0 -1
  409. package/build/docs/assets/js/fc7c782f.bc0ad1ab.js +0 -1
  410. package/build/docs/assets/js/fce396bf.9f7f818c.js +0 -1
  411. package/build/docs/assets/js/fdb0d9e1.d2893206.js +0 -1
  412. package/build/docs/assets/js/fed4ae4f.e788c07f.js +0 -1
  413. package/build/docs/assets/js/fefe9566.113c5960.js +0 -1
  414. package/build/docs/assets/js/ff0bf96e.e457283e.js +0 -1
  415. package/build/docs/assets/js/ff6d65a9.39317a08.js +0 -1
  416. package/build/docs/assets/js/main.7d445fc8.js +0 -2
  417. package/build/docs/assets/js/main.7d445fc8.js.LICENSE.txt +0 -51
  418. package/build/docs/assets/js/runtime~main.5c8a1e20.js +0 -1
  419. package/build/docs/img/favicon.ico +0 -0
  420. package/build/docs/img/logo.jpeg +0 -0
  421. package/build/docs/img/logo.svg +0 -22
  422. package/build/docs/img/readme.md +0 -1
  423. package/build/docs/index.html +0 -102
  424. package/build/docs/readme.md +0 -1
  425. package/build/docs/sitemap.xml +0 -1
  426. package/build/docs/usage-guide/index.html +0 -580
  427. package/demo/6879.3434f1e9.iframe.bundle.js.br +0 -0
  428. package/demo/6879.3434f1e9.iframe.bundle.js.gz +0 -0
  429. package/demo/docs/6879.3434f1e9.iframe.bundle.js.br +0 -0
  430. package/demo/docs/6879.3434f1e9.iframe.bundle.js.gz +0 -0
  431. package/demo/docs/main.703b0e4c.iframe.bundle.js +0 -5
  432. package/demo/docs/main.703b0e4c.iframe.bundle.js.br +0 -0
  433. package/demo/docs/main.703b0e4c.iframe.bundle.js.gz +0 -0
  434. package/demo/main.703b0e4c.iframe.bundle.js +0 -5
  435. package/demo/main.703b0e4c.iframe.bundle.js.br +0 -0
  436. package/demo/main.703b0e4c.iframe.bundle.js.gz +0 -0
@@ -0,0 +1,47 @@
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 guest_host_context_exports = {};
20
+ __export(guest_host_context_exports, {
21
+ resolveGuestOpenHistory: () => resolveGuestOpenHistory,
22
+ resolveNestedGuestFrameOptions: () => resolveNestedGuestFrameOptions
23
+ });
24
+ module.exports = __toCommonJS(guest_host_context_exports);
25
+ var import_config = require("../app-config/config.js");
26
+ var import_history = require("../history.js");
27
+ var import_guest = require("./guest.js");
28
+ const resolveGuestOpenHistory = (explicitHistory) => {
29
+ const hostUsesParentHistory = (0, import_config.getAppConfigValue)(
30
+ "useParentHistory",
31
+ true
32
+ );
33
+ if (hostUsesParentHistory && typeof window !== "undefined" && window.self !== window.top && import_guest.CMicroAppGuest.isInitialized()) {
34
+ return import_guest.CMicroAppGuest.getInstance().getProps().history;
35
+ }
36
+ return explicitHistory ?? import_history.browserHistory;
37
+ };
38
+ const resolveNestedGuestFrameOptions = (userFrameOptions) => {
39
+ if (typeof window === "undefined" || window.self === window.top) {
40
+ return userFrameOptions;
41
+ }
42
+ const versionSegment = window.location.hostname === "localhost" ? "latest" : window.emui?.version?.match(/^(\d+\.\d+)/)?.[1] ?? "latest";
43
+ return {
44
+ src: `${window.location.origin}/${versionSegment}/frame.html`,
45
+ ...userFrameOptions
46
+ };
47
+ };
@@ -506,11 +506,12 @@ class CMicroAppGuest {
506
506
  /**
507
507
  * removes scripting object from child microapp use
508
508
  * @param objectId unique id of the scripting object
509
+ * @param guestId optional guest id when removing a guest-scoped object
509
510
  */
510
- removeScriptingObject(objectId) {
511
+ removeScriptingObject(objectId, guestId) {
511
512
  if (this.#appBridge) {
512
- this.#appBridge.removeScriptingObject(objectId);
513
+ this.#appBridge.removeScriptingObject(objectId, guestId);
513
514
  }
514
- this.#ssfHostRef.removeScriptingObject(objectId);
515
+ this.#ssfHostRef.removeScriptingObject(objectId, guestId);
515
516
  }
516
517
  }
@@ -254,11 +254,12 @@ class CMicroAppHost {
254
254
  /**
255
255
  * removes scripting object from child microapp use
256
256
  * @param objectId unique id of the scripting object
257
+ * @param guestId optional guest id when removing a guest-scoped object
257
258
  */
258
- removeScriptingObject(objectId) {
259
+ removeScriptingObject(objectId, guestId) {
259
260
  if (this.#appBridge) {
260
- this.#appBridge.removeScriptingObject(objectId);
261
+ this.#appBridge.removeScriptingObject(objectId, guestId);
261
262
  }
262
- this.#ssfHostRef.removeScriptingObject(objectId);
263
+ this.#ssfHostRef.removeScriptingObject(objectId, guestId);
263
264
  }
264
265
  }
@@ -58,6 +58,7 @@ const getVersionedPath = (path) => {
58
58
  majorMinorVersion && majorMinorVersion[0] || "latest"
59
59
  );
60
60
  };
61
+ const appendTrailingSlash = (path) => path?.replace?.(/\/?$/, "/");
61
62
  const getMicroFrontEndAppConfig = (appInfo) => {
62
63
  const microFEAppConfig = (0, import_config.getAppConfigValue)(
63
64
  `microFrontendApps.${appInfo.id}`
@@ -84,6 +85,8 @@ const getMicroFrontEndAppConfig = (appInfo) => {
84
85
  microFEConfig.hostUrl = (0, import_helpers.convertRelativeToAbsoluteUrl)(
85
86
  microFEConfig.hostUrl.replace(/\/?$/, "/")
86
87
  );
87
- microFEConfig.manifestPath = getVersionedPath(microFEConfig.manifestPath);
88
+ microFEConfig.manifestPath = appendTrailingSlash(
89
+ getVersionedPath(microFEConfig.manifestPath)
90
+ );
88
91
  return microFEConfig;
89
92
  };
@@ -25,6 +25,7 @@ __export(module_so_exports, {
25
25
  module.exports = __toCommonJS(module_so_exports);
26
26
  var import_ssf_host = require("@elliemae/ssf-host");
27
27
  var import_index = require("./index.js");
28
+ var import_guest_host_context = require("./guest-host-context.js");
28
29
  var import_const = require("../../view/micro-app/const.js");
29
30
  const LOG_LEVEL_METHOD = {
30
31
  DEBUG: "debug",
@@ -84,7 +85,10 @@ class GuestModule extends import_ssf_host.ScriptingObject {
84
85
  };
85
86
  }
86
87
  const createGuestModule = (guestId, params = {}, overrides = {}) => {
87
- const mod = new GuestModule(guestId, params);
88
+ const mod = new GuestModule(guestId, {
89
+ ...params,
90
+ history: (0, import_guest_host_context.resolveGuestOpenHistory)(params.history)
91
+ });
88
92
  Object.assign(mod, overrides);
89
93
  return mod;
90
94
  };
@@ -0,0 +1,27 @@
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 guest_test_utils_exports = {};
20
+ __export(guest_test_utils_exports, {
21
+ resetCMicroAppGuestInstance: () => resetCMicroAppGuestInstance
22
+ });
23
+ module.exports = __toCommonJS(guest_test_utils_exports);
24
+ var import_guest = require("../guest.js");
25
+ const resetCMicroAppGuestInstance = () => {
26
+ Reflect.set(import_guest.CMicroAppGuest, "instance", null);
27
+ };
@@ -41,6 +41,7 @@ var import_app_bridge = require("../utils/micro-frontend/app-bridge.js");
41
41
  var import_ssf_host2 = require("../utils/micro-frontend/ssf-host.js");
42
42
  var import_actions = require("../data/wait-message/actions.js");
43
43
  var import_micro_frontend = require("../utils/micro-frontend/index.js");
44
+ var import_guest_host_context = require("../utils/micro-frontend/guest-host-context.js");
44
45
  const Div = import_styled_components.default.div`
45
46
  display: flex;
46
47
  width: 100%;
@@ -48,6 +49,7 @@ const Div = import_styled_components.default.div`
48
49
  flex-direction: column;
49
50
  overflow: hidden;
50
51
  `;
52
+ const isAbortError = (error) => error instanceof DOMException ? error.name === "AbortError" : error instanceof Error && error.name === "AbortError";
51
53
  const useAppRenderer = (props) => {
52
54
  const {
53
55
  id,
@@ -58,13 +60,22 @@ const useAppRenderer = (props) => {
58
60
  onUnloadComplete,
59
61
  containerId,
60
62
  ssfAppOptions,
61
- disableWaitMessage = false
63
+ disableWaitMessage = false,
64
+ frameOptions: userFrameOptions
62
65
  } = props;
63
66
  const dispatch = (0, import_react_redux.useDispatch)();
64
67
  const stableSsfAppOptions = (0, import_react.useMemo)(
65
68
  () => ssfAppOptions ?? {},
66
69
  [ssfAppOptions]
67
70
  );
71
+ const guestHistory = (0, import_react.useMemo)(
72
+ () => (0, import_guest_host_context.resolveGuestOpenHistory)(history),
73
+ [history]
74
+ );
75
+ const resolvedFrameOptions = (0, import_react.useMemo)(
76
+ () => (0, import_guest_host_context.resolveNestedGuestFrameOptions)(userFrameOptions),
77
+ [userFrameOptions]
78
+ );
68
79
  const getConfig = (0, import_react.useCallback)(
69
80
  () => (0, import_micro_frontend.getMicroFrontEndAppConfig)({
70
81
  id
@@ -77,8 +88,10 @@ const useAppRenderer = (props) => {
77
88
  let ssfHost = null;
78
89
  let unloadInProgress = Promise.resolve();
79
90
  let instanceId = null;
91
+ const abortController = new AbortController();
80
92
  (async () => {
81
93
  await unloadInProgress;
94
+ if (!isMounted || abortController.signal.aborted) return;
82
95
  if (!disableWaitMessage) {
83
96
  dispatch(import_actions.waitMessage.open());
84
97
  }
@@ -101,7 +114,7 @@ const useAppRenderer = (props) => {
101
114
  throw new Error(`Failed to load ${id}, SSFHost not initialized`);
102
115
  if (!hostUrl)
103
116
  throw new Error(`Failed to load ${id}, hostUrl not configured`);
104
- if (isMounted) {
117
+ if (isMounted && !abortController.signal.aborted) {
105
118
  const { searchParams, ...guestOptions } = mergedSsfAppOptions;
106
119
  const ssfUrlObj = new URL(hostUrl);
107
120
  if (initialRoute) {
@@ -133,18 +146,25 @@ const useAppRenderer = (props) => {
133
146
  appBridge = await (0, import_app_bridge.getAppBridge)();
134
147
  if (!appBridge)
135
148
  throw new Error(`Failed to load ${id}, AppBridge not initialized`);
136
- if (isMounted) {
149
+ if (isMounted && !abortController.signal.aborted) {
137
150
  instanceId = await appBridge.openApp({
138
151
  id,
139
152
  selfInitialize: configSelfInitialize,
140
153
  frameOptions: {
154
+ ...resolvedFrameOptions,
141
155
  containerId,
142
- queryParams: (0, import_pui_logrocket.buildLogRocketQueryParams)()
156
+ queryParams: (0, import_pui_logrocket.buildLogRocketQueryParams)(),
157
+ signal: abortController.signal
143
158
  },
144
- history,
159
+ history: guestHistory,
145
160
  homeRoute,
146
161
  initialRoute
147
162
  });
163
+ if (!isMounted || abortController.signal.aborted) {
164
+ await appBridge.closeApp(instanceId);
165
+ instanceId = null;
166
+ return;
167
+ }
148
168
  setTimeout(() => {
149
169
  try {
150
170
  onLoadComplete?.(instanceId);
@@ -158,6 +178,7 @@ const useAppRenderer = (props) => {
158
178
  }
159
179
  }
160
180
  } catch (ex) {
181
+ if (isAbortError(ex)) return;
161
182
  (0, import_micro_frontend.getLogger)().error({
162
183
  message: `Failed to load ${id}`,
163
184
  exception: ex
@@ -167,7 +188,6 @@ const useAppRenderer = (props) => {
167
188
  unloadInProgress = appBridge.closeApp(instanceId);
168
189
  if (ssfHost && instanceId)
169
190
  unloadInProgress = Promise.resolve(ssfHost.unloadGuest(instanceId));
170
- throw ex;
171
191
  } finally {
172
192
  if (!disableWaitMessage) {
173
193
  dispatch(import_actions.waitMessage.close());
@@ -175,6 +195,7 @@ const useAppRenderer = (props) => {
175
195
  }
176
196
  })();
177
197
  return () => {
198
+ abortController.abort();
178
199
  isMounted = false;
179
200
  if (ssfHost && instanceId) {
180
201
  unloadInProgress = Promise.resolve(ssfHost.unloadGuest(instanceId));
@@ -203,7 +224,7 @@ const useAppRenderer = (props) => {
203
224
  }, [
204
225
  containerId,
205
226
  dispatch,
206
- history,
227
+ guestHistory,
207
228
  homeRoute,
208
229
  initialRoute,
209
230
  id,
@@ -211,7 +232,8 @@ const useAppRenderer = (props) => {
211
232
  onUnloadComplete,
212
233
  getConfig,
213
234
  stableSsfAppOptions,
214
- disableWaitMessage
235
+ disableWaitMessage,
236
+ resolvedFrameOptions
215
237
  ]);
216
238
  };
217
239
  const GuestMicroApp = (0, import_react.memo)(
@@ -156,7 +156,7 @@ exports[`MicroIFrameApp should close previous instance of app before loading new
156
156
 
157
157
 
158
158
  <base
159
- href="http://localhost:3111/loan/latest"
159
+ href="http://localhost:3111/loan/latest/"
160
160
  />
161
161
  <link
162
162
  crossorigin="anonymous"
@@ -286,7 +286,7 @@ exports[`MicroIFrameApp should open loanapp and call init and mount methods 1`]
286
286
 
287
287
 
288
288
  <base
289
- href="http://localhost:3111/loan/latest"
289
+ href="http://localhost:3111/loan/latest/"
290
290
  />
291
291
  <link
292
292
  crossorigin="anonymous"
@@ -0,0 +1,27 @@
1
+ import { getAppConfigValue } from "../app-config/config.js";
2
+ import { browserHistory } from "../history.js";
3
+ import { CMicroAppGuest } from "./guest.js";
4
+ const resolveGuestOpenHistory = (explicitHistory) => {
5
+ const hostUsesParentHistory = getAppConfigValue(
6
+ "useParentHistory",
7
+ true
8
+ );
9
+ if (hostUsesParentHistory && typeof window !== "undefined" && window.self !== window.top && CMicroAppGuest.isInitialized()) {
10
+ return CMicroAppGuest.getInstance().getProps().history;
11
+ }
12
+ return explicitHistory ?? browserHistory;
13
+ };
14
+ const resolveNestedGuestFrameOptions = (userFrameOptions) => {
15
+ if (typeof window === "undefined" || window.self === window.top) {
16
+ return userFrameOptions;
17
+ }
18
+ const versionSegment = window.location.hostname === "localhost" ? "latest" : window.emui?.version?.match(/^(\d+\.\d+)/)?.[1] ?? "latest";
19
+ return {
20
+ src: `${window.location.origin}/${versionSegment}/frame.html`,
21
+ ...userFrameOptions
22
+ };
23
+ };
24
+ export {
25
+ resolveGuestOpenHistory,
26
+ resolveNestedGuestFrameOptions
27
+ };
@@ -473,12 +473,13 @@ class CMicroAppGuest {
473
473
  /**
474
474
  * removes scripting object from child microapp use
475
475
  * @param objectId unique id of the scripting object
476
+ * @param guestId optional guest id when removing a guest-scoped object
476
477
  */
477
- removeScriptingObject(objectId) {
478
+ removeScriptingObject(objectId, guestId) {
478
479
  if (this.#appBridge) {
479
- this.#appBridge.removeScriptingObject(objectId);
480
+ this.#appBridge.removeScriptingObject(objectId, guestId);
480
481
  }
481
- this.#ssfHostRef.removeScriptingObject(objectId);
482
+ this.#ssfHostRef.removeScriptingObject(objectId, guestId);
482
483
  }
483
484
  }
484
485
  export {
@@ -239,12 +239,13 @@ class CMicroAppHost {
239
239
  /**
240
240
  * removes scripting object from child microapp use
241
241
  * @param objectId unique id of the scripting object
242
+ * @param guestId optional guest id when removing a guest-scoped object
242
243
  */
243
- removeScriptingObject(objectId) {
244
+ removeScriptingObject(objectId, guestId) {
244
245
  if (this.#appBridge) {
245
- this.#appBridge.removeScriptingObject(objectId);
246
+ this.#appBridge.removeScriptingObject(objectId, guestId);
246
247
  }
247
- this.#ssfHostRef.removeScriptingObject(objectId);
248
+ this.#ssfHostRef.removeScriptingObject(objectId, guestId);
248
249
  }
249
250
  }
250
251
  export {
@@ -21,6 +21,7 @@ const getVersionedPath = (path) => {
21
21
  majorMinorVersion && majorMinorVersion[0] || "latest"
22
22
  );
23
23
  };
24
+ const appendTrailingSlash = (path) => path?.replace?.(/\/?$/, "/");
24
25
  const getMicroFrontEndAppConfig = (appInfo) => {
25
26
  const microFEAppConfig = getAppConfigValue(
26
27
  `microFrontendApps.${appInfo.id}`
@@ -47,7 +48,9 @@ const getMicroFrontEndAppConfig = (appInfo) => {
47
48
  microFEConfig.hostUrl = convertRelativeToAbsoluteUrl(
48
49
  microFEConfig.hostUrl.replace(/\/?$/, "/")
49
50
  );
50
- microFEConfig.manifestPath = getVersionedPath(microFEConfig.manifestPath);
51
+ microFEConfig.manifestPath = appendTrailingSlash(
52
+ getVersionedPath(microFEConfig.manifestPath)
53
+ );
51
54
  return microFEConfig;
52
55
  };
53
56
  export {
@@ -1,5 +1,6 @@
1
1
  import { ScriptingObject, Event } from "@elliemae/ssf-host";
2
2
  import { getMicroFrontEndAppConfig } from "./index.js";
3
+ import { resolveGuestOpenHistory } from "./guest-host-context.js";
3
4
  import { APP_CONTAINER_ID_PREFIX } from "../../view/micro-app/const.js";
4
5
  const LOG_LEVEL_METHOD = {
5
6
  DEBUG: "debug",
@@ -59,7 +60,10 @@ class GuestModule extends ScriptingObject {
59
60
  };
60
61
  }
61
62
  const createGuestModule = (guestId, params = {}, overrides = {}) => {
62
- const mod = new GuestModule(guestId, params);
63
+ const mod = new GuestModule(guestId, {
64
+ ...params,
65
+ history: resolveGuestOpenHistory(params.history)
66
+ });
63
67
  Object.assign(mod, overrides);
64
68
  return mod;
65
69
  };
@@ -0,0 +1,7 @@
1
+ import { CMicroAppGuest } from "../guest.js";
2
+ const resetCMicroAppGuestInstance = () => {
3
+ Reflect.set(CMicroAppGuest, "instance", null);
4
+ };
5
+ export {
6
+ resetCMicroAppGuestInstance
7
+ };
@@ -13,6 +13,10 @@ import {
13
13
  getLogger,
14
14
  getMicroFrontEndAppConfig
15
15
  } from "../utils/micro-frontend/index.js";
16
+ import {
17
+ resolveGuestOpenHistory,
18
+ resolveNestedGuestFrameOptions
19
+ } from "../utils/micro-frontend/guest-host-context.js";
16
20
  const Div = styled.div`
17
21
  display: flex;
18
22
  width: 100%;
@@ -20,6 +24,7 @@ const Div = styled.div`
20
24
  flex-direction: column;
21
25
  overflow: hidden;
22
26
  `;
27
+ const isAbortError = (error) => error instanceof DOMException ? error.name === "AbortError" : error instanceof Error && error.name === "AbortError";
23
28
  const useAppRenderer = (props) => {
24
29
  const {
25
30
  id,
@@ -30,13 +35,22 @@ const useAppRenderer = (props) => {
30
35
  onUnloadComplete,
31
36
  containerId,
32
37
  ssfAppOptions,
33
- disableWaitMessage = false
38
+ disableWaitMessage = false,
39
+ frameOptions: userFrameOptions
34
40
  } = props;
35
41
  const dispatch = useDispatch();
36
42
  const stableSsfAppOptions = useMemo(
37
43
  () => ssfAppOptions ?? {},
38
44
  [ssfAppOptions]
39
45
  );
46
+ const guestHistory = useMemo(
47
+ () => resolveGuestOpenHistory(history),
48
+ [history]
49
+ );
50
+ const resolvedFrameOptions = useMemo(
51
+ () => resolveNestedGuestFrameOptions(userFrameOptions),
52
+ [userFrameOptions]
53
+ );
40
54
  const getConfig = useCallback(
41
55
  () => getMicroFrontEndAppConfig({
42
56
  id
@@ -49,8 +63,10 @@ const useAppRenderer = (props) => {
49
63
  let ssfHost = null;
50
64
  let unloadInProgress = Promise.resolve();
51
65
  let instanceId = null;
66
+ const abortController = new AbortController();
52
67
  (async () => {
53
68
  await unloadInProgress;
69
+ if (!isMounted || abortController.signal.aborted) return;
54
70
  if (!disableWaitMessage) {
55
71
  dispatch(waitMessage.open());
56
72
  }
@@ -73,7 +89,7 @@ const useAppRenderer = (props) => {
73
89
  throw new Error(`Failed to load ${id}, SSFHost not initialized`);
74
90
  if (!hostUrl)
75
91
  throw new Error(`Failed to load ${id}, hostUrl not configured`);
76
- if (isMounted) {
92
+ if (isMounted && !abortController.signal.aborted) {
77
93
  const { searchParams, ...guestOptions } = mergedSsfAppOptions;
78
94
  const ssfUrlObj = new URL(hostUrl);
79
95
  if (initialRoute) {
@@ -105,18 +121,25 @@ const useAppRenderer = (props) => {
105
121
  appBridge = await getAppBridge();
106
122
  if (!appBridge)
107
123
  throw new Error(`Failed to load ${id}, AppBridge not initialized`);
108
- if (isMounted) {
124
+ if (isMounted && !abortController.signal.aborted) {
109
125
  instanceId = await appBridge.openApp({
110
126
  id,
111
127
  selfInitialize: configSelfInitialize,
112
128
  frameOptions: {
129
+ ...resolvedFrameOptions,
113
130
  containerId,
114
- queryParams: buildLogRocketQueryParams()
131
+ queryParams: buildLogRocketQueryParams(),
132
+ signal: abortController.signal
115
133
  },
116
- history,
134
+ history: guestHistory,
117
135
  homeRoute,
118
136
  initialRoute
119
137
  });
138
+ if (!isMounted || abortController.signal.aborted) {
139
+ await appBridge.closeApp(instanceId);
140
+ instanceId = null;
141
+ return;
142
+ }
120
143
  setTimeout(() => {
121
144
  try {
122
145
  onLoadComplete?.(instanceId);
@@ -130,6 +153,7 @@ const useAppRenderer = (props) => {
130
153
  }
131
154
  }
132
155
  } catch (ex) {
156
+ if (isAbortError(ex)) return;
133
157
  getLogger().error({
134
158
  message: `Failed to load ${id}`,
135
159
  exception: ex
@@ -139,7 +163,6 @@ const useAppRenderer = (props) => {
139
163
  unloadInProgress = appBridge.closeApp(instanceId);
140
164
  if (ssfHost && instanceId)
141
165
  unloadInProgress = Promise.resolve(ssfHost.unloadGuest(instanceId));
142
- throw ex;
143
166
  } finally {
144
167
  if (!disableWaitMessage) {
145
168
  dispatch(waitMessage.close());
@@ -147,6 +170,7 @@ const useAppRenderer = (props) => {
147
170
  }
148
171
  })();
149
172
  return () => {
173
+ abortController.abort();
150
174
  isMounted = false;
151
175
  if (ssfHost && instanceId) {
152
176
  unloadInProgress = Promise.resolve(ssfHost.unloadGuest(instanceId));
@@ -175,7 +199,7 @@ const useAppRenderer = (props) => {
175
199
  }, [
176
200
  containerId,
177
201
  dispatch,
178
- history,
202
+ guestHistory,
179
203
  homeRoute,
180
204
  initialRoute,
181
205
  id,
@@ -183,7 +207,8 @@ const useAppRenderer = (props) => {
183
207
  onUnloadComplete,
184
208
  getConfig,
185
209
  stableSsfAppOptions,
186
- disableWaitMessage
210
+ disableWaitMessage,
211
+ resolvedFrameOptions
187
212
  ]);
188
213
  };
189
214
  const GuestMicroApp = memo(
@@ -156,7 +156,7 @@ exports[`MicroIFrameApp should close previous instance of app before loading new
156
156
 
157
157
 
158
158
  <base
159
- href="http://localhost:3111/loan/latest"
159
+ href="http://localhost:3111/loan/latest/"
160
160
  />
161
161
  <link
162
162
  crossorigin="anonymous"
@@ -286,7 +286,7 @@ exports[`MicroIFrameApp should open loanapp and call init and mount methods 1`]
286
286
 
287
287
 
288
288
  <base
289
- href="http://localhost:3111/loan/latest"
289
+ href="http://localhost:3111/loan/latest/"
290
290
  />
291
291
  <link
292
292
  crossorigin="anonymous"
@@ -0,0 +1,40 @@
1
+ import type { History } from 'history';
2
+ type NestedGuestFrameOptions = {
3
+ src?: string;
4
+ };
5
+ /**
6
+ * History object to use when **opening** a child guest via {@link GuestMicroApp}.
7
+ * {@link createGuestModule} applies the same resolution for module scripting
8
+ * objects automatically.
9
+ *
10
+ * This only affects what the **host** passes into app-bridge `openApp`. The
11
+ * **child guest** still decides its final router history during
12
+ * {@link CMicroAppGuest.initialize} from **its own** `app.config.json`
13
+ * `useParentHistory` flag:
14
+ *
15
+ * - `useParentHistory: true` (default) — uses the history received from the host
16
+ * - `useParentHistory: false` — uses independent `memoryHistory` inside the
17
+ * iframe and ignores the host-provided history
18
+ *
19
+ * When this host runs inside a parent iframe and shares parent history itself
20
+ * (`useParentHistory: true`, the default), the exported `browserHistory`
21
+ * singleton tracks the iframe shell URL (e.g. `/latest/frame.html`), not the
22
+ * shared grandparent route (e.g. `/prospects/incomplete-apps`). In that case
23
+ * the history bound during {@link CMicroAppGuest.initialize} is returned
24
+ * automatically so shared-history children receive the correct object.
25
+ *
26
+ * Hosts with `useParentHistory: false` are unchanged: callers keep passing
27
+ * `explicitHistory ?? browserHistory`, and guests that want their own URL space
28
+ * opt out via their own config.
29
+ * @param explicitHistory
30
+ */
31
+ export declare const resolveGuestOpenHistory: (explicitHistory?: History) => History;
32
+ /**
33
+ * Frame options for nested hosts whose bundled frame.html URL targets the
34
+ * guest dev-server origin while JS executes in the parent iframe document.
35
+ * App Bridge rewrites cross-origin frame shells; this supplies an explicit
36
+ * same-origin src when callers pass custom frameOptions.
37
+ * @param userFrameOptions
38
+ */
39
+ export declare const resolveNestedGuestFrameOptions: (userFrameOptions?: NestedGuestFrameOptions) => NestedGuestFrameOptions | undefined;
40
+ export {};
@@ -134,7 +134,8 @@ export declare class CMicroAppGuest<AppObjects extends ScriptingObjects = Partia
134
134
  /**
135
135
  * removes scripting object from child microapp use
136
136
  * @param objectId unique id of the scripting object
137
+ * @param guestId optional guest id when removing a guest-scoped object
137
138
  */
138
- removeScriptingObject(objectId: Extract<keyof AppObjects, string>): void;
139
+ removeScriptingObject(objectId: Extract<keyof AppObjects, string>, guestId?: string): void;
139
140
  }
140
141
  export {};
@@ -116,7 +116,8 @@ export declare class CMicroAppHost<AppObjects extends ScriptingObjects = Partial
116
116
  /**
117
117
  * removes scripting object from child microapp use
118
118
  * @param objectId unique id of the scripting object
119
+ * @param guestId optional guest id when removing a guest-scoped object
119
120
  */
120
- removeScriptingObject(objectId: Extract<keyof AppObjects, string>): void;
121
+ removeScriptingObject(objectId: Extract<keyof AppObjects, string>, guestId?: string): void;
121
122
  }
122
123
  export {};
@@ -73,14 +73,16 @@ export type ModuleOverrides = {
73
73
  *
74
74
  * Internally calls {@link buildModuleParams} to merge the app config
75
75
  * values (hostUrl, manifestPath, homeRoute) with host-provided values
76
- * (theme, history, initialRoute).
76
+ * (theme, history, initialRoute). When nested under a parent iframe,
77
+ * {@link resolveGuestOpenHistory} is applied to `params.history` automatically
78
+ * (same behavior as {@link GuestMicroApp}).
77
79
  *
78
- * Register the returned object via {@link CMicroAppHost.addScriptingObject}
79
- * or {@link CMicroAppGuest.addScriptingObject} (not directly on the app
80
- * bridge) so it is added to both the App Bridge and the SSF Host.
80
+ * Register the returned object via {@link CMicroApp.addScriptingObject}
81
+ * (not directly on the app bridge) so it is added to both the App Bridge
82
+ * and the SSF Host.
81
83
  * @param guestId - App id as defined in app.config.json (e.g. 'loanapp')
82
84
  * @param params - Host-provided values (theme, history, initialRoute, custom keys)
83
85
  * @param overrides - Method overrides / additions (e.g. custom getCapabilities)
84
- * @returns IModule scripting object ready for CMicroAppHost/CMicroApp.addScriptingObject()
86
+ * @returns IModule scripting object ready for {@link CMicroApp.addScriptingObject}
85
87
  */
86
88
  export declare const createGuestModule: (guestId: string, params?: HostProvidedParams, overrides?: ModuleOverrides) => IModule;
@@ -0,0 +1,2 @@
1
+ /** Clears the guest singleton between tests. */
2
+ export declare const resetCMicroAppGuestInstance: () => void;