@elliemae/pui-app-bridge 2.9.9 → 2.16.6
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/appBridge.js +380 -93
- package/dist/cjs/appRegistry.js +136 -0
- package/dist/cjs/config/app.js +15 -2
- package/dist/cjs/config/microFE.js +3 -3
- package/dist/cjs/eventManager.js +16 -16
- package/dist/cjs/frame.html +2 -2
- package/dist/cjs/frame.js +39 -14
- package/dist/cjs/index.html +1 -1
- package/dist/cjs/loaders/script.js +5 -5
- package/dist/cjs/loaders/style.js +1 -0
- package/dist/cjs/microfeHost.js +51 -31
- package/dist/cjs/tests/flights/23.1/app.checksum1.js +25 -24
- package/dist/cjs/tests/flights/latest/app.checksum.js +25 -24
- package/dist/cjs/tests/hotels/23.1/app.checksum.js +27 -24
- package/dist/cjs/tests/hotels/latest/app.checksum.js +27 -24
- package/dist/cjs/tests/loan/latest/index.js +49 -57
- package/dist/cjs/tests/scriptingObjects/analytics.js +7 -7
- package/dist/cjs/tests/scriptingObjects/appraisalServiceModule.js +8 -8
- package/dist/cjs/tests/scriptingObjects/global.js +1 -2
- package/dist/cjs/tests/task/latest/index.dev.js +29 -28
- package/dist/cjs/tests/task/latest/index.js +29 -28
- package/dist/cjs/tests/travelhub/23.1/app.checksum.js +24 -26
- package/dist/cjs/tests/travelhub/23.1/landing.checksum1.js +5 -7
- package/dist/cjs/utils.js +31 -1
- package/dist/esm/appBridge.js +390 -95
- package/dist/esm/appRegistry.js +116 -0
- package/dist/esm/config/app.js +15 -2
- package/dist/esm/config/microFE.js +3 -3
- package/dist/esm/eventManager.js +16 -16
- package/dist/esm/frame.html +2 -2
- package/dist/esm/frame.js +29 -14
- package/dist/esm/index.html +1 -1
- package/dist/esm/loaders/script.js +5 -5
- package/dist/esm/loaders/style.js +1 -0
- package/dist/esm/microfeHost.js +55 -31
- package/dist/esm/tests/flights/23.1/app.checksum1.js +25 -24
- package/dist/esm/tests/flights/latest/app.checksum.js +25 -24
- package/dist/esm/tests/hotels/23.1/app.checksum.js +27 -24
- package/dist/esm/tests/hotels/latest/app.checksum.js +27 -24
- package/dist/esm/tests/loan/latest/index.js +49 -57
- package/dist/esm/tests/scriptingObjects/analytics.js +7 -7
- package/dist/esm/tests/scriptingObjects/appraisalServiceModule.js +8 -8
- package/dist/esm/tests/scriptingObjects/global.js +1 -2
- package/dist/esm/tests/task/latest/index.dev.js +29 -28
- package/dist/esm/tests/task/latest/index.js +29 -28
- package/dist/esm/tests/travelhub/23.1/app.checksum.js +24 -26
- package/dist/esm/tests/travelhub/23.1/landing.checksum1.js +5 -7
- package/dist/esm/utils.js +31 -1
- package/dist/public/assets/frame.671d9de68be598da64ca.html +47 -0
- package/dist/public/creditService/latest/creditService.checksum.js.gz +0 -0
- package/dist/public/frame.html +1 -1
- package/dist/public/guest/businessObjects.js.gz +0 -0
- package/dist/public/guest/util.js.gz +0 -0
- package/dist/public/index.html +1 -1
- package/dist/public/init.js.gz +0 -0
- package/dist/public/js/emuiAppBridge.40c8880c94dbc97b49fd.js +51 -0
- package/dist/public/js/emuiAppBridge.40c8880c94dbc97b49fd.js.br +0 -0
- package/dist/public/js/emuiAppBridge.40c8880c94dbc97b49fd.js.gz +0 -0
- package/dist/public/js/emuiAppBridge.40c8880c94dbc97b49fd.js.map +1 -0
- package/dist/public/loan-object.js +1 -1
- package/dist/public/loan-object.js.br +0 -0
- package/dist/public/loan-object.js.gz +0 -0
- package/dist/public/loan-object.js.map +1 -1
- package/dist/public/loanValidation/latest/loanValidation.checksum.js.gz +0 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js.gz +0 -0
- package/dist/public/utils.js.gz +0 -0
- package/dist/types/lib/appBridge.d.ts +38 -28
- package/dist/types/lib/appRegistry.d.ts +41 -0
- package/dist/types/lib/eventManager.d.ts +4 -4
- package/dist/types/lib/frame.d.ts +45 -4
- package/dist/types/lib/index.d.ts +3 -3
- package/dist/types/lib/loaders/script.d.ts +2 -1
- package/dist/types/lib/microfeHost.d.ts +15 -25
- package/dist/types/lib/tests/flights/23.1/app.checksum1.d.ts +7 -0
- package/dist/types/lib/tests/flights/latest/app.checksum.d.ts +7 -0
- package/dist/types/lib/tests/hotels/23.1/app.checksum.d.ts +7 -0
- package/dist/types/lib/tests/hotels/latest/app.checksum.d.ts +7 -0
- package/dist/types/lib/tests/loan/latest/index.d.ts +11 -0
- package/dist/types/lib/tests/scriptingObjects/analytics.d.ts +3 -3
- package/dist/types/lib/tests/scriptingObjects/appraisalServiceModule.d.ts +2 -1
- package/dist/types/lib/tests/task/latest/index.d.ts +10 -0
- package/dist/types/lib/tests/task/latest/index.dev.d.ts +10 -0
- package/dist/types/lib/tests/travelhub/23.1/app.checksum.d.ts +7 -0
- package/dist/types/lib/tests/travelhub/23.1/landing.checksum1.d.ts +2 -0
- package/dist/types/lib/typings/appInfo.d.ts +1 -0
- package/dist/types/lib/typings/common.d.ts +0 -66
- package/dist/types/lib/typings/guest.d.ts +10 -3
- package/dist/types/lib/typings/host.d.ts +32 -32
- package/dist/types/lib/typings/window.d.ts +6 -1
- package/dist/types/lib/utils.d.ts +7 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/umd/671d9de68be598da64ca.html +47 -0
- package/dist/umd/creditService/latest/creditService.checksum.js.gz +0 -0
- package/dist/umd/frame.html +1 -1
- package/dist/umd/guest/businessObjects.js.gz +0 -0
- package/dist/umd/guest/util.js.gz +0 -0
- package/dist/umd/index.html +1 -1
- package/dist/umd/index.js +35 -9
- package/dist/umd/index.js.br +0 -0
- package/dist/umd/index.js.gz +0 -0
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/init.js.gz +0 -0
- package/dist/umd/loan-object.js +1 -1
- package/dist/umd/loan-object.js.br +0 -0
- package/dist/umd/loan-object.js.gz +0 -0
- package/dist/umd/loan-object.js.map +1 -1
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js.gz +0 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js.gz +0 -0
- package/dist/umd/utils.js.gz +0 -0
- package/package.json +9 -12
- package/dist/public/js/emuiAppBridge.530390c3bb03f32357f7.js +0 -25
- package/dist/public/js/emuiAppBridge.530390c3bb03f32357f7.js.br +0 -0
- package/dist/public/js/emuiAppBridge.530390c3bb03f32357f7.js.gz +0 -0
- package/dist/public/js/emuiAppBridge.530390c3bb03f32357f7.js.map +0 -1
- package/dist/types/lib/tests/pubsubAPI.test.d.ts +0 -1
|
@@ -1,40 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
browserWindow.emui[appId].init = async (options) => {
|
|
1
|
+
const appId = "hotels";
|
|
2
|
+
const appName = "Hotels App";
|
|
3
|
+
const getWindow = () => {
|
|
4
|
+
try {
|
|
5
|
+
window.parent.document;
|
|
6
|
+
return window.parent;
|
|
7
|
+
} catch (err) {
|
|
8
|
+
return window;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
let host = null;
|
|
12
|
+
let parentHistory = null;
|
|
13
|
+
let logger = null;
|
|
14
|
+
window.emui = window.emui || { uuid: crypto.randomUUID() };
|
|
15
|
+
window.emui.app = {
|
|
16
|
+
uuid: window.emui.uuid,
|
|
17
|
+
init: async (options) => {
|
|
19
18
|
host = options.host;
|
|
20
19
|
parentHistory = options.history;
|
|
21
20
|
logger = options.logger;
|
|
22
21
|
return Promise.resolve();
|
|
23
|
-
}
|
|
24
|
-
|
|
22
|
+
},
|
|
23
|
+
mount: async () => {
|
|
25
24
|
const mainElement = document.createElement("main");
|
|
26
25
|
const pageHeaderEle = document.createElement("h1");
|
|
27
26
|
pageHeaderEle.textContent = appName;
|
|
27
|
+
pageHeaderEle.id = "header";
|
|
28
28
|
mainElement.appendChild(pageHeaderEle);
|
|
29
29
|
const versionEle = document.createElement("p");
|
|
30
30
|
versionEle.textContent = "Version: 23.1";
|
|
31
|
+
versionEle.id = "version";
|
|
31
32
|
mainElement.appendChild(versionEle);
|
|
32
33
|
document.body.appendChild(mainElement);
|
|
33
34
|
return Promise.resolve();
|
|
34
|
-
}
|
|
35
|
-
|
|
35
|
+
},
|
|
36
|
+
unmount: () => {
|
|
36
37
|
const mainEle = document.getElementsByTagName("main")[0];
|
|
37
38
|
if (mainEle) mainEle.remove();
|
|
38
39
|
return Promise.resolve();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const browserWindow = getWindow();
|
|
43
|
+
browserWindow.emui?.registerApp?.({ appId, app: window.emui.app });
|
|
@@ -1,40 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
browserWindow.emui[appId].init = async (options) => {
|
|
1
|
+
const appId = "hotels";
|
|
2
|
+
const appName = "Hotels App";
|
|
3
|
+
const getWindow = () => {
|
|
4
|
+
try {
|
|
5
|
+
window.parent.document;
|
|
6
|
+
return window.parent;
|
|
7
|
+
} catch (err) {
|
|
8
|
+
return window;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
let host = null;
|
|
12
|
+
let parentHistory = null;
|
|
13
|
+
let logger = null;
|
|
14
|
+
window.emui = window.emui || { uuid: crypto.randomUUID() };
|
|
15
|
+
window.emui.app = {
|
|
16
|
+
uuid: window.emui.uuid,
|
|
17
|
+
init: async (options) => {
|
|
19
18
|
host = options.host;
|
|
20
19
|
parentHistory = options.history;
|
|
21
20
|
logger = options.logger;
|
|
22
21
|
return Promise.resolve();
|
|
23
|
-
}
|
|
24
|
-
|
|
22
|
+
},
|
|
23
|
+
mount: async () => {
|
|
25
24
|
const mainElement = document.createElement("main");
|
|
26
25
|
const pageHeaderEle = document.createElement("h1");
|
|
27
26
|
pageHeaderEle.textContent = appName;
|
|
27
|
+
pageHeaderEle.id = "header";
|
|
28
28
|
mainElement.appendChild(pageHeaderEle);
|
|
29
29
|
const versionEle = document.createElement("p");
|
|
30
30
|
versionEle.textContent = "Version: latest";
|
|
31
|
+
versionEle.id = "version";
|
|
31
32
|
mainElement.appendChild(versionEle);
|
|
32
33
|
document.body.appendChild(mainElement);
|
|
33
34
|
return Promise.resolve();
|
|
34
|
-
}
|
|
35
|
-
|
|
35
|
+
},
|
|
36
|
+
unmount: () => {
|
|
36
37
|
const mainEle = document.getElementsByTagName("main")[0];
|
|
37
38
|
if (mainEle) mainEle.remove();
|
|
38
39
|
return Promise.resolve();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const browserWindow = getWindow();
|
|
43
|
+
browserWindow.emui?.registerApp?.({ appId, app: window.emui.app });
|
|
@@ -1,62 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
iframeBody.scrollWidth,
|
|
34
|
-
iframeBody.offsetWidth,
|
|
35
|
-
iframeHTML.offsetWidth
|
|
36
|
-
)
|
|
37
|
-
};
|
|
38
|
-
host.setAppWindowSize({
|
|
39
|
-
appId,
|
|
40
|
-
size
|
|
41
|
-
});
|
|
1
|
+
const appId = "loanapp";
|
|
2
|
+
const appName = "Loan App";
|
|
3
|
+
const appElementId = `pui-app-container-${appId}`;
|
|
4
|
+
const pipelinePath = "/pipeline";
|
|
5
|
+
const pipelineLinkText = "Pipeline";
|
|
6
|
+
const getWindow = () => {
|
|
7
|
+
try {
|
|
8
|
+
window.parent.document;
|
|
9
|
+
return window.parent;
|
|
10
|
+
} catch (err) {
|
|
11
|
+
return window;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
let host = null;
|
|
15
|
+
let parentHistory = null;
|
|
16
|
+
let logger = null;
|
|
17
|
+
window.__TEST__ = {};
|
|
18
|
+
const setFrameSize = () => {
|
|
19
|
+
const { document: document2 } = window;
|
|
20
|
+
const iframeBody = document2.body;
|
|
21
|
+
const iframeHTML = document2.documentElement;
|
|
22
|
+
const size = {
|
|
23
|
+
height: Math.max(
|
|
24
|
+
iframeBody.scrollHeight,
|
|
25
|
+
iframeBody.offsetHeight,
|
|
26
|
+
iframeHTML.offsetHeight
|
|
27
|
+
),
|
|
28
|
+
width: Math.max(
|
|
29
|
+
iframeBody.scrollWidth,
|
|
30
|
+
iframeBody.offsetWidth,
|
|
31
|
+
iframeHTML.offsetWidth
|
|
32
|
+
)
|
|
42
33
|
};
|
|
43
|
-
|
|
34
|
+
host.setAppWindowSize({
|
|
35
|
+
appId,
|
|
36
|
+
size
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
window.emui = window.emui || { uuid: crypto.randomUUID() };
|
|
40
|
+
window.emui.app = {
|
|
41
|
+
uuid: window.emui.uuid,
|
|
42
|
+
init: async (options) => {
|
|
44
43
|
host = options.host;
|
|
45
44
|
parentHistory = options.history;
|
|
46
45
|
logger = options.logger;
|
|
47
46
|
window.__TEST__.initOptions = options;
|
|
48
|
-
host.subscribe("loanSaved", (msg, data) => {
|
|
49
|
-
const appContainer = document.getElementById(appElementId);
|
|
50
|
-
if (appContainer) {
|
|
51
|
-
const dataEle = document.createElement("p");
|
|
52
|
-
dataEle.id = "loanSavedData";
|
|
53
|
-
dataEle.innerText = `Loan saved: ${JSON.stringify(data)}`;
|
|
54
|
-
appContainer.appendChild(dataEle);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
47
|
setFrameSize();
|
|
58
|
-
}
|
|
59
|
-
|
|
48
|
+
},
|
|
49
|
+
mount: async (options) => {
|
|
60
50
|
window.__TEST__.mountOptions = options;
|
|
61
51
|
const appContainer = document.getElementById(appElementId);
|
|
62
52
|
if (appContainer) {
|
|
@@ -80,12 +70,14 @@
|
|
|
80
70
|
`App container element with id ${appElementId} not found`
|
|
81
71
|
);
|
|
82
72
|
}
|
|
83
|
-
}
|
|
84
|
-
|
|
73
|
+
},
|
|
74
|
+
unmount: () => {
|
|
85
75
|
const appContainer = document.getElementById(appElementId);
|
|
86
76
|
if (appContainer) {
|
|
87
77
|
appContainer.removeChild(appContainer.getElementsByTagName("main")[0]);
|
|
88
78
|
}
|
|
89
79
|
return Promise.resolve();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const browserWindow = getWindow();
|
|
83
|
+
browserWindow.emui?.registerApp?.({ appId, app: window.emui.app });
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { ScriptingObject } from "@elliemae/microfe-common";
|
|
2
2
|
class Analytics extends ScriptingObject {
|
|
3
3
|
constructor() {
|
|
4
|
-
super("
|
|
4
|
+
super("analytics");
|
|
5
5
|
}
|
|
6
|
-
sendBAEvent(event) {
|
|
6
|
+
sendBAEvent = (event) => {
|
|
7
7
|
console.log("Analytics.sendBAEvent", event);
|
|
8
8
|
return Promise.resolve();
|
|
9
|
-
}
|
|
10
|
-
startTiming(name, options) {
|
|
9
|
+
};
|
|
10
|
+
startTiming = (name, options) => {
|
|
11
11
|
console.log("Analytics.perfMarkStart", name);
|
|
12
12
|
return Promise.resolve(performance.mark(name, { detail: options }));
|
|
13
|
-
}
|
|
14
|
-
endTiming(start, options) {
|
|
13
|
+
};
|
|
14
|
+
endTiming = (start, options) => {
|
|
15
15
|
console.log("Analytics.perfMarkEnd", start);
|
|
16
16
|
performance.measure(start, {
|
|
17
17
|
detail: options,
|
|
18
18
|
start
|
|
19
19
|
});
|
|
20
20
|
return Promise.resolve();
|
|
21
|
-
}
|
|
21
|
+
};
|
|
22
22
|
}
|
|
23
23
|
export {
|
|
24
24
|
Analytics
|
|
@@ -7,23 +7,19 @@ class AppraisalService extends ScriptingObject {
|
|
|
7
7
|
#creditScore;
|
|
8
8
|
Close = new Event({
|
|
9
9
|
name: "Close",
|
|
10
|
-
|
|
11
|
-
so: this
|
|
10
|
+
objectId: ScriptingObjectNames.Module
|
|
12
11
|
});
|
|
13
12
|
Unloading = new Event({
|
|
14
13
|
name: "Unloading",
|
|
15
|
-
|
|
16
|
-
so: this
|
|
14
|
+
objectId: ScriptingObjectNames.Module
|
|
17
15
|
});
|
|
18
16
|
onPreCommit = new Event({
|
|
19
17
|
name: "onPreCommit",
|
|
20
|
-
|
|
21
|
-
so: this
|
|
18
|
+
objectId: ScriptingObjectNames.Module
|
|
22
19
|
});
|
|
23
20
|
onSaved = new Event({
|
|
24
21
|
name: "onSaved",
|
|
25
|
-
|
|
26
|
-
so: this
|
|
22
|
+
objectId: ScriptingObjectNames.Module
|
|
27
23
|
});
|
|
28
24
|
constructor({
|
|
29
25
|
loanId,
|
|
@@ -55,6 +51,10 @@ class AppraisalService extends ScriptingObject {
|
|
|
55
51
|
delete = () => {
|
|
56
52
|
throw new Error("Not implemented");
|
|
57
53
|
};
|
|
54
|
+
log = async (message, level) => {
|
|
55
|
+
console.log(message, level);
|
|
56
|
+
return Promise.resolve();
|
|
57
|
+
};
|
|
58
58
|
unload = async () => {
|
|
59
59
|
};
|
|
60
60
|
}
|
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
browserWindow.emui[appId].init = async (options) => {
|
|
1
|
+
const appId = "taskapp";
|
|
2
|
+
const appName = "Task App Dev";
|
|
3
|
+
const appElementId = `pui-app-container-${appId}`;
|
|
4
|
+
const pipelinePath = "/pipeline";
|
|
5
|
+
const pipelineLinkText = "Pipeline";
|
|
6
|
+
const getWindow = () => {
|
|
7
|
+
try {
|
|
8
|
+
window.parent.document;
|
|
9
|
+
return window.parent;
|
|
10
|
+
} catch (err) {
|
|
11
|
+
return window;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
let host = null;
|
|
15
|
+
let parentHistory = null;
|
|
16
|
+
let logger = null;
|
|
17
|
+
window.__TEST__ = {};
|
|
18
|
+
window.emui = window.emui || { uuid: crypto.randomUUID() };
|
|
19
|
+
window.emui.app = {
|
|
20
|
+
uuid: window.emui.uuid,
|
|
21
|
+
init: async (options) => {
|
|
23
22
|
window.__TEST__.initOptions = options;
|
|
24
23
|
host = options.host;
|
|
25
24
|
parentHistory = options.history;
|
|
26
25
|
logger = options.logger;
|
|
27
|
-
}
|
|
28
|
-
|
|
26
|
+
},
|
|
27
|
+
mount: async (options) => {
|
|
29
28
|
window.__TEST__.mountOptions = options;
|
|
30
29
|
const appContainer = document.getElementById(appElementId);
|
|
31
30
|
if (appContainer) {
|
|
@@ -49,12 +48,14 @@
|
|
|
49
48
|
`App container element with id ${appElementId} not found`
|
|
50
49
|
);
|
|
51
50
|
}
|
|
52
|
-
}
|
|
53
|
-
|
|
51
|
+
},
|
|
52
|
+
unmount: () => {
|
|
54
53
|
const appContainer = document.getElementById(appElementId);
|
|
55
54
|
if (appContainer) {
|
|
56
55
|
appContainer.removeChild(appContainer.getElementsByTagName("main")[0]);
|
|
57
56
|
}
|
|
58
57
|
return Promise.resolve();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const browserWindow = getWindow();
|
|
61
|
+
browserWindow.emui?.registerApp?.({ appId, app: window.emui.app });
|
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
browserWindow.emui[appId].init = async (options) => {
|
|
1
|
+
const appId = "taskapp";
|
|
2
|
+
const appName = "Task App";
|
|
3
|
+
const appElementId = `pui-app-container-${appId}`;
|
|
4
|
+
const pipelinePath = "/pipeline";
|
|
5
|
+
const pipelineLinkText = "Pipeline";
|
|
6
|
+
const getWindow = () => {
|
|
7
|
+
try {
|
|
8
|
+
window.parent.document;
|
|
9
|
+
return window.parent;
|
|
10
|
+
} catch (err) {
|
|
11
|
+
return window;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
let host = null;
|
|
15
|
+
let parentHistory = null;
|
|
16
|
+
let logger = null;
|
|
17
|
+
window.__TEST__ = {};
|
|
18
|
+
window.emui = window.emui || { uuid: crypto.randomUUID() };
|
|
19
|
+
window.emui.app = {
|
|
20
|
+
uuid: window.emui.uuid,
|
|
21
|
+
init: async (options) => {
|
|
23
22
|
window.__TEST__.initOptions = options;
|
|
24
23
|
host = options.host;
|
|
25
24
|
parentHistory = options.history;
|
|
26
25
|
logger = options.logger;
|
|
27
|
-
}
|
|
28
|
-
|
|
26
|
+
},
|
|
27
|
+
mount: async (options) => {
|
|
29
28
|
window.__TEST__.mountOptions = options;
|
|
30
29
|
const appContainer = document.getElementById(appElementId);
|
|
31
30
|
if (appContainer) {
|
|
@@ -49,12 +48,14 @@
|
|
|
49
48
|
`App container element with id ${appElementId} not found`
|
|
50
49
|
);
|
|
51
50
|
}
|
|
52
|
-
}
|
|
53
|
-
|
|
51
|
+
},
|
|
52
|
+
unmount: () => {
|
|
54
53
|
const appContainer = document.getElementById(appElementId);
|
|
55
54
|
if (appContainer) {
|
|
56
55
|
appContainer.removeChild(appContainer.getElementsByTagName("main")[0]);
|
|
57
56
|
}
|
|
58
57
|
return Promise.resolve();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const browserWindow = getWindow();
|
|
61
|
+
browserWindow.emui?.registerApp?.({ appId, app: window.emui.app });
|
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
document.body.appendChild(mainElement);
|
|
26
|
-
})();
|
|
1
|
+
const appId = "travelhub";
|
|
2
|
+
const appName = "Travel Hub";
|
|
3
|
+
const getWindow = () => {
|
|
4
|
+
try {
|
|
5
|
+
window.parent.document;
|
|
6
|
+
return window.parent;
|
|
7
|
+
} catch (err) {
|
|
8
|
+
return window;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
const browserWindow = getWindow();
|
|
12
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
13
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
14
|
+
const mainElement = document.createElement("main");
|
|
15
|
+
mainElement.id = "travelhub";
|
|
16
|
+
const pageHeaderEle = document.createElement("h1");
|
|
17
|
+
pageHeaderEle.id = "header";
|
|
18
|
+
pageHeaderEle.textContent = appName;
|
|
19
|
+
mainElement.appendChild(pageHeaderEle);
|
|
20
|
+
const versionEle = document.createElement("p");
|
|
21
|
+
versionEle.id = "version";
|
|
22
|
+
versionEle.textContent = "Version: 23.1";
|
|
23
|
+
mainElement.appendChild(versionEle);
|
|
24
|
+
document.body.appendChild(mainElement);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
(
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
mainElement.appendChild(contentEle);
|
|
7
|
-
})();
|
|
1
|
+
const mainElement = document.getElementById("travelhub");
|
|
2
|
+
const contentEle = document.createElement("p");
|
|
3
|
+
contentEle.id = "greeting";
|
|
4
|
+
contentEle.textContent = "Hello Travellers!";
|
|
5
|
+
mainElement.appendChild(contentEle);
|
package/dist/esm/utils.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { throttle } from "lodash";
|
|
2
|
+
const KEEP_ALIVE_INTERVAL = 12e4;
|
|
3
|
+
const userInteractionEvents = ["click", "scroll", "keypress", "touchstart"];
|
|
1
4
|
const removeDoubleSlash = (url) => url.replace(/([^:]\/)\/+/g, "$1");
|
|
2
5
|
const getAbsoluteUrl = (url) => {
|
|
3
6
|
const a = document.createElement("a");
|
|
@@ -5,10 +8,37 @@ const getAbsoluteUrl = (url) => {
|
|
|
5
8
|
return a.href;
|
|
6
9
|
};
|
|
7
10
|
const appendTrailingSlash = (url) => url?.replace?.(/\/?$/, "/");
|
|
11
|
+
const appendPath = (base, path) => `${base.replace(/\/+$/, "")}/${path.replace(/^\/+/, "")}`;
|
|
8
12
|
const isJSDOM = () => window.navigator.userAgent.includes("jsdom");
|
|
13
|
+
const startKeepSessionAlive = ({
|
|
14
|
+
appObj,
|
|
15
|
+
logger
|
|
16
|
+
}) => {
|
|
17
|
+
if (!appObj) {
|
|
18
|
+
logger.warn("Application object not available to send keep alive");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const throttledKeepAlive = throttle(
|
|
22
|
+
async () => {
|
|
23
|
+
try {
|
|
24
|
+
await appObj.keepSessionAlive();
|
|
25
|
+
} catch (e) {
|
|
26
|
+
logger.error(`Error keeping session alive. ${e.message}`);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
KEEP_ALIVE_INTERVAL,
|
|
30
|
+
// throttle time
|
|
31
|
+
{ leading: false }
|
|
32
|
+
);
|
|
33
|
+
userInteractionEvents.forEach((eventType) => {
|
|
34
|
+
document.addEventListener(eventType, throttledKeepAlive);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
9
37
|
export {
|
|
38
|
+
appendPath,
|
|
10
39
|
appendTrailingSlash,
|
|
11
40
|
getAbsoluteUrl,
|
|
12
41
|
isJSDOM,
|
|
13
|
-
removeDoubleSlash
|
|
42
|
+
removeDoubleSlash,
|
|
43
|
+
startKeepSessionAlive
|
|
14
44
|
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<meta name="mobile-web-app-capable" content="yes" />
|
|
7
|
+
<link rel="icon" href="/favicon.ico" />
|
|
8
|
+
<title>Application</title>
|
|
9
|
+
<script nonce="__CSP_NONCE__">
|
|
10
|
+
(function (i, s, o, g, r, a, m) {
|
|
11
|
+
i['GoogleAnalyticsObject'] = r;
|
|
12
|
+
(i[r] =
|
|
13
|
+
i[r] ||
|
|
14
|
+
function () {
|
|
15
|
+
(i[r].q = i[r].q || []).push(arguments);
|
|
16
|
+
}),
|
|
17
|
+
(i[r].l = 1 * new Date());
|
|
18
|
+
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
|
|
19
|
+
a.async = 1;
|
|
20
|
+
a.src = g;
|
|
21
|
+
m.parentNode.insertBefore(a, m);
|
|
22
|
+
})(
|
|
23
|
+
window,
|
|
24
|
+
document,
|
|
25
|
+
'script',
|
|
26
|
+
'https://www.google-analytics.com/analytics.js',
|
|
27
|
+
'ga',
|
|
28
|
+
);
|
|
29
|
+
</script>
|
|
30
|
+
<style nonce="__CSP_NONCE__">
|
|
31
|
+
.full-width {
|
|
32
|
+
width: 100%;
|
|
33
|
+
}
|
|
34
|
+
.full-height {
|
|
35
|
+
height: 100%;
|
|
36
|
+
}
|
|
37
|
+
</style>
|
|
38
|
+
</head>
|
|
39
|
+
<body class="full-width full-height">
|
|
40
|
+
<noscript
|
|
41
|
+
>If you're seeing this message, that means
|
|
42
|
+
<strong>JavaScript has been disabled on your browser</strong>, please
|
|
43
|
+
<strong>enable JS</strong> to make this app work.</noscript
|
|
44
|
+
>
|
|
45
|
+
<div id="pui-app-container-" class="full-width full-height"></div>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|
|
Binary file
|