@lwrjs/loader 0.24.2 → 0.24.4
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 -10
- package/build/assets/prod/lwr-loader-shim-legacy.bundle.min.js +3 -3
- package/build/assets/prod/lwr-loader-shim-legacy.js +5 -5
- package/build/assets/prod/lwr-loader-shim.bundle.js +23 -10
- package/build/assets/prod/lwr-loader-shim.bundle.min.js +3 -3
- package/build/assets/prod/lwr-loader-shim.js +5 -5
- package/build/cjs/index.cjs +51 -36
- package/build/cjs/modules/lwr/esmLoader/esmLoader.cjs +31 -22
- package/build/cjs/modules/lwr/esmLoader/importResolver.cjs +24 -9
- package/build/cjs/modules/lwr/esmLoader/importResolverLegacy.cjs +24 -7
- package/build/cjs/modules/lwr/loader/constants/constants.cjs +19 -7
- package/build/cjs/modules/lwr/loader/errors/messages.cjs +14 -18
- package/build/cjs/modules/lwr/loader/errors/reportError.cjs +15 -20
- package/build/cjs/modules/lwr/loader/errors/utils.cjs +16 -4
- package/build/cjs/modules/lwr/loader/hooks/moduleInvalidation.cjs +17 -21
- package/build/cjs/modules/lwr/loader/hooks/resolveAndLoadHook.cjs +37 -37
- package/build/cjs/modules/lwr/loader/moduleRegistry/importMetadataResolver.cjs +48 -27
- package/build/cjs/modules/lwr/loader/moduleRegistry/moduleRegistry.cjs +131 -77
- package/build/cjs/modules/lwr/loader/moduleRegistry/scriptLoad.cjs +15 -19
- package/build/cjs/modules/lwr/loader/utils/dom.cjs +16 -4
- package/build/cjs/modules/lwr/loader/utils/url.cjs +20 -25
- package/build/cjs/modules/lwr/loader/utils/validation.cjs +21 -7
- package/build/cjs/modules/lwr/loader/validateLoadSpecifier.cjs +17 -5
- package/build/cjs/modules/lwr/loaderLegacy/constants/constants.cjs +19 -7
- package/build/cjs/modules/lwr/loaderLegacy/errors/messages.cjs +14 -18
- package/build/cjs/modules/lwr/loaderLegacy/errors/reportError.cjs +15 -20
- package/build/cjs/modules/lwr/loaderLegacy/errors/utils.cjs +16 -4
- package/build/cjs/modules/lwr/loaderLegacy/hooks/moduleInvalidation.cjs +17 -21
- package/build/cjs/modules/lwr/loaderLegacy/hooks/resolveAndLoadHook.cjs +37 -37
- package/build/cjs/modules/lwr/loaderLegacy/importMap/dom.cjs +24 -25
- package/build/cjs/modules/lwr/loaderLegacy/importMap/importMap.cjs +31 -25
- package/build/cjs/modules/lwr/loaderLegacy/importMap/importMapResolver.cjs +16 -19
- package/build/cjs/modules/lwr/loaderLegacy/importMap/utils.cjs +14 -18
- package/build/cjs/modules/lwr/loaderLegacy/importResolver/importResolver.cjs +14 -2
- package/build/cjs/modules/lwr/loaderLegacy/moduleRegistry/moduleRegistry.cjs +113 -77
- package/build/cjs/modules/lwr/loaderLegacy/moduleRegistry/scriptLoad.cjs +15 -19
- package/build/cjs/modules/lwr/loaderLegacy/utils/dom.cjs +16 -4
- package/build/cjs/modules/lwr/loaderLegacy/utils/url.cjs +20 -25
- package/build/cjs/modules/lwr/loaderLegacy/utils/validation.cjs +17 -19
- package/build/cjs/types.cjs +14 -2
- package/build/modules/lwr/esmLoader/esmLoader.js +1 -1
- package/build/modules/lwr/loader/hooks/resolveAndLoadHook.js +15 -3
- package/build/modules/lwr/loader/loader.js +18 -5
- package/build/modules/lwr/loaderLegacy/hooks/resolveAndLoadHook.js +15 -3
- package/build/modules/lwr/loaderLegacy/loaderLegacy.js +18 -5
- package/package.json +7 -7
|
@@ -1,48 +1,46 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
5
|
var __export = (target, all) => {
|
|
9
6
|
for (var name in all)
|
|
10
|
-
__defProp(target, name, {get: all[name], enumerable: true});
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
8
|
};
|
|
12
|
-
var
|
|
13
|
-
if (
|
|
14
|
-
for (let key of __getOwnPropNames(
|
|
15
|
-
if (!__hasOwnProp.call(
|
|
16
|
-
__defProp(
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
14
|
}
|
|
18
|
-
return
|
|
19
|
-
};
|
|
20
|
-
var __toModule = (module2) => {
|
|
21
|
-
return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
|
|
15
|
+
return to;
|
|
22
16
|
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
18
|
|
|
24
19
|
// packages/@lwrjs/loader/src/modules/lwr/loader/moduleRegistry/moduleRegistry.ts
|
|
25
|
-
|
|
26
|
-
__export(
|
|
20
|
+
var moduleRegistry_exports = {};
|
|
21
|
+
__export(moduleRegistry_exports, {
|
|
27
22
|
ModuleRegistry: () => ModuleRegistry
|
|
28
23
|
});
|
|
29
|
-
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
var
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
24
|
+
module.exports = __toCommonJS(moduleRegistry_exports);
|
|
25
|
+
var import_messages = require("../errors/messages.cjs");
|
|
26
|
+
var import_url = require("../utils/url.cjs");
|
|
27
|
+
var import_dom = require("../utils/dom.cjs");
|
|
28
|
+
var import_scriptLoad = require("./scriptLoad.cjs");
|
|
29
|
+
var import_importMetadataResolver = require("./importMetadataResolver.cjs");
|
|
30
|
+
var import_moduleInvalidation = require("../hooks/moduleInvalidation.cjs");
|
|
31
|
+
var import_resolveAndLoadHook = require("../hooks/resolveAndLoadHook.cjs");
|
|
32
|
+
var import_metrics = require("lwr/metrics");
|
|
33
|
+
var import_constants = require("../constants/constants.cjs");
|
|
38
34
|
var ModuleRegistry = class {
|
|
35
|
+
profiler;
|
|
36
|
+
warnings;
|
|
37
|
+
isAppMounted = false;
|
|
39
38
|
constructor(config) {
|
|
40
|
-
this.isAppMounted = false;
|
|
41
|
-
this.namedDefineRegistry = new Map();
|
|
42
|
-
this.moduleRegistry = new Map();
|
|
43
|
-
this.aliases = new Map();
|
|
44
39
|
this.profiler = config.profiler;
|
|
45
|
-
this.resolver = new import_importMetadataResolver.ImportMetadataResolver(
|
|
40
|
+
this.resolver = new import_importMetadataResolver.ImportMetadataResolver(
|
|
41
|
+
config,
|
|
42
|
+
this.importMetadataInvalidationCallback.bind(this)
|
|
43
|
+
);
|
|
46
44
|
this.warnings = {
|
|
47
45
|
[import_constants.MODULE_WARNING.MODULE_REDEFINE]: [],
|
|
48
46
|
[import_constants.MODULE_WARNING.MODULE_ALREADY_LOADED]: [],
|
|
@@ -50,7 +48,7 @@ var ModuleRegistry = class {
|
|
|
50
48
|
};
|
|
51
49
|
}
|
|
52
50
|
async load(id, importer) {
|
|
53
|
-
const metadata = importer ? {importer} : {};
|
|
51
|
+
const metadata = importer ? { importer } : {};
|
|
54
52
|
this.profiler.logOperationStart({
|
|
55
53
|
id: import_metrics.MODULE_DYNAMIC_LOAD,
|
|
56
54
|
specifier: id,
|
|
@@ -75,7 +73,7 @@ var ModuleRegistry = class {
|
|
|
75
73
|
if (resolveHooks) {
|
|
76
74
|
for (let i = 0; i < resolveHooks.length; i++) {
|
|
77
75
|
const resolveHook = resolveHooks[i];
|
|
78
|
-
const response = resolveHook(aliasedId, {parentUrl});
|
|
76
|
+
const response = resolveHook(aliasedId, { parentUrl });
|
|
79
77
|
let result;
|
|
80
78
|
if (response || response === null) {
|
|
81
79
|
result = (0, import_resolveAndLoadHook.isResponseAPromise)(response) ? await response : response;
|
|
@@ -114,7 +112,9 @@ var ModuleRegistry = class {
|
|
|
114
112
|
const resolvedUrl = this.resolver.resolveLocal(resolvedOrPlain);
|
|
115
113
|
if (resolvedUrl) {
|
|
116
114
|
if (this.namedDefineRegistry.has(resolvedOrPlain)) {
|
|
117
|
-
const namedDefineRecord = this.namedDefineRegistry.get(
|
|
115
|
+
const namedDefineRecord = this.namedDefineRegistry.get(
|
|
116
|
+
resolvedOrPlain
|
|
117
|
+
);
|
|
118
118
|
if (namedDefineRecord.external || namedDefineRecord.defined) {
|
|
119
119
|
const record = this.moduleRegistry.get(resolvedUrl);
|
|
120
120
|
if (!record || !this.aliases.has(resolvedOrPlain)) {
|
|
@@ -149,7 +149,12 @@ var ModuleRegistry = class {
|
|
|
149
149
|
define(name, dependencies, exporter) {
|
|
150
150
|
const mod = this.namedDefineRegistry.get(name);
|
|
151
151
|
if (mod && mod.defined) {
|
|
152
|
-
if (
|
|
152
|
+
if (
|
|
153
|
+
// note: we always expect process.env.NODE_ENV to be replaced at build time
|
|
154
|
+
// eslint-disable-next-line lwr/no-unguarded-apis
|
|
155
|
+
import_dom.hasProcessEnv && // eslint-disable-next-line lwr/no-unguarded-apis
|
|
156
|
+
process.env.MRT_HMR !== "true"
|
|
157
|
+
) {
|
|
153
158
|
if (!this.warnings[import_constants.MODULE_WARNING.MODULE_REDEFINE].includes(name)) {
|
|
154
159
|
this.warnings[import_constants.MODULE_WARNING.MODULE_REDEFINE].push(name);
|
|
155
160
|
}
|
|
@@ -169,10 +174,15 @@ var ModuleRegistry = class {
|
|
|
169
174
|
if (mod && mod.external) {
|
|
170
175
|
mod.external.resolveExternal(moduleDef);
|
|
171
176
|
}
|
|
172
|
-
this.profiler.logOperationStart({id: import_metrics.MODULE_DEFINE, specifier: name});
|
|
177
|
+
this.profiler.logOperationStart({ id: import_metrics.MODULE_DEFINE, specifier: name });
|
|
173
178
|
this.namedDefineRegistry.set(name, moduleDef);
|
|
174
179
|
this.lastDefine = moduleDef;
|
|
175
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Marks modules as "externally" loaded/provided, so that the loader does not attempt to fetch them.
|
|
183
|
+
*
|
|
184
|
+
* @param modules - list of module identifiers
|
|
185
|
+
*/
|
|
176
186
|
registerExternalModules(modules) {
|
|
177
187
|
modules.map((id) => {
|
|
178
188
|
if (!this.namedDefineRegistry.has(id)) {
|
|
@@ -195,7 +205,7 @@ var ModuleRegistry = class {
|
|
|
195
205
|
}
|
|
196
206
|
};
|
|
197
207
|
this.namedDefineRegistry.set(id, moduleDef);
|
|
198
|
-
} else if (
|
|
208
|
+
} else if (true) {
|
|
199
209
|
if (!this.warnings[import_constants.MODULE_WARNING.MODULE_ALREADY_LOADED].includes(id)) {
|
|
200
210
|
this.warnings[import_constants.MODULE_WARNING.MODULE_ALREADY_LOADED].push(id);
|
|
201
211
|
}
|
|
@@ -205,9 +215,29 @@ var ModuleRegistry = class {
|
|
|
205
215
|
}
|
|
206
216
|
});
|
|
207
217
|
}
|
|
218
|
+
resolver;
|
|
219
|
+
// A registry for named AMD defines containing the *metadata* of AMD module
|
|
220
|
+
namedDefineRegistry = /* @__PURE__ */ new Map();
|
|
221
|
+
// The evaluated module registry where the module identifier (name or URL?) is the key
|
|
222
|
+
moduleRegistry = /* @__PURE__ */ new Map();
|
|
223
|
+
// Aliases of modules in the registry
|
|
224
|
+
aliases = /* @__PURE__ */ new Map();
|
|
225
|
+
lastDefine;
|
|
208
226
|
getImportMetadataResolver() {
|
|
209
227
|
return this.resolver;
|
|
210
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Gets or creates a module record for the given resolved ID and original ID.
|
|
231
|
+
*
|
|
232
|
+
* This function handles the complex logic of module resolution and ensures that:
|
|
233
|
+
* 1. Modules loaded via different paths (aliases, direct specifiers, URLs) return the same instance
|
|
234
|
+
* 2. Bundle URLs are properly resolved to their final specifier names after instantiation
|
|
235
|
+
* 3. Alias mappings are maintained for future lookups
|
|
236
|
+
*
|
|
237
|
+
* @param resolvedId - The resolved module identifier (could be a URL or specifier)
|
|
238
|
+
* @param originalId - The original module specifer that was requested
|
|
239
|
+
* @returns Promise<ModuleRecord> - The module record for the module
|
|
240
|
+
*/
|
|
211
241
|
async getModuleRecord(resolvedId, originalId) {
|
|
212
242
|
const existingRecord = this.moduleRegistry.get(resolvedId);
|
|
213
243
|
if (existingRecord) {
|
|
@@ -253,12 +283,19 @@ var ModuleRegistry = class {
|
|
|
253
283
|
});
|
|
254
284
|
const newModuleRecord = {
|
|
255
285
|
id: resolvedId,
|
|
286
|
+
// Use resolved ID as the record identifier
|
|
256
287
|
originalId,
|
|
257
|
-
|
|
288
|
+
// Keep track of the original requested ID
|
|
289
|
+
module: /* @__PURE__ */ Object.create(null),
|
|
290
|
+
// Empty object for module exports
|
|
258
291
|
dependencyRecords,
|
|
292
|
+
// Promise for dependency module records
|
|
259
293
|
instantiation,
|
|
294
|
+
// Promise for module definition
|
|
260
295
|
evaluated: false,
|
|
296
|
+
// Track if module has been evaluated
|
|
261
297
|
evaluationPromise: null
|
|
298
|
+
// Promise for module evaluation
|
|
262
299
|
};
|
|
263
300
|
this.moduleRegistry.set(resolvedId, newModuleRecord);
|
|
264
301
|
if (resolvedId !== originalId) {
|
|
@@ -270,7 +307,7 @@ var ModuleRegistry = class {
|
|
|
270
307
|
if (aliasId !== resolvedId) {
|
|
271
308
|
if (!this.aliases.has(aliasId)) {
|
|
272
309
|
this.aliases.set(aliasId, resolvedId);
|
|
273
|
-
} else if (
|
|
310
|
+
} else if (import_dom.hasConsole) {
|
|
274
311
|
const currentResolvedId = this.aliases.get(aliasId);
|
|
275
312
|
if (currentResolvedId !== resolvedId) {
|
|
276
313
|
const warningMsg = `${aliasId}=>${currentResolvedId}, ${resolvedId}`;
|
|
@@ -295,6 +332,7 @@ var ModuleRegistry = class {
|
|
|
295
332
|
}
|
|
296
333
|
return this.getModuleRecord(resolvedDepId, dependency);
|
|
297
334
|
}
|
|
335
|
+
// execute the "top-level code" (the code outside of functions) of a module
|
|
298
336
|
async topLevelEvaluation(moduleRecord) {
|
|
299
337
|
return this.evaluateModule(moduleRecord, {});
|
|
300
338
|
}
|
|
@@ -304,26 +342,28 @@ var ModuleRegistry = class {
|
|
|
304
342
|
evaluationMap[moduleRecord.id] = true;
|
|
305
343
|
await this.evaluateModuleDependencies(dependencyModuleRecords, evaluationMap);
|
|
306
344
|
}
|
|
307
|
-
const {exporter, dependencies} = await moduleRecord.instantiation;
|
|
308
|
-
const
|
|
309
|
-
const depsMapped = dependencies ? await Promise.all(
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
345
|
+
const { exporter, dependencies } = await moduleRecord.instantiation;
|
|
346
|
+
const exports = {};
|
|
347
|
+
const depsMapped = dependencies ? await Promise.all(
|
|
348
|
+
dependencies.map(async (dep) => {
|
|
349
|
+
if (dep === "exports") {
|
|
350
|
+
return exports;
|
|
351
|
+
}
|
|
352
|
+
const resolvedDepId = await this.resolve(dep);
|
|
353
|
+
const moduleRecord2 = this.moduleRegistry.get(resolvedDepId);
|
|
354
|
+
if (!moduleRecord2) {
|
|
355
|
+
throw new import_messages.LoaderError(import_messages.FAILED_DEP, [resolvedDepId]);
|
|
356
|
+
}
|
|
357
|
+
const module2 = moduleRecord2.module;
|
|
358
|
+
if (!moduleRecord2.evaluated) {
|
|
359
|
+
return this.getCircularDependencyWrapper(module2);
|
|
360
|
+
}
|
|
361
|
+
if (module2) {
|
|
362
|
+
return module2.__defaultInterop ? module2.default : module2;
|
|
363
|
+
}
|
|
316
364
|
throw new import_messages.LoaderError(import_messages.FAILED_DEP, [resolvedDepId]);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
if (!moduleRecord2.evaluated) {
|
|
320
|
-
return this.getCircularDependencyWrapper(module2);
|
|
321
|
-
}
|
|
322
|
-
if (module2) {
|
|
323
|
-
return module2.__defaultInterop ? module2.default : module2;
|
|
324
|
-
}
|
|
325
|
-
throw new import_messages.LoaderError(import_messages.FAILED_DEP, [resolvedDepId]);
|
|
326
|
-
})) : [];
|
|
365
|
+
})
|
|
366
|
+
) : [];
|
|
327
367
|
if (moduleRecord.evaluated) {
|
|
328
368
|
return moduleRecord.module;
|
|
329
369
|
}
|
|
@@ -334,14 +374,14 @@ var ModuleRegistry = class {
|
|
|
334
374
|
throw new import_messages.LoaderError(import_messages.EXPORTER_ERROR, [moduleRecord.id, e.message || e]);
|
|
335
375
|
}
|
|
336
376
|
if (moduleDefault !== void 0) {
|
|
337
|
-
moduleDefault = {default: moduleDefault};
|
|
338
|
-
Object.defineProperty(moduleDefault, "__defaultInterop", {value: true});
|
|
377
|
+
moduleDefault = { default: moduleDefault };
|
|
378
|
+
Object.defineProperty(moduleDefault, "__defaultInterop", { value: true });
|
|
339
379
|
} else {
|
|
340
|
-
if (this.isNamedExportDefaultOnly(
|
|
341
|
-
Object.defineProperty(
|
|
380
|
+
if (this.isNamedExportDefaultOnly(exports)) {
|
|
381
|
+
Object.defineProperty(exports, "__useDefault", { value: true });
|
|
342
382
|
}
|
|
343
383
|
}
|
|
344
|
-
const moduleExports = moduleDefault ||
|
|
384
|
+
const moduleExports = moduleDefault || exports;
|
|
345
385
|
for (const key in moduleExports) {
|
|
346
386
|
Object.defineProperty(moduleRecord.module, key, {
|
|
347
387
|
enumerable: true,
|
|
@@ -354,21 +394,24 @@ var ModuleRegistry = class {
|
|
|
354
394
|
});
|
|
355
395
|
}
|
|
356
396
|
if (moduleExports.__useDefault) {
|
|
357
|
-
Object.defineProperty(moduleRecord.module, "__useDefault", {value: true});
|
|
397
|
+
Object.defineProperty(moduleRecord.module, "__useDefault", { value: true });
|
|
358
398
|
}
|
|
359
399
|
if (moduleExports.__defaultInterop) {
|
|
360
|
-
Object.defineProperty(moduleRecord.module, "__defaultInterop", {value: true});
|
|
400
|
+
Object.defineProperty(moduleRecord.module, "__defaultInterop", { value: true });
|
|
361
401
|
}
|
|
362
402
|
if (moduleExports.__esModule) {
|
|
363
|
-
Object.defineProperty(moduleRecord.module, "__esModule", {value: true});
|
|
403
|
+
Object.defineProperty(moduleRecord.module, "__esModule", { value: true });
|
|
364
404
|
}
|
|
365
405
|
moduleRecord.evaluated = true;
|
|
366
406
|
Object.freeze(moduleRecord.module);
|
|
367
407
|
return moduleRecord.module;
|
|
368
408
|
}
|
|
369
|
-
|
|
370
|
-
|
|
409
|
+
// Determines if named exports module has only default export
|
|
410
|
+
isNamedExportDefaultOnly(exports) {
|
|
411
|
+
return exports !== void 0 && Object.getOwnPropertyNames(exports).length === 2 && Object.prototype.hasOwnProperty.call(exports, "default") && Object.prototype.hasOwnProperty.call(exports, "__esModule");
|
|
371
412
|
}
|
|
413
|
+
// Wrap the dependency in a function that can be called and detected by __circular__ property.
|
|
414
|
+
// The LWC engine checks for __circular__ to detect circular dependencies.
|
|
372
415
|
getCircularDependencyWrapper(module2) {
|
|
373
416
|
const tmp = () => {
|
|
374
417
|
return module2.__useDefault || module2.__defaultInterop ? module2.default : module2;
|
|
@@ -397,14 +440,17 @@ var ModuleRegistry = class {
|
|
|
397
440
|
}
|
|
398
441
|
const parentUrl = this.resolver.getBaseUrl();
|
|
399
442
|
const specifier = moduleName || originalId;
|
|
400
|
-
this.profiler.logOperationStart({id: import_metrics.MODULE_FETCH, specifier});
|
|
443
|
+
this.profiler.logOperationStart({ id: import_metrics.MODULE_FETCH, specifier });
|
|
401
444
|
return Promise.resolve().then(async () => {
|
|
402
445
|
const loadHooks = this.loadHook;
|
|
403
446
|
if (loadHooks) {
|
|
404
447
|
for (let i = 0; i < loadHooks.length; i++) {
|
|
405
448
|
const loadHook = loadHooks[i];
|
|
406
449
|
const response = loadHook(resolvedId, parentUrl);
|
|
407
|
-
const result = (0, import_resolveAndLoadHook.isResponseAPromise)(response) ?
|
|
450
|
+
const result = (0, import_resolveAndLoadHook.isResponseAPromise)(response) ? (
|
|
451
|
+
// eslint-disable-next-line no-await-in-loop
|
|
452
|
+
await (0, import_resolveAndLoadHook.evaluateLoadHook)(resolvedId, response)
|
|
453
|
+
) : response;
|
|
408
454
|
if (result === void 0) {
|
|
409
455
|
throw new import_messages.LoaderError(import_messages.INVALID_LOADER_SERVICE_RESPONSE);
|
|
410
456
|
}
|
|
@@ -421,26 +467,31 @@ var ModuleRegistry = class {
|
|
|
421
467
|
}).then(() => {
|
|
422
468
|
moduleDef = moduleName && this.namedDefineRegistry.get(moduleName);
|
|
423
469
|
if (!moduleDef) {
|
|
424
|
-
this.logMessage(
|
|
470
|
+
this.logMessage(
|
|
471
|
+
"warning",
|
|
472
|
+
`${moduleName} not found, falling back to the last loader.define call`
|
|
473
|
+
);
|
|
425
474
|
moduleDef = this.lastDefine;
|
|
426
475
|
}
|
|
427
476
|
if (!moduleDef) {
|
|
428
477
|
throw new import_messages.LoaderError(import_messages.FAIL_INSTANTIATE, [resolvedId]);
|
|
429
478
|
}
|
|
430
|
-
this.profiler.logOperationEnd({id: import_metrics.MODULE_FETCH, specifier});
|
|
479
|
+
this.profiler.logOperationEnd({ id: import_metrics.MODULE_FETCH, specifier });
|
|
431
480
|
return moduleDef;
|
|
432
481
|
}).catch((e) => {
|
|
433
482
|
if (!(e instanceof import_messages.LoaderError)) {
|
|
434
|
-
this.profiler.logOperationStart({id: import_metrics.MODULE_ERROR, specifier});
|
|
483
|
+
this.profiler.logOperationStart({ id: import_metrics.MODULE_ERROR, specifier });
|
|
435
484
|
}
|
|
436
485
|
throw e;
|
|
437
486
|
});
|
|
438
487
|
}
|
|
488
|
+
resolveHook;
|
|
489
|
+
loadHook;
|
|
439
490
|
addLoaderPlugin(hooks) {
|
|
440
491
|
if (typeof hooks !== "object") {
|
|
441
492
|
throw new import_messages.LoaderError(import_messages.INVALID_HOOK);
|
|
442
493
|
}
|
|
443
|
-
const {loadModule: loadHook, resolveModule: resolveHook, loadMapping} = hooks;
|
|
494
|
+
const { loadModule: loadHook, resolveModule: resolveHook, loadMapping } = hooks;
|
|
444
495
|
if (resolveHook) {
|
|
445
496
|
if (this.resolveHook) {
|
|
446
497
|
this.resolveHook.push(resolveHook);
|
|
@@ -459,7 +510,7 @@ var ModuleRegistry = class {
|
|
|
459
510
|
this.resolver.addLoadMappingHook(loadMapping);
|
|
460
511
|
}
|
|
461
512
|
}
|
|
462
|
-
importMetadataInvalidationCallback({name, oldUrl, newUrl}) {
|
|
513
|
+
importMetadataInvalidationCallback({ name, oldUrl, newUrl }) {
|
|
463
514
|
const handleStaleModuleHooks = this.handleStaleModuleHook;
|
|
464
515
|
if (handleStaleModuleHooks) {
|
|
465
516
|
(0, import_moduleInvalidation.evaluateHandleStaleModuleHooks)(handleStaleModuleHooks, {
|
|
@@ -468,11 +519,12 @@ var ModuleRegistry = class {
|
|
|
468
519
|
newUrl
|
|
469
520
|
});
|
|
470
521
|
} else {
|
|
471
|
-
if (
|
|
522
|
+
if (import_dom.hasConsole) {
|
|
472
523
|
console.warn(`stale module detected ${name}, current URL:${oldUrl}, new URL:${newUrl}`);
|
|
473
524
|
}
|
|
474
525
|
}
|
|
475
526
|
}
|
|
527
|
+
handleStaleModuleHook;
|
|
476
528
|
registerHandleStaleModuleHook(handleStaleModule) {
|
|
477
529
|
if (this.handleStaleModuleHook) {
|
|
478
530
|
this.handleStaleModuleHook.push(handleStaleModule);
|
|
@@ -488,7 +540,9 @@ var ModuleRegistry = class {
|
|
|
488
540
|
return this.warnings;
|
|
489
541
|
}
|
|
490
542
|
logMessage(logType, message) {
|
|
491
|
-
if (!import_dom.hasConsole ||
|
|
543
|
+
if (!import_dom.hasConsole || // note: we always expect this to be replaced at build time
|
|
544
|
+
// eslint-disable-next-line lwr/no-unguarded-apis
|
|
545
|
+
false) {
|
|
492
546
|
return;
|
|
493
547
|
}
|
|
494
548
|
if (logType == "warning") {
|
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
5
|
var __export = (target, all) => {
|
|
9
6
|
for (var name in all)
|
|
10
|
-
__defProp(target, name, {get: all[name], enumerable: true});
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
8
|
};
|
|
12
|
-
var
|
|
13
|
-
if (
|
|
14
|
-
for (let key of __getOwnPropNames(
|
|
15
|
-
if (!__hasOwnProp.call(
|
|
16
|
-
__defProp(
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
14
|
}
|
|
18
|
-
return
|
|
19
|
-
};
|
|
20
|
-
var __toModule = (module2) => {
|
|
21
|
-
return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
|
|
15
|
+
return to;
|
|
22
16
|
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
18
|
|
|
24
19
|
// packages/@lwrjs/loader/src/modules/lwr/loader/moduleRegistry/scriptLoad.ts
|
|
25
|
-
|
|
26
|
-
__export(
|
|
20
|
+
var scriptLoad_exports = {};
|
|
21
|
+
__export(scriptLoad_exports, {
|
|
27
22
|
loadModuleDef: () => loadModuleDef
|
|
28
23
|
});
|
|
29
|
-
|
|
30
|
-
var
|
|
24
|
+
module.exports = __toCommonJS(scriptLoad_exports);
|
|
25
|
+
var import_messages = require("../errors/messages.cjs");
|
|
26
|
+
var import_dom = require("../utils/dom.cjs");
|
|
31
27
|
function createScript(url) {
|
|
32
28
|
const script = document.createElement("script");
|
|
33
29
|
script.async = true;
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
3
5
|
var __export = (target, all) => {
|
|
4
6
|
for (var name in all)
|
|
5
|
-
__defProp(target, name, {get: all[name], enumerable: true});
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
8
|
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
7
18
|
|
|
8
19
|
// packages/@lwrjs/loader/src/modules/lwr/loader/utils/dom.ts
|
|
9
|
-
|
|
10
|
-
__export(
|
|
20
|
+
var dom_exports = {};
|
|
21
|
+
__export(dom_exports, {
|
|
11
22
|
hasConsole: () => hasConsole,
|
|
12
23
|
hasDocument: () => hasDocument,
|
|
13
24
|
hasProcess: () => hasProcess,
|
|
14
25
|
hasProcessEnv: () => hasProcessEnv,
|
|
15
26
|
hasSetTimeout: () => hasSetTimeout
|
|
16
27
|
});
|
|
28
|
+
module.exports = __toCommonJS(dom_exports);
|
|
17
29
|
var hasDocument = typeof document !== "undefined";
|
|
18
30
|
var hasSetTimeout = typeof setTimeout === "function";
|
|
19
31
|
var hasConsole = typeof console !== "undefined";
|
|
@@ -1,35 +1,31 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
5
|
var __export = (target, all) => {
|
|
9
6
|
for (var name in all)
|
|
10
|
-
__defProp(target, name, {get: all[name], enumerable: true});
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
8
|
};
|
|
12
|
-
var
|
|
13
|
-
if (
|
|
14
|
-
for (let key of __getOwnPropNames(
|
|
15
|
-
if (!__hasOwnProp.call(
|
|
16
|
-
__defProp(
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
14
|
}
|
|
18
|
-
return
|
|
19
|
-
};
|
|
20
|
-
var __toModule = (module2) => {
|
|
21
|
-
return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
|
|
15
|
+
return to;
|
|
22
16
|
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
18
|
|
|
24
19
|
// packages/@lwrjs/loader/src/modules/lwr/loader/utils/url.ts
|
|
25
|
-
|
|
26
|
-
__export(
|
|
20
|
+
var url_exports = {};
|
|
21
|
+
__export(url_exports, {
|
|
27
22
|
getBaseUrl: () => getBaseUrl,
|
|
28
23
|
isUrl: () => isUrl,
|
|
29
24
|
resolveIfNotPlainOrUrl: () => resolveIfNotPlainOrUrl,
|
|
30
25
|
resolveUrl: () => resolveUrl
|
|
31
26
|
});
|
|
32
|
-
|
|
27
|
+
module.exports = __toCommonJS(url_exports);
|
|
28
|
+
var import_dom = require("./dom.cjs");
|
|
33
29
|
function getBaseUrl() {
|
|
34
30
|
let baseUrl = void 0;
|
|
35
31
|
if (import_dom.hasDocument) {
|
|
@@ -50,8 +46,7 @@ function isUrl(url) {
|
|
|
50
46
|
}
|
|
51
47
|
function resolveIfNotPlainOrUrl(relUrl, parentUrl) {
|
|
52
48
|
const backslashRegEx = /\\/g;
|
|
53
|
-
if (relUrl.indexOf("\\") !== -1)
|
|
54
|
-
relUrl = relUrl.replace(backslashRegEx, "/");
|
|
49
|
+
if (relUrl.indexOf("\\") !== -1) relUrl = relUrl.replace(backslashRegEx, "/");
|
|
55
50
|
if (relUrl[0] === "/" && relUrl[1] === "/") {
|
|
56
51
|
return parentUrl.slice(0, parentUrl.indexOf(":") + 1) + relUrl;
|
|
57
52
|
} else if (relUrl[0] === "." && (relUrl[1] === "/" || relUrl[1] === "." && (relUrl[2] === "/" || relUrl.length === 2 && (relUrl += "/")) || relUrl.length === 1 && (relUrl += "/")) || relUrl[0] === "/") {
|
|
@@ -65,10 +60,11 @@ function resolveIfNotPlainOrUrl(relUrl, parentUrl) {
|
|
|
65
60
|
pathname = parentUrl.slice(8);
|
|
66
61
|
}
|
|
67
62
|
} else {
|
|
68
|
-
pathname = parentUrl.slice(
|
|
63
|
+
pathname = parentUrl.slice(
|
|
64
|
+
parentProtocol.length + (parentUrl[parentProtocol.length] === "/" ? 1 : 0)
|
|
65
|
+
);
|
|
69
66
|
}
|
|
70
|
-
if (relUrl[0] === "/")
|
|
71
|
-
return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl;
|
|
67
|
+
if (relUrl[0] === "/") return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl;
|
|
72
68
|
const segmented = pathname.slice(0, pathname.lastIndexOf("/") + 1) + relUrl;
|
|
73
69
|
const output = [];
|
|
74
70
|
let segmentIndex = -1;
|
|
@@ -91,8 +87,7 @@ function resolveIfNotPlainOrUrl(relUrl, parentUrl) {
|
|
|
91
87
|
segmentIndex = i;
|
|
92
88
|
}
|
|
93
89
|
}
|
|
94
|
-
if (segmentIndex !== -1)
|
|
95
|
-
output.push(segmented.slice(segmentIndex));
|
|
90
|
+
if (segmentIndex !== -1) output.push(segmented.slice(segmentIndex));
|
|
96
91
|
return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join("");
|
|
97
92
|
}
|
|
98
93
|
}
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
3
5
|
var __export = (target, all) => {
|
|
4
6
|
for (var name in all)
|
|
5
|
-
__defProp(target, name, {get: all[name], enumerable: true});
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
8
|
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
7
18
|
|
|
8
19
|
// packages/@lwrjs/loader/src/modules/lwr/loader/utils/validation.ts
|
|
9
|
-
|
|
10
|
-
__export(
|
|
20
|
+
var validation_exports = {};
|
|
21
|
+
__export(validation_exports, {
|
|
11
22
|
validateAndWrapAsImportMetadata: () => validateAndWrapAsImportMetadata
|
|
12
23
|
});
|
|
24
|
+
module.exports = __toCommonJS(validation_exports);
|
|
13
25
|
function assertValidImportMapUrlKey(moduleScriptURL) {
|
|
14
26
|
const lowerUri = moduleScriptURL.toLowerCase();
|
|
15
27
|
if (lowerUri.startsWith("blob:")) {
|
|
@@ -19,7 +31,9 @@ function assertValidImportMapUrlKey(moduleScriptURL) {
|
|
|
19
31
|
throw new Error(`Cannot map ${moduleScriptURL} to data: URL`);
|
|
20
32
|
}
|
|
21
33
|
if (!/^[./]|^https?:/.test(moduleScriptURL)) {
|
|
22
|
-
throw new Error(
|
|
34
|
+
throw new Error(
|
|
35
|
+
`LWR.importMap(): "${moduleScriptURL}" is not a valid URL key. Keys must be URL paths (e.g. "/path/to/module.js"), not module specifiers. Transitive specifier aliasing is not supported by this loader.`
|
|
36
|
+
);
|
|
23
37
|
}
|
|
24
38
|
}
|
|
25
39
|
function validateAndWrapAsImportMetadata(update) {
|
|
@@ -30,7 +44,7 @@ function validateAndWrapAsImportMetadata(update) {
|
|
|
30
44
|
if (entries.length === 0) {
|
|
31
45
|
return null;
|
|
32
46
|
}
|
|
33
|
-
const seenSpecifiers = new Set();
|
|
47
|
+
const seenSpecifiers = /* @__PURE__ */ new Set();
|
|
34
48
|
const validatedImports = {};
|
|
35
49
|
for (const [moduleScriptURL, moduleNames] of entries) {
|
|
36
50
|
if (!moduleScriptURL || typeof moduleScriptURL !== "string") {
|
|
@@ -57,5 +71,5 @@ function validateAndWrapAsImportMetadata(update) {
|
|
|
57
71
|
if (Object.keys(validatedImports).length === 0) {
|
|
58
72
|
return null;
|
|
59
73
|
}
|
|
60
|
-
return {imports: validatedImports};
|
|
74
|
+
return { imports: validatedImports };
|
|
61
75
|
}
|