@elliemae/pui-app-bridge 2.0.0-next.24
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/app.config.json +229 -0
- package/dist/cjs/config/app.js +90 -0
- package/dist/cjs/config/microFE.js +162 -0
- package/dist/cjs/constant.js +24 -0
- package/dist/cjs/frame.html +47 -0
- package/dist/cjs/frame.js +79 -0
- package/dist/cjs/index.html +240 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/loaders/index.js +28 -0
- package/dist/cjs/loaders/manifest.js +73 -0
- package/dist/cjs/loaders/script.js +107 -0
- package/dist/cjs/loaders/style.js +93 -0
- package/dist/cjs/microAppFactory.js +305 -0
- package/dist/cjs/microAppHost.js +120 -0
- package/dist/cjs/package.json +4 -0
- package/dist/cjs/tests/constants.js +40 -0
- package/dist/cjs/tests/flights/23.1/app.checksum1.css +3 -0
- package/dist/cjs/tests/flights/23.1/app.checksum1.js +44 -0
- package/dist/cjs/tests/flights/23.1/manifest.json +4 -0
- package/dist/cjs/tests/flights/latest/app.checksum.css +3 -0
- package/dist/cjs/tests/flights/latest/app.checksum.js +44 -0
- package/dist/cjs/tests/flights/latest/manifest.json +4 -0
- package/dist/cjs/tests/hotels/23.1/app.checksum.css +3 -0
- package/dist/cjs/tests/hotels/23.1/app.checksum.js +42 -0
- package/dist/cjs/tests/hotels/23.1/manifest.json +4 -0
- package/dist/cjs/tests/hotels/latest/app.checksum.css +3 -0
- package/dist/cjs/tests/hotels/latest/app.checksum.js +42 -0
- package/dist/cjs/tests/hotels/latest/manifest.json +4 -0
- package/dist/cjs/tests/loan/latest/index.js +92 -0
- package/dist/cjs/tests/loan/latest/manifest.json +3 -0
- package/dist/cjs/tests/scriptingObjects/analytics.js +32 -0
- package/dist/cjs/tests/scriptingObjects/appraisalServiceModule.js +96 -0
- package/dist/cjs/tests/scriptingObjects/constant.js +26 -0
- package/dist/cjs/tests/scriptingObjects/global.js +55 -0
- package/dist/cjs/tests/server.js +29 -0
- package/dist/cjs/tests/serverHandlers.js +192 -0
- package/dist/cjs/tests/task/latest/index.dev.js +58 -0
- package/dist/cjs/tests/task/latest/index.js +58 -0
- package/dist/cjs/tests/task/latest/manifest.json +4 -0
- package/dist/cjs/tests/travelhub/23.1/app.checksum.css +3 -0
- package/dist/cjs/tests/travelhub/23.1/app.checksum.js +27 -0
- package/dist/cjs/tests/travelhub/23.1/landing.checksum1.css +3 -0
- package/dist/cjs/tests/travelhub/23.1/landing.checksum1.js +8 -0
- package/dist/cjs/tests/travelhub/23.1/manifest.json +6 -0
- package/dist/cjs/tests/travelhub/latest/app.checksum.css +3 -0
- package/dist/cjs/tests/travelhub/latest/app.checksum.js +27 -0
- package/dist/cjs/tests/travelhub/latest/landing.checksum.css +3 -0
- package/dist/cjs/tests/travelhub/latest/landing.checksum.js +8 -0
- package/dist/cjs/tests/travelhub/latest/manifest.json +6 -0
- package/dist/cjs/tests/utils.js +63 -0
- package/dist/cjs/typings/appInfo.js +16 -0
- package/dist/cjs/typings/common.js +16 -0
- package/dist/cjs/typings/guest.js +16 -0
- package/dist/cjs/typings/host.js +16 -0
- package/dist/cjs/typings/index.js +16 -0
- package/dist/cjs/utils.js +34 -0
- package/dist/cjs/window.js +54 -0
- package/dist/esm/app.config.json +229 -0
- package/dist/esm/config/app.js +60 -0
- package/dist/esm/config/microFE.js +132 -0
- package/dist/esm/constant.js +4 -0
- package/dist/esm/frame.html +47 -0
- package/dist/esm/frame.js +59 -0
- package/dist/esm/index.html +240 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/loaders/index.js +8 -0
- package/dist/esm/loaders/manifest.js +53 -0
- package/dist/esm/loaders/script.js +87 -0
- package/dist/esm/loaders/style.js +73 -0
- package/dist/esm/microAppFactory.js +285 -0
- package/dist/esm/microAppHost.js +100 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/tests/constants.js +20 -0
- package/dist/esm/tests/flights/23.1/app.checksum1.css +3 -0
- package/dist/esm/tests/flights/23.1/app.checksum1.js +43 -0
- package/dist/esm/tests/flights/23.1/manifest.json +4 -0
- package/dist/esm/tests/flights/latest/app.checksum.css +3 -0
- package/dist/esm/tests/flights/latest/app.checksum.js +43 -0
- package/dist/esm/tests/flights/latest/manifest.json +4 -0
- package/dist/esm/tests/hotels/23.1/app.checksum.css +3 -0
- package/dist/esm/tests/hotels/23.1/app.checksum.js +41 -0
- package/dist/esm/tests/hotels/23.1/manifest.json +4 -0
- package/dist/esm/tests/hotels/latest/app.checksum.css +3 -0
- package/dist/esm/tests/hotels/latest/app.checksum.js +41 -0
- package/dist/esm/tests/hotels/latest/manifest.json +4 -0
- package/dist/esm/tests/loan/latest/index.js +91 -0
- package/dist/esm/tests/loan/latest/manifest.json +3 -0
- package/dist/esm/tests/scriptingObjects/analytics.js +12 -0
- package/dist/esm/tests/scriptingObjects/appraisalServiceModule.js +76 -0
- package/dist/esm/tests/scriptingObjects/constant.js +6 -0
- package/dist/esm/tests/scriptingObjects/global.js +35 -0
- package/dist/esm/tests/server.js +9 -0
- package/dist/esm/tests/serverHandlers.js +162 -0
- package/dist/esm/tests/task/latest/index.dev.js +57 -0
- package/dist/esm/tests/task/latest/index.js +57 -0
- package/dist/esm/tests/task/latest/manifest.json +4 -0
- package/dist/esm/tests/travelhub/23.1/app.checksum.css +3 -0
- package/dist/esm/tests/travelhub/23.1/app.checksum.js +26 -0
- package/dist/esm/tests/travelhub/23.1/landing.checksum1.css +3 -0
- package/dist/esm/tests/travelhub/23.1/landing.checksum1.js +7 -0
- package/dist/esm/tests/travelhub/23.1/manifest.json +6 -0
- package/dist/esm/tests/travelhub/latest/app.checksum.css +3 -0
- package/dist/esm/tests/travelhub/latest/app.checksum.js +26 -0
- package/dist/esm/tests/travelhub/latest/landing.checksum.css +3 -0
- package/dist/esm/tests/travelhub/latest/landing.checksum.js +7 -0
- package/dist/esm/tests/travelhub/latest/manifest.json +6 -0
- package/dist/esm/tests/utils.js +33 -0
- package/dist/esm/typings/appInfo.js +0 -0
- package/dist/esm/typings/common.js +0 -0
- package/dist/esm/typings/guest.js +0 -0
- package/dist/esm/typings/host.js +0 -0
- package/dist/esm/typings/index.js +0 -0
- package/dist/esm/utils.js +14 -0
- package/dist/esm/window.js +34 -0
- package/dist/public/app.config.json +229 -0
- package/dist/public/creditService/latest/creditService.checksum.js +3 -0
- package/dist/public/creditService/latest/creditService.checksum.js.br +1 -0
- package/dist/public/creditService/latest/creditService.checksum.js.gz +0 -0
- package/dist/public/creditService/latest/creditService.checksum.js.map +1 -0
- package/dist/public/creditService/latest/manifest.json +3 -0
- package/dist/public/frame.html +1 -0
- package/dist/public/guest/businessObjects.js +3 -0
- package/dist/public/guest/businessObjects.js.br +0 -0
- package/dist/public/guest/businessObjects.js.gz +0 -0
- package/dist/public/guest/businessObjects.js.map +1 -0
- package/dist/public/guest/util.js +3 -0
- package/dist/public/guest/util.js.br +2 -0
- package/dist/public/guest/util.js.gz +0 -0
- package/dist/public/guest/util.js.map +1 -0
- package/dist/public/index.html +1 -0
- package/dist/public/init.js +3 -0
- package/dist/public/init.js.br +0 -0
- package/dist/public/init.js.gz +0 -0
- package/dist/public/init.js.map +1 -0
- package/dist/public/js/emuiAppBridge.20469d6f81dbac45a9e5.js +24 -0
- package/dist/public/js/emuiAppBridge.20469d6f81dbac45a9e5.js.br +0 -0
- package/dist/public/js/emuiAppBridge.20469d6f81dbac45a9e5.js.gz +0 -0
- package/dist/public/js/emuiAppBridge.20469d6f81dbac45a9e5.js.map +1 -0
- package/dist/public/latest/app.config.json +196 -0
- package/dist/public/loan-object.js +3 -0
- 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 -0
- package/dist/public/loanValidation/latest/loanValidation.checksum.js +3 -0
- package/dist/public/loanValidation/latest/loanValidation.checksum.js.br +0 -0
- package/dist/public/loanValidation/latest/loanValidation.checksum.js.gz +0 -0
- package/dist/public/loanValidation/latest/loanValidation.checksum.js.map +1 -0
- package/dist/public/loanValidation/latest/manifest.json +3 -0
- package/dist/public/pricingService/latest/manifest.json +3 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js +57 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js.br +0 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js.gz +0 -0
- package/dist/public/pricingService/latest/pricingService.checksum.js.map +1 -0
- package/dist/public/utils.js +3 -0
- package/dist/public/utils.js.br +0 -0
- package/dist/public/utils.js.gz +0 -0
- package/dist/public/utils.js.map +1 -0
- package/dist/types/config/app.d.ts +41 -0
- package/dist/types/config/microFE.d.ts +10 -0
- package/dist/types/constant.d.ts +1 -0
- package/dist/types/frame.d.ts +14 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/loaders/index.d.ts +3 -0
- package/dist/types/loaders/manifest.d.ts +10 -0
- package/dist/types/loaders/script.d.ts +18 -0
- package/dist/types/loaders/style.d.ts +17 -0
- package/dist/types/microAppFactory.d.ts +22 -0
- package/dist/types/microAppHost.d.ts +38 -0
- package/dist/types/tests/appFactoryFailure.test.d.ts +1 -0
- package/dist/types/tests/constants.d.ts +9 -0
- package/dist/types/tests/factory.test.d.ts +1 -0
- package/dist/types/tests/flights/23.1/app.checksum1.d.ts +0 -0
- package/dist/types/tests/flights/latest/app.checksum.d.ts +0 -0
- package/dist/types/tests/host.test.d.ts +1 -0
- package/dist/types/tests/hotels/23.1/app.checksum.d.ts +0 -0
- package/dist/types/tests/hotels/latest/app.checksum.d.ts +0 -0
- package/dist/types/tests/loan/latest/index.d.ts +0 -0
- package/dist/types/tests/pubsubAPI.test.d.ts +1 -0
- package/dist/types/tests/scriptingObject.test.d.ts +1 -0
- package/dist/types/tests/scriptingObjectEvents.test.d.ts +1 -0
- package/dist/types/tests/scriptingObjects/analytics.d.ts +6 -0
- package/dist/types/tests/scriptingObjects/appraisalServiceModule.d.ts +33 -0
- package/dist/types/tests/scriptingObjects/constant.d.ts +2 -0
- package/dist/types/tests/scriptingObjects/global.d.ts +9 -0
- package/dist/types/tests/server.d.ts +1 -0
- package/dist/types/tests/serverHandlers.d.ts +5 -0
- package/dist/types/tests/task/latest/index.d.ts +0 -0
- package/dist/types/tests/task/latest/index.dev.d.ts +0 -0
- package/dist/types/tests/travelhub/23.1/app.checksum.d.ts +0 -0
- package/dist/types/tests/travelhub/23.1/landing.checksum1.d.ts +0 -0
- package/dist/types/tests/travelhub/latest/app.checksum.d.ts +0 -0
- package/dist/types/tests/travelhub/latest/landing.checksum.d.ts +0 -0
- package/dist/types/tests/utils.d.ts +7 -0
- package/dist/types/typings/appInfo.d.ts +9 -0
- package/dist/types/typings/common.d.ts +3 -0
- package/dist/types/typings/guest.d.ts +93 -0
- package/dist/types/typings/host.d.ts +120 -0
- package/dist/types/typings/index.d.ts +5 -0
- package/dist/types/utils.d.ts +4 -0
- package/dist/types/window.d.ts +26 -0
- package/dist/umd/app.config.json +229 -0
- package/dist/umd/creditService/latest/creditService.checksum.js +3 -0
- package/dist/umd/creditService/latest/creditService.checksum.js.br +1 -0
- package/dist/umd/creditService/latest/creditService.checksum.js.gz +0 -0
- package/dist/umd/creditService/latest/creditService.checksum.js.map +1 -0
- package/dist/umd/creditService/latest/manifest.json +3 -0
- package/dist/umd/frame.html +1 -0
- package/dist/umd/guest/businessObjects.js +3 -0
- package/dist/umd/guest/businessObjects.js.br +0 -0
- package/dist/umd/guest/businessObjects.js.gz +0 -0
- package/dist/umd/guest/businessObjects.js.map +1 -0
- package/dist/umd/guest/util.js +3 -0
- package/dist/umd/guest/util.js.br +2 -0
- package/dist/umd/guest/util.js.gz +0 -0
- package/dist/umd/guest/util.js.map +1 -0
- package/dist/umd/index.html +1 -0
- package/dist/umd/index.js +24 -0
- package/dist/umd/index.js.br +0 -0
- package/dist/umd/index.js.gz +0 -0
- package/dist/umd/index.js.map +1 -0
- package/dist/umd/init.js +3 -0
- package/dist/umd/init.js.br +0 -0
- package/dist/umd/init.js.gz +0 -0
- package/dist/umd/init.js.map +1 -0
- package/dist/umd/latest/app.config.json +196 -0
- package/dist/umd/loan-object.js +3 -0
- 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 -0
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js +3 -0
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js.br +0 -0
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js.gz +0 -0
- package/dist/umd/loanValidation/latest/loanValidation.checksum.js.map +1 -0
- package/dist/umd/loanValidation/latest/manifest.json +3 -0
- package/dist/umd/pricingService/latest/manifest.json +3 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js +57 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js.br +0 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js.gz +0 -0
- package/dist/umd/pricingService/latest/pricingService.checksum.js.map +1 -0
- package/dist/umd/utils.js +3 -0
- package/dist/umd/utils.js.br +0 -0
- package/dist/umd/utils.js.gz +0 -0
- package/dist/umd/utils.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,305 @@
|
|
|
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 __accessCheck = (obj, member, msg) => {
|
|
20
|
+
if (!member.has(obj))
|
|
21
|
+
throw TypeError("Cannot " + msg);
|
|
22
|
+
};
|
|
23
|
+
var __privateGet = (obj, member, getter) => {
|
|
24
|
+
__accessCheck(obj, member, "read from private field");
|
|
25
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
26
|
+
};
|
|
27
|
+
var __privateAdd = (obj, member, value) => {
|
|
28
|
+
if (member.has(obj))
|
|
29
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
30
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
31
|
+
};
|
|
32
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
33
|
+
__accessCheck(obj, member, "write to private field");
|
|
34
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
35
|
+
return value;
|
|
36
|
+
};
|
|
37
|
+
var microAppFactory_exports = {};
|
|
38
|
+
__export(microAppFactory_exports, {
|
|
39
|
+
CMicroAppFactory: () => CMicroAppFactory
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(microAppFactory_exports);
|
|
42
|
+
var import_frame = require("./frame.js");
|
|
43
|
+
var import_window = require("./window.js");
|
|
44
|
+
var import_app = require("./config/app.js");
|
|
45
|
+
var import_microFE = require("./config/microFE.js");
|
|
46
|
+
var import_loaders = require("./loaders/index.js");
|
|
47
|
+
var import_microAppHost = require("./microAppHost.js");
|
|
48
|
+
var _logger, _scriptLoader, _styleLoader, _appConfig, _microFEConfig, _host, _activeGuests, _activeApps, _removeAssetsFromDOM, _addAppToActiveAppList, _waitAndInitApplication, _initApplication, _loadApp, _unloadApp, _mountApp, _unmountApp;
|
|
49
|
+
const APP_CONTAINER_ID_PREFIX = "pui-app-container-";
|
|
50
|
+
const cssType = /\.css$/;
|
|
51
|
+
const isCss = (fileName) => cssType.test(fileName);
|
|
52
|
+
class CMicroAppFactory {
|
|
53
|
+
constructor(params) {
|
|
54
|
+
__privateAdd(this, _logger, void 0);
|
|
55
|
+
__privateAdd(this, _scriptLoader, void 0);
|
|
56
|
+
__privateAdd(this, _styleLoader, void 0);
|
|
57
|
+
__privateAdd(this, _appConfig, new import_app.CAppConfig());
|
|
58
|
+
__privateAdd(this, _microFEConfig, new import_microFE.CMicroFEConfig());
|
|
59
|
+
__privateAdd(this, _host, void 0);
|
|
60
|
+
__privateAdd(this, _activeGuests, /* @__PURE__ */ new Map());
|
|
61
|
+
__privateAdd(this, _activeApps, {});
|
|
62
|
+
__privateAdd(this, _removeAssetsFromDOM, (id, documentEle = document) => {
|
|
63
|
+
__privateGet(this, _activeGuests).delete(id);
|
|
64
|
+
const { elementIds } = __privateGet(this, _activeApps)[id] || {};
|
|
65
|
+
if (elementIds) {
|
|
66
|
+
elementIds.forEach((elementId) => {
|
|
67
|
+
const ele = documentEle.getElementById(elementId);
|
|
68
|
+
if (ele)
|
|
69
|
+
ele.remove();
|
|
70
|
+
});
|
|
71
|
+
delete __privateGet(this, _activeApps)[id];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
__privateAdd(this, _addAppToActiveAppList, (id, documentEle, elementIds) => {
|
|
75
|
+
const app = window.emui?.[id] || {};
|
|
76
|
+
__privateGet(this, _activeApps)[id] = { elementIds };
|
|
77
|
+
__privateGet(this, _activeGuests).set(id, {
|
|
78
|
+
guestWindow: documentEle?.defaultView,
|
|
79
|
+
...app
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
__privateAdd(this, _waitAndInitApplication, (options, requests) => {
|
|
83
|
+
const { id, name, hostUrl, manifestPath, homeRoute, history, theme } = options;
|
|
84
|
+
return Promise.all(requests).then(
|
|
85
|
+
__privateGet(this, _addAppToActiveAppList).bind(null, options.id, options.documentEle)
|
|
86
|
+
).then(
|
|
87
|
+
__privateGet(this, _initApplication).bind(null, {
|
|
88
|
+
id,
|
|
89
|
+
name,
|
|
90
|
+
hostUrl,
|
|
91
|
+
manifestPath,
|
|
92
|
+
homeRoute,
|
|
93
|
+
history,
|
|
94
|
+
theme
|
|
95
|
+
})
|
|
96
|
+
).catch((err) => {
|
|
97
|
+
const message = `Application load failed. Unable to load one or more resources for appId: ${options.id}. ${err.message}`;
|
|
98
|
+
__privateGet(this, _logger).error({
|
|
99
|
+
message,
|
|
100
|
+
appId: options.id,
|
|
101
|
+
exception: err
|
|
102
|
+
});
|
|
103
|
+
throw new Error(message);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
__privateAdd(this, _initApplication, async ({
|
|
107
|
+
id,
|
|
108
|
+
name,
|
|
109
|
+
hostUrl,
|
|
110
|
+
manifestPath,
|
|
111
|
+
homeRoute,
|
|
112
|
+
history,
|
|
113
|
+
theme
|
|
114
|
+
}) => {
|
|
115
|
+
const app = window.emui?.[id];
|
|
116
|
+
if (!app) {
|
|
117
|
+
throw new Error(
|
|
118
|
+
`Application ${name} with ${id} is not found. Most probably the appId property of app.config.json is not set to ${id}`
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
if (!app.init || typeof app.init !== "function")
|
|
122
|
+
throw new Error(
|
|
123
|
+
`Application ${name} with id ${id} doesn't expose init method`
|
|
124
|
+
);
|
|
125
|
+
return app.init({
|
|
126
|
+
host: __privateGet(this, _host),
|
|
127
|
+
hostUrl,
|
|
128
|
+
manifestPath,
|
|
129
|
+
homeRoute,
|
|
130
|
+
prevState: null,
|
|
131
|
+
history,
|
|
132
|
+
theme,
|
|
133
|
+
hostBreakpoint: (0, import_window.getCurrentBreakpoint)(),
|
|
134
|
+
hostViewportSize: (0, import_window.getViewportSize)(),
|
|
135
|
+
logger: __privateGet(this, _logger)
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
__privateAdd(this, _loadApp, async (options) => {
|
|
139
|
+
const { id, files, name, hostUrl, documentEle } = options;
|
|
140
|
+
__privateGet(this, _logger).debug(`Application ${id} is loading...`);
|
|
141
|
+
let assets = files;
|
|
142
|
+
const manifest = await import_loaders.ManifestLoader.get(options);
|
|
143
|
+
assets = import_loaders.ManifestLoader.getFullFileNameofAssets(manifest, files);
|
|
144
|
+
let counter = 0;
|
|
145
|
+
const requests = assets.map((fileName) => {
|
|
146
|
+
counter += 1;
|
|
147
|
+
const resourceOptions = {
|
|
148
|
+
name,
|
|
149
|
+
hostUrl,
|
|
150
|
+
documentEle,
|
|
151
|
+
fileName,
|
|
152
|
+
index: counter
|
|
153
|
+
};
|
|
154
|
+
return !isCss(fileName) ? __privateGet(this, _scriptLoader).add(resourceOptions) : __privateGet(this, _styleLoader).add(resourceOptions);
|
|
155
|
+
});
|
|
156
|
+
await __privateGet(this, _waitAndInitApplication).call(this, options, requests);
|
|
157
|
+
__privateGet(this, _logger).audit({ message: "Application loaded", appId: id });
|
|
158
|
+
});
|
|
159
|
+
__privateAdd(this, _unloadApp, ({ id, hostUrl, documentEle }) => {
|
|
160
|
+
__privateGet(this, _logger).debug(`Application ${id} unloading...`);
|
|
161
|
+
const app = window.emui?.[id];
|
|
162
|
+
if (!app)
|
|
163
|
+
return;
|
|
164
|
+
__privateGet(this, _removeAssetsFromDOM).call(this, id, documentEle);
|
|
165
|
+
__privateGet(this, _scriptLoader).removeDynamicImportedScripts(hostUrl, documentEle);
|
|
166
|
+
__privateGet(this, _scriptLoader).removePrefetchLinks(hostUrl, documentEle);
|
|
167
|
+
__privateGet(this, _styleLoader).removeDynamicImportedStyles(hostUrl, documentEle);
|
|
168
|
+
if (window.emui?.[id])
|
|
169
|
+
delete window.emui[id];
|
|
170
|
+
__privateGet(this, _logger).info({ message: "Application unloaded", appId: id });
|
|
171
|
+
});
|
|
172
|
+
__privateAdd(this, _mountApp, async ({ id, name }) => {
|
|
173
|
+
const app = window.emui?.[id] || {};
|
|
174
|
+
if (!app?.mount || typeof app?.mount !== "function")
|
|
175
|
+
throw new Error(
|
|
176
|
+
`Application ${name} with id ${id} doesn't expose mount method`
|
|
177
|
+
);
|
|
178
|
+
return app.mount({
|
|
179
|
+
containerId: `${APP_CONTAINER_ID_PREFIX}${id}`,
|
|
180
|
+
hostBreakpoint: (0, import_window.getCurrentBreakpoint)(),
|
|
181
|
+
hostViewportSize: (0, import_window.getViewportSize)()
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
__privateAdd(this, _unmountApp, ({ id, name }) => {
|
|
185
|
+
const app = window.emui?.[id] || {};
|
|
186
|
+
if (!app?.unmount)
|
|
187
|
+
return null;
|
|
188
|
+
if (typeof app.unmount !== "function")
|
|
189
|
+
throw new Error(
|
|
190
|
+
`Application ${name} with id ${id} doesn't expose unmount method`
|
|
191
|
+
);
|
|
192
|
+
return app.unmount({
|
|
193
|
+
containerId: `${APP_CONTAINER_ID_PREFIX}${id}`
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
this.getGuests = () => Array.from(__privateGet(this, _activeGuests).values());
|
|
197
|
+
this.getGuest = (guestId) => __privateGet(this, _activeGuests).get(guestId);
|
|
198
|
+
this.init = async () => {
|
|
199
|
+
await __privateGet(this, _appConfig).load();
|
|
200
|
+
__privateGet(this, _microFEConfig).init({
|
|
201
|
+
version: __privateGet(this, _host).version,
|
|
202
|
+
appConfig: __privateGet(this, _appConfig)
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
this.openApp = async (options) => {
|
|
206
|
+
const { id, frameOptions, history, theme } = options;
|
|
207
|
+
const appConfig = __privateGet(this, _microFEConfig).getConfigById(id);
|
|
208
|
+
if (!appConfig) {
|
|
209
|
+
throw new Error(`Application with id ${id} is not found`);
|
|
210
|
+
}
|
|
211
|
+
if (import_frame.Frame.get(id))
|
|
212
|
+
throw new Error(`Application with id ${id} is already open`);
|
|
213
|
+
const frameEle = await import_frame.Frame.create(id, {
|
|
214
|
+
title: appConfig.name,
|
|
215
|
+
...frameOptions
|
|
216
|
+
});
|
|
217
|
+
if (!frameEle?.contentDocument)
|
|
218
|
+
throw new Error("unable to create iframe for the microapp");
|
|
219
|
+
try {
|
|
220
|
+
await __privateGet(this, _loadApp).call(this, {
|
|
221
|
+
...appConfig,
|
|
222
|
+
history,
|
|
223
|
+
theme,
|
|
224
|
+
documentEle: frameEle.contentDocument
|
|
225
|
+
});
|
|
226
|
+
await __privateGet(this, _mountApp).call(this, appConfig);
|
|
227
|
+
} catch (err) {
|
|
228
|
+
__privateGet(this, _unloadApp).call(this, {
|
|
229
|
+
id,
|
|
230
|
+
hostUrl: appConfig.hostUrl,
|
|
231
|
+
documentEle: frameEle.contentDocument
|
|
232
|
+
});
|
|
233
|
+
import_frame.Frame.remove(id);
|
|
234
|
+
throw err;
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
this.closeApp = async (id) => {
|
|
238
|
+
if (!id)
|
|
239
|
+
throw new Error("id is required");
|
|
240
|
+
const appConfig = __privateGet(this, _microFEConfig).getConfigById(id);
|
|
241
|
+
if (!appConfig) {
|
|
242
|
+
throw new Error(`Application with id ${id} is not found`);
|
|
243
|
+
}
|
|
244
|
+
const { name, hostUrl } = appConfig;
|
|
245
|
+
try {
|
|
246
|
+
await __privateGet(this, _unmountApp).call(this, { id, name });
|
|
247
|
+
} finally {
|
|
248
|
+
const frameEle = import_frame.Frame.get(id);
|
|
249
|
+
if (!frameEle?.contentDocument) {
|
|
250
|
+
throw new Error(`Iframe for application with id ${id} is not found`);
|
|
251
|
+
}
|
|
252
|
+
__privateGet(this, _unloadApp).call(this, { id, hostUrl, documentEle: frameEle.contentDocument });
|
|
253
|
+
import_frame.Frame.remove(id);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
this.mountApp = async (id) => {
|
|
257
|
+
if (!id)
|
|
258
|
+
throw new Error("id is required");
|
|
259
|
+
const appConfig = __privateGet(this, _microFEConfig).getConfigById(id);
|
|
260
|
+
if (!appConfig) {
|
|
261
|
+
throw new Error(`Application with id ${id} is not found`);
|
|
262
|
+
}
|
|
263
|
+
await __privateGet(this, _mountApp).call(this, appConfig);
|
|
264
|
+
};
|
|
265
|
+
this.unmountApp = async (id) => {
|
|
266
|
+
if (!id)
|
|
267
|
+
throw new Error("id is required");
|
|
268
|
+
const appConfig = __privateGet(this, _microFEConfig).getConfigById(id);
|
|
269
|
+
if (!appConfig) {
|
|
270
|
+
throw new Error(`Application with id ${id} is not found`);
|
|
271
|
+
}
|
|
272
|
+
await __privateGet(this, _unmountApp).call(this, appConfig);
|
|
273
|
+
};
|
|
274
|
+
this.closeAllApps = async () => {
|
|
275
|
+
await Promise.all(Object.keys(__privateGet(this, _activeApps)).map(this.closeApp));
|
|
276
|
+
};
|
|
277
|
+
const { logger } = params;
|
|
278
|
+
if (!logger)
|
|
279
|
+
throw new Error("logger is required");
|
|
280
|
+
__privateSet(this, _logger, params.logger);
|
|
281
|
+
__privateSet(this, _scriptLoader, new import_loaders.ScriptLoader(logger));
|
|
282
|
+
__privateSet(this, _styleLoader, new import_loaders.StyleLoader(logger));
|
|
283
|
+
__privateSet(this, _host, new import_microAppHost.CMicroAppHost(params));
|
|
284
|
+
}
|
|
285
|
+
// public api
|
|
286
|
+
get host() {
|
|
287
|
+
return __privateGet(this, _host);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
_logger = new WeakMap();
|
|
291
|
+
_scriptLoader = new WeakMap();
|
|
292
|
+
_styleLoader = new WeakMap();
|
|
293
|
+
_appConfig = new WeakMap();
|
|
294
|
+
_microFEConfig = new WeakMap();
|
|
295
|
+
_host = new WeakMap();
|
|
296
|
+
_activeGuests = new WeakMap();
|
|
297
|
+
_activeApps = new WeakMap();
|
|
298
|
+
_removeAssetsFromDOM = new WeakMap();
|
|
299
|
+
_addAppToActiveAppList = new WeakMap();
|
|
300
|
+
_waitAndInitApplication = new WeakMap();
|
|
301
|
+
_initApplication = new WeakMap();
|
|
302
|
+
_loadApp = new WeakMap();
|
|
303
|
+
_unloadApp = new WeakMap();
|
|
304
|
+
_mountApp = new WeakMap();
|
|
305
|
+
_unmountApp = new WeakMap();
|
|
@@ -0,0 +1,120 @@
|
|
|
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 __accessCheck = (obj, member, msg) => {
|
|
20
|
+
if (!member.has(obj))
|
|
21
|
+
throw TypeError("Cannot " + msg);
|
|
22
|
+
};
|
|
23
|
+
var __privateGet = (obj, member, getter) => {
|
|
24
|
+
__accessCheck(obj, member, "read from private field");
|
|
25
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
26
|
+
};
|
|
27
|
+
var __privateAdd = (obj, member, value) => {
|
|
28
|
+
if (member.has(obj))
|
|
29
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
30
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
31
|
+
};
|
|
32
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
33
|
+
__accessCheck(obj, member, "write to private field");
|
|
34
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
35
|
+
return value;
|
|
36
|
+
};
|
|
37
|
+
var microAppHost_exports = {};
|
|
38
|
+
__export(microAppHost_exports, {
|
|
39
|
+
CMicroAppHost: () => CMicroAppHost
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(microAppHost_exports);
|
|
42
|
+
var import_pubsub_js = require("pubsub-js");
|
|
43
|
+
var import_em_ssf_common = require("@elliemae/em-ssf-common");
|
|
44
|
+
var import_frame = require("./frame.js");
|
|
45
|
+
var import_constant = require("./constant.js");
|
|
46
|
+
var _logger, _version, _eventManager, _scriptingObjects;
|
|
47
|
+
class CMicroAppHost {
|
|
48
|
+
constructor(params) {
|
|
49
|
+
__privateAdd(this, _logger, void 0);
|
|
50
|
+
__privateAdd(this, _version, void 0);
|
|
51
|
+
__privateAdd(this, _eventManager, void 0);
|
|
52
|
+
__privateAdd(this, _scriptingObjects, /* @__PURE__ */ new Map());
|
|
53
|
+
this.setAppWindowSize = (appSize) => {
|
|
54
|
+
const { appId, size } = appSize;
|
|
55
|
+
const frameEle = document.getElementById(
|
|
56
|
+
`${import_frame.FRAME_CONTAINER_ID_PREFIX}${appId}`
|
|
57
|
+
);
|
|
58
|
+
if (frameEle) {
|
|
59
|
+
frameEle.style.height = `${size.height}px`;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
// Scripting Object methods
|
|
63
|
+
this.getObject = (objectId) => {
|
|
64
|
+
const id = objectId.toLowerCase();
|
|
65
|
+
const data = __privateGet(this, _scriptingObjects).get(id);
|
|
66
|
+
return Promise.resolve(data || null);
|
|
67
|
+
};
|
|
68
|
+
this.registerScriptingObject = (so) => {
|
|
69
|
+
if (!so?.id || !so?._toJSON) {
|
|
70
|
+
throw new Error("Object is not derived from ScriptingObject");
|
|
71
|
+
}
|
|
72
|
+
const objectId = so.id.toLowerCase();
|
|
73
|
+
if (objectId === "module")
|
|
74
|
+
throw new Error(
|
|
75
|
+
"Do not publish the module object. Create a concrete object derived from it."
|
|
76
|
+
);
|
|
77
|
+
if (__privateGet(this, _scriptingObjects).has(objectId))
|
|
78
|
+
throw new Error(`Scripting Object ${so.id} already exists`);
|
|
79
|
+
__privateGet(this, _scriptingObjects).set(objectId, so);
|
|
80
|
+
};
|
|
81
|
+
this.unregisterScriptingObject = (objectId) => {
|
|
82
|
+
__privateGet(this, _scriptingObjects).delete(
|
|
83
|
+
objectId.toLowerCase()
|
|
84
|
+
);
|
|
85
|
+
};
|
|
86
|
+
this.dispatchEvent = async ({
|
|
87
|
+
event: { id, name, requiresFeedback, scriptingObject },
|
|
88
|
+
eventParams
|
|
89
|
+
}) => __privateGet(this, _eventManager).dispatchEvent({
|
|
90
|
+
event: { id, name, requiresFeedback, scriptingObject },
|
|
91
|
+
eventParams
|
|
92
|
+
});
|
|
93
|
+
this.addEventListener = ({
|
|
94
|
+
eventId,
|
|
95
|
+
listener
|
|
96
|
+
}) => __privateGet(this, _eventManager).subscribe({ eventId, listener });
|
|
97
|
+
this.removeEventListener = ({
|
|
98
|
+
eventId,
|
|
99
|
+
subscriptionId
|
|
100
|
+
}) => __privateGet(this, _eventManager).unsubscribe({ eventId, subscriptionId });
|
|
101
|
+
this.removeAllEventListeners = () => __privateGet(this, _eventManager).unsubscribeAll();
|
|
102
|
+
// deprecated methods
|
|
103
|
+
this.publish = (eventId, data) => (0, import_pubsub_js.publish)(eventId, data);
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
105
|
+
this.subscribe = (eventId, listener) => (0, import_pubsub_js.subscribe)(eventId, listener);
|
|
106
|
+
this.unsubscribe = (token) => {
|
|
107
|
+
(0, import_pubsub_js.unsubscribe)(token);
|
|
108
|
+
};
|
|
109
|
+
__privateSet(this, _logger, params.logger);
|
|
110
|
+
__privateSet(this, _version, params?.version || import_constant.LATEST_VERSION);
|
|
111
|
+
__privateSet(this, _eventManager, new import_em_ssf_common.EventManager());
|
|
112
|
+
}
|
|
113
|
+
get version() {
|
|
114
|
+
return __privateGet(this, _version);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
_logger = new WeakMap();
|
|
118
|
+
_version = new WeakMap();
|
|
119
|
+
_eventManager = new WeakMap();
|
|
120
|
+
_scriptingObjects = new WeakMap();
|
|
@@ -0,0 +1,40 @@
|
|
|
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 constants_exports = {};
|
|
20
|
+
__export(constants_exports, {
|
|
21
|
+
APP_CONFIG_JSON_URL: () => APP_CONFIG_JSON_URL,
|
|
22
|
+
FLIGHTS_APP_ID: () => FLIGHTS_APP_ID,
|
|
23
|
+
HOTELS_APP_ID: () => HOTELS_APP_ID,
|
|
24
|
+
LATEST_VERSION: () => LATEST_VERSION,
|
|
25
|
+
LOAN_APP_ID: () => LOAN_APP_ID,
|
|
26
|
+
LOAN_SAVED_EVENT: () => LOAN_SAVED_EVENT,
|
|
27
|
+
PRE_COMMIT_EVENT: () => PRE_COMMIT_EVENT,
|
|
28
|
+
RELEASE_VERSION: () => RELEASE_VERSION,
|
|
29
|
+
TASK_APP_ID: () => TASK_APP_ID
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(constants_exports);
|
|
32
|
+
const LATEST_VERSION = "latest";
|
|
33
|
+
const RELEASE_VERSION = "23.1.0";
|
|
34
|
+
const LOAN_APP_ID = "loanapp";
|
|
35
|
+
const TASK_APP_ID = "taskapp";
|
|
36
|
+
const FLIGHTS_APP_ID = "flights";
|
|
37
|
+
const HOTELS_APP_ID = "hotels";
|
|
38
|
+
const APP_CONFIG_JSON_URL = "/latest/app.config.json";
|
|
39
|
+
const LOAN_SAVED_EVENT = "loanSaved";
|
|
40
|
+
const PRE_COMMIT_EVENT = "preCommit";
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(function() {
|
|
3
|
+
const appId = "flights";
|
|
4
|
+
const appName = "Flights App";
|
|
5
|
+
const getWindow = () => {
|
|
6
|
+
try {
|
|
7
|
+
window.parent.document;
|
|
8
|
+
return window.parent;
|
|
9
|
+
} catch (err) {
|
|
10
|
+
return window;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
let host = null;
|
|
14
|
+
let parentHistory = null;
|
|
15
|
+
let logger = null;
|
|
16
|
+
const browserWindow = getWindow();
|
|
17
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
18
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
19
|
+
browserWindow.emui[appId].init = async (options) => {
|
|
20
|
+
host = options.host;
|
|
21
|
+
parentHistory = options.history;
|
|
22
|
+
logger = options.logger;
|
|
23
|
+
return Promise.resolve();
|
|
24
|
+
};
|
|
25
|
+
browserWindow.emui[appId].mount = async () => {
|
|
26
|
+
const mainElement = document.createElement("main");
|
|
27
|
+
const pageHeaderEle = document.createElement("h1");
|
|
28
|
+
pageHeaderEle.textContent = appName;
|
|
29
|
+
pageHeaderEle.id = "header";
|
|
30
|
+
mainElement.appendChild(pageHeaderEle);
|
|
31
|
+
const versionEle = document.createElement("p");
|
|
32
|
+
versionEle.textContent = "Version: 23.1";
|
|
33
|
+
versionEle.id = "version";
|
|
34
|
+
mainElement.appendChild(versionEle);
|
|
35
|
+
document.body.appendChild(mainElement);
|
|
36
|
+
return Promise.resolve();
|
|
37
|
+
};
|
|
38
|
+
browserWindow.emui[appId].unmount = () => {
|
|
39
|
+
const mainEle = document.getElementsByTagName("main")[0];
|
|
40
|
+
if (mainEle)
|
|
41
|
+
mainEle.remove();
|
|
42
|
+
return Promise.resolve();
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(function() {
|
|
3
|
+
const appId = "flights";
|
|
4
|
+
const appName = "Flights App";
|
|
5
|
+
const getWindow = () => {
|
|
6
|
+
try {
|
|
7
|
+
window.parent.document;
|
|
8
|
+
return window.parent;
|
|
9
|
+
} catch (err) {
|
|
10
|
+
return window;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
let host = null;
|
|
14
|
+
let parentHistory = null;
|
|
15
|
+
let logger = null;
|
|
16
|
+
const browserWindow = getWindow();
|
|
17
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
18
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
19
|
+
browserWindow.emui[appId].init = async (options) => {
|
|
20
|
+
host = options.host;
|
|
21
|
+
parentHistory = options.history;
|
|
22
|
+
logger = options.logger;
|
|
23
|
+
return Promise.resolve();
|
|
24
|
+
};
|
|
25
|
+
browserWindow.emui[appId].mount = async () => {
|
|
26
|
+
const mainElement = document.createElement("main");
|
|
27
|
+
const pageHeaderEle = document.createElement("h1");
|
|
28
|
+
pageHeaderEle.textContent = appName;
|
|
29
|
+
pageHeaderEle.id = "header";
|
|
30
|
+
mainElement.appendChild(pageHeaderEle);
|
|
31
|
+
const versionEle = document.createElement("p");
|
|
32
|
+
versionEle.textContent = "Version: latest";
|
|
33
|
+
versionEle.id = "version";
|
|
34
|
+
mainElement.appendChild(versionEle);
|
|
35
|
+
document.body.appendChild(mainElement);
|
|
36
|
+
return Promise.resolve();
|
|
37
|
+
};
|
|
38
|
+
browserWindow.emui[appId].unmount = () => {
|
|
39
|
+
const mainEle = document.getElementsByTagName("main")[0];
|
|
40
|
+
if (mainEle)
|
|
41
|
+
mainEle.remove();
|
|
42
|
+
return Promise.resolve();
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(function() {
|
|
3
|
+
const appId = "hotels";
|
|
4
|
+
const appName = "Hotels App";
|
|
5
|
+
const getWindow = () => {
|
|
6
|
+
try {
|
|
7
|
+
window.parent.document;
|
|
8
|
+
return window.parent;
|
|
9
|
+
} catch (err) {
|
|
10
|
+
return window;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
let host = null;
|
|
14
|
+
let parentHistory = null;
|
|
15
|
+
let logger = null;
|
|
16
|
+
const browserWindow = getWindow();
|
|
17
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
18
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
19
|
+
browserWindow.emui[appId].init = async (options) => {
|
|
20
|
+
host = options.host;
|
|
21
|
+
parentHistory = options.history;
|
|
22
|
+
logger = options.logger;
|
|
23
|
+
return Promise.resolve();
|
|
24
|
+
};
|
|
25
|
+
browserWindow.emui[appId].mount = async () => {
|
|
26
|
+
const mainElement = document.createElement("main");
|
|
27
|
+
const pageHeaderEle = document.createElement("h1");
|
|
28
|
+
pageHeaderEle.textContent = appName;
|
|
29
|
+
mainElement.appendChild(pageHeaderEle);
|
|
30
|
+
const versionEle = document.createElement("p");
|
|
31
|
+
versionEle.textContent = "Version: 23.1";
|
|
32
|
+
mainElement.appendChild(versionEle);
|
|
33
|
+
document.body.appendChild(mainElement);
|
|
34
|
+
return Promise.resolve();
|
|
35
|
+
};
|
|
36
|
+
browserWindow.emui[appId].unmount = () => {
|
|
37
|
+
const mainEle = document.getElementsByTagName("main")[0];
|
|
38
|
+
if (mainEle)
|
|
39
|
+
mainEle.remove();
|
|
40
|
+
return Promise.resolve();
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(function() {
|
|
3
|
+
const appId = "hotels";
|
|
4
|
+
const appName = "Hotels App";
|
|
5
|
+
const getWindow = () => {
|
|
6
|
+
try {
|
|
7
|
+
window.parent.document;
|
|
8
|
+
return window.parent;
|
|
9
|
+
} catch (err) {
|
|
10
|
+
return window;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
let host = null;
|
|
14
|
+
let parentHistory = null;
|
|
15
|
+
let logger = null;
|
|
16
|
+
const browserWindow = getWindow();
|
|
17
|
+
browserWindow.emui = browserWindow.emui || {};
|
|
18
|
+
browserWindow.emui[appId] = browserWindow.emui[appId] || {};
|
|
19
|
+
browserWindow.emui[appId].init = async (options) => {
|
|
20
|
+
host = options.host;
|
|
21
|
+
parentHistory = options.history;
|
|
22
|
+
logger = options.logger;
|
|
23
|
+
return Promise.resolve();
|
|
24
|
+
};
|
|
25
|
+
browserWindow.emui[appId].mount = async () => {
|
|
26
|
+
const mainElement = document.createElement("main");
|
|
27
|
+
const pageHeaderEle = document.createElement("h1");
|
|
28
|
+
pageHeaderEle.textContent = appName;
|
|
29
|
+
mainElement.appendChild(pageHeaderEle);
|
|
30
|
+
const versionEle = document.createElement("p");
|
|
31
|
+
versionEle.textContent = "Version: latest";
|
|
32
|
+
mainElement.appendChild(versionEle);
|
|
33
|
+
document.body.appendChild(mainElement);
|
|
34
|
+
return Promise.resolve();
|
|
35
|
+
};
|
|
36
|
+
browserWindow.emui[appId].unmount = () => {
|
|
37
|
+
const mainEle = document.getElementsByTagName("main")[0];
|
|
38
|
+
if (mainEle)
|
|
39
|
+
mainEle.remove();
|
|
40
|
+
return Promise.resolve();
|
|
41
|
+
};
|
|
42
|
+
})();
|