@elliemae/microfe-common 2.24.0 → 2.26.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/cjs/app.js +33 -0
  2. package/dist/cjs/auditThrottler.js +60 -0
  3. package/dist/cjs/config.js +65 -0
  4. package/dist/cjs/frame.html +47 -0
  5. package/dist/cjs/frame.js +61 -0
  6. package/dist/cjs/history.js +27 -0
  7. package/dist/cjs/host.js +105 -0
  8. package/dist/cjs/index.js +2 -0
  9. package/dist/cjs/loader.js +158 -0
  10. package/dist/cjs/logRecords.js +57 -0
  11. package/dist/cjs/logger.js +34 -0
  12. package/dist/cjs/manifestLoader.js +66 -0
  13. package/dist/cjs/scriptLoader.js +71 -0
  14. package/dist/cjs/styleLoader.js +57 -0
  15. package/dist/cjs/tests/loan/latest/index.js +80 -0
  16. package/dist/cjs/tests/loan/latest/manifest.json +3 -0
  17. package/dist/cjs/tests/server.js +29 -0
  18. package/dist/cjs/tests/serverHandlers.js +81 -0
  19. package/dist/cjs/tests/task/latest/index.js +58 -0
  20. package/dist/cjs/tests/task/latest/manifest.json +3 -0
  21. package/dist/cjs/typings/guest.js +16 -0
  22. package/dist/cjs/typings/host.js +16 -0
  23. package/dist/cjs/typings/index.js +16 -0
  24. package/dist/cjs/typings/microapp.js +16 -0
  25. package/dist/cjs/utils.js +33 -0
  26. package/dist/cjs/window.js +63 -0
  27. package/dist/esm/app.js +13 -0
  28. package/dist/esm/auditThrottler.js +40 -0
  29. package/dist/esm/config.js +35 -0
  30. package/dist/esm/frame.html +47 -0
  31. package/dist/esm/frame.js +41 -0
  32. package/dist/esm/history.js +7 -0
  33. package/dist/esm/host.js +85 -0
  34. package/dist/esm/index.js +2 -0
  35. package/dist/esm/loader.js +145 -0
  36. package/dist/esm/logRecords.js +37 -0
  37. package/dist/esm/logger.js +17 -0
  38. package/dist/esm/manifestLoader.js +46 -0
  39. package/dist/esm/scriptLoader.js +51 -0
  40. package/dist/esm/styleLoader.js +37 -0
  41. package/dist/esm/tests/loan/latest/index.js +79 -0
  42. package/dist/esm/tests/loan/latest/manifest.json +3 -0
  43. package/dist/esm/tests/server.js +9 -0
  44. package/dist/esm/tests/serverHandlers.js +51 -0
  45. package/dist/esm/tests/task/latest/index.js +57 -0
  46. package/dist/esm/tests/task/latest/manifest.json +3 -0
  47. package/dist/esm/typings/guest.js +0 -0
  48. package/dist/esm/typings/host.js +0 -0
  49. package/dist/esm/typings/index.js +0 -0
  50. package/dist/esm/typings/microapp.js +0 -0
  51. package/dist/esm/utils.js +13 -0
  52. package/dist/esm/window.js +43 -0
  53. package/dist/types/lib/app.d.ts +2 -0
  54. package/dist/types/lib/auditThrottler.d.ts +29 -0
  55. package/dist/types/lib/config.d.ts +25 -0
  56. package/dist/types/lib/frame.d.ts +10 -0
  57. package/dist/types/lib/history.d.ts +2 -0
  58. package/dist/types/lib/host.d.ts +42 -0
  59. package/dist/types/lib/index.d.ts +2 -0
  60. package/dist/types/lib/loader.d.ts +9 -0
  61. package/dist/types/lib/logRecords.d.ts +14 -0
  62. package/dist/types/lib/logger.d.ts +1 -0
  63. package/dist/types/lib/manifestLoader.d.ts +7 -0
  64. package/dist/types/lib/scriptLoader.d.ts +6 -0
  65. package/dist/types/lib/styleLoader.d.ts +5 -0
  66. package/dist/types/lib/tests/auditThrottler.test.d.ts +1 -0
  67. package/dist/types/lib/tests/loader.test.d.ts +1 -0
  68. package/dist/types/lib/tests/loan/latest/index.d.ts +0 -0
  69. package/dist/types/lib/tests/server.d.ts +1 -0
  70. package/dist/types/lib/tests/serverHandlers.d.ts +1 -0
  71. package/dist/types/lib/tests/task/latest/index.d.ts +0 -0
  72. package/dist/types/lib/typings/guest.d.ts +67 -0
  73. package/dist/types/lib/typings/host.d.ts +60 -0
  74. package/dist/types/lib/typings/index.d.ts +3 -0
  75. package/dist/types/lib/typings/microapp.d.ts +17 -0
  76. package/dist/types/lib/utils.d.ts +3 -0
  77. package/dist/types/lib/window.d.ts +27 -0
  78. package/dist/types/tsconfig.tsbuildinfo +1 -1
  79. package/package.json +7 -3
