@elliemae/ssf-host 2.0.0-next.29

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 (103) hide show
  1. package/dist/cjs/app.config.json +20 -0
  2. package/dist/cjs/guest.js +196 -0
  3. package/dist/cjs/host.js +930 -0
  4. package/dist/cjs/ihost.js +16 -0
  5. package/dist/cjs/index.html +183 -0
  6. package/dist/cjs/index.js +33 -0
  7. package/dist/cjs/package.json +4 -0
  8. package/dist/cjs/tests/guest.html +14 -0
  9. package/dist/cjs/tests/logger.js +31 -0
  10. package/dist/cjs/tests/scriptingObjects/appEvents.js +16 -0
  11. package/dist/cjs/tests/scriptingObjects/appObjects.js +16 -0
  12. package/dist/cjs/tests/scriptingObjects/appraisalServiceModule.js +127 -0
  13. package/dist/cjs/tests/scriptingObjects/constant.js +38 -0
  14. package/dist/cjs/tests/scriptingObjects/floodServiceModule.js +49 -0
  15. package/dist/cjs/tests/server.js +29 -0
  16. package/dist/cjs/tests/serverHandlers.js +50 -0
  17. package/dist/cjs/tests/utils.js +76 -0
  18. package/dist/cjs/types.js +46 -0
  19. package/dist/cjs/utils.js +57 -0
  20. package/dist/esm/app.config.json +20 -0
  21. package/dist/esm/guest.js +177 -0
  22. package/dist/esm/host.js +919 -0
  23. package/dist/esm/ihost.js +0 -0
  24. package/dist/esm/index.html +183 -0
  25. package/dist/esm/index.js +13 -0
  26. package/dist/esm/package.json +4 -0
  27. package/dist/esm/tests/guest.html +14 -0
  28. package/dist/esm/tests/logger.js +15 -0
  29. package/dist/esm/tests/scriptingObjects/appEvents.js +0 -0
  30. package/dist/esm/tests/scriptingObjects/appObjects.js +0 -0
  31. package/dist/esm/tests/scriptingObjects/appraisalServiceModule.js +112 -0
  32. package/dist/esm/tests/scriptingObjects/constant.js +18 -0
  33. package/dist/esm/tests/scriptingObjects/floodServiceModule.js +29 -0
  34. package/dist/esm/tests/server.js +9 -0
  35. package/dist/esm/tests/serverHandlers.js +20 -0
  36. package/dist/esm/tests/utils.js +56 -0
  37. package/dist/esm/types.js +26 -0
  38. package/dist/esm/utils.js +37 -0
  39. package/dist/public/app.config.json +20 -0
  40. package/dist/public/autoFill.js +3 -0
  41. package/dist/public/autoFill.js.br +0 -0
  42. package/dist/public/autoFill.js.gz +0 -0
  43. package/dist/public/autoFill.js.map +1 -0
  44. package/dist/public/index.html +1 -0
  45. package/dist/public/init.js +3 -0
  46. package/dist/public/init.js.br +0 -0
  47. package/dist/public/init.js.gz +0 -0
  48. package/dist/public/init.js.map +1 -0
  49. package/dist/public/js/emuiSsfHost.c8f735724b6fe44f4dd6.js +3 -0
  50. package/dist/public/js/emuiSsfHost.c8f735724b6fe44f4dd6.js.br +0 -0
  51. package/dist/public/js/emuiSsfHost.c8f735724b6fe44f4dd6.js.gz +0 -0
  52. package/dist/public/js/emuiSsfHost.c8f735724b6fe44f4dd6.js.map +1 -0
  53. package/dist/public/loan-object.js +3 -0
  54. package/dist/public/loan-object.js.br +1 -0
  55. package/dist/public/loan-object.js.gz +0 -0
  56. package/dist/public/loan-object.js.map +1 -0
  57. package/dist/public/utils.js +3 -0
  58. package/dist/public/utils.js.br +0 -0
  59. package/dist/public/utils.js.gz +0 -0
  60. package/dist/public/utils.js.map +1 -0
  61. package/dist/types/guest.d.ts +140 -0
  62. package/dist/types/host.d.ts +107 -0
  63. package/dist/types/ihost.d.ts +138 -0
  64. package/dist/types/index.d.ts +8 -0
  65. package/dist/types/tests/event.test.d.ts +1 -0
  66. package/dist/types/tests/guest.test.d.ts +1 -0
  67. package/dist/types/tests/guestAsHost.test.d.ts +1 -0
  68. package/dist/types/tests/host.test.d.ts +1 -0
  69. package/dist/types/tests/logger.d.ts +3 -0
  70. package/dist/types/tests/scriptingObject.test.d.ts +1 -0
  71. package/dist/types/tests/scriptingObjects/appEvents.d.ts +3 -0
  72. package/dist/types/tests/scriptingObjects/appObjects.d.ts +7 -0
  73. package/dist/types/tests/scriptingObjects/appraisalServiceModule.d.ts +46 -0
  74. package/dist/types/tests/scriptingObjects/constant.d.ts +8 -0
  75. package/dist/types/tests/scriptingObjects/floodServiceModule.d.ts +17 -0
  76. package/dist/types/tests/server.d.ts +1 -0
  77. package/dist/types/tests/serverHandlers.d.ts +1 -0
  78. package/dist/types/tests/utils.d.ts +28 -0
  79. package/dist/types/types.d.ts +145 -0
  80. package/dist/types/utils.d.ts +8 -0
  81. package/dist/umd/app.config.json +20 -0
  82. package/dist/umd/autoFill.js +3 -0
  83. package/dist/umd/autoFill.js.br +0 -0
  84. package/dist/umd/autoFill.js.gz +0 -0
  85. package/dist/umd/autoFill.js.map +1 -0
  86. package/dist/umd/index.html +1 -0
  87. package/dist/umd/index.js +3 -0
  88. package/dist/umd/index.js.br +0 -0
  89. package/dist/umd/index.js.gz +0 -0
  90. package/dist/umd/index.js.map +1 -0
  91. package/dist/umd/init.js +3 -0
  92. package/dist/umd/init.js.br +0 -0
  93. package/dist/umd/init.js.gz +0 -0
  94. package/dist/umd/init.js.map +1 -0
  95. package/dist/umd/loan-object.js +3 -0
  96. package/dist/umd/loan-object.js.br +1 -0
  97. package/dist/umd/loan-object.js.gz +0 -0
  98. package/dist/umd/loan-object.js.map +1 -0
  99. package/dist/umd/utils.js +3 -0
  100. package/dist/umd/utils.js.br +0 -0
  101. package/dist/umd/utils.js.gz +0 -0
  102. package/dist/umd/utils.js.map +1 -0
  103. package/package.json +69 -0
