@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
File without changes
@@ -0,0 +1,183 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
+ <title>Host</title>
9
+ <script src="https://cdn.tailwindcss.com?plugins=forms"></script>
10
+ <script src="https://qa.assets.rd.elliemae.io/pui-diagnostics@3"></script>
11
+ </head>
12
+
13
+ <body>
14
+ <header class="bg-indigo-300 h-10 flex place-items-center">
15
+ <div class="px-2">ICE Mortgage Product</div>
16
+ </header>
17
+ <main class="mx-auto max-w-7xl px-2 sm:px-6 lg:px-8">
18
+ <div class="min-w-0 flex-1 mt-4">
19
+ <h1 class="text-2xl font-bold leading-7 text-gray-900 sm:truncate sm:text-3xl sm:tracking-tight">Loan Application
20
+ </h2>
21
+ </div>
22
+ <!-- success feedback -->
23
+ <div id="successFeedback" class="hidden rounded-md bg-green-50 p-4">
24
+ <div class="flex">
25
+ <div class="flex-shrink-0">
26
+ <!-- Heroicon name: mini/check-circle -->
27
+ <svg class="h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"
28
+ aria-hidden="true">
29
+ <path fill-rule="evenodd"
30
+ d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
31
+ clip-rule="evenodd" />
32
+ </svg>
33
+ </div>
34
+ <div class="ml-3">
35
+ <p class="text-sm font-medium text-green-800">Loan Saved Successfully</p>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ <!-- error feedback -->
40
+ <div id="errorFeedback" class="hidden rounded-md bg-red-50 p-4">
41
+ <div class="flex">
42
+ <div class="flex-shrink-0">
43
+ <svg class="h-5 w-5 text-red-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"
44
+ aria-hidden="true">
45
+ <path fill-rule="evenodd"
46
+ d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z"
47
+ clip-rule="evenodd" />
48
+ </svg>
49
+ </div>
50
+ <div class="ml-3">
51
+ <h3 class="text-sm font-medium text-red-800">Credit Score is not meeting the requirement</h3>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ <div class="mt-2 sm:grid sm:grid-cols-2 sm:gap-2">
56
+ <form class="px-2 py-2 space-y-8 divide-y divide-gray-200 bg-gray-50">
57
+ <div class="space-y-8 divide-y divide-gray-200 sm:space-y-5">
58
+ <!-- <button type="button"
59
+ class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-3 py-2 text-sm font-medium leading-4 text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
60
+ Autofill
61
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6">
62
+ <path fill-rule="evenodd"
63
+ d="M4.125 3C3.089 3 2.25 3.84 2.25 4.875V18a3 3 0 003 3h15a3 3 0 01-3-3V4.875C17.25 3.839 16.41 3 15.375 3H4.125zM12 9.75a.75.75 0 000 1.5h1.5a.75.75 0 000-1.5H12zm-.75-2.25a.75.75 0 01.75-.75h1.5a.75.75 0 010 1.5H12a.75.75 0 01-.75-.75zM6 12.75a.75.75 0 000 1.5h7.5a.75.75 0 000-1.5H6zm-.75 3.75a.75.75 0 01.75-.75h7.5a.75.75 0 010 1.5H6a.75.75 0 01-.75-.75zM6 6.75a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h3a.75.75 0 00.75-.75v-3A.75.75 0 009 6.75H6z"
64
+ clip-rule="evenodd" />
65
+ <path d="M18.75 6.75h1.875c.621 0 1.125.504 1.125 1.125V18a1.5 1.5 0 01-3 0V6.75z" />
66
+ </svg>
67
+ </button> -->
68
+ <div class="space-y-6 sm:space-y-5">
69
+ <div>
70
+ <h3 class="text-lg font-medium leading-6 text-gray-900">
71
+ Personal Information
72
+ </h3>
73
+ </div>
74
+ <div class="space-y-6 sm:space-y-5">
75
+ <div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200">
76
+ <label for="firstName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">First
77
+ name</label>
78
+ <div class="mt-1 sm:col-span-2 sm:mt-0">
79
+ <input type="text" name="firstName" id="firstName" autocomplete="given-name"
80
+ class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm"
81
+ value="John" placeholder="John" />
82
+ </div>
83
+ </div>
84
+ <div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200">
85
+ <label for="lastName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Last name</label>
86
+ <div class="mt-1 sm:col-span-2 sm:mt-0">
87
+ <input type="text" name="lastName" id="lastName" autocomplete="family-name"
88
+ class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm"
89
+ value="Doe" placeholder="Doe" />
90
+ </div>
91
+ </div>
92
+ <div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200">
93
+ <label for="ssn" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">SSN</label>
94
+ <div class="mt-1 sm:col-span-2 sm:mt-0">
95
+ <input type="number" name="ssn" id="ssn"
96
+ class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm"
97
+ value="123456789" placeholder="123456789" />
98
+ </div>
99
+ </div>
100
+ </div>
101
+ <div>
102
+ <h3 class="text-lg font-medium leading-6 text-gray-900">
103
+ Loan Information
104
+ </h3>
105
+ </div>
106
+ <div class="space-y-6 sm:space-y-5">
107
+ <div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200">
108
+ <label for="amount" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Amount</label>
109
+ <div class="mt-1 sm:col-span-2 sm:mt-0">
110
+ <input type="number" name="amount" id="amount"
111
+ class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm"
112
+ value="500000" placeholder="500000" />
113
+ </div>
114
+ </div>
115
+ <div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200">
116
+ <label for="Term" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Term (years)</label>
117
+ <div class="mt-1 sm:col-span-2 sm:mt-0">
118
+ <input type="number" name="term" id="term"
119
+ class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm"
120
+ value="30" placeholder="30" />
121
+ </div>
122
+ </div>
123
+ <div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200">
124
+ <label for="downPayment" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Down
125
+ Payment</label>
126
+ <div class="mt-1 sm:col-span-2 sm:mt-0">
127
+ <input type="number" name="downPayment" id="downPayment"
128
+ class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm"
129
+ value="50000" placeholder="50000" />
130
+ </div>
131
+ </div>
132
+ <div>
133
+ <h3 class="text-lg font-medium leading-6 text-gray-900">
134
+ Order Services
135
+ </h3>
136
+ </div>
137
+ <div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200">
138
+ <div class="mt-1 sm:mt-0">
139
+ <button id="title" type="button" class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 disabled:opacity-50 disabled:cursor-not-allowed
140
+ focus:ring-offset-2">
141
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6">
142
+ <path fill-rule="evenodd"
143
+ d="M7.502 6h7.128A3.375 3.375 0 0118 9.375v9.375a3 3 0 003-3V6.108c0-1.505-1.125-2.811-2.664-2.94a48.972 48.972 0 00-.673-.05A3 3 0 0015 1.5h-1.5a3 3 0 00-2.663 1.618c-.225.015-.45.032-.673.05C8.662 3.295 7.554 4.542 7.502 6zM13.5 3A1.5 1.5 0 0012 4.5h4.5A1.5 1.5 0 0015 3h-1.5z"
144
+ clip-rule="evenodd" />
145
+ <path fill-rule="evenodd"
146
+ d="M3 9.375C3 8.339 3.84 7.5 4.875 7.5h9.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 013 20.625V9.375zM6 12a.75.75 0 01.75-.75h.008a.75.75 0 01.75.75v.008a.75.75 0 01-.75.75H6.75a.75.75 0 01-.75-.75V12zm2.25 0a.75.75 0 01.75-.75h3.75a.75.75 0 010 1.5H9a.75.75 0 01-.75-.75zM6 15a.75.75 0 01.75-.75h.008a.75.75 0 01.75.75v.008a.75.75 0 01-.75.75H6.75a.75.75 0 01-.75-.75V15zm2.25 0a.75.75 0 01.75-.75h3.75a.75.75 0 010 1.5H9a.75.75 0 01-.75-.75zM6 18a.75.75 0 01.75-.75h.008a.75.75 0 01.75.75v.008a.75.75 0 01-.75.75H6.75a.75.75 0 01-.75-.75V18zm2.25 0a.75.75 0 01.75-.75h3.75a.75.75 0 010 1.5H9a.75.75 0 01-.75-.75z"
147
+ clip-rule="evenodd" />
148
+ </svg>
149
+ Title
150
+ </button>
151
+ </div>
152
+ <div class="mt-1 sm:mt-0">
153
+ <button id="credit" type="button"
154
+ class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 disabled:opacity-50 disabled:cursor-not-allowed
155
+ focus:ring-offset-2">
156
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6">
157
+ <path fill-rule="evenodd" d="M2.25 13.5a8.25 8.25 0 018.25-8.25.75.75 0 01.75.75v6.75H18a.75.75 0 01.75.75 8.25 8.25 0 01-16.5 0z" clip-rule="evenodd" />
158
+ <path fill-rule="evenodd" d="M12.75 3a.75.75 0 01.75-.75 8.25 8.25 0 018.25 8.25.75.75 0 01-.75.75h-7.5a.75.75 0 01-.75-.75V3z" clip-rule="evenodd" />
159
+ </svg>
160
+ Credit Score
161
+ </button>
162
+ </div>
163
+ </div>
164
+ </div>
165
+ </div>
166
+ </div>
167
+ <div class="flex flex-col">
168
+ <button id="saveLoan" type="button"
169
+ class="rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
170
+ Save
171
+ </button>
172
+ </div>
173
+ </form>
174
+ <div id="aside-container"
175
+ class="flex flex-col gap-4 items-start mt-4 border-2 p-2 rounded-lg border-dashed border-cyan-300 sm:mt-0">
176
+ </div>
177
+ </div>
178
+ <div id="bottom-container" class="flex flex-col gap-4 items-start mt-4 p-2 sm:mt-0"></div>
179
+ </main>
180
+ <script src="./init.js" type="module"></script>
181
+ </body>
182
+
183
+ </html>
@@ -0,0 +1,13 @@
1
+ import { Event, ScriptingObject } from "@elliemae/ssf-common";
2
+ import { Guest } from "./guest.js";
3
+ import { IFrameSandboxValues } from "./types.js";
4
+ import { SSFHost } from "./host.js";
5
+ import { OpenMode } from "./types.js";
6
+ export {
7
+ Event,
8
+ Guest,
9
+ IFrameSandboxValues,
10
+ OpenMode,
11
+ SSFHost,
12
+ ScriptingObject
13
+ };
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": false
4
+ }
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Guest</title>
8
+ </head>
9
+ <body>
10
+ <main>
11
+ <h1>Guest Application</h1>
12
+ </main>
13
+ </body>
14
+ </html>
@@ -0,0 +1,15 @@
1
+ import {
2
+ logger as puiLogger,
3
+ Console,
4
+ LogLevels
5
+ } from "@elliemae/pui-diagnostics";
6
+ const logger = puiLogger({
7
+ transport: Console(),
8
+ index: "ssf",
9
+ team: "ui platform",
10
+ appName: "WebApp Demo"
11
+ });
12
+ export {
13
+ LogLevels,
14
+ logger
15
+ };
File without changes
File without changes
@@ -0,0 +1,112 @@
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 _loanId, _creditScore;
26
+ import { ScriptingObject, Event } from "@elliemae/ssf-common";
27
+ import {
28
+ UNLOADING_EVENT_NAME,
29
+ PRE_COMMIT_EVENT_NAME,
30
+ SAVED_EVENT_NAME
31
+ } from "./constant.js";
32
+ const APPRAISAL_SERVICE_OBJECT = "AppraisalService";
33
+ class AppraisalService extends ScriptingObject {
34
+ constructor({
35
+ loanId,
36
+ creditScore
37
+ }) {
38
+ super(APPRAISAL_SERVICE_OBJECT);
39
+ __privateAdd(this, _loanId, void 0);
40
+ __privateAdd(this, _creditScore, void 0);
41
+ __publicField(this, "Unloading", new Event({
42
+ name: "Unloading",
43
+ requiresFeedback: false,
44
+ so: this
45
+ }));
46
+ __publicField(this, "onPreCommit", new Event({
47
+ name: "onPreCommit",
48
+ requiresFeedback: true,
49
+ so: this
50
+ }));
51
+ __publicField(this, "onSaved", new Event({
52
+ name: "onSaved",
53
+ requiresFeedback: false,
54
+ so: this
55
+ }));
56
+ __publicField(this, "getCapabilities", () => Promise.resolve({
57
+ isAdmin: true,
58
+ los: "Encompass"
59
+ }));
60
+ __publicField(this, "getParameters", () => Promise.resolve({
61
+ loanId: __privateGet(this, _loanId),
62
+ creditScore: __privateGet(this, _creditScore)
63
+ }));
64
+ __publicField(this, "getLoanDetails", () => Promise.resolve({
65
+ loanId: __privateGet(this, _loanId),
66
+ creditScore: __privateGet(this, _creditScore)
67
+ }));
68
+ __publicField(this, "setCreditScore", (creditScore) => {
69
+ __privateSet(this, _creditScore, creditScore);
70
+ return Promise.resolve();
71
+ });
72
+ __publicField(this, "saveLoan", () => Promise.resolve());
73
+ __publicField(this, "commit", () => new Promise((resolve) => {
74
+ setTimeout(() => {
75
+ resolve({ loanId: __privateGet(this, _loanId) });
76
+ }, 1e3);
77
+ }));
78
+ __publicField(this, "delete", () => {
79
+ throw new Error("Not implemented");
80
+ });
81
+ __publicField(this, "unload", async () => {
82
+ });
83
+ __privateSet(this, _loanId, loanId);
84
+ __privateSet(this, _creditScore, creditScore);
85
+ }
86
+ }
87
+ _loanId = new WeakMap();
88
+ _creditScore = new WeakMap();
89
+ const appraisalServiceObject = {
90
+ object: {
91
+ events: [UNLOADING_EVENT_NAME, SAVED_EVENT_NAME, PRE_COMMIT_EVENT_NAME],
92
+ functions: [
93
+ "getParameters",
94
+ "getCapabilities",
95
+ "unload",
96
+ "getLoanDetails",
97
+ "setCreditScore",
98
+ "setCustomLoanFields",
99
+ "saveLoan",
100
+ "commit",
101
+ "delete"
102
+ ],
103
+ objectId: APPRAISAL_SERVICE_OBJECT,
104
+ objectType: "Object"
105
+ },
106
+ type: "object"
107
+ };
108
+ export {
109
+ APPRAISAL_SERVICE_OBJECT,
110
+ AppraisalService,
111
+ appraisalServiceObject
112
+ };
@@ -0,0 +1,18 @@
1
+ const PRE_COMMIT_EVENT_NAME = "onPreCommit";
2
+ const SAVED_EVENT_NAME = "onSaved";
3
+ const UNLOADING_EVENT_NAME = "Unloading";
4
+ const REMOTING = "elli:remoting";
5
+ const REMOTING_RESPONSE = "elli:remoting:response";
6
+ const REMOTING_EXCEPTION = "elli:remoting:exception";
7
+ const EVENT_OBJECT = "object:event";
8
+ const ABOUT_BLANK = "about:blank";
9
+ export {
10
+ ABOUT_BLANK,
11
+ EVENT_OBJECT,
12
+ PRE_COMMIT_EVENT_NAME,
13
+ REMOTING,
14
+ REMOTING_EXCEPTION,
15
+ REMOTING_RESPONSE,
16
+ SAVED_EVENT_NAME,
17
+ UNLOADING_EVENT_NAME
18
+ };
@@ -0,0 +1,29 @@
1
+ import { ScriptingObject, Event } from "@elliemae/ssf-common";
2
+ const FLOOD_SERVICE_OBJECT = "FloodService";
3
+ class FloodService extends ScriptingObject {
4
+ firstName;
5
+ lastName;
6
+ Unloading = new Event({
7
+ name: "Unloading",
8
+ requiresFeedback: true,
9
+ so: this
10
+ });
11
+ constructor() {
12
+ super("FloodService");
13
+ this.firstName = "John";
14
+ this.lastName = "Doe";
15
+ }
16
+ getBorrowerDetails = () => Promise.resolve({
17
+ firstName: this.firstName,
18
+ lastName: this.lastName
19
+ });
20
+ getCapabilities = () => Promise.resolve({});
21
+ getParameters = () => Promise.resolve({});
22
+ unload = () => Promise.resolve();
23
+ _dispose = () => {
24
+ };
25
+ }
26
+ export {
27
+ FLOOD_SERVICE_OBJECT,
28
+ FloodService
29
+ };
@@ -0,0 +1,9 @@
1
+ import { setupServer } from "msw/node";
2
+ import { serverHandlers } from "./serverHandlers";
3
+ const initServer = () => {
4
+ const server = setupServer(...serverHandlers);
5
+ return server;
6
+ };
7
+ export {
8
+ initServer
9
+ };
@@ -0,0 +1,20 @@
1
+ import { rest } from "msw";
2
+ import { readFile } from "fs/promises";
3
+ import path from "node:path";
4
+ const serverHandlers = [
5
+ // frame html
6
+ rest.get("http://thirdparty.com", async (req, res, ctx) => {
7
+ const fileContent = await readFile(
8
+ path.join(__dirname, "./guest.html"),
9
+ "utf-8"
10
+ );
11
+ return res(
12
+ ctx.status(200),
13
+ ctx.set("Content-Type", "text/html"),
14
+ ctx.body(fileContent)
15
+ );
16
+ })
17
+ ];
18
+ export {
19
+ serverHandlers
20
+ };
@@ -0,0 +1,56 @@
1
+ import { MessageType } from "@elliemae/ssf-common";
2
+ import { SSFHost } from "../index.js";
3
+ import { logger } from "./logger.js";
4
+ import { getOrigin } from "../utils.js";
5
+ const createHost = (name = "IMTProduct") => {
6
+ let host = null;
7
+ const guestReady = new Promise((resolve) => {
8
+ const hostOptions = {
9
+ logger,
10
+ readyStateCallback: (guest) => {
11
+ resolve(guest);
12
+ }
13
+ };
14
+ host = new SSFHost(name, hostOptions);
15
+ });
16
+ return { host, guestReady, guestName: `guest-${name}-sandbox` };
17
+ };
18
+ const postMessage = ({
19
+ srcWindow,
20
+ targetWindow,
21
+ message
22
+ }) => {
23
+ targetWindow.dispatchEvent(
24
+ new MessageEvent("message", {
25
+ source: srcWindow,
26
+ origin: getOrigin(srcWindow.location.href),
27
+ data: {
28
+ source: "elli:remoting",
29
+ ...message
30
+ }
31
+ })
32
+ );
33
+ };
34
+ const initGuest = (guestId) => {
35
+ const { contentWindow: guestWindow } = document.getElementById(guestId) || {};
36
+ if (!guestWindow)
37
+ throw new Error("Could not find guest window");
38
+ postMessage({
39
+ srcWindow: guestWindow,
40
+ targetWindow: guestWindow.parent,
41
+ message: {
42
+ body: { eventFeedback: true },
43
+ type: MessageType.GuestReady
44
+ }
45
+ });
46
+ return guestWindow;
47
+ };
48
+ const releaseJSThread = () => new Promise((resolve) => {
49
+ setTimeout(resolve, 0);
50
+ });
51
+ export {
52
+ createHost,
53
+ initGuest,
54
+ postMessage,
55
+ releaseJSThread
56
+ };
@@ -0,0 +1,26 @@
1
+ var OpenMode = /* @__PURE__ */ ((OpenMode2) => {
2
+ OpenMode2["Popup"] = "popup";
3
+ OpenMode2["Embed"] = "embed";
4
+ return OpenMode2;
5
+ })(OpenMode || {});
6
+ var IFrameSandboxValues = /* @__PURE__ */ ((IFrameSandboxValues2) => {
7
+ IFrameSandboxValues2["AllowDownloadsWithoutUserActivation"] = "allow-downloads-without-user-activation";
8
+ IFrameSandboxValues2["AllowDownloads"] = "allow-downloads";
9
+ IFrameSandboxValues2["AllowForms"] = "allow-forms";
10
+ IFrameSandboxValues2["AllowModals"] = "allow-modals";
11
+ IFrameSandboxValues2["AllowOrientationLock"] = "allow-orientation-lock";
12
+ IFrameSandboxValues2["AllowPointerLock"] = "allow-pointer-lock";
13
+ IFrameSandboxValues2["AllowPopups"] = "allow-popups";
14
+ IFrameSandboxValues2["AllowPopupsToEscapeSandbox"] = "allow-popups-to-escape-sandbox";
15
+ IFrameSandboxValues2["AllowPresentation"] = "allow-presentation";
16
+ IFrameSandboxValues2["AllowSameOrigin"] = "allow-same-origin";
17
+ IFrameSandboxValues2["AllowScripts"] = "allow-scripts";
18
+ IFrameSandboxValues2["AllowStorageAccessByUserActivation"] = "allow-storage-access-by-user-activation";
19
+ IFrameSandboxValues2["AllowTopNavigation"] = "allow-top-navigation";
20
+ IFrameSandboxValues2["AllowTopNavigationByUserActivation"] = "allow-top-navigation-by-user-activation";
21
+ return IFrameSandboxValues2;
22
+ })(IFrameSandboxValues || {});
23
+ export {
24
+ IFrameSandboxValues,
25
+ OpenMode
26
+ };
@@ -0,0 +1,37 @@
1
+ const getOrigin = (url) => {
2
+ if (url === "about:blank")
3
+ return "*";
4
+ const { origin } = new URL(url);
5
+ return origin === "null" || !origin ? url : origin;
6
+ };
7
+ const flatten = (source, target = []) => {
8
+ const retVal = target || [];
9
+ if (source && source.forEach) {
10
+ source.forEach((item) => {
11
+ flatten(item, retVal);
12
+ });
13
+ } else if (typeof source !== "undefined") {
14
+ retVal.push(source);
15
+ }
16
+ return retVal;
17
+ };
18
+ const isScriptingObject = (value) => (
19
+ // eslint-disable-next-line no-underscore-dangle, @typescript-eslint/no-unsafe-member-access
20
+ typeof value?._toJSON === "function"
21
+ );
22
+ function isFunction(value) {
23
+ return typeof value === "function";
24
+ }
25
+ const isProxy = (value) => (
26
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
27
+ value?.constructor?.name === "Proxy"
28
+ );
29
+ const getObjectId = (elementOrId) => elementOrId?.id ?? elementOrId;
30
+ export {
31
+ flatten,
32
+ getObjectId,
33
+ getOrigin,
34
+ isFunction,
35
+ isProxy,
36
+ isScriptingObject
37
+ };
@@ -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,3 @@
1
+ import{faker as e}from"https://cdn.skypack.dev/@faker-js/faker";export const getBorrowerDetails=()=>{const s=e.name.firstName(),t=e.name.lastName(),r=e.internet.email(),a=e.phone.phoneNumber(),o=e.address.streetAddress(),n=e.address.city(),d=e.address.state(),c=e.address.zipCode();return{firstName:s,lastName:t,email:r,phone:a,address:o,city:n,state:d,zip:c}};
2
+
3
+ //# sourceMappingURL=autoFill.js.map
Binary file
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack://ice/autoFill.js"],"sourcesContent":["import { faker } from 'https://cdn.skypack.dev/@faker-js/faker';\n\nexport const getBorrowerDetails = () => {\n const firstName = faker.name.firstName();\n const lastName = faker.name.lastName();\n const email = faker.internet.email();\n const phone = faker.phone.phoneNumber();\n const address = faker.address.streetAddress();\n const city = faker.address.city();\n const state = faker.address.state();\n const zip = faker.address.zipCode();\n return {\n firstName,\n lastName,\n email,\n phone,\n address,\n city,\n state,\n zip,\n };\n};"],"mappings":"AAAA,OAAS,SAAAA,MAAa,0CAEf,aAAM,mBAAqB,IAAM,CACtC,MAAMC,EAAYD,EAAM,KAAK,UAAU,EACjCE,EAAWF,EAAM,KAAK,SAAS,EAC/BG,EAAQH,EAAM,SAAS,MAAM,EAC7BI,EAAQJ,EAAM,MAAM,YAAY,EAChCK,EAAUL,EAAM,QAAQ,cAAc,EACtCM,EAAON,EAAM,QAAQ,KAAK,EAC1BO,EAAQP,EAAM,QAAQ,MAAM,EAC5BQ,EAAMR,EAAM,QAAQ,QAAQ,EAClC,MAAO,CACL,UAAAC,EACA,SAAAC,EACA,MAAAC,EACA,MAAAC,EACA,QAAAC,EACA,KAAAC,EACA,MAAAC,EACA,IAAAC,CACF,CACF","names":["faker","firstName","lastName","email","phone","address","city","state","zip"],"sourceRoot":"","file":"autoFill.js"}
@@ -0,0 +1 @@
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Host</title><script src="https://cdn.tailwindcss.com?plugins=forms"></script><script src="https://qa.assets.rd.elliemae.io/pui-diagnostics@3"></script><script defer="defer" src="js/emuiSsfHost.c8f735724b6fe44f4dd6.js"></script></head><body><header class="bg-indigo-300 h-10 flex place-items-center"><div class="px-2">ICE Mortgage Product</div></header><main class="mx-auto max-w-7xl px-2 sm:px-6 lg:px-8"><div class="min-w-0 flex-1 mt-4"><h1 class="text-2xl font-bold leading-7 text-gray-900 sm:truncate sm:text-3xl sm:tracking-tight">Loan Application</h1></div><div id="successFeedback" class="hidden rounded-md bg-green-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-green-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd"/></svg></div><div class="ml-3"><p class="text-sm font-medium text-green-800">Loan Saved Successfully</p></div></div></div><div id="errorFeedback" class="hidden rounded-md bg-red-50 p-4"><div class="flex"><div class="flex-shrink-0"><svg class="h-5 w-5 text-red-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z" clip-rule="evenodd"/></svg></div><div class="ml-3"><h3 class="text-sm font-medium text-red-800">Credit Score is not meeting the requirement</h3></div></div></div><div class="mt-2 sm:grid sm:grid-cols-2 sm:gap-2"><form class="px-2 py-2 space-y-8 divide-y divide-gray-200 bg-gray-50"><div class="space-y-8 divide-y divide-gray-200 sm:space-y-5"><div class="space-y-6 sm:space-y-5"><div><h3 class="text-lg font-medium leading-6 text-gray-900">Personal Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="firstName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">First name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="firstName" id="firstName" autocomplete="given-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="John" placeholder="John"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="lastName" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Last name</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input name="lastName" id="lastName" autocomplete="family-name" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="Doe" placeholder="Doe"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="ssn" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">SSN</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="ssn" id="ssn" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="123456789" placeholder="123456789"/></div></div></div><div><h3 class="text-lg font-medium leading-6 text-gray-900">Loan Information</h3></div><div class="space-y-6 sm:space-y-5"><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="amount" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Amount</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="amount" id="amount" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="500000" placeholder="500000"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="Term" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Term (years)</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="term" id="term" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="30" placeholder="30"/></div></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><label for="downPayment" class="block text-sm font-medium text-gray-700 sm:mt-px sm:pt-2">Down Payment</label><div class="mt-1 sm:col-span-2 sm:mt-0"><input type="number" name="downPayment" id="downPayment" class="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" value="50000" placeholder="50000"/></div></div><div><h3 class="text-lg font-medium leading-6 text-gray-900">Order Services</h3></div><div class="sm:grid sm:grid-cols-3 sm:items-start sm:gap-4 sm:border-gray-200"><div class="mt-1 sm:mt-0"><button id="title" type="button" class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 disabled:opacity-50 disabled:cursor-not-allowed focus:ring-offset-2"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"><path fill-rule="evenodd" d="M7.502 6h7.128A3.375 3.375 0 0118 9.375v9.375a3 3 0 003-3V6.108c0-1.505-1.125-2.811-2.664-2.94a48.972 48.972 0 00-.673-.05A3 3 0 0015 1.5h-1.5a3 3 0 00-2.663 1.618c-.225.015-.45.032-.673.05C8.662 3.295 7.554 4.542 7.502 6zM13.5 3A1.5 1.5 0 0012 4.5h4.5A1.5 1.5 0 0015 3h-1.5z" clip-rule="evenodd"/><path fill-rule="evenodd" d="M3 9.375C3 8.339 3.84 7.5 4.875 7.5h9.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 013 20.625V9.375zM6 12a.75.75 0 01.75-.75h.008a.75.75 0 01.75.75v.008a.75.75 0 01-.75.75H6.75a.75.75 0 01-.75-.75V12zm2.25 0a.75.75 0 01.75-.75h3.75a.75.75 0 010 1.5H9a.75.75 0 01-.75-.75zM6 15a.75.75 0 01.75-.75h.008a.75.75 0 01.75.75v.008a.75.75 0 01-.75.75H6.75a.75.75 0 01-.75-.75V15zm2.25 0a.75.75 0 01.75-.75h3.75a.75.75 0 010 1.5H9a.75.75 0 01-.75-.75zM6 18a.75.75 0 01.75-.75h.008a.75.75 0 01.75.75v.008a.75.75 0 01-.75.75H6.75a.75.75 0 01-.75-.75V18zm2.25 0a.75.75 0 01.75-.75h3.75a.75.75 0 010 1.5H9a.75.75 0 01-.75-.75z" clip-rule="evenodd"/></svg> Title</button></div><div class="mt-1 sm:mt-0"><button id="credit" type="button" class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 disabled:opacity-50 disabled:cursor-not-allowed focus:ring-offset-2"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"><path fill-rule="evenodd" d="M2.25 13.5a8.25 8.25 0 018.25-8.25.75.75 0 01.75.75v6.75H18a.75.75 0 01.75.75 8.25 8.25 0 01-16.5 0z" clip-rule="evenodd"/><path fill-rule="evenodd" d="M12.75 3a.75.75 0 01.75-.75 8.25 8.25 0 018.25 8.25.75.75 0 01-.75.75h-7.5a.75.75 0 01-.75-.75V3z" clip-rule="evenodd"/></svg> Credit Score</button></div></div></div></div></div><div class="flex flex-col"><button id="saveLoan" type="button" class="rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">Save</button></div></form><div id="aside-container" class="flex flex-col gap-4 items-start mt-4 border-2 p-2 rounded-lg border-dashed border-cyan-300 sm:mt-0"></div></div><div id="bottom-container" class="flex flex-col gap-4 items-start mt-4 p-2 sm:mt-0"></div></main><script src="./init.js" type="module"></script></body></html>
@@ -0,0 +1,3 @@
1
+ import{Loan as c}from"./loan-object.js";import{getGuestBaseUrl as o,getHost as i}from"./utils.js";let n=null,s=null;const r=async()=>{const e=await o();document.getElementById("credit").addEventListener("click",()=>{const{id:t}=n.loadGuest({url:new URL("./creditService.html",e).href,title:"Credit Service Corp",params:{src:new URL("./creditScoreService.js",e).href},targetElement:document.getElementById("bottom-container"),options:{fitToContent:!0}})})},l=async()=>{const e=await o(),t={};n.loadGuest({url:new URL("./pricingService.html",e).href,title:"Pricing Service Corp",params:t,targetElement:document.getElementById("aside-container"),options:{fitToContent:!0}})},d=async()=>{const e=await o(),t={};n.loadGuest({url:new URL("./loanValidation.html",e).href,title:"Loan Validation Service Corp",params:t,targetElement:document.getElementById("bottom-container"),options:{fitToContent:!0}})},m=async()=>{const e=await o(),t={};n.loadGuest({url:new URL("./titleService.html",e).href,title:"Title Service Corp",params:t,targetElement:document.getElementById("aside-container"),options:{openMode:ice.OpenMode.Popup}})},u=()=>{s=new c,n.addScriptingObject(s)},p=async()=>{const e=s.getLoanDetails();(await n.dispatchEvent({event:s.onPreSave,eventParams:e,eventOptions:{timeout:1e3}})).some(a=>a===!1)?document.getElementById("errorFeedback").classList.remove("hidden"):document.getElementById("successFeedback").classList.remove("hidden")},v=()=>{n=i(),u();const e=document.getElementById("saveLoan");e&&e.addEventListener("click",p),r(),l(),d(),document.getElementById("title")?.addEventListener?.("click",m)};window.addEventListener("DOMContentLoaded",v);
2
+
3
+ //# sourceMappingURL=init.js.map
Binary file
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack://ice/init.js"],"sourcesContent":["import { Loan } from './loan-object.js';\nimport { getGuestBaseUrl, getHost } from './utils.js';\n\nlet host = null;\nlet loanObj = null;\n\nconst setupCreditService = async () => {\n const baseUrl = await getGuestBaseUrl();\n document.getElementById('credit').addEventListener('click', () => {\n const { id } = host.loadGuest({\n url: new URL('./creditService.html', baseUrl).href,\n title: 'Credit Service Corp',\n params: { src: new URL('./creditScoreService.js', baseUrl).href },\n targetElement: document.getElementById('bottom-container'),\n options: { fitToContent: true },\n });\n });\n};\n\nconst setupPricingService = async () => {\n const baseUrl = await getGuestBaseUrl();\n const params = {};\n host.loadGuest({\n url: new URL('./pricingService.html', baseUrl).href,\n title: 'Pricing Service Corp',\n params,\n targetElement: document.getElementById('aside-container'),\n options: { fitToContent: true },\n });\n};\n\nconst setupLoanValidationService = async () => {\n const baseUrl = await getGuestBaseUrl();\n const params = {};\n host.loadGuest({\n url: new URL('./loanValidation.html', baseUrl).href,\n title: 'Loan Validation Service Corp',\n params,\n targetElement: document.getElementById('bottom-container'),\n options: { fitToContent: true },\n });\n};\n\nconst setupTitleService = async () => {\n const baseUrl = await getGuestBaseUrl();\n const params = {};\n host.loadGuest({\n url: new URL('./titleService.html', baseUrl).href,\n title: 'Title Service Corp',\n params,\n targetElement: document.getElementById('aside-container'),\n options: { openMode: ice.OpenMode.Popup },\n });\n};\n\nconst setupLoanObject = () => {\n loanObj = new Loan();\n host.addScriptingObject(loanObj);\n};\n\nconst saveLoan = async () => {\n const loanDetails = loanObj.getLoanDetails();\n const results = await host.dispatchEvent({\n event: loanObj.onPreSave,\n eventParams: loanDetails,\n eventOptions: {\n timeout: 1000,\n },\n });\n if (results.some((result) => result === false)) {\n const errorFeedback = document.getElementById('errorFeedback');\n errorFeedback.classList.remove('hidden');\n } else {\n const successFeedback = document.getElementById('successFeedback');\n successFeedback.classList.remove('hidden');\n }\n};\n\nconst init = () => {\n // elli.ssf.setLogLevel(0);\n host = getHost();\n setupLoanObject();\n const saveLoanButton = document.getElementById('saveLoan');\n if (saveLoanButton) saveLoanButton.addEventListener('click', saveLoan);\n setupCreditService();\n setupPricingService();\n setupLoanValidationService();\n document\n .getElementById('title')\n ?.addEventListener?.('click', setupTitleService);\n};\n\nwindow.addEventListener('DOMContentLoaded', init);\n"],"mappings":"AAAA,OAAS,QAAAA,MAAY,mBACrB,OAAS,mBAAAC,EAAiB,WAAAC,MAAe,aAEzC,IAAIC,EAAO,KACPC,EAAU,KAEd,MAAMC,EAAqB,SAAY,CACrC,MAAMC,EAAU,MAAML,EAAgB,EACtC,SAAS,eAAe,QAAQ,EAAE,iBAAiB,QAAS,IAAM,CAChE,KAAM,CAAE,GAAAM,CAAG,EAAIJ,EAAK,UAAU,CAC5B,IAAK,IAAI,IAAI,uBAAwBG,CAAO,EAAE,KAC9C,MAAO,sBACP,OAAQ,CAAE,IAAK,IAAI,IAAI,0BAA2BA,CAAO,EAAE,IAAK,EAChE,cAAe,SAAS,eAAe,kBAAkB,EACzD,QAAS,CAAE,aAAc,EAAK,CAChC,CAAC,CACH,CAAC,CACH,EAEME,EAAsB,SAAY,CACtC,MAAMF,EAAU,MAAML,EAAgB,EAChCQ,EAAS,CAAC,EAChBN,EAAK,UAAU,CACb,IAAK,IAAI,IAAI,wBAAyBG,CAAO,EAAE,KAC/C,MAAO,uBACP,OAAAG,EACA,cAAe,SAAS,eAAe,iBAAiB,EACxD,QAAS,CAAE,aAAc,EAAK,CAChC,CAAC,CACH,EAEMC,EAA6B,SAAY,CAC7C,MAAMJ,EAAU,MAAML,EAAgB,EAChCQ,EAAS,CAAC,EAChBN,EAAK,UAAU,CACb,IAAK,IAAI,IAAI,wBAAyBG,CAAO,EAAE,KAC/C,MAAO,+BACP,OAAAG,EACA,cAAe,SAAS,eAAe,kBAAkB,EACzD,QAAS,CAAE,aAAc,EAAK,CAChC,CAAC,CACH,EAEME,EAAoB,SAAY,CACpC,MAAML,EAAU,MAAML,EAAgB,EAChCQ,EAAS,CAAC,EAChBN,EAAK,UAAU,CACb,IAAK,IAAI,IAAI,sBAAuBG,CAAO,EAAE,KAC7C,MAAO,qBACP,OAAAG,EACA,cAAe,SAAS,eAAe,iBAAiB,EACxD,QAAS,CAAE,SAAU,IAAI,SAAS,KAAM,CAC1C,CAAC,CACH,EAEMG,EAAkB,IAAM,CAC5BR,EAAU,IAAIJ,EACdG,EAAK,mBAAmBC,CAAO,CACjC,EAEMS,EAAW,SAAY,CAC3B,MAAMC,EAAcV,EAAQ,eAAe,GAC3B,MAAMD,EAAK,cAAc,CACvC,MAAOC,EAAQ,UACf,YAAaU,EACb,aAAc,CACZ,QAAS,GACX,CACF,CAAC,GACW,KAAMC,GAAWA,IAAW,EAAK,EACrB,SAAS,eAAe,eAAe,EAC/C,UAAU,OAAO,QAAQ,EAEf,SAAS,eAAe,iBAAiB,EACjD,UAAU,OAAO,QAAQ,CAE7C,EAEMC,EAAO,IAAM,CAEjBb,EAAOD,EAAQ,EACfU,EAAgB,EAChB,MAAMK,EAAiB,SAAS,eAAe,UAAU,EACrDA,GAAgBA,EAAe,iBAAiB,QAASJ,CAAQ,EACrER,EAAmB,EACnBG,EAAoB,EACpBE,EAA2B,EAC3B,SACG,eAAe,OAAO,GACrB,mBAAmB,QAASC,CAAiB,CACnD,EAEA,OAAO,iBAAiB,mBAAoBK,CAAI","names":["Loan","getGuestBaseUrl","getHost","host","loanObj","setupCreditService","baseUrl","id","setupPricingService","params","setupLoanValidationService","setupTitleService","setupLoanObject","saveLoan","loanDetails","result","init","saveLoanButton"],"sourceRoot":"","file":"init.js"}