@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,58 +1,57 @@
|
|
|
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/hooks/resolveAndLoadHook.ts
|
|
25
|
-
|
|
26
|
-
__export(
|
|
20
|
+
var resolveAndLoadHook_exports = {};
|
|
21
|
+
__export(resolveAndLoadHook_exports, {
|
|
27
22
|
evaluateLoadHook: () => evaluateLoadHook,
|
|
28
23
|
evaluateLoadHookResponse: () => evaluateLoadHookResponse,
|
|
29
24
|
isCustomResponse: () => isCustomResponse,
|
|
30
25
|
isFetchResponse: () => isFetchResponse,
|
|
31
26
|
isResponseAPromise: () => isResponseAPromise
|
|
32
27
|
});
|
|
33
|
-
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
var
|
|
28
|
+
module.exports = __toCommonJS(resolveAndLoadHook_exports);
|
|
29
|
+
var import_messages = require("../errors/messages.cjs");
|
|
30
|
+
var import_constants = require("../constants/constants.cjs");
|
|
31
|
+
var import_dom = require("../utils/dom.cjs");
|
|
32
|
+
var import_trusted_types = require("@locker/trusted-types");
|
|
37
33
|
var lastWindowError;
|
|
38
34
|
if (import_dom.hasDocument) {
|
|
39
35
|
globalThis.addEventListener("error", (evt) => {
|
|
40
36
|
lastWindowError = evt.error;
|
|
41
37
|
});
|
|
42
38
|
}
|
|
43
|
-
|
|
39
|
+
function resetLastWindowError() {
|
|
40
|
+
lastWindowError = null;
|
|
41
|
+
}
|
|
42
|
+
if (true) {
|
|
44
43
|
if (!import_dom.hasSetTimeout && import_dom.hasConsole) {
|
|
45
44
|
console.warn("setTimeout API is not available, watchdog timer on load hook will not be set");
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
|
-
function isCustomResponse(
|
|
49
|
-
return Object.prototype.hasOwnProperty.call(
|
|
47
|
+
function isCustomResponse(response2) {
|
|
48
|
+
return Object.prototype.hasOwnProperty.call(response2, "data") && !Object.prototype.hasOwnProperty.call(response2, "blob");
|
|
50
49
|
}
|
|
51
|
-
function isFetchResponse(
|
|
52
|
-
return typeof
|
|
50
|
+
function isFetchResponse(response2) {
|
|
51
|
+
return typeof response2.blob === "function";
|
|
53
52
|
}
|
|
54
|
-
function isResponseAPromise(
|
|
55
|
-
return !!(
|
|
53
|
+
function isResponseAPromise(response2) {
|
|
54
|
+
return !!(response2 && response2.then);
|
|
56
55
|
}
|
|
57
56
|
async function evaluateLoadHookResponse(response, id) {
|
|
58
57
|
return Promise.resolve().then(async () => {
|
|
@@ -76,34 +75,35 @@ async function evaluateLoadHookResponse(response, id) {
|
|
|
76
75
|
}
|
|
77
76
|
code = `${code}
|
|
78
77
|
//# sourceURL=${id}`;
|
|
78
|
+
resetLastWindowError();
|
|
79
79
|
try {
|
|
80
80
|
eval(import_trusted_types.trusted.createScript(code));
|
|
81
81
|
} catch (e) {
|
|
82
|
-
if (
|
|
82
|
+
if (import_dom.hasConsole) {
|
|
83
83
|
console.error(e);
|
|
84
84
|
}
|
|
85
85
|
throw new import_messages.LoaderError(import_messages.FAIL_LOAD, [`"${id}": ${e instanceof Error ? e.message : String(e)}`]);
|
|
86
86
|
}
|
|
87
87
|
if (lastWindowError) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
]);
|
|
88
|
+
const message = lastWindowError instanceof Error ? lastWindowError.message : String(lastWindowError);
|
|
89
|
+
resetLastWindowError();
|
|
90
|
+
throw new import_messages.LoaderError(import_messages.FAIL_LOAD, [`"${id}": window error ${message}`]);
|
|
91
91
|
}
|
|
92
92
|
return true;
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
|
-
async function evaluateLoadHook(
|
|
95
|
+
async function evaluateLoadHook(id2, hookPromise) {
|
|
96
96
|
if (!import_dom.hasSetTimeout) {
|
|
97
97
|
return hookPromise;
|
|
98
98
|
}
|
|
99
99
|
return new Promise((resolve, reject) => {
|
|
100
100
|
const timer = setTimeout(() => {
|
|
101
|
-
reject(new import_messages.LoaderError(import_messages.MODULE_LOAD_TIMEOUT, [
|
|
101
|
+
reject(new import_messages.LoaderError(import_messages.MODULE_LOAD_TIMEOUT, [id2]));
|
|
102
102
|
}, import_constants.MODULE_LOAD_TIMEOUT_TIMER);
|
|
103
|
-
hookPromise.then((
|
|
104
|
-
resolve(
|
|
103
|
+
hookPromise.then((response2) => {
|
|
104
|
+
resolve(response2);
|
|
105
105
|
}).catch(() => {
|
|
106
|
-
reject(new import_messages.LoaderError(import_messages.FAIL_HOOK_LOAD, [
|
|
106
|
+
reject(new import_messages.LoaderError(import_messages.FAIL_HOOK_LOAD, [id2]));
|
|
107
107
|
}).finally(() => {
|
|
108
108
|
clearTimeout(timer);
|
|
109
109
|
});
|
|
@@ -1,39 +1,38 @@
|
|
|
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/importMetadataResolver.ts
|
|
25
|
-
|
|
26
|
-
__export(
|
|
20
|
+
var importMetadataResolver_exports = {};
|
|
21
|
+
__export(importMetadataResolver_exports, {
|
|
27
22
|
ImportMetadataResolver: () => ImportMetadataResolver
|
|
28
23
|
});
|
|
29
|
-
|
|
30
|
-
var
|
|
31
|
-
var
|
|
24
|
+
module.exports = __toCommonJS(importMetadataResolver_exports);
|
|
25
|
+
var import_messages = require("../errors/messages.cjs");
|
|
26
|
+
var import_url = require("../utils/url.cjs");
|
|
27
|
+
var import_metrics = require("lwr/metrics");
|
|
32
28
|
var ImportMetadataResolver = class {
|
|
29
|
+
// Default to empty mappings
|
|
30
|
+
importURICache = /* @__PURE__ */ new Map();
|
|
31
|
+
pendingURICache = /* @__PURE__ */ new Map();
|
|
32
|
+
config;
|
|
33
|
+
invalidationCallback;
|
|
34
|
+
loadMappingHooks = [];
|
|
33
35
|
constructor(config, invalidationCallback) {
|
|
34
|
-
this.importURICache = new Map();
|
|
35
|
-
this.pendingURICache = new Map();
|
|
36
|
-
this.loadMappingHooks = [];
|
|
37
36
|
this.config = config;
|
|
38
37
|
this.invalidationCallback = invalidationCallback;
|
|
39
38
|
}
|
|
@@ -92,9 +91,16 @@ var ImportMetadataResolver = class {
|
|
|
92
91
|
});
|
|
93
92
|
}
|
|
94
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Returns the raw URI stored for a specifier, or `undefined` if not yet mapped.
|
|
96
|
+
* Used by the runtime `importMap()` path to detect cross-call duplicates while
|
|
97
|
+
* allowing truly idempotent re-registrations (same specifier, same URI) to pass
|
|
98
|
+
* through silently.
|
|
99
|
+
*/
|
|
95
100
|
getMappingUri(specifier) {
|
|
96
101
|
return this.importURICache.get(specifier)?.uri;
|
|
97
102
|
}
|
|
103
|
+
// Get URL from the local cache or return undefiend
|
|
98
104
|
getURI(specifier) {
|
|
99
105
|
return this.importURICache && this.importURICache.has(specifier) ? (0, import_url.resolveUrl)(this.importURICache.get(specifier).uri, this.getBaseUrl()) : void 0;
|
|
100
106
|
}
|
|
@@ -107,6 +113,16 @@ var ImportMetadataResolver = class {
|
|
|
107
113
|
}
|
|
108
114
|
return void 0;
|
|
109
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Resolves a the URI for a specified module. It will return the value in this order:
|
|
118
|
+
*
|
|
119
|
+
* 1) Mapping from local URI cache
|
|
120
|
+
* 2) The URI if a specifier is already an absolute URI
|
|
121
|
+
* 3) Mapping fetched from a registered loader hook
|
|
122
|
+
* 4)
|
|
123
|
+
* @param specifier
|
|
124
|
+
* @returns module URI
|
|
125
|
+
*/
|
|
110
126
|
async resolve(specifier) {
|
|
111
127
|
let uri = this.getURI(specifier);
|
|
112
128
|
if (uri) {
|
|
@@ -118,7 +134,7 @@ var ImportMetadataResolver = class {
|
|
|
118
134
|
if (pending) {
|
|
119
135
|
return pending;
|
|
120
136
|
}
|
|
121
|
-
this.config.profiler.logOperationStart({id: import_metrics.MAPPINGS_FETCH, specifier});
|
|
137
|
+
this.config.profiler.logOperationStart({ id: import_metrics.MAPPINGS_FETCH, specifier });
|
|
122
138
|
const fetchMappingService = this.hasMappingHooks() ? this.evaluateMappingHooks : this.fetchNewMappings;
|
|
123
139
|
const promise = fetchMappingService.bind(this)(specifier).then((importMetadata) => {
|
|
124
140
|
if (!importMetadata || !importMetadata.imports) {
|
|
@@ -129,7 +145,7 @@ var ImportMetadataResolver = class {
|
|
|
129
145
|
if (!uri) {
|
|
130
146
|
throw new import_messages.LoaderError(import_messages.UNRESOLVED, [specifier]);
|
|
131
147
|
}
|
|
132
|
-
this.config.profiler.logOperationEnd({id: import_metrics.MAPPINGS_FETCH, specifier});
|
|
148
|
+
this.config.profiler.logOperationEnd({ id: import_metrics.MAPPINGS_FETCH, specifier });
|
|
133
149
|
return uri;
|
|
134
150
|
}).finally(() => {
|
|
135
151
|
this.pendingURICache.delete(specifier);
|
|
@@ -141,13 +157,18 @@ var ImportMetadataResolver = class {
|
|
|
141
157
|
hasMappingHooks() {
|
|
142
158
|
return this.loadMappingHooks.length > 0;
|
|
143
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Evaluates mapping hooks. Returns first match. If all hooks return null call the mapping service.
|
|
162
|
+
* @param specifier Request module identifier
|
|
163
|
+
* @returns Import Metadata from the module root
|
|
164
|
+
*/
|
|
144
165
|
async evaluateMappingHooks(specifier) {
|
|
145
166
|
const loadMappingHooks = this.loadMappingHooks;
|
|
146
167
|
if (loadMappingHooks.length) {
|
|
147
168
|
const knownModules = Array.from(this.importURICache.keys());
|
|
148
169
|
for (let i = 0; i < loadMappingHooks.length; i++) {
|
|
149
170
|
const loadMappingHook = loadMappingHooks[i];
|
|
150
|
-
const response = await loadMappingHook(specifier, {knownModules});
|
|
171
|
+
const response = await loadMappingHook(specifier, { knownModules });
|
|
151
172
|
if (response || response === void 0) {
|
|
152
173
|
return response;
|
|
153
174
|
}
|
|
@@ -165,7 +186,7 @@ var ImportMetadataResolver = class {
|
|
|
165
186
|
}
|
|
166
187
|
return globalThis.fetch(uri).then((res) => {
|
|
167
188
|
if (!res.ok) {
|
|
168
|
-
this.config.profiler.logOperationStart({id: import_metrics.MAPPINGS_ERROR, specifier});
|
|
189
|
+
this.config.profiler.logOperationStart({ id: import_metrics.MAPPINGS_ERROR, specifier });
|
|
169
190
|
throw new import_messages.LoaderError(import_messages.UNRESOLVED, [specifier]);
|
|
170
191
|
}
|
|
171
192
|
return res.json().then((ret) => {
|