@elliemae/pui-app-sdk 5.23.3 → 5.24.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.
- package/dist/cjs/utils/micro-frontend/index.js +2 -1
- package/dist/cjs/view/micro-app/app-factory/index.js +2 -2
- package/dist/cjs/view/micro-app/resources/script.js +4 -2
- package/dist/cjs/view/tests/app.config.json +1 -0
- package/dist/esm/utils/micro-frontend/index.js +2 -1
- package/dist/esm/view/micro-app/app-factory/index.js +2 -2
- package/dist/esm/view/micro-app/resources/script.js +4 -2
- package/dist/esm/view/tests/app.config.json +1 -0
- package/dist/types/lib/utils/micro-frontend/types.d.ts +1 -0
- package/dist/types/lib/view/micro-app/resources/script.d.ts +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -205,7 +205,7 @@ const removeAppFromGlobalVariable = (id, uuid) => {
|
|
|
205
205
|
}
|
|
206
206
|
};
|
|
207
207
|
const loadApp = async (appConfig) => {
|
|
208
|
-
const { id, uuid, documentEle } = appConfig;
|
|
208
|
+
const { id, uuid, documentEle, isJsModule } = appConfig;
|
|
209
209
|
addAppToGlobalVariable({ id, uuid, documentEle });
|
|
210
210
|
try {
|
|
211
211
|
(0, import_micro_frontend.getLogger)().info(import_log_records.logRecords.APP_LOADING(id, uuid));
|
|
@@ -215,7 +215,7 @@ const loadApp = async (appConfig) => {
|
|
|
215
215
|
let counter = 0;
|
|
216
216
|
const requests = assets.map((fileName) => {
|
|
217
217
|
counter += 1;
|
|
218
|
-
return !isCss(fileName) ? (0, import_script.addScriptToDOM)(appConfig, fileName, counter) : (0, import_style.addStylesToDOM)(appConfig, fileName, counter);
|
|
218
|
+
return !isCss(fileName) ? (0, import_script.addScriptToDOM)(appConfig, fileName, counter, isJsModule) : (0, import_style.addStylesToDOM)(appConfig, fileName, counter);
|
|
219
219
|
});
|
|
220
220
|
await waitAndInitApplication(appConfig, requests);
|
|
221
221
|
(0, import_micro_frontend.getLogger)().info(import_log_records.logRecords.APP_LOADING_COMPLETE(id, uuid));
|
|
@@ -29,7 +29,8 @@ var import_url = require("../../../utils/url.js");
|
|
|
29
29
|
const APP_SCRIPT_ID_PREFIX = "emui-script-";
|
|
30
30
|
const HEAD_SCRIPTS = /(?:emuiDiagnostics|global|global-prod|emuiUserMonitoring)(?:..*)?.js/;
|
|
31
31
|
const isHeadScript = (scriptSrc) => HEAD_SCRIPTS.test(scriptSrc);
|
|
32
|
-
const
|
|
32
|
+
const isJSDOM = () => window.navigator.userAgent.includes("jsdom");
|
|
33
|
+
const addScriptToDOM = ({ name, hostUrl, documentEle }, fileName, index, isJsModule = false) => {
|
|
33
34
|
if (!hostUrl)
|
|
34
35
|
throw new Error("Unable to add scripts to DOM. hostUrl is required.");
|
|
35
36
|
return new Promise((resolve, reject) => {
|
|
@@ -40,7 +41,8 @@ const addScriptToDOM = ({ name, hostUrl, documentEle }, fileName, index) => {
|
|
|
40
41
|
ele.src = (0, import_url.removeDoubleSlash)(url.href);
|
|
41
42
|
ele.onload = resolve.bind(null, ele.id);
|
|
42
43
|
ele.onerror = reject.bind(null, ele.id);
|
|
43
|
-
ele.async = false;
|
|
44
|
+
if (isJSDOM() || !isJsModule) ele.async = false;
|
|
45
|
+
else ele.type = "module";
|
|
44
46
|
if (isHeadScript(ele.src)) documentEle.head.appendChild(ele);
|
|
45
47
|
else documentEle.body.appendChild(ele);
|
|
46
48
|
});
|
|
@@ -192,7 +192,7 @@ const removeAppFromGlobalVariable = (id, uuid) => {
|
|
|
192
192
|
}
|
|
193
193
|
};
|
|
194
194
|
const loadApp = async (appConfig) => {
|
|
195
|
-
const { id, uuid, documentEle } = appConfig;
|
|
195
|
+
const { id, uuid, documentEle, isJsModule } = appConfig;
|
|
196
196
|
addAppToGlobalVariable({ id, uuid, documentEle });
|
|
197
197
|
try {
|
|
198
198
|
getLogger().info(logRecords.APP_LOADING(id, uuid));
|
|
@@ -202,7 +202,7 @@ const loadApp = async (appConfig) => {
|
|
|
202
202
|
let counter = 0;
|
|
203
203
|
const requests = assets.map((fileName) => {
|
|
204
204
|
counter += 1;
|
|
205
|
-
return !isCss(fileName) ? addScriptToDOM(appConfig, fileName, counter) : addStylesToDOM(appConfig, fileName, counter);
|
|
205
|
+
return !isCss(fileName) ? addScriptToDOM(appConfig, fileName, counter, isJsModule) : addStylesToDOM(appConfig, fileName, counter);
|
|
206
206
|
});
|
|
207
207
|
await waitAndInitApplication(appConfig, requests);
|
|
208
208
|
getLogger().info(logRecords.APP_LOADING_COMPLETE(id, uuid));
|
|
@@ -2,7 +2,8 @@ import { removeDoubleSlash } from "../../../utils/url.js";
|
|
|
2
2
|
const APP_SCRIPT_ID_PREFIX = "emui-script-";
|
|
3
3
|
const HEAD_SCRIPTS = /(?:emuiDiagnostics|global|global-prod|emuiUserMonitoring)(?:..*)?.js/;
|
|
4
4
|
const isHeadScript = (scriptSrc) => HEAD_SCRIPTS.test(scriptSrc);
|
|
5
|
-
const
|
|
5
|
+
const isJSDOM = () => window.navigator.userAgent.includes("jsdom");
|
|
6
|
+
const addScriptToDOM = ({ name, hostUrl, documentEle }, fileName, index, isJsModule = false) => {
|
|
6
7
|
if (!hostUrl)
|
|
7
8
|
throw new Error("Unable to add scripts to DOM. hostUrl is required.");
|
|
8
9
|
return new Promise((resolve, reject) => {
|
|
@@ -13,7 +14,8 @@ const addScriptToDOM = ({ name, hostUrl, documentEle }, fileName, index) => {
|
|
|
13
14
|
ele.src = removeDoubleSlash(url.href);
|
|
14
15
|
ele.onload = resolve.bind(null, ele.id);
|
|
15
16
|
ele.onerror = reject.bind(null, ele.id);
|
|
16
|
-
ele.async = false;
|
|
17
|
+
if (isJSDOM() || !isJsModule) ele.async = false;
|
|
18
|
+
else ele.type = "module";
|
|
17
19
|
if (isHeadScript(ele.src)) documentEle.head.appendChild(ele);
|
|
18
20
|
else documentEle.body.appendChild(ele);
|
|
19
21
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MicroAppConfig } from '../../../utils/micro-frontend/types.js';
|
|
2
2
|
export declare const APP_SCRIPT_ID_PREFIX = "emui-script-";
|
|
3
|
-
export declare const addScriptToDOM: ({ name, hostUrl, documentEle }: MicroAppConfig, fileName: string, index: number) => Promise<string>;
|
|
3
|
+
export declare const addScriptToDOM: ({ name, hostUrl, documentEle }: MicroAppConfig, fileName: string, index: number, isJsModule?: boolean) => Promise<string>;
|
|
4
4
|
export declare const removeScriptFromDOM: (elementId?: string, documentEle?: Document) => Promise<void>;
|
|
5
5
|
export declare const removeDynamicImportedScripts: (hostUrl: string, documentEle: HTMLDocument) => void;
|
|
6
6
|
export declare const removePrefetchLinks: (hostUrl: string, documentEle: HTMLDocument) => void;
|