importmap-rails 0.3.2 → 0.3.3
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ad1aceb19e574cd589057539db280a47635d950f02b927fe6cdad83b86ba43e
|
4
|
+
data.tar.gz: e6b47536890332ef62639c37cb19ea82b73cc32a51baa3904e1e32c78aa2203c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27c39e5a9a516c97a601f86deb47c93f4653dcbd1f1f774ea3256065c15addf1913338d74f44a4549b0e56d246f8b68b3a05b747b0ccf52937aa64a947886a72
|
7
|
+
data.tar.gz: e05d2fc49ec7a8955fda9fbbda78fa717399d8c3cae9d1fef0c5a94957b6678e45cfd8d1eabf2d78516f94ecfb4458c32c637ae59e1c03466f0a7bfaacd9f5ba
|
@@ -1 +1 @@
|
|
1
|
-
//= require ./es-module-shims@0.12.
|
1
|
+
//= require ./es-module-shims@0.12.7.js
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* ES Module Shims 0.12.
|
1
|
+
/* ES Module Shims 0.12.7 */
|
2
2
|
(function () {
|
3
3
|
// Bail on all shimming for Chrome until https://github.com/guybedford/es-module-shims/issues/150
|
4
4
|
if (navigator.userAgent.match("Chrome")) return
|
@@ -271,7 +271,7 @@
|
|
271
271
|
|
272
272
|
let waitingForImportMapsInterval;
|
273
273
|
let firstTopLevelProcess = true;
|
274
|
-
async function topLevelLoad (url, fetchOpts, source, nativelyLoaded) {
|
274
|
+
async function topLevelLoad (url, fetchOpts, source, nativelyLoaded, lastStaticLoadPromise) {
|
275
275
|
// no need to even fetch if we have feature support
|
276
276
|
await featureDetectionPromise;
|
277
277
|
if (waitingForImportMapsInterval > 0) {
|
@@ -285,7 +285,7 @@
|
|
285
285
|
await importMapPromise;
|
286
286
|
// early analysis opt-out
|
287
287
|
if (nativelyLoaded && supportsDynamicImport && supportsImportMeta && supportsImportMaps && supportsJsonAssertions && supportsCssAssertions && !importMapSrcOrLazy) {
|
288
|
-
// dont reexec inline for polyfills -> just return null
|
288
|
+
// dont reexec inline for polyfills -> just return null (since no module id for executed inline module scripts)
|
289
289
|
return source && nativelyLoaded ? null : dynamicImport(source ? createBlob(source) : url);
|
290
290
|
}
|
291
291
|
await init;
|
@@ -294,17 +294,30 @@
|
|
294
294
|
await loadAll(load, seen);
|
295
295
|
lastLoad = undefined;
|
296
296
|
resolveDeps(load, seen);
|
297
|
+
await lastStaticLoadPromise;
|
297
298
|
if (source && !shimMode && !load.n) {
|
299
|
+
if (lastStaticLoadPromise) {
|
300
|
+
didExecForReadyPromise = true;
|
301
|
+
if (domContentLoaded)
|
302
|
+
didExecForDomContentLoaded = true;
|
303
|
+
}
|
298
304
|
const module = dynamicImport(createBlob(source));
|
299
305
|
if (shouldRevokeBlobURLs) revokeObjectURLs(Object.keys(seen));
|
300
306
|
return module;
|
301
307
|
}
|
302
308
|
const module = await dynamicImport(load.b);
|
309
|
+
if (lastStaticLoadPromise && (!nativelyLoaded || load.b !== load.u)) {
|
310
|
+
didExecForReadyPromise = true;
|
311
|
+
if (domContentLoaded)
|
312
|
+
didExecForDomContentLoaded = true;
|
313
|
+
}
|
303
314
|
// if the top-level load is a shell, run its update function
|
304
315
|
if (load.s) {
|
305
316
|
(await dynamicImport(load.s)).u$_(module);
|
306
317
|
}
|
307
318
|
if (shouldRevokeBlobURLs) revokeObjectURLs(Object.keys(seen));
|
319
|
+
// when tla is supported, this should return the tla promise as an actual handle
|
320
|
+
// so readystate can still correspond to the sync subgraph exec completions
|
308
321
|
return module;
|
309
322
|
}
|
310
323
|
|
@@ -354,6 +367,7 @@
|
|
354
367
|
const skip = esmsInitOptions.skip || /^https?:\/\/(cdn\.skypack\.dev|jspm\.dev)\//;
|
355
368
|
const onerror = esmsInitOptions.onerror || ((e) => { throw e; });
|
356
369
|
const shouldRevokeBlobURLs = esmsInitOptions.revokeBlobURLs;
|
370
|
+
const noLoadEventRetriggers = esmsInitOptions.noLoadEventRetriggers;
|
357
371
|
|
358
372
|
function urlJsString (url) {
|
359
373
|
return `'${url.replace(/'/g, "\\'")}'`;
|
@@ -550,7 +564,7 @@
|
|
550
564
|
return load;
|
551
565
|
}
|
552
566
|
|
553
|
-
|
567
|
+
function processScripts () {
|
554
568
|
if (waitingForImportMapsInterval > 0 && document.readyState !== 'loading') {
|
555
569
|
clearTimeout(waitingForImportMapsInterval);
|
556
570
|
waitingForImportMapsInterval = 0;
|
@@ -558,7 +572,7 @@
|
|
558
572
|
for (const link of document.querySelectorAll('link[rel="modulepreload"]'))
|
559
573
|
processPreload(link);
|
560
574
|
for (const script of document.querySelectorAll('script[type="module-shim"],script[type="importmap-shim"],script[type="module"],script[type="importmap"]'))
|
561
|
-
|
575
|
+
processScript(script);
|
562
576
|
}
|
563
577
|
|
564
578
|
function getFetchOpts (script) {
|
@@ -576,12 +590,29 @@
|
|
576
590
|
return fetchOpts;
|
577
591
|
}
|
578
592
|
|
579
|
-
|
593
|
+
let staticLoadCnt = 0;
|
594
|
+
let didExecForReadyPromise = false;
|
595
|
+
let didExecForDomContentLoaded = false;
|
596
|
+
let lastStaticLoadPromise = Promise.resolve();
|
597
|
+
let domContentLoaded = false;
|
598
|
+
document.addEventListener('DOMContentLoaded', () => domContentLoaded = true);
|
599
|
+
function staticLoadCheck () {
|
600
|
+
staticLoadCnt--;
|
601
|
+
if (staticLoadCnt === 0 && !noLoadEventRetriggers) {
|
602
|
+
if (didExecForDomContentLoaded)
|
603
|
+
document.dispatchEvent(new Event('DOMContentLoaded'));
|
604
|
+
if (didExecForReadyPromise && document.readyState === 'complete')
|
605
|
+
document.dispatchEvent(new Event('readystatechange'));
|
606
|
+
}
|
607
|
+
}
|
608
|
+
|
609
|
+
function processScript (script, dynamic) {
|
580
610
|
if (script.ep) // ep marker = script processed
|
581
611
|
return;
|
582
612
|
const shim = script.type.endsWith('-shim');
|
583
613
|
if (shim) shimMode = true;
|
584
|
-
const type =
|
614
|
+
const type = shimMode ? script.type.slice(0, -5) : script.type;
|
615
|
+
// dont process module scripts in shim mode or noshim module scripts in polyfill mode
|
585
616
|
if (!shim && shimMode || script.getAttribute('noshim') !== null)
|
586
617
|
return;
|
587
618
|
// empty inline scripts sometimes show before domready
|
@@ -589,7 +620,14 @@
|
|
589
620
|
return;
|
590
621
|
script.ep = true;
|
591
622
|
if (type === 'module') {
|
592
|
-
|
623
|
+
const isReadyScript = document.readyState !== 'complete';
|
624
|
+
if (isReadyScript) staticLoadCnt++;
|
625
|
+
const p = topLevelLoad(script.src || `${baseUrl}?${id++}`, getFetchOpts(script), !script.src && script.innerHTML, !shimMode, isReadyScript && lastStaticLoadPromise);
|
626
|
+
p.catch(onerror);
|
627
|
+
if (isReadyScript) {
|
628
|
+
lastStaticLoadPromise = p.catch(staticLoadCheck);
|
629
|
+
p.then(staticLoadCheck);
|
630
|
+
}
|
593
631
|
}
|
594
632
|
else if (type === 'importmap') {
|
595
633
|
importMapPromise = importMapPromise.then(async () => {
|
@@ -655,4 +693,4 @@
|
|
655
693
|
waitingForImportMapsInterval = setInterval(processScripts, 20);
|
656
694
|
}
|
657
695
|
|
658
|
-
}());
|
696
|
+
}());
|
data/lib/importmap/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: importmap-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -34,7 +34,7 @@ files:
|
|
34
34
|
- README.md
|
35
35
|
- Rakefile
|
36
36
|
- app/assets/javascripts/es-module-shims.js
|
37
|
-
- app/assets/javascripts/es-module-shims@0.12.
|
37
|
+
- app/assets/javascripts/es-module-shims@0.12.7.js
|
38
38
|
- app/helpers/importmap/importmap_tags_helper.rb
|
39
39
|
- lib/importmap-rails.rb
|
40
40
|
- lib/importmap/engine.rb
|