@lwrjs/everywhere 0.9.0-alpha.9 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/__generated_site_amd_modules__/1/application/amd/l/en-US/ai/amd-bootstrap/configuration/ci/-/-/s/9c07e4a986679d89bf69e66fe60ce615/config.js +10 -0
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/@lwrjs/app-service/amd-bootstrap/module/amd/v/0_9_0/s/c40e6caf07454ce13961de8ca76ab7f0/@lwrjs_app-service_amd-bootstrap_module_amd.js +18 -0
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwc/v/2_38_1/s/8cf6b94d9c0b398c70c97fdca2759caa/lwc.js +8934 -0
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/everywhereAmd/v/0_9_0/s/c538071acf5bde58e816967a14c465c3/lwr_everywhereAmd.js +66 -0
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/init/v/0_9_0/s/206e6e0af6f019fdfd86d87d56331bc2/lwr_init.js +97 -0
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/loader/v/{0_9_0-alpha_9/s/07df3ed331f5f6b3c21336c94dac7c0b → 0_9_0/s/37491c0be6765e2cd302cf146e9d624a}/lwr_loader.js +362 -137
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/metrics/v/0_9_0/s/3426e42c3e22ce07ab2adc62c4c523a0/lwr_metrics.js +66 -0
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/profiler/v/0_9_0/s/e25f3b0b8b5c096acebf847d0a83ea62/lwr_profiler.js +68 -0
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/vault/v/0_9_0/s/c92abd8c1fec2d7eff62e4b097abbe14/lwr_vault.js +21 -0
- package/build/__generated_site_amd_modules__/1/resource/amd/lwr-error-shim.js/v/{0_9_0-alpha_9 → 0_9_0/lwr-error-shim.js} +1 -1
- package/build/__generated_site_amd_modules__/1/resource/amd/lwr-loader-shim.bundle.js/v/0_9_0/lwr-loader-shim.bundle.js +1547 -0
- package/build/assets/amd/lwr-everywhere-debug.js +39 -27
- package/build/assets/amd/lwr-everywhere-min.js +1 -1
- package/build/assets/amd/lwr-everywhere.js +39 -27
- package/build/assets/core/lwr-everywhere-debug.js +36 -24
- package/build/assets/core/lwr-everywhere-min.js +1 -1
- package/build/assets/core/lwr-everywhere.js +36 -24
- package/build/assets/esm/lwr-everywhere-debug.js +1 -1
- package/build/assets/esm/lwr-everywhere-min.js +1 -1
- package/build/assets/esm/lwr-everywhere.js +1 -1
- package/build/modules/@salesforce/lds-default-luvio/lds-default-luvio.js +11 -7
- package/build/modules/lwr/everywhere/everywhere.js +6 -7
- package/build/modules/lwr/everywhereAmd/everywhereAmd.js +9 -11
- package/build/modules/lwr/everywhereEsm/everywhereEsm.js +1 -2
- package/build/modules/lwr/host/host.js +23 -27
- package/build/modules/lwr/setupLDS/network.js +9 -17
- package/build/modules/lwr/setupLDS/setupLDS.js +6 -4
- package/build/modules/lwr/setupNodeLDS/network.js +9 -17
- package/build/modules/lwr/setupNodeLDS/setupNodeLDS.js +3 -1
- package/build/modules/lwr/vault/vault.js +3 -1
- package/package.json +11 -8
- package/build/__generated_site_amd_modules__/1/application/amd/l/en-US/ai/amd-bootstrap/configuration/ci/-/-/s/102a7c627b0f61cba691a7fa94d6a856/config.js +0 -10
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/@lwrjs/app-service/amd-bootstrap/module/amd/v/0_9_0-alpha_9/s/c40e6caf07454ce13961de8ca76ab7f0/@lwrjs_app-service_amd-bootstrap_module_amd.js +0 -14
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwc/v/2_33_0/s/90a5f16131da45cef1653112862ca9dc/lwc.js +0 -7090
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/everywhereAmd/v/0_9_0-alpha_9/s/c538071acf5bde58e816967a14c465c3/lwr_everywhereAmd.js +0 -48
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/init/v/0_9_0-alpha_9/s/6258bcb20cc2d5d6a9f3c5a6f9d0acaf/lwr_init.js +0 -58
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/metrics/v/0_9_0-alpha_9/s/dfbc827104d50ff7d16b59c9d0e06aca/lwr_metrics.js +0 -56
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/profiler/v/0_9_0-alpha_9/s/5a10236d8c52bc9f6dee22875cd7016d/lwr_profiler.js +0 -51
- package/build/__generated_site_amd_modules__/1/module/amd/1/l/en-US/mi/lwr/vault/v/0_9_0-alpha_9/s/c92abd8c1fec2d7eff62e4b097abbe14/lwr_vault.js +0 -13
- package/build/__generated_site_amd_modules__/1/resource/amd/lwr-loader-shim.js/v/0_9_0-alpha_9 +0 -311
- package/build/__generated_site_amd_modules__/en-US/index.html +0 -26
- package/build/__generated_site_amd_modules__/index.html +0 -26
|
@@ -18,7 +18,7 @@ function getConfiguration(options) {
|
|
|
18
18
|
? `${ORIGIN}${PREFIX}/bundle/${format}/${POSTFIX}${BUNDLE_ID}-0/module/mi/`
|
|
19
19
|
: `${ORIGIN}${PREFIX}/module/${format}/${POSTFIX}/mi/`;
|
|
20
20
|
// Component specifiers and URIs
|
|
21
|
-
const BOOT_MODULE = `lwr/everywhere${format === 'esm' ? 'Esm' : 'Amd'}/v/0_9_0
|
|
21
|
+
const BOOT_MODULE = `lwr/everywhere${format === 'esm' ? 'Esm' : 'Amd'}/v/0_9_0`;
|
|
22
22
|
const BOOT_URI = `${ENDPOINT}${encodeURIComponent(BOOT_MODULE)}/latest${debug ? '?debug' : ''}`;
|
|
23
23
|
// Client Bootstrap Config
|
|
24
24
|
const config = {
|
|
@@ -48,7 +48,7 @@ function getConfiguration(options) {
|
|
|
48
48
|
* SPDX-License-Identifier: MIT
|
|
49
49
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
50
50
|
*/
|
|
51
|
-
/* LWR Module Loader v0.9.0
|
|
51
|
+
/* LWR Module Loader v0.9.0 */
|
|
52
52
|
const templateRegex = /\{([0-9]+)\}/g;
|
|
53
53
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
54
|
function templateString(template, args) {
|
|
@@ -146,7 +146,7 @@ const STALE_HOOK_ERROR = Object.freeze({
|
|
|
146
146
|
const MODULE_ALREADY_LOADED = Object.freeze({
|
|
147
147
|
code: 3017,
|
|
148
148
|
level: 0,
|
|
149
|
-
message: 'Marking module(s) as externally loaded, but they are already loaded:
|
|
149
|
+
message: 'Marking module(s) as externally loaded, but they are already loaded:',
|
|
150
150
|
});
|
|
151
151
|
const FAIL_HOOK_LOAD = Object.freeze({
|
|
152
152
|
code: 3018,
|
|
@@ -345,11 +345,13 @@ if (hasDocument) {
|
|
|
345
345
|
|
|
346
346
|
// Bootstrap / shim
|
|
347
347
|
|
|
348
|
+
// Loader: modules
|
|
348
349
|
const LOADER_PREFIX = 'lwr.loader.';
|
|
349
350
|
const MODULE_DEFINE = `${LOADER_PREFIX}module.define`;
|
|
350
351
|
const MODULE_FETCH = `${LOADER_PREFIX}module.fetch`;
|
|
351
352
|
const MODULE_ERROR = `${LOADER_PREFIX}module.error`;
|
|
352
353
|
|
|
354
|
+
// Loader: mappings
|
|
353
355
|
const MAPPINGS_FETCH = `${LOADER_PREFIX}mappings.fetch`;
|
|
354
356
|
const MAPPINGS_ERROR = `${LOADER_PREFIX}mappings.error`;
|
|
355
357
|
|
|
@@ -810,12 +812,8 @@ class ModuleRegistry {
|
|
|
810
812
|
* @param modules - list of module identifiers
|
|
811
813
|
*/
|
|
812
814
|
registerExternalModules(modules) {
|
|
813
|
-
const alreadyRegistered = [];
|
|
814
815
|
modules.map((id) => {
|
|
815
|
-
if (this.namedDefineRegistry.has(id)) {
|
|
816
|
-
alreadyRegistered.push(id);
|
|
817
|
-
}
|
|
818
|
-
else {
|
|
816
|
+
if (!this.namedDefineRegistry.has(id)) {
|
|
819
817
|
let resolveExternal;
|
|
820
818
|
let timer;
|
|
821
819
|
const moduleDefPromise = new Promise((resolve, reject) => {
|
|
@@ -839,11 +837,11 @@ class ModuleRegistry {
|
|
|
839
837
|
};
|
|
840
838
|
this.namedDefineRegistry.set(id, moduleDef);
|
|
841
839
|
}
|
|
840
|
+
else if (process.env.NODE_ENV !== 'production' && hasConsole) {
|
|
841
|
+
// eslint-disable-next-line lwr/no-unguarded-apis
|
|
842
|
+
console.warn(MODULE_ALREADY_LOADED.message, id);
|
|
843
|
+
}
|
|
842
844
|
});
|
|
843
|
-
// throw error for modules that were already registered
|
|
844
|
-
if (alreadyRegistered.length) {
|
|
845
|
-
throw new LoaderError(MODULE_ALREADY_LOADED, [alreadyRegistered.join(', ')]);
|
|
846
|
-
}
|
|
847
845
|
}
|
|
848
846
|
getImportMetadataResolver() {
|
|
849
847
|
return this.resolver;
|
|
@@ -985,7 +983,7 @@ class ModuleRegistry {
|
|
|
985
983
|
moduleDefault = { default: moduleDefault };
|
|
986
984
|
// __defaultInterop is ONLY used to support backwards compatibility
|
|
987
985
|
// of importing default exports the "wrong" way (when not using named exports).
|
|
988
|
-
// See https://github.com/salesforce/lwr/pull/816
|
|
986
|
+
// See https://github.com/salesforce-experience-platform-emu/lwr/pull/816
|
|
989
987
|
Object.defineProperty(moduleDefault, '__defaultInterop', { value: true });
|
|
990
988
|
}
|
|
991
989
|
// if no return value, then we are using the exports object
|
|
@@ -1207,7 +1205,7 @@ class Loader {
|
|
|
1207
1205
|
const appId = match && match[1];
|
|
1208
1206
|
config.appMetadata.appId = appId;
|
|
1209
1207
|
}
|
|
1210
|
-
// TODO: https://github.com/salesforce/lwr/issues/1087
|
|
1208
|
+
// TODO: https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
1211
1209
|
this.services = Object.freeze({
|
|
1212
1210
|
addLoaderPlugin: this.registry.addLoaderPlugin.bind(this.registry),
|
|
1213
1211
|
handleStaleModule: this.registry.registerHandleStaleModuleHook.bind(this.registry),
|
|
@@ -1285,7 +1283,7 @@ const configuration = getConfiguration(configOptions);
|
|
|
1285
1283
|
const { bootstrapModule, endpoints, baseUrl, imports, index } = configuration;
|
|
1286
1284
|
// Initialize the AMD loader (its code is bundled into the LWR Everywhere module)
|
|
1287
1285
|
const loader = new Loader({ endpoints, baseUrl });
|
|
1288
|
-
loader.define('lwr/loader/v/0_9_0
|
|
1286
|
+
loader.define('lwr/loader/v/0_9_0', ['exports'], (exports) => {
|
|
1289
1287
|
Object.assign(exports, {
|
|
1290
1288
|
define: loader.define.bind(loader),
|
|
1291
1289
|
load: loader.load.bind(loader),
|
|
@@ -1294,9 +1292,11 @@ loader.define('lwr/loader/v/0_9_0-alpha_9', ['exports'], (exports) => {
|
|
|
1294
1292
|
await loader.registerImportMappings({ imports, index }, [bootstrapModule]);
|
|
1295
1293
|
globalThis.LWR = Object.freeze({ define: loader.define.bind(loader) });
|
|
1296
1294
|
// Define preload modules (ie: ABS, vault, etc) BEFORE loading them
|
|
1297
|
-
LWR.define(
|
|
1298
|
-
|
|
1299
|
-
|
|
1295
|
+
LWR.define('lwr/everywhereAmd/v/0_9_0', ['exports', 'lwr/vault/v/0_9_0'], function (exports, _0_9_0) {
|
|
1296
|
+
// IMPORTANT: Do not add any static imports to this file that are not bundled with the amd-client
|
|
1297
|
+
// Do an OAuthed fetch
|
|
1298
|
+
async function authFetch(url, accept = 'javascript') {
|
|
1299
|
+
const authInfo = _0_9_0.getAuthInfo();
|
|
1300
1300
|
if (authInfo) {
|
|
1301
1301
|
return fetch(url, {
|
|
1302
1302
|
headers: {
|
|
@@ -1305,44 +1305,56 @@ LWR.define("lwr/everywhereAmd/v/0_9_0-alpha_9", ["exports", "lwr/vault/v/0_9_0-a
|
|
|
1305
1305
|
}
|
|
1306
1306
|
});
|
|
1307
1307
|
}
|
|
1308
|
-
return null;
|
|
1308
|
+
return null; // defer to loader
|
|
1309
1309
|
}
|
|
1310
|
+
// Add a hook for adding OAuth headers to module and mapping requests
|
|
1311
|
+
// Workaround: core does not have proper versioning; replace all versions with 0_0_1
|
|
1310
1312
|
function everywhereHooks(serviceAPI, mappingEndpoint, coreVersion) {
|
|
1311
1313
|
serviceAPI.addLoaderPlugin({
|
|
1312
1314
|
loadModule: async (url) => {
|
|
1313
1315
|
return authFetch(url);
|
|
1314
1316
|
},
|
|
1315
1317
|
loadMapping: async (specifier) => {
|
|
1316
|
-
const res = await authFetch(`${mappingEndpoint}${encodeURIComponent(specifier)}`,
|
|
1318
|
+
const res = await authFetch(`${mappingEndpoint}${encodeURIComponent(specifier)}`, 'json');
|
|
1317
1319
|
if (res && res.ok) {
|
|
1318
1320
|
return res.json();
|
|
1319
1321
|
}
|
|
1320
1322
|
return null;
|
|
1321
1323
|
},
|
|
1322
|
-
resolveModule:
|
|
1324
|
+
resolveModule: specifier => {
|
|
1325
|
+
// Workaround W-8010259 (dynamic imports without versions)
|
|
1326
|
+
// by adding a default version to version-less specifiers
|
|
1323
1327
|
if (specifier && !/\/v\/[^/]+?$/.test(specifier)) {
|
|
1324
1328
|
return `${specifier}/v/${coreVersion}`;
|
|
1325
1329
|
}
|
|
1326
|
-
return null;
|
|
1330
|
+
return null; // defer to loader
|
|
1327
1331
|
}
|
|
1328
1332
|
});
|
|
1329
1333
|
}
|
|
1330
1334
|
function initAmd(services, mappingEndpoint, coreVersion) {
|
|
1335
|
+
// Initialize the loader hooks for LWR-S endpoints
|
|
1331
1336
|
if (mappingEndpoint.match(/\/v5\d\.0\//)) {
|
|
1332
1337
|
everywhereHooks(services, mappingEndpoint, coreVersion);
|
|
1333
1338
|
}
|
|
1334
1339
|
}
|
|
1340
|
+
// Export the LWRE authenticate() API
|
|
1341
|
+
// This is a duplicate of the function exported from "lwr/everywhere"
|
|
1342
|
+
// because it MUST be bundled into the LWRE module via "lwr/everywhereAmd"
|
|
1335
1343
|
function authenticate(authInfo) {
|
|
1344
|
+
// Put OAuth info into the vault
|
|
1336
1345
|
if (authInfo) {
|
|
1337
|
-
|
|
1346
|
+
_0_9_0.setAuthInfo(authInfo);
|
|
1338
1347
|
}
|
|
1339
1348
|
}
|
|
1340
1349
|
exports.authenticate = authenticate;
|
|
1341
1350
|
exports.initAmd = initAmd;
|
|
1342
|
-
Object.defineProperty(exports,
|
|
1351
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1343
1352
|
});
|
|
1344
|
-
LWR.define(
|
|
1353
|
+
LWR.define('lwr/vault/v/0_9_0', ['exports'], function (exports) {
|
|
1354
|
+
// Credential vault for storing setters and subscribers for OAuth info
|
|
1355
|
+
// This module is a SINGLETON and must be excluded from ESM bundling
|
|
1345
1356
|
let authInfo;
|
|
1357
|
+
// Get and set the OAuth info
|
|
1346
1358
|
function getAuthInfo() {
|
|
1347
1359
|
return authInfo;
|
|
1348
1360
|
}
|
|
@@ -1351,11 +1363,11 @@ LWR.define("lwr/vault/v/0_9_0-alpha_9", ["exports"], function (exports) {
|
|
|
1351
1363
|
}
|
|
1352
1364
|
exports.getAuthInfo = getAuthInfo;
|
|
1353
1365
|
exports.setAuthInfo = setAuthInfo;
|
|
1354
|
-
Object.defineProperty(exports,
|
|
1366
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1355
1367
|
});
|
|
1356
1368
|
// Set up the AMD loader hooks for OAuth
|
|
1357
1369
|
const { initAmd, authenticate } = await loader.load(bootstrapModule);
|
|
1358
|
-
initAmd(loader.services, endpoints?.uris.mapping, '0_9_0
|
|
1370
|
+
initAmd(loader.services, endpoints?.uris.mapping, '0_9_0');
|
|
1359
1371
|
// Wrap the createComponent API to allow proper ordering of module definitions:
|
|
1360
1372
|
// 1. LWRE module bundle (this): lwr/loader, lwr/everywhereAmd, lwr/vault
|
|
1361
1373
|
// 2. lwr/everywhere (deps: lwc, synthetic shadow, lwr/host, etc)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function getConfiguration(e){const{format:t,server:r,apiVersion:o,apiPrefix:n,locale:i,bundle:s,debug:a}=e,l=new URL(import.meta.url),d=r||l.origin||"",c=`${n}/${o}`,u="0"+(i?`/l/${i}`:""),p="/bi/3_A,B,O,S,EG,JLMT,C,D,F,H,I,K,N,P,Q,R",h=s?`${d}${c}/bundle/${t}/${u}${p}-0/module/mi/`:`${d}${c}/module/${t}/${u}/mi/`,f=`lwr/everywhere${"esm"===t?"Esm":"Amd"}/v/0_9_0-alpha_9`,g=`${h}${encodeURIComponent(f)}/latest${a?"?debug":""}`,m={appId:"lwre",autoBoot:!0,bootstrapModule:f,baseUrl:d,imports:{[g]:[f]},index:{[f]:g},endpoints:{uris:{module:h,mapping:`${d}${c}/mapping/${t}/${u}${s?p:""}/mp/`}}};return a&&m.endpoints&&(m.endpoints.modifiers={debug:"true"}),m}globalThis.process={env:{NODE_ENV:"production"}};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 n=o.slice(0,o.lastIndexOf("/")+1)+e,i=[];let s=-1;for(let e=0;e<n.length;e++)-1!==s?"/"===n[e]&&(i.push(n.slice(s,e+1)),s=-1):"."===n[e]?"."!==n[e+1]||"/"!==n[e+2]&&e+2!==n.length?"/"===n[e+1]||e+1===n.length?e+=1:s=e:(i.pop(),e+=2):s=e;return-1!==s&&i.push(n.slice(s)),t.slice(0,t.length-o.length)+i.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,n]of Object.entries(e.imports))n.forEach((e=>{const n=r[e],i=this.importURICache.get(e);if(i){const t=n||o,r=i.identity||i.uri;r!==t&&this.invalidationCallback({name:e,oldUrl:r,newUrl:t})}else this.saveImportURIRecord(e,o,n,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 n=t[o],i=await n(e,{knownModules:r});if(i||void 0===i)return i}}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:n}=t;for(let t=0;t<e.length;t++){const i=e[t];try{if(null!==i({name:r,oldUrl:o,newUrl:n}))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 n=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(n)}))})):t}hasDocument&&globalThis.addEventListener("error",(e=>{lastWindowError=e.error})),"production"!==process.env.NODE_ENV&&!hasSetTimeout&&hasConsole&&console.warn("setTimeout API is not available, watchdog timer on load hook will not be set");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,n=e;const i=this.resolveHook;if(i){for(let e=0;e<i.length;e++){const t=(0,i[e])(n,{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);n=s;continue}if(o=s&&s.url&&(resolveIfNotPlainOrUrl(s.url,r)||s.url),!o)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);break}}if(n!==e){if(!o&&this.namedDefineRegistry.has(n))return n;e=n}}if(!o){const t=resolveIfNotPlainOrUrl(e,r)||e;if(this.moduleRegistry.has(t))return t;const n=this.resolver.resolveLocal(t);if(n){if(this.namedDefineRegistry.has(t)&&this.namedDefineRegistry.get(t).defined){if(!this.moduleRegistry.get(n)||!this.aliases.has(t))return t}return n}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"production"!==process.env.NODE_ENV&&hasConsole&&console.warn(`Module redefine attempted: ${e}`),void(this.lastDefine=o);const n={name:e,dependencies:t,exporter:r,defined:!0};o&&o.external&&o.external.resolveExternal(n),this.profiler.logOperationStart({id:MODULE_DEFINE,specifier:e}),this.namedDefineRegistry.set(e,n),this.lastDefine=n}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,n)=>{t=o,r=setTimeout((()=>{n(new LoaderError(MODULE_LOAD_TIMEOUT,[e]))}),MODULE_LOAD_TIMEOUT_TIMER)})).finally((()=>{clearTimeout(r)})),n={name:e,defined:!1,external:{resolveExternal:t,moduleDefPromise:o}};this.namedDefineRegistry.set(e,n)}})),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),n=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)})),i={id:e,module:Object.create(null),dependencyRecords:n,instantiation:o,evaluated:!1,evaluationPromise:null};return this.moduleRegistry.set(e,i),this.storeModuleAlias(t,e),i}storeModuleAlias(e,t){if(e!==t)if(this.aliases.has(e)){if("production"!==process.env.NODE_ENV&&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:n}=await e.instantiation,i={},s=await Promise.all(n.map((async e=>{if("exports"===e)return i;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(i)&&Object.defineProperty(i,"__useDefault",{value:!0});const l=a||i;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 n=this.resolver.getBaseUrl(),i=r||t;return this.profiler.logOperationStart({id:MODULE_FETCH,specifier:i}),Promise.resolve().then((async()=>{const t=this.loadHook;if(t)for(let r=0;r<t.length;r++){const o=(0,t[r])(e,n),i=isResponseAPromise(o)?await evaluateLoadHook(e,o):o;if(void 0===i)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);if(i&&null!==i)return evaluateLoadHookResponse(i,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:i}),o})).catch((e=>{throw this.profiler.logOperationStart({id:MODULE_ERROR,specifier:i}),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}):"production"!==process.env.NODE_ENV&&hasConsole&&console.warn(`stale module detected ${e}, current URL:${t}, new URL:${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,n=t;"function"==typeof n&&(o=t,n=[]),invariant(Array.isArray(n),INVALID_DEPS),this.registry.define(e,n,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)}}const configOptions={format:"amd",apiVersion:"1",apiPrefix:"",bundle:!0,debug:!1},configuration=getConfiguration(configOptions),{bootstrapModule:bootstrapModule,endpoints:endpoints,baseUrl:baseUrl,imports:imports,index:index}=configuration,loader=new Loader({endpoints:endpoints,baseUrl:baseUrl});loader.define("lwr/loader/v/0_9_0-alpha_9",["exports"],(e=>{Object.assign(e,{define:loader.define.bind(loader),load:loader.load.bind(loader)})})),await loader.registerImportMappings({imports:imports,index:index},[bootstrapModule]),globalThis.LWR=Object.freeze({define:loader.define.bind(loader)}),LWR.define("lwr/everywhereAmd/v/0_9_0-alpha_9",["exports","lwr/vault/v/0_9_0-alpha_9"],(function(e,t){async function r(e,r="javascript"){const o=t.getAuthInfo();return o?fetch(e,{headers:{Accept:`application/${r}`,Authorization:`Bearer ${o.access_token}`}}):null}e.authenticate=function(e){e&&t.setAuthInfo(e)},e.initAmd=function(e,t,o){t.match(/\/v5\d\.0\//)&&function(e,t,o){e.addLoaderPlugin({loadModule:async e=>r(e),loadMapping:async e=>{const o=await r(`${t}${encodeURIComponent(e)}`,"json");return o&&o.ok?o.json():null},resolveModule:e=>e&&!/\/v\/[^/]+?$/.test(e)?`${e}/v/${o}`:null})}(e,t,o)},Object.defineProperty(e,"__esModule",{value:!0})})),LWR.define("lwr/vault/v/0_9_0-alpha_9",["exports"],(function(e){let t;e.getAuthInfo=function(){return t},e.setAuthInfo=function(e){t=e},Object.defineProperty(e,"__esModule",{value:!0})}));const{initAmd:initAmd,authenticate:authenticate}=await loader.load(bootstrapModule);async function createComponent(e,t,r={},o){const{createComponent:n}=await loader.load(bootstrapModule.replace("Amd",""));return n(e,t,r,o)}initAmd(loader.services,endpoints?.uris.mapping,"0_9_0-alpha_9");export{authenticate,createComponent};
|
|
1
|
+
function getConfiguration(e){const{format:t,server:r,apiVersion:o,apiPrefix:n,locale:i,bundle:s,debug:a}=e,l=new URL(import.meta.url),d=r||l.origin||"",c=`${n}/${o}`,u="0"+(i?`/l/${i}`:""),p="/bi/3_A,B,O,S,EG,JLMT,C,D,F,H,I,K,N,P,Q,R",f=s?`${d}${c}/bundle/${t}/${u}${p}-0/module/mi/`:`${d}${c}/module/${t}/${u}/mi/`,h=`lwr/everywhere${"esm"===t?"Esm":"Amd"}/v/0_9_0`,g=`${f}${encodeURIComponent(h)}/latest${a?"?debug":""}`,m={appId:"lwre",autoBoot:!0,bootstrapModule:h,baseUrl:d,imports:{[g]:[h]},index:{[h]:g},endpoints:{uris:{module:f,mapping:`${d}${c}/mapping/${t}/${u}${s?p:""}/mp/`}}};return a&&m.endpoints&&(m.endpoints.modifiers={debug:"true"}),m}globalThis.process={env:{NODE_ENV:"production"}};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:"}),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 n=o.slice(0,o.lastIndexOf("/")+1)+e,i=[];let s=-1;for(let e=0;e<n.length;e++)-1!==s?"/"===n[e]&&(i.push(n.slice(s,e+1)),s=-1):"."===n[e]?"."!==n[e+1]||"/"!==n[e+2]&&e+2!==n.length?"/"===n[e+1]||e+1===n.length?e+=1:s=e:(i.pop(),e+=2):s=e;return-1!==s&&i.push(n.slice(s)),t.slice(0,t.length-o.length)+i.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,n]of Object.entries(e.imports))n.forEach((e=>{const n=r[e],i=this.importURICache.get(e);if(i){const t=n||o,r=i.identity||i.uri;r!==t&&this.invalidationCallback({name:e,oldUrl:r,newUrl:t})}else this.saveImportURIRecord(e,o,n,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 n=t[o],i=await n(e,{knownModules:r});if(i||void 0===i)return i}}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:n}=t;for(let t=0;t<e.length;t++){const i=e[t];try{if(null!==i({name:r,oldUrl:o,newUrl:n}))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 n=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(n)}))})):t}hasDocument&&globalThis.addEventListener("error",(e=>{lastWindowError=e.error})),"production"!==process.env.NODE_ENV&&!hasSetTimeout&&hasConsole&&console.warn("setTimeout API is not available, watchdog timer on load hook will not be set");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,n=e;const i=this.resolveHook;if(i){for(let e=0;e<i.length;e++){const t=(0,i[e])(n,{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);n=s;continue}if(o=s&&s.url&&(resolveIfNotPlainOrUrl(s.url,r)||s.url),!o)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);break}}if(n!==e){if(!o&&this.namedDefineRegistry.has(n))return n;e=n}}if(!o){const t=resolveIfNotPlainOrUrl(e,r)||e;if(this.moduleRegistry.has(t))return t;const n=this.resolver.resolveLocal(t);if(n){if(this.namedDefineRegistry.has(t)&&this.namedDefineRegistry.get(t).defined){if(!this.moduleRegistry.get(n)||!this.aliases.has(t))return t}return n}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"production"!==process.env.NODE_ENV&&hasConsole&&console.warn(`Module redefine attempted: ${e}`),void(this.lastDefine=o);const n={name:e,dependencies:t,exporter:r,defined:!0};o&&o.external&&o.external.resolveExternal(n),this.profiler.logOperationStart({id:MODULE_DEFINE,specifier:e}),this.namedDefineRegistry.set(e,n),this.lastDefine=n}registerExternalModules(e){e.map((e=>{if(this.namedDefineRegistry.has(e))"production"!==process.env.NODE_ENV&&hasConsole&&console.warn(MODULE_ALREADY_LOADED.message,e);else{let t,r;const o=new Promise(((o,n)=>{t=o,r=setTimeout((()=>{n(new LoaderError(MODULE_LOAD_TIMEOUT,[e]))}),MODULE_LOAD_TIMEOUT_TIMER)})).finally((()=>{clearTimeout(r)})),n={name:e,defined:!1,external:{resolveExternal:t,moduleDefPromise:o}};this.namedDefineRegistry.set(e,n)}}))}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),n=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)})),i={id:e,module:Object.create(null),dependencyRecords:n,instantiation:o,evaluated:!1,evaluationPromise:null};return this.moduleRegistry.set(e,i),this.storeModuleAlias(t,e),i}storeModuleAlias(e,t){if(e!==t)if(this.aliases.has(e)){if("production"!==process.env.NODE_ENV&&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:n}=await e.instantiation,i={},s=await Promise.all(n.map((async e=>{if("exports"===e)return i;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(i)&&Object.defineProperty(i,"__useDefault",{value:!0});const l=a||i;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 n=this.resolver.getBaseUrl(),i=r||t;return this.profiler.logOperationStart({id:MODULE_FETCH,specifier:i}),Promise.resolve().then((async()=>{const t=this.loadHook;if(t)for(let r=0;r<t.length;r++){const o=(0,t[r])(e,n),i=isResponseAPromise(o)?await evaluateLoadHook(e,o):o;if(void 0===i)throw new LoaderError(INVALID_LOADER_SERVICE_RESPONSE);if(i&&null!==i)return evaluateLoadHookResponse(i,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:i}),o})).catch((e=>{throw this.profiler.logOperationStart({id:MODULE_ERROR,specifier:i}),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}):"production"!==process.env.NODE_ENV&&hasConsole&&console.warn(`stale module detected ${e}, current URL:${t}, new URL:${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,n=t;"function"==typeof n&&(o=t,n=[]),invariant(Array.isArray(n),INVALID_DEPS),this.registry.define(e,n,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)}}const configOptions={format:"amd",apiVersion:"1",apiPrefix:"",bundle:!0,debug:!1},configuration=getConfiguration(configOptions),{bootstrapModule:bootstrapModule,endpoints:endpoints,baseUrl:baseUrl,imports:imports,index:index}=configuration,loader=new Loader({endpoints:endpoints,baseUrl:baseUrl});loader.define("lwr/loader/v/0_9_0",["exports"],(e=>{Object.assign(e,{define:loader.define.bind(loader),load:loader.load.bind(loader)})})),await loader.registerImportMappings({imports:imports,index:index},[bootstrapModule]),globalThis.LWR=Object.freeze({define:loader.define.bind(loader)}),LWR.define("lwr/everywhereAmd/v/0_9_0",["exports","lwr/vault/v/0_9_0"],(function(e,t){async function r(e,r="javascript"){const o=t.getAuthInfo();return o?fetch(e,{headers:{Accept:`application/${r}`,Authorization:`Bearer ${o.access_token}`}}):null}e.authenticate=function(e){e&&t.setAuthInfo(e)},e.initAmd=function(e,t,o){t.match(/\/v5\d\.0\//)&&function(e,t,o){e.addLoaderPlugin({loadModule:async e=>r(e),loadMapping:async e=>{const o=await r(`${t}${encodeURIComponent(e)}`,"json");return o&&o.ok?o.json():null},resolveModule:e=>e&&!/\/v\/[^/]+?$/.test(e)?`${e}/v/${o}`:null})}(e,t,o)},Object.defineProperty(e,"__esModule",{value:!0})})),LWR.define("lwr/vault/v/0_9_0",["exports"],(function(e){let t;e.getAuthInfo=function(){return t},e.setAuthInfo=function(e){t=e},Object.defineProperty(e,"__esModule",{value:!0})}));const{initAmd:initAmd,authenticate:authenticate}=await loader.load(bootstrapModule);async function createComponent(e,t,r={},o){const{createComponent:n}=await loader.load(bootstrapModule.replace("Amd",""));return n(e,t,r,o)}initAmd(loader.services,endpoints?.uris.mapping,"0_9_0");export{authenticate,createComponent};
|
|
@@ -18,7 +18,7 @@ function getConfiguration(options) {
|
|
|
18
18
|
? `${ORIGIN}${PREFIX}/bundle/${format}/${POSTFIX}${BUNDLE_ID}-0/module/mi/`
|
|
19
19
|
: `${ORIGIN}${PREFIX}/module/${format}/${POSTFIX}/mi/`;
|
|
20
20
|
// Component specifiers and URIs
|
|
21
|
-
const BOOT_MODULE = `lwr/everywhere${format === 'esm' ? 'Esm' : 'Amd'}/v/0_9_0
|
|
21
|
+
const BOOT_MODULE = `lwr/everywhere${format === 'esm' ? 'Esm' : 'Amd'}/v/0_9_0`;
|
|
22
22
|
const BOOT_URI = `${ENDPOINT}${encodeURIComponent(BOOT_MODULE)}/latest${debug ? '?debug' : ''}`;
|
|
23
23
|
// Client Bootstrap Config
|
|
24
24
|
const config = {
|
|
@@ -48,7 +48,7 @@ function getConfiguration(options) {
|
|
|
48
48
|
* SPDX-License-Identifier: MIT
|
|
49
49
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
50
50
|
*/
|
|
51
|
-
/* LWR Module Loader v0.9.0
|
|
51
|
+
/* LWR Module Loader v0.9.0 */
|
|
52
52
|
const templateRegex = /\{([0-9]+)\}/g;
|
|
53
53
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
54
|
function templateString(template, args) {
|
|
@@ -146,7 +146,7 @@ const STALE_HOOK_ERROR = Object.freeze({
|
|
|
146
146
|
const MODULE_ALREADY_LOADED = Object.freeze({
|
|
147
147
|
code: 3017,
|
|
148
148
|
level: 0,
|
|
149
|
-
message: 'Marking module(s) as externally loaded, but they are already loaded:
|
|
149
|
+
message: 'Marking module(s) as externally loaded, but they are already loaded:',
|
|
150
150
|
});
|
|
151
151
|
const FAIL_HOOK_LOAD = Object.freeze({
|
|
152
152
|
code: 3018,
|
|
@@ -345,11 +345,13 @@ if (hasDocument) {
|
|
|
345
345
|
|
|
346
346
|
// Bootstrap / shim
|
|
347
347
|
|
|
348
|
+
// Loader: modules
|
|
348
349
|
const LOADER_PREFIX = 'lwr.loader.';
|
|
349
350
|
const MODULE_DEFINE = `${LOADER_PREFIX}module.define`;
|
|
350
351
|
const MODULE_FETCH = `${LOADER_PREFIX}module.fetch`;
|
|
351
352
|
const MODULE_ERROR = `${LOADER_PREFIX}module.error`;
|
|
352
353
|
|
|
354
|
+
// Loader: mappings
|
|
353
355
|
const MAPPINGS_FETCH = `${LOADER_PREFIX}mappings.fetch`;
|
|
354
356
|
const MAPPINGS_ERROR = `${LOADER_PREFIX}mappings.error`;
|
|
355
357
|
|
|
@@ -810,12 +812,8 @@ class ModuleRegistry {
|
|
|
810
812
|
* @param modules - list of module identifiers
|
|
811
813
|
*/
|
|
812
814
|
registerExternalModules(modules) {
|
|
813
|
-
const alreadyRegistered = [];
|
|
814
815
|
modules.map((id) => {
|
|
815
|
-
if (this.namedDefineRegistry.has(id)) {
|
|
816
|
-
alreadyRegistered.push(id);
|
|
817
|
-
}
|
|
818
|
-
else {
|
|
816
|
+
if (!this.namedDefineRegistry.has(id)) {
|
|
819
817
|
let resolveExternal;
|
|
820
818
|
let timer;
|
|
821
819
|
const moduleDefPromise = new Promise((resolve, reject) => {
|
|
@@ -839,11 +837,11 @@ class ModuleRegistry {
|
|
|
839
837
|
};
|
|
840
838
|
this.namedDefineRegistry.set(id, moduleDef);
|
|
841
839
|
}
|
|
840
|
+
else if (process.env.NODE_ENV !== 'production' && hasConsole) {
|
|
841
|
+
// eslint-disable-next-line lwr/no-unguarded-apis
|
|
842
|
+
console.warn(MODULE_ALREADY_LOADED.message, id);
|
|
843
|
+
}
|
|
842
844
|
});
|
|
843
|
-
// throw error for modules that were already registered
|
|
844
|
-
if (alreadyRegistered.length) {
|
|
845
|
-
throw new LoaderError(MODULE_ALREADY_LOADED, [alreadyRegistered.join(', ')]);
|
|
846
|
-
}
|
|
847
845
|
}
|
|
848
846
|
getImportMetadataResolver() {
|
|
849
847
|
return this.resolver;
|
|
@@ -985,7 +983,7 @@ class ModuleRegistry {
|
|
|
985
983
|
moduleDefault = { default: moduleDefault };
|
|
986
984
|
// __defaultInterop is ONLY used to support backwards compatibility
|
|
987
985
|
// of importing default exports the "wrong" way (when not using named exports).
|
|
988
|
-
// See https://github.com/salesforce/lwr/pull/816
|
|
986
|
+
// See https://github.com/salesforce-experience-platform-emu/lwr/pull/816
|
|
989
987
|
Object.defineProperty(moduleDefault, '__defaultInterop', { value: true });
|
|
990
988
|
}
|
|
991
989
|
// if no return value, then we are using the exports object
|
|
@@ -1207,7 +1205,7 @@ class Loader {
|
|
|
1207
1205
|
const appId = match && match[1];
|
|
1208
1206
|
config.appMetadata.appId = appId;
|
|
1209
1207
|
}
|
|
1210
|
-
// TODO: https://github.com/salesforce/lwr/issues/1087
|
|
1208
|
+
// TODO: https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
1211
1209
|
this.services = Object.freeze({
|
|
1212
1210
|
addLoaderPlugin: this.registry.addLoaderPlugin.bind(this.registry),
|
|
1213
1211
|
handleStaleModule: this.registry.registerHandleStaleModuleHook.bind(this.registry),
|
|
@@ -1285,7 +1283,7 @@ const configuration = getConfiguration(configOptions);
|
|
|
1285
1283
|
const { bootstrapModule, endpoints, baseUrl, imports, index } = configuration;
|
|
1286
1284
|
// Initialize the AMD loader (its code is bundled into the LWR Everywhere module)
|
|
1287
1285
|
const loader = new Loader({ endpoints, baseUrl });
|
|
1288
|
-
loader.define('lwr/loader/v/0_9_0
|
|
1286
|
+
loader.define('lwr/loader/v/0_9_0', ['exports'], (exports) => {
|
|
1289
1287
|
Object.assign(exports, {
|
|
1290
1288
|
define: loader.define.bind(loader),
|
|
1291
1289
|
load: loader.load.bind(loader),
|
|
@@ -1294,9 +1292,11 @@ loader.define('lwr/loader/v/0_9_0-alpha_9', ['exports'], (exports) => {
|
|
|
1294
1292
|
await loader.registerImportMappings({ imports, index }, [bootstrapModule]);
|
|
1295
1293
|
globalThis.LWR = Object.freeze({ define: loader.define.bind(loader) });
|
|
1296
1294
|
// Define preload modules (ie: ABS, vault, etc) BEFORE loading them
|
|
1297
|
-
LWR.define(
|
|
1298
|
-
|
|
1299
|
-
|
|
1295
|
+
LWR.define('lwr/everywhereAmd/v/0_9_0', ['exports', 'lwr/vault/v/0_9_0'], function (exports, _0_9_0) {
|
|
1296
|
+
// IMPORTANT: Do not add any static imports to this file that are not bundled with the amd-client
|
|
1297
|
+
// Do an OAuthed fetch
|
|
1298
|
+
async function authFetch(url, accept = 'javascript') {
|
|
1299
|
+
const authInfo = _0_9_0.getAuthInfo();
|
|
1300
1300
|
if (authInfo) {
|
|
1301
1301
|
return fetch(url, {
|
|
1302
1302
|
headers: {
|
|
@@ -1305,44 +1305,56 @@ LWR.define("lwr/everywhereAmd/v/0_9_0-alpha_9", ["exports", "lwr/vault/v/0_9_0-a
|
|
|
1305
1305
|
}
|
|
1306
1306
|
});
|
|
1307
1307
|
}
|
|
1308
|
-
return null;
|
|
1308
|
+
return null; // defer to loader
|
|
1309
1309
|
}
|
|
1310
|
+
// Add a hook for adding OAuth headers to module and mapping requests
|
|
1311
|
+
// Workaround: core does not have proper versioning; replace all versions with 0_0_1
|
|
1310
1312
|
function everywhereHooks(serviceAPI, mappingEndpoint, coreVersion) {
|
|
1311
1313
|
serviceAPI.addLoaderPlugin({
|
|
1312
1314
|
loadModule: async (url) => {
|
|
1313
1315
|
return authFetch(url);
|
|
1314
1316
|
},
|
|
1315
1317
|
loadMapping: async (specifier) => {
|
|
1316
|
-
const res = await authFetch(`${mappingEndpoint}${encodeURIComponent(specifier)}`,
|
|
1318
|
+
const res = await authFetch(`${mappingEndpoint}${encodeURIComponent(specifier)}`, 'json');
|
|
1317
1319
|
if (res && res.ok) {
|
|
1318
1320
|
return res.json();
|
|
1319
1321
|
}
|
|
1320
1322
|
return null;
|
|
1321
1323
|
},
|
|
1322
|
-
resolveModule:
|
|
1324
|
+
resolveModule: specifier => {
|
|
1325
|
+
// Workaround W-8010259 (dynamic imports without versions)
|
|
1326
|
+
// by adding a default version to version-less specifiers
|
|
1323
1327
|
if (specifier && !/\/v\/[^/]+?$/.test(specifier)) {
|
|
1324
1328
|
return `${specifier}/v/${coreVersion}`;
|
|
1325
1329
|
}
|
|
1326
|
-
return null;
|
|
1330
|
+
return null; // defer to loader
|
|
1327
1331
|
}
|
|
1328
1332
|
});
|
|
1329
1333
|
}
|
|
1330
1334
|
function initAmd(services, mappingEndpoint, coreVersion) {
|
|
1335
|
+
// Initialize the loader hooks for LWR-S endpoints
|
|
1331
1336
|
if (mappingEndpoint.match(/\/v5\d\.0\//)) {
|
|
1332
1337
|
everywhereHooks(services, mappingEndpoint, coreVersion);
|
|
1333
1338
|
}
|
|
1334
1339
|
}
|
|
1340
|
+
// Export the LWRE authenticate() API
|
|
1341
|
+
// This is a duplicate of the function exported from "lwr/everywhere"
|
|
1342
|
+
// because it MUST be bundled into the LWRE module via "lwr/everywhereAmd"
|
|
1335
1343
|
function authenticate(authInfo) {
|
|
1344
|
+
// Put OAuth info into the vault
|
|
1336
1345
|
if (authInfo) {
|
|
1337
|
-
|
|
1346
|
+
_0_9_0.setAuthInfo(authInfo);
|
|
1338
1347
|
}
|
|
1339
1348
|
}
|
|
1340
1349
|
exports.authenticate = authenticate;
|
|
1341
1350
|
exports.initAmd = initAmd;
|
|
1342
|
-
Object.defineProperty(exports,
|
|
1351
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1343
1352
|
});
|
|
1344
|
-
LWR.define(
|
|
1353
|
+
LWR.define('lwr/vault/v/0_9_0', ['exports'], function (exports) {
|
|
1354
|
+
// Credential vault for storing setters and subscribers for OAuth info
|
|
1355
|
+
// This module is a SINGLETON and must be excluded from ESM bundling
|
|
1345
1356
|
let authInfo;
|
|
1357
|
+
// Get and set the OAuth info
|
|
1346
1358
|
function getAuthInfo() {
|
|
1347
1359
|
return authInfo;
|
|
1348
1360
|
}
|
|
@@ -1351,11 +1363,11 @@ LWR.define("lwr/vault/v/0_9_0-alpha_9", ["exports"], function (exports) {
|
|
|
1351
1363
|
}
|
|
1352
1364
|
exports.getAuthInfo = getAuthInfo;
|
|
1353
1365
|
exports.setAuthInfo = setAuthInfo;
|
|
1354
|
-
Object.defineProperty(exports,
|
|
1366
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1355
1367
|
});
|
|
1356
1368
|
// Set up the AMD loader hooks for OAuth
|
|
1357
1369
|
const { initAmd, authenticate } = await loader.load(bootstrapModule);
|
|
1358
|
-
initAmd(loader.services, endpoints?.uris.mapping, '0_9_0
|
|
1370
|
+
initAmd(loader.services, endpoints?.uris.mapping, '0_9_0');
|
|
1359
1371
|
// Wrap the createComponent API to allow proper ordering of module definitions:
|
|
1360
1372
|
// 1. LWRE module bundle (this): lwr/loader, lwr/everywhereAmd, lwr/vault
|
|
1361
1373
|
// 2. lwr/everywhere (deps: lwc, synthetic shadow, lwr/host, etc)
|
|
@@ -48,7 +48,7 @@ function getConfiguration(options) {
|
|
|
48
48
|
* SPDX-License-Identifier: MIT
|
|
49
49
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
50
50
|
*/
|
|
51
|
-
/* LWR Module Loader v0.9.0
|
|
51
|
+
/* LWR Module Loader v0.9.0 */
|
|
52
52
|
const templateRegex = /\{([0-9]+)\}/g;
|
|
53
53
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
54
|
function templateString(template, args) {
|
|
@@ -146,7 +146,7 @@ const STALE_HOOK_ERROR = Object.freeze({
|
|
|
146
146
|
const MODULE_ALREADY_LOADED = Object.freeze({
|
|
147
147
|
code: 3017,
|
|
148
148
|
level: 0,
|
|
149
|
-
message: 'Marking module(s) as externally loaded, but they are already loaded:
|
|
149
|
+
message: 'Marking module(s) as externally loaded, but they are already loaded:',
|
|
150
150
|
});
|
|
151
151
|
const FAIL_HOOK_LOAD = Object.freeze({
|
|
152
152
|
code: 3018,
|
|
@@ -345,11 +345,13 @@ if (hasDocument) {
|
|
|
345
345
|
|
|
346
346
|
// Bootstrap / shim
|
|
347
347
|
|
|
348
|
+
// Loader: modules
|
|
348
349
|
const LOADER_PREFIX = 'lwr.loader.';
|
|
349
350
|
const MODULE_DEFINE = `${LOADER_PREFIX}module.define`;
|
|
350
351
|
const MODULE_FETCH = `${LOADER_PREFIX}module.fetch`;
|
|
351
352
|
const MODULE_ERROR = `${LOADER_PREFIX}module.error`;
|
|
352
353
|
|
|
354
|
+
// Loader: mappings
|
|
353
355
|
const MAPPINGS_FETCH = `${LOADER_PREFIX}mappings.fetch`;
|
|
354
356
|
const MAPPINGS_ERROR = `${LOADER_PREFIX}mappings.error`;
|
|
355
357
|
|
|
@@ -810,12 +812,8 @@ class ModuleRegistry {
|
|
|
810
812
|
* @param modules - list of module identifiers
|
|
811
813
|
*/
|
|
812
814
|
registerExternalModules(modules) {
|
|
813
|
-
const alreadyRegistered = [];
|
|
814
815
|
modules.map((id) => {
|
|
815
|
-
if (this.namedDefineRegistry.has(id)) {
|
|
816
|
-
alreadyRegistered.push(id);
|
|
817
|
-
}
|
|
818
|
-
else {
|
|
816
|
+
if (!this.namedDefineRegistry.has(id)) {
|
|
819
817
|
let resolveExternal;
|
|
820
818
|
let timer;
|
|
821
819
|
const moduleDefPromise = new Promise((resolve, reject) => {
|
|
@@ -839,11 +837,11 @@ class ModuleRegistry {
|
|
|
839
837
|
};
|
|
840
838
|
this.namedDefineRegistry.set(id, moduleDef);
|
|
841
839
|
}
|
|
840
|
+
else if (process.env.NODE_ENV !== 'production' && hasConsole) {
|
|
841
|
+
// eslint-disable-next-line lwr/no-unguarded-apis
|
|
842
|
+
console.warn(MODULE_ALREADY_LOADED.message, id);
|
|
843
|
+
}
|
|
842
844
|
});
|
|
843
|
-
// throw error for modules that were already registered
|
|
844
|
-
if (alreadyRegistered.length) {
|
|
845
|
-
throw new LoaderError(MODULE_ALREADY_LOADED, [alreadyRegistered.join(', ')]);
|
|
846
|
-
}
|
|
847
845
|
}
|
|
848
846
|
getImportMetadataResolver() {
|
|
849
847
|
return this.resolver;
|
|
@@ -985,7 +983,7 @@ class ModuleRegistry {
|
|
|
985
983
|
moduleDefault = { default: moduleDefault };
|
|
986
984
|
// __defaultInterop is ONLY used to support backwards compatibility
|
|
987
985
|
// of importing default exports the "wrong" way (when not using named exports).
|
|
988
|
-
// See https://github.com/salesforce/lwr/pull/816
|
|
986
|
+
// See https://github.com/salesforce-experience-platform-emu/lwr/pull/816
|
|
989
987
|
Object.defineProperty(moduleDefault, '__defaultInterop', { value: true });
|
|
990
988
|
}
|
|
991
989
|
// if no return value, then we are using the exports object
|
|
@@ -1207,7 +1205,7 @@ class Loader {
|
|
|
1207
1205
|
const appId = match && match[1];
|
|
1208
1206
|
config.appMetadata.appId = appId;
|
|
1209
1207
|
}
|
|
1210
|
-
// TODO: https://github.com/salesforce/lwr/issues/1087
|
|
1208
|
+
// TODO: https://github.com/salesforce-experience-platform-emu/lwr/issues/1087
|
|
1211
1209
|
this.services = Object.freeze({
|
|
1212
1210
|
addLoaderPlugin: this.registry.addLoaderPlugin.bind(this.registry),
|
|
1213
1211
|
handleStaleModule: this.registry.registerHandleStaleModuleHook.bind(this.registry),
|
|
@@ -1294,9 +1292,11 @@ loader.define('lwr/loader/v/0_0_1', ['exports'], (exports) => {
|
|
|
1294
1292
|
await loader.registerImportMappings({ imports, index }, [bootstrapModule]);
|
|
1295
1293
|
globalThis.LWR = Object.freeze({ define: loader.define.bind(loader) });
|
|
1296
1294
|
// Define preload modules (ie: ABS, vault, etc) BEFORE loading them
|
|
1297
|
-
LWR.define(
|
|
1298
|
-
|
|
1299
|
-
|
|
1295
|
+
LWR.define('lwr/everywhereAmd/v/0_0_1', ['exports', 'lwr/vault/v/0_0_1'], function (exports, _0_9_0) {
|
|
1296
|
+
// IMPORTANT: Do not add any static imports to this file that are not bundled with the amd-client
|
|
1297
|
+
// Do an OAuthed fetch
|
|
1298
|
+
async function authFetch(url, accept = 'javascript') {
|
|
1299
|
+
const authInfo = _0_9_0.getAuthInfo();
|
|
1300
1300
|
if (authInfo) {
|
|
1301
1301
|
return fetch(url, {
|
|
1302
1302
|
headers: {
|
|
@@ -1305,44 +1305,56 @@ LWR.define("lwr/everywhereAmd/v/0_0_1", ["exports", "lwr/vault/v/0_0_1"], functi
|
|
|
1305
1305
|
}
|
|
1306
1306
|
});
|
|
1307
1307
|
}
|
|
1308
|
-
return null;
|
|
1308
|
+
return null; // defer to loader
|
|
1309
1309
|
}
|
|
1310
|
+
// Add a hook for adding OAuth headers to module and mapping requests
|
|
1311
|
+
// Workaround: core does not have proper versioning; replace all versions with 0_0_1
|
|
1310
1312
|
function everywhereHooks(serviceAPI, mappingEndpoint, coreVersion) {
|
|
1311
1313
|
serviceAPI.addLoaderPlugin({
|
|
1312
1314
|
loadModule: async (url) => {
|
|
1313
1315
|
return authFetch(url);
|
|
1314
1316
|
},
|
|
1315
1317
|
loadMapping: async (specifier) => {
|
|
1316
|
-
const res = await authFetch(`${mappingEndpoint}${encodeURIComponent(specifier)}`,
|
|
1318
|
+
const res = await authFetch(`${mappingEndpoint}${encodeURIComponent(specifier)}`, 'json');
|
|
1317
1319
|
if (res && res.ok) {
|
|
1318
1320
|
return res.json();
|
|
1319
1321
|
}
|
|
1320
1322
|
return null;
|
|
1321
1323
|
},
|
|
1322
|
-
resolveModule:
|
|
1324
|
+
resolveModule: specifier => {
|
|
1325
|
+
// Workaround W-8010259 (dynamic imports without versions)
|
|
1326
|
+
// by adding a default version to version-less specifiers
|
|
1323
1327
|
if (specifier && !/\/v\/[^/]+?$/.test(specifier)) {
|
|
1324
1328
|
return `${specifier}/v/${coreVersion}`;
|
|
1325
1329
|
}
|
|
1326
|
-
return null;
|
|
1330
|
+
return null; // defer to loader
|
|
1327
1331
|
}
|
|
1328
1332
|
});
|
|
1329
1333
|
}
|
|
1330
1334
|
function initAmd(services, mappingEndpoint, coreVersion) {
|
|
1335
|
+
// Initialize the loader hooks for LWR-S endpoints
|
|
1331
1336
|
if (mappingEndpoint.match(/\/v5\d\.0\//)) {
|
|
1332
1337
|
everywhereHooks(services, mappingEndpoint, coreVersion);
|
|
1333
1338
|
}
|
|
1334
1339
|
}
|
|
1340
|
+
// Export the LWRE authenticate() API
|
|
1341
|
+
// This is a duplicate of the function exported from "lwr/everywhere"
|
|
1342
|
+
// because it MUST be bundled into the LWRE module via "lwr/everywhereAmd"
|
|
1335
1343
|
function authenticate(authInfo) {
|
|
1344
|
+
// Put OAuth info into the vault
|
|
1336
1345
|
if (authInfo) {
|
|
1337
|
-
|
|
1346
|
+
_0_9_0.setAuthInfo(authInfo);
|
|
1338
1347
|
}
|
|
1339
1348
|
}
|
|
1340
1349
|
exports.authenticate = authenticate;
|
|
1341
1350
|
exports.initAmd = initAmd;
|
|
1342
|
-
Object.defineProperty(exports,
|
|
1351
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1343
1352
|
});
|
|
1344
|
-
LWR.define(
|
|
1353
|
+
LWR.define('lwr/vault/v/0_0_1', ['exports'], function (exports) {
|
|
1354
|
+
// Credential vault for storing setters and subscribers for OAuth info
|
|
1355
|
+
// This module is a SINGLETON and must be excluded from ESM bundling
|
|
1345
1356
|
let authInfo;
|
|
1357
|
+
// Get and set the OAuth info
|
|
1346
1358
|
function getAuthInfo() {
|
|
1347
1359
|
return authInfo;
|
|
1348
1360
|
}
|
|
@@ -1351,7 +1363,7 @@ LWR.define("lwr/vault/v/0_0_1", ["exports"], function (exports) {
|
|
|
1351
1363
|
}
|
|
1352
1364
|
exports.getAuthInfo = getAuthInfo;
|
|
1353
1365
|
exports.setAuthInfo = setAuthInfo;
|
|
1354
|
-
Object.defineProperty(exports,
|
|
1366
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1355
1367
|
});
|
|
1356
1368
|
// Set up the AMD loader hooks for OAuth
|
|
1357
1369
|
const { initAmd, authenticate } = await loader.load(bootstrapModule);
|