@@ -0,0 +1,76 @@
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
+ createHost: () => createHost,
22
+ initGuest: () => initGuest,
23
+ postMessage: () => postMessage,
24
+ releaseJSThread: () => releaseJSThread
25
+ });
26
+ module.exports = __toCommonJS(utils_exports);
27
+ var import_ssf_common = require("@elliemae/ssf-common");
28
+ var import__ = require("../index.js");
29
+ var import_logger = require("./logger.js");
30
+ var import_utils = require("../utils.js");
31
+ const createHost = (name = "IMTProduct") => {
32
+ let host = null;
33
+ const guestReady = new Promise((resolve) => {
34
+ const hostOptions = {
35
+ logger: import_logger.logger,
36
+ readyStateCallback: (guest) => {
37
+ resolve(guest);
38
+ }
39
+ };
40
+ host = new import__.SSFHost(name, hostOptions);
41
+ });
42
+ return { host, guestReady, guestName: `guest-${name}-sandbox` };
43
+ };
44
+ const postMessage = ({
45
+ srcWindow,
46
+ targetWindow,
47
+ message
48
+ }) => {
49
+ targetWindow.dispatchEvent(
50
+ new MessageEvent("message", {
51
+ source: srcWindow,
52
+ origin: (0, import_utils.getOrigin)(srcWindow.location.href),
53
+ data: {
54
+ source: "elli:remoting",
55
+ ...message
56
+ }
57
+ })
58
+ );
59
+ };
60
+ const initGuest = (guestId) => {
61
+ const { contentWindow: guestWindow } = document.getElementById(guestId) || {};
62
+ if (!guestWindow)
63
+ throw new Error("Could not find guest window");
64
+ postMessage({
65
+ srcWindow: guestWindow,
66
+ targetWindow: guestWindow.parent,
67
+ message: {
68
+ body: { eventFeedback: true },
69
+ type: import_ssf_common.MessageType.GuestReady
70
+ }
71
+ });
72
+ return guestWindow;
73
+ };
74
+ const releaseJSThread = () => new Promise((resolve) => {
75
+ setTimeout(resolve, 0);
76
+ });
@@ -0,0 +1,46 @@
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 types_exports = {};
20
+ __export(types_exports, {
21
+ IFrameSandboxValues: () => IFrameSandboxValues,
22
+ OpenMode: () => OpenMode
23
+ });
24
+ module.exports = __toCommonJS(types_exports);
25
+ var OpenMode = /* @__PURE__ */ ((OpenMode2) => {
26
+ OpenMode2["Popup"] = "popup";
27
+ OpenMode2["Embed"] = "embed";
28
+ return OpenMode2;
29
+ })(OpenMode || {});
30
+ var IFrameSandboxValues = /* @__PURE__ */ ((IFrameSandboxValues2) => {
31
+ IFrameSandboxValues2["AllowDownloadsWithoutUserActivation"] = "allow-downloads-without-user-activation";
32
+ IFrameSandboxValues2["AllowDownloads"] = "allow-downloads";
33
+ IFrameSandboxValues2["AllowForms"] = "allow-forms";
34
+ IFrameSandboxValues2["AllowModals"] = "allow-modals";
35
+ IFrameSandboxValues2["AllowOrientationLock"] = "allow-orientation-lock";
36
+ IFrameSandboxValues2["AllowPointerLock"] = "allow-pointer-lock";
37
+ IFrameSandboxValues2["AllowPopups"] = "allow-popups";
38
+ IFrameSandboxValues2["AllowPopupsToEscapeSandbox"] = "allow-popups-to-escape-sandbox";
39
+ IFrameSandboxValues2["AllowPresentation"] = "allow-presentation";
40
+ IFrameSandboxValues2["AllowSameOrigin"] = "allow-same-origin";
41
+ IFrameSandboxValues2["AllowScripts"] = "allow-scripts";
42
+ IFrameSandboxValues2["AllowStorageAccessByUserActivation"] = "allow-storage-access-by-user-activation";
43
+ IFrameSandboxValues2["AllowTopNavigation"] = "allow-top-navigation";
44
+ IFrameSandboxValues2["AllowTopNavigationByUserActivation"] = "allow-top-navigation-by-user-activation";
45
+ return IFrameSandboxValues2;
46
+ })(IFrameSandboxValues || {});
@@ -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 utils_exports = {};
20
+ __export(utils_exports, {
21
+ flatten: () => flatten,
22
+ getObjectId: () => getObjectId,
23
+ getOrigin: () => getOrigin,
24
+ isFunction: () => isFunction,
25
+ isProxy: () => isProxy,
26
+ isScriptingObject: () => isScriptingObject
27
+ });
28
+ module.exports = __toCommonJS(utils_exports);
29
+ const getOrigin = (url) => {
30
+ if (url === "about:blank")
31
+ return "*";
32
+ const { origin } = new URL(url);
33
+ return origin === "null" || !origin ? url : origin;
34
+ };
35
+ const flatten = (source, target = []) => {
36
+ const retVal = target || [];
37
+ if (source && source.forEach) {
38
+ source.forEach((item) => {
39
+ flatten(item, retVal);
40
+ });
41
+ } else if (typeof source !== "undefined") {
42
+ retVal.push(source);
43
+ }
44
+ return retVal;
45
+ };
46
+ const isScriptingObject = (value) => (
47
+ // eslint-disable-next-line no-underscore-dangle, @typescript-eslint/no-unsafe-member-access
48
+ typeof value?._toJSON === "function"
49
+ );
50
+ function isFunction(value) {
51
+ return typeof value === "function";
52
+ }
53
+ const isProxy = (value) => (
54
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
55
+ value?.constructor?.name === "Proxy"
56
+ );
57
+ const getObjectId = (elementOrId) => elementOrId?.id ?? elementOrId;
@@ -0,0 +1,20 @@
1
+ {
2
+ "appId": "ssf-host",
3
+ "activeEnv": "localhost",
4
+ "options": {
5
+ "guestUrl": "http://localhost:4001"
6
+ },
7
+ "env": {
8
+ "localhost": {
9
+ "options": {
10
+ "guestUrl": "http://localhost:4001"
11
+ }
12
+ },
13
+ "dev2": {},
14
+ "qa2": {},
15
+ "qa3": {},
16
+ "int": {},
17
+ "stage": {},
18
+ "prod": {}
19
+ }
20
+ }
@@ -0,0 +1,177 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ var __accessCheck = (obj, member, msg) => {
8
+ if (!member.has(obj))
9
+ throw TypeError("Cannot " + msg);
10
+ };
11
+ var __privateGet = (obj, member, getter) => {
12
+ __accessCheck(obj, member, "read from private field");
13
+ return getter ? getter.call(obj) : member.get(obj);
14
+ };
15
+ var __privateAdd = (obj, member, value) => {
16
+ if (member.has(obj))
17
+ throw TypeError("Cannot add the same private member more than once");
18
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
19
+ };
20
+ var __privateSet = (obj, member, value, setter) => {
21
+ __accessCheck(obj, member, "write to private field");
22
+ setter ? setter.call(obj, value) : member.set(obj, value);
23
+ return value;
24
+ };
25
+ var _remoting;
26
+ import { MessageType } from "@elliemae/ssf-common";
27
+ import { OpenMode } from "./types.js";
28
+ import { getOrigin } from "./utils.js";
29
+ class Guest {
30
+ /**
31
+ * Create object representing guest application
32
+ *
33
+ * @param {GuestOption} option - options for creating a guest application
34
+ */
35
+ constructor(option) {
36
+ /**
37
+ * unique id of the guest application
38
+ */
39
+ __publicField(this, "id");
40
+ /**
41
+ * page title of the guest application
42
+ */
43
+ __publicField(this, "title");
44
+ /**
45
+ * url of the guest application
46
+ */
47
+ __publicField(this, "url");
48
+ /**
49
+ * properties of the guest application
50
+ */
51
+ __publicField(this, "params");
52
+ /**
53
+ * iframe element of the guest application
54
+ */
55
+ __publicField(this, "domElement");
56
+ /**
57
+ * window object of the guest application
58
+ */
59
+ __publicField(this, "window");
60
+ /**
61
+ * open mode of the guest application
62
+ */
63
+ __publicField(this, "openMode");
64
+ /**
65
+ * origin of the guest application
66
+ */
67
+ __publicField(this, "origin");
68
+ /**
69
+ * flag indicating if the guest application is initialized
70
+ */
71
+ __publicField(this, "initialized", false);
72
+ /**
73
+ * flag indicating if the guest application is ready
74
+ */
75
+ __publicField(this, "ready", false);
76
+ /**
77
+ * capabilities of the guest application
78
+ */
79
+ __publicField(this, "capabilities");
80
+ /**
81
+ * remoting object
82
+ */
83
+ __privateAdd(this, _remoting, void 0);
84
+ /**
85
+ * clean up resources
86
+ */
87
+ __publicField(this, "dispose", () => {
88
+ __privateGet(this, _remoting).removeSender({ origin: this.origin, window: this.window });
89
+ if (this.openMode === OpenMode.Popup) {
90
+ this.window.close();
91
+ } else {
92
+ this.domElement?.remove?.();
93
+ }
94
+ });
95
+ /**
96
+ * Get information about the guest application
97
+ *
98
+ * @returns guest properties
99
+ */
100
+ __publicField(this, "getInfo", () => ({
101
+ guestId: this.id,
102
+ guestTitle: this.title,
103
+ guestUrl: this.url
104
+ }));
105
+ /**
106
+ * initialize guest messaging
107
+ */
108
+ __publicField(this, "init", () => {
109
+ __privateGet(this, _remoting).addSender({ origin: this.origin, window: this.window });
110
+ if (this.openMode === OpenMode.Popup) {
111
+ const handShakeInterval = setInterval(() => {
112
+ __privateGet(this, _remoting).send({
113
+ targetWin: this.window,
114
+ targetOrigin: this.origin,
115
+ messageType: MessageType.HandShake,
116
+ messageBody: {}
117
+ });
118
+ }, 1e3);
119
+ __privateGet(this, _remoting).listen({
120
+ messageType: MessageType.HandShakeAck,
121
+ callback: () => {
122
+ clearInterval(handShakeInterval);
123
+ }
124
+ });
125
+ }
126
+ });
127
+ /**
128
+ * invokes event callback on the guest application
129
+ *
130
+ * @param {EventObject} event - event object
131
+ * @param {number} timeout - timeout in milliseconds
132
+ */
133
+ __publicField(this, "dispatchEvent", (event, timeout) => __privateGet(this, _remoting).invoke({
134
+ targetWin: this.window,
135
+ targetOrigin: this.origin,
136
+ messageType: MessageType.ObjectEvent,
137
+ messageBody: event,
138
+ responseTimeoutMs: timeout
139
+ }));
140
+ /**
141
+ * Send a message without any form of response. fire and forget
142
+ *
143
+ * @param {MessageParam} param - message to be sent
144
+ */
145
+ __publicField(this, "send", (param) => {
146
+ __privateGet(this, _remoting).send({
147
+ targetWin: this.window,
148
+ targetOrigin: this.origin,
149
+ ...param
150
+ });
151
+ });
152
+ const {
153
+ guestId,
154
+ domElement = null,
155
+ title,
156
+ url,
157
+ window,
158
+ params = {},
159
+ openMode = OpenMode.Embed,
160
+ remoting
161
+ } = option;
162
+ this.id = guestId;
163
+ this.title = title;
164
+ this.url = url;
165
+ this.origin = getOrigin(url);
166
+ this.params = params;
167
+ this.domElement = domElement;
168
+ this.window = window;
169
+ this.openMode = openMode;
170
+ this.capabilities = {};
171
+ __privateSet(this, _remoting, remoting);
172
+ }
173
+ }
174
+ _remoting = new WeakMap();
175
+ export {
176
+ Guest
177
+ };