@lwrjs/loader 0.9.0-alpha.2 → 0.9.0-alpha.20
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/build/assets/prod/lwr-error-shim.js +1 -1
- package/build/assets/prod/lwr-loader-shim-legacy.bundle.js +23 -21
- package/build/assets/prod/lwr-loader-shim-legacy.bundle.min.js +2 -2
- package/build/assets/prod/lwr-loader-shim-legacy.js +18 -17
- package/build/assets/prod/lwr-loader-shim.bundle.js +23 -20
- package/build/assets/prod/lwr-loader-shim.bundle.min.js +2 -2
- package/build/assets/prod/lwr-loader-shim.js +18 -17
- 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/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 +5 -3
- package/build/modules/lwr/loaderLegacy/__tests__/utils/amd.js +4 -5
- package/build/modules/lwr/loaderLegacy/loaderLegacy.js +5 -4
- package/package.json +9 -8
|
@@ -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 Error Shim v0.9.0-alpha.
|
|
7
|
+
/* LWR Error Shim v0.9.0-alpha.20 */
|
|
8
8
|
!function(){"use strict";if(!(globalThis.LWR&&globalThis.LWR.define)){const o=new Error("The LWR application failed to bootstrap");if(!globalThis.LWR||!globalThis.LWR.onError)throw o;globalThis.LWR.onError(o)}}();
|
|
@@ -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 Legacy Module Loader Shim v0.9.0-alpha.
|
|
7
|
+
/* LWR Legacy Module Loader Shim v0.9.0-alpha.20 */
|
|
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
|
}
|
|
@@ -142,7 +143,7 @@
|
|
|
142
143
|
// Parse configuration
|
|
143
144
|
this.global = global;
|
|
144
145
|
this.config = global.LWR;
|
|
145
|
-
this.loaderModule = 'lwr/loaderLegacy/v/0_9_0-
|
|
146
|
+
this.loaderModule = 'lwr/loaderLegacy/v/0_9_0-alpha_20';
|
|
146
147
|
// Set up error handler
|
|
147
148
|
this.errorHandler = this.config.onError;
|
|
148
149
|
// Set up the temporary LWR.define function and customInit hook
|
|
@@ -204,7 +205,7 @@
|
|
|
204
205
|
const loaderConfig = {
|
|
205
206
|
baseUrl: this.config.baseUrl,
|
|
206
207
|
profiler: { logOperationStart, logOperationEnd },
|
|
207
|
-
// 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
|
|
208
209
|
appMetadata: {
|
|
209
210
|
appId: this.config.appId,
|
|
210
211
|
bootstrapModule: this.config.bootstrapModule,
|
|
@@ -243,7 +244,7 @@
|
|
|
243
244
|
const exporter = (exports) => {
|
|
244
245
|
Object.assign(exports, { logOperationStart, logOperationEnd });
|
|
245
246
|
};
|
|
246
|
-
loader.define('lwr/profiler/v/0_9_0-
|
|
247
|
+
loader.define('lwr/profiler/v/0_9_0-alpha_20', ['exports'], exporter, {});
|
|
247
248
|
}
|
|
248
249
|
// Set up the application globals, import map, root custom element...
|
|
249
250
|
mountApp(loader) {
|
|
@@ -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/loaderLegacy/v/0_9_0-
|
|
307
|
-
GLOBAL.LWR.requiredModules.push('lwr/loaderLegacy/v/0_9_0-
|
|
307
|
+
if (GLOBAL.LWR.requiredModules.indexOf('lwr/loaderLegacy/v/0_9_0-alpha_20') < 0) {
|
|
308
|
+
GLOBAL.LWR.requiredModules.push('lwr/loaderLegacy/v/0_9_0-alpha_20');
|
|
308
309
|
}
|
|
309
310
|
new LoaderShim(GLOBAL);
|
|
310
311
|
|
|
311
312
|
}());
|
|
312
313
|
|
|
313
|
-
LWR.define('lwr/loaderLegacy/v/0_9_0-
|
|
314
|
+
LWR.define('lwr/loaderLegacy/v/0_9_0-alpha_20', ['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
|
|
@@ -709,6 +710,7 @@ LWR.define('lwr/loaderLegacy/v/0_9_0-alpha_2', ['exports'], function (exports) {
|
|
|
709
710
|
|
|
710
711
|
// Bootstrap / shim
|
|
711
712
|
|
|
713
|
+
// Loader: modules
|
|
712
714
|
const LOADER_PREFIX = 'lwr.loader.';
|
|
713
715
|
const MODULE_DEFINE = `${LOADER_PREFIX}module.define`;
|
|
714
716
|
const MODULE_FETCH = `${LOADER_PREFIX}module.fetch`;
|
|
@@ -1062,7 +1064,7 @@ LWR.define('lwr/loaderLegacy/v/0_9_0-alpha_2', ['exports'], function (exports) {
|
|
|
1062
1064
|
moduleDefault = { default: moduleDefault };
|
|
1063
1065
|
// __defaultInterop is ONLY used to support backwards compatibility
|
|
1064
1066
|
// of importing default exports the "wrong" way (when not using named exports).
|
|
1065
|
-
// See https://github.com/salesforce/lwr/pull/816
|
|
1067
|
+
// See https://github.com/salesforce-experience-platform-emu/lwr/pull/816
|
|
1066
1068
|
Object.defineProperty(moduleDefault, '__defaultInterop', { value: true });
|
|
1067
1069
|
}
|
|
1068
1070
|
// if no return value, then we are using the exports object
|
|
@@ -1274,7 +1276,7 @@ LWR.define('lwr/loaderLegacy/v/0_9_0-alpha_2', ['exports'], function (exports) {
|
|
|
1274
1276
|
// When a specifier's URI cannot be resolved via the imports, fallback to "default".
|
|
1275
1277
|
// -> https://rfcs.lwc.dev/rfcs/lwr/0000-import-metadata#json-schema
|
|
1276
1278
|
// However, if `id` is already a fully resolved url,
|
|
1277
|
-
// we cannot prepend the defaultUri -> https://github.com/salesforce/lwr/issues/378.
|
|
1279
|
+
// we cannot prepend the defaultUri -> https://github.com/salesforce-experience-platform-emu/lwr/issues/378.
|
|
1278
1280
|
// In this case we do not apply any package mappings and allow the caller (resolveImportMapEntry) to handle it.
|
|
1279
1281
|
if (!isUrl(id)) {
|
|
1280
1282
|
return defaultUri + encodeURIComponent(id);
|
|
@@ -1441,7 +1443,7 @@ LWR.define('lwr/loaderLegacy/v/0_9_0-alpha_2', ['exports'], function (exports) {
|
|
|
1441
1443
|
};
|
|
1442
1444
|
}
|
|
1443
1445
|
this.registry = new ModuleRegistry({ baseUrl, profiler });
|
|
1444
|
-
// TODO: https://github.com/salesforce/lwr/issues/1087
|
|
1446
|
+
// TODO: https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
1445
1447
|
this.services = Object.freeze({
|
|
1446
1448
|
addLoaderPlugin: this.registry.addLoaderPlugin.bind(this.registry),
|
|
1447
1449
|
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 Legacy Module Loader Shim v0.9.0-alpha.
|
|
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,s=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}):s&&o.mark(r+(n?`.${n}`:""))}function i({id:r,specifier:n}){if(t)t({id:r,phase:e.End,specifier:n});else if(s){const e=n?`.${n}`:"",t=r+e,s=`${r}.duration${e}`;o.measure(s,t),o.clearMarks(t),o.clearMeasures(s)}}function a(e,t,o,s){const{autoBoot:n,customInit:i}=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,i),i){i({initializeApp:t,define:o,onBootstrapError:s,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/loaderLegacy/v/0_9_0-alpha_2")<0&&c.LWR.requiredModules.push("lwr/loaderLegacy/v/0_9_0-alpha_2"),new class{constructor(e){this.defineCache={},this.orderedDefs=[],l&&(this.watchdogTimerId=this.startWatchdogTimer()),this.global=e,this.config=e.LWR,this.loaderModule="lwr/loaderLegacy/v/0_9_0-alpha_2",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={baseUrl:this.config.baseUrl,profiler:{logOperationStart:n,logOperationEnd:i},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 s={};t[2].call(null,s);const{Loader:n}=s,i=new n(r);return o&&o.length&&i.registerExternalModules(o),i.define(e,["exports"],(e=>{Object.assign(e,{define:i.define.bind(i),load:i.load.bind(i),services:i.services})}),t[3]),i}(this.loaderModule,this.defineCache[this.loaderModule],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_2",["exports"],(e=>{Object.assign(e,{logOperationStart:n,logOperationEnd:i})}),{})}mountApp(e){const{bootstrapModule:t,rootComponent:r,importMappings:o,rootComponents:s,ssrProps:n,endpoints:i}=this.config;this.global.LWR=Object.freeze({define:e.define.bind(e),rootComponent:r,rootComponents:s,ssrProps:n,importMappings:o,endpoints:i}),this.orderedDefs.forEach((t=>{t!==this.loaderModule&&e.define(...this.defineCache[t])}));const{disableInitDefer:a}=this.config;e.registerImportMappings(o).then((()=>{if(!a)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/loaderLegacy/v/0_9_0-alpha_2",["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'}),BAD_IMPORT_MAP=Object.freeze({code:3011,level:0,message:"import map is not valid"}),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 s=o.slice(0,o.lastIndexOf("/")+1)+e,n=[];let i=-1;for(let e=0;e<s.length;e++)-1!==i?"/"===s[e]&&(n.push(s.slice(i,e+1)),i=-1):"."===s[e]?"."!==s[e+1]||"/"!==s[e+2]&&e+2!==s.length?"/"===s[e+1]||e+1===s.length?e+=1:i=e:(n.pop(),e+=2):i=e;return-1!==i&&n.push(s.slice(i)),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 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 s=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(s)}))})):t}function reportError(e){hasConsole&&console.error(e)}function evaluateHandleStaleModuleHooks(e,t){const{name:r,oldHash:o,newHash:s}=t;for(let t=0;t<e.length;t++){const n=e[t];try{if(null!==n({name:r,oldHash:o,newHash:s}))break}catch(e){reportError(new LoaderError(STALE_HOOK_ERROR))}}}hasDocument&&globalThis.addEventListener("error",(e=>{lastWindowError=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`;class ModuleRegistry{constructor(e){this.namedDefineRegistry=new Map,this.moduleRegistry=new Map,this.aliases=new Map,this.baseUrl=e.baseUrl||"",this.profiler=e.profiler}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.baseUrl;let o,s=e;const n=this.resolveHook;if(n){for(let e=0;e<n.length;e++){const t=(0,n[e])(s,{parentUrl:r});let i;if((t||null===t)&&(i=isResponseAPromise(t)?await t:t),null!==i){if("string"==typeof i){if(resolveIfNotPlainOrUrl(i,r))throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);s=i;continue}if(o=i&&i.url&&(resolveIfNotPlainOrUrl(i.url,r)||i.url),!o)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);break}}if(s!==e){if(!o&&this.namedDefineRegistry.has(s))return s;e=s}}if(!o){const t=resolveIfNotPlainOrUrl(e,r)||e;if(this.moduleRegistry.has(t))return t;if(this.resolver){if(o=this.resolver.resolve(t,r),this.namedDefineRegistry.has(t)&&this.namedDefineRegistry.get(t).defined){if(!this.moduleRegistry.get(o)||!this.aliases.has(t))return t}}else o=t}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,o){const s=this.namedDefineRegistry.get(e);if(s&&s.defined)return void(this.lastDefine=s);const n={name:e,dependencies:t,exporter:r,signatures:o,defined:!0};s&&s.external&&s.external.resolveExternal(n),this.profiler.logOperationStart({id:MODULE_DEFINE,specifier:e}),this.namedDefineRegistry.set(e,n),this.lastDefine=n,o.hashes&&Object.entries(o.hashes).forEach((([e,t])=>{this.checkModuleSignature(e,t)}))}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,s)=>{t=o,r=setTimeout((()=>{s(new LoaderError(MODULE_LOAD_TIMEOUT,[e]))}),MODULE_LOAD_TIMEOUT_TIMER)})).finally((()=>{clearTimeout(r)})),s={name:e,defined:!1,external:{resolveExternal:t,moduleDefPromise:o}};this.namedDefineRegistry.set(e,s)}})),t.length)throw new LoaderError(MODULE_ALREADY_LOADED,[t.join(", ")])}checkModuleSignature(e,t){const r=this.namedDefineRegistry.get(e);if(!r){const r={name:e,signatures:{ownHash:t},defined:!1};return void this.namedDefineRegistry.set(e,r)}const o=r.signatures?r.signatures.ownHash:void 0;if(o&&t!==o){const r=this.handleStaleModuleHook;r&&evaluateHandleStaleModuleHooks(r,{name:e,oldHash:o,newHash:t})}}setImportResolver(e){this.resolver=e}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),s=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:s,instantiation:o,evaluated:!1,evaluationPromise:null};return this.moduleRegistry.set(e,n),this.storeModuleAlias(t,e),n}storeModuleAlias(e,t){if(e!==t)if(this.aliases.has(e)){if(hasConsole){const r=this.aliases.get(e);r!==t&&console.warn(`Alias update attempt: ${e}=>${r}, ${t}`)}}else 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:s}=await e.instantiation,n={},i=await Promise.all(s.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(...i);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 s=this.baseUrl,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,s),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}=e;r&&(this.resolveHook?this.resolveHook.push(r):this.resolveHook=[r]),t&&(this.loadHook?this.loadHook.push(t):this.loadHook=[t])}registerHandleStaleModuleHook(e){this.handleStaleModuleHook?this.handleStaleModuleHook.push(e):this.handleStaleModuleHook=[e]}}function getMatch(e,t){if(t[e])return e;let r=e.length;do{const o=e.slice(0,r+1);if(o in t)return o}while(-1!==(r=e.lastIndexOf("/",r-1)))}function targetWarning(e,t,r){hasConsole&&console.warn("Package target "+r+", resolving target '"+t+"' for "+e)}function applyPackages(e,t,r){const o=getMatch(e,t);if(o){const r=t[o];if(null===r)return;if(!(e.length>o.length&&"/"!==r[r.length-1])){return e.length>o.length&&"/"===r[r.length-1]&&r.lastIndexOf(o)===r.length-o.length?r.substring(0,r.lastIndexOf(o))+encodeURIComponent(e):r+e.slice(o.length)}targetWarning(o,r,"should have a trailing '/'")}else if(r&&!isUrl(e))return r+encodeURIComponent(e)}function resolveImportMapEntry(e,t,r){e.scopes||(e.scopes={}),e.imports||(e.imports={});const o=e.scopes;let s=r&&getMatch(r,o);for(;s;){const e=applyPackages(t,o[s]);if(e)return e;s=getMatch(s.slice(0,s.lastIndexOf("/")),o)}return applyPackages(t,e.imports,e.default)||isUrl(t)&&t||void 0}function resolveAndComposePackages(e,t,r,o,s){for(const n in e){const i=resolveIfNotPlainOrUrl(n,r)||n,a=e[n];if("string"!=typeof a)continue;const l=resolveImportMapEntry(o,resolveIfNotPlainOrUrl(a,r)||a,s);l?t[i]=l:targetWarning(n,a,"bare specifier did not resolve")}}function resolveAndComposeImportMap(e,t,r={imports:{},scopes:{}}){const o={imports:Object.assign({},r.imports),scopes:Object.assign({},r.scopes),default:e.default};if(e.imports&&resolveAndComposePackages(e.imports,o.imports,t,r),e.scopes)for(const s in e.scopes){const n=resolveUrl(s,t);resolveAndComposePackages(e.scopes[s],o.scopes[n]||(o.scopes[n]={}),t,r,n)}return e.default&&(o.default=resolveIfNotPlainOrUrl(e.default,t)),o}class ImportMapResolver{constructor(e){this.importMap=e}resolve(e,t){return resolveImportMapEntry(this.importMap,e,t)}}const IMPORTMAP_SCRIPT_TYPE="lwr-importmap";function iterateDocumentImportMaps(e,t){const r=document.querySelectorAll(`script[type="${IMPORTMAP_SCRIPT_TYPE}"]`+t),o=Array.from(r).filter((e=>!e.src||(hasConsole&&console.warn("LWR does not support import maps from script src"),!1)));Array.prototype.forEach.call(o,e)}async function getImportMapFromScript(e){return Promise.resolve(e.innerHTML)}async function evaluateImportMaps(e){let t={imports:{},scopes:{}},r=Promise.resolve(t);if(hasDocument){if(e||(e=getBaseUrl()),!e)throw new LoaderError(NO_BASE_URL);iterateDocumentImportMaps((o=>{r=r.then((()=>getImportMapFromScript(o))).then((e=>{try{return JSON.parse(e)}catch(e){throw new LoaderError(BAD_IMPORT_MAP)}})).then((r=>(t=resolveAndComposeImportMap(r,o.src||e,t),t)))}),"")}return r}class Loader{constructor(e){let t=(e=e||{}).baseUrl,r=e.profiler;if(t&&(t=t.replace(/\/?$/,"/")),t||(t=getBaseUrl()),!t)throw new LoaderError(NO_BASE_URL);this.baseUrl=t,r||(r={logOperationStart:()=>{},logOperationEnd:()=>{}}),this.registry=new ModuleRegistry({baseUrl:t,profiler: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,o){invariant("string"==typeof e,MISSING_NAME);let s=r,n=t,i=o;"function"==typeof n&&(s=t,n=[],i=r),i=i||{},invariant(Array.isArray(n),INVALID_DEPS),this.registry.define(e,n,s,i)}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){let t;if(t=e?resolveAndComposeImportMap(e,this.baseUrl,this.parentImportMap):await evaluateImportMaps(this.baseUrl),this.parentImportMap=t,this.parentImportMap){const e=new ImportMapResolver(this.parentImportMap);this.registry.setImportResolver(e)}}registerExternalModules(e){this.registry.registerExternalModules(e)}}exports.Loader=Loader,Object.defineProperty(exports,"__esModule",{value:!0})}));
|
|
7
|
+
/* LWR Legacy Module Loader Shim v0.9.0-alpha.20 */
|
|
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,s=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}):s&&o.mark(r+(n?`.${n}`:""))}function i({id:r,specifier:n}){if(t)t({id:r,phase:e.End,specifier:n});else if(s){const e=n?`.${n}`:"",t=r+e,s=`${r}.duration${e}`;o.measure(s,t),o.clearMarks(t),o.clearMeasures(s)}}function a(e,t,o,s){const{autoBoot:n,customInit:i}=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,i),i){i({initializeApp:t,define:o,onBootstrapError:s,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/loaderLegacy/v/0_9_0-alpha_20")<0&&c.LWR.requiredModules.push("lwr/loaderLegacy/v/0_9_0-alpha_20"),new class{constructor(e){this.defineCache={},this.orderedDefs=[],l&&(this.watchdogTimerId=this.startWatchdogTimer()),this.global=e,this.config=e.LWR,this.loaderModule="lwr/loaderLegacy/v/0_9_0-alpha_20",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={baseUrl:this.config.baseUrl,profiler:{logOperationStart:n,logOperationEnd:i},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 s={};t[2].call(null,s);const{Loader:n}=s,i=new n(r);return o&&o.length&&i.registerExternalModules(o),i.define(e,["exports"],(e=>{Object.assign(e,{define:i.define.bind(i),load:i.load.bind(i),services:i.services})}),t[3]),i}(this.loaderModule,this.defineCache[this.loaderModule],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_20",["exports"],(e=>{Object.assign(e,{logOperationStart:n,logOperationEnd:i})}),{})}mountApp(e){const{bootstrapModule:t,rootComponent:r,importMappings:o,rootComponents:s,ssrProps:n,endpoints:i}=this.config;this.global.LWR=Object.freeze({define:e.define.bind(e),rootComponent:r,rootComponents:s,ssrProps:n,importMappings:o,endpoints:i}),this.orderedDefs.forEach((t=>{t!==this.loaderModule&&e.define(...this.defineCache[t])}));const{disableInitDefer:a}=this.config;e.registerImportMappings(o).then((()=>{if(!a)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/loaderLegacy/v/0_9_0-alpha_20",["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'}),BAD_IMPORT_MAP=Object.freeze({code:3011,level:0,message:"import map is not valid"}),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 s=o.slice(0,o.lastIndexOf("/")+1)+e,n=[];let i=-1;for(let e=0;e<s.length;e++)-1!==i?"/"===s[e]&&(n.push(s.slice(i,e+1)),i=-1):"."===s[e]?"."!==s[e+1]||"/"!==s[e+2]&&e+2!==s.length?"/"===s[e+1]||e+1===s.length?e+=1:i=e:(n.pop(),e+=2):i=e;return-1!==i&&n.push(s.slice(i)),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 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 s=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(s)}))})):t}function reportError(e){hasConsole&&console.error(e)}function evaluateHandleStaleModuleHooks(e,t){const{name:r,oldHash:o,newHash:s}=t;for(let t=0;t<e.length;t++){const n=e[t];try{if(null!==n({name:r,oldHash:o,newHash:s}))break}catch(e){reportError(new LoaderError(STALE_HOOK_ERROR))}}}hasDocument&&globalThis.addEventListener("error",(e=>{lastWindowError=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`;class ModuleRegistry{constructor(e){this.namedDefineRegistry=new Map,this.moduleRegistry=new Map,this.aliases=new Map,this.baseUrl=e.baseUrl||"",this.profiler=e.profiler}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.baseUrl;let o,s=e;const n=this.resolveHook;if(n){for(let e=0;e<n.length;e++){const t=(0,n[e])(s,{parentUrl:r});let i;if((t||null===t)&&(i=isResponseAPromise(t)?await t:t),null!==i){if("string"==typeof i){if(resolveIfNotPlainOrUrl(i,r))throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);s=i;continue}if(o=i&&i.url&&(resolveIfNotPlainOrUrl(i.url,r)||i.url),!o)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);break}}if(s!==e){if(!o&&this.namedDefineRegistry.has(s))return s;e=s}}if(!o){const t=resolveIfNotPlainOrUrl(e,r)||e;if(this.moduleRegistry.has(t))return t;if(this.resolver){if(o=this.resolver.resolve(t,r),this.namedDefineRegistry.has(t)&&this.namedDefineRegistry.get(t).defined){if(!this.moduleRegistry.get(o)||!this.aliases.has(t))return t}}else o=t}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,o){const s=this.namedDefineRegistry.get(e);if(s&&s.defined)return void(this.lastDefine=s);const n={name:e,dependencies:t,exporter:r,signatures:o,defined:!0};s&&s.external&&s.external.resolveExternal(n),this.profiler.logOperationStart({id:MODULE_DEFINE,specifier:e}),this.namedDefineRegistry.set(e,n),this.lastDefine=n,o.hashes&&Object.entries(o.hashes).forEach((([e,t])=>{this.checkModuleSignature(e,t)}))}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,s)=>{t=o,r=setTimeout((()=>{s(new LoaderError(MODULE_LOAD_TIMEOUT,[e]))}),MODULE_LOAD_TIMEOUT_TIMER)})).finally((()=>{clearTimeout(r)})),s={name:e,defined:!1,external:{resolveExternal:t,moduleDefPromise:o}};this.namedDefineRegistry.set(e,s)}})),t.length)throw new LoaderError(MODULE_ALREADY_LOADED,[t.join(", ")])}checkModuleSignature(e,t){const r=this.namedDefineRegistry.get(e);if(!r){const r={name:e,signatures:{ownHash:t},defined:!1};return void this.namedDefineRegistry.set(e,r)}const o=r.signatures?r.signatures.ownHash:void 0;if(o&&t!==o){const r=this.handleStaleModuleHook;r&&evaluateHandleStaleModuleHooks(r,{name:e,oldHash:o,newHash:t})}}setImportResolver(e){this.resolver=e}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),s=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:s,instantiation:o,evaluated:!1,evaluationPromise:null};return this.moduleRegistry.set(e,n),this.storeModuleAlias(t,e),n}storeModuleAlias(e,t){if(e!==t)if(this.aliases.has(e)){if(hasConsole){const r=this.aliases.get(e);r!==t&&console.warn(`Alias update attempt: ${e}=>${r}, ${t}`)}}else 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:s}=await e.instantiation,n={},i=await Promise.all(s.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(...i);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 s=this.baseUrl,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,s),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}=e;r&&(this.resolveHook?this.resolveHook.push(r):this.resolveHook=[r]),t&&(this.loadHook?this.loadHook.push(t):this.loadHook=[t])}registerHandleStaleModuleHook(e){this.handleStaleModuleHook?this.handleStaleModuleHook.push(e):this.handleStaleModuleHook=[e]}}function getMatch(e,t){if(t[e])return e;let r=e.length;do{const o=e.slice(0,r+1);if(o in t)return o}while(-1!==(r=e.lastIndexOf("/",r-1)))}function targetWarning(e,t,r){hasConsole&&console.warn("Package target "+r+", resolving target '"+t+"' for "+e)}function applyPackages(e,t,r){const o=getMatch(e,t);if(o){const r=t[o];if(null===r)return;if(!(e.length>o.length&&"/"!==r[r.length-1])){return e.length>o.length&&"/"===r[r.length-1]&&r.lastIndexOf(o)===r.length-o.length?r.substring(0,r.lastIndexOf(o))+encodeURIComponent(e):r+e.slice(o.length)}targetWarning(o,r,"should have a trailing '/'")}else if(r&&!isUrl(e))return r+encodeURIComponent(e)}function resolveImportMapEntry(e,t,r){e.scopes||(e.scopes={}),e.imports||(e.imports={});const o=e.scopes;let s=r&&getMatch(r,o);for(;s;){const e=applyPackages(t,o[s]);if(e)return e;s=getMatch(s.slice(0,s.lastIndexOf("/")),o)}return applyPackages(t,e.imports,e.default)||isUrl(t)&&t||void 0}function resolveAndComposePackages(e,t,r,o,s){for(const n in e){const i=resolveIfNotPlainOrUrl(n,r)||n,a=e[n];if("string"!=typeof a)continue;const l=resolveImportMapEntry(o,resolveIfNotPlainOrUrl(a,r)||a,s);l?t[i]=l:targetWarning(n,a,"bare specifier did not resolve")}}function resolveAndComposeImportMap(e,t,r={imports:{},scopes:{}}){const o={imports:Object.assign({},r.imports),scopes:Object.assign({},r.scopes),default:e.default};if(e.imports&&resolveAndComposePackages(e.imports,o.imports,t,r),e.scopes)for(const s in e.scopes){const n=resolveUrl(s,t);resolveAndComposePackages(e.scopes[s],o.scopes[n]||(o.scopes[n]={}),t,r,n)}return e.default&&(o.default=resolveIfNotPlainOrUrl(e.default,t)),o}class ImportMapResolver{constructor(e){this.importMap=e}resolve(e,t){return resolveImportMapEntry(this.importMap,e,t)}}const IMPORTMAP_SCRIPT_TYPE="lwr-importmap";function iterateDocumentImportMaps(e,t){const r=document.querySelectorAll(`script[type="${IMPORTMAP_SCRIPT_TYPE}"]`+t),o=Array.from(r).filter((e=>!e.src||(hasConsole&&console.warn("LWR does not support import maps from script src"),!1)));Array.prototype.forEach.call(o,e)}async function getImportMapFromScript(e){return Promise.resolve(e.innerHTML)}async function evaluateImportMaps(e){let t={imports:{},scopes:{}},r=Promise.resolve(t);if(hasDocument){if(e||(e=getBaseUrl()),!e)throw new LoaderError(NO_BASE_URL);iterateDocumentImportMaps((o=>{r=r.then((()=>getImportMapFromScript(o))).then((e=>{try{return JSON.parse(e)}catch(e){throw new LoaderError(BAD_IMPORT_MAP)}})).then((r=>(t=resolveAndComposeImportMap(r,o.src||e,t),t)))}),"")}return r}class Loader{constructor(e){let t=(e=e||{}).baseUrl,r=e.profiler;if(t&&(t=t.replace(/\/?$/,"/")),t||(t=getBaseUrl()),!t)throw new LoaderError(NO_BASE_URL);this.baseUrl=t,r||(r={logOperationStart:()=>{},logOperationEnd:()=>{}}),this.registry=new ModuleRegistry({baseUrl:t,profiler: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,o){invariant("string"==typeof e,MISSING_NAME);let s=r,n=t,i=o;"function"==typeof n&&(s=t,n=[],i=r),i=i||{},invariant(Array.isArray(n),INVALID_DEPS),this.registry.define(e,n,s,i)}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){let t;if(t=e?resolveAndComposeImportMap(e,this.baseUrl,this.parentImportMap):await evaluateImportMaps(this.baseUrl),this.parentImportMap=t,this.parentImportMap){const e=new ImportMapResolver(this.parentImportMap);this.registry.setImportResolver(e)}}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 Legacy Module Loader Shim v0.9.0-alpha.
|
|
7
|
+
/* LWR Legacy Module Loader Shim v0.9.0-alpha.20 */
|
|
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
|
}
|
|
@@ -142,7 +143,7 @@
|
|
|
142
143
|
// Parse configuration
|
|
143
144
|
this.global = global;
|
|
144
145
|
this.config = global.LWR;
|
|
145
|
-
this.loaderModule = 'lwr/loaderLegacy/v/0_9_0-
|
|
146
|
+
this.loaderModule = 'lwr/loaderLegacy/v/0_9_0-alpha_20';
|
|
146
147
|
// Set up error handler
|
|
147
148
|
this.errorHandler = this.config.onError;
|
|
148
149
|
// Set up the temporary LWR.define function and customInit hook
|
|
@@ -204,7 +205,7 @@
|
|
|
204
205
|
const loaderConfig = {
|
|
205
206
|
baseUrl: this.config.baseUrl,
|
|
206
207
|
profiler: { logOperationStart, logOperationEnd },
|
|
207
|
-
// 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
|
|
208
209
|
appMetadata: {
|
|
209
210
|
appId: this.config.appId,
|
|
210
211
|
bootstrapModule: this.config.bootstrapModule,
|
|
@@ -243,7 +244,7 @@
|
|
|
243
244
|
const exporter = (exports) => {
|
|
244
245
|
Object.assign(exports, { logOperationStart, logOperationEnd });
|
|
245
246
|
};
|
|
246
|
-
loader.define('lwr/profiler/v/0_9_0-
|
|
247
|
+
loader.define('lwr/profiler/v/0_9_0-alpha_20', ['exports'], exporter, {});
|
|
247
248
|
}
|
|
248
249
|
// Set up the application globals, import map, root custom element...
|
|
249
250
|
mountApp(loader) {
|
|
@@ -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/loaderLegacy/v/0_9_0-
|
|
307
|
-
GLOBAL.LWR.requiredModules.push('lwr/loaderLegacy/v/0_9_0-
|
|
307
|
+
if (GLOBAL.LWR.requiredModules.indexOf('lwr/loaderLegacy/v/0_9_0-alpha_20') < 0) {
|
|
308
|
+
GLOBAL.LWR.requiredModules.push('lwr/loaderLegacy/v/0_9_0-alpha_20');
|
|
308
309
|
}
|
|
309
310
|
new LoaderShim(GLOBAL);
|
|
310
311
|
|
|
@@ -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-alpha.
|
|
7
|
+
/* LWR Module Loader Shim v0.9.0-alpha.20 */
|
|
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-alpha_20';
|
|
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
|
|
@@ -203,7 +204,7 @@
|
|
|
203
204
|
endpoints: this.config.endpoints,
|
|
204
205
|
baseUrl: this.config.baseUrl,
|
|
205
206
|
profiler: { logOperationStart, logOperationEnd },
|
|
206
|
-
// TODO: can be removed following https://github.com/salesforce/lwr/issues/1087
|
|
207
|
+
// TODO: can be removed following https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
207
208
|
appMetadata: {
|
|
208
209
|
appId: this.config.appId,
|
|
209
210
|
bootstrapModule: this.config.bootstrapModule,
|
|
@@ -242,7 +243,7 @@
|
|
|
242
243
|
const exporter = (exports) => {
|
|
243
244
|
Object.assign(exports, { logOperationStart, logOperationEnd });
|
|
244
245
|
};
|
|
245
|
-
loader.define('lwr/profiler/v/0_9_0-
|
|
246
|
+
loader.define('lwr/profiler/v/0_9_0-alpha_20', ['exports'], exporter);
|
|
246
247
|
}
|
|
247
248
|
// Set up the application globals, import map, root custom element...
|
|
248
249
|
mountApp(loader) {
|
|
@@ -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-alpha_20') < 0) {
|
|
308
|
+
GLOBAL.LWR.requiredModules.push('lwr/loader/v/0_9_0-alpha_20');
|
|
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-alpha_20', ['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
|
|
@@ -608,11 +609,13 @@ LWR.define('lwr/loader/v/0_9_0-alpha_2', ['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
|
|
|
@@ -1248,7 +1251,7 @@ LWR.define('lwr/loader/v/0_9_0-alpha_2', ['exports'], function (exports) { 'use
|
|
|
1248
1251
|
moduleDefault = { default: moduleDefault };
|
|
1249
1252
|
// __defaultInterop is ONLY used to support backwards compatibility
|
|
1250
1253
|
// of importing default exports the "wrong" way (when not using named exports).
|
|
1251
|
-
// See https://github.com/salesforce/lwr/pull/816
|
|
1254
|
+
// See https://github.com/salesforce-experience-platform-emu/lwr/pull/816
|
|
1252
1255
|
Object.defineProperty(moduleDefault, '__defaultInterop', { value: true });
|
|
1253
1256
|
}
|
|
1254
1257
|
// if no return value, then we are using the exports object
|
|
@@ -1470,7 +1473,7 @@ LWR.define('lwr/loader/v/0_9_0-alpha_2', ['exports'], function (exports) { 'use
|
|
|
1470
1473
|
const appId = match && match[1];
|
|
1471
1474
|
config.appMetadata.appId = appId;
|
|
1472
1475
|
}
|
|
1473
|
-
// TODO: https://github.com/salesforce/lwr/issues/1087
|
|
1476
|
+
// TODO: https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
1474
1477
|
this.services = Object.freeze({
|
|
1475
1478
|
addLoaderPlugin: this.registry.addLoaderPlugin.bind(this.registry),
|
|
1476
1479
|
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-alpha.
|
|
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_2")<0&&c.LWR.requiredModules.push("lwr/loader/v/0_9_0-alpha_2"),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_2",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_2",["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_2",["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-alpha.20 */
|
|
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_20")<0&&c.LWR.requiredModules.push("lwr/loader/v/0_9_0-alpha_20"),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_20",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_20",["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_20",["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})}));
|
|
@@ -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-alpha.
|
|
7
|
+
/* LWR Module Loader Shim v0.9.0-alpha.20 */
|
|
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-alpha_20';
|
|
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
|
|
@@ -203,7 +204,7 @@
|
|
|
203
204
|
endpoints: this.config.endpoints,
|
|
204
205
|
baseUrl: this.config.baseUrl,
|
|
205
206
|
profiler: { logOperationStart, logOperationEnd },
|
|
206
|
-
// TODO: can be removed following https://github.com/salesforce/lwr/issues/1087
|
|
207
|
+
// TODO: can be removed following https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
207
208
|
appMetadata: {
|
|
208
209
|
appId: this.config.appId,
|
|
209
210
|
bootstrapModule: this.config.bootstrapModule,
|
|
@@ -242,7 +243,7 @@
|
|
|
242
243
|
const exporter = (exports) => {
|
|
243
244
|
Object.assign(exports, { logOperationStart, logOperationEnd });
|
|
244
245
|
};
|
|
245
|
-
loader.define('lwr/profiler/v/0_9_0-
|
|
246
|
+
loader.define('lwr/profiler/v/0_9_0-alpha_20', ['exports'], exporter);
|
|
246
247
|
}
|
|
247
248
|
// Set up the application globals, import map, root custom element...
|
|
248
249
|
mountApp(loader) {
|
|
@@ -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-alpha_20') < 0) {
|
|
308
|
+
GLOBAL.LWR.requiredModules.push('lwr/loader/v/0_9_0-alpha_20');
|
|
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
|
}
|
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
|
}
|
|
@@ -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 ESM Module Loader v0.9.0-alpha.
|
|
7
|
+
/* LWR ESM Module Loader v0.9.0-alpha.20 */
|
|
8
8
|
/**
|
|
9
9
|
* Simplified version of the AMD Import Metadata Resolver.
|
|
10
10
|
* Just reads the ImportMetadata at construction time.
|
|
@@ -87,37 +87,41 @@ async function load(specifier, importer) {
|
|
|
87
87
|
return import(uri);
|
|
88
88
|
}
|
|
89
89
|
async function resolveUrl(specifier, importer) {
|
|
90
|
-
|
|
90
|
+
var _a;
|
|
91
|
+
// HMR imports complete URIs when swapping out modules
|
|
92
|
+
if (specifier.includes('://') || specifier.startsWith('/')) {
|
|
93
|
+
return specifier;
|
|
94
|
+
}
|
|
91
95
|
if (!resolver || !resolverLegacy) {
|
|
92
96
|
throw new Error('The ESM Loader was not initialized');
|
|
93
97
|
}
|
|
94
98
|
// Check if the URI is in the import metadata
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
if (resolver) {
|
|
100
|
+
const uri = await resolver.resolve(specifier);
|
|
101
|
+
if (uri) {
|
|
102
|
+
return uri;
|
|
103
|
+
}
|
|
98
104
|
}
|
|
99
105
|
// Check if the URI is in the legacy import metadata
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
// Else fall back to the module endpoint
|
|
105
|
-
uri = specifier;
|
|
106
|
-
// do not alter the specifier if it is already a URL
|
|
107
|
-
if (uri.indexOf('://') < 0 && !uri.startsWith('/')) {
|
|
108
|
-
// add the specifier and importer to the default URI
|
|
109
|
-
const { endpoints } = esmLoaderConfig;
|
|
110
|
-
if (endpoints && endpoints.uris && endpoints.uris.module) {
|
|
111
|
-
uri = endpoints.uris.module + encodeURIComponent(specifier);
|
|
112
|
-
if (importer) {
|
|
113
|
-
uri += `?importer=${encodeURIComponent(importer)}`;
|
|
114
|
-
}
|
|
115
|
-
if (endpoints.modifiers) {
|
|
116
|
-
// Add URI modifiers to query
|
|
117
|
-
uri += Object.entries(endpoints.modifiers).reduce((q, [k, v]) => (q += `${k}=${v}&`), importer ? '&' : '?');
|
|
118
|
-
}
|
|
106
|
+
if (resolverLegacy) {
|
|
107
|
+
const uri = resolverLegacy.legacyResolve(specifier);
|
|
108
|
+
if (uri) {
|
|
109
|
+
return uri;
|
|
119
110
|
}
|
|
120
111
|
}
|
|
112
|
+
const { endpoints } = esmLoaderConfig;
|
|
113
|
+
if (!((_a = endpoints === null || endpoints === void 0 ? void 0 : endpoints.uris) === null || _a === void 0 ? void 0 : _a.module)) {
|
|
114
|
+
throw new Error(`Unable to resolve the URL for "${specifier}"`);
|
|
115
|
+
}
|
|
116
|
+
// add the specifier and importer to the default URI
|
|
117
|
+
let uri = endpoints.uris.module + encodeURIComponent(specifier);
|
|
118
|
+
if (importer) {
|
|
119
|
+
uri += `?importer=${encodeURIComponent(importer)}`;
|
|
120
|
+
}
|
|
121
|
+
if (endpoints.modifiers) {
|
|
122
|
+
// Add URI modifiers to query
|
|
123
|
+
uri += Object.entries(endpoints.modifiers).reduce((q, [k, v]) => (q += `${k}=${v}&`), importer ? '&' : '?');
|
|
124
|
+
}
|
|
121
125
|
return uri;
|
|
122
126
|
}
|
|
123
127
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { LwrCompiler } from '@lwrjs/compiler'; // eslint-disable-line lwr/only-allowed-imports
|
|
2
1
|
import { readFile } from '@lwrjs/shared-utils'; // eslint-disable-line lwr/only-allowed-imports
|
|
3
|
-
|
|
2
|
+
import { convertToAmd } from '@lwrjs/shared-utils/compiler'; // eslint-disable-line lwr/only-allowed-imports
|
|
4
3
|
export async function getAMDModule(specifier, filename, autoExports) {
|
|
5
4
|
const code = readFile(filename);
|
|
6
|
-
const { code: amdModule } = await
|
|
5
|
+
const { code: amdModule } = await convertToAmd(code, { id: specifier }, autoExports !== true);
|
|
7
6
|
return amdModule;
|
|
8
7
|
}
|
|
9
8
|
export function evaluateDefine(moduleString) {
|
|
@@ -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 v0.9.0-alpha.
|
|
7
|
+
/* LWR Module Loader v0.9.0-alpha.20 */
|
|
8
8
|
const templateRegex = /\{([0-9]+)\}/g;
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
10
|
function templateString(template, args) {
|
|
@@ -301,11 +301,13 @@ if (hasDocument) {
|
|
|
301
301
|
|
|
302
302
|
// Bootstrap / shim
|
|
303
303
|
|
|
304
|
+
// Loader: modules
|
|
304
305
|
const LOADER_PREFIX = 'lwr.loader.';
|
|
305
306
|
const MODULE_DEFINE = `${LOADER_PREFIX}module.define`;
|
|
306
307
|
const MODULE_FETCH = `${LOADER_PREFIX}module.fetch`;
|
|
307
308
|
const MODULE_ERROR = `${LOADER_PREFIX}module.error`;
|
|
308
309
|
|
|
310
|
+
// Loader: mappings
|
|
309
311
|
const MAPPINGS_FETCH = `${LOADER_PREFIX}mappings.fetch`;
|
|
310
312
|
const MAPPINGS_ERROR = `${LOADER_PREFIX}mappings.error`;
|
|
311
313
|
|
|
@@ -941,7 +943,7 @@ class ModuleRegistry {
|
|
|
941
943
|
moduleDefault = { default: moduleDefault };
|
|
942
944
|
// __defaultInterop is ONLY used to support backwards compatibility
|
|
943
945
|
// of importing default exports the "wrong" way (when not using named exports).
|
|
944
|
-
// See https://github.com/salesforce/lwr/pull/816
|
|
946
|
+
// See https://github.com/salesforce-experience-platform-emu/lwr/pull/816
|
|
945
947
|
Object.defineProperty(moduleDefault, '__defaultInterop', { value: true });
|
|
946
948
|
}
|
|
947
949
|
// if no return value, then we are using the exports object
|
|
@@ -1163,7 +1165,7 @@ class Loader {
|
|
|
1163
1165
|
const appId = match && match[1];
|
|
1164
1166
|
config.appMetadata.appId = appId;
|
|
1165
1167
|
}
|
|
1166
|
-
// TODO: https://github.com/salesforce/lwr/issues/1087
|
|
1168
|
+
// TODO: https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
1167
1169
|
this.services = Object.freeze({
|
|
1168
1170
|
addLoaderPlugin: this.registry.addLoaderPlugin.bind(this.registry),
|
|
1169
1171
|
handleStaleModule: this.registry.registerHandleStaleModuleHook.bind(this.registry),
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
const compiler = new LwrCompiler();
|
|
1
|
+
import { getImportMetadata, readFile } from '@lwrjs/shared-utils'; // eslint-disable-line lwr/only-allowed-imports
|
|
2
|
+
import { convertToAmd } from '@lwrjs/shared-utils/compiler'; // eslint-disable-line lwr/only-allowed-imports
|
|
4
3
|
export async function getAMDModule(specifier, filename, fixtureHashes, autoExports) {
|
|
5
4
|
const code = readFile(filename);
|
|
6
|
-
const metadata = await
|
|
5
|
+
const metadata = await getImportMetadata(code);
|
|
7
6
|
const depHashes = {};
|
|
8
7
|
if (metadata && metadata.imports && metadata.imports.length > 0) {
|
|
9
8
|
metadata.imports.forEach((dependency) => {
|
|
@@ -11,7 +10,7 @@ export async function getAMDModule(specifier, filename, fixtureHashes, autoExpor
|
|
|
11
10
|
depHashes[specifier] = fixtureHashes[specifier];
|
|
12
11
|
});
|
|
13
12
|
}
|
|
14
|
-
const { code: amdModule } = await
|
|
13
|
+
const { code: amdModule } = await convertToAmd(code, { id: specifier }, autoExports !== true);
|
|
15
14
|
const openAmdCodeString = amdModule.trim().slice(0, -2);
|
|
16
15
|
const signedCode = `${openAmdCodeString}, ${JSON.stringify({
|
|
17
16
|
ownHash: fixtureHashes[specifier],
|
|
@@ -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 Legacy Module Loader v0.9.0-alpha.
|
|
7
|
+
/* LWR Legacy Module Loader v0.9.0-alpha.20 */
|
|
8
8
|
const templateRegex = /\{([0-9]+)\}/g;
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
10
|
function templateString(template, args) {
|
|
@@ -402,6 +402,7 @@ function evaluateHandleStaleModuleHooks(handleStaleModuleHooks, hookArgs) {
|
|
|
402
402
|
|
|
403
403
|
// Bootstrap / shim
|
|
404
404
|
|
|
405
|
+
// Loader: modules
|
|
405
406
|
const LOADER_PREFIX = 'lwr.loader.';
|
|
406
407
|
const MODULE_DEFINE = `${LOADER_PREFIX}module.define`;
|
|
407
408
|
const MODULE_FETCH = `${LOADER_PREFIX}module.fetch`;
|
|
@@ -755,7 +756,7 @@ class ModuleRegistry {
|
|
|
755
756
|
moduleDefault = { default: moduleDefault };
|
|
756
757
|
// __defaultInterop is ONLY used to support backwards compatibility
|
|
757
758
|
// of importing default exports the "wrong" way (when not using named exports).
|
|
758
|
-
// See https://github.com/salesforce/lwr/pull/816
|
|
759
|
+
// See https://github.com/salesforce-experience-platform-emu/lwr/pull/816
|
|
759
760
|
Object.defineProperty(moduleDefault, '__defaultInterop', { value: true });
|
|
760
761
|
}
|
|
761
762
|
// if no return value, then we are using the exports object
|
|
@@ -967,7 +968,7 @@ function applyPackages(id, packages, defaultUri) {
|
|
|
967
968
|
// When a specifier's URI cannot be resolved via the imports, fallback to "default".
|
|
968
969
|
// -> https://rfcs.lwc.dev/rfcs/lwr/0000-import-metadata#json-schema
|
|
969
970
|
// However, if `id` is already a fully resolved url,
|
|
970
|
-
// we cannot prepend the defaultUri -> https://github.com/salesforce/lwr/issues/378.
|
|
971
|
+
// we cannot prepend the defaultUri -> https://github.com/salesforce-experience-platform-emu/lwr/issues/378.
|
|
971
972
|
// In this case we do not apply any package mappings and allow the caller (resolveImportMapEntry) to handle it.
|
|
972
973
|
if (!isUrl(id)) {
|
|
973
974
|
return defaultUri + encodeURIComponent(id);
|
|
@@ -1134,7 +1135,7 @@ class Loader {
|
|
|
1134
1135
|
};
|
|
1135
1136
|
}
|
|
1136
1137
|
this.registry = new ModuleRegistry({ baseUrl, profiler });
|
|
1137
|
-
// TODO: https://github.com/salesforce/lwr/issues/1087
|
|
1138
|
+
// TODO: https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
1138
1139
|
this.services = Object.freeze({
|
|
1139
1140
|
addLoaderPlugin: this.registry.addLoaderPlugin.bind(this.registry),
|
|
1140
1141
|
handleStaleModule: this.registry.registerHandleStaleModuleHook.bind(this.registry),
|
package/package.json
CHANGED
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
|
-
"version": "0.9.0-alpha.
|
|
8
|
+
"version": "0.9.0-alpha.20",
|
|
9
9
|
"homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "https://github.com/salesforce/lwr.git",
|
|
12
|
+
"url": "https://github.com/salesforce-experience-platform-emu/lwr.git",
|
|
13
13
|
"directory": "packages/@lwrjs/loader"
|
|
14
14
|
},
|
|
15
15
|
"bugs": {
|
|
16
|
-
"url": "https://github.com/salesforce/lwr/issues"
|
|
16
|
+
"url": "https://github.com/salesforce-experience-platform-emu/lwr/issues"
|
|
17
17
|
},
|
|
18
18
|
"type": "module",
|
|
19
19
|
"types": "build/index.d.ts",
|
|
@@ -61,13 +61,14 @@
|
|
|
61
61
|
"build": "yarn build:ts && yarn build:error-shim && yarn build:shim && yarn build:loader && yarn build:shim:bundle && yarn build:shim:bundle:minify"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@
|
|
65
|
-
"@lwrjs/diagnostics": "0.9.0-alpha.
|
|
66
|
-
"@lwrjs/types": "0.9.0-alpha.
|
|
64
|
+
"@locker/compiler": "0.18.9",
|
|
65
|
+
"@lwrjs/diagnostics": "0.9.0-alpha.20",
|
|
66
|
+
"@lwrjs/types": "0.9.0-alpha.20",
|
|
67
|
+
"rollup": "~2.45.2",
|
|
67
68
|
"rollup-plugin-terser": "^7.0.2"
|
|
68
69
|
},
|
|
69
70
|
"dependencies": {
|
|
70
|
-
"@lwrjs/shared-utils": "0.9.0-alpha.
|
|
71
|
+
"@lwrjs/shared-utils": "0.9.0-alpha.20"
|
|
71
72
|
},
|
|
72
73
|
"lwc": {
|
|
73
74
|
"modules": [
|
|
@@ -84,5 +85,5 @@
|
|
|
84
85
|
"engines": {
|
|
85
86
|
"node": ">=14.15.4 <19"
|
|
86
87
|
},
|
|
87
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "b01b6beb86cae6c28308c373db15cb1a4f42a0ee"
|
|
88
89
|
}
|