@lwrjs/loader 0.9.0-alpha.8 → 0.9.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/README.md +3 -3
- package/build/assets/prod/lwr-error-shim.js +1 -1
- package/build/assets/prod/lwr-loader-shim-legacy.bundle.js +31 -33
- package/build/assets/prod/lwr-loader-shim-legacy.bundle.min.js +2 -2
- package/build/assets/prod/lwr-loader-shim-legacy.js +21 -20
- package/build/assets/prod/lwr-loader-shim.bundle.js +32 -33
- package/build/assets/prod/lwr-loader-shim.bundle.min.js +2 -2
- package/build/assets/prod/lwr-loader-shim.js +21 -20
- package/build/bundle/prod/lwr/esmLoader/esmLoader.js +1 -1
- package/build/cjs/index.cjs +1 -1
- package/build/cjs/modules/lwr/esmLoader/esmLoader.cjs +23 -19
- package/build/cjs/modules/lwr/loader/errors/messages.cjs +1 -1
- package/build/cjs/modules/lwr/loader/moduleRegistry/moduleRegistry.cjs +3 -7
- package/build/cjs/modules/lwr/loaderLegacy/moduleRegistry/moduleRegistry.cjs +3 -7
- package/build/index.js +1 -1
- package/build/modules/lwr/esmLoader/esmLoader.js +28 -24
- package/build/modules/lwr/loader/__tests__/utils/amd.js +2 -3
- package/build/modules/lwr/loader/loader.js +11 -13
- package/build/modules/lwr/loaderLegacy/__tests__/utils/amd.js +4 -5
- package/build/modules/lwr/loaderLegacy/loaderLegacy.js +10 -13
- package/package.json +10 -9
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
6
6
|
*/
|
|
7
|
-
/* LWR Module Loader Shim v0.9.0
|
|
7
|
+
/* LWR Module Loader Shim v0.9.0 */
|
|
8
8
|
(function () {
|
|
9
9
|
'use strict';
|
|
10
10
|
|
|
@@ -13,23 +13,23 @@
|
|
|
13
13
|
const BOOTSTRAP_ERROR = `${BOOTSTRAP_PREFIX}error`;
|
|
14
14
|
|
|
15
15
|
var Phase;
|
|
16
|
-
|
|
17
16
|
(function (Phase) {
|
|
18
17
|
Phase[Phase["Start"] = 0] = "Start";
|
|
19
18
|
Phase[Phase["End"] = 1] = "End";
|
|
20
19
|
})(Phase || (Phase = {}));
|
|
21
|
-
|
|
22
20
|
// Attach a custom dispatcher
|
|
23
21
|
let customDispatcher;
|
|
24
22
|
function attachDispatcher(dispatcher) {
|
|
25
23
|
customDispatcher = dispatcher;
|
|
26
|
-
}
|
|
27
|
-
// e.g. JSDom (used in Jest) doesn't implement these
|
|
24
|
+
}
|
|
28
25
|
|
|
26
|
+
// Check if the Performance API is available
|
|
27
|
+
// e.g. JSDom (used in Jest) doesn't implement these
|
|
29
28
|
const perf = globalThis.performance;
|
|
30
|
-
const isPerfSupported = typeof perf !== 'undefined' && typeof perf.mark === 'function' && typeof perf.clearMarks === 'function' && typeof perf.measure === 'function' && typeof perf.clearMeasures === 'function';
|
|
31
|
-
// Fallback to the Performance API if there is no custom dispatcher
|
|
29
|
+
const isPerfSupported = typeof perf !== 'undefined' && typeof perf.mark === 'function' && typeof perf.clearMarks === 'function' && typeof perf.measure === 'function' && typeof perf.clearMeasures === 'function';
|
|
32
30
|
|
|
31
|
+
// For marking request metrics
|
|
32
|
+
// Fallback to the Performance API if there is no custom dispatcher
|
|
33
33
|
function logOperationStart({
|
|
34
34
|
id,
|
|
35
35
|
specifier
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
} else if (isPerfSupported) {
|
|
44
44
|
perf.mark(id + (specifier ? `.${specifier}` : ''));
|
|
45
45
|
}
|
|
46
|
-
}
|
|
47
|
-
// Fallback to the Performance API if there is no custom dispatcher
|
|
46
|
+
}
|
|
48
47
|
|
|
48
|
+
// For measuring duration metrics
|
|
49
|
+
// Fallback to the Performance API if there is no custom dispatcher
|
|
49
50
|
/* istanbul ignore next */
|
|
50
|
-
|
|
51
51
|
function logOperationEnd({
|
|
52
52
|
id,
|
|
53
53
|
specifier
|
|
@@ -62,9 +62,10 @@
|
|
|
62
62
|
const suffix = specifier ? `.${specifier}` : '';
|
|
63
63
|
const markName = id + suffix;
|
|
64
64
|
const measureName = `${id}.duration${suffix}`;
|
|
65
|
-
perf.measure(measureName, markName);
|
|
66
|
-
// Even if they get deleted, existing PerformanceObservers preserve copies of the entries
|
|
65
|
+
perf.measure(measureName, markName);
|
|
67
66
|
|
|
67
|
+
// Clear the created mark and measure to avoid filling the performance entry buffer
|
|
68
|
+
// Even if they get deleted, existing PerformanceObservers preserve copies of the entries
|
|
68
69
|
perf.clearMarks(markName);
|
|
69
70
|
perf.clearMeasures(measureName);
|
|
70
71
|
}
|
|
@@ -140,7 +141,7 @@
|
|
|
140
141
|
// Parse configuration
|
|
141
142
|
this.global = global;
|
|
142
143
|
this.config = global.LWR;
|
|
143
|
-
this.loaderSpecifier = 'lwr/loader/v/0_9_0
|
|
144
|
+
this.loaderSpecifier = 'lwr/loader/v/0_9_0';
|
|
144
145
|
// Set up error handler
|
|
145
146
|
this.errorHandler = this.config.onError;
|
|
146
147
|
// Set up the temporary LWR.define function and customInit hook
|
|
@@ -148,6 +149,7 @@
|
|
|
148
149
|
global.LWR.define = tempDefine;
|
|
149
150
|
this.bootReady = this.config.autoBoot;
|
|
150
151
|
try {
|
|
152
|
+
this.createProfilerModule(this.config);
|
|
151
153
|
customInit(Object.freeze(this.config), this.postCustomInit.bind(this), tempDefine, (e) => {
|
|
152
154
|
// customInit handlers can overwrite
|
|
153
155
|
// the error handler with onBootstrapError
|
|
@@ -203,7 +205,7 @@
|
|
|
203
205
|
endpoints: this.config.endpoints,
|
|
204
206
|
baseUrl: this.config.baseUrl,
|
|
205
207
|
profiler: { logOperationStart, logOperationEnd },
|
|
206
|
-
// TODO: can be removed following https://github.com/salesforce/lwr/issues/1087
|
|
208
|
+
// TODO: can be removed following https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
207
209
|
appMetadata: {
|
|
208
210
|
appId: this.config.appId,
|
|
209
211
|
bootstrapModule: this.config.bootstrapModule,
|
|
@@ -212,7 +214,6 @@
|
|
|
212
214
|
},
|
|
213
215
|
};
|
|
214
216
|
const loader = createLoader(this.loaderSpecifier, this.defineCache[this.loaderSpecifier], loaderConfig, this.config.preloadModules);
|
|
215
|
-
this.createProfilerModule(loader);
|
|
216
217
|
this.mountApp(loader);
|
|
217
218
|
}
|
|
218
219
|
catch (e) {
|
|
@@ -238,11 +239,11 @@
|
|
|
238
239
|
}
|
|
239
240
|
// Create a module out of the profiler
|
|
240
241
|
// Note: The profiler is also available as a module through lwc module resolution (see package.json)
|
|
241
|
-
createProfilerModule(
|
|
242
|
+
createProfilerModule(globalLWR) {
|
|
242
243
|
const exporter = (exports) => {
|
|
243
244
|
Object.assign(exports, { logOperationStart, logOperationEnd });
|
|
244
245
|
};
|
|
245
|
-
|
|
246
|
+
globalLWR.define('lwr/profiler/v/0_9_0', ['exports'], exporter);
|
|
246
247
|
}
|
|
247
248
|
// Set up the application globals, import map, root custom element...
|
|
248
249
|
mountApp(loader) {
|
|
@@ -275,7 +276,7 @@
|
|
|
275
276
|
})
|
|
276
277
|
.then(() => loader.load(bootstrapModule))
|
|
277
278
|
.catch((reason) => {
|
|
278
|
-
this.enterErrorState(new Error(`Application ${rootComponent} could not be loaded: ${reason}`));
|
|
279
|
+
this.enterErrorState(new Error(`Application ${rootComponent || bootstrapModule} could not be loaded: ${reason}`));
|
|
279
280
|
});
|
|
280
281
|
}
|
|
281
282
|
// Trigger bootstrap error state, and call error handler if registered
|
|
@@ -303,14 +304,14 @@
|
|
|
303
304
|
// The loader module is ALWAYS required
|
|
304
305
|
const GLOBAL = globalThis;
|
|
305
306
|
GLOBAL.LWR.requiredModules = GLOBAL.LWR.requiredModules || [];
|
|
306
|
-
if (GLOBAL.LWR.requiredModules.indexOf('lwr/loader/v/0_9_0
|
|
307
|
-
GLOBAL.LWR.requiredModules.push('lwr/loader/v/0_9_0
|
|
307
|
+
if (GLOBAL.LWR.requiredModules.indexOf('lwr/loader/v/0_9_0') < 0) {
|
|
308
|
+
GLOBAL.LWR.requiredModules.push('lwr/loader/v/0_9_0');
|
|
308
309
|
}
|
|
309
310
|
new LoaderShim(GLOBAL);
|
|
310
311
|
|
|
311
312
|
}());
|
|
312
313
|
|
|
313
|
-
LWR.define('lwr/loader/v/0_9_0
|
|
314
|
+
LWR.define('lwr/loader/v/0_9_0', ['exports'], function (exports) { 'use strict';
|
|
314
315
|
|
|
315
316
|
const templateRegex = /\{([0-9]+)\}/g;
|
|
316
317
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -409,7 +410,7 @@ LWR.define('lwr/loader/v/0_9_0-alpha_8', ['exports'], function (exports) { 'use
|
|
|
409
410
|
const MODULE_ALREADY_LOADED = Object.freeze({
|
|
410
411
|
code: 3017,
|
|
411
412
|
level: 0,
|
|
412
|
-
message: 'Marking module(s) as externally loaded, but they are already loaded:
|
|
413
|
+
message: 'Marking module(s) as externally loaded, but they are already loaded:',
|
|
413
414
|
});
|
|
414
415
|
const FAIL_HOOK_LOAD = Object.freeze({
|
|
415
416
|
code: 3018,
|
|
@@ -608,11 +609,13 @@ LWR.define('lwr/loader/v/0_9_0-alpha_8', ['exports'], function (exports) { 'use
|
|
|
608
609
|
|
|
609
610
|
// Bootstrap / shim
|
|
610
611
|
|
|
612
|
+
// Loader: modules
|
|
611
613
|
const LOADER_PREFIX = 'lwr.loader.';
|
|
612
614
|
const MODULE_DEFINE = `${LOADER_PREFIX}module.define`;
|
|
613
615
|
const MODULE_FETCH = `${LOADER_PREFIX}module.fetch`;
|
|
614
616
|
const MODULE_ERROR = `${LOADER_PREFIX}module.error`;
|
|
615
617
|
|
|
618
|
+
// Loader: mappings
|
|
616
619
|
const MAPPINGS_FETCH = `${LOADER_PREFIX}mappings.fetch`;
|
|
617
620
|
const MAPPINGS_ERROR = `${LOADER_PREFIX}mappings.error`;
|
|
618
621
|
|
|
@@ -1073,12 +1076,8 @@ LWR.define('lwr/loader/v/0_9_0-alpha_8', ['exports'], function (exports) { 'use
|
|
|
1073
1076
|
* @param modules - list of module identifiers
|
|
1074
1077
|
*/
|
|
1075
1078
|
registerExternalModules(modules) {
|
|
1076
|
-
const alreadyRegistered = [];
|
|
1077
1079
|
modules.map((id) => {
|
|
1078
|
-
if (this.namedDefineRegistry.has(id)) {
|
|
1079
|
-
alreadyRegistered.push(id);
|
|
1080
|
-
}
|
|
1081
|
-
else {
|
|
1080
|
+
if (!this.namedDefineRegistry.has(id)) {
|
|
1082
1081
|
let resolveExternal;
|
|
1083
1082
|
let timer;
|
|
1084
1083
|
const moduleDefPromise = new Promise((resolve, reject) => {
|
|
@@ -1102,11 +1101,11 @@ LWR.define('lwr/loader/v/0_9_0-alpha_8', ['exports'], function (exports) { 'use
|
|
|
1102
1101
|
};
|
|
1103
1102
|
this.namedDefineRegistry.set(id, moduleDef);
|
|
1104
1103
|
}
|
|
1104
|
+
else if (process.env.NODE_ENV !== 'production' && hasConsole) {
|
|
1105
|
+
// eslint-disable-next-line lwr/no-unguarded-apis
|
|
1106
|
+
console.warn(MODULE_ALREADY_LOADED.message, id);
|
|
1107
|
+
}
|
|
1105
1108
|
});
|
|
1106
|
-
// throw error for modules that were already registered
|
|
1107
|
-
if (alreadyRegistered.length) {
|
|
1108
|
-
throw new LoaderError(MODULE_ALREADY_LOADED, [alreadyRegistered.join(', ')]);
|
|
1109
|
-
}
|
|
1110
1109
|
}
|
|
1111
1110
|
getImportMetadataResolver() {
|
|
1112
1111
|
return this.resolver;
|
|
@@ -1248,7 +1247,7 @@ LWR.define('lwr/loader/v/0_9_0-alpha_8', ['exports'], function (exports) { 'use
|
|
|
1248
1247
|
moduleDefault = { default: moduleDefault };
|
|
1249
1248
|
// __defaultInterop is ONLY used to support backwards compatibility
|
|
1250
1249
|
// of importing default exports the "wrong" way (when not using named exports).
|
|
1251
|
-
// See https://github.com/salesforce/lwr/pull/816
|
|
1250
|
+
// See https://github.com/salesforce-experience-platform-emu/lwr/pull/816
|
|
1252
1251
|
Object.defineProperty(moduleDefault, '__defaultInterop', { value: true });
|
|
1253
1252
|
}
|
|
1254
1253
|
// if no return value, then we are using the exports object
|
|
@@ -1470,7 +1469,7 @@ LWR.define('lwr/loader/v/0_9_0-alpha_8', ['exports'], function (exports) { 'use
|
|
|
1470
1469
|
const appId = match && match[1];
|
|
1471
1470
|
config.appMetadata.appId = appId;
|
|
1472
1471
|
}
|
|
1473
|
-
// TODO: https://github.com/salesforce/lwr/issues/1087
|
|
1472
|
+
// TODO: https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
1474
1473
|
this.services = Object.freeze({
|
|
1475
1474
|
addLoaderPlugin: this.registry.addLoaderPlugin.bind(this.registry),
|
|
1476
1475
|
handleStaleModule: this.registry.registerHandleStaleModuleHook.bind(this.registry),
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
6
6
|
*/
|
|
7
|
-
/* LWR Module Loader Shim v0.9.0
|
|
8
|
-
!function(){"use strict";var e;let t;function r(e){t=e}!function(e){e[e.Start=0]="Start",e[e.End=1]="End"}(e||(e={}));const o=globalThis.performance,i=void 0!==o&&"function"==typeof o.mark&&"function"==typeof o.clearMarks&&"function"==typeof o.measure&&"function"==typeof o.clearMeasures;function n({id:r,specifier:n}){t?t({id:r,phase:e.Start,specifier:n}):i&&o.mark(r+(n?`.${n}`:""))}function s({id:r,specifier:n}){if(t)t({id:r,phase:e.End,specifier:n});else if(i){const e=n?`.${n}`:"",t=r+e,i=`${r}.duration${e}`;o.measure(i,t),o.clearMarks(t),o.clearMeasures(i)}}function a(e,t,o,i){const{autoBoot:n,customInit:s}=e;if(function(e,t){if(!e&&!t)throw new Error("The customInit hook is required when autoBoot is false");if(e&&t)throw new Error("The customInit hook must not be defined when autoBoot is true")}(n,s),s){s({initializeApp:t,define:o,onBootstrapError:i,attachDispatcher:r},e)}}const l="function"==typeof setTimeout,d="undefined"!=typeof console;const c=globalThis;c.LWR.requiredModules=c.LWR.requiredModules||[],c.LWR.requiredModules.indexOf("lwr/loader/v/0_9_0-alpha_8")<0&&c.LWR.requiredModules.push("lwr/loader/v/0_9_0-alpha_8"),new class{constructor(e){this.defineCache={},this.orderedDefs=[],l&&(this.watchdogTimerId=this.startWatchdogTimer()),this.global=e,this.config=e.LWR,this.loaderSpecifier="lwr/loader/v/0_9_0-alpha_8",this.errorHandler=this.config.onError;const t=this.tempDefine.bind(this);e.LWR.define=t,this.bootReady=this.config.autoBoot;try{a(Object.freeze(this.config),this.postCustomInit.bind(this),t,(e=>{this.errorHandler=e}))}catch(e){this.enterErrorState(e)}}canInit(){const e=this.config.requiredModules.every((e=>this.orderedDefs.includes(e)));return this.bootReady&&e}tempDefine(...e){const t=e[0];this.defineCache[t]=e,this.orderedDefs.push(t),this.canInit()&&(l&&clearTimeout(this.watchdogTimerId),this.initApp())}postCustomInit(){this.bootReady=!0,this.canInit()&&this.initApp()}initApp(){try{const e={endpoints:this.config.endpoints,baseUrl:this.config.baseUrl,profiler:{logOperationStart:n,logOperationEnd:s},appMetadata:{appId:this.config.appId,bootstrapModule:this.config.bootstrapModule,rootComponent:this.config.rootComponent,rootComponents:this.config.rootComponents}},t=function(e,t,r,o){if(!t||"function"!=typeof t[2])throw new Error(`Expected loader with specifier "${e}" to be a module`);const i={};t[2].call(null,i);const{Loader:n}=i,s=new n(r);return o&&o.length&&s.registerExternalModules(o),s.define(e,["exports"],(e=>{Object.assign(e,{define:s.define.bind(s),load:s.load.bind(s),services:s.services})})),s}(this.loaderSpecifier,this.defineCache[this.loaderSpecifier],e,this.config.preloadModules);this.createProfilerModule(t),this.mountApp(t)}catch(e){this.enterErrorState(e)}}waitForDOMContentLoaded(){return void 0===typeof document||"interactive"===document.readyState||"complete"===document.readyState?Promise.resolve():new Promise((e=>{document.addEventListener("DOMContentLoaded",(()=>{e()}))}))}createProfilerModule(e){e.define("lwr/profiler/v/0_9_0-alpha_8",["exports"],(e=>{Object.assign(e,{logOperationStart:n,logOperationEnd:s})}))}mountApp(e){const{bootstrapModule:t,rootComponent:r,rootComponents:o,ssrProps:i,endpoints:n,imports:s,index:a}=this.config;this.global.LWR=Object.freeze({define:e.define.bind(e),rootComponent:r,rootComponents:o,ssrProps:i,endpoints:n,imports:s||{},index:a||{}}),this.orderedDefs.forEach((t=>{t!==this.loaderSpecifier&&e.define(...this.defineCache[t])}));const{disableInitDefer:l}=this.config;e.registerImportMappings({imports:s,index:a},[t,r]).then((()=>{if(!l)return this.waitForDOMContentLoaded()})).then((()=>e.load(t))).catch((e=>{this.enterErrorState(new Error(`Application ${r} could not be loaded: ${e}`))}))}enterErrorState(e){n({id:"lwr.bootstrap.error"}),this.errorHandler?this.errorHandler(e):d&&console.error(`An error occurred during LWR bootstrap. ${e.message}`,e.stack)}startWatchdogTimer(){return setTimeout((()=>{this.enterErrorState(new Error("Failed to load required modules - timed out"))}),3e5)}}(c)}(),LWR.define("lwr/loader/v/0_9_0-alpha_8",["exports"],(function(exports){"use strict";const templateRegex=/\{([0-9]+)\}/g;function templateString(e,t){return e.replace(templateRegex,((e,r)=>t[r]))}function generateErrorMessage(e,t){const r=Array.isArray(t)?templateString(e.message,t):e.message;return`LWR${e.code}: ${r}`}class LoaderError extends Error{constructor(e,t){super(),this.message=generateErrorMessage(e,t)}}function invariant(e,t){if(!e)throw new LoaderError(t)}const MISSING_NAME=Object.freeze({code:3e3,message:"A module name is required.",level:0}),FAIL_INSTANTIATE=Object.freeze({code:3004,message:"Failed to instantiate module: {0}",level:0}),NO_AMD_REQUIRE=Object.freeze({code:3005,message:"AMD require not supported.",level:0}),FAILED_DEP=Object.freeze({code:3006,level:0,message:"Failed to load dependency: {0}"}),INVALID_DEPS=Object.freeze({code:3007,message:"Unexpected value received for dependencies argument; expected an array.",level:0}),FAIL_LOAD=Object.freeze({code:3008,level:0,message:"Error loading {0}"}),UNRESOLVED=Object.freeze({code:3009,level:0,message:"Unable to resolve bare specifier: {0}"}),NO_BASE_URL=Object.freeze({code:3010,level:0,message:"baseUrl not set"});Object.freeze({code:3011,level:0,message:"Cannot set a loader service multiple times"});const INVALID_HOOK=Object.freeze({code:3012,level:0,message:"Invalid hook received"}),INVALID_LOADER_SERVICE_RESPONSE=Object.freeze({code:3013,level:0,message:"Invalid response received from hook"}),MODULE_LOAD_TIMEOUT=Object.freeze({code:3014,level:0,message:"Error loading {0} - timed out"}),HTTP_FAIL_LOAD=Object.freeze({code:3015,level:0,message:"Error loading {0}, status code {1}"}),STALE_HOOK_ERROR=Object.freeze({code:3016,level:0,message:"An error occurred handling module conflict"}),MODULE_ALREADY_LOADED=Object.freeze({code:3017,level:0,message:"Marking module(s) as externally loaded, but they are already loaded: {0}"}),FAIL_HOOK_LOAD=Object.freeze({code:3018,level:0,message:'Error loading "{0}" from hook'}),NO_MAPPING_URL=Object.freeze({code:3019,level:0,message:"Mapping endpoint not set"}),BAD_IMPORT_METADATA=Object.freeze({code:3020,level:0,message:"Invalid import metadata: {0} {1}"});Object.freeze({code:3011,level:0,message:"import map is not valid"});const hasDocument="undefined"!=typeof document,hasSetTimeout="function"==typeof setTimeout,hasConsole="undefined"!=typeof console;function getBaseUrl(){let e;if(hasDocument){const t=document.querySelector("base[href]");e=t&&t.href}if(!e&&"undefined"!=typeof location){e=location.href.split("#")[0].split("?")[0];const t=e.lastIndexOf("/");-1!==t&&(e=e.slice(0,t+1))}return e}function isUrl(e){return-1!==e.indexOf("://")}function resolveIfNotPlainOrUrl(e,t){if(-1!==e.indexOf("\\")&&(e=e.replace(/\\/g,"/")),"/"===e[0]&&"/"===e[1])return t.slice(0,t.indexOf(":")+1)+e;if("."===e[0]&&("/"===e[1]||"."===e[1]&&("/"===e[2]||2===e.length&&(e+="/"))||1===e.length&&(e+="/"))||"/"===e[0]){const r=t.slice(0,t.indexOf(":")+1);let o;if("/"===t[r.length+1]?"file:"!==r?(o=t.slice(r.length+2),o=o.slice(o.indexOf("/")+1)):o=t.slice(8):o=t.slice(r.length+("/"===t[r.length]?1:0)),"/"===e[0])return t.slice(0,t.length-o.length-1)+e;const i=o.slice(0,o.lastIndexOf("/")+1)+e,n=[];let s=-1;for(let e=0;e<i.length;e++)-1!==s?"/"===i[e]&&(n.push(i.slice(s,e+1)),s=-1):"."===i[e]?"."!==i[e+1]||"/"!==i[e+2]&&e+2!==i.length?"/"===i[e+1]||e+1===i.length?e+=1:s=e:(n.pop(),e+=2):s=e;return-1!==s&&n.push(i.slice(s)),t.slice(0,t.length-o.length)+n.join("")}}function resolveUrl(e,t){return resolveIfNotPlainOrUrl(e,t)||(isUrl(e)?e:resolveIfNotPlainOrUrl("./"+e,t))}function createScript(e){const t=document.createElement("script");return t.async=!0,t.crossOrigin="anonymous",t.src=e,t}let lastWindowError$1,lastWindowErrorUrl;function loadModuleDef(e){return new Promise((function(t,r){if(hasDocument){const o=createScript(e);o.addEventListener("error",(()=>{r(new LoaderError(FAIL_LOAD,[e]))})),o.addEventListener("load",(()=>{document.head.removeChild(o),lastWindowErrorUrl===e?r(lastWindowError$1):t()})),document.head.appendChild(o)}}))}hasDocument&&window.addEventListener("error",(e=>{lastWindowErrorUrl=e.filename,lastWindowError$1=e.error}));const LOADER_PREFIX="lwr.loader.",MODULE_DEFINE=`${LOADER_PREFIX}module.define`,MODULE_FETCH=`${LOADER_PREFIX}module.fetch`,MODULE_ERROR=`${LOADER_PREFIX}module.error`,MAPPINGS_FETCH=`${LOADER_PREFIX}mappings.fetch`,MAPPINGS_ERROR=`${LOADER_PREFIX}mappings.error`;class ImportMetadataResolver{constructor(e,t){this.importURICache=new Map,this.pendingURICache=new Map,this.loadMappingHooks=[],this.config=e,this.invalidationCallback=t}addLoadMappingHook(e){this.loadMappingHooks.push(e)}getMappingEndpoint(){return this.config.endpoints&&this.config.endpoints.uris?this.config.endpoints.uris.mapping:void 0}getModifiersAsUrlParams(){const e=this.config.endpoints?this.config.endpoints.modifiers:void 0;if(e){return`?${Object.keys(e).map((t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`)).join("&")}`}return""}buildMappingUrl(e){return`${this.getMappingEndpoint()}${encodeURIComponent(e)}${this.getModifiersAsUrlParams()}`}getBaseUrl(){return this.config.baseUrl}registerImportMappings(e,t){if(!t||0===t.length){const r=e?JSON.stringify(e):"undefined";throw new LoaderError(BAD_IMPORT_METADATA,[r,t?"[]":"undefined"])}if(!e)throw new LoaderError(BAD_IMPORT_METADATA,["undefined",JSON.stringify(t)]);if(!e.imports||0===Object.keys(e.imports).length)throw new LoaderError(BAD_IMPORT_METADATA,[JSON.stringify(e),JSON.stringify(t)]);const r=e.index||{};for(const[o,i]of Object.entries(e.imports))i.forEach((e=>{const i=r[e],n=this.importURICache.get(e);if(n){const t=i||o,r=n.identity||n.uri;r!==t&&this.invalidationCallback({name:e,oldUrl:r,newUrl:t})}else this.saveImportURIRecord(e,o,i,t.includes(e))}))}getURI(e){return this.importURICache.has(e)?resolveUrl(this.importURICache.get(e).uri,this.getBaseUrl()):void 0}resolveLocal(e){const t=this.getURI(e);return t||(isUrl(e)||e.startsWith("/")?e:void 0)}async resolve(e){let t=this.getURI(e);if(t)return t;if(isUrl(e)||e.startsWith("/"))return e;{const r=this.pendingURICache.get(e);if(r)return r;this.config.profiler.logOperationStart({id:MAPPINGS_FETCH,specifier:e});const o=(this.hasMappingHooks()?this.evaluateMappingHooks:this.fetchNewMappings).bind(this)(e).then((r=>{if(!r||!r.imports)throw new LoaderError(UNRESOLVED,[e]);if(this.registerImportMappings(r,[e]),t=this.getURI(e),!t)throw new LoaderError(UNRESOLVED,[e]);return this.config.profiler.logOperationEnd({id:MAPPINGS_FETCH,specifier:e}),t})).finally((()=>{this.pendingURICache.delete(e)}));return this.pendingURICache.set(e,o),o}}hasMappingHooks(){return this.loadMappingHooks.length>0}async evaluateMappingHooks(e){const t=this.loadMappingHooks;if(t.length){const r=Array.from(this.importURICache.keys());for(let o=0;o<t.length;o++){const i=t[o],n=await i(e,{knownModules:r});if(n||void 0===n)return n}}return this.fetchNewMappings(e)}async fetchNewMappings(e){if("function"!=typeof globalThis.fetch)throw new LoaderError(UNRESOLVED,[e]);const t=resolveUrl(this.buildMappingUrl(e),this.getBaseUrl());return globalThis.fetch(t).then((t=>{if(!t.ok)throw this.config.profiler.logOperationStart({id:MAPPINGS_ERROR,specifier:e}),new LoaderError(UNRESOLVED,[e]);return t.json().then((e=>e)).catch((t=>{throw new LoaderError(UNRESOLVED,[e])}))}))}saveImportURIRecord(e,t,r,o){r&&t!==r?this.importURICache.set(e,{uri:t,identity:r,isRoot:o}):this.importURICache.set(e,{uri:t,isRoot:o})}}function reportError(e){hasConsole&&console.error(e)}function evaluateHandleStaleModuleHooks(e,t){const{name:r,oldUrl:o,newUrl:i}=t;for(let t=0;t<e.length;t++){const n=e[t];try{if(null!==n({name:r,oldUrl:o,newUrl:i}))break}catch(e){reportError(new LoaderError(STALE_HOOK_ERROR))}}}const MODULE_LOAD_TIMEOUT_TIMER=3e5;let lastWindowError;function isCustomResponse(e){return Object.prototype.hasOwnProperty.call(e,"data")&&!Object.prototype.hasOwnProperty.call(e,"blob")}function isFetchResponse(e){return"function"==typeof e.blob}function isResponseAPromise(e){return!(!e||!e.then)}async function evaluateLoadHookResponse(response,id){return Promise.resolve().then((async()=>{if(!response.status)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);if(200!==response.status)throw new LoaderError(HTTP_FAIL_LOAD,[id,`${response.status}`]);const isResponse=isFetchResponse(response);let code;if(isCustomResponse(response))code=response.data;else{if(!isResponse)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);code=await response.text()}if(!code)throw new LoaderError(FAIL_LOAD,[id]);code=`${code}\n//# sourceURL=${id}`;try{eval(code)}catch(e){throw new LoaderError(FAIL_LOAD,[id])}if(lastWindowError)throw new LoaderError(FAIL_LOAD,[id]);return!0}))}async function evaluateLoadHook(e,t){return hasSetTimeout?new Promise(((r,o)=>{const i=setTimeout((()=>{o(new LoaderError(MODULE_LOAD_TIMEOUT,[e]))}),MODULE_LOAD_TIMEOUT_TIMER);t.then((e=>{r(e)})).catch((()=>{o(new LoaderError(FAIL_HOOK_LOAD,[e]))})).finally((()=>{clearTimeout(i)}))})):t}hasDocument&&globalThis.addEventListener("error",(e=>{lastWindowError=e.error}));class ModuleRegistry{constructor(e){this.namedDefineRegistry=new Map,this.moduleRegistry=new Map,this.aliases=new Map,this.profiler=e.profiler,this.resolver=new ImportMetadataResolver(e,this.importMetadataInvalidationCallback.bind(this))}async load(e,t){const r=await this.resolve(e,t),o=this.getModuleRecord(r,e);return o.evaluated?o.module:(o.evaluationPromise||(o.evaluationPromise=this.topLevelEvaluation(o)),o.evaluationPromise)}async resolve(e,t){const r=this.resolver.getBaseUrl();let o,i=e;const n=this.resolveHook;if(n){for(let e=0;e<n.length;e++){const t=(0,n[e])(i,{parentUrl:r});let s;if((t||null===t)&&(s=isResponseAPromise(t)?await t:t),null!==s){if("string"==typeof s){if(resolveIfNotPlainOrUrl(s,r))throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);i=s;continue}if(o=s&&s.url&&(resolveIfNotPlainOrUrl(s.url,r)||s.url),!o)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);break}}if(i!==e){if(!o&&this.namedDefineRegistry.has(i))return i;e=i}}if(!o){const t=resolveIfNotPlainOrUrl(e,r)||e;if(this.moduleRegistry.has(t))return t;const i=this.resolver.resolveLocal(t);if(i){if(this.namedDefineRegistry.has(t)&&this.namedDefineRegistry.get(t).defined){if(!this.moduleRegistry.get(i)||!this.aliases.has(t))return t}return i}if(this.namedDefineRegistry.has(t))return t;try{o=await this.resolver.resolve(t)}catch(e){}}if(!o||!isUrl(o)){if(this.namedDefineRegistry.has(e))return e;throw new LoaderError(UNRESOLVED,[e])}return t&&isUrl(o)&&(o+=`?importer=${encodeURIComponent(t)}`),o}has(e){return this.moduleRegistry.has(e)}define(e,t,r){const o=this.namedDefineRegistry.get(e);if(o&&o.defined)return void(this.lastDefine=o);const i={name:e,dependencies:t,exporter:r,defined:!0};o&&o.external&&o.external.resolveExternal(i),this.profiler.logOperationStart({id:MODULE_DEFINE,specifier:e}),this.namedDefineRegistry.set(e,i),this.lastDefine=i}registerExternalModules(e){const t=[];if(e.map((e=>{if(this.namedDefineRegistry.has(e))t.push(e);else{let t,r;const o=new Promise(((o,i)=>{t=o,r=setTimeout((()=>{i(new LoaderError(MODULE_LOAD_TIMEOUT,[e]))}),MODULE_LOAD_TIMEOUT_TIMER)})).finally((()=>{clearTimeout(r)})),i={name:e,defined:!1,external:{resolveExternal:t,moduleDefPromise:o}};this.namedDefineRegistry.set(e,i)}})),t.length)throw new LoaderError(MODULE_ALREADY_LOADED,[t.join(", ")])}getImportMetadataResolver(){return this.resolver}getExistingModuleRecord(e,t){const r=this.moduleRegistry.get(e);if(r)return this.storeModuleAlias(t,e),r;if(e!==t){const e=this.aliases.get(t);if(e){const t=this.moduleRegistry.get(e);if(t)return t}}return r}getModuleRecord(e,t){const r=this.getExistingModuleRecord(e,t);if(r)return r;const o=this.getModuleDef(e,t),i=o.then((e=>{const t=e.dependencies.map((e=>{if("exports"!==e)return invariant("require"!==e,NO_AMD_REQUIRE),this.getModuleDependencyRecord.call(this,e)})).filter((e=>void 0!==e));return Promise.all(t)})),n={id:e,module:Object.create(null),dependencyRecords:i,instantiation:o,evaluated:!1,evaluationPromise:null};return this.moduleRegistry.set(e,n),this.storeModuleAlias(t,e),n}storeModuleAlias(e,t){e!==t&&(this.aliases.has(e)||this.aliases.set(e,t))}async getModuleDependencyRecord(e){const t=await this.resolve(e);return this.getModuleRecord(t,e)}async topLevelEvaluation(e){return await this.instantiateAll(e,{}),this.evaluateModule(e,{})}async instantiateAll(e,t){if(!t[e.id]){t[e.id]=!0;const r=await e.dependencyRecords;if(r)for(let e=0;e<r.length;e++){const o=r[e];await this.instantiateAll(o,t)}}}async evaluateModule(e,t){const r=await e.dependencyRecords;r.length>0&&(t[e.id]=!0,await this.evaluateModuleDependencies(r,t));const{exporter:o,dependencies:i}=await e.instantiation,n={},s=await Promise.all(i.map((async e=>{if("exports"===e)return n;const t=await this.resolve(e),r=this.moduleRegistry.get(t);if(!r)throw new LoaderError(FAILED_DEP,[t]);const o=r.module;if(!r.evaluated)return this.getCircularDependencyWrapper(o);if(o)return o.__defaultInterop?o.default:o;throw new LoaderError(FAILED_DEP,[t])})));if(e.evaluated)return e.module;let a=o(...s);void 0!==a?(a={default:a},Object.defineProperty(a,"__defaultInterop",{value:!0})):this.isNamedExportDefaultOnly(n)&&Object.defineProperty(n,"__useDefault",{value:!0});const l=a||n;for(const t in l)Object.defineProperty(e.module,t,{enumerable:!0,set(e){l[t]=e},get:()=>l[t]});return l.__useDefault&&Object.defineProperty(e.module,"__useDefault",{value:!0}),l.__defaultInterop&&Object.defineProperty(e.module,"__defaultInterop",{value:!0}),l.__esModule&&Object.defineProperty(e.module,"__esModule",{value:!0}),e.evaluated=!0,Object.freeze(e.module),e.module}isNamedExportDefaultOnly(e){return void 0!==e&&2===Object.getOwnPropertyNames(e).length&&Object.prototype.hasOwnProperty.call(e,"default")&&Object.prototype.hasOwnProperty.call(e,"__esModule")}getCircularDependencyWrapper(e){const t=()=>e.__useDefault||e.__defaultInterop?e.default:e;return t.__circular__=!0,t}async evaluateModuleDependencies(e,t){for(let r=0;r<e.length;r++){const o=e[r];o.evaluated||t[o.id]||(t[o.id]=!0,await this.evaluateModule(o,t))}}async getModuleDef(e,t){this.lastDefine=void 0;const r=isUrl(e)?t!==e?t:void 0:e;let o=r&&this.namedDefineRegistry.get(r);if(o&&o.external)return o.external.moduleDefPromise;if(o&&o.defined)return o;const i=this.resolver.getBaseUrl(),n=r||t;return this.profiler.logOperationStart({id:MODULE_FETCH,specifier:n}),Promise.resolve().then((async()=>{const t=this.loadHook;if(t)for(let r=0;r<t.length;r++){const o=(0,t[r])(e,i),n=isResponseAPromise(o)?await evaluateLoadHook(e,o):o;if(void 0===n)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);if(n&&null!==n)return evaluateLoadHookResponse(n,e)}return!1})).then((t=>{if(!0!==t&&hasDocument)return loadModuleDef(e)})).then((()=>{if(o=r&&this.namedDefineRegistry.get(r),o||(o=this.lastDefine),!o)throw new LoaderError(FAIL_INSTANTIATE,[e]);return this.profiler.logOperationEnd({id:MODULE_FETCH,specifier:n}),o})).catch((e=>{throw this.profiler.logOperationStart({id:MODULE_ERROR,specifier:n}),e}))}addLoaderPlugin(e){if("object"!=typeof e)throw new LoaderError(INVALID_HOOK);const{loadModule:t,resolveModule:r,loadMapping:o}=e;r&&(this.resolveHook?this.resolveHook.push(r):this.resolveHook=[r]),t&&(this.loadHook?this.loadHook.push(t):this.loadHook=[t]),o&&this.resolver.addLoadMappingHook(o)}importMetadataInvalidationCallback({name:e,oldUrl:t,newUrl:r}){const o=this.handleStaleModuleHook;o&&evaluateHandleStaleModuleHooks(o,{name:e,oldUrl:t,newUrl:r})}registerHandleStaleModuleHook(e){this.handleStaleModuleHook?this.handleStaleModuleHook.push(e):this.handleStaleModuleHook=[e]}}class Loader{constructor(e){let t=e.baseUrl;const r=e.endpoints?e.endpoints.uris.mapping:void 0;let o=e.profiler;if(!r)throw new LoaderError(NO_MAPPING_URL);if(e.endpoints.uris.mapping=r.replace(/\/?$/,"/"),t&&(t=t.replace(/\/?$/,"/")),t||(t=getBaseUrl()),!t)throw new LoaderError(NO_BASE_URL);if(o||(o={logOperationStart:()=>{},logOperationEnd:()=>{}}),this.registry=new ModuleRegistry(Object.freeze({endpoints:e.endpoints,baseUrl:t,profiler:o})),e.appMetadata&&!e.appMetadata.appId){const t=e.appMetadata.bootstrapModule.match(/@lwr-bootstrap\/(.+)\/v\/.+/),r=t&&t[1];e.appMetadata.appId=r}this.services=Object.freeze({addLoaderPlugin:this.registry.addLoaderPlugin.bind(this.registry),handleStaleModule:this.registry.registerHandleStaleModuleHook.bind(this.registry),appMetadata:e.appMetadata})}define(e,t,r){invariant("string"==typeof e,MISSING_NAME);let o=r,i=t;"function"==typeof i&&(o=t,i=[]),invariant(Array.isArray(i),INVALID_DEPS),this.registry.define(e,i,o)}async load(e,t){return this.registry.load(e,t)}has(e){return this.registry.has(e)}async resolve(e,t){return this.registry.resolve(e,t)}async registerImportMappings(e,t){this.registry.getImportMetadataResolver().registerImportMappings(e,t)}registerExternalModules(e){this.registry.registerExternalModules(e)}}exports.Loader=Loader,Object.defineProperty(exports,"__esModule",{value:!0})}));
|
|
7
|
+
/* LWR Module Loader Shim v0.9.0 */
|
|
8
|
+
!function(){"use strict";var e;let t;function r(e){t=e}!function(e){e[e.Start=0]="Start",e[e.End=1]="End"}(e||(e={}));const o=globalThis.performance,i=void 0!==o&&"function"==typeof o.mark&&"function"==typeof o.clearMarks&&"function"==typeof o.measure&&"function"==typeof o.clearMeasures;function n({id:r,specifier:n}){t?t({id:r,phase:e.Start,specifier:n}):i&&o.mark(r+(n?`.${n}`:""))}function s({id:r,specifier:n}){if(t)t({id:r,phase:e.End,specifier:n});else if(i){const e=n?`.${n}`:"",t=r+e,i=`${r}.duration${e}`;o.measure(i,t),o.clearMarks(t),o.clearMeasures(i)}}function a(e,t,o,i){const{autoBoot:n,customInit:s}=e;if(function(e,t){if(!e&&!t)throw new Error("The customInit hook is required when autoBoot is false");if(e&&t)throw new Error("The customInit hook must not be defined when autoBoot is true")}(n,s),s){s({initializeApp:t,define:o,onBootstrapError:i,attachDispatcher:r},e)}}const l="function"==typeof setTimeout,d="undefined"!=typeof console;const c=globalThis;c.LWR.requiredModules=c.LWR.requiredModules||[],c.LWR.requiredModules.indexOf("lwr/loader/v/0_9_0")<0&&c.LWR.requiredModules.push("lwr/loader/v/0_9_0"),new class{constructor(e){this.defineCache={},this.orderedDefs=[],l&&(this.watchdogTimerId=this.startWatchdogTimer()),this.global=e,this.config=e.LWR,this.loaderSpecifier="lwr/loader/v/0_9_0",this.errorHandler=this.config.onError;const t=this.tempDefine.bind(this);e.LWR.define=t,this.bootReady=this.config.autoBoot;try{this.createProfilerModule(this.config),a(Object.freeze(this.config),this.postCustomInit.bind(this),t,(e=>{this.errorHandler=e}))}catch(e){this.enterErrorState(e)}}canInit(){const e=this.config.requiredModules.every((e=>this.orderedDefs.includes(e)));return this.bootReady&&e}tempDefine(...e){const t=e[0];this.defineCache[t]=e,this.orderedDefs.push(t),this.canInit()&&(l&&clearTimeout(this.watchdogTimerId),this.initApp())}postCustomInit(){this.bootReady=!0,this.canInit()&&this.initApp()}initApp(){try{const e={endpoints:this.config.endpoints,baseUrl:this.config.baseUrl,profiler:{logOperationStart:n,logOperationEnd:s},appMetadata:{appId:this.config.appId,bootstrapModule:this.config.bootstrapModule,rootComponent:this.config.rootComponent,rootComponents:this.config.rootComponents}},t=function(e,t,r,o){if(!t||"function"!=typeof t[2])throw new Error(`Expected loader with specifier "${e}" to be a module`);const i={};t[2].call(null,i);const{Loader:n}=i,s=new n(r);return o&&o.length&&s.registerExternalModules(o),s.define(e,["exports"],(e=>{Object.assign(e,{define:s.define.bind(s),load:s.load.bind(s),services:s.services})})),s}(this.loaderSpecifier,this.defineCache[this.loaderSpecifier],e,this.config.preloadModules);this.mountApp(t)}catch(e){this.enterErrorState(e)}}waitForDOMContentLoaded(){return void 0===typeof document||"interactive"===document.readyState||"complete"===document.readyState?Promise.resolve():new Promise((e=>{document.addEventListener("DOMContentLoaded",(()=>{e()}))}))}createProfilerModule(e){e.define("lwr/profiler/v/0_9_0",["exports"],(e=>{Object.assign(e,{logOperationStart:n,logOperationEnd:s})}))}mountApp(e){const{bootstrapModule:t,rootComponent:r,rootComponents:o,ssrProps:i,endpoints:n,imports:s,index:a}=this.config;this.global.LWR=Object.freeze({define:e.define.bind(e),rootComponent:r,rootComponents:o,ssrProps:i,endpoints:n,imports:s||{},index:a||{}}),this.orderedDefs.forEach((t=>{t!==this.loaderSpecifier&&e.define(...this.defineCache[t])}));const{disableInitDefer:l}=this.config;e.registerImportMappings({imports:s,index:a},[t,r]).then((()=>{if(!l)return this.waitForDOMContentLoaded()})).then((()=>e.load(t))).catch((e=>{this.enterErrorState(new Error(`Application ${r||t} could not be loaded: ${e}`))}))}enterErrorState(e){n({id:"lwr.bootstrap.error"}),this.errorHandler?this.errorHandler(e):d&&console.error(`An error occurred during LWR bootstrap. ${e.message}`,e.stack)}startWatchdogTimer(){return setTimeout((()=>{this.enterErrorState(new Error("Failed to load required modules - timed out"))}),3e5)}}(c)}(),LWR.define("lwr/loader/v/0_9_0",["exports"],(function(exports){"use strict";const templateRegex=/\{([0-9]+)\}/g;function templateString(e,t){return e.replace(templateRegex,((e,r)=>t[r]))}function generateErrorMessage(e,t){const r=Array.isArray(t)?templateString(e.message,t):e.message;return`LWR${e.code}: ${r}`}class LoaderError extends Error{constructor(e,t){super(),this.message=generateErrorMessage(e,t)}}function invariant(e,t){if(!e)throw new LoaderError(t)}const MISSING_NAME=Object.freeze({code:3e3,message:"A module name is required.",level:0}),FAIL_INSTANTIATE=Object.freeze({code:3004,message:"Failed to instantiate module: {0}",level:0}),NO_AMD_REQUIRE=Object.freeze({code:3005,message:"AMD require not supported.",level:0}),FAILED_DEP=Object.freeze({code:3006,level:0,message:"Failed to load dependency: {0}"}),INVALID_DEPS=Object.freeze({code:3007,message:"Unexpected value received for dependencies argument; expected an array.",level:0}),FAIL_LOAD=Object.freeze({code:3008,level:0,message:"Error loading {0}"}),UNRESOLVED=Object.freeze({code:3009,level:0,message:"Unable to resolve bare specifier: {0}"}),NO_BASE_URL=Object.freeze({code:3010,level:0,message:"baseUrl not set"});Object.freeze({code:3011,level:0,message:"Cannot set a loader service multiple times"});const INVALID_HOOK=Object.freeze({code:3012,level:0,message:"Invalid hook received"}),INVALID_LOADER_SERVICE_RESPONSE=Object.freeze({code:3013,level:0,message:"Invalid response received from hook"}),MODULE_LOAD_TIMEOUT=Object.freeze({code:3014,level:0,message:"Error loading {0} - timed out"}),HTTP_FAIL_LOAD=Object.freeze({code:3015,level:0,message:"Error loading {0}, status code {1}"}),STALE_HOOK_ERROR=Object.freeze({code:3016,level:0,message:"An error occurred handling module conflict"});Object.freeze({code:3017,level:0,message:"Marking module(s) as externally loaded, but they are already loaded:"});const FAIL_HOOK_LOAD=Object.freeze({code:3018,level:0,message:'Error loading "{0}" from hook'}),NO_MAPPING_URL=Object.freeze({code:3019,level:0,message:"Mapping endpoint not set"}),BAD_IMPORT_METADATA=Object.freeze({code:3020,level:0,message:"Invalid import metadata: {0} {1}"});Object.freeze({code:3011,level:0,message:"import map is not valid"});const hasDocument="undefined"!=typeof document,hasSetTimeout="function"==typeof setTimeout,hasConsole="undefined"!=typeof console;function getBaseUrl(){let e;if(hasDocument){const t=document.querySelector("base[href]");e=t&&t.href}if(!e&&"undefined"!=typeof location){e=location.href.split("#")[0].split("?")[0];const t=e.lastIndexOf("/");-1!==t&&(e=e.slice(0,t+1))}return e}function isUrl(e){return-1!==e.indexOf("://")}function resolveIfNotPlainOrUrl(e,t){if(-1!==e.indexOf("\\")&&(e=e.replace(/\\/g,"/")),"/"===e[0]&&"/"===e[1])return t.slice(0,t.indexOf(":")+1)+e;if("."===e[0]&&("/"===e[1]||"."===e[1]&&("/"===e[2]||2===e.length&&(e+="/"))||1===e.length&&(e+="/"))||"/"===e[0]){const r=t.slice(0,t.indexOf(":")+1);let o;if("/"===t[r.length+1]?"file:"!==r?(o=t.slice(r.length+2),o=o.slice(o.indexOf("/")+1)):o=t.slice(8):o=t.slice(r.length+("/"===t[r.length]?1:0)),"/"===e[0])return t.slice(0,t.length-o.length-1)+e;const i=o.slice(0,o.lastIndexOf("/")+1)+e,n=[];let s=-1;for(let e=0;e<i.length;e++)-1!==s?"/"===i[e]&&(n.push(i.slice(s,e+1)),s=-1):"."===i[e]?"."!==i[e+1]||"/"!==i[e+2]&&e+2!==i.length?"/"===i[e+1]||e+1===i.length?e+=1:s=e:(n.pop(),e+=2):s=e;return-1!==s&&n.push(i.slice(s)),t.slice(0,t.length-o.length)+n.join("")}}function resolveUrl(e,t){return resolveIfNotPlainOrUrl(e,t)||(isUrl(e)?e:resolveIfNotPlainOrUrl("./"+e,t))}function createScript(e){const t=document.createElement("script");return t.async=!0,t.crossOrigin="anonymous",t.src=e,t}let lastWindowError$1,lastWindowErrorUrl;function loadModuleDef(e){return new Promise((function(t,r){if(hasDocument){const o=createScript(e);o.addEventListener("error",(()=>{r(new LoaderError(FAIL_LOAD,[e]))})),o.addEventListener("load",(()=>{document.head.removeChild(o),lastWindowErrorUrl===e?r(lastWindowError$1):t()})),document.head.appendChild(o)}}))}hasDocument&&window.addEventListener("error",(e=>{lastWindowErrorUrl=e.filename,lastWindowError$1=e.error}));const LOADER_PREFIX="lwr.loader.",MODULE_DEFINE=`${LOADER_PREFIX}module.define`,MODULE_FETCH=`${LOADER_PREFIX}module.fetch`,MODULE_ERROR=`${LOADER_PREFIX}module.error`,MAPPINGS_FETCH=`${LOADER_PREFIX}mappings.fetch`,MAPPINGS_ERROR=`${LOADER_PREFIX}mappings.error`;class ImportMetadataResolver{constructor(e,t){this.importURICache=new Map,this.pendingURICache=new Map,this.loadMappingHooks=[],this.config=e,this.invalidationCallback=t}addLoadMappingHook(e){this.loadMappingHooks.push(e)}getMappingEndpoint(){return this.config.endpoints&&this.config.endpoints.uris?this.config.endpoints.uris.mapping:void 0}getModifiersAsUrlParams(){const e=this.config.endpoints?this.config.endpoints.modifiers:void 0;if(e){return`?${Object.keys(e).map((t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`)).join("&")}`}return""}buildMappingUrl(e){return`${this.getMappingEndpoint()}${encodeURIComponent(e)}${this.getModifiersAsUrlParams()}`}getBaseUrl(){return this.config.baseUrl}registerImportMappings(e,t){if(!t||0===t.length){const r=e?JSON.stringify(e):"undefined";throw new LoaderError(BAD_IMPORT_METADATA,[r,t?"[]":"undefined"])}if(!e)throw new LoaderError(BAD_IMPORT_METADATA,["undefined",JSON.stringify(t)]);if(!e.imports||0===Object.keys(e.imports).length)throw new LoaderError(BAD_IMPORT_METADATA,[JSON.stringify(e),JSON.stringify(t)]);const r=e.index||{};for(const[o,i]of Object.entries(e.imports))i.forEach((e=>{const i=r[e],n=this.importURICache.get(e);if(n){const t=i||o,r=n.identity||n.uri;r!==t&&this.invalidationCallback({name:e,oldUrl:r,newUrl:t})}else this.saveImportURIRecord(e,o,i,t.includes(e))}))}getURI(e){return this.importURICache.has(e)?resolveUrl(this.importURICache.get(e).uri,this.getBaseUrl()):void 0}resolveLocal(e){const t=this.getURI(e);return t||(isUrl(e)||e.startsWith("/")?e:void 0)}async resolve(e){let t=this.getURI(e);if(t)return t;if(isUrl(e)||e.startsWith("/"))return e;{const r=this.pendingURICache.get(e);if(r)return r;this.config.profiler.logOperationStart({id:MAPPINGS_FETCH,specifier:e});const o=(this.hasMappingHooks()?this.evaluateMappingHooks:this.fetchNewMappings).bind(this)(e).then((r=>{if(!r||!r.imports)throw new LoaderError(UNRESOLVED,[e]);if(this.registerImportMappings(r,[e]),t=this.getURI(e),!t)throw new LoaderError(UNRESOLVED,[e]);return this.config.profiler.logOperationEnd({id:MAPPINGS_FETCH,specifier:e}),t})).finally((()=>{this.pendingURICache.delete(e)}));return this.pendingURICache.set(e,o),o}}hasMappingHooks(){return this.loadMappingHooks.length>0}async evaluateMappingHooks(e){const t=this.loadMappingHooks;if(t.length){const r=Array.from(this.importURICache.keys());for(let o=0;o<t.length;o++){const i=t[o],n=await i(e,{knownModules:r});if(n||void 0===n)return n}}return this.fetchNewMappings(e)}async fetchNewMappings(e){if("function"!=typeof globalThis.fetch)throw new LoaderError(UNRESOLVED,[e]);const t=resolveUrl(this.buildMappingUrl(e),this.getBaseUrl());return globalThis.fetch(t).then((t=>{if(!t.ok)throw this.config.profiler.logOperationStart({id:MAPPINGS_ERROR,specifier:e}),new LoaderError(UNRESOLVED,[e]);return t.json().then((e=>e)).catch((t=>{throw new LoaderError(UNRESOLVED,[e])}))}))}saveImportURIRecord(e,t,r,o){r&&t!==r?this.importURICache.set(e,{uri:t,identity:r,isRoot:o}):this.importURICache.set(e,{uri:t,isRoot:o})}}function reportError(e){hasConsole&&console.error(e)}function evaluateHandleStaleModuleHooks(e,t){const{name:r,oldUrl:o,newUrl:i}=t;for(let t=0;t<e.length;t++){const n=e[t];try{if(null!==n({name:r,oldUrl:o,newUrl:i}))break}catch(e){reportError(new LoaderError(STALE_HOOK_ERROR))}}}const MODULE_LOAD_TIMEOUT_TIMER=3e5;let lastWindowError;function isCustomResponse(e){return Object.prototype.hasOwnProperty.call(e,"data")&&!Object.prototype.hasOwnProperty.call(e,"blob")}function isFetchResponse(e){return"function"==typeof e.blob}function isResponseAPromise(e){return!(!e||!e.then)}async function evaluateLoadHookResponse(response,id){return Promise.resolve().then((async()=>{if(!response.status)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);if(200!==response.status)throw new LoaderError(HTTP_FAIL_LOAD,[id,`${response.status}`]);const isResponse=isFetchResponse(response);let code;if(isCustomResponse(response))code=response.data;else{if(!isResponse)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);code=await response.text()}if(!code)throw new LoaderError(FAIL_LOAD,[id]);code=`${code}\n//# sourceURL=${id}`;try{eval(code)}catch(e){throw new LoaderError(FAIL_LOAD,[id])}if(lastWindowError)throw new LoaderError(FAIL_LOAD,[id]);return!0}))}async function evaluateLoadHook(e,t){return hasSetTimeout?new Promise(((r,o)=>{const i=setTimeout((()=>{o(new LoaderError(MODULE_LOAD_TIMEOUT,[e]))}),MODULE_LOAD_TIMEOUT_TIMER);t.then((e=>{r(e)})).catch((()=>{o(new LoaderError(FAIL_HOOK_LOAD,[e]))})).finally((()=>{clearTimeout(i)}))})):t}hasDocument&&globalThis.addEventListener("error",(e=>{lastWindowError=e.error}));class ModuleRegistry{constructor(e){this.namedDefineRegistry=new Map,this.moduleRegistry=new Map,this.aliases=new Map,this.profiler=e.profiler,this.resolver=new ImportMetadataResolver(e,this.importMetadataInvalidationCallback.bind(this))}async load(e,t){const r=await this.resolve(e,t),o=this.getModuleRecord(r,e);return o.evaluated?o.module:(o.evaluationPromise||(o.evaluationPromise=this.topLevelEvaluation(o)),o.evaluationPromise)}async resolve(e,t){const r=this.resolver.getBaseUrl();let o,i=e;const n=this.resolveHook;if(n){for(let e=0;e<n.length;e++){const t=(0,n[e])(i,{parentUrl:r});let s;if((t||null===t)&&(s=isResponseAPromise(t)?await t:t),null!==s){if("string"==typeof s){if(resolveIfNotPlainOrUrl(s,r))throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);i=s;continue}if(o=s&&s.url&&(resolveIfNotPlainOrUrl(s.url,r)||s.url),!o)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);break}}if(i!==e){if(!o&&this.namedDefineRegistry.has(i))return i;e=i}}if(!o){const t=resolveIfNotPlainOrUrl(e,r)||e;if(this.moduleRegistry.has(t))return t;const i=this.resolver.resolveLocal(t);if(i){if(this.namedDefineRegistry.has(t)&&this.namedDefineRegistry.get(t).defined){if(!this.moduleRegistry.get(i)||!this.aliases.has(t))return t}return i}if(this.namedDefineRegistry.has(t))return t;try{o=await this.resolver.resolve(t)}catch(e){}}if(!o||!isUrl(o)){if(this.namedDefineRegistry.has(e))return e;throw new LoaderError(UNRESOLVED,[e])}return t&&isUrl(o)&&(o+=`?importer=${encodeURIComponent(t)}`),o}has(e){return this.moduleRegistry.has(e)}define(e,t,r){const o=this.namedDefineRegistry.get(e);if(o&&o.defined)return void(this.lastDefine=o);const i={name:e,dependencies:t,exporter:r,defined:!0};o&&o.external&&o.external.resolveExternal(i),this.profiler.logOperationStart({id:MODULE_DEFINE,specifier:e}),this.namedDefineRegistry.set(e,i),this.lastDefine=i}registerExternalModules(e){e.map((e=>{if(!this.namedDefineRegistry.has(e)){let t,r;const o=new Promise(((o,i)=>{t=o,r=setTimeout((()=>{i(new LoaderError(MODULE_LOAD_TIMEOUT,[e]))}),MODULE_LOAD_TIMEOUT_TIMER)})).finally((()=>{clearTimeout(r)})),i={name:e,defined:!1,external:{resolveExternal:t,moduleDefPromise:o}};this.namedDefineRegistry.set(e,i)}}))}getImportMetadataResolver(){return this.resolver}getExistingModuleRecord(e,t){const r=this.moduleRegistry.get(e);if(r)return this.storeModuleAlias(t,e),r;if(e!==t){const e=this.aliases.get(t);if(e){const t=this.moduleRegistry.get(e);if(t)return t}}return r}getModuleRecord(e,t){const r=this.getExistingModuleRecord(e,t);if(r)return r;const o=this.getModuleDef(e,t),i=o.then((e=>{const t=e.dependencies.map((e=>{if("exports"!==e)return invariant("require"!==e,NO_AMD_REQUIRE),this.getModuleDependencyRecord.call(this,e)})).filter((e=>void 0!==e));return Promise.all(t)})),n={id:e,module:Object.create(null),dependencyRecords:i,instantiation:o,evaluated:!1,evaluationPromise:null};return this.moduleRegistry.set(e,n),this.storeModuleAlias(t,e),n}storeModuleAlias(e,t){e!==t&&(this.aliases.has(e)||this.aliases.set(e,t))}async getModuleDependencyRecord(e){const t=await this.resolve(e);return this.getModuleRecord(t,e)}async topLevelEvaluation(e){return await this.instantiateAll(e,{}),this.evaluateModule(e,{})}async instantiateAll(e,t){if(!t[e.id]){t[e.id]=!0;const r=await e.dependencyRecords;if(r)for(let e=0;e<r.length;e++){const o=r[e];await this.instantiateAll(o,t)}}}async evaluateModule(e,t){const r=await e.dependencyRecords;r.length>0&&(t[e.id]=!0,await this.evaluateModuleDependencies(r,t));const{exporter:o,dependencies:i}=await e.instantiation,n={},s=await Promise.all(i.map((async e=>{if("exports"===e)return n;const t=await this.resolve(e),r=this.moduleRegistry.get(t);if(!r)throw new LoaderError(FAILED_DEP,[t]);const o=r.module;if(!r.evaluated)return this.getCircularDependencyWrapper(o);if(o)return o.__defaultInterop?o.default:o;throw new LoaderError(FAILED_DEP,[t])})));if(e.evaluated)return e.module;let a=o(...s);void 0!==a?(a={default:a},Object.defineProperty(a,"__defaultInterop",{value:!0})):this.isNamedExportDefaultOnly(n)&&Object.defineProperty(n,"__useDefault",{value:!0});const l=a||n;for(const t in l)Object.defineProperty(e.module,t,{enumerable:!0,set(e){l[t]=e},get:()=>l[t]});return l.__useDefault&&Object.defineProperty(e.module,"__useDefault",{value:!0}),l.__defaultInterop&&Object.defineProperty(e.module,"__defaultInterop",{value:!0}),l.__esModule&&Object.defineProperty(e.module,"__esModule",{value:!0}),e.evaluated=!0,Object.freeze(e.module),e.module}isNamedExportDefaultOnly(e){return void 0!==e&&2===Object.getOwnPropertyNames(e).length&&Object.prototype.hasOwnProperty.call(e,"default")&&Object.prototype.hasOwnProperty.call(e,"__esModule")}getCircularDependencyWrapper(e){const t=()=>e.__useDefault||e.__defaultInterop?e.default:e;return t.__circular__=!0,t}async evaluateModuleDependencies(e,t){for(let r=0;r<e.length;r++){const o=e[r];o.evaluated||t[o.id]||(t[o.id]=!0,await this.evaluateModule(o,t))}}async getModuleDef(e,t){this.lastDefine=void 0;const r=isUrl(e)?t!==e?t:void 0:e;let o=r&&this.namedDefineRegistry.get(r);if(o&&o.external)return o.external.moduleDefPromise;if(o&&o.defined)return o;const i=this.resolver.getBaseUrl(),n=r||t;return this.profiler.logOperationStart({id:MODULE_FETCH,specifier:n}),Promise.resolve().then((async()=>{const t=this.loadHook;if(t)for(let r=0;r<t.length;r++){const o=(0,t[r])(e,i),n=isResponseAPromise(o)?await evaluateLoadHook(e,o):o;if(void 0===n)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);if(n&&null!==n)return evaluateLoadHookResponse(n,e)}return!1})).then((t=>{if(!0!==t&&hasDocument)return loadModuleDef(e)})).then((()=>{if(o=r&&this.namedDefineRegistry.get(r),o||(o=this.lastDefine),!o)throw new LoaderError(FAIL_INSTANTIATE,[e]);return this.profiler.logOperationEnd({id:MODULE_FETCH,specifier:n}),o})).catch((e=>{throw this.profiler.logOperationStart({id:MODULE_ERROR,specifier:n}),e}))}addLoaderPlugin(e){if("object"!=typeof e)throw new LoaderError(INVALID_HOOK);const{loadModule:t,resolveModule:r,loadMapping:o}=e;r&&(this.resolveHook?this.resolveHook.push(r):this.resolveHook=[r]),t&&(this.loadHook?this.loadHook.push(t):this.loadHook=[t]),o&&this.resolver.addLoadMappingHook(o)}importMetadataInvalidationCallback({name:e,oldUrl:t,newUrl:r}){const o=this.handleStaleModuleHook;o&&evaluateHandleStaleModuleHooks(o,{name:e,oldUrl:t,newUrl:r})}registerHandleStaleModuleHook(e){this.handleStaleModuleHook?this.handleStaleModuleHook.push(e):this.handleStaleModuleHook=[e]}}class Loader{constructor(e){let t=e.baseUrl;const r=e.endpoints?e.endpoints.uris.mapping:void 0;let o=e.profiler;if(!r)throw new LoaderError(NO_MAPPING_URL);if(e.endpoints.uris.mapping=r.replace(/\/?$/,"/"),t&&(t=t.replace(/\/?$/,"/")),t||(t=getBaseUrl()),!t)throw new LoaderError(NO_BASE_URL);if(o||(o={logOperationStart:()=>{},logOperationEnd:()=>{}}),this.registry=new ModuleRegistry(Object.freeze({endpoints:e.endpoints,baseUrl:t,profiler:o})),e.appMetadata&&!e.appMetadata.appId){const t=e.appMetadata.bootstrapModule.match(/@lwr-bootstrap\/(.+)\/v\/.+/),r=t&&t[1];e.appMetadata.appId=r}this.services=Object.freeze({addLoaderPlugin:this.registry.addLoaderPlugin.bind(this.registry),handleStaleModule:this.registry.registerHandleStaleModuleHook.bind(this.registry),appMetadata:e.appMetadata})}define(e,t,r){invariant("string"==typeof e,MISSING_NAME);let o=r,i=t;"function"==typeof i&&(o=t,i=[]),invariant(Array.isArray(i),INVALID_DEPS),this.registry.define(e,i,o)}async load(e,t){return this.registry.load(e,t)}has(e){return this.registry.has(e)}async resolve(e,t){return this.registry.resolve(e,t)}async registerImportMappings(e,t){this.registry.getImportMetadataResolver().registerImportMappings(e,t)}registerExternalModules(e){this.registry.registerExternalModules(e)}}exports.Loader=Loader,Object.defineProperty(exports,"__esModule",{value:!0})}));
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
6
6
|
*/
|
|
7
|
-
/* LWR Module Loader Shim v0.9.0
|
|
7
|
+
/* LWR Module Loader Shim v0.9.0 */
|
|
8
8
|
(function () {
|
|
9
9
|
'use strict';
|
|
10
10
|
|
|
@@ -13,23 +13,23 @@
|
|
|
13
13
|
const BOOTSTRAP_ERROR = `${BOOTSTRAP_PREFIX}error`;
|
|
14
14
|
|
|
15
15
|
var Phase;
|
|
16
|
-
|
|
17
16
|
(function (Phase) {
|
|
18
17
|
Phase[Phase["Start"] = 0] = "Start";
|
|
19
18
|
Phase[Phase["End"] = 1] = "End";
|
|
20
19
|
})(Phase || (Phase = {}));
|
|
21
|
-
|
|
22
20
|
// Attach a custom dispatcher
|
|
23
21
|
let customDispatcher;
|
|
24
22
|
function attachDispatcher(dispatcher) {
|
|
25
23
|
customDispatcher = dispatcher;
|
|
26
|
-
}
|
|
27
|
-
// e.g. JSDom (used in Jest) doesn't implement these
|
|
24
|
+
}
|
|
28
25
|
|
|
26
|
+
// Check if the Performance API is available
|
|
27
|
+
// e.g. JSDom (used in Jest) doesn't implement these
|
|
29
28
|
const perf = globalThis.performance;
|
|
30
|
-
const isPerfSupported = typeof perf !== 'undefined' && typeof perf.mark === 'function' && typeof perf.clearMarks === 'function' && typeof perf.measure === 'function' && typeof perf.clearMeasures === 'function';
|
|
31
|
-
// Fallback to the Performance API if there is no custom dispatcher
|
|
29
|
+
const isPerfSupported = typeof perf !== 'undefined' && typeof perf.mark === 'function' && typeof perf.clearMarks === 'function' && typeof perf.measure === 'function' && typeof perf.clearMeasures === 'function';
|
|
32
30
|
|
|
31
|
+
// For marking request metrics
|
|
32
|
+
// Fallback to the Performance API if there is no custom dispatcher
|
|
33
33
|
function logOperationStart({
|
|
34
34
|
id,
|
|
35
35
|
specifier
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
} else if (isPerfSupported) {
|
|
44
44
|
perf.mark(id + (specifier ? `.${specifier}` : ''));
|
|
45
45
|
}
|
|
46
|
-
}
|
|
47
|
-
// Fallback to the Performance API if there is no custom dispatcher
|
|
46
|
+
}
|
|
48
47
|
|
|
48
|
+
// For measuring duration metrics
|
|
49
|
+
// Fallback to the Performance API if there is no custom dispatcher
|
|
49
50
|
/* istanbul ignore next */
|
|
50
|
-
|
|
51
51
|
function logOperationEnd({
|
|
52
52
|
id,
|
|
53
53
|
specifier
|
|
@@ -62,9 +62,10 @@
|
|
|
62
62
|
const suffix = specifier ? `.${specifier}` : '';
|
|
63
63
|
const markName = id + suffix;
|
|
64
64
|
const measureName = `${id}.duration${suffix}`;
|
|
65
|
-
perf.measure(measureName, markName);
|
|
66
|
-
// Even if they get deleted, existing PerformanceObservers preserve copies of the entries
|
|
65
|
+
perf.measure(measureName, markName);
|
|
67
66
|
|
|
67
|
+
// Clear the created mark and measure to avoid filling the performance entry buffer
|
|
68
|
+
// Even if they get deleted, existing PerformanceObservers preserve copies of the entries
|
|
68
69
|
perf.clearMarks(markName);
|
|
69
70
|
perf.clearMeasures(measureName);
|
|
70
71
|
}
|
|
@@ -140,7 +141,7 @@
|
|
|
140
141
|
// Parse configuration
|
|
141
142
|
this.global = global;
|
|
142
143
|
this.config = global.LWR;
|
|
143
|
-
this.loaderSpecifier = 'lwr/loader/v/0_9_0
|
|
144
|
+
this.loaderSpecifier = 'lwr/loader/v/0_9_0';
|
|
144
145
|
// Set up error handler
|
|
145
146
|
this.errorHandler = this.config.onError;
|
|
146
147
|
// Set up the temporary LWR.define function and customInit hook
|
|
@@ -148,6 +149,7 @@
|
|
|
148
149
|
global.LWR.define = tempDefine;
|
|
149
150
|
this.bootReady = this.config.autoBoot;
|
|
150
151
|
try {
|
|
152
|
+
this.createProfilerModule(this.config);
|
|
151
153
|
customInit(Object.freeze(this.config), this.postCustomInit.bind(this), tempDefine, (e) => {
|
|
152
154
|
// customInit handlers can overwrite
|
|
153
155
|
// the error handler with onBootstrapError
|
|
@@ -203,7 +205,7 @@
|
|
|
203
205
|
endpoints: this.config.endpoints,
|
|
204
206
|
baseUrl: this.config.baseUrl,
|
|
205
207
|
profiler: { logOperationStart, logOperationEnd },
|
|
206
|
-
// TODO: can be removed following https://github.com/salesforce/lwr/issues/1087
|
|
208
|
+
// TODO: can be removed following https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
207
209
|
appMetadata: {
|
|
208
210
|
appId: this.config.appId,
|
|
209
211
|
bootstrapModule: this.config.bootstrapModule,
|
|
@@ -212,7 +214,6 @@
|
|
|
212
214
|
},
|
|
213
215
|
};
|
|
214
216
|
const loader = createLoader(this.loaderSpecifier, this.defineCache[this.loaderSpecifier], loaderConfig, this.config.preloadModules);
|
|
215
|
-
this.createProfilerModule(loader);
|
|
216
217
|
this.mountApp(loader);
|
|
217
218
|
}
|
|
218
219
|
catch (e) {
|
|
@@ -238,11 +239,11 @@
|
|
|
238
239
|
}
|
|
239
240
|
// Create a module out of the profiler
|
|
240
241
|
// Note: The profiler is also available as a module through lwc module resolution (see package.json)
|
|
241
|
-
createProfilerModule(
|
|
242
|
+
createProfilerModule(globalLWR) {
|
|
242
243
|
const exporter = (exports) => {
|
|
243
244
|
Object.assign(exports, { logOperationStart, logOperationEnd });
|
|
244
245
|
};
|
|
245
|
-
|
|
246
|
+
globalLWR.define('lwr/profiler/v/0_9_0', ['exports'], exporter);
|
|
246
247
|
}
|
|
247
248
|
// Set up the application globals, import map, root custom element...
|
|
248
249
|
mountApp(loader) {
|
|
@@ -275,7 +276,7 @@
|
|
|
275
276
|
})
|
|
276
277
|
.then(() => loader.load(bootstrapModule))
|
|
277
278
|
.catch((reason) => {
|
|
278
|
-
this.enterErrorState(new Error(`Application ${rootComponent} could not be loaded: ${reason}`));
|
|
279
|
+
this.enterErrorState(new Error(`Application ${rootComponent || bootstrapModule} could not be loaded: ${reason}`));
|
|
279
280
|
});
|
|
280
281
|
}
|
|
281
282
|
// Trigger bootstrap error state, and call error handler if registered
|
|
@@ -303,8 +304,8 @@
|
|
|
303
304
|
// The loader module is ALWAYS required
|
|
304
305
|
const GLOBAL = globalThis;
|
|
305
306
|
GLOBAL.LWR.requiredModules = GLOBAL.LWR.requiredModules || [];
|
|
306
|
-
if (GLOBAL.LWR.requiredModules.indexOf('lwr/loader/v/0_9_0
|
|
307
|
-
GLOBAL.LWR.requiredModules.push('lwr/loader/v/0_9_0
|
|
307
|
+
if (GLOBAL.LWR.requiredModules.indexOf('lwr/loader/v/0_9_0') < 0) {
|
|
308
|
+
GLOBAL.LWR.requiredModules.push('lwr/loader/v/0_9_0');
|
|
308
309
|
}
|
|
309
310
|
new LoaderShim(GLOBAL);
|
|
310
311
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
class i{constructor(i){var t,
|
|
1
|
+
class i{constructor(i){var t,o;this.importURICache=new Map,this.modifiers="",this.normalizeMetadata(i),this.mappingEndpoint=(null==i?void 0:i.importMappings)||null===(t=null==i?void 0:i.endpoints)||void 0===t?void 0:t.uris.mapping,(null===(o=null==i?void 0:i.endpoints)||void 0===o?void 0:o.modifiers)&&(this.modifiers=Object.entries(i.endpoints.modifiers).reduce(((i,[t,o])=>i+`${t}=${o}&`),"?"))}normalizeMetadata(i){if(i&&i.imports)for(const[t,o]of Object.entries(i.imports))if(t&&o){(Array.isArray(o)?o:[]).forEach((i=>{this.importURICache.set(i,t)}))}}async fetchMappings(i){const t=`${this.mappingEndpoint}${encodeURIComponent(i)}${this.modifiers}`,o=await globalThis.fetch(t);if(o.ok){const i=await o.json();this.normalizeMetadata(i)}}async resolve(i){let t=this.importURICache.get(i);return!t&&this.mappingEndpoint&&(await this.fetchMappings(i),t=this.importURICache.get(i)),t}}class t{constructor(i){this.importURICache=i&&i.imports?i:{imports:{}}}legacyResolve(i){return this.importURICache.imports[i]}}let o,e,n;function r(r){o=r;const{imports:s,index:a,importMappings:p,endpoints:c}=r;e=new i({imports:s,index:a,endpoints:c,importMappings:p}),n=new t(p)}async function s(i,t){const r=await async function(i,t){var r;if(i.includes("://")||i.startsWith("/"))return i;if(!e||!n)throw new Error("The ESM Loader was not initialized");if(e){const t=await e.resolve(i);if(t)return t}if(n){const t=n.legacyResolve(i);if(t)return t}const{endpoints:s}=o;if(!(null===(r=null==s?void 0:s.uris)||void 0===r?void 0:r.module))throw new Error(`Unable to resolve the URL for "${i}"`);let a=s.uris.module+encodeURIComponent(i);t&&(a+=`?importer=${encodeURIComponent(t)}`);s.modifiers&&(a+=Object.entries(s.modifiers).reduce(((i,[t,o])=>i+`${t}=${o}&`),t?"&":"?"));return a}(i,t);return import(r)}export{r as init,s as load};
|
package/build/cjs/index.cjs
CHANGED
|
@@ -58,7 +58,7 @@ var AmdLoaderShimService = class {
|
|
|
58
58
|
specifier,
|
|
59
59
|
type: "application/javascript",
|
|
60
60
|
inline: specifier === this.errorShimName ? true : false,
|
|
61
|
-
stream: import_fs.default.createReadStream(absFilepath),
|
|
61
|
+
stream: () => import_fs.default.createReadStream(absFilepath),
|
|
62
62
|
src: this.context.resourceRegistry.resolveResourceUri({specifier, version}, environment)
|
|
63
63
|
};
|
|
64
64
|
} else {
|
|
@@ -43,30 +43,34 @@ async function load(specifier, importer) {
|
|
|
43
43
|
return Promise.resolve().then(() => __toModule(require(uri)));
|
|
44
44
|
}
|
|
45
45
|
async function resolveUrl(specifier, importer) {
|
|
46
|
-
|
|
46
|
+
if (specifier.includes("://") || specifier.startsWith("/")) {
|
|
47
|
+
return specifier;
|
|
48
|
+
}
|
|
47
49
|
if (!resolver || !resolverLegacy) {
|
|
48
50
|
throw new Error("The ESM Loader was not initialized");
|
|
49
51
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (uri) {
|
|
56
|
-
return uri;
|
|
52
|
+
if (resolver) {
|
|
53
|
+
const uri2 = await resolver.resolve(specifier);
|
|
54
|
+
if (uri2) {
|
|
55
|
+
return uri2;
|
|
56
|
+
}
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
uri = endpoints.uris.module + encodeURIComponent(specifier);
|
|
63
|
-
if (importer) {
|
|
64
|
-
uri += `?importer=${encodeURIComponent(importer)}`;
|
|
65
|
-
}
|
|
66
|
-
if (endpoints.modifiers) {
|
|
67
|
-
uri += Object.entries(endpoints.modifiers).reduce((q, [k, v]) => q += `${k}=${v}&`, importer ? "&" : "?");
|
|
68
|
-
}
|
|
58
|
+
if (resolverLegacy) {
|
|
59
|
+
const uri2 = resolverLegacy.legacyResolve(specifier);
|
|
60
|
+
if (uri2) {
|
|
61
|
+
return uri2;
|
|
69
62
|
}
|
|
70
63
|
}
|
|
64
|
+
const {endpoints} = esmLoaderConfig;
|
|
65
|
+
if (!endpoints?.uris?.module) {
|
|
66
|
+
throw new Error(`Unable to resolve the URL for "${specifier}"`);
|
|
67
|
+
}
|
|
68
|
+
let uri = endpoints.uris.module + encodeURIComponent(specifier);
|
|
69
|
+
if (importer) {
|
|
70
|
+
uri += `?importer=${encodeURIComponent(importer)}`;
|
|
71
|
+
}
|
|
72
|
+
if (endpoints.modifiers) {
|
|
73
|
+
uri += Object.entries(endpoints.modifiers).reduce((q, [k, v]) => q += `${k}=${v}&`, importer ? "&" : "?");
|
|
74
|
+
}
|
|
71
75
|
return uri;
|
|
72
76
|
}
|
|
@@ -135,7 +135,7 @@ var STALE_HOOK_ERROR = Object.freeze({
|
|
|
135
135
|
var MODULE_ALREADY_LOADED = Object.freeze({
|
|
136
136
|
code: 3017,
|
|
137
137
|
level: 0,
|
|
138
|
-
message: "Marking module(s) as externally loaded, but they are already loaded:
|
|
138
|
+
message: "Marking module(s) as externally loaded, but they are already loaded:"
|
|
139
139
|
});
|
|
140
140
|
var FAIL_HOOK_LOAD = Object.freeze({
|
|
141
141
|
code: 3018,
|
|
@@ -151,11 +151,8 @@ var ModuleRegistry = class {
|
|
|
151
151
|
this.lastDefine = moduleDef;
|
|
152
152
|
}
|
|
153
153
|
registerExternalModules(modules) {
|
|
154
|
-
const alreadyRegistered = [];
|
|
155
154
|
modules.map((id) => {
|
|
156
|
-
if (this.namedDefineRegistry.has(id)) {
|
|
157
|
-
alreadyRegistered.push(id);
|
|
158
|
-
} else {
|
|
155
|
+
if (!this.namedDefineRegistry.has(id)) {
|
|
159
156
|
let resolveExternal;
|
|
160
157
|
let timer;
|
|
161
158
|
const moduleDefPromise = new Promise((resolve, reject) => {
|
|
@@ -175,11 +172,10 @@ var ModuleRegistry = class {
|
|
|
175
172
|
}
|
|
176
173
|
};
|
|
177
174
|
this.namedDefineRegistry.set(id, moduleDef);
|
|
175
|
+
} else if (process.env.NODE_ENV !== "production" && import_dom.hasConsole) {
|
|
176
|
+
console.warn(import_messages.MODULE_ALREADY_LOADED.message, id);
|
|
178
177
|
}
|
|
179
178
|
});
|
|
180
|
-
if (alreadyRegistered.length) {
|
|
181
|
-
throw new import_messages.LoaderError(import_messages.MODULE_ALREADY_LOADED, [alreadyRegistered.join(", ")]);
|
|
182
|
-
}
|
|
183
179
|
}
|
|
184
180
|
getImportMetadataResolver() {
|
|
185
181
|
return this.resolver;
|
|
@@ -150,11 +150,8 @@ var ModuleRegistry = class {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
registerExternalModules(modules) {
|
|
153
|
-
const alreadyRegistered = [];
|
|
154
153
|
modules.map((id) => {
|
|
155
|
-
if (this.namedDefineRegistry.has(id)) {
|
|
156
|
-
alreadyRegistered.push(id);
|
|
157
|
-
} else {
|
|
154
|
+
if (!this.namedDefineRegistry.has(id)) {
|
|
158
155
|
let resolveExternal;
|
|
159
156
|
let timer;
|
|
160
157
|
const moduleDefPromise = new Promise((resolve, reject) => {
|
|
@@ -174,11 +171,10 @@ var ModuleRegistry = class {
|
|
|
174
171
|
}
|
|
175
172
|
};
|
|
176
173
|
this.namedDefineRegistry.set(id, moduleDef);
|
|
174
|
+
} else if (process.env.NODE_ENV !== "production" && import_dom.hasConsole) {
|
|
175
|
+
console.warn(import_messages.MODULE_ALREADY_LOADED.message, id);
|
|
177
176
|
}
|
|
178
177
|
});
|
|
179
|
-
if (alreadyRegistered.length) {
|
|
180
|
-
throw new import_messages.LoaderError(import_messages.MODULE_ALREADY_LOADED, [alreadyRegistered.join(", ")]);
|
|
181
|
-
}
|
|
182
178
|
}
|
|
183
179
|
checkModuleSignature(name, signature) {
|
|
184
180
|
const moduleDef = this.namedDefineRegistry.get(name);
|
package/build/index.js
CHANGED
|
@@ -32,7 +32,7 @@ export default class AmdLoaderShimService {
|
|
|
32
32
|
specifier,
|
|
33
33
|
type: 'application/javascript',
|
|
34
34
|
inline: specifier === this.errorShimName ? true : false,
|
|
35
|
-
stream: fs.createReadStream(absFilepath),
|
|
35
|
+
stream: () => fs.createReadStream(absFilepath),
|
|
36
36
|
src: this.context.resourceRegistry.resolveResourceUri({ specifier, version }, environment),
|
|
37
37
|
};
|
|
38
38
|
}
|