@elliemae/pui-app-sdk 5.21.1 → 5.22.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/analytics/index.js +2 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/utils/micro-frontend/app-bridge.js +40 -0
- package/dist/cjs/utils/micro-frontend/guest.js +101 -14
- package/dist/cjs/utils/micro-frontend/host.js +36 -3
- package/dist/cjs/utils/micro-frontend/scripting-objects/analytics.js +2 -12
- package/dist/cjs/utils/micro-frontend/tests/app.config.json +200 -0
- package/dist/cjs/utils/micro-frontend/tests/utils.js +116 -0
- package/dist/cjs/utils/testing/index.js +15 -1
- package/dist/cjs/view/guest-microapp.js +126 -0
- package/dist/cjs/view/micro-iframe-app/iframe/index.js +1 -1
- package/dist/cjs/view/micro-iframe-app/iframe.html +5 -1
- package/dist/cjs/view/micro-iframe-app/use-frame-loaded.js +3 -1
- package/dist/cjs/view/tests/__snapshots__/guest-microapp.test.tsx.snap +21 -0
- package/dist/cjs/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +208 -0
- package/dist/cjs/view/tests/app.config.json +200 -0
- package/dist/cjs/view/tests/constants.js +44 -0
- package/dist/cjs/view/tests/flights/23.1/app.checksum1.css +3 -0
- package/dist/cjs/view/tests/flights/23.1/app.checksum1.js +52 -0
- package/dist/cjs/view/tests/flights/23.1/manifest.json +4 -0
- package/dist/cjs/view/tests/flights/latest/app.checksum.css +3 -0
- package/dist/cjs/view/tests/flights/latest/app.checksum.js +52 -0
- package/dist/cjs/view/tests/flights/latest/manifest.json +4 -0
- package/dist/cjs/view/tests/hotels/23.1/app.checksum.css +3 -0
- package/dist/cjs/view/tests/hotels/23.1/app.checksum.js +52 -0
- package/dist/cjs/view/tests/hotels/23.1/manifest.json +4 -0
- package/dist/cjs/view/tests/hotels/latest/app.checksum.css +3 -0
- package/dist/cjs/view/tests/hotels/latest/app.checksum.js +52 -0
- package/dist/cjs/view/tests/hotels/latest/manifest.json +4 -0
- package/dist/cjs/view/tests/loan/latest/index.js +116 -0
- package/dist/cjs/view/tests/loan/latest/manifest.json +3 -0
- package/dist/cjs/view/tests/scriptingObjects/appraisalServiceModule.js +81 -0
- package/dist/cjs/{utils/micro-frontend/host-app.js → view/tests/scriptingObjects/constant.js} +5 -10
- package/dist/cjs/view/tests/scriptingObjects/global.js +40 -0
- package/dist/cjs/view/tests/scriptingObjects/loan.js +200 -0
- package/dist/cjs/view/tests/server.js +29 -0
- package/dist/cjs/view/tests/serverHandlers.js +210 -0
- package/dist/cjs/view/tests/task/latest/index.dev.js +67 -0
- package/dist/cjs/view/tests/task/latest/index.js +67 -0
- package/dist/cjs/view/tests/task/latest/manifest.json +4 -0
- package/dist/cjs/view/tests/travelhub/23.1/app.checksum.css +3 -0
- package/dist/cjs/view/tests/travelhub/23.1/app.checksum.js +25 -0
- package/dist/cjs/view/tests/travelhub/23.1/landing.checksum1.css +3 -0
- package/dist/cjs/view/tests/travelhub/23.1/landing.checksum1.js +6 -0
- package/dist/cjs/view/tests/travelhub/23.1/manifest.json +6 -0
- package/dist/cjs/view/tests/travelhub/latest/app.checksum.css +3 -0
- package/dist/cjs/view/tests/travelhub/latest/app.checksum.js +30 -0
- package/dist/cjs/view/tests/travelhub/latest/landing.checksum.css +3 -0
- package/dist/cjs/view/tests/travelhub/latest/landing.checksum.js +8 -0
- package/dist/cjs/view/tests/travelhub/latest/manifest.json +6 -0
- package/dist/cjs/{utils/micro-frontend/ssfguest-adapter.js → view/tests/utils.js} +34 -29
- package/dist/esm/analytics/index.js +2 -1
- package/dist/esm/index.js +7 -1
- package/dist/esm/utils/micro-frontend/app-bridge.js +20 -0
- package/dist/esm/utils/micro-frontend/guest.js +101 -14
- package/dist/esm/utils/micro-frontend/host.js +36 -3
- package/dist/esm/utils/micro-frontend/scripting-objects/analytics.js +2 -2
- package/dist/esm/utils/micro-frontend/tests/app.config.json +200 -0
- package/dist/esm/utils/micro-frontend/tests/utils.js +96 -0
- package/dist/esm/utils/testing/index.js +5 -1
- package/dist/esm/view/guest-microapp.js +96 -0
- package/dist/esm/view/micro-iframe-app/iframe/index.js +1 -1
- package/dist/esm/view/micro-iframe-app/iframe.html +5 -1
- package/dist/esm/view/micro-iframe-app/use-frame-loaded.js +3 -1
- package/dist/esm/view/tests/__snapshots__/guest-microapp.test.tsx.snap +21 -0
- package/dist/esm/view/tests/__snapshots__/micro-iframe-app.test.tsx.snap +208 -0
- package/dist/esm/view/tests/app.config.json +200 -0
- package/dist/esm/view/tests/constants.js +24 -0
- package/dist/esm/view/tests/flights/23.1/app.checksum1.css +3 -0
- package/dist/esm/view/tests/flights/23.1/app.checksum1.js +51 -0
- package/dist/esm/view/tests/flights/23.1/manifest.json +4 -0
- package/dist/esm/view/tests/flights/latest/app.checksum.css +3 -0
- package/dist/esm/view/tests/flights/latest/app.checksum.js +51 -0
- package/dist/esm/view/tests/flights/latest/manifest.json +4 -0
- package/dist/esm/view/tests/hotels/23.1/app.checksum.css +3 -0
- package/dist/esm/view/tests/hotels/23.1/app.checksum.js +51 -0
- package/dist/esm/view/tests/hotels/23.1/manifest.json +4 -0
- package/dist/esm/view/tests/hotels/latest/app.checksum.css +3 -0
- package/dist/esm/view/tests/hotels/latest/app.checksum.js +51 -0
- package/dist/esm/view/tests/hotels/latest/manifest.json +4 -0
- package/dist/esm/view/tests/loan/latest/index.js +115 -0
- package/dist/esm/view/tests/loan/latest/manifest.json +3 -0
- package/dist/esm/view/tests/scriptingObjects/appraisalServiceModule.js +63 -0
- package/dist/esm/view/tests/scriptingObjects/constant.js +4 -0
- package/dist/esm/view/tests/scriptingObjects/global.js +22 -0
- package/dist/esm/view/tests/scriptingObjects/loan.js +180 -0
- package/dist/esm/view/tests/server.js +9 -0
- package/dist/esm/view/tests/serverHandlers.js +180 -0
- package/dist/esm/view/tests/task/latest/index.dev.js +66 -0
- package/dist/esm/view/tests/task/latest/index.js +66 -0
- package/dist/esm/view/tests/task/latest/manifest.json +4 -0
- package/dist/esm/view/tests/travelhub/23.1/app.checksum.css +3 -0
- package/dist/esm/view/tests/travelhub/23.1/app.checksum.js +24 -0
- package/dist/esm/view/tests/travelhub/23.1/landing.checksum1.css +3 -0
- package/dist/esm/view/tests/travelhub/23.1/landing.checksum1.js +5 -0
- package/dist/esm/view/tests/travelhub/23.1/manifest.json +6 -0
- package/dist/esm/view/tests/travelhub/latest/app.checksum.css +3 -0
- package/dist/esm/view/tests/travelhub/latest/app.checksum.js +29 -0
- package/dist/esm/view/tests/travelhub/latest/landing.checksum.css +3 -0
- package/dist/esm/view/tests/travelhub/latest/landing.checksum.js +7 -0
- package/dist/esm/view/tests/travelhub/latest/manifest.json +6 -0
- package/dist/esm/view/tests/utils.js +33 -0
- package/dist/types/lib/index.d.ts +2 -1
- package/dist/types/lib/utils/micro-frontend/app-bridge.d.ts +4 -0
- package/dist/types/lib/utils/micro-frontend/guest.d.ts +46 -11
- package/dist/types/lib/utils/micro-frontend/host.d.ts +27 -10
- package/dist/types/lib/utils/micro-frontend/scripting-objects/analytics.d.ts +2 -2
- package/dist/types/lib/utils/micro-frontend/tests/utils.d.ts +39 -0
- package/dist/types/lib/utils/micro-frontend/types.d.ts +2 -1
- package/dist/types/lib/utils/testing/index.d.ts +57 -1
- package/dist/types/lib/utils/window.d.ts +13 -6
- package/dist/types/lib/view/guest-microapp.d.ts +13 -0
- package/dist/types/lib/view/micro-app/index.d.ts +5 -0
- package/dist/types/lib/view/micro-iframe-app/index.d.ts +5 -0
- package/dist/types/lib/view/tests/constants.d.ts +11 -0
- package/dist/types/lib/view/tests/flights/23.1/app.checksum1.d.ts +7 -0
- package/dist/types/lib/view/tests/flights/latest/app.checksum.d.ts +7 -0
- package/dist/types/lib/view/tests/hotels/23.1/app.checksum.d.ts +7 -0
- package/dist/types/lib/view/tests/hotels/latest/app.checksum.d.ts +7 -0
- package/dist/types/lib/view/tests/loan/latest/index.d.ts +11 -0
- package/dist/types/lib/view/tests/micro-iframe-app.test.d.ts +1 -0
- package/dist/types/lib/view/tests/scriptingObjects/appraisalServiceModule.d.ts +36 -0
- package/dist/types/lib/view/tests/scriptingObjects/constant.d.ts +1 -0
- package/dist/types/lib/view/tests/scriptingObjects/global.d.ts +9 -0
- package/dist/types/lib/view/tests/scriptingObjects/loan.d.ts +31 -0
- package/dist/types/lib/view/tests/server.d.ts +1 -0
- package/dist/types/lib/view/tests/serverHandlers.d.ts +5 -0
- package/dist/types/lib/view/tests/task/latest/index.d.ts +10 -0
- package/dist/types/lib/view/tests/task/latest/index.dev.d.ts +10 -0
- package/dist/types/lib/view/tests/travelhub/23.1/app.checksum.d.ts +7 -0
- package/dist/types/lib/view/tests/travelhub/23.1/landing.checksum1.d.ts +2 -0
- package/dist/types/lib/view/tests/travelhub/latest/app.checksum.d.ts +0 -0
- package/dist/types/lib/view/tests/travelhub/latest/landing.checksum.d.ts +0 -0
- package/dist/types/lib/view/tests/utils.d.ts +7 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +43 -43
- package/dist/esm/utils/micro-frontend/host-app.js +0 -9
- package/dist/esm/utils/micro-frontend/ssfguest-adapter.js +0 -28
- package/dist/types/lib/utils/micro-frontend/host-app.d.ts +0 -11
- package/dist/types/lib/utils/micro-frontend/ssfguest-adapter.d.ts +0 -7
- /package/dist/types/lib/{utils/micro-frontend/tests/guest-ssf-host.test.d.ts → view/tests/guest-microapp.test.d.ts} +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const appId = "taskapp";
|
|
3
|
+
const appName = "Task App";
|
|
4
|
+
const appElementId = `pui-app-container-${appId}`;
|
|
5
|
+
const pipelinePath = "/pipeline";
|
|
6
|
+
const pipelineLinkText = "Pipeline";
|
|
7
|
+
const getWindow = () => {
|
|
8
|
+
try {
|
|
9
|
+
window.parent.document;
|
|
10
|
+
return window.parent;
|
|
11
|
+
} catch (err) {
|
|
12
|
+
return window;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
let host = null;
|
|
16
|
+
let parentHistory = null;
|
|
17
|
+
let logger = null;
|
|
18
|
+
const browserWindow = getWindow();
|
|
19
|
+
browserWindow.__TEST__ = browserWindow.__TEST__ ?? {
|
|
20
|
+
logs: []
|
|
21
|
+
};
|
|
22
|
+
window.emui = window.emui || { uuid: crypto.randomUUID() };
|
|
23
|
+
window.emui.app = {
|
|
24
|
+
uuid: window.emui.uuid,
|
|
25
|
+
init: async (options) => {
|
|
26
|
+
browserWindow.__TEST__.logs.push(`${appId} initializing`);
|
|
27
|
+
host = options.host;
|
|
28
|
+
parentHistory = options.history;
|
|
29
|
+
logger = options.logger;
|
|
30
|
+
},
|
|
31
|
+
mount: async () => {
|
|
32
|
+
browserWindow.__TEST__.logs.push(`${appId} mounting`);
|
|
33
|
+
const appContainer = document.getElementById(appElementId);
|
|
34
|
+
if (appContainer) {
|
|
35
|
+
const mainElement = document.createElement("main");
|
|
36
|
+
appContainer.appendChild(mainElement);
|
|
37
|
+
const pageHeaderEle = document.createElement("h1");
|
|
38
|
+
pageHeaderEle.textContent = appName;
|
|
39
|
+
mainElement.appendChild(pageHeaderEle);
|
|
40
|
+
const contentEle = document.createElement("p");
|
|
41
|
+
contentEle.textContent = "Go to ";
|
|
42
|
+
mainElement.appendChild(contentEle);
|
|
43
|
+
const linkEle = document.createElement("a");
|
|
44
|
+
linkEle.href = "#";
|
|
45
|
+
linkEle.onclick = () => {
|
|
46
|
+
parentHistory?.push?.(pipelinePath);
|
|
47
|
+
};
|
|
48
|
+
linkEle.textContent = pipelineLinkText;
|
|
49
|
+
contentEle.appendChild(linkEle);
|
|
50
|
+
browserWindow.__TEST__.logs.push(`${appId} mounted`);
|
|
51
|
+
} else {
|
|
52
|
+
throw new Error(
|
|
53
|
+
`App container element with id ${appElementId} not found`
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
unmount: () => {
|
|
58
|
+
browserWindow.__TEST__.logs.push(`${appId} unmounting`);
|
|
59
|
+
const appContainer = document.getElementById(appElementId);
|
|
60
|
+
if (appContainer) {
|
|
61
|
+
appContainer.removeChild(appContainer.getElementsByTagName("main")[0]);
|
|
62
|
+
}
|
|
63
|
+
browserWindow.__TEST__.logs.push(`${appId} unmounted`);
|
|
64
|
+
return Promise.resolve();
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
browserWindow.emui?.registerApp?.({ appId, app: window.emui.app });
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const appId = "travelhub";
|
|
3
|
+
const appName = "Travel Hub";
|
|
4
|
+
const getWindow = () => {
|
|
5
|
+
try {
|
|
6
|
+
window.parent.document;
|
|
7
|
+
return window.parent;
|
|
8
|
+
} catch (err) {
|
|
9
|
+
return window;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
const browserWindow = getWindow();
|
|
13
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
14
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
15
|
+
const mainElement = document.createElement("main");
|
|
16
|
+
mainElement.id = "travelhub";
|
|
17
|
+
const pageHeaderEle = document.createElement("h1");
|
|
18
|
+
pageHeaderEle.id = "header";
|
|
19
|
+
pageHeaderEle.textContent = appName;
|
|
20
|
+
mainElement.appendChild(pageHeaderEle);
|
|
21
|
+
const versionEle = document.createElement("p");
|
|
22
|
+
versionEle.id = "version";
|
|
23
|
+
versionEle.textContent = "Version: 23.1";
|
|
24
|
+
mainElement.appendChild(versionEle);
|
|
25
|
+
document.body.appendChild(mainElement);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(function() {
|
|
3
|
+
const appId = "travelhub";
|
|
4
|
+
const appName = "Travel Hub";
|
|
5
|
+
const getWindow = () => {
|
|
6
|
+
try {
|
|
7
|
+
window.parent.document;
|
|
8
|
+
return window.parent;
|
|
9
|
+
} catch (err) {
|
|
10
|
+
return window;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const browserWindow = getWindow();
|
|
14
|
+
browserWindow.emui = browserWindow.emui ?? {};
|
|
15
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] ?? {};
|
|
16
|
+
browserWindow.__TEST__ = browserWindow.__TEST__ ?? {
|
|
17
|
+
logs: []
|
|
18
|
+
};
|
|
19
|
+
const mainElement = document.createElement("main");
|
|
20
|
+
mainElement.id = "travelhub";
|
|
21
|
+
const pageHeaderEle = document.createElement("h1");
|
|
22
|
+
pageHeaderEle.id = "header";
|
|
23
|
+
pageHeaderEle.textContent = appName;
|
|
24
|
+
mainElement.appendChild(pageHeaderEle);
|
|
25
|
+
const versionEle = document.createElement("p");
|
|
26
|
+
versionEle.id = "version";
|
|
27
|
+
versionEle.textContent = "Version: latest";
|
|
28
|
+
mainElement.appendChild(versionEle);
|
|
29
|
+
document.body.appendChild(mainElement);
|
|
30
|
+
})();
|
|
@@ -26,33 +26,38 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
31
|
-
|
|
29
|
+
var utils_exports = {};
|
|
30
|
+
__export(utils_exports, {
|
|
31
|
+
getMajorMinorVersion: () => getMajorMinorVersion,
|
|
32
|
+
logger: () => logger,
|
|
33
|
+
releaseJSThread: () => releaseJSThread,
|
|
34
|
+
sendJS: () => sendJS,
|
|
35
|
+
sendJSText: () => sendJSText
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(utils_exports);
|
|
38
|
+
var import_promises = require("fs/promises");
|
|
39
|
+
var import_node_path = __toESM(require("node:path"));
|
|
40
|
+
var import_pui_diagnostics = require("@elliemae/pui-diagnostics");
|
|
41
|
+
const getMajorMinorVersion = (version) => version.split(".").slice(0, 2).join(".");
|
|
42
|
+
const sendJS = async (res, ctx, filePath) => {
|
|
43
|
+
const fileContent = await (0, import_promises.readFile)(import_node_path.default.join(__dirname, filePath), "utf-8");
|
|
44
|
+
return res.once(
|
|
45
|
+
ctx.status(200),
|
|
46
|
+
ctx.set("Content-Type", "application/javascript"),
|
|
47
|
+
ctx.body(fileContent)
|
|
48
|
+
);
|
|
49
|
+
};
|
|
50
|
+
const sendJSText = async (res, ctx, fileContent) => res.once(
|
|
51
|
+
ctx.status(200),
|
|
52
|
+
ctx.set("Content-Type", "application/javascript"),
|
|
53
|
+
ctx.body(fileContent)
|
|
54
|
+
);
|
|
55
|
+
const releaseJSThread = () => new Promise((resolve) => {
|
|
56
|
+
setTimeout(resolve, 0);
|
|
57
|
+
});
|
|
58
|
+
const logger = (0, import_pui_diagnostics.logger)({
|
|
59
|
+
transport: (0, import_pui_diagnostics.Console)(),
|
|
60
|
+
index: "microfe",
|
|
61
|
+
team: "ui platform",
|
|
62
|
+
appName: "MicroFE Tests"
|
|
32
63
|
});
|
|
33
|
-
module.exports = __toCommonJS(ssfguest_adapter_exports);
|
|
34
|
-
var import_em_ssf_guest = __toESM(require("@elliemae/em-ssf-guest"));
|
|
35
|
-
class SSFGuestAdapter {
|
|
36
|
-
async init() {
|
|
37
|
-
if (!import_em_ssf_guest.default) return false;
|
|
38
|
-
await import_em_ssf_guest.default.connect();
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
async getObject(name) {
|
|
42
|
-
return import_em_ssf_guest.default.getObject(name);
|
|
43
|
-
}
|
|
44
|
-
subscribe(message, func) {
|
|
45
|
-
const callback = (scriptingObj, eventData) => {
|
|
46
|
-
func(message, eventData);
|
|
47
|
-
};
|
|
48
|
-
const [objectId, eventName] = message.split(".");
|
|
49
|
-
return import_em_ssf_guest.default.subscribe(
|
|
50
|
-
objectId,
|
|
51
|
-
eventName || "",
|
|
52
|
-
callback
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
unsubscribe(token, objectId, eventName) {
|
|
56
|
-
return import_em_ssf_guest.default.unsubscribe(objectId, eventName, token);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -15,7 +15,8 @@ const sendBAEvent = ({
|
|
|
15
15
|
self = true
|
|
16
16
|
}) => {
|
|
17
17
|
if (!self) {
|
|
18
|
-
const
|
|
18
|
+
const host = CMicroAppGuest.getInstance()?.getHost();
|
|
19
|
+
const sendEvent = host?.sendBAEvent;
|
|
19
20
|
if (sendEvent) {
|
|
20
21
|
sendEvent(data);
|
|
21
22
|
} else {
|
package/dist/esm/index.js
CHANGED
|
@@ -60,7 +60,10 @@ import {
|
|
|
60
60
|
} from "./utils/session.js";
|
|
61
61
|
import { waitMessage } from "./data/wait-message/actions.js";
|
|
62
62
|
import { initServiceWorker } from "./utils/service-worker.js";
|
|
63
|
-
import {
|
|
63
|
+
import {
|
|
64
|
+
CMicroAppGuest,
|
|
65
|
+
CMicroAppGuest as CMicroAppGuest2
|
|
66
|
+
} from "./utils/micro-frontend/guest.js";
|
|
64
67
|
import { CMicroAppHost } from "./utils/micro-frontend/host.js";
|
|
65
68
|
import { enableReactAppForHostIntegration } from "./utils/app-host-integration/react.js";
|
|
66
69
|
import {
|
|
@@ -132,6 +135,7 @@ import { actions } from "./data/live-message/index.js";
|
|
|
132
135
|
import { actions as actions2 } from "./data/error/index.js";
|
|
133
136
|
import { actions as actions3 } from "./data/logout/actions.js";
|
|
134
137
|
import { MicroApp } from "./view/micro-app/index.js";
|
|
138
|
+
import { GuestMicroApp } from "./view/guest-microapp.js";
|
|
135
139
|
import { MicroIFrameApp } from "./view/micro-iframe-app/index.js";
|
|
136
140
|
import { getNavigationLinks } from "./view/micro-app/utils.js";
|
|
137
141
|
import { getStore } from "./data/store.js";
|
|
@@ -145,6 +149,7 @@ export {
|
|
|
145
149
|
Analytics,
|
|
146
150
|
AppRoot,
|
|
147
151
|
Autocomplete,
|
|
152
|
+
CMicroAppGuest2 as CMicroApp,
|
|
148
153
|
CMicroAppGuest,
|
|
149
154
|
CMicroAppHost,
|
|
150
155
|
CheckBox,
|
|
@@ -161,6 +166,7 @@ export {
|
|
|
161
166
|
FormItemLayout,
|
|
162
167
|
FormLayoutBlockItem,
|
|
163
168
|
FormSubmitButton,
|
|
169
|
+
GuestMicroApp,
|
|
164
170
|
InputMask,
|
|
165
171
|
InputText,
|
|
166
172
|
LargeTextBox,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CAppBridge } from "@elliemae/pui-app-bridge";
|
|
2
|
+
import { getLogger } from "../logger.js";
|
|
3
|
+
import { Analytics } from "./scripting-objects/analytics.js";
|
|
4
|
+
let appBridge = null;
|
|
5
|
+
const getAppBridge = async () => {
|
|
6
|
+
if (!appBridge) {
|
|
7
|
+
const logger = getLogger();
|
|
8
|
+
const version = window.emui?.version || "latest";
|
|
9
|
+
appBridge = new CAppBridge({
|
|
10
|
+
logger,
|
|
11
|
+
version
|
|
12
|
+
});
|
|
13
|
+
await appBridge.init();
|
|
14
|
+
appBridge.addScriptingObject(new Analytics({ logger }));
|
|
15
|
+
}
|
|
16
|
+
return appBridge;
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
getAppBridge
|
|
20
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _ from "lodash";
|
|
2
2
|
import { v4 as uuidv4 } from "uuid";
|
|
3
3
|
import { getDefaultTheme } from "@elliemae/pui-theme";
|
|
4
|
+
import { SSFGuest } from "@elliemae/ssf-guest";
|
|
4
5
|
import { getWindow } from "../window.js";
|
|
5
6
|
import { loadAppConfig } from "../app-config/index.js";
|
|
6
7
|
import { getAppConfigValue } from "../app-config/config.js";
|
|
@@ -10,8 +11,7 @@ import { setLogger } from "../logger.js";
|
|
|
10
11
|
import { removeStorageEvents } from "../web-storage.js";
|
|
11
12
|
import { updateBAEventParameters } from "./scripting-objects/web-analytics.js";
|
|
12
13
|
import { setAppDynamicsUserData } from "../../analytics/appdynamics.js";
|
|
13
|
-
import {
|
|
14
|
-
import { setHostApp } from "./host-app.js";
|
|
14
|
+
import { getAppBridge } from "./app-bridge.js";
|
|
15
15
|
const isCrossDomain = () => {
|
|
16
16
|
try {
|
|
17
17
|
window.parent.document;
|
|
@@ -20,6 +20,11 @@ const isCrossDomain = () => {
|
|
|
20
20
|
return true;
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
+
var CommunicationMethod = /* @__PURE__ */ ((CommunicationMethod2) => {
|
|
24
|
+
CommunicationMethod2["SSF"] = "ssf";
|
|
25
|
+
CommunicationMethod2["APPSDK"] = "app-sdk";
|
|
26
|
+
return CommunicationMethod2;
|
|
27
|
+
})(CommunicationMethod || {});
|
|
23
28
|
class CMicroAppGuest {
|
|
24
29
|
/**
|
|
25
30
|
* unique microapp id
|
|
@@ -30,6 +35,14 @@ class CMicroAppGuest {
|
|
|
30
35
|
appId;
|
|
31
36
|
props;
|
|
32
37
|
containerId;
|
|
38
|
+
/**
|
|
39
|
+
* communication method used between microapps
|
|
40
|
+
*/
|
|
41
|
+
#communicationMethod;
|
|
42
|
+
/**
|
|
43
|
+
* AppBridge instance
|
|
44
|
+
*/
|
|
45
|
+
#appBridge = null;
|
|
33
46
|
onInit;
|
|
34
47
|
onMount;
|
|
35
48
|
onUnmount;
|
|
@@ -40,6 +53,7 @@ class CMicroAppGuest {
|
|
|
40
53
|
window.emui.uuid = window.emui.uuid || uuidv4();
|
|
41
54
|
this.appId = window.emui?.appId || getAppConfigValue("appId");
|
|
42
55
|
this.#uuid = window.emui.uuid;
|
|
56
|
+
this.#communicationMethod = "app-sdk" /* APPSDK */;
|
|
43
57
|
this.props = {
|
|
44
58
|
host: null,
|
|
45
59
|
hostUrl: null,
|
|
@@ -61,7 +75,7 @@ class CMicroAppGuest {
|
|
|
61
75
|
}
|
|
62
76
|
static getInstance(params) {
|
|
63
77
|
if (!this.instance) {
|
|
64
|
-
this.instance = new
|
|
78
|
+
this.instance = new CMicroAppGuest(params);
|
|
65
79
|
}
|
|
66
80
|
return this.instance;
|
|
67
81
|
}
|
|
@@ -77,6 +91,46 @@ class CMicroAppGuest {
|
|
|
77
91
|
getLogger() {
|
|
78
92
|
return this.logger;
|
|
79
93
|
}
|
|
94
|
+
getObject(objectId) {
|
|
95
|
+
let host = null;
|
|
96
|
+
if (this.#communicationMethod === "ssf" /* SSF */) {
|
|
97
|
+
host = this.getHost();
|
|
98
|
+
return host.getObject(objectId);
|
|
99
|
+
}
|
|
100
|
+
host = this.getHost();
|
|
101
|
+
if (!host) return Promise.resolve(null);
|
|
102
|
+
return host.getObject(objectId);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* subscribe to the scripting object event
|
|
106
|
+
* @param {SubscribeParam<EventId, AppEvents[EventId]>} params - the parameters for the subscription
|
|
107
|
+
* @param {string} params.soName - the name of the scripting object
|
|
108
|
+
* @param {string} params.eventName - the name of the event
|
|
109
|
+
* @param {Function} params.callback - the callback function to be called when the event is triggered
|
|
110
|
+
* @returns {void}
|
|
111
|
+
*/
|
|
112
|
+
subscribe(params) {
|
|
113
|
+
let host = null;
|
|
114
|
+
if (this.#communicationMethod === "ssf" /* SSF */) {
|
|
115
|
+
host = this.getHost();
|
|
116
|
+
return host.subscribe(params);
|
|
117
|
+
}
|
|
118
|
+
host = this.getHost();
|
|
119
|
+
return host.subscribe(params);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* unsubscribe from the scripting object event
|
|
123
|
+
* @param params - parameters for the unsubscription
|
|
124
|
+
*/
|
|
125
|
+
unsubscribe(params) {
|
|
126
|
+
let host = null;
|
|
127
|
+
if (this.#communicationMethod === "ssf" /* SSF */) {
|
|
128
|
+
host = this.getHost();
|
|
129
|
+
host.unsubscribe(params);
|
|
130
|
+
}
|
|
131
|
+
host = this.getHost();
|
|
132
|
+
host.unsubscribe(params);
|
|
133
|
+
}
|
|
80
134
|
getProps() {
|
|
81
135
|
return this.props;
|
|
82
136
|
}
|
|
@@ -141,21 +195,22 @@ class CMicroAppGuest {
|
|
|
141
195
|
}
|
|
142
196
|
getSessionStorageItem(key) {
|
|
143
197
|
let value = sessionStorage.getItem(key);
|
|
144
|
-
|
|
145
|
-
|
|
198
|
+
const host = this.getHost();
|
|
199
|
+
if (!value && host?.getItem) {
|
|
200
|
+
value = host.getItem(key);
|
|
146
201
|
}
|
|
147
202
|
return value;
|
|
148
203
|
}
|
|
149
|
-
async
|
|
204
|
+
async findHost() {
|
|
150
205
|
let host = null;
|
|
151
206
|
if (window.parent !== window) {
|
|
152
207
|
if (!isCrossDomain()) {
|
|
153
|
-
host = window.parent?.emui?.MicroAppHost
|
|
208
|
+
host = window.parent?.emui?.MicroAppHost ?? null;
|
|
154
209
|
}
|
|
155
210
|
if (!host) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
211
|
+
host = new SSFGuest({ appLogger: this.logger });
|
|
212
|
+
await host.connect();
|
|
213
|
+
this.#communicationMethod = "ssf" /* SSF */;
|
|
159
214
|
}
|
|
160
215
|
}
|
|
161
216
|
return host;
|
|
@@ -167,17 +222,21 @@ class CMicroAppGuest {
|
|
|
167
222
|
this.props = _.merge(this.props, options);
|
|
168
223
|
this.props.history = options?.history || this.props.history;
|
|
169
224
|
if (!this.props.host) {
|
|
170
|
-
const host = await this.
|
|
171
|
-
if (host)
|
|
225
|
+
const host = await this.findHost();
|
|
226
|
+
if (host) {
|
|
227
|
+
this.props.host = host;
|
|
228
|
+
}
|
|
172
229
|
}
|
|
173
|
-
if (this.props.host) setHostApp(this.props.host);
|
|
174
230
|
__webpack_public_path__ = __webpack_public_path__.replace(/\/?$/, "/");
|
|
175
231
|
return loadAppConfig().then(() => {
|
|
176
232
|
const instanceId = this.getSessionStorageItem("instanceId") || "";
|
|
177
233
|
const userId = this.getSessionStorageItem("userId") || "";
|
|
178
234
|
updateBAEventParameters({ appId: this.appId, instanceId, userId });
|
|
179
235
|
setAppDynamicsUserData({ appId: this.appId, instanceId, userId });
|
|
180
|
-
|
|
236
|
+
return getAppBridge().then((appBridge) => {
|
|
237
|
+
this.#appBridge = appBridge;
|
|
238
|
+
if (this.onInit) this.onInit(this.props);
|
|
239
|
+
});
|
|
181
240
|
});
|
|
182
241
|
}
|
|
183
242
|
mount(options = { containerId: "app-container" }) {
|
|
@@ -198,6 +257,34 @@ class CMicroAppGuest {
|
|
|
198
257
|
navigate(url, state) {
|
|
199
258
|
if (url) this.props.history.push(url, state);
|
|
200
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* add scripting object for child microapp to use
|
|
262
|
+
* @param so - The scripting object to be added.
|
|
263
|
+
* @param params - Optional parameters for adding the scripting object.
|
|
264
|
+
*/
|
|
265
|
+
addScriptingObject(so, params) {
|
|
266
|
+
if (this.#appBridge) {
|
|
267
|
+
this.#appBridge.addScriptingObject(so, params);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* dispatch event to child microapp
|
|
272
|
+
* @param {DispatchEventParams<EventId, Params>} params - event parameters
|
|
273
|
+
*/
|
|
274
|
+
async dispatchEvent(params) {
|
|
275
|
+
if (this.#appBridge) {
|
|
276
|
+
await this.#appBridge.dispatchEvent(params);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* removes scripting object from child microapp use
|
|
281
|
+
* @param objectId unique id of the scripting object
|
|
282
|
+
*/
|
|
283
|
+
removeScriptingObject(objectId) {
|
|
284
|
+
if (this.#appBridge) {
|
|
285
|
+
this.#appBridge.removeScriptingObject(objectId);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
201
288
|
}
|
|
202
289
|
export {
|
|
203
290
|
CMicroAppGuest
|
|
@@ -24,7 +24,7 @@ import { setAppDynamicsUserData } from "../../analytics/appdynamics.js";
|
|
|
24
24
|
import { Analytics } from "./scripting-objects/analytics.js";
|
|
25
25
|
import { updateBAEventParameters } from "./scripting-objects/web-analytics.js";
|
|
26
26
|
import { renewSession } from "../session.js";
|
|
27
|
-
import {
|
|
27
|
+
import { getAppBridge } from "./app-bridge.js";
|
|
28
28
|
class CMicroAppHost {
|
|
29
29
|
static instance;
|
|
30
30
|
logger;
|
|
@@ -36,6 +36,7 @@ class CMicroAppHost {
|
|
|
36
36
|
throttleRenewSessionTimer;
|
|
37
37
|
scriptingObjects;
|
|
38
38
|
#ssfHostRef;
|
|
39
|
+
#appBridge = null;
|
|
39
40
|
// eslint-disable-next-line max-statements
|
|
40
41
|
constructor(params) {
|
|
41
42
|
this.appId = getAppConfigValue("appId");
|
|
@@ -76,6 +77,11 @@ class CMicroAppHost {
|
|
|
76
77
|
}
|
|
77
78
|
);
|
|
78
79
|
loadAppConfig().then(() => {
|
|
80
|
+
getAppBridge().then((appBridge) => {
|
|
81
|
+
this.#appBridge = appBridge;
|
|
82
|
+
}).catch((ex) => {
|
|
83
|
+
throw ex;
|
|
84
|
+
});
|
|
79
85
|
if (this.onInit) this.onInit(this.props);
|
|
80
86
|
}).catch(() => {
|
|
81
87
|
});
|
|
@@ -86,8 +92,7 @@ class CMicroAppHost {
|
|
|
86
92
|
}
|
|
87
93
|
static getInstance(params) {
|
|
88
94
|
if (!this.instance) {
|
|
89
|
-
this.instance = new
|
|
90
|
-
setHostApp(this.instance);
|
|
95
|
+
this.instance = new CMicroAppHost(params);
|
|
91
96
|
}
|
|
92
97
|
return this.instance;
|
|
93
98
|
}
|
|
@@ -181,6 +186,34 @@ class CMicroAppHost {
|
|
|
181
186
|
async getObject(name) {
|
|
182
187
|
return this.scriptingObjects[name];
|
|
183
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* add scripting object for child microapp to use
|
|
191
|
+
* @param so - The scripting object to be added.
|
|
192
|
+
* @param params - Optional parameters for adding the scripting object.
|
|
193
|
+
*/
|
|
194
|
+
addScriptingObject(so, params) {
|
|
195
|
+
if (this.#appBridge) {
|
|
196
|
+
this.#appBridge.addScriptingObject(so, params);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* dispatch event to child microapp
|
|
201
|
+
* @param {DispatchEventParams<EventId, Params>} params - event parameters
|
|
202
|
+
*/
|
|
203
|
+
async dispatchEvent(params) {
|
|
204
|
+
if (this.#appBridge) {
|
|
205
|
+
await this.#appBridge.dispatchEvent(params);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* removes scripting object from child microapp use
|
|
210
|
+
* @param objectId unique id of the scripting object
|
|
211
|
+
*/
|
|
212
|
+
removeScriptingObject(objectId) {
|
|
213
|
+
if (this.#appBridge) {
|
|
214
|
+
this.#appBridge.removeScriptingObject(objectId);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
184
217
|
}
|
|
185
218
|
export {
|
|
186
219
|
CMicroAppHost
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ScriptingObject } from "@elliemae/ssf-host";
|
|
2
2
|
import { getBAEventParameters } from "./web-analytics.js";
|
|
3
3
|
import { getProductAppDetails } from "../../helpers.js";
|
|
4
4
|
import { HeadSampler } from "../../headSampler.js";
|
|
5
|
-
class Analytics extends
|
|
5
|
+
class Analytics extends ScriptingObject {
|
|
6
6
|
/**
|
|
7
7
|
* logger instance
|
|
8
8
|
*/
|