@lwrjs/loader 0.12.0-alpha.6 → 0.12.0-alpha.8

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.
@@ -53,12 +53,12 @@ var ModuleRegistry = class {
53
53
  metadata
54
54
  });
55
55
  const resolvedId = await this.resolve(id, importer);
56
- const moduleRecord = await this.getModuleRecord(resolvedId, id);
56
+ const moduleRecord = this.getModuleRecord(resolvedId, id);
57
57
  if (moduleRecord.evaluated) {
58
58
  return moduleRecord.module;
59
59
  } else {
60
60
  if (!moduleRecord.evaluationPromise) {
61
- moduleRecord.evaluationPromise = this.topLevelEvaluation(moduleRecord);
61
+ moduleRecord.evaluationPromise = this.evaluateModule(moduleRecord, {});
62
62
  }
63
63
  return moduleRecord.evaluationPromise;
64
64
  }
@@ -76,7 +76,7 @@ var ModuleRegistry = class {
76
76
  if (response || response === null) {
77
77
  result = (0, import_resolveAndLoadHook.isResponseAPromise)(response) ? await response : response;
78
78
  }
79
- if (!this.isValidResolveResponse(result)) {
79
+ if (!isValidResolveResponse(result)) {
80
80
  throw new import_messages.LoaderError(import_messages.INVALID_LOADER_SERVICE_RESPONSE);
81
81
  }
82
82
  if (result !== null) {
@@ -211,34 +211,21 @@ var ModuleRegistry = class {
211
211
  }
212
212
  return moduleRecord;
213
213
  }
214
- async getModuleRecord(resolvedId, id) {
214
+ getModuleRecord(resolvedId, id) {
215
215
  const existingRecord = this.getExistingModuleRecord(resolvedId, id);
216
216
  if (existingRecord) {
217
217
  return existingRecord;
218
218
  }
219
- const instantiation = this.getModuleDef(resolvedId, id);
220
- const dependencyRecords = instantiation.then((moduleDef) => {
221
- const dependencies = moduleDef.dependencies || [];
222
- const filtered = dependencies.map((dep) => {
223
- if (dep === "exports") {
224
- return;
225
- }
226
- (0, import_messages.invariant)(dep !== "require", import_messages.NO_AMD_REQUIRE);
227
- return this.getModuleDependencyRecord.call(this, dep);
228
- }).filter((depRecord) => depRecord !== void 0);
229
- return Promise.all(filtered);
230
- });
231
219
  const newModuleRecord = {
232
220
  id: resolvedId,
233
221
  module: Object.create(null),
234
- dependencyRecords,
235
- instantiation,
222
+ instantiation: this.getModuleDef(resolvedId, id),
236
223
  evaluated: false,
237
224
  evaluationPromise: null
238
225
  };
239
226
  this.moduleRegistry.set(resolvedId, newModuleRecord);
240
227
  this.storeModuleAlias(id, resolvedId);
241
- return dependencyRecords.then(() => newModuleRecord);
228
+ return newModuleRecord;
242
229
  }
243
230
  storeModuleAlias(aliasId, resolvedId) {
244
231
  if (aliasId !== resolvedId) {
@@ -254,66 +241,60 @@ var ModuleRegistry = class {
254
241
  }
255
242
  }
256
243
  }
257
- async getModuleDependencyRecord(dependency) {
258
- const resolvedDepId = await this.resolve(dependency);
259
- return this.getModuleRecord(resolvedDepId, dependency);
260
- }
261
- async topLevelEvaluation(moduleRecord) {
262
- await this.instantiateAll(moduleRecord, {});
263
- return this.evaluateModule(moduleRecord, {});
264
- }
265
- async instantiateAll(moduleRecord, instantiatedMap) {
266
- if (!instantiatedMap[moduleRecord.id]) {
267
- instantiatedMap[moduleRecord.id] = true;
268
- const dependencyModuleRecords = await moduleRecord.dependencyRecords;
269
- if (dependencyModuleRecords) {
270
- for (let i = 0; i < dependencyModuleRecords.length; i++) {
271
- const depRecord = dependencyModuleRecords[i];
272
- await this.instantiateAll(depRecord, instantiatedMap);
244
+ async evaluateDependencies(dependencies, evaluationMap) {
245
+ const exports2 = {};
246
+ const promiseArray = [];
247
+ if (dependencies) {
248
+ for (const dep of dependencies) {
249
+ if (dep === "exports") {
250
+ promiseArray.push(Promise.resolve(exports2));
251
+ } else {
252
+ (0, import_messages.invariant)(dep !== "require", import_messages.NO_AMD_REQUIRE);
253
+ promiseArray.push(this.evaluateDependent(dep, evaluationMap));
273
254
  }
274
255
  }
275
256
  }
257
+ return Promise.all(promiseArray).then((results) => {
258
+ const depsMapped = results.filter((result) => result !== void 0);
259
+ return {depsMapped, exports: exports2};
260
+ });
276
261
  }
277
- async evaluateModule(moduleRecord, evaluationMap) {
278
- const dependencyModuleRecords = await moduleRecord.dependencyRecords;
279
- if (dependencyModuleRecords.length > 0) {
280
- evaluationMap[moduleRecord.id] = true;
281
- await this.evaluateModuleDependencies(dependencyModuleRecords, evaluationMap);
282
- }
283
- const {exporter, dependencies} = await moduleRecord.instantiation;
284
- const exports2 = {};
285
- const depsMapped = dependencies ? await Promise.all(dependencies.map(async (dep) => {
286
- if (dep === "exports") {
287
- return exports2;
288
- }
289
- const resolvedDepId = await this.resolve(dep);
290
- const moduleRecord2 = this.moduleRegistry.get(resolvedDepId);
291
- if (!moduleRecord2) {
292
- throw new import_messages.LoaderError(import_messages.FAILED_DEP, [resolvedDepId]);
293
- }
294
- const module2 = moduleRecord2.module;
295
- if (!moduleRecord2.evaluated) {
296
- return this.getCircularDependencyWrapper(module2);
297
- }
298
- if (module2) {
299
- return module2.__defaultInterop ? module2.default : module2;
262
+ async evaluateDependent(dep, evaluationMap) {
263
+ const resolvedDepId = await this.resolve(dep);
264
+ const depModuleRecord = this.getModuleRecord(resolvedDepId, dep);
265
+ let module2 = depModuleRecord.module;
266
+ const handleReturn = (module3) => {
267
+ if (module3) {
268
+ return module3.__defaultInterop ? module3.default : module3;
300
269
  }
301
270
  throw new import_messages.LoaderError(import_messages.FAILED_DEP, [resolvedDepId]);
302
- })) : [];
303
- if (moduleRecord.evaluated) {
304
- return moduleRecord.module;
271
+ };
272
+ if (depModuleRecord.evaluated) {
273
+ return handleReturn(module2);
305
274
  }
306
- let moduleDefault;
307
- try {
308
- moduleDefault = exporter(...depsMapped);
309
- } catch (e) {
310
- throw new import_messages.LoaderError(import_messages.EXPORTER_ERROR, [moduleRecord.id, e.message || e]);
275
+ if (!evaluationMap[depModuleRecord.id]) {
276
+ if (!depModuleRecord.evaluationPromise) {
277
+ depModuleRecord.evaluationPromise = this.evaluateModule(depModuleRecord, evaluationMap);
278
+ }
279
+ return depModuleRecord.evaluationPromise.then((module3) => {
280
+ return handleReturn(module3);
281
+ });
282
+ } else {
283
+ module2 = getCircularDependencyWrapper(module2);
311
284
  }
285
+ return handleReturn(module2);
286
+ }
287
+ async evaluateModule(moduleRecord, evaluationMap) {
288
+ const chainMap = {...evaluationMap};
289
+ chainMap[moduleRecord.id] = true;
290
+ const {exporter, dependencies} = await moduleRecord.instantiation;
291
+ const {depsMapped, exports: exports2} = await this.evaluateDependencies(dependencies, chainMap);
292
+ let moduleDefault = this.evaluateModuleCode(exporter, depsMapped, moduleRecord);
312
293
  if (moduleDefault !== void 0) {
313
294
  moduleDefault = {default: moduleDefault};
314
295
  Object.defineProperty(moduleDefault, "__defaultInterop", {value: true});
315
296
  } else {
316
- if (this.isNamedExportDefaultOnly(exports2)) {
297
+ if (isNamedExportDefaultOnly(exports2)) {
317
298
  Object.defineProperty(exports2, "__useDefault", {value: true});
318
299
  }
319
300
  }
@@ -338,27 +319,16 @@ var ModuleRegistry = class {
338
319
  if (moduleExports.__esModule) {
339
320
  Object.defineProperty(moduleRecord.module, "__esModule", {value: true});
340
321
  }
341
- moduleRecord.evaluated = true;
342
322
  Object.freeze(moduleRecord.module);
323
+ moduleRecord.evaluated = true;
324
+ moduleRecord.evaluationPromise = null;
343
325
  return moduleRecord.module;
344
326
  }
345
- isNamedExportDefaultOnly(exports2) {
346
- return exports2 !== void 0 && Object.getOwnPropertyNames(exports2).length === 2 && Object.prototype.hasOwnProperty.call(exports2, "default") && Object.prototype.hasOwnProperty.call(exports2, "__esModule");
347
- }
348
- getCircularDependencyWrapper(module2) {
349
- const tmp = () => {
350
- return module2.__useDefault || module2.__defaultInterop ? module2.default : module2;
351
- };
352
- tmp.__circular__ = true;
353
- return tmp;
354
- }
355
- async evaluateModuleDependencies(dependencyModuleRecords, evaluationMap) {
356
- for (let i = 0; i < dependencyModuleRecords.length; i++) {
357
- const depRecord = dependencyModuleRecords[i];
358
- if (!depRecord.evaluated && !evaluationMap[depRecord.id]) {
359
- evaluationMap[depRecord.id] = true;
360
- await this.evaluateModule(depRecord, evaluationMap);
361
- }
327
+ evaluateModuleCode(evaluatedExporter, depsMapped, moduleRecord) {
328
+ try {
329
+ return evaluatedExporter(...depsMapped);
330
+ } catch (e) {
331
+ throw new import_messages.LoaderError(import_messages.EXPORTER_ERROR, [moduleRecord.id, e.message || e]);
362
332
  }
363
333
  }
364
334
  async getModuleDef(resolvedId, originalId) {
@@ -455,7 +425,17 @@ var ModuleRegistry = class {
455
425
  this.handleStaleModuleHook = [handleStaleModule];
456
426
  }
457
427
  }
458
- isValidResolveResponse(res) {
459
- return res === null || typeof res === "string" || res && typeof res.url === "string";
460
- }
461
428
  };
429
+ function isNamedExportDefaultOnly(exports2) {
430
+ return exports2 !== void 0 && Object.getOwnPropertyNames(exports2).length === 2 && Object.prototype.hasOwnProperty.call(exports2, "default") && Object.prototype.hasOwnProperty.call(exports2, "__esModule");
431
+ }
432
+ function getCircularDependencyWrapper(module2) {
433
+ const tmp = () => {
434
+ return module2.__useDefault || module2.__defaultInterop ? module2.default : module2;
435
+ };
436
+ tmp.__circular__ = true;
437
+ return tmp;
438
+ }
439
+ function isValidResolveResponse(res) {
440
+ return res === null || typeof res === "string" || res && typeof res.url === "string";
441
+ }
@@ -53,12 +53,12 @@ var ModuleRegistry = class {
53
53
  metadata
54
54
  });
55
55
  const resolvedId = await this.resolve(id, importer);
56
- const moduleRecord = await this.getModuleRecord(resolvedId, id);
56
+ const moduleRecord = this.getModuleRecord(resolvedId, id);
57
57
  if (moduleRecord.evaluated) {
58
58
  return moduleRecord.module;
59
59
  } else {
60
60
  if (!moduleRecord.evaluationPromise) {
61
- moduleRecord.evaluationPromise = this.topLevelEvaluation(moduleRecord);
61
+ moduleRecord.evaluationPromise = this.evaluateModule(moduleRecord, {});
62
62
  }
63
63
  return moduleRecord.evaluationPromise;
64
64
  }
@@ -77,7 +77,7 @@ var ModuleRegistry = class {
77
77
  if (response || response === null) {
78
78
  result = (0, import_resolveAndLoadHook.isResponseAPromise)(response) ? await response : response;
79
79
  }
80
- if (!this.isValidResolveResponse(result)) {
80
+ if (!isValidResolveResponse(result)) {
81
81
  throw new import_messages.LoaderError(import_messages.INVALID_LOADER_SERVICE_RESPONSE);
82
82
  }
83
83
  if (result !== null) {
@@ -243,34 +243,21 @@ var ModuleRegistry = class {
243
243
  }
244
244
  return moduleRecord;
245
245
  }
246
- async getModuleRecord(resolvedId, id) {
246
+ getModuleRecord(resolvedId, id) {
247
247
  const existingRecord = this.getExistingModuleRecord(resolvedId, id);
248
248
  if (existingRecord) {
249
249
  return existingRecord;
250
250
  }
251
- const instantiation = this.getModuleDef(resolvedId, id);
252
- const dependencyRecords = instantiation.then((moduleDef) => {
253
- const dependencies = moduleDef && moduleDef.dependencies || [];
254
- const filtered = dependencies.map((dep) => {
255
- if (dep === "exports") {
256
- return;
257
- }
258
- (0, import_messages.invariant)(dep !== "require", import_messages.NO_AMD_REQUIRE);
259
- return this.getModuleDependencyRecord.call(this, dep);
260
- }).filter((depRecord) => depRecord !== void 0);
261
- return Promise.all(filtered);
262
- });
263
251
  const newModuleRecord = {
264
252
  id: resolvedId,
265
253
  module: Object.create(null),
266
- dependencyRecords,
267
- instantiation,
254
+ instantiation: this.getModuleDef(resolvedId, id),
268
255
  evaluated: false,
269
256
  evaluationPromise: null
270
257
  };
271
258
  this.moduleRegistry.set(resolvedId, newModuleRecord);
272
259
  this.storeModuleAlias(id, resolvedId);
273
- return dependencyRecords.then(() => newModuleRecord);
260
+ return newModuleRecord;
274
261
  }
275
262
  storeModuleAlias(aliasId, resolvedId) {
276
263
  if (aliasId !== resolvedId) {
@@ -286,66 +273,60 @@ var ModuleRegistry = class {
286
273
  }
287
274
  }
288
275
  }
289
- async getModuleDependencyRecord(dependency) {
290
- const resolvedDepId = await this.resolve(dependency);
291
- return this.getModuleRecord(resolvedDepId, dependency);
292
- }
293
- async topLevelEvaluation(moduleRecord) {
294
- await this.instantiateAll(moduleRecord, {});
295
- return this.evaluateModule(moduleRecord, {});
296
- }
297
- async instantiateAll(moduleRecord, instantiatedMap) {
298
- if (!instantiatedMap[moduleRecord.id]) {
299
- instantiatedMap[moduleRecord.id] = true;
300
- const dependencyModuleRecords = await moduleRecord.dependencyRecords;
301
- if (dependencyModuleRecords) {
302
- for (let i = 0; i < dependencyModuleRecords.length; i++) {
303
- const depRecord = dependencyModuleRecords[i];
304
- await this.instantiateAll(depRecord, instantiatedMap);
276
+ async evaluateDependencies(dependencies, evaluationMap) {
277
+ const exports2 = {};
278
+ const promiseArray = [];
279
+ if (dependencies) {
280
+ for (const dep of dependencies) {
281
+ if (dep === "exports") {
282
+ promiseArray.push(Promise.resolve(exports2));
283
+ } else {
284
+ (0, import_messages.invariant)(dep !== "require", import_messages.NO_AMD_REQUIRE);
285
+ promiseArray.push(this.evaluateDependent(dep, evaluationMap));
305
286
  }
306
287
  }
307
288
  }
289
+ return Promise.all(promiseArray).then((results) => {
290
+ const depsMapped = results.filter((result) => result !== void 0);
291
+ return {depsMapped, exports: exports2};
292
+ });
308
293
  }
309
- async evaluateModule(moduleRecord, evaluationMap) {
310
- const dependencyModuleRecords = await moduleRecord.dependencyRecords;
311
- if (dependencyModuleRecords.length > 0) {
312
- evaluationMap[moduleRecord.id] = true;
313
- await this.evaluateModuleDependencies(dependencyModuleRecords, evaluationMap);
314
- }
315
- const {exporter, dependencies} = await moduleRecord.instantiation;
316
- const exports2 = {};
317
- const depsMapped = dependencies ? await Promise.all(dependencies.map(async (dep) => {
318
- if (dep === "exports") {
319
- return exports2;
320
- }
321
- const resolvedDepId = await this.resolve(dep);
322
- const moduleRecord2 = this.moduleRegistry.get(resolvedDepId);
323
- if (!moduleRecord2) {
324
- throw new import_messages.LoaderError(import_messages.FAILED_DEP, [resolvedDepId]);
325
- }
326
- const module2 = moduleRecord2.module;
327
- if (!moduleRecord2.evaluated) {
328
- return this.getCircularDependencyWrapper(module2);
329
- }
330
- if (module2) {
331
- return module2.__defaultInterop ? module2.default : module2;
294
+ async evaluateDependent(dep, evaluationMap) {
295
+ const resolvedDepId = await this.resolve(dep);
296
+ const depModuleRecord = this.getModuleRecord(resolvedDepId, dep);
297
+ let module2 = depModuleRecord.module;
298
+ const handleReturn = (module3) => {
299
+ if (module3) {
300
+ return module3.__defaultInterop ? module3.default : module3;
332
301
  }
333
302
  throw new import_messages.LoaderError(import_messages.FAILED_DEP, [resolvedDepId]);
334
- })) : [];
335
- if (moduleRecord.evaluated) {
336
- return moduleRecord.module;
303
+ };
304
+ if (depModuleRecord.evaluated) {
305
+ return handleReturn(module2);
337
306
  }
338
- let moduleDefault;
339
- try {
340
- moduleDefault = exporter(...depsMapped);
341
- } catch (e) {
342
- throw new import_messages.LoaderError(import_messages.EXPORTER_ERROR, [moduleRecord.id, e.message || e]);
307
+ if (!evaluationMap[depModuleRecord.id]) {
308
+ if (!depModuleRecord.evaluationPromise) {
309
+ depModuleRecord.evaluationPromise = this.evaluateModule(depModuleRecord, evaluationMap);
310
+ }
311
+ return depModuleRecord.evaluationPromise.then((module3) => {
312
+ return handleReturn(module3);
313
+ });
314
+ } else {
315
+ module2 = getCircularDependencyWrapper(module2);
343
316
  }
317
+ return handleReturn(module2);
318
+ }
319
+ async evaluateModule(moduleRecord, evaluationMap) {
320
+ const chainMap = {...evaluationMap};
321
+ chainMap[moduleRecord.id] = true;
322
+ const {exporter, dependencies} = await moduleRecord.instantiation;
323
+ const {depsMapped, exports: exports2} = await this.evaluateDependencies(dependencies, chainMap);
324
+ let moduleDefault = this.evaluateModuleCode(exporter, depsMapped, moduleRecord);
344
325
  if (moduleDefault !== void 0) {
345
326
  moduleDefault = {default: moduleDefault};
346
327
  Object.defineProperty(moduleDefault, "__defaultInterop", {value: true});
347
328
  } else {
348
- if (this.isNamedExportDefaultOnly(exports2)) {
329
+ if (isNamedExportDefaultOnly(exports2)) {
349
330
  Object.defineProperty(exports2, "__useDefault", {value: true});
350
331
  }
351
332
  }
@@ -370,27 +351,16 @@ var ModuleRegistry = class {
370
351
  if (moduleExports.__esModule) {
371
352
  Object.defineProperty(moduleRecord.module, "__esModule", {value: true});
372
353
  }
373
- moduleRecord.evaluated = true;
374
354
  Object.freeze(moduleRecord.module);
355
+ moduleRecord.evaluated = true;
356
+ moduleRecord.evaluationPromise = null;
375
357
  return moduleRecord.module;
376
358
  }
377
- isNamedExportDefaultOnly(exports2) {
378
- return exports2 !== void 0 && Object.getOwnPropertyNames(exports2).length === 2 && Object.prototype.hasOwnProperty.call(exports2, "default") && Object.prototype.hasOwnProperty.call(exports2, "__esModule");
379
- }
380
- getCircularDependencyWrapper(module2) {
381
- const tmp = () => {
382
- return module2.__useDefault || module2.__defaultInterop ? module2.default : module2;
383
- };
384
- tmp.__circular__ = true;
385
- return tmp;
386
- }
387
- async evaluateModuleDependencies(dependencyModuleRecords, evaluationMap) {
388
- for (let i = 0; i < dependencyModuleRecords.length; i++) {
389
- const depRecord = dependencyModuleRecords[i];
390
- if (!depRecord.evaluated && !evaluationMap[depRecord.id]) {
391
- evaluationMap[depRecord.id] = true;
392
- await this.evaluateModule(depRecord, evaluationMap);
393
- }
359
+ evaluateModuleCode(evaluatedExporter, depsMapped, moduleRecord) {
360
+ try {
361
+ return evaluatedExporter(...depsMapped);
362
+ } catch (e) {
363
+ throw new import_messages.LoaderError(import_messages.EXPORTER_ERROR, [moduleRecord.id, e.message || e]);
394
364
  }
395
365
  }
396
366
  async getModuleDef(resolvedId, originalId) {
@@ -470,7 +440,17 @@ var ModuleRegistry = class {
470
440
  this.handleStaleModuleHook = [handleStaleModule];
471
441
  }
472
442
  }
473
- isValidResolveResponse(res) {
474
- return res === null || typeof res === "string" || res && typeof res.url === "string";
475
- }
476
443
  };
444
+ function isValidResolveResponse(res) {
445
+ return res === null || typeof res === "string" || res && typeof res.url === "string";
446
+ }
447
+ function isNamedExportDefaultOnly(exports2) {
448
+ return exports2 !== void 0 && Object.getOwnPropertyNames(exports2).length === 2 && Object.prototype.hasOwnProperty.call(exports2, "default") && Object.prototype.hasOwnProperty.call(exports2, "__esModule");
449
+ }
450
+ function getCircularDependencyWrapper(module2) {
451
+ const tmp = () => {
452
+ return module2.__useDefault || module2.__defaultInterop ? module2.default : module2;
453
+ };
454
+ tmp.__circular__ = true;
455
+ return tmp;
456
+ }
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: MIT
5
5
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
6
6
  */
7
- /* LWR ESM Module Loader v0.12.0-alpha.6 */
7
+ /* LWR ESM Module Loader v0.12.0-alpha.8 */
8
8
  function _optionalChain$1(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
9
9
 
10
10