@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.
- package/demo/{6879.3434f1e9.iframe.bundle.js → 1080.92f6b67a.iframe.bundle.js} +480 -480
- package/demo/1080.92f6b67a.iframe.bundle.js.br +0 -0
- package/demo/1080.92f6b67a.iframe.bundle.js.gz +0 -0
- package/demo/docs/{6879.3434f1e9.iframe.bundle.js → 1080.92f6b67a.iframe.bundle.js} +480 -480
- package/demo/docs/1080.92f6b67a.iframe.bundle.js.br +0 -0
- package/demo/docs/1080.92f6b67a.iframe.bundle.js.gz +0 -0
- package/demo/docs/iframe.html +1 -1
- package/demo/docs/index.html +1 -1
- package/demo/docs/{main.f4b9fb997236ae69d894.manager.bundle.js → main.cfd2e2085f77fe383f8d.manager.bundle.js} +1 -1
- package/demo/docs/{main.f4b9fb997236ae69d894.manager.bundle.js.br → main.cfd2e2085f77fe383f8d.manager.bundle.js.br} +0 -0
- package/demo/docs/{main.f4b9fb997236ae69d894.manager.bundle.js.gz → main.cfd2e2085f77fe383f8d.manager.bundle.js.gz} +0 -0
- package/demo/docs/main.f92b110f.iframe.bundle.js +5 -0
- package/demo/docs/main.f92b110f.iframe.bundle.js.br +0 -0
- package/demo/docs/main.f92b110f.iframe.bundle.js.gz +0 -0
- package/demo/docs/project.json +1 -1
- package/demo/iframe.html +1 -1
- package/demo/index.html +1 -1
- package/demo/{main.f4b9fb997236ae69d894.manager.bundle.js → main.cfd2e2085f77fe383f8d.manager.bundle.js} +1 -1
- package/demo/{main.f4b9fb997236ae69d894.manager.bundle.js.br → main.cfd2e2085f77fe383f8d.manager.bundle.js.br} +0 -0
- package/demo/{main.f4b9fb997236ae69d894.manager.bundle.js.gz → main.cfd2e2085f77fe383f8d.manager.bundle.js.gz} +0 -0
- package/demo/main.f92b110f.iframe.bundle.js +5 -0
- package/demo/main.f92b110f.iframe.bundle.js.br +0 -0
- package/demo/main.f92b110f.iframe.bundle.js.gz +0 -0
- package/demo/project.json +1 -1
- package/dist/cjs/utils/micro-frontend/guest-host-context.js +47 -0
- package/dist/cjs/utils/micro-frontend/guest.js +4 -3
- package/dist/cjs/utils/micro-frontend/host.js +4 -3
- package/dist/cjs/utils/micro-frontend/index.js +4 -1
- package/dist/cjs/utils/micro-frontend/module-so.js +5 -1
- package/dist/cjs/utils/micro-frontend/tests/guest-test-utils.js +27 -0
- package/dist/cjs/view/guest-microapp.js +30 -8
- package/dist/cjs/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +2 -2
- package/dist/esm/utils/micro-frontend/guest-host-context.js +27 -0
- package/dist/esm/utils/micro-frontend/guest.js +4 -3
- package/dist/esm/utils/micro-frontend/host.js +4 -3
- package/dist/esm/utils/micro-frontend/index.js +4 -1
- package/dist/esm/utils/micro-frontend/module-so.js +5 -1
- package/dist/esm/utils/micro-frontend/tests/guest-test-utils.js +7 -0
- package/dist/esm/view/guest-microapp.js +33 -8
- package/dist/esm/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +2 -2
- package/dist/types/lib/utils/micro-frontend/guest-host-context.d.ts +40 -0
- package/dist/types/lib/utils/micro-frontend/guest.d.ts +2 -1
- package/dist/types/lib/utils/micro-frontend/host.d.ts +2 -1
- package/dist/types/lib/utils/micro-frontend/module-so.d.ts +7 -5
- package/dist/types/lib/utils/micro-frontend/tests/guest-host-context.test.d.ts +1 -0
- package/dist/types/lib/utils/micro-frontend/tests/guest-test-utils.d.ts +2 -0
- package/dist/types/lib/view/guest-microapp.d.ts +12 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/build/docs/404.html +0 -16
- package/build/docs/api/classes/Analytics/index.html +0 -270
- package/build/docs/api/classes/CMicroAppGuest/index.html +0 -261
- package/build/docs/api/classes/CMicroAppHost/index.html +0 -346
- package/build/docs/api/classes/ErrorBoundary/index.html +0 -354
- package/build/docs/api/classes/GuestModule/index.html +0 -148
- package/build/docs/api/functions/AppRoot/index.html +0 -27
- package/build/docs/api/functions/Autocomplete/index.html +0 -22
- package/build/docs/api/functions/CheckBox/index.html +0 -22
- package/build/docs/api/functions/ComboBox/index.html +0 -27
- package/build/docs/api/functions/ComboBoxV3/index.html +0 -22
- package/build/docs/api/functions/ConnectForm/index.html +0 -22
- package/build/docs/api/functions/DateInput/index.html +0 -22
- package/build/docs/api/functions/DatePicker/index.html +0 -27
- package/build/docs/api/functions/DateRangePicker/index.html +0 -22
- package/build/docs/api/functions/DateTimePicker/index.html +0 -22
- package/build/docs/api/functions/Form/index.html +0 -34
- package/build/docs/api/functions/FormItemLayout/index.html +0 -22
- package/build/docs/api/functions/FormLayoutBlockItem/index.html +0 -22
- package/build/docs/api/functions/FormSubmitButton/index.html +0 -22
- package/build/docs/api/functions/InputMask/index.html +0 -22
- package/build/docs/api/functions/InputText/index.html +0 -22
- package/build/docs/api/functions/LargeTextBox/index.html +0 -22
- package/build/docs/api/functions/MaskedInputText/index.html +0 -22
- package/build/docs/api/functions/Page/index.html +0 -22
- package/build/docs/api/functions/Radio/index.html +0 -22
- package/build/docs/api/functions/RadioGroup/index.html +0 -22
- package/build/docs/api/functions/RegisterService/index.html +0 -27
- package/build/docs/api/functions/RenderWithStateAddOns/index.html +0 -22
- package/build/docs/api/functions/RequireAuth/index.html +0 -28
- package/build/docs/api/functions/SessionTimeout/index.html +0 -19
- package/build/docs/api/functions/TextBox/index.html +0 -27
- package/build/docs/api/functions/Toggle/index.html +0 -22
- package/build/docs/api/functions/authSaga/index.html +0 -19
- package/build/docs/api/functions/authorize/index.html +0 -44
- package/build/docs/api/functions/buildModuleParams/index.html +0 -31
- package/build/docs/api/functions/cleanup/index.html +0 -20
- package/build/docs/api/functions/configureStore/index.html +0 -56
- package/build/docs/api/functions/createGuestModule/index.html +0 -39
- package/build/docs/api/functions/createManager/index.html +0 -41
- package/build/docs/api/functions/enableReactAppForHostIntegration/index.html +0 -22
- package/build/docs/api/functions/fetchHostAppData/index.html +0 -24
- package/build/docs/api/functions/fetchUserSettings/index.html +0 -22
- package/build/docs/api/functions/getApiActionCreator/index.html +0 -30
- package/build/docs/api/functions/getAppConfig/index.html +0 -19
- package/build/docs/api/functions/getAppConfigValue/index.html +0 -35
- package/build/docs/api/functions/getAuthHTTPClient/index.html +0 -38
- package/build/docs/api/functions/getAuthorizationHeader/index.html +0 -23
- package/build/docs/api/functions/getHTTPClient/index.html +0 -36
- package/build/docs/api/functions/getHostAppDataByKey/index.html +0 -27
- package/build/docs/api/functions/getLogger/index.html +0 -19
- package/build/docs/api/functions/getMicroFrontEndAppConfig/index.html +0 -23
- package/build/docs/api/functions/getNavigationLinks/index.html +0 -19
- package/build/docs/api/functions/getRedirectUrl/index.html +0 -19
- package/build/docs/api/functions/getSelectField/index.html +0 -33
- package/build/docs/api/functions/getStore/index.html +0 -23
- package/build/docs/api/functions/initServiceWorker/index.html +0 -22
- package/build/docs/api/functions/isCIBuild/index.html +0 -19
- package/build/docs/api/functions/isProd/index.html +0 -19
- package/build/docs/api/functions/isUserAuthorized/index.html +0 -23
- package/build/docs/api/functions/listenStorageEvents/index.html +0 -19
- package/build/docs/api/functions/loadAppConfig/index.html +0 -30
- package/build/docs/api/functions/loadable/index.html +0 -37
- package/build/docs/api/functions/login/index.html +0 -62
- package/build/docs/api/functions/notifyGuestUnloadComplete/index.html +0 -26
- package/build/docs/api/functions/onAuthorizationFailure/index.html +0 -28
- package/build/docs/api/functions/onGuestUnloadStart/index.html +0 -19
- package/build/docs/api/functions/redactPii/index.html +0 -32
- package/build/docs/api/functions/removeDoubleSlash/index.html +0 -22
- package/build/docs/api/functions/removeStorageEvents/index.html +0 -19
- package/build/docs/api/functions/render/index.html +0 -392
- package/build/docs/api/functions/renderHook/index.html +0 -37
- package/build/docs/api/functions/renderWithHostData/index.html +0 -22
- package/build/docs/api/functions/renderWithRedux/index.html +0 -392
- package/build/docs/api/functions/renderWithRouter/index.html +0 -392
- package/build/docs/api/functions/renderWithRouterRedux/index.html +0 -392
- package/build/docs/api/functions/sdkBaseQuery/index.html +0 -37
- package/build/docs/api/functions/sendBAEvent/index.html +0 -34
- package/build/docs/api/functions/sendMessageToHost/index.html +0 -24
- package/build/docs/api/functions/setAppConfig/index.html +0 -27
- package/build/docs/api/functions/setAppConfigValue/index.html +0 -35
- package/build/docs/api/functions/setHostAppData/index.html +0 -25
- package/build/docs/api/functions/setLoginParams/index.html +0 -29
- package/build/docs/api/functions/subscribeToResetSession/index.html +0 -28
- package/build/docs/api/functions/subscribeToSessionExpiry/index.html +0 -28
- package/build/docs/api/functions/subscribeToSessionExpiryWarning/index.html +0 -28
- package/build/docs/api/functions/trackActivity/index.html +0 -31
- package/build/docs/api/functions/useAppDispatch/index.html +0 -24
- package/build/docs/api/functions/useAppMiddleware/index.html +0 -25
- package/build/docs/api/functions/useInjectQuery/index.html +0 -35
- package/build/docs/api/functions/useInjectReducer/index.html +0 -31
- package/build/docs/api/functions/useInjectSaga/index.html +0 -33
- package/build/docs/api/functions/useInjectSideEffect/index.html +0 -25
- package/build/docs/api/functions/useMediaQueryList/index.html +0 -26
- package/build/docs/api/functions/useStateSelector/index.html +0 -38
- package/build/docs/api/functions/useStateSelectorShallow/index.html +0 -39
- package/build/docs/api/functions/waitFor/index.html +0 -27
- package/build/docs/api/functions/waitForElementToBeRemoved/index.html +0 -27
- package/build/docs/api/functions/withAppDecorator/index.html +0 -26
- package/build/docs/api/index.html +0 -29
- package/build/docs/api/interfaces/AppConfig/index.html +0 -46
- package/build/docs/api/interfaces/GuestProps/index.html +0 -86
- package/build/docs/api/interfaces/UseStateSelectorOptions/index.html +0 -25
- package/build/docs/api/type-aliases/AppDispatch/index.html +0 -17
- package/build/docs/api/type-aliases/AppStore/index.html +0 -17
- package/build/docs/api/type-aliases/Await/index.html +0 -20
- package/build/docs/api/type-aliases/EMUI/index.html +0 -62
- package/build/docs/api/type-aliases/HostOptions/index.html +0 -28
- package/build/docs/api/type-aliases/HostProvidedParams/index.html +0 -33
- package/build/docs/api/type-aliases/ModuleOverrides/index.html +0 -47
- package/build/docs/api/type-aliases/OnHostInitCallback/index.html +0 -22
- package/build/docs/api/type-aliases/OnInitCallback/index.html +0 -22
- package/build/docs/api/type-aliases/OnMountCallback/index.html +0 -22
- package/build/docs/api/type-aliases/OnUnMountCallback/index.html +0 -22
- package/build/docs/api/type-aliases/RootState/index.html +0 -17
- package/build/docs/api/type-aliases/SelectStateFieldFunction/index.html +0 -29
- package/build/docs/api/variables/ErrorToast/index.html +0 -17
- package/build/docs/api/variables/FormPropsContext/index.html +0 -24
- package/build/docs/api/variables/GuestMicroApp/index.html +0 -20
- package/build/docs/api/variables/MASK_PIPES/index.html +0 -17
- package/build/docs/api/variables/MASK_TYPES/index.html +0 -17
- package/build/docs/api/variables/MicroApp/index.html +0 -21
- package/build/docs/api/variables/MicroIFrameApp/index.html +0 -21
- package/build/docs/api/variables/NavigationPrompt/index.html +0 -17
- package/build/docs/api/variables/NavigationPromptActions/index.html +0 -22
- package/build/docs/api/variables/Themes/index.html +0 -22
- package/build/docs/api/variables/VisuallyHidden/index.html +0 -17
- package/build/docs/api/variables/WaitMessage/index.html +0 -17
- package/build/docs/api/variables/act/index.html +0 -20
- package/build/docs/api/variables/ariaLive/index.html +0 -17
- package/build/docs/api/variables/auth/index.html +0 -40
- package/build/docs/api/variables/authReducer/index.html +0 -17
- package/build/docs/api/variables/clearSideEffects/index.html +0 -21
- package/build/docs/api/variables/createSideEffect/index.html +0 -19
- package/build/docs/api/variables/decorators/index.html +0 -222
- package/build/docs/api/variables/endSession/index.html +0 -37
- package/build/docs/api/variables/error/index.html +0 -17
- package/build/docs/api/variables/errorMiddleware/index.html +0 -17
- package/build/docs/api/variables/fireEvent/index.html +0 -17
- package/build/docs/api/variables/globalConstants/index.html +0 -22
- package/build/docs/api/variables/history/index.html +0 -17
- package/build/docs/api/variables/httpClientProps/index.html +0 -17
- package/build/docs/api/variables/logout/index.html +0 -22
- package/build/docs/api/variables/memoryHistory/index.html +0 -17
- package/build/docs/api/variables/removeSideEffect/index.html +0 -20
- package/build/docs/api/variables/resetUserIdleTime/index.html +0 -23
- package/build/docs/api/variables/screen/index.html +0 -17
- package/build/docs/api/variables/startSideEffect/index.html +0 -21
- package/build/docs/api/variables/updateBAEventParameters/index.html +0 -27
- package/build/docs/api/variables/useAppSelector/index.html +0 -21
- package/build/docs/api/variables/waitMessageAction/index.html +0 -43
- package/build/docs/api/variables/within/index.html +0 -17
- package/build/docs/assets/css/styles.0fad824b.css +0 -1
- package/build/docs/assets/js/04ee7372.a9b3e0ad.js +0 -1
- package/build/docs/assets/js/05fd5745.f77a9872.js +0 -1
- package/build/docs/assets/js/075aa584.dde55d25.js +0 -1
- package/build/docs/assets/js/0a1bd0e5.3336afb7.js +0 -1
- package/build/docs/assets/js/0f302db7.690bba2c.js +0 -1
- package/build/docs/assets/js/10c70e6f.3a611c9f.js +0 -1
- package/build/docs/assets/js/110b6cba.2039a4be.js +0 -1
- package/build/docs/assets/js/1126.2b1e83b8.js +0 -1
- package/build/docs/assets/js/1127.ce24a599.js +0 -1
- package/build/docs/assets/js/1154937a.58ab70e0.js +0 -1
- package/build/docs/assets/js/1298.f98e394e.js +0 -1
- package/build/docs/assets/js/14efea89.c724a605.js +0 -1
- package/build/docs/assets/js/15f40f8f.62fbc501.js +0 -1
- package/build/docs/assets/js/1617.443ab77e.js +0 -1
- package/build/docs/assets/js/16427680.5a41da14.js +0 -1
- package/build/docs/assets/js/16fba083.0c978e4b.js +0 -1
- package/build/docs/assets/js/1700.bb38b1b9.js +0 -1
- package/build/docs/assets/js/17896441.87af09c7.js +0 -1
- package/build/docs/assets/js/1a5ba401.bdd09a56.js +0 -1
- package/build/docs/assets/js/1ad86f56.5c4d3ed7.js +0 -1
- package/build/docs/assets/js/1cc7c915.18a50af2.js +0 -1
- package/build/docs/assets/js/1dfec420.e8ed9238.js +0 -1
- package/build/docs/assets/js/1fcf59a8.501bb96b.js +0 -1
- package/build/docs/assets/js/2026.f4b8efbd.js +0 -1
- package/build/docs/assets/js/213.07804718.js +0 -1
- package/build/docs/assets/js/2297.998393a9.js +0 -1
- package/build/docs/assets/js/22c6ac39.38c10213.js +0 -1
- package/build/docs/assets/js/242.98ba961c.js +0 -1
- package/build/docs/assets/js/247.f91b8960.js +0 -1
- package/build/docs/assets/js/24b1c163.4390b04b.js +0 -1
- package/build/docs/assets/js/25ae0bf1.3ff15c6f.js +0 -1
- package/build/docs/assets/js/2673.1111af38.js +0 -1
- package/build/docs/assets/js/27c4a013.bceaff37.js +0 -1
- package/build/docs/assets/js/27c8b774.1ec1881a.js +0 -1
- package/build/docs/assets/js/2805.21b4fb8d.js +0 -1
- package/build/docs/assets/js/2b2c5b3b.41587ade.js +0 -1
- package/build/docs/assets/js/3072782a.825cd627.js +0 -1
- package/build/docs/assets/js/3204d46b.7af2b3bd.js +0 -1
- package/build/docs/assets/js/322ec2e7.529db700.js +0 -1
- package/build/docs/assets/js/336f5910.34c060aa.js +0 -1
- package/build/docs/assets/js/3395.f8117aa5.js +0 -1
- package/build/docs/assets/js/3499.2c20c6ff.js +0 -1
- package/build/docs/assets/js/3552.2d0559a3.js +0 -1
- package/build/docs/assets/js/365a2c17.6afbd7ba.js +0 -1
- package/build/docs/assets/js/379bbc32.cfc06360.js +0 -1
- package/build/docs/assets/js/3992.aa5529d1.js +0 -2
- package/build/docs/assets/js/3992.aa5529d1.js.LICENSE.txt +0 -1
- package/build/docs/assets/js/3accd241.850fb650.js +0 -1
- package/build/docs/assets/js/3b0e1261.9caf419d.js +0 -1
- package/build/docs/assets/js/3b333d5b.831324f6.js +0 -1
- package/build/docs/assets/js/3cb0b0a9.99866080.js +0 -1
- package/build/docs/assets/js/3cd01694.04367956.js +0 -1
- package/build/docs/assets/js/4069.77c5dcc9.js +0 -1
- package/build/docs/assets/js/4134.d6069e6e.js +0 -1
- package/build/docs/assets/js/413bfdf1.2e754bf4.js +0 -1
- package/build/docs/assets/js/41f4ce7f.8662231d.js +0 -1
- package/build/docs/assets/js/4257.60660403.js +0 -1
- package/build/docs/assets/js/46eb403d.e5123d24.js +0 -1
- package/build/docs/assets/js/4772.988b91f1.js +0 -1
- package/build/docs/assets/js/4780.8d49dc64.js +0 -1
- package/build/docs/assets/js/47f7a134.2369c86a.js +0 -1
- package/build/docs/assets/js/4884.48d16d5b.js +0 -1
- package/build/docs/assets/js/4acce17e.b84485e3.js +0 -1
- package/build/docs/assets/js/4b10ac31.ffdbb394.js +0 -1
- package/build/docs/assets/js/4eef183e.99934dfe.js +0 -1
- package/build/docs/assets/js/50ae2c89.ea85453c.js +0 -1
- package/build/docs/assets/js/50b500dc.b1dafbf4.js +0 -1
- package/build/docs/assets/js/5113883b.19fc9d2f.js +0 -1
- package/build/docs/assets/js/5196.dda420ed.js +0 -1
- package/build/docs/assets/js/51cd08ce.eedf6a77.js +0 -1
- package/build/docs/assets/js/5248.5442863c.js +0 -1
- package/build/docs/assets/js/533e434c.6a22f28d.js +0 -1
- package/build/docs/assets/js/53defe29.b34f5bfe.js +0 -1
- package/build/docs/assets/js/5428.28b1d8b6.js +0 -1
- package/build/docs/assets/js/54dea6f0.7b5fa5e6.js +0 -1
- package/build/docs/assets/js/550f7dc1.a569914a.js +0 -1
- package/build/docs/assets/js/5575829c.04c44eb2.js +0 -1
- package/build/docs/assets/js/58e12487.6e6066d3.js +0 -1
- package/build/docs/assets/js/59169cbb.2d2d02ce.js +0 -1
- package/build/docs/assets/js/5964.fbd55ce8.js +0 -1
- package/build/docs/assets/js/5968.7a565a4e.js +0 -1
- package/build/docs/assets/js/5c5cf8ae.cf6912f5.js +0 -1
- package/build/docs/assets/js/5ca2639d.8b06c9ea.js +0 -1
- package/build/docs/assets/js/5da011d0.872006f0.js +0 -1
- package/build/docs/assets/js/5e13701d.8a6b7fd6.js +0 -1
- package/build/docs/assets/js/5e7ee35c.01ca7414.js +0 -1
- package/build/docs/assets/js/5e8c322a.0391dec4.js +0 -1
- package/build/docs/assets/js/5e95c892.f11d5bd6.js +0 -1
- package/build/docs/assets/js/5ebc190f.49776b06.js +0 -1
- package/build/docs/assets/js/5f21eb71.536ccef3.js +0 -1
- package/build/docs/assets/js/60781fed.87f57230.js +0 -1
- package/build/docs/assets/js/61b0e64b.c86eca9e.js +0 -1
- package/build/docs/assets/js/61f3b5cc.197d138c.js +0 -1
- package/build/docs/assets/js/62e1e335.d54d1d6e.js +0 -1
- package/build/docs/assets/js/6486.776625d1.js +0 -1
- package/build/docs/assets/js/6611.481d87ff.js +0 -2
- package/build/docs/assets/js/6611.481d87ff.js.LICENSE.txt +0 -9
- package/build/docs/assets/js/6aac2d5c.95d7104d.js +0 -1
- package/build/docs/assets/js/6b345055.f4f6c3b9.js +0 -1
- package/build/docs/assets/js/6b7fcc15.290796d9.js +0 -1
- package/build/docs/assets/js/6ca90961.8833c635.js +0 -1
- package/build/docs/assets/js/6d1f0509.55213557.js +0 -1
- package/build/docs/assets/js/6daa33e8.c1c74588.js +0 -1
- package/build/docs/assets/js/7080.73a89c35.js +0 -1
- package/build/docs/assets/js/7201.26026979.js +0 -1
- package/build/docs/assets/js/7344.12628cac.js +0 -1
- package/build/docs/assets/js/749b3cb7.660b1c4b.js +0 -1
- package/build/docs/assets/js/7516.78c3385c.js +0 -1
- package/build/docs/assets/js/7525.69d857f8.js +0 -1
- package/build/docs/assets/js/7540.ee4aa270.js +0 -1
- package/build/docs/assets/js/78fde597.9598cb2a.js +0 -1
- package/build/docs/assets/js/7985.6aac4971.js +0 -1
- package/build/docs/assets/js/7b224b5a.d21317ac.js +0 -1
- package/build/docs/assets/js/7c822e85.3cc0a954.js +0 -1
- package/build/docs/assets/js/7cde3459.802fae28.js +0 -1
- package/build/docs/assets/js/7d256524.087a46e5.js +0 -1
- package/build/docs/assets/js/7d48b3e7.5d6ce912.js +0 -1
- package/build/docs/assets/js/80392bdc.dbd30f9e.js +0 -1
- package/build/docs/assets/js/8049.5b4457b0.js +0 -1
- package/build/docs/assets/js/805daf1e.305437dc.js +0 -1
- package/build/docs/assets/js/8152.32ad98ca.js +0 -1
- package/build/docs/assets/js/821.19f6a696.js +0 -1
- package/build/docs/assets/js/822e0178.3c0d623a.js +0 -1
- package/build/docs/assets/js/82894961.81f97aaf.js +0 -1
- package/build/docs/assets/js/8290.f0834113.js +0 -1
- package/build/docs/assets/js/8355.bcde11e0.js +0 -1
- package/build/docs/assets/js/8389.b3f6164d.js +0 -1
- package/build/docs/assets/js/8585.e50595e8.js +0 -1
- package/build/docs/assets/js/85dc4c9b.d835c54a.js +0 -1
- package/build/docs/assets/js/8788.c86aea45.js +0 -1
- package/build/docs/assets/js/88a4c043.ca8fd05b.js +0 -1
- package/build/docs/assets/js/90579cbd.0835e6a5.js +0 -1
- package/build/docs/assets/js/90bbfd1d.d0fd53f0.js +0 -1
- package/build/docs/assets/js/9178.f2e05b02.js +0 -1
- package/build/docs/assets/js/9210.b5a9980e.js +0 -1
- package/build/docs/assets/js/9354.77e86f51.js +0 -1
- package/build/docs/assets/js/936.275fbed5.js +0 -1
- package/build/docs/assets/js/9550cc1f.e19e7779.js +0 -1
- package/build/docs/assets/js/9574.c7203040.js +0 -1
- package/build/docs/assets/js/97.d2ed6ba9.js +0 -1
- package/build/docs/assets/js/9852.cf8f89a9.js +0 -1
- package/build/docs/assets/js/9953.90bfd954.js +0 -1
- package/build/docs/assets/js/999f4a99.31e9f0f9.js +0 -1
- package/build/docs/assets/js/99a35e8f.3cb224e6.js +0 -1
- package/build/docs/assets/js/9ab62f73.a44012b0.js +0 -1
- package/build/docs/assets/js/9ea6fe4d.ebd612bc.js +0 -1
- package/build/docs/assets/js/a09470d9.16bfeef9.js +0 -1
- package/build/docs/assets/js/a0eb976e.f6504d94.js +0 -1
- package/build/docs/assets/js/a17fb045.0c651699.js +0 -1
- package/build/docs/assets/js/a2537f00.c241e3f2.js +0 -1
- package/build/docs/assets/js/a29a6e44.58d6b878.js +0 -1
- package/build/docs/assets/js/a3ecf861.0f55d8fd.js +0 -1
- package/build/docs/assets/js/a48fd09c.50989621.js +0 -1
- package/build/docs/assets/js/a6c41565.0821af7d.js +0 -1
- package/build/docs/assets/js/a6c5c03c.0e69962a.js +0 -1
- package/build/docs/assets/js/a769954d.02ea4cc3.js +0 -1
- package/build/docs/assets/js/a7861986.e4d90417.js +0 -1
- package/build/docs/assets/js/a7bd4aaa.3faf623f.js +0 -1
- package/build/docs/assets/js/a8687130.681fc6b9.js +0 -1
- package/build/docs/assets/js/a94703ab.9865def5.js +0 -1
- package/build/docs/assets/js/a9ba6591.bcdf3f9d.js +0 -1
- package/build/docs/assets/js/ab05b3aa.63cf7d9f.js +0 -1
- package/build/docs/assets/js/aba21aa0.4d968e31.js +0 -1
- package/build/docs/assets/js/ac9d64ec.dd98824b.js +0 -1
- package/build/docs/assets/js/aeb9810c.f3c24439.js +0 -1
- package/build/docs/assets/js/b0125fa2.c7fba4da.js +0 -1
- package/build/docs/assets/js/b0ccf0d8.89a4a7e2.js +0 -1
- package/build/docs/assets/js/b1474780.0982f737.js +0 -1
- package/build/docs/assets/js/b2a255cc.df3fdd56.js +0 -1
- package/build/docs/assets/js/b31a5f55.9a4737ac.js +0 -1
- package/build/docs/assets/js/b4285021.67b039a1.js +0 -1
- package/build/docs/assets/js/b784b5bb.7d7bb82c.js +0 -1
- package/build/docs/assets/js/b8c1226b.a92653b3.js +0 -1
- package/build/docs/assets/js/b93b454c.f87b4896.js +0 -1
- package/build/docs/assets/js/bc717899.36b37795.js +0 -1
- package/build/docs/assets/js/bf1a96cc.8abf8470.js +0 -1
- package/build/docs/assets/js/c10ec81d.0dff1cac.js +0 -1
- package/build/docs/assets/js/c254daed.d6764cd8.js +0 -1
- package/build/docs/assets/js/c377a04b.a6a0a334.js +0 -1
- package/build/docs/assets/js/c52b5473.1a1069c1.js +0 -1
- package/build/docs/assets/js/c5e9787b.448cc7d9.js +0 -1
- package/build/docs/assets/js/c7710052.d061cfdd.js +0 -1
- package/build/docs/assets/js/c8a9fc86.daf30d50.js +0 -1
- package/build/docs/assets/js/c90572d4.42231642.js +0 -1
- package/build/docs/assets/js/cfad4bb4.edde6aa3.js +0 -1
- package/build/docs/assets/js/d071c513.a096e87e.js +0 -1
- package/build/docs/assets/js/d0fd4a71.1d53f49d.js +0 -1
- package/build/docs/assets/js/d1d7a857.424e14dc.js +0 -1
- package/build/docs/assets/js/d38c25bf.1430a667.js +0 -1
- package/build/docs/assets/js/d3d37933.d7f15fe8.js +0 -1
- package/build/docs/assets/js/d71e6c8a.f4306e16.js +0 -1
- package/build/docs/assets/js/d9084ecb.61eb0649.js +0 -1
- package/build/docs/assets/js/de3ee31a.0992aa16.js +0 -1
- package/build/docs/assets/js/e0db4c79.6fcade57.js +0 -1
- package/build/docs/assets/js/e4ad89b2.9ca87caa.js +0 -1
- package/build/docs/assets/js/e876cff6.7c7560ed.js +0 -1
- package/build/docs/assets/js/e917d7c9.b54a542b.js +0 -1
- package/build/docs/assets/js/e9f568e8.b96fc01f.js +0 -1
- package/build/docs/assets/js/ea5986e4.ff0e5037.js +0 -1
- package/build/docs/assets/js/eb84a108.be29052f.js +0 -1
- package/build/docs/assets/js/ed6a4585.c5d8bf90.js +0 -1
- package/build/docs/assets/js/f4180cff.dae060fd.js +0 -1
- package/build/docs/assets/js/f7084923.91b0c545.js +0 -1
- package/build/docs/assets/js/f72a372a.4118877c.js +0 -1
- package/build/docs/assets/js/f72c86d0.d74270de.js +0 -1
- package/build/docs/assets/js/f8fa0321.c4c3a620.js +0 -1
- package/build/docs/assets/js/fc7c782f.bc0ad1ab.js +0 -1
- package/build/docs/assets/js/fce396bf.9f7f818c.js +0 -1
- package/build/docs/assets/js/fdb0d9e1.d2893206.js +0 -1
- package/build/docs/assets/js/fed4ae4f.e788c07f.js +0 -1
- package/build/docs/assets/js/fefe9566.113c5960.js +0 -1
- package/build/docs/assets/js/ff0bf96e.e457283e.js +0 -1
- package/build/docs/assets/js/ff6d65a9.39317a08.js +0 -1
- package/build/docs/assets/js/main.7d445fc8.js +0 -2
- package/build/docs/assets/js/main.7d445fc8.js.LICENSE.txt +0 -51
- package/build/docs/assets/js/runtime~main.5c8a1e20.js +0 -1
- package/build/docs/img/favicon.ico +0 -0
- package/build/docs/img/logo.jpeg +0 -0
- package/build/docs/img/logo.svg +0 -22
- package/build/docs/img/readme.md +0 -1
- package/build/docs/index.html +0 -102
- package/build/docs/readme.md +0 -1
- package/build/docs/sitemap.xml +0 -1
- package/build/docs/usage-guide/index.html +0 -580
- package/demo/6879.3434f1e9.iframe.bundle.js.br +0 -0
- package/demo/6879.3434f1e9.iframe.bundle.js.gz +0 -0
- package/demo/docs/6879.3434f1e9.iframe.bundle.js.br +0 -0
- package/demo/docs/6879.3434f1e9.iframe.bundle.js.gz +0 -0
- package/demo/docs/main.703b0e4c.iframe.bundle.js +0 -5
- package/demo/docs/main.703b0e4c.iframe.bundle.js.br +0 -0
- package/demo/docs/main.703b0e4c.iframe.bundle.js.gz +0 -0
- package/demo/main.703b0e4c.iframe.bundle.js +0 -5
- package/demo/main.703b0e4c.iframe.bundle.js.br +0 -0
- 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 =
|
|
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,
|
|
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
|
-
|
|
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 =
|
|
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,
|
|
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
|
};
|
|
@@ -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
|
-
|
|
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
|
|
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
|
|
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
|
|
79
|
-
*
|
|
80
|
-
*
|
|
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
|
|
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 @@
|
|
|
1
|
+
export {};
|