@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.
Files changed (47) hide show
  1. package/build/assets/prod/lwr-error-shim.js +1 -1
  2. package/build/assets/prod/lwr-loader-shim-legacy.bundle.js +23 -10
  3. package/build/assets/prod/lwr-loader-shim-legacy.bundle.min.js +3 -3
  4. package/build/assets/prod/lwr-loader-shim-legacy.js +5 -5
  5. package/build/assets/prod/lwr-loader-shim.bundle.js +23 -10
  6. package/build/assets/prod/lwr-loader-shim.bundle.min.js +3 -3
  7. package/build/assets/prod/lwr-loader-shim.js +5 -5
  8. package/build/cjs/index.cjs +51 -36
  9. package/build/cjs/modules/lwr/esmLoader/esmLoader.cjs +31 -22
  10. package/build/cjs/modules/lwr/esmLoader/importResolver.cjs +24 -9
  11. package/build/cjs/modules/lwr/esmLoader/importResolverLegacy.cjs +24 -7
  12. package/build/cjs/modules/lwr/loader/constants/constants.cjs +19 -7
  13. package/build/cjs/modules/lwr/loader/errors/messages.cjs +14 -18
  14. package/build/cjs/modules/lwr/loader/errors/reportError.cjs +15 -20
  15. package/build/cjs/modules/lwr/loader/errors/utils.cjs +16 -4
  16. package/build/cjs/modules/lwr/loader/hooks/moduleInvalidation.cjs +17 -21
  17. package/build/cjs/modules/lwr/loader/hooks/resolveAndLoadHook.cjs +37 -37
  18. package/build/cjs/modules/lwr/loader/moduleRegistry/importMetadataResolver.cjs +48 -27
  19. package/build/cjs/modules/lwr/loader/moduleRegistry/moduleRegistry.cjs +131 -77
  20. package/build/cjs/modules/lwr/loader/moduleRegistry/scriptLoad.cjs +15 -19
  21. package/build/cjs/modules/lwr/loader/utils/dom.cjs +16 -4
  22. package/build/cjs/modules/lwr/loader/utils/url.cjs +20 -25
  23. package/build/cjs/modules/lwr/loader/utils/validation.cjs +21 -7
  24. package/build/cjs/modules/lwr/loader/validateLoadSpecifier.cjs +17 -5
  25. package/build/cjs/modules/lwr/loaderLegacy/constants/constants.cjs +19 -7
  26. package/build/cjs/modules/lwr/loaderLegacy/errors/messages.cjs +14 -18
  27. package/build/cjs/modules/lwr/loaderLegacy/errors/reportError.cjs +15 -20
  28. package/build/cjs/modules/lwr/loaderLegacy/errors/utils.cjs +16 -4
  29. package/build/cjs/modules/lwr/loaderLegacy/hooks/moduleInvalidation.cjs +17 -21
  30. package/build/cjs/modules/lwr/loaderLegacy/hooks/resolveAndLoadHook.cjs +37 -37
  31. package/build/cjs/modules/lwr/loaderLegacy/importMap/dom.cjs +24 -25
  32. package/build/cjs/modules/lwr/loaderLegacy/importMap/importMap.cjs +31 -25
  33. package/build/cjs/modules/lwr/loaderLegacy/importMap/importMapResolver.cjs +16 -19
  34. package/build/cjs/modules/lwr/loaderLegacy/importMap/utils.cjs +14 -18
  35. package/build/cjs/modules/lwr/loaderLegacy/importResolver/importResolver.cjs +14 -2
  36. package/build/cjs/modules/lwr/loaderLegacy/moduleRegistry/moduleRegistry.cjs +113 -77
  37. package/build/cjs/modules/lwr/loaderLegacy/moduleRegistry/scriptLoad.cjs +15 -19
  38. package/build/cjs/modules/lwr/loaderLegacy/utils/dom.cjs +16 -4
  39. package/build/cjs/modules/lwr/loaderLegacy/utils/url.cjs +20 -25
  40. package/build/cjs/modules/lwr/loaderLegacy/utils/validation.cjs +17 -19
  41. package/build/cjs/types.cjs +14 -2
  42. package/build/modules/lwr/esmLoader/esmLoader.js +1 -1
  43. package/build/modules/lwr/loader/hooks/resolveAndLoadHook.js +15 -3
  44. package/build/modules/lwr/loader/loader.js +18 -5
  45. package/build/modules/lwr/loaderLegacy/hooks/resolveAndLoadHook.js +15 -3
  46. package/build/modules/lwr/loaderLegacy/loaderLegacy.js +18 -5
  47. 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 __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
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 __exportStar = (target, module2, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && key !== "default")
16
- __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
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 target;
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
- __markAsModule(exports);
26
- __export(exports, {
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
- var import_messages = __toModule(require("../errors/messages.cjs"));
34
- var import_constants = __toModule(require("../constants/constants.cjs"));
35
- var import_dom = __toModule(require("../utils/dom.cjs"));
36
- var import_trusted_types = __toModule(require("@locker/trusted-types"));
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
- if (process.env.NODE_ENV !== "production") {
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(response) {
49
- return Object.prototype.hasOwnProperty.call(response, "data") && !Object.prototype.hasOwnProperty.call(response, "blob");
47
+ function isCustomResponse(response2) {
48
+ return Object.prototype.hasOwnProperty.call(response2, "data") && !Object.prototype.hasOwnProperty.call(response2, "blob");
50
49
  }
51
- function isFetchResponse(response) {
52
- return typeof response.blob === "function";
50
+ function isFetchResponse(response2) {
51
+ return typeof response2.blob === "function";
53
52
  }
54
- function isResponseAPromise(response) {
55
- return !!(response && response.then);
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 (process.env.NODE_ENV !== "production" && import_dom.hasConsole) {
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
- throw new import_messages.LoaderError(import_messages.FAIL_LOAD, [
89
- `"${id}": window error ${lastWindowError instanceof Error ? lastWindowError.message : String(lastWindowError)}`
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(id, hookPromise) {
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, [id]));
101
+ reject(new import_messages.LoaderError(import_messages.MODULE_LOAD_TIMEOUT, [id2]));
102
102
  }, import_constants.MODULE_LOAD_TIMEOUT_TIMER);
103
- hookPromise.then((response) => {
104
- resolve(response);
103
+ hookPromise.then((response2) => {
104
+ resolve(response2);
105
105
  }).catch(() => {
106
- reject(new import_messages.LoaderError(import_messages.FAIL_HOOK_LOAD, [id]));
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 __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
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 __exportStar = (target, module2, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && key !== "default")
16
- __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
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 target;
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
- __markAsModule(exports);
26
- __export(exports, {
20
+ var importMetadataResolver_exports = {};
21
+ __export(importMetadataResolver_exports, {
27
22
  ImportMetadataResolver: () => ImportMetadataResolver
28
23
  });
29
- var import_messages = __toModule(require("../errors/messages.cjs"));
30
- var import_url = __toModule(require("../utils/url.cjs"));
31
- var import_metrics = __toModule(require("lwr/metrics"));
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) => {