@@ -0,0 +1,66 @@
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 manifestLoader_exports = {};
20
+ __export(manifestLoader_exports, {
21
+ getAppManifest: () => getAppManifest,
22
+ getFullFileNameofAssetsFromManifest: () => getFullFileNameofAssetsFromManifest
23
+ });
24
+ module.exports = __toCommonJS(manifestLoader_exports);
25
+ var import_utils = require("./utils.js");
26
+ var import_logger = require("./logger.js");
27
+ var import_logRecords = require("./logRecords.js");
28
+ const getUnVersionedManifestPath = (path) => path.replace(/\/\d+\.\d+/, "/latest");
29
+ const getAppManifest = async ({
30
+ hostUrl,
31
+ manifestPath
32
+ }) => {
33
+ if (!hostUrl || !manifestPath)
34
+ throw new Error(
35
+ "Unable to get app manifest. hostUrl and manifestPath are required."
36
+ );
37
+ const url = new URL(
38
+ `${manifestPath.replace(/\/?$/, "/")}manifest.json`,
39
+ hostUrl
40
+ );
41
+ const response = await fetch((0, import_utils.removeDoubleSlash)(url.href));
42
+ const { headers } = response;
43
+ const contentType = headers?.get?.("content-type") ?? "";
44
+ if (contentType.includes("application/json")) {
45
+ const data = await response.json();
46
+ return data;
47
+ }
48
+ const unVersionedManifestPath = getUnVersionedManifestPath(manifestPath);
49
+ if (manifestPath !== unVersionedManifestPath) {
50
+ return getAppManifest({
51
+ hostUrl,
52
+ manifestPath: getUnVersionedManifestPath(manifestPath)
53
+ });
54
+ }
55
+ throw new Error("manifest.json is not available for the application");
56
+ };
57
+ const getFullFileNameofAssetsFromManifest = (manifest, assetNames = []) => assetNames.reduce((assets, assetName) => {
58
+ const fullFileName = manifest[assetName];
59
+ if (fullFileName) assets.push(fullFileName);
60
+ else {
61
+ const logRecord = import_logRecords.logRecords.ASSET_NOT_FOUND_IN_MANIFEST(assetName);
62
+ import_logger.logger.error(logRecord);
63
+ throw new Error(logRecord.message);
64
+ }
65
+ return assets;
66
+ }, []);
@@ -0,0 +1,71 @@
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 scriptLoader_exports = {};
20
+ __export(scriptLoader_exports, {
21
+ APP_SCRIPT_ID_PREFIX: () => APP_SCRIPT_ID_PREFIX,
22
+ addScriptToDOM: () => addScriptToDOM,
23
+ removeDynamicImportedScripts: () => removeDynamicImportedScripts,
24
+ removePrefetchLinks: () => removePrefetchLinks,
25
+ removeScriptFromDOM: () => removeScriptFromDOM
26
+ });
27
+ module.exports = __toCommonJS(scriptLoader_exports);
28
+ var import_utils = require("./utils.js");
29
+ const APP_SCRIPT_ID_PREFIX = "emui-script-";
30
+ const HEAD_SCRIPTS = /(?:emuiDiagnostics|global|global-prod|emuiUserMonitoring)(?:..*)?.js/;
31
+ const isHeadScript = (scriptSrc) => HEAD_SCRIPTS.test(scriptSrc);
32
+ const addScriptToDOM = ({ name, hostUrl, documentEle }, fileName, index) => {
33
+ if (!hostUrl)
34
+ throw new Error("Unable to add scripts to DOM. hostUrl is required.");
35
+ return new Promise((resolve, reject) => {
36
+ const ele = documentEle.createElement("script");
37
+ if (!ele) reject(new Error("Unable to insert Application scripts."));
38
+ ele.id = `${APP_SCRIPT_ID_PREFIX}${name}-${index}`;
39
+ const url = new URL(fileName, hostUrl);
40
+ ele.src = (0, import_utils.removeDoubleSlash)(url.href);
41
+ ele.onload = resolve.bind(null, ele.id);
42
+ ele.onerror = reject.bind(null, ele.id);
43
+ ele.async = false;
44
+ if (isHeadScript(ele.src)) documentEle.head.appendChild(ele);
45
+ else documentEle.body.appendChild(ele);
46
+ });
47
+ };
48
+ const removeScriptFromDOM = (elementId = "", documentEle = document) => new Promise((resolve) => {
49
+ const ele = documentEle.getElementById(elementId);
50
+ if (!ele) console.warn(new Error(`script with id ${elementId} not found`));
51
+ ele.remove();
52
+ resolve();
53
+ });
54
+ const removeDynamicImportedScripts = (hostUrl, documentEle) => {
55
+ const hostPattern = new RegExp(hostUrl, "i");
56
+ const scriptElements = documentEle.getElementsByTagName("script");
57
+ for (let index = scriptElements.length - 1; index >= 0; index -= 1) {
58
+ const scriptEle = scriptElements[index];
59
+ const { src } = scriptEle;
60
+ if (hostPattern.test(src)) scriptEle.remove();
61
+ }
62
+ };
63
+ const removePrefetchLinks = (hostUrl, documentEle) => {
64
+ const hostPattern = new RegExp(hostUrl, "i");
65
+ const prefetchElements = documentEle.querySelectorAll('[rel="prefetch"]');
66
+ for (let index = prefetchElements.length - 1; index >= 0; index -= 1) {
67
+ const ele = prefetchElements[index];
68
+ const { href } = ele;
69
+ if (hostPattern.test(href)) ele.remove();
70
+ }
71
+ };
@@ -0,0 +1,57 @@
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 styleLoader_exports = {};
20
+ __export(styleLoader_exports, {
21
+ APP_STYLE_ID_PREFIX: () => APP_STYLE_ID_PREFIX,
22
+ addStylesToDOM: () => addStylesToDOM,
23
+ removeDynamicImportedStyles: () => removeDynamicImportedStyles,
24
+ removeStyleFromDOM: () => removeStyleFromDOM
25
+ });
26
+ module.exports = __toCommonJS(styleLoader_exports);
27
+ var import_utils = require("./utils.js");
28
+ const APP_STYLE_ID_PREFIX = "emui-style-";
29
+ const addStylesToDOM = ({ name, hostUrl, documentEle }, fileName, index) => {
30
+ if (!hostUrl)
31
+ throw new Error("Unable to add styles to DOM. hostUrl is required.");
32
+ return new Promise((resolve, reject) => {
33
+ const ele = documentEle.createElement("link");
34
+ if (!ele) reject(new Error("Unable to insert Application styles."));
35
+ ele.id = `${APP_STYLE_ID_PREFIX}${name}-${index}`;
36
+ ele.rel = "stylesheet";
37
+ const url = new URL(fileName, hostUrl);
38
+ ele.href = (0, import_utils.removeDoubleSlash)(url.href);
39
+ ele.onload = resolve.bind(null, ele.id);
40
+ documentEle.head.appendChild(ele);
41
+ });
42
+ };
43
+ const removeStyleFromDOM = (elementId = "", documentEle = document) => new Promise((resolve) => {
44
+ const ele = documentEle.getElementById(elementId);
45
+ if (!ele) console.warn(new Error(`style with id ${elementId} not found`));
46
+ ele.remove();
47
+ resolve();
48
+ });
49
+ const removeDynamicImportedStyles = (hostUrl, documentEle) => {
50
+ const hostPattern = new RegExp(hostUrl, "i");
51
+ const prefetchElements = documentEle.querySelectorAll('[rel="stylesheet"]');
52
+ for (let index = prefetchElements.length - 1; index >= 0; index -= 1) {
53
+ const ele = prefetchElements[index];
54
+ const { href } = ele;
55
+ if (hostPattern.test(href)) ele.remove();
56
+ }
57
+ };
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ (function() {
3
+ const appId = "loanapp";
4
+ const appName = "Loan App";
5
+ const appElementId = `pui-app-container-${appId}`;
6
+ const pipelinePath = "/pipeline";
7
+ const pipelineLinkText = "Pipeline";
8
+ const getWindow = () => {
9
+ try {
10
+ window.parent.document;
11
+ return window.parent;
12
+ } catch (err) {
13
+ return window;
14
+ }
15
+ };
16
+ let host = null;
17
+ let parentHistory = null;
18
+ let logger = null;
19
+ const browserWindow = getWindow();
20
+ browserWindow.emui = browserWindow.emui || {};
21
+ browserWindow.emui[appId] = browserWindow.emui[appId] || {};
22
+ const setFrameSize = () => {
23
+ const { document: document2 } = window;
24
+ const iframeBody = document2.body;
25
+ const iframeHTML = document2.documentElement;
26
+ const size = {
27
+ height: Math.max(
28
+ iframeBody.scrollHeight,
29
+ iframeBody.offsetHeight,
30
+ iframeHTML.offsetHeight
31
+ ),
32
+ width: Math.max(
33
+ iframeBody.scrollWidth,
34
+ iframeBody.offsetWidth,
35
+ iframeHTML.offsetWidth
36
+ )
37
+ };
38
+ host.setAppWindowSize({
39
+ appId,
40
+ size
41
+ });
42
+ };
43
+ browserWindow.emui[appId].init = async (options) => {
44
+ host = options.host;
45
+ parentHistory = options.history;
46
+ logger = options.logger;
47
+ setFrameSize();
48
+ };
49
+ browserWindow.emui[appId].mount = async () => {
50
+ const appContainer = document.getElementById(appElementId);
51
+ if (appContainer) {
52
+ const mainElement = document.createElement("main");
53
+ appContainer.appendChild(mainElement);
54
+ const pageHeaderEle = document.createElement("h1");
55
+ pageHeaderEle.textContent = appName;
56
+ mainElement.appendChild(pageHeaderEle);
57
+ const contentEle = document.createElement("p");
58
+ contentEle.textContent = "Go to ";
59
+ mainElement.appendChild(contentEle);
60
+ const linkEle = document.createElement("a");
61
+ linkEle.href = "#";
62
+ linkEle.onclick = () => {
63
+ parentHistory?.push?.(pipelinePath);
64
+ };
65
+ linkEle.textContent = pipelineLinkText;
66
+ contentEle.appendChild(linkEle);
67
+ } else {
68
+ throw new Error(
69
+ `App container element with id ${appElementId} not found`
70
+ );
71
+ }
72
+ };
73
+ browserWindow.emui[appId].unmount = () => {
74
+ const appContainer = document.getElementById(appElementId);
75
+ if (appContainer) {
76
+ appContainer.removeChild(appContainer.getElementsByTagName("main")[0]);
77
+ }
78
+ return Promise.resolve();
79
+ };
80
+ })();
@@ -0,0 +1,3 @@
1
+ {
2
+ "index.js": "latest/index.js"
3
+ }
@@ -0,0 +1,29 @@
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 server_exports = {};
20
+ __export(server_exports, {
21
+ initServer: () => initServer
22
+ });
23
+ module.exports = __toCommonJS(server_exports);
24
+ var import_node = require("msw/node");
25
+ var import_serverHandlers = require("./serverHandlers");
26
+ const initServer = () => {
27
+ const server = (0, import_node.setupServer)(...import_serverHandlers.serverHandlers);
28
+ return server;
29
+ };
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var serverHandlers_exports = {};
30
+ __export(serverHandlers_exports, {
31
+ serverHandlers: () => serverHandlers
32
+ });
33
+ module.exports = __toCommonJS(serverHandlers_exports);
34
+ var import_msw = require("msw");
35
+ var import_promises = require("fs/promises");
36
+ var import_node_path = __toESM(require("node:path"), 1);
37
+ var import_app_config = __toESM(require("../app.config.json"), 1);
38
+ var import_manifest = __toESM(require("./loan/latest/manifest.json"), 1);
39
+ const sendJS = async (res, ctx, filePath) => {
40
+ const fileContent = await (0, import_promises.readFile)(import_node_path.default.join(__dirname, filePath), "utf-8");
41
+ return res(
42
+ ctx.status(200),
43
+ ctx.set("Content-Type", "application/javascript"),
44
+ ctx.body(fileContent)
45
+ );
46
+ };
47
+ const serverHandlers = [
48
+ import_msw.rest.get(
49
+ "https://www.google-analytics.com/analytics.js",
50
+ (req, res, ctx) => res(
51
+ ctx.status(200),
52
+ ctx.set("Content-Type", "application/javascript"),
53
+ ctx.body("")
54
+ )
55
+ ),
56
+ import_msw.rest.get(
57
+ "/latest/app.config.json",
58
+ (req, res, ctx) => res(ctx.json(import_app_config.default))
59
+ ),
60
+ // frame html
61
+ import_msw.rest.get("/frame.html", async (req, res, ctx) => {
62
+ const fileContent = await (0, import_promises.readFile)(
63
+ import_node_path.default.join(__dirname, "../frame.html"),
64
+ "utf-8"
65
+ );
66
+ return res(
67
+ ctx.status(200),
68
+ ctx.set("Content-Type", "text/html"),
69
+ ctx.body(fileContent)
70
+ );
71
+ }),
72
+ import_msw.rest.get("/loan/latest/index.js", async (req, res, ctx) => {
73
+ const newRes = await sendJS(res, ctx, "./loan/latest/index.js");
74
+ return newRes;
75
+ }),
76
+ // loan microapp handler
77
+ import_msw.rest.get(
78
+ "/loan/latest/manifest.json",
79
+ (req, res, ctx) => res(ctx.json(import_manifest.default))
80
+ )
81
+ ];
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ (function() {
3
+ const appId = "taskapp";
4
+ const appName = "Task App";
5
+ const appElementId = `pui-app-container-${appId}`;
6
+ const pipelinePath = "/pipeline";
7
+ const pipelineLinkText = "Pipeline";
8
+ const getWindow = () => {
9
+ try {
10
+ window.parent.document;
11
+ return window.parent;
12
+ } catch (err) {
13
+ return window;
14
+ }
15
+ };
16
+ let host = null;
17
+ let parentHistory = null;
18
+ let logger = null;
19
+ const browserWindow = getWindow();
20
+ browserWindow.emui = browserWindow.emui || {};
21
+ browserWindow.emui[appId] = browserWindow.emui[appId] || {};
22
+ browserWindow.emui[appId].init = async (options) => {
23
+ host = options.host;
24
+ parentHistory = options.history;
25
+ logger = options.logger;
26
+ };
27
+ browserWindow.emui[appId].mount = async () => {
28
+ const appContainer = document.getElementById(appElementId);
29
+ if (appContainer) {
30
+ const mainElement = document.createElement("main");
31
+ appContainer.appendChild(mainElement);
32
+ const pageHeaderEle = document.createElement("h1");
33
+ pageHeaderEle.textContent = appName;
34
+ mainElement.appendChild(pageHeaderEle);
35
+ const contentEle = document.createElement("p");
36
+ contentEle.textContent = "Go to ";
37
+ mainElement.appendChild(contentEle);
38
+ const linkEle = document.createElement("a");
39
+ linkEle.href = "#";
40
+ linkEle.onclick = () => {
41
+ parentHistory?.push?.(pipelinePath);
42
+ };
43
+ linkEle.textContent = pipelineLinkText;
44
+ contentEle.appendChild(linkEle);
45
+ } else {
46
+ throw new Error(
47
+ `App container element with id ${appElementId} not found`
48
+ );
49
+ }
50
+ };
51
+ browserWindow.emui[appId].unmount = () => {
52
+ const appContainer = document.getElementById(appElementId);
53
+ if (appContainer) {
54
+ appContainer.removeChild(appContainer.getElementsByTagName("main")[0]);
55
+ }
56
+ return Promise.resolve();
57
+ };
58
+ })();
@@ -0,0 +1,3 @@
1
+ {
2
+ "index.js": "latest/index.js"
3
+ }
@@ -0,0 +1,16 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var guest_exports = {};
16
+ module.exports = __toCommonJS(guest_exports);
@@ -0,0 +1,16 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var host_exports = {};
16
+ module.exports = __toCommonJS(host_exports);
@@ -0,0 +1,16 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var typings_exports = {};
16
+ module.exports = __toCommonJS(typings_exports);
@@ -0,0 +1,16 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var microapp_exports = {};
16
+ module.exports = __toCommonJS(microapp_exports);
@@ -0,0 +1,33 @@
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 utils_exports = {};
20
+ __export(utils_exports, {
21
+ getAbsoluteUrl: () => getAbsoluteUrl,
22
+ isHost: () => isHost,
23
+ removeDoubleSlash: () => removeDoubleSlash
24
+ });
25
+ module.exports = __toCommonJS(utils_exports);
26
+ var import_host = require("./host.js");
27
+ const isHost = () => import_host.CMicroAppHost.isInitialized();
28
+ const removeDoubleSlash = (url) => url.replace(/([^:]\/)\/+/g, "$1");
29
+ const getAbsoluteUrl = (url) => {
30
+ const a = document.createElement("a");
31
+ a.href = url;
32
+ return a.href;
33
+ };
@@ -0,0 +1,63 @@
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 window_exports = {};
20
+ __export(window_exports, {
21
+ getAssetPath: () => getAssetPath,
22
+ getCurrentBreakpoint: () => getCurrentBreakpoint,
23
+ getViewportSize: () => getViewportSize,
24
+ getWindow: () => getWindow,
25
+ isCrossDomain: () => isCrossDomain
26
+ });
27
+ module.exports = __toCommonJS(window_exports);
28
+ var import_pui_theme = require("@elliemae/pui-theme");
29
+ const getWindow = () => {
30
+ try {
31
+ window.parent.document;
32
+ return window.parent;
33
+ } catch (err) {
34
+ return window;
35
+ }
36
+ };
37
+ const getViewportSize = () => ({
38
+ width: Math.max(
39
+ document.documentElement.clientWidth || 0,
40
+ window.innerWidth || 0
41
+ ),
42
+ height: Math.max(
43
+ document.documentElement.clientHeight || 0,
44
+ window.innerHeight || 0
45
+ )
46
+ });
47
+ const convertBreakpointToNumber = (breakpoint) => Number(breakpoint.replace("px", ""));
48
+ const getCurrentBreakpoint = () => {
49
+ const { width } = getViewportSize();
50
+ const { breakpoints } = (0, import_pui_theme.getDefaultTheme)();
51
+ if (width <= convertBreakpointToNumber(breakpoints.small)) return "small";
52
+ if (width <= convertBreakpointToNumber(breakpoints.medium)) return "medium";
53
+ return "large";
54
+ };
55
+ const getAssetPath = () => window?.emui?._ASSET_PATH || "latest/";
56
+ const isCrossDomain = () => {
57
+ try {
58
+ window.parent.document;
59
+ return false;
60
+ } catch (ex) {
61
+ return true;
62
+ }
63
+ };
@@ -0,0 +1,13 @@
1
+ import { createFrame } from "./frame.js";
2
+ import { loadApp, mountApp } from "./loader.js";
3
+ const launchMicroApp = async (appConfig) => {
4
+ const frameEle = await createFrame({ id: appConfig.id });
5
+ if (!frameEle?.contentDocument)
6
+ throw new Error("unable to create iframe for the microapp");
7
+ appConfig.documentEle = frameEle.contentDocument;
8
+ await loadApp(appConfig);
9
+ await mountApp(appConfig);
10
+ };
11
+ export {
12
+ launchMicroApp
13
+ };