es-module-shims 2.2.0 → 2.3.0

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.
@@ -1,111 +1,283 @@
1
- /* ES Module Shims 2.2.0 */
1
+ /** ES Module Shims 2.3.0 */
2
2
  (function () {
3
3
 
4
- const hasDocument = typeof document !== 'undefined';
5
-
6
- const noop = () => {};
7
-
8
- const dynamicImport = (u, errUrl) => import(u);
9
-
10
- const optionsScript = hasDocument ? document.querySelector('script[type=esms-options]') : undefined;
11
-
12
- const esmsInitOptions = optionsScript ? JSON.parse(optionsScript.innerHTML) : {};
13
- Object.assign(esmsInitOptions, self.esmsInitOptions || {});
14
-
15
- // shim mode is determined on initialization, no late shim mode
16
- const shimMode =
17
- hasDocument ?
18
- esmsInitOptions.shimMode ||
19
- document.querySelectorAll('script[type=module-shim],script[type=importmap-shim],link[rel=modulepreload-shim]')
20
- .length > 0
21
- : true;
22
-
23
- const importHook = globalHook(shimMode && esmsInitOptions.onimport);
24
- const resolveHook = globalHook(shimMode && esmsInitOptions.resolve);
25
- let fetchHook = esmsInitOptions.fetch ? globalHook(esmsInitOptions.fetch) : fetch;
26
- const metaHook = esmsInitOptions.meta ? globalHook(shimMode && esmsInitOptions.meta) : noop;
27
- const tsTransform =
28
- esmsInitOptions.tsTransform ||
29
- (hasDocument &&
30
- document.currentScript &&
31
- document.currentScript.src.replace(/\.debug\.js$/ , '-typescript.js')) ||
32
- './es-module-shims-typescript.js';
33
-
34
- const mapOverrides = esmsInitOptions.mapOverrides;
35
-
36
- let nonce = esmsInitOptions.nonce;
37
- if (!nonce && hasDocument) {
38
- const nonceElement = document.querySelector('script[nonce]');
39
- if (nonceElement) nonce = nonceElement.nonce || nonceElement.getAttribute('nonce');
40
- }
41
-
42
- const onerror = globalHook(esmsInitOptions.onerror || noop);
43
-
44
- const { revokeBlobURLs, noLoadEventRetriggers, enforceIntegrity } = esmsInitOptions;
45
-
46
- function globalHook(name) {
47
- return typeof name === 'string' ? self[name] : name;
48
- }
49
-
50
- const enable = Array.isArray(esmsInitOptions.polyfillEnable) ? esmsInitOptions.polyfillEnable : [];
51
- const enableAll = esmsInitOptions.polyfillEnable === 'all' || enable.includes('all');
52
- const wasmInstancePhaseEnabled =
53
- enable.includes('wasm-modules') || enable.includes('wasm-module-instances') || enableAll;
54
- const wasmSourcePhaseEnabled =
55
- enable.includes('wasm-modules') || enable.includes('wasm-module-sources') || enableAll;
56
- const deferPhaseEnabled = enable.includes('import-defer') || enableAll;
57
-
58
- const onpolyfill =
59
- esmsInitOptions.onpolyfill ?
60
- globalHook(esmsInitOptions.onpolyfill)
61
- : () => {
62
- console.log(`%c^^ Module error above is polyfilled and can be ignored ^^`, 'font-weight:900;color:#391');
63
- };
64
-
65
- const baseUrl =
66
- hasDocument ?
67
- document.baseURI
68
- : `${location.protocol}//${location.host}${
69
- location.pathname.includes('/') ?
70
- location.pathname.slice(0, location.pathname.lastIndexOf('/') + 1)
71
- : location.pathname
72
- }`;
73
-
74
- const createBlob = (source, type = 'text/javascript') => URL.createObjectURL(new Blob([source], { type }));
75
- let { skip } = esmsInitOptions;
76
- if (Array.isArray(skip)) {
77
- const l = skip.map(s => new URL(s, baseUrl).href);
78
- skip = s => l.some(i => (i[i.length - 1] === '/' && s.startsWith(i)) || s === i);
79
- } else if (typeof skip === 'string') {
80
- const r = new RegExp(skip);
81
- skip = s => r.test(s);
82
- } else if (skip instanceof RegExp) {
83
- skip = s => skip.test(s);
84
- }
85
-
86
- const dispatchError = error => self.dispatchEvent(Object.assign(new Event('error'), { error }));
87
-
88
- const throwError = err => {
89
- (self.reportError || dispatchError)(err), void onerror(err);
90
- };
91
-
92
- function fromParent(parent) {
93
- return parent ? ` imported from ${parent}` : '';
4
+ let invalidate;
5
+ const hotReload$1 = url => invalidate(new URL(url, baseUrl).href);
6
+ const initHotReload = () => {
7
+ let _importHook = importHook,
8
+ _resolveHook = resolveHook,
9
+ _metaHook = metaHook;
10
+
11
+ let defaultResolve;
12
+ let hotResolveHook = (id, parent, _defaultResolve) => {
13
+ if (!defaultResolve) defaultResolve = _defaultResolve;
14
+ const originalParent = stripVersion(parent);
15
+ const url = stripVersion(defaultResolve(id, originalParent));
16
+ const parents = getHotState(url).p;
17
+ if (!parents.includes(originalParent)) parents.push(originalParent);
18
+ return toVersioned(url);
19
+ };
20
+ const hotImportHook = url => {
21
+ getHotState(url).e = true;
22
+ };
23
+ const hotMetaHook = (metaObj, url) => {
24
+ metaObj.hot = new Hot(url);
25
+ };
26
+
27
+ const Hot = class Hot {
28
+ constructor(url) {
29
+ this.data = getHotState((this.url = stripVersion(url))).d;
30
+ }
31
+ accept(deps, cb) {
32
+ if (typeof deps === 'function') {
33
+ cb = deps;
34
+ deps = null;
35
+ }
36
+ const hotState = getHotState(this.url);
37
+ if (!hotState.A) return;
38
+ (hotState.a = hotState.a || []).push([
39
+ typeof deps === 'string' ? defaultResolve(deps, this.url)
40
+ : deps ? deps.map(d => defaultResolve(d, this.url))
41
+ : null,
42
+ cb
43
+ ]);
44
+ }
45
+ dispose(cb) {
46
+ getHotState(this.url).u = cb;
47
+ }
48
+ invalidate() {
49
+ const hotState = getHotState(this.url);
50
+ hotState.a = null;
51
+ hotState.A = true;
52
+ const seen = [this.url];
53
+ for (const p of hotState.p) invalidate(p, this.url, seen);
54
+ }
55
+ };
56
+
57
+ const versionedRegEx = /\?v=\d+$/;
58
+ const stripVersion = url => {
59
+ const versionMatch = url.match(versionedRegEx);
60
+ return versionMatch ? url.slice(0, -versionMatch[0].length) : url;
61
+ };
62
+
63
+ const toVersioned = url => {
64
+ const v = getHotState(url).v;
65
+ return url + (v ? '?v=' + v : '');
66
+ };
67
+
68
+ let hotRegistry = {},
69
+ curInvalidationRoots = new Set(),
70
+ curInvalidationInterval;
71
+ const getHotState = url =>
72
+ hotRegistry[url] ||
73
+ (hotRegistry[url] = {
74
+ // version
75
+ v: 0,
76
+ // accept list ([deps, cb] pairs)
77
+ a: null,
78
+ // accepting acceptors
79
+ A: true,
80
+ // unload callback
81
+ u: null,
82
+ // entry point
83
+ e: false,
84
+ // hot data
85
+ d: {},
86
+ // parents
87
+ p: []
88
+ });
89
+
90
+ invalidate = (url, fromUrl, seen = []) => {
91
+ if (!seen.includes(url)) {
92
+ seen.push(url);
93
+ console.info(`es-module-shims: hot reload ${url}`);
94
+ const hotState = hotRegistry[url];
95
+ if (hotState) {
96
+ hotState.A = false;
97
+ if (
98
+ hotState.a &&
99
+ hotState.a.some(([d]) => d && (typeof d === 'string' ? d === fromUrl : d.includes(fromUrl)))
100
+ ) {
101
+ curInvalidationRoots.add(fromUrl);
102
+ } else {
103
+ if (hotState.e || hotState.a) curInvalidationRoots.add(url);
104
+ hotState.v++;
105
+ if (!hotState.a) for (const parent of hotState.p) invalidate(parent, url, seen);
106
+ }
107
+ }
108
+ }
109
+ if (!curInvalidationInterval)
110
+ curInvalidationInterval = setTimeout(() => {
111
+ curInvalidationInterval = null;
112
+ const earlyRoots = new Set();
113
+ for (const root of curInvalidationRoots) {
114
+ const hotState = hotRegistry[root];
115
+ importShim(toVersioned(root)).then(m => {
116
+ if (hotState.a) {
117
+ hotState.a.every(([d, c]) => d === null && !earlyRoots.has(c) && c(m));
118
+ // unload should be the latest unload handler from the just loaded module
119
+ if (hotState.u) {
120
+ hotState.u(hotState.d);
121
+ hotState.u = null;
122
+ }
123
+ }
124
+ for (const parent of hotState.p) {
125
+ const hotState = hotRegistry[parent];
126
+ if (hotState && hotState.a)
127
+ hotState.a.every(async ([d, c]) => {
128
+ return (
129
+ d &&
130
+ !earlyRoots.has(c) &&
131
+ (typeof d === 'string' ?
132
+ d === root && c(m)
133
+ : c(await Promise.all(d.map(d => (earlyRoots.push(c), importShim(toVersioned(d)))))))
134
+ );
135
+ });
136
+ }
137
+ }, noop);
138
+ }
139
+ curInvalidationRoots = new Set();
140
+ }, hotReloadInterval);
141
+ };
142
+
143
+ return [
144
+ _importHook ?
145
+ (url, opts, parentUrl) => {
146
+ _importHook(url, opts, parentUrl);
147
+ hotImportHook(url);
148
+ }
149
+ : hotImportHook,
150
+ _resolveHook ?
151
+ (id, parent, defaultResolve) =>
152
+ hotResolveHook(id, parent, (id, parent) => _resolveHook(id, parent, defaultResolve))
153
+ : hotResolveHook,
154
+ _metaHook ?
155
+ (metaObj, url) => {
156
+ _metaHook(metaObj, url);
157
+ hotMetaHook(metaObj, url);
158
+ }
159
+ : hotMetaHook
160
+ ];
161
+ };
162
+
163
+ if (self.importShim) {
164
+ console.info(
165
+ `es-module-shims: skipping initialization as importShim was already registered by another polyfill instance`
166
+ );
167
+ return;
168
+ }
169
+
170
+ const hasDocument = typeof document !== 'undefined';
171
+
172
+ const noop = () => {};
173
+
174
+ const dynamicImport = (u, errUrl) => import(u);
175
+
176
+ const optionsScript = hasDocument ? document.querySelector('script[type=esms-options]') : undefined;
177
+
178
+ const esmsInitOptions = optionsScript ? JSON.parse(optionsScript.innerHTML) : {};
179
+ Object.assign(esmsInitOptions, self.esmsInitOptions || {});
180
+
181
+ // shim mode is determined on initialization, no late shim mode
182
+ const shimMode =
183
+ esmsInitOptions.shimMode ||
184
+ (hasDocument &&
185
+ document.querySelectorAll('script[type=module-shim],script[type=importmap-shim],link[rel=modulepreload-shim]')
186
+ .length > 0);
187
+
188
+ let importHook,
189
+ resolveHook,
190
+ fetchHook = fetch,
191
+ metaHook = noop,
192
+ tsTransform =
193
+ (hasDocument && document.currentScript && document.currentScript.src.replace(/(\.\w+)?\.js$/, '-typescript.js')) ||
194
+ './es-module-shims-typescript.js';
195
+
196
+ const {
197
+ revokeBlobURLs,
198
+ noLoadEventRetriggers,
199
+ enforceIntegrity,
200
+ hotReload,
201
+ hotReloadInterval = 100,
202
+ nativePassthrough = !hotReload
203
+ } = esmsInitOptions;
204
+
205
+ const globalHook = name => (typeof name === 'string' ? self[name] : name);
206
+
207
+ if (esmsInitOptions.onimport) importHook = globalHook(esmsInitOptions.onimport);
208
+ if (esmsInitOptions.resolve) resolveHook = globalHook(esmsInitOptions.resolve);
209
+ if (esmsInitOptions.fetch) fetchHook = globalHook(esmsInitOptions.fetch);
210
+ if (esmsInitOptions.meta) metaHook = globalHook(esmsInitOptions.meta);
211
+ if (esmsInitOptions.tsTransform) tsTransform = globalHook(esmsInitOptions.tsTransform);
212
+
213
+ if (hotReload) [importHook, resolveHook, metaHook] = initHotReload();
214
+
215
+ const mapOverrides = esmsInitOptions.mapOverrides;
216
+
217
+ let nonce = esmsInitOptions.nonce;
218
+ if (!nonce && hasDocument) {
219
+ const nonceElement = document.querySelector('script[nonce]');
220
+ if (nonceElement) nonce = nonceElement.nonce || nonceElement.getAttribute('nonce');
94
221
  }
95
222
 
223
+ const onerror = globalHook(esmsInitOptions.onerror || noop);
224
+
225
+ const enable = Array.isArray(esmsInitOptions.polyfillEnable) ? esmsInitOptions.polyfillEnable : [];
226
+ const enableAll = esmsInitOptions.polyfillEnable === 'all' || enable.includes('all');
227
+ const wasmInstancePhaseEnabled =
228
+ enable.includes('wasm-modules') || enable.includes('wasm-module-instances') || enableAll;
229
+ const wasmSourcePhaseEnabled =
230
+ enable.includes('wasm-modules') || enable.includes('wasm-module-sources') || enableAll;
231
+ const deferPhaseEnabled = enable.includes('import-defer') || enableAll;
232
+
233
+ const onpolyfill =
234
+ esmsInitOptions.onpolyfill ?
235
+ globalHook(esmsInitOptions.onpolyfill)
236
+ : () => {
237
+ console.log(`%c^^ Module error above is polyfilled and can be ignored ^^`, 'font-weight:900;color:#391');
238
+ };
239
+
240
+ const baseUrl =
241
+ hasDocument ?
242
+ document.baseURI
243
+ : `${location.protocol}//${location.host}${
244
+ location.pathname.includes('/') ?
245
+ location.pathname.slice(0, location.pathname.lastIndexOf('/') + 1)
246
+ : location.pathname
247
+ }`;
248
+
249
+ const createBlob = (source, type = 'text/javascript') => URL.createObjectURL(new Blob([source], { type }));
250
+ let { skip } = esmsInitOptions;
251
+ if (Array.isArray(skip)) {
252
+ const l = skip.map(s => new URL(s, baseUrl).href);
253
+ skip = s => l.some(i => (i[i.length - 1] === '/' && s.startsWith(i)) || s === i);
254
+ } else if (typeof skip === 'string') {
255
+ const r = new RegExp(skip);
256
+ skip = s => r.test(s);
257
+ } else if (skip instanceof RegExp) {
258
+ skip = s => skip.test(s);
259
+ }
260
+
261
+ const dispatchError = error => self.dispatchEvent(Object.assign(new Event('error'), { error }));
262
+
263
+ const throwError = err => {
264
+ (self.reportError || dispatchError)(err), void onerror(err);
265
+ };
266
+
267
+ const fromParent = parent => (parent ? ` imported from ${parent}` : '');
268
+
96
269
  const backslashRegEx = /\\/g;
97
270
 
98
- function asURL(url) {
271
+ const asURL = url => {
99
272
  try {
100
273
  if (url.indexOf(':') !== -1) return new URL(url).href;
101
274
  } catch (_) {}
102
- }
275
+ };
103
276
 
104
- function resolveUrl(relUrl, parentUrl) {
105
- return resolveIfNotPlainOrUrl(relUrl, parentUrl) || asURL(relUrl) || resolveIfNotPlainOrUrl('./' + relUrl, parentUrl);
106
- }
277
+ const resolveUrl = (relUrl, parentUrl) =>
278
+ resolveIfNotPlainOrUrl(relUrl, parentUrl) || asURL(relUrl) || resolveIfNotPlainOrUrl('./' + relUrl, parentUrl);
107
279
 
108
- function resolveIfNotPlainOrUrl(relUrl, parentUrl) {
280
+ const resolveIfNotPlainOrUrl = (relUrl, parentUrl) => {
109
281
  const hIdx = parentUrl.indexOf('#'),
110
282
  qIdx = parentUrl.indexOf('?');
111
283
  if (hIdx + qIdx > -2)
@@ -193,9 +365,9 @@
193
365
  if (segmentIndex !== -1) output.push(segmented.slice(segmentIndex));
194
366
  return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join('');
195
367
  }
196
- }
368
+ };
197
369
 
198
- function resolveAndComposeImportMap(json, baseUrl, parentMap) {
370
+ const resolveAndComposeImportMap = (json, baseUrl, parentMap) => {
199
371
  const outMap = {
200
372
  imports: Object.assign({}, parentMap.imports),
201
373
  scopes: Object.assign({}, parentMap.scopes),
@@ -218,27 +390,27 @@
218
390
  if (json.integrity) resolveAndComposeIntegrity(json.integrity, outMap.integrity, baseUrl);
219
391
 
220
392
  return outMap;
221
- }
393
+ };
222
394
 
223
- function getMatch(path, matchObj) {
395
+ const getMatch = (path, matchObj) => {
224
396
  if (matchObj[path]) return path;
225
397
  let sepIndex = path.length;
226
398
  do {
227
399
  const segment = path.slice(0, sepIndex + 1);
228
400
  if (segment in matchObj) return segment;
229
401
  } while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1);
230
- }
402
+ };
231
403
 
232
- function applyPackages(id, packages) {
404
+ const applyPackages = (id, packages) => {
233
405
  const pkgName = getMatch(id, packages);
234
406
  if (pkgName) {
235
407
  const pkg = packages[pkgName];
236
408
  if (pkg === null) return;
237
409
  return pkg + id.slice(pkgName.length);
238
410
  }
239
- }
411
+ };
240
412
 
241
- function resolveImportMap(importMap, resolvedOrPlain, parentUrl) {
413
+ const resolveImportMap = (importMap, resolvedOrPlain, parentUrl) => {
242
414
  let scopeUrl = parentUrl && getMatch(parentUrl, importMap.scopes);
243
415
  while (scopeUrl) {
244
416
  const packageResolution = applyPackages(resolvedOrPlain, importMap.scopes[scopeUrl]);
@@ -246,9 +418,9 @@
246
418
  scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), importMap.scopes);
247
419
  }
248
420
  return applyPackages(resolvedOrPlain, importMap.imports) || (resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain);
249
- }
421
+ };
250
422
 
251
- function resolveAndComposePackages(packages, outPackages, baseUrl, parentMap) {
423
+ const resolveAndComposePackages = (packages, outPackages, baseUrl, parentMap) => {
252
424
  for (let p in packages) {
253
425
  const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;
254
426
  if (
@@ -270,9 +442,9 @@
270
442
  }
271
443
  console.warn(`es-module-shims: Mapping "${p}" -> "${packages[p]}" does not resolve`);
272
444
  }
273
- }
445
+ };
274
446
 
275
- function resolveAndComposeIntegrity(integrity, outIntegrity, baseUrl) {
447
+ const resolveAndComposeIntegrity = (integrity, outIntegrity, baseUrl) => {
276
448
  for (let p in integrity) {
277
449
  const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;
278
450
  if (
@@ -286,128 +458,128 @@
286
458
  }
287
459
  outIntegrity[resolvedLhs] = integrity[p];
288
460
  }
289
- }
461
+ };
290
462
 
291
- // support browsers without dynamic import support (eg Firefox 6x)
292
- let supportsJsonType = false;
293
- let supportsCssType = false;
294
-
295
- const supports = hasDocument && HTMLScriptElement.supports;
296
-
297
- let supportsImportMaps = supports && supports.name === 'supports' && supports('importmap');
298
- let supportsWasmInstancePhase = false;
299
- let supportsWasmSourcePhase = false;
300
- let supportsMultipleImportMaps = false;
301
-
302
- const wasmBytes = [0, 97, 115, 109, 1, 0, 0, 0];
303
-
304
- let featureDetectionPromise = (async function () {
305
- if (!hasDocument)
306
- return Promise.all([
307
- import(createBlob(`import"${createBlob('{}', 'text/json')}"with{type:"json"}`)).then(
308
- () => (
309
- (supportsJsonType = true),
310
- import(createBlob(`import"${createBlob('', 'text/css')}"with{type:"css"}`)).then(
311
- () => (supportsCssType = true),
312
- noop
313
- )
314
- ),
315
- noop
316
- ),
317
- wasmInstancePhaseEnabled &&
318
- import(createBlob(`import"${createBlob(new Uint8Array(wasmBytes), 'application/wasm')}"`)).then(
319
- () => (supportsWasmInstancePhase = true),
320
- noop
321
- ),
322
- wasmSourcePhaseEnabled &&
323
- import(createBlob(`import source x from"${createBlob(new Uint8Array(wasmBytes), 'application/wasm')}"`)).then(
324
- () => (supportsWasmSourcePhase = true),
325
- noop
326
- )
327
- ]);
328
-
329
- return new Promise(resolve => {
330
- const iframe = document.createElement('iframe');
331
- iframe.style.display = 'none';
332
- iframe.setAttribute('nonce', nonce);
333
- function cb({ data }) {
334
- const isFeatureDetectionMessage = Array.isArray(data) && data[0] === 'esms';
335
- if (!isFeatureDetectionMessage) return;
336
- [
337
- ,
338
- supportsImportMaps,
339
- supportsMultipleImportMaps,
340
- supportsJsonType,
341
- supportsCssType,
342
- supportsWasmSourcePhase,
343
- supportsWasmInstancePhase
344
- ] = data;
345
- resolve();
346
- document.head.removeChild(iframe);
347
- window.removeEventListener('message', cb, false);
348
- }
349
- window.addEventListener('message', cb, false);
350
-
351
- // Feature checking with careful avoidance of unnecessary work - all gated on initial import map supports check. CSS gates on JSON feature check, Wasm instance phase gates on wasm source phase check.
352
- const importMapTest = `<script nonce=${nonce || ''}>b=(s,type='text/javascript')=>URL.createObjectURL(new Blob([s],{type}));c=u=>import(u).then(()=>true,()=>false);i=innerText=>document.head.appendChild(Object.assign(document.createElement('script'),{type:'importmap',nonce:"${nonce}",innerText}));i(\`{"imports":{"x":"\${b('')}"}}\`);i(\`{"imports":{"y":"\${b('')}"}}\`);cm=${
353
- supportsImportMaps ? `c(b(\`import"\${b('{}','text/json')}"with{type:"json"}\`))` : 'false'
354
- };sp=${
355
- supportsImportMaps && wasmSourcePhaseEnabled ?
356
- `c(b(\`import source x from "\${b(new Uint8Array(${JSON.stringify(wasmBytes)}),'application/wasm')\}"\`))`
357
- : 'false'
358
- };Promise.all([${supportsImportMaps ? 'true' : "c('x')"},${supportsImportMaps ? "c('y')" : false},cm,${
359
- supportsImportMaps ? `cm.then(s=>s?c(b(\`import"\${b('','text/css')\}"with{type:"css"}\`)):false)` : 'false'
360
- },sp,${
361
- supportsImportMaps && wasmInstancePhaseEnabled ?
362
- `${wasmSourcePhaseEnabled ? 'sp.then(s=>s?' : ''}c(b(\`import"\${b(new Uint8Array(${JSON.stringify(wasmBytes)}),'application/wasm')\}"\`))${wasmSourcePhaseEnabled ? ':false)' : ''}`
363
- : 'false'
364
- }]).then(a=>parent.postMessage(['esms'].concat(a),'*'))<${''}/script>`;
365
-
366
- // Safari will call onload eagerly on head injection, but we don't want the Wechat
367
- // path to trigger before setting srcdoc, therefore we track the timing
368
- let readyForOnload = false,
369
- onloadCalledWhileNotReady = false;
370
- function doOnload() {
371
- if (!readyForOnload) {
372
- onloadCalledWhileNotReady = true;
373
- return;
374
- }
375
- // WeChat browser doesn't support setting srcdoc scripts
376
- // But iframe sandboxes don't support contentDocument so we do this as a fallback
377
- const doc = iframe.contentDocument;
378
- if (doc && doc.head.childNodes.length === 0) {
379
- const s = doc.createElement('script');
380
- if (nonce) s.setAttribute('nonce', nonce);
381
- s.innerHTML = importMapTest.slice(15 + (nonce ? nonce.length : 0), -9);
382
- doc.head.appendChild(s);
383
- }
384
- }
385
-
386
- iframe.onload = doOnload;
387
- // WeChat browser requires append before setting srcdoc
388
- document.head.appendChild(iframe);
389
-
390
- // setting srcdoc is not supported in React native webviews on iOS
391
- // setting src to a blob URL results in a navigation event in webviews
392
- // document.write gives usability warnings
393
- readyForOnload = true;
394
- if ('srcdoc' in iframe) iframe.srcdoc = importMapTest;
395
- else iframe.contentDocument.write(importMapTest);
396
- // retrigger onload for Safari only if necessary
397
- if (onloadCalledWhileNotReady) doOnload();
398
- });
399
- })();
400
-
401
- featureDetectionPromise = featureDetectionPromise.then(() => {
402
- console.info(
403
- `es-module-shims: detected native support - module types: (${[...(supportsJsonType ? ['json'] : []), ...(supportsCssType ? ['css'] : []), ...(supportsWasmInstancePhase ? ['wasm'] : [])].join(', ')}), ${supportsWasmSourcePhase ? 'source phase' : 'no source phase'}, ${supportsMultipleImportMaps ? '' : 'no '}multiple import maps, ${supportsImportMaps ? '' : 'no '}import maps`
404
- );
463
+ // support browsers without dynamic import support (eg Firefox 6x)
464
+ let supportsJsonType = false;
465
+ let supportsCssType = false;
466
+
467
+ const supports = hasDocument && HTMLScriptElement.supports;
468
+
469
+ let supportsImportMaps = supports && supports.name === 'supports' && supports('importmap');
470
+ let supportsWasmInstancePhase = false;
471
+ let supportsWasmSourcePhase = false;
472
+ let supportsMultipleImportMaps = false;
473
+
474
+ const wasmBytes = [0, 97, 115, 109, 1, 0, 0, 0];
475
+
476
+ let featureDetectionPromise = (async function () {
477
+ if (!hasDocument)
478
+ return Promise.all([
479
+ import(createBlob(`import"${createBlob('{}', 'text/json')}"with{type:"json"}`)).then(
480
+ () => (
481
+ (supportsJsonType = true),
482
+ import(createBlob(`import"${createBlob('', 'text/css')}"with{type:"css"}`)).then(
483
+ () => (supportsCssType = true),
484
+ noop
485
+ )
486
+ ),
487
+ noop
488
+ ),
489
+ wasmInstancePhaseEnabled &&
490
+ import(createBlob(`import"${createBlob(new Uint8Array(wasmBytes), 'application/wasm')}"`)).then(
491
+ () => (supportsWasmInstancePhase = true),
492
+ noop
493
+ ),
494
+ wasmSourcePhaseEnabled &&
495
+ import(createBlob(`import source x from"${createBlob(new Uint8Array(wasmBytes), 'application/wasm')}"`)).then(
496
+ () => (supportsWasmSourcePhase = true),
497
+ noop
498
+ )
499
+ ]);
500
+
501
+ return new Promise(resolve => {
502
+ const iframe = document.createElement('iframe');
503
+ iframe.style.display = 'none';
504
+ iframe.setAttribute('nonce', nonce);
505
+ function cb({ data }) {
506
+ const isFeatureDetectionMessage = Array.isArray(data) && data[0] === 'esms';
507
+ if (!isFeatureDetectionMessage) return;
508
+ [
509
+ ,
510
+ supportsImportMaps,
511
+ supportsMultipleImportMaps,
512
+ supportsJsonType,
513
+ supportsCssType,
514
+ supportsWasmSourcePhase,
515
+ supportsWasmInstancePhase
516
+ ] = data;
517
+ resolve();
518
+ document.head.removeChild(iframe);
519
+ window.removeEventListener('message', cb, false);
520
+ }
521
+ window.addEventListener('message', cb, false);
522
+
523
+ // Feature checking with careful avoidance of unnecessary work - all gated on initial import map supports check. CSS gates on JSON feature check, Wasm instance phase gates on wasm source phase check.
524
+ const importMapTest = `<script nonce=${nonce || ''}>b=(s,type='text/javascript')=>URL.createObjectURL(new Blob([s],{type}));c=u=>import(u).then(()=>true,()=>false);i=innerText=>document.head.appendChild(Object.assign(document.createElement('script'),{type:'importmap',nonce:"${nonce}",innerText}));i(\`{"imports":{"x":"\${b('')}"}}\`);i(\`{"imports":{"y":"\${b('')}"}}\`);cm=${
525
+ supportsImportMaps ? `c(b(\`import"\${b('{}','text/json')}"with{type:"json"}\`))` : 'false'
526
+ };sp=${
527
+ supportsImportMaps && wasmSourcePhaseEnabled ?
528
+ `c(b(\`import source x from "\${b(new Uint8Array(${JSON.stringify(wasmBytes)}),'application/wasm')\}"\`))`
529
+ : 'false'
530
+ };Promise.all([${supportsImportMaps ? 'true' : "c('x')"},${supportsImportMaps ? "c('y')" : false},cm,${
531
+ supportsImportMaps ? `cm.then(s=>s?c(b(\`import"\${b('','text/css')\}"with{type:"css"}\`)):false)` : 'false'
532
+ },sp,${
533
+ supportsImportMaps && wasmInstancePhaseEnabled ?
534
+ `${wasmSourcePhaseEnabled ? 'sp.then(s=>s?' : ''}c(b(\`import"\${b(new Uint8Array(${JSON.stringify(wasmBytes)}),'application/wasm')\}"\`))${wasmSourcePhaseEnabled ? ':false)' : ''}`
535
+ : 'false'
536
+ }]).then(a=>parent.postMessage(['esms'].concat(a),'*'))<${''}/script>`;
537
+
538
+ // Safari will call onload eagerly on head injection, but we don't want the Wechat
539
+ // path to trigger before setting srcdoc, therefore we track the timing
540
+ let readyForOnload = false,
541
+ onloadCalledWhileNotReady = false;
542
+ function doOnload() {
543
+ if (!readyForOnload) {
544
+ onloadCalledWhileNotReady = true;
545
+ return;
546
+ }
547
+ // WeChat browser doesn't support setting srcdoc scripts
548
+ // But iframe sandboxes don't support contentDocument so we do this as a fallback
549
+ const doc = iframe.contentDocument;
550
+ if (doc && doc.head.childNodes.length === 0) {
551
+ const s = doc.createElement('script');
552
+ if (nonce) s.setAttribute('nonce', nonce);
553
+ s.innerHTML = importMapTest.slice(15 + (nonce ? nonce.length : 0), -9);
554
+ doc.head.appendChild(s);
555
+ }
556
+ }
557
+
558
+ iframe.onload = doOnload;
559
+ // WeChat browser requires append before setting srcdoc
560
+ document.head.appendChild(iframe);
561
+
562
+ // setting srcdoc is not supported in React native webviews on iOS
563
+ // setting src to a blob URL results in a navigation event in webviews
564
+ // document.write gives usability warnings
565
+ readyForOnload = true;
566
+ if ('srcdoc' in iframe) iframe.srcdoc = importMapTest;
567
+ else iframe.contentDocument.write(importMapTest);
568
+ // retrigger onload for Safari only if necessary
569
+ if (onloadCalledWhileNotReady) doOnload();
570
+ });
571
+ })();
572
+
573
+ featureDetectionPromise = featureDetectionPromise.then(() => {
574
+ console.info(
575
+ `es-module-shims: detected native support - module types: (${[...(supportsJsonType ? ['json'] : []), ...(supportsCssType ? ['css'] : []), ...(supportsWasmInstancePhase ? ['wasm'] : [])].join(', ')}), ${supportsWasmSourcePhase ? 'source phase' : 'no source phase'}, ${supportsMultipleImportMaps ? '' : 'no '}multiple import maps, ${supportsImportMaps ? '' : 'no '}import maps`
576
+ );
405
577
  });
406
578
 
407
579
  /* es-module-lexer 1.7.0 */
408
580
  let e,a,r,i=2<<19;const s=1===new Uint8Array(new Uint16Array([1]).buffer)[0]?function(e,a){const r=e.length;let i=0;for(;i<r;)a[i]=e.charCodeAt(i++);}:function(e,a){const r=e.length;let i=0;for(;i<r;){const r=e.charCodeAt(i);a[i++]=(255&r)<<8|r>>>8;}},f="xportmportlassforetaourceeferromsyncunctionssertvoyiedelecontininstantybreareturdebuggeawaithrwhileifcatcfinallels";let t,c$1,n;function parse(k,l="@"){t=k,c$1=l;const u=2*t.length+(2<<18);if(u>i||!e){for(;u>i;)i*=2;a=new ArrayBuffer(i),s(f,new Uint16Array(a,16,114)),e=function(e,a,r){"use asm";var i=new e.Int8Array(r),s=new e.Int16Array(r),f=new e.Int32Array(r),t=new e.Uint8Array(r),c=new e.Uint16Array(r),n=1040;function b(){var e=0,a=0,r=0,t=0,c=0,b=0,u=0;u=n;n=n+10240|0;i[812]=1;i[811]=0;s[403]=0;s[404]=0;f[71]=f[2];i[813]=0;f[70]=0;i[810]=0;f[72]=u+2048;f[73]=u;i[814]=0;e=(f[3]|0)+-2|0;f[74]=e;a=e+(f[68]<<1)|0;f[75]=a;e:while(1){r=e+2|0;f[74]=r;if(e>>>0>=a>>>0){t=18;break}a:do{switch(s[r>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if((((s[404]|0)==0?H(r)|0:0)?(m(e+4|0,16,10)|0)==0:0)?(k(),(i[812]|0)==0):0){t=9;break e}else t=17;break}case 105:{if(H(r)|0?(m(e+4|0,26,10)|0)==0:0){l();t=17;}else t=17;break}case 59:{t=17;break}case 47:switch(s[e+4>>1]|0){case 47:{P();break a}case 42:{y(1);break a}default:{t=16;break e}}default:{t=16;break e}}}while(0);if((t|0)==17){t=0;f[71]=f[74];}e=f[74]|0;a=f[75]|0;}if((t|0)==9){e=f[74]|0;f[71]=e;t=19;}else if((t|0)==16){i[812]=0;f[74]=e;t=19;}else if((t|0)==18)if(!(i[810]|0)){e=r;t=19;}else e=0;do{if((t|0)==19){e:while(1){a=e+2|0;f[74]=a;if(e>>>0>=(f[75]|0)>>>0){t=92;break}a:do{switch(s[a>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(((s[404]|0)==0?H(a)|0:0)?(m(e+4|0,16,10)|0)==0:0){k();t=91;}else t=91;break}case 105:{if(H(a)|0?(m(e+4|0,26,10)|0)==0:0){l();t=91;}else t=91;break}case 99:{if((H(a)|0?(m(e+4|0,36,8)|0)==0:0)?V(s[e+12>>1]|0)|0:0){i[814]=1;t=91;}else t=91;break}case 40:{r=f[72]|0;e=s[404]|0;t=e&65535;f[r+(t<<3)>>2]=1;a=f[71]|0;s[404]=e+1<<16>>16;f[r+(t<<3)+4>>2]=a;t=91;break}case 41:{a=s[404]|0;if(!(a<<16>>16)){t=36;break e}r=a+-1<<16>>16;s[404]=r;t=s[403]|0;a=t&65535;if(t<<16>>16!=0?(f[(f[72]|0)+((r&65535)<<3)>>2]|0)==5:0){a=f[(f[73]|0)+(a+-1<<2)>>2]|0;r=a+4|0;if(!(f[r>>2]|0))f[r>>2]=(f[71]|0)+2;f[a+12>>2]=e+4;s[403]=t+-1<<16>>16;t=91;}else t=91;break}case 123:{t=f[71]|0;r=f[65]|0;e=t;do{if((s[t>>1]|0)==41&(r|0)!=0?(f[r+4>>2]|0)==(t|0):0){a=f[66]|0;f[65]=a;if(!a){f[61]=0;break}else {f[a+32>>2]=0;break}}}while(0);r=f[72]|0;a=s[404]|0;t=a&65535;f[r+(t<<3)>>2]=(i[814]|0)==0?2:6;s[404]=a+1<<16>>16;f[r+(t<<3)+4>>2]=e;i[814]=0;t=91;break}case 125:{e=s[404]|0;if(!(e<<16>>16)){t=49;break e}r=f[72]|0;t=e+-1<<16>>16;s[404]=t;if((f[r+((t&65535)<<3)>>2]|0)==4){h();t=91;}else t=91;break}case 39:{v(39);t=91;break}case 34:{v(34);t=91;break}case 47:switch(s[e+4>>1]|0){case 47:{P();break a}case 42:{y(1);break a}default:{e=f[71]|0;a=s[e>>1]|0;r:do{if(!(U(a)|0))if(a<<16>>16==41){r=s[404]|0;if(!(D(f[(f[72]|0)+((r&65535)<<3)+4>>2]|0)|0))t=65;}else t=64;else switch(a<<16>>16){case 46:if(((s[e+-2>>1]|0)+-48&65535)<10){t=64;break r}else break r;case 43:if((s[e+-2>>1]|0)==43){t=64;break r}else break r;case 45:if((s[e+-2>>1]|0)==45){t=64;break r}else break r;default:break r}}while(0);if((t|0)==64){r=s[404]|0;t=65;}r:do{if((t|0)==65){t=0;if(r<<16>>16!=0?(c=f[72]|0,b=(r&65535)+-1|0,a<<16>>16==102?(f[c+(b<<3)>>2]|0)==1:0):0){if((s[e+-2>>1]|0)==111?$(f[c+(b<<3)+4>>2]|0,44,3)|0:0)break}else t=69;if((t|0)==69?(0,a<<16>>16==125):0){t=f[72]|0;r=r&65535;if(p(f[t+(r<<3)+4>>2]|0)|0)break;if((f[t+(r<<3)>>2]|0)==6)break}if(!(o(e)|0)){switch(a<<16>>16){case 0:break r;case 47:{if(i[813]|0)break r;break}default:{}}t=f[67]|0;if((t|0?e>>>0>=(f[t>>2]|0)>>>0:0)?e>>>0<=(f[t+4>>2]|0)>>>0:0){g();i[813]=0;t=91;break a}r=f[3]|0;do{if(e>>>0<=r>>>0)break;e=e+-2|0;f[71]=e;a=s[e>>1]|0;}while(!(E(a)|0));if(F(a)|0){do{if(e>>>0<=r>>>0)break;e=e+-2|0;f[71]=e;}while(F(s[e>>1]|0)|0);if(j(e)|0){g();i[813]=0;t=91;break a}}i[813]=1;t=91;break a}}}while(0);g();i[813]=0;t=91;break a}}case 96:{r=f[72]|0;a=s[404]|0;t=a&65535;f[r+(t<<3)+4>>2]=f[71];s[404]=a+1<<16>>16;f[r+(t<<3)>>2]=3;h();t=91;break}default:t=91;}}while(0);if((t|0)==91){t=0;f[71]=f[74];}e=f[74]|0;}if((t|0)==36){T();e=0;break}else if((t|0)==49){T();e=0;break}else if((t|0)==92){e=(i[810]|0)==0?(s[403]|s[404])<<16>>16==0:0;break}}}while(0);n=u;return e|0}function k(){var e=0,a=0,r=0,t=0,c=0,n=0,b=0,k=0,l=0,o=0,h=0,d=0,C=0,g=0;k=f[74]|0;l=f[67]|0;g=k+12|0;f[74]=g;r=w(1)|0;e=f[74]|0;if(!((e|0)==(g|0)?!(I(r)|0):0))C=3;e:do{if((C|0)==3){a:do{switch(r<<16>>16){case 123:{f[74]=e+2;e=w(1)|0;a=f[74]|0;while(1){if(W(e)|0){v(e);e=(f[74]|0)+2|0;f[74]=e;}else {q(e)|0;e=f[74]|0;}w(1)|0;e=A(a,e)|0;if(e<<16>>16==44){f[74]=(f[74]|0)+2;e=w(1)|0;}if(e<<16>>16==125){C=15;break}g=a;a=f[74]|0;if((a|0)==(g|0)){C=12;break}if(a>>>0>(f[75]|0)>>>0){C=14;break}}if((C|0)==12){T();break e}else if((C|0)==14){T();break e}else if((C|0)==15){i[811]=1;f[74]=(f[74]|0)+2;break a}break}case 42:{f[74]=e+2;w(1)|0;g=f[74]|0;A(g,g)|0;break}default:{i[812]=0;switch(r<<16>>16){case 100:{k=e+14|0;f[74]=k;switch((w(1)|0)<<16>>16){case 97:{a=f[74]|0;if((m(a+2|0,80,8)|0)==0?(c=a+10|0,F(s[c>>1]|0)|0):0){f[74]=c;w(0)|0;C=22;}break}case 102:{C=22;break}case 99:{a=f[74]|0;if(((m(a+2|0,36,8)|0)==0?(t=a+10|0,g=s[t>>1]|0,V(g)|0|g<<16>>16==123):0)?(f[74]=t,n=w(1)|0,n<<16>>16!=123):0){d=n;C=31;}break}default:{}}r:do{if((C|0)==22?(b=f[74]|0,(m(b+2|0,88,14)|0)==0):0){r=b+16|0;a=s[r>>1]|0;if(!(V(a)|0))switch(a<<16>>16){case 40:case 42:break;default:break r}f[74]=r;a=w(1)|0;if(a<<16>>16==42){f[74]=(f[74]|0)+2;a=w(1)|0;}if(a<<16>>16!=40){d=a;C=31;}}}while(0);if((C|0)==31?(o=f[74]|0,q(d)|0,h=f[74]|0,h>>>0>o>>>0):0){O(e,k,o,h);f[74]=(f[74]|0)+-2;break e}O(e,k,0,0);f[74]=e+12;break e}case 97:{f[74]=e+10;w(0)|0;e=f[74]|0;C=35;break}case 102:{C=35;break}case 99:{if((m(e+2|0,36,8)|0)==0?(a=e+10|0,E(s[a>>1]|0)|0):0){f[74]=a;g=w(1)|0;C=f[74]|0;q(g)|0;g=f[74]|0;O(C,g,C,g);f[74]=(f[74]|0)+-2;break e}e=e+4|0;f[74]=e;break}case 108:case 118:break;default:break e}if((C|0)==35){f[74]=e+16;e=w(1)|0;if(e<<16>>16==42){f[74]=(f[74]|0)+2;e=w(1)|0;}C=f[74]|0;q(e)|0;g=f[74]|0;O(C,g,C,g);f[74]=(f[74]|0)+-2;break e}f[74]=e+6;i[812]=0;r=w(1)|0;e=f[74]|0;r=(q(r)|0|32)<<16>>16==123;t=f[74]|0;if(r){f[74]=t+2;g=w(1)|0;e=f[74]|0;q(g)|0;}r:while(1){a=f[74]|0;if((a|0)==(e|0))break;O(e,a,e,a);a=w(1)|0;if(r)switch(a<<16>>16){case 93:case 125:break e;default:{}}e=f[74]|0;if(a<<16>>16!=44){C=51;break}f[74]=e+2;a=w(1)|0;e=f[74]|0;switch(a<<16>>16){case 91:case 123:{C=51;break r}default:{}}q(a)|0;}if((C|0)==51)f[74]=e+-2;if(!r)break e;f[74]=t+-2;break e}}}while(0);g=(w(1)|0)<<16>>16==102;e=f[74]|0;if(g?(m(e+2|0,74,6)|0)==0:0){f[74]=e+8;u(k,w(1)|0,0);e=(l|0)==0?248:l+16|0;while(1){e=f[e>>2]|0;if(!e)break e;f[e+12>>2]=0;f[e+8>>2]=0;e=e+16|0;}}f[74]=e+-2;}}while(0);return}function l(){var e=0,a=0,r=0,t=0,c=0,n=0,b=0;b=f[74]|0;c=b+12|0;f[74]=c;e=w(1)|0;t=f[74]|0;e:do{if(e<<16>>16!=46){if(!(e<<16>>16==115&t>>>0>c>>>0)){if(!(e<<16>>16==100&t>>>0>(b+10|0)>>>0)){t=0;n=28;break}if(m(t+2|0,66,8)|0){a=t;e=100;t=0;n=59;break}e=t+10|0;if(!(V(s[e>>1]|0)|0)){a=t;e=100;t=0;n=59;break}f[74]=e;e=w(1)|0;if(e<<16>>16==42){e=42;t=2;n=61;break}f[74]=t;t=0;n=28;break}if((m(t+2|0,56,10)|0)==0?(r=t+12|0,V(s[r>>1]|0)|0):0){f[74]=r;e=w(1)|0;a=f[74]|0;if((a|0)!=(r|0)){if(e<<16>>16!=102){t=1;n=28;break}if(m(a+2|0,74,6)|0){e=102;t=1;n=59;break}if(!(E(s[a+8>>1]|0)|0)){e=102;t=1;n=59;break}}f[74]=t;t=0;n=28;}else {a=t;e=115;t=0;n=59;}}else {f[74]=t+2;switch((w(1)|0)<<16>>16){case 109:{e=f[74]|0;if(m(e+2|0,50,6)|0)break e;a=f[71]|0;if(!(G(a)|0)?(s[a>>1]|0)==46:0)break e;d(b,b,e+8|0,2);break e}case 115:{e=f[74]|0;if(m(e+2|0,56,10)|0)break e;a=f[71]|0;if(!(G(a)|0)?(s[a>>1]|0)==46:0)break e;f[74]=e+12;e=w(1)|0;t=1;n=28;break e}case 100:{e=f[74]|0;if(m(e+2|0,66,8)|0)break e;a=f[71]|0;if(!(G(a)|0)?(s[a>>1]|0)==46:0)break e;f[74]=e+10;e=w(1)|0;t=2;n=28;break e}default:break e}}}while(0);e:do{if((n|0)==28){if(e<<16>>16==40){r=f[72]|0;a=s[404]|0;c=a&65535;f[r+(c<<3)>>2]=5;e=f[74]|0;s[404]=a+1<<16>>16;f[r+(c<<3)+4>>2]=e;if((s[f[71]>>1]|0)==46)break;f[74]=e+2;a=w(1)|0;d(b,f[74]|0,0,e);if(!t)e=f[65]|0;else {e=f[65]|0;f[e+28>>2]=(t|0)==1?5:7;}c=f[73]|0;b=s[403]|0;s[403]=b+1<<16>>16;f[c+((b&65535)<<2)>>2]=e;switch(a<<16>>16){case 39:{v(39);break}case 34:{v(34);break}default:{f[74]=(f[74]|0)+-2;break e}}e=(f[74]|0)+2|0;f[74]=e;switch((w(1)|0)<<16>>16){case 44:{f[74]=(f[74]|0)+2;w(1)|0;c=f[65]|0;f[c+4>>2]=e;b=f[74]|0;f[c+16>>2]=b;i[c+24>>0]=1;f[74]=b+-2;break e}case 41:{s[404]=(s[404]|0)+-1<<16>>16;b=f[65]|0;f[b+4>>2]=e;f[b+12>>2]=(f[74]|0)+2;i[b+24>>0]=1;s[403]=(s[403]|0)+-1<<16>>16;break e}default:{f[74]=(f[74]|0)+-2;break e}}}if(!((t|0)==0&e<<16>>16==123)){switch(e<<16>>16){case 42:case 39:case 34:{n=61;break e}default:{}}a=f[74]|0;n=59;break}e=f[74]|0;if(s[404]|0){f[74]=e+-2;break}while(1){if(e>>>0>=(f[75]|0)>>>0)break;e=w(1)|0;if(!(W(e)|0)){if(e<<16>>16==125){n=49;break}}else v(e);e=(f[74]|0)+2|0;f[74]=e;}if((n|0)==49)f[74]=(f[74]|0)+2;c=(w(1)|0)<<16>>16==102;e=f[74]|0;if(c?m(e+2|0,74,6)|0:0){T();break}f[74]=e+8;e=w(1)|0;if(W(e)|0){u(b,e,0);break}else {T();break}}}while(0);if((n|0)==59)if((a|0)==(c|0))f[74]=b+10;else n=61;do{if((n|0)==61){if(!((e<<16>>16==42|(t|0)!=2)&(s[404]|0)==0)){f[74]=(f[74]|0)+-2;break}e=f[75]|0;a=f[74]|0;while(1){if(a>>>0>=e>>>0){n=68;break}r=s[a>>1]|0;if(W(r)|0){n=66;break}n=a+2|0;f[74]=n;a=n;}if((n|0)==66){u(b,r,t);break}else if((n|0)==68){T();break}}}while(0);return}function u(e,a,r){e=e|0;a=a|0;r=r|0;var i=0,t=0;i=(f[74]|0)+2|0;switch(a<<16>>16){case 39:{v(39);t=5;break}case 34:{v(34);t=5;break}default:T();}do{if((t|0)==5){d(e,i,f[74]|0,1);if((r|0)>0)f[(f[65]|0)+28>>2]=(r|0)==1?4:6;f[74]=(f[74]|0)+2;a=w(0)|0;r=a<<16>>16==97;if(r){i=f[74]|0;if(m(i+2|0,102,10)|0)t=13;}else {i=f[74]|0;if(!(((a<<16>>16==119?(s[i+2>>1]|0)==105:0)?(s[i+4>>1]|0)==116:0)?(s[i+6>>1]|0)==104:0))t=13;}if((t|0)==13){f[74]=i+-2;break}f[74]=i+((r?6:4)<<1);if((w(1)|0)<<16>>16!=123){f[74]=i;break}r=f[74]|0;a=r;e:while(1){f[74]=a+2;a=w(1)|0;switch(a<<16>>16){case 39:{v(39);f[74]=(f[74]|0)+2;a=w(1)|0;break}case 34:{v(34);f[74]=(f[74]|0)+2;a=w(1)|0;break}default:a=q(a)|0;}if(a<<16>>16!=58){t=22;break}f[74]=(f[74]|0)+2;switch((w(1)|0)<<16>>16){case 39:{v(39);break}case 34:{v(34);break}default:{t=26;break e}}f[74]=(f[74]|0)+2;switch((w(1)|0)<<16>>16){case 125:{t=31;break e}case 44:break;default:{t=30;break e}}f[74]=(f[74]|0)+2;if((w(1)|0)<<16>>16==125){t=31;break}a=f[74]|0;}if((t|0)==22){f[74]=i;break}else if((t|0)==26){f[74]=i;break}else if((t|0)==30){f[74]=i;break}else if((t|0)==31){t=f[65]|0;f[t+16>>2]=r;f[t+12>>2]=(f[74]|0)+2;break}}}while(0);return}function o(e){e=e|0;e:do{switch(s[e>>1]|0){case 100:switch(s[e+-2>>1]|0){case 105:{e=$(e+-4|0,112,2)|0;break e}case 108:{e=$(e+-4|0,116,3)|0;break e}default:{e=0;break e}}case 101:switch(s[e+-2>>1]|0){case 115:switch(s[e+-4>>1]|0){case 108:{e=B(e+-6|0,101)|0;break e}case 97:{e=B(e+-6|0,99)|0;break e}default:{e=0;break e}}case 116:{e=$(e+-4|0,122,4)|0;break e}case 117:{e=$(e+-4|0,130,6)|0;break e}default:{e=0;break e}}case 102:{if((s[e+-2>>1]|0)==111?(s[e+-4>>1]|0)==101:0)switch(s[e+-6>>1]|0){case 99:{e=$(e+-8|0,142,6)|0;break e}case 112:{e=$(e+-8|0,154,2)|0;break e}default:{e=0;break e}}else e=0;break}case 107:{e=$(e+-2|0,158,4)|0;break}case 110:{e=e+-2|0;if(B(e,105)|0)e=1;else e=$(e,166,5)|0;break}case 111:{e=B(e+-2|0,100)|0;break}case 114:{e=$(e+-2|0,176,7)|0;break}case 116:{e=$(e+-2|0,190,4)|0;break}case 119:switch(s[e+-2>>1]|0){case 101:{e=B(e+-4|0,110)|0;break e}case 111:{e=$(e+-4|0,198,3)|0;break e}default:{e=0;break e}}default:e=0;}}while(0);return e|0}function h(){var e=0,a=0,r=0,i=0;a=f[75]|0;r=f[74]|0;e:while(1){e=r+2|0;if(r>>>0>=a>>>0){a=10;break}switch(s[e>>1]|0){case 96:{a=7;break e}case 36:{if((s[r+4>>1]|0)==123){a=6;break e}break}case 92:{e=r+4|0;break}default:{}}r=e;}if((a|0)==6){e=r+4|0;f[74]=e;a=f[72]|0;i=s[404]|0;r=i&65535;f[a+(r<<3)>>2]=4;s[404]=i+1<<16>>16;f[a+(r<<3)+4>>2]=e;}else if((a|0)==7){f[74]=e;r=f[72]|0;i=(s[404]|0)+-1<<16>>16;s[404]=i;if((f[r+((i&65535)<<3)>>2]|0)!=3)T();}else if((a|0)==10){f[74]=e;T();}return}function w(e){e=e|0;var a=0,r=0,i=0;r=f[74]|0;e:do{a=s[r>>1]|0;a:do{if(a<<16>>16!=47)if(e)if(V(a)|0)break;else break e;else if(F(a)|0)break;else break e;else switch(s[r+2>>1]|0){case 47:{P();break a}case 42:{y(e);break a}default:{a=47;break e}}}while(0);i=f[74]|0;r=i+2|0;f[74]=r;}while(i>>>0<(f[75]|0)>>>0);return a|0}function d(e,a,r,s){e=e|0;a=a|0;r=r|0;s=s|0;var t=0,c=0;c=f[69]|0;f[69]=c+36;t=f[65]|0;f[((t|0)==0?244:t+32|0)>>2]=c;f[66]=t;f[65]=c;f[c+8>>2]=e;if(2==(s|0)){e=3;t=r;}else {t=1==(s|0);e=t?1:2;t=t?r+2|0:0;}f[c+12>>2]=t;f[c+28>>2]=e;f[c>>2]=a;f[c+4>>2]=r;f[c+16>>2]=0;f[c+20>>2]=s;a=1==(s|0);i[c+24>>0]=a&1;f[c+32>>2]=0;if(a|2==(s|0))i[811]=1;return}function v(e){e=e|0;var a=0,r=0,i=0,t=0;t=f[75]|0;a=f[74]|0;while(1){i=a+2|0;if(a>>>0>=t>>>0){a=9;break}r=s[i>>1]|0;if(r<<16>>16==e<<16>>16){a=10;break}if(r<<16>>16==92){r=a+4|0;if((s[r>>1]|0)==13){a=a+6|0;a=(s[a>>1]|0)==10?a:r;}else a=r;}else if(Z(r)|0){a=9;break}else a=i;}if((a|0)==9){f[74]=i;T();}else if((a|0)==10)f[74]=i;return}function A(e,a){e=e|0;a=a|0;var r=0,i=0,t=0,c=0;r=f[74]|0;i=s[r>>1]|0;c=(e|0)==(a|0);t=c?0:e;c=c?0:a;if(i<<16>>16==97){f[74]=r+4;r=w(1)|0;e=f[74]|0;if(W(r)|0){v(r);a=(f[74]|0)+2|0;f[74]=a;}else {q(r)|0;a=f[74]|0;}i=w(1)|0;r=f[74]|0;}if((r|0)!=(e|0))O(e,a,t,c);return i|0}function C(){var e=0,a=0,r=0;r=f[75]|0;a=f[74]|0;e:while(1){e=a+2|0;if(a>>>0>=r>>>0){a=6;break}switch(s[e>>1]|0){case 13:case 10:{a=6;break e}case 93:{a=7;break e}case 92:{e=a+4|0;break}default:{}}a=e;}if((a|0)==6){f[74]=e;T();e=0;}else if((a|0)==7){f[74]=e;e=93;}return e|0}function g(){var e=0,a=0,r=0;e:while(1){e=f[74]|0;a=e+2|0;f[74]=a;if(e>>>0>=(f[75]|0)>>>0){r=7;break}switch(s[a>>1]|0){case 13:case 10:{r=7;break e}case 47:break e;case 91:{C()|0;break}case 92:{f[74]=e+4;break}default:{}}}if((r|0)==7)T();return}function p(e){e=e|0;switch(s[e>>1]|0){case 62:{e=(s[e+-2>>1]|0)==61;break}case 41:case 59:{e=1;break}case 104:{e=$(e+-2|0,218,4)|0;break}case 121:{e=$(e+-2|0,226,6)|0;break}case 101:{e=$(e+-2|0,238,3)|0;break}default:e=0;}return e|0}function y(e){e=e|0;var a=0,r=0,i=0,t=0,c=0;t=(f[74]|0)+2|0;f[74]=t;r=f[75]|0;while(1){a=t+2|0;if(t>>>0>=r>>>0)break;i=s[a>>1]|0;if(!e?Z(i)|0:0)break;if(i<<16>>16==42?(s[t+4>>1]|0)==47:0){c=8;break}t=a;}if((c|0)==8){f[74]=a;a=t+4|0;}f[74]=a;return}function m(e,a,r){e=e|0;a=a|0;r=r|0;var s=0,f=0;e:do{if(!r)e=0;else {while(1){s=i[e>>0]|0;f=i[a>>0]|0;if(s<<24>>24!=f<<24>>24)break;r=r+-1|0;if(!r){e=0;break e}else {e=e+1|0;a=a+1|0;}}e=(s&255)-(f&255)|0;}}while(0);return e|0}function I(e){e=e|0;e:do{switch(e<<16>>16){case 38:case 37:case 33:{e=1;break}default:if((e&-8)<<16>>16==40|(e+-58&65535)<6)e=1;else {switch(e<<16>>16){case 91:case 93:case 94:{e=1;break e}default:{}}e=(e+-123&65535)<4;}}}while(0);return e|0}function U(e){e=e|0;e:do{switch(e<<16>>16){case 38:case 37:case 33:break;default:if(!((e+-58&65535)<6|(e+-40&65535)<7&e<<16>>16!=41)){switch(e<<16>>16){case 91:case 94:break e;default:{}}return e<<16>>16!=125&(e+-123&65535)<4|0}}}while(0);return 1}function x(e){e=e|0;var a=0;a=s[e>>1]|0;e:do{if((a+-9&65535)>=5){switch(a<<16>>16){case 160:case 32:{a=1;break e}default:{}}if(I(a)|0)return a<<16>>16!=46|(G(e)|0)|0;else a=0;}else a=1;}while(0);return a|0}function S(e){e=e|0;var a=0,r=0,i=0,t=0;r=n;n=n+16|0;i=r;f[i>>2]=0;f[68]=e;a=f[3]|0;t=a+(e<<1)|0;e=t+2|0;s[t>>1]=0;f[i>>2]=e;f[69]=e;f[61]=0;f[65]=0;f[63]=0;f[62]=0;f[67]=0;f[64]=0;n=r;return a|0}function O(e,a,r,s){e=e|0;a=a|0;r=r|0;s=s|0;var t=0,c=0;t=f[69]|0;f[69]=t+20;c=f[67]|0;f[((c|0)==0?248:c+16|0)>>2]=t;f[67]=t;f[t>>2]=e;f[t+4>>2]=a;f[t+8>>2]=r;f[t+12>>2]=s;f[t+16>>2]=0;i[811]=1;return}function $(e,a,r){e=e|0;a=a|0;r=r|0;var i=0,s=0;i=e+(0-r<<1)|0;s=i+2|0;e=f[3]|0;if(s>>>0>=e>>>0?(m(s,a,r<<1)|0)==0:0)if((s|0)==(e|0))e=1;else e=x(i)|0;else e=0;return e|0}function j(e){e=e|0;switch(s[e>>1]|0){case 107:{e=$(e+-2|0,158,4)|0;break}case 101:{if((s[e+-2>>1]|0)==117)e=$(e+-4|0,130,6)|0;else e=0;break}default:e=0;}return e|0}function B(e,a){e=e|0;a=a|0;var r=0;r=f[3]|0;if(r>>>0<=e>>>0?(s[e>>1]|0)==a<<16>>16:0)if((r|0)==(e|0))r=1;else r=E(s[e+-2>>1]|0)|0;else r=0;return r|0}function E(e){e=e|0;e:do{if((e+-9&65535)<5)e=1;else {switch(e<<16>>16){case 32:case 160:{e=1;break e}default:{}}e=e<<16>>16!=46&(I(e)|0);}}while(0);return e|0}function P(){var e=0,a=0,r=0;e=f[75]|0;r=f[74]|0;e:while(1){a=r+2|0;if(r>>>0>=e>>>0)break;switch(s[a>>1]|0){case 13:case 10:break e;default:r=a;}}f[74]=a;return}function q(e){e=e|0;while(1){if(V(e)|0)break;if(I(e)|0)break;e=(f[74]|0)+2|0;f[74]=e;e=s[e>>1]|0;if(!(e<<16>>16)){e=0;break}}return e|0}function z(){var e=0;e=f[(f[63]|0)+20>>2]|0;switch(e|0){case 1:{e=-1;break}case 2:{e=-2;break}default:e=e-(f[3]|0)>>1;}return e|0}function D(e){e=e|0;if(!($(e,204,5)|0)?!($(e,44,3)|0):0)e=$(e,214,2)|0;else e=1;return e|0}function F(e){e=e|0;switch(e<<16>>16){case 160:case 32:case 12:case 11:case 9:{e=1;break}default:e=0;}return e|0}function G(e){e=e|0;if((s[e>>1]|0)==46?(s[e+-2>>1]|0)==46:0)e=(s[e+-4>>1]|0)==46;else e=0;return e|0}function H(e){e=e|0;if((f[3]|0)==(e|0))e=1;else e=x(e+-2|0)|0;return e|0}function J(){var e=0;e=f[(f[64]|0)+12>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function K(){var e=0;e=f[(f[63]|0)+12>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function L(){var e=0;e=f[(f[64]|0)+8>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function M(){var e=0;e=f[(f[63]|0)+16>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function N(){var e=0;e=f[(f[63]|0)+4>>2]|0;if(!e)e=-1;else e=e-(f[3]|0)>>1;return e|0}function Q(){var e=0;e=f[63]|0;e=f[((e|0)==0?244:e+32|0)>>2]|0;f[63]=e;return (e|0)!=0|0}function R(){var e=0;e=f[64]|0;e=f[((e|0)==0?248:e+16|0)>>2]|0;f[64]=e;return (e|0)!=0|0}function T(){i[810]=1;f[70]=(f[74]|0)-(f[3]|0)>>1;f[74]=(f[75]|0)+2;return}function V(e){e=e|0;return (e|128)<<16>>16==160|(e+-9&65535)<5|0}function W(e){e=e|0;return e<<16>>16==39|e<<16>>16==34|0}function X(){return (f[(f[63]|0)+8>>2]|0)-(f[3]|0)>>1|0}function Y(){return (f[(f[64]|0)+4>>2]|0)-(f[3]|0)>>1|0}function Z(e){e=e|0;return e<<16>>16==13|e<<16>>16==10|0}function _(){return (f[f[63]>>2]|0)-(f[3]|0)>>1|0}function ee(){return (f[f[64]>>2]|0)-(f[3]|0)>>1|0}function ae(){return t[(f[63]|0)+24>>0]|0|0}function re(e){e=e|0;f[3]=e;return}function ie(){return f[(f[63]|0)+28>>2]|0}function se(){return (i[811]|0)!=0|0}function fe(){return (i[812]|0)!=0|0}function te(){return f[70]|0}function ce(e){e=e|0;n=e+992+15&-16;return 992}return {su:ce,ai:M,e:te,ee:Y,ele:J,els:L,es:ee,f:fe,id:z,ie:N,ip:ae,is:_,it:ie,ms:se,p:b,re:R,ri:Q,sa:S,se:K,ses:re,ss:X}}("undefined"!=typeof self?self:global,{},a),r=e.su(i-(2<<17));}const h=t.length+1;e.ses(r),e.sa(h-1),s(t,new Uint16Array(a,r,h)),e.p()||(n=e.e(),o());const w=[],d=[];for(;e.ri();){const a=e.is(),r=e.ie(),i=e.ai(),s=e.id(),f=e.ss(),c=e.se(),n=e.it();let k;e.ip()&&(k=b(-1===s?a:a+1,t.charCodeAt(-1===s?a-1:a))),w.push({t:n,n:k,s:a,e:r,ss:f,se:c,d:s,a:i});}for(;e.re();){const a=e.es(),r=e.ee(),i=e.els(),s=e.ele(),f=t.charCodeAt(a),c=i>=0?t.charCodeAt(i):-1;d.push({s:a,e:r,ls:i,le:s,n:34===f||39===f?b(a+1,f):t.slice(a,r),ln:i<0?void 0:34===c||39===c?b(i+1,c):t.slice(i,s)});}return [w,d,!!e.f(),!!e.ms()]}function b(e,a){n=e;let r="",i=n;for(;;){n>=t.length&&o();const e=t.charCodeAt(n);if(e===a)break;92===e?(r+=t.slice(i,n),r+=k(),i=n):(8232===e||8233===e||u(e)&&o(),++n);}return r+=t.slice(i,n++),r}function k(){let e=t.charCodeAt(++n);switch(++n,e){case 110:return "\n";case 114:return "\r";case 120:return String.fromCharCode(l(2));case 117:return function(){const e=t.charCodeAt(n);let a;123===e?(++n,a=l(t.indexOf("}",n)-n),++n,a>1114111&&o()):a=l(4);return a<=65535?String.fromCharCode(a):(a-=65536,String.fromCharCode(55296+(a>>10),56320+(1023&a)))}();case 116:return "\t";case 98:return "\b";case 118:return "\v";case 102:return "\f";case 13:10===t.charCodeAt(n)&&++n;case 10:return "";case 56:case 57:o();default:if(e>=48&&e<=55){let a=t.substr(n-1,3).match(/^[0-7]+/)[0],r=parseInt(a,8);return r>255&&(a=a.slice(0,-1),r=parseInt(a,8)),n+=a.length-1,e=t.charCodeAt(n),"0"===a&&56!==e&&57!==e||o(),String.fromCharCode(r)}return u(e)?"":String.fromCharCode(e)}}function l(e){const a=n;let r=0,i=0;for(let a=0;a<e;++a,++n){let e,s=t.charCodeAt(n);if(95!==s){if(s>=97)e=s-97+10;else if(s>=65)e=s-65+10;else {if(!(s>=48&&s<=57))break;e=s-48;}if(e>=16)break;i=s,r=16*r+e;}else 95!==i&&0!==a||o(),i=s;}return 95!==i&&n-a===e||o(),r}function u(e){return 13===e||10===e}function o(){throw Object.assign(Error(`Parse error ${c$1}:${t.slice(0,n).split("\n").length}:${n-t.lastIndexOf("\n",n-1)}`),{idx:n})}
409
581
 
410
- function _resolve(id, parentUrl = baseUrl) {
582
+ const _resolve = (id, parentUrl = baseUrl) => {
411
583
  const urlResolved = resolveIfNotPlainOrUrl(id, parentUrl) || asURL(id);
412
584
  const firstResolved = firstImportMap && resolveImportMap(firstImportMap, urlResolved || id, parentUrl);
413
585
  const composedResolved =
@@ -430,100 +602,105 @@
430
602
  if (firstResolved && resolved !== firstResolved) N = true;
431
603
  }
432
604
  return { r: resolved, n, N };
433
- }
605
+ };
434
606
 
435
- const resolve =
436
- resolveHook ?
437
- (id, parentUrl = baseUrl) => {
438
- const result = resolveHook(id, parentUrl, defaultResolve);
439
- return result ? { r: result, n: true, N: true } : _resolve(id, parentUrl);
440
- }
441
- : _resolve;
607
+ const resolve = (id, parentUrl) => {
608
+ if (!resolveHook) return _resolve(id, parentUrl);
609
+ const result = resolveHook(id, parentUrl, defaultResolve);
442
610
 
443
- async function importHandler(id, opts, parentUrl = baseUrl, sourcePhase) {
444
- await initPromise; // needed for shim check
445
- console.info(
446
- `es-module-shims: importShim${sourcePhase ? '.source' : ''}("${id}"${opts ? ', ' + JSON.stringify(opts) : ''})`
447
- );
448
- if (importHook) await importHook(id, opts, parentUrl);
449
- if (shimMode || !baselinePassthrough) {
450
- if (hasDocument) processScriptsAndPreloads();
451
- legacyAcceptingImportMaps = false;
452
- }
453
- await importMapPromise;
454
- return resolve(id, parentUrl).r;
455
- }
611
+ return result ? { r: result, n: true, N: true } : _resolve(id, parentUrl);
612
+ };
456
613
 
457
614
  // import()
458
- async function importShim(id, opts, parentUrl) {
615
+ async function importShim$1(id, opts, parentUrl) {
459
616
  if (typeof opts === 'string') {
460
617
  parentUrl = opts;
461
618
  opts = undefined;
462
619
  }
463
- // we mock import('./x.css', { with: { type: 'css' }}) support via an inline static reexport
464
- // because we can't syntactically pass through to dynamic import with a second argument
465
- let url = await importHandler(id, opts, parentUrl, false);
466
- let source = undefined;
467
- let ts = false;
620
+ await initPromise; // needed for shim check
621
+ console.info(`es-module-shims: importShim("${id}"${opts ? ', ' + JSON.stringify(opts) : ''})`);
622
+ if (shimMode || !baselinePassthrough) {
623
+ if (hasDocument) processScriptsAndPreloads();
624
+ legacyAcceptingImportMaps = false;
625
+ }
626
+ let sourceType = undefined;
468
627
  if (typeof opts === 'object') {
469
- ts = opts.lang === 'ts';
628
+ if (opts.lang === 'ts') sourceType = 'ts';
470
629
  if (typeof opts.with === 'object' && typeof opts.with.type === 'string') {
471
- source = `export{default}from'${url}'with{type:"${opts.with.type}"}`;
472
- url += '?entry';
630
+ sourceType = opts.with.type;
473
631
  }
474
632
  }
475
- return topLevelLoad(url, { credentials: 'same-origin' }, source, undefined, undefined, ts);
633
+ return topLevelLoad(
634
+ id,
635
+ parentUrl || baseUrl,
636
+ { credentials: 'same-origin' },
637
+ undefined,
638
+ undefined,
639
+ undefined,
640
+ sourceType
641
+ );
476
642
  }
477
643
 
478
644
  // import.source()
479
645
  // (opts not currently supported as no use cases yet)
480
646
  if (shimMode || wasmSourcePhaseEnabled)
481
- importShim.source = async function (specifier, opts, parentUrl) {
647
+ importShim$1.source = async (id, opts, parentUrl) => {
482
648
  if (typeof opts === 'string') {
483
649
  parentUrl = opts;
484
650
  opts = undefined;
485
651
  }
486
- const url = await importHandler(specifier, opts, parentUrl, true);
652
+ await initPromise; // needed for shim check
653
+ console.info(`es-module-shims: importShim.source("${id}"${opts ? ', ' + JSON.stringify(opts) : ''})`);
654
+ if (shimMode || !baselinePassthrough) {
655
+ if (hasDocument) processScriptsAndPreloads();
656
+ legacyAcceptingImportMaps = false;
657
+ }
658
+ await importMapPromise;
659
+ const url = resolve(id, parentUrl || baseUrl).r;
487
660
  const load = getOrCreateLoad(url, { credentials: 'same-origin' }, undefined, undefined);
488
661
  if (firstPolyfillLoad && !shimMode && load.n && nativelyLoaded) {
489
662
  onpolyfill();
490
663
  firstPolyfillLoad = false;
491
664
  }
492
665
  await load.f;
493
- return importShim._s[load.r];
666
+ return importShim$1._s[load.r];
494
667
  };
495
668
 
496
669
  // import.defer() is just a proxy for import(), since we can't actually defer
497
- if (shimMode || deferPhaseEnabled) importShim.defer = importShim;
670
+ if (shimMode || deferPhaseEnabled) importShim$1.defer = importShim$1;
498
671
 
499
- self.importShim = importShim;
672
+ if (hotReload) importShim$1.hotReload = hotReload$1;
500
673
 
501
- function defaultResolve(id, parentUrl) {
674
+ self.importShim = importShim$1;
675
+
676
+ const defaultResolve = (id, parentUrl) => {
502
677
  return (
503
678
  resolveImportMap(composedImportMap, resolveIfNotPlainOrUrl(id, parentUrl) || id, parentUrl) ||
504
679
  throwUnresolved(id, parentUrl)
505
680
  );
506
- }
681
+ };
507
682
 
508
- function throwUnresolved(id, parentUrl) {
683
+ const throwUnresolved = (id, parentUrl) => {
509
684
  throw Error(`Unable to resolve specifier '${id}'${fromParent(parentUrl)}`);
510
- }
685
+ };
511
686
 
512
- function metaResolve(id, parentUrl = this.url) {
687
+ const metaResolve = function (id, parentUrl = this.url) {
513
688
  return resolve(id, `${parentUrl}`).r;
514
- }
689
+ };
515
690
 
516
- importShim.resolve = (id, parentUrl) => resolve(id, parentUrl).r;
517
- importShim.getImportMap = () => JSON.parse(JSON.stringify(composedImportMap));
518
- importShim.addImportMap = importMapIn => {
691
+ importShim$1.resolve = (id, parentUrl) => resolve(id, parentUrl).r;
692
+ importShim$1.getImportMap = () => JSON.parse(JSON.stringify(composedImportMap));
693
+ importShim$1.addImportMap = importMapIn => {
519
694
  if (!shimMode) throw new Error('Unsupported in polyfill mode.');
520
695
  composedImportMap = resolveAndComposeImportMap(importMapIn, baseUrl, composedImportMap);
521
696
  };
522
697
 
523
- const registry = (importShim._r = {});
524
- const sourceCache = (importShim._s = {});
698
+ const registry = (importShim$1._r = {});
699
+ // Wasm caches
700
+ const sourceCache = (importShim$1._s = {});
701
+ (importShim$1._i = new WeakMap());
525
702
 
526
- async function loadAll(load, seen) {
703
+ const loadAll = async (load, seen) => {
527
704
  seen[load.u] = 1;
528
705
  await load.L;
529
706
  await Promise.all(
@@ -533,7 +710,7 @@
533
710
  return loadAll(dep, seen);
534
711
  })
535
712
  );
536
- }
713
+ };
537
714
 
538
715
  let importMapSrc = false;
539
716
  let multipleImportMaps = false;
@@ -553,35 +730,32 @@
553
730
  !deferPhaseEnabled &&
554
731
  (!multipleImportMaps || supportsMultipleImportMaps) &&
555
732
  !importMapSrc;
556
- if (
557
- !shimMode &&
558
- wasmSourcePhaseEnabled &&
559
- typeof WebAssembly !== 'undefined' &&
560
- !Object.getPrototypeOf(WebAssembly.Module).name
561
- ) {
562
- const s = Symbol();
563
- const brand = m =>
564
- Object.defineProperty(m, s, { writable: false, configurable: false, value: 'WebAssembly.Module' });
565
- class AbstractModuleSource {
566
- get [Symbol.toStringTag]() {
567
- if (this[s]) return this[s];
568
- throw new TypeError('Not an AbstractModuleSource');
733
+ if (!shimMode && typeof WebAssembly !== 'undefined') {
734
+ if (wasmSourcePhaseEnabled && !Object.getPrototypeOf(WebAssembly.Module).name) {
735
+ const s = Symbol();
736
+ const brand = m =>
737
+ Object.defineProperty(m, s, { writable: false, configurable: false, value: 'WebAssembly.Module' });
738
+ class AbstractModuleSource {
739
+ get [Symbol.toStringTag]() {
740
+ if (this[s]) return this[s];
741
+ throw new TypeError('Not an AbstractModuleSource');
742
+ }
569
743
  }
744
+ const { Module: wasmModule, compile: wasmCompile, compileStreaming: wasmCompileStreaming } = WebAssembly;
745
+ WebAssembly.Module = Object.setPrototypeOf(
746
+ Object.assign(function Module(...args) {
747
+ return brand(new wasmModule(...args));
748
+ }, wasmModule),
749
+ AbstractModuleSource
750
+ );
751
+ WebAssembly.Module.prototype = Object.setPrototypeOf(wasmModule.prototype, AbstractModuleSource.prototype);
752
+ WebAssembly.compile = function compile(...args) {
753
+ return wasmCompile(...args).then(brand);
754
+ };
755
+ WebAssembly.compileStreaming = function compileStreaming(...args) {
756
+ return wasmCompileStreaming(...args).then(brand);
757
+ };
570
758
  }
571
- const { Module: wasmModule, compile: wasmCompile, compileStreaming: wasmCompileStreaming } = WebAssembly;
572
- WebAssembly.Module = Object.setPrototypeOf(
573
- Object.assign(function Module(...args) {
574
- return brand(new wasmModule(...args));
575
- }, wasmModule),
576
- AbstractModuleSource
577
- );
578
- WebAssembly.Module.prototype = Object.setPrototypeOf(wasmModule.prototype, AbstractModuleSource.prototype);
579
- WebAssembly.compile = function compile(...args) {
580
- return wasmCompile(...args).then(brand);
581
- };
582
- WebAssembly.compileStreaming = function compileStreaming(...args) {
583
- return wasmCompileStreaming(...args).then(brand);
584
- };
585
759
  }
586
760
  if (hasDocument) {
587
761
  if (!supportsImportMaps) {
@@ -593,14 +767,6 @@
593
767
  if (document.readyState === 'complete') {
594
768
  readyStateCompleteCheck();
595
769
  } else {
596
- async function readyListener() {
597
- await initPromise;
598
- processScriptsAndPreloads();
599
- if (document.readyState === 'complete') {
600
- readyStateCompleteCheck();
601
- document.removeEventListener('readystatechange', readyListener);
602
- }
603
- }
604
770
  document.addEventListener('readystatechange', readyListener);
605
771
  }
606
772
  }
@@ -609,7 +775,7 @@
609
775
  return undefined;
610
776
  });
611
777
 
612
- function attachMutationObserver() {
778
+ const attachMutationObserver = () => {
613
779
  const observer = new MutationObserver(mutations => {
614
780
  for (const mutation of mutations) {
615
781
  if (mutation.type !== 'childList') continue;
@@ -630,18 +796,27 @@
630
796
  observer.observe(document, { childList: true });
631
797
  observer.observe(document.head, { childList: true });
632
798
  processScriptsAndPreloads();
633
- }
799
+ };
634
800
 
635
801
  let importMapPromise = initPromise;
636
802
  let firstPolyfillLoad = true;
637
803
  let legacyAcceptingImportMaps = true;
638
804
 
639
- async function topLevelLoad(url, fetchOpts, source, nativelyLoaded, lastStaticLoadPromise, typescript) {
805
+ const topLevelLoad = async (url, parentUrl, fetchOpts, source, nativelyLoaded, lastStaticLoadPromise, sourceType) => {
640
806
  await initPromise;
641
807
  await importMapPromise;
642
- if (importHook) await importHook(url, typeof fetchOpts !== 'string' ? fetchOpts : {}, '');
808
+ url = (await resolve(url, parentUrl)).r;
809
+
810
+ // we mock import('./x.css', { with: { type: 'css' }}) support via an inline static reexport
811
+ // because we can't syntactically pass through to dynamic import with a second argument
812
+ if (sourceType === 'css' || sourceType === 'json') {
813
+ source = `export{default}from'${url}'with{type:"${sourceType}"}`;
814
+ url += '?entry';
815
+ }
816
+
817
+ if (importHook) await importHook(url, typeof fetchOpts !== 'string' ? fetchOpts : {}, parentUrl);
643
818
  // early analysis opt-out - no need to even fetch if we have feature support
644
- if (!shimMode && baselinePassthrough && !typescript) {
819
+ if (!shimMode && baselinePassthrough && nativePassthrough && sourceType !== 'ts') {
645
820
  console.info(`es-module-shims: early exit for ${url} due to baseline modules support`);
646
821
  // for polyfill case, only dynamic import needs a return value here, and dynamic import will never pass nativelyLoaded
647
822
  if (nativelyLoaded) return null;
@@ -669,37 +844,55 @@
669
844
  onpolyfill();
670
845
  firstPolyfillLoad = false;
671
846
  }
672
- const module = await (shimMode || load.n || load.N || (!nativelyLoaded && source) ?
847
+ const module = await (shimMode || load.n || load.N || !nativePassthrough || (!nativelyLoaded && source) ?
673
848
  dynamicImport(load.b, load.u)
674
849
  : import(load.u));
675
850
  // if the top-level load is a shell, run its update function
676
851
  if (load.s) (await dynamicImport(load.s, load.u)).u$_(module);
677
852
  if (revokeBlobURLs) revokeObjectURLs(Object.keys(seen));
678
853
  return module;
679
- }
854
+ };
680
855
 
681
- function revokeObjectURLs(registryKeys) {
682
- let batch = 0;
683
- const keysLength = registryKeys.length;
684
- const schedule = self.requestIdleCallback ? self.requestIdleCallback : self.requestAnimationFrame;
685
- schedule(cleanup);
856
+ const revokeObjectURLs = registryKeys => {
857
+ let curIdx = 0;
858
+ const handler = self.requestIdleCallback || self.requestAnimationFrame;
859
+ handler(cleanup);
686
860
  function cleanup() {
687
- const batchStartIndex = batch * 100;
688
- if (batchStartIndex > keysLength) return;
689
- for (const key of registryKeys.slice(batchStartIndex, batchStartIndex + 100)) {
861
+ for (const key of registryKeys.slice(curIdx, (curIdx += 100))) {
690
862
  const load = registry[key];
691
863
  if (load && load.b && load.b !== load.u) URL.revokeObjectURL(load.b);
692
864
  }
693
- batch++;
694
- schedule(cleanup);
865
+ if (curIdx < registryKeys.length) handler(cleanup);
695
866
  }
696
- }
867
+ };
697
868
 
698
- function urlJsString(url) {
699
- return `'${url.replace(/'/g, "\\'")}'`;
700
- }
869
+ const urlJsString = url => `'${url.replace(/'/g, "\\'")}'`;
701
870
 
702
- function resolveDeps(load, seen) {
871
+ let resolvedSource, lastIndex;
872
+ const pushStringTo = (load, originalIndex, dynamicImportEndStack) => {
873
+ while (dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) {
874
+ const dynamicImportEnd = dynamicImportEndStack.pop();
875
+ resolvedSource += `${load.S.slice(lastIndex, dynamicImportEnd)}, ${urlJsString(load.r)}`;
876
+ lastIndex = dynamicImportEnd;
877
+ }
878
+ resolvedSource += load.S.slice(lastIndex, originalIndex);
879
+ lastIndex = originalIndex;
880
+ };
881
+
882
+ const pushSourceURL = (load, commentPrefix, commentStart, dynamicImportEndStack) => {
883
+ const urlStart = commentStart + commentPrefix.length;
884
+ const commentEnd = load.S.indexOf('\n', urlStart);
885
+ const urlEnd = commentEnd !== -1 ? commentEnd : load.S.length;
886
+ let sourceUrl = load.S.slice(urlStart, urlEnd);
887
+ try {
888
+ sourceUrl = new URL(sourceUrl, load.r).href;
889
+ } catch {}
890
+ pushStringTo(load, urlStart, dynamicImportEndStack);
891
+ resolvedSource += sourceUrl;
892
+ lastIndex = urlEnd;
893
+ };
894
+
895
+ const resolveDeps = (load, seen) => {
703
896
  if (load.b || !seen[load.u]) return;
704
897
  seen[load.u] = 0;
705
898
 
@@ -712,7 +905,7 @@
712
905
 
713
906
  // use native loader whenever possible (n = needs shim) via executable subgraph passthrough
714
907
  // so long as the module doesn't use dynamic import or unsupported URL mappings (N = should shim)
715
- if (!shimMode && !load.n && !load.N) {
908
+ if (nativePassthrough && !shimMode && !load.n && !load.N) {
716
909
  load.b = load.u;
717
910
  load.S = undefined;
718
911
  return;
@@ -723,30 +916,19 @@
723
916
  const [imports, exports] = load.a;
724
917
 
725
918
  // "execution"
726
- const source = load.S;
727
-
728
- let resolvedSource = '';
919
+ let source = load.S,
920
+ depIndex = 0,
921
+ dynamicImportEndStack = [];
729
922
 
730
923
  // once all deps have loaded we can inline the dependency resolution blobs
731
924
  // and define this blob
732
- let lastIndex = 0,
733
- depIndex = 0,
734
- dynamicImportEndStack = [];
735
- function pushStringTo(originalIndex) {
736
- while (dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) {
737
- const dynamicImportEnd = dynamicImportEndStack.pop();
738
- resolvedSource += `${source.slice(lastIndex, dynamicImportEnd)}, ${urlJsString(load.r)}`;
739
- lastIndex = dynamicImportEnd;
740
- }
741
- resolvedSource += source.slice(lastIndex, originalIndex);
742
- lastIndex = originalIndex;
743
- }
925
+ (resolvedSource = ''), (lastIndex = 0);
744
926
 
745
927
  for (const { s: start, e: end, ss: statementStart, se: statementEnd, d: dynamicImportIndex, t, a } of imports) {
746
928
  // source phase
747
929
  if (t === 4) {
748
930
  let { l: depLoad } = load.d[depIndex++];
749
- pushStringTo(statementStart);
931
+ pushStringTo(load, statementStart, dynamicImportEndStack);
750
932
  resolvedSource += `${source.slice(statementStart, start - 1).replace('source', '')}/*${source.slice(start - 1, end + 1)}*/'${createBlob(`export default importShim._s[${urlJsString(depLoad.r)}]`)}'`;
751
933
  lastIndex = end + 1;
752
934
  }
@@ -757,12 +939,13 @@
757
939
  const assertion = source.slice(a, statementEnd - 1);
758
940
  // strip assertions only when unsupported in polyfill mode
759
941
  keepAssertion =
760
- (supportsJsonType && assertion.includes('json')) || (supportsCssType && assertion.includes('css'));
942
+ nativePassthrough &&
943
+ ((supportsJsonType && assertion.includes('json')) || (supportsCssType && assertion.includes('css')));
761
944
  }
762
945
 
763
946
  // defer phase stripping
764
947
  if (t === 6) {
765
- pushStringTo(statementStart);
948
+ pushStringTo(load, statementStart, dynamicImportEndStack);
766
949
  resolvedSource += source.slice(statementStart, start - 1).replace('defer', '');
767
950
  lastIndex = start;
768
951
  }
@@ -787,7 +970,7 @@
787
970
  }
788
971
  }
789
972
 
790
- pushStringTo(start - 1);
973
+ pushStringTo(load, start - 1, dynamicImportEndStack);
791
974
  resolvedSource += `/*${source.slice(start - 1, end + 1)}*/'${blobUrl}'`;
792
975
 
793
976
  // circular shell execution
@@ -800,14 +983,14 @@
800
983
  // import.meta
801
984
  else if (dynamicImportIndex === -2) {
802
985
  load.m = { url: load.r, resolve: metaResolve };
803
- metaHook(load.m, load.u);
804
- pushStringTo(start);
986
+ if (metaHook) metaHook(load.m, load.u);
987
+ pushStringTo(load, start, dynamicImportEndStack);
805
988
  resolvedSource += `importShim._r[${urlJsString(load.u)}].m`;
806
989
  lastIndex = statementEnd;
807
990
  }
808
991
  // dynamic import
809
992
  else {
810
- pushStringTo(statementStart + 6);
993
+ pushStringTo(load, statementStart + 6, dynamicImportEndStack);
811
994
  resolvedSource += `Shim${t === 5 ? '.source' : ''}(`;
812
995
  dynamicImportEndStack.push(statementEnd - 1);
813
996
  lastIndex = start;
@@ -821,19 +1004,6 @@
821
1004
  .map(({ s, e, ln }) => `${source.slice(s, e)}:${ln}`)
822
1005
  .join(',')}})}catch(_){};\n`;
823
1006
 
824
- function pushSourceURL(commentPrefix, commentStart) {
825
- const urlStart = commentStart + commentPrefix.length;
826
- const commentEnd = source.indexOf('\n', urlStart);
827
- const urlEnd = commentEnd !== -1 ? commentEnd : source.length;
828
- let sourceUrl = source.slice(urlStart, urlEnd);
829
- try {
830
- sourceUrl = new URL(sourceUrl, load.r).href;
831
- } catch {}
832
- pushStringTo(urlStart);
833
- resolvedSource += sourceUrl;
834
- lastIndex = urlEnd;
835
- }
836
-
837
1007
  let sourceURLCommentStart = source.lastIndexOf(sourceURLCommentPrefix);
838
1008
  let sourceMapURLCommentStart = source.lastIndexOf(sourceMapURLCommentPrefix);
839
1009
 
@@ -846,23 +1016,23 @@
846
1016
  sourceURLCommentStart !== -1 &&
847
1017
  (sourceMapURLCommentStart === -1 || sourceMapURLCommentStart > sourceURLCommentStart)
848
1018
  ) {
849
- pushSourceURL(sourceURLCommentPrefix, sourceURLCommentStart);
1019
+ pushSourceURL(load, sourceURLCommentPrefix, sourceURLCommentStart, dynamicImportEndStack);
850
1020
  }
851
1021
  // sourceMappingURL
852
1022
  if (sourceMapURLCommentStart !== -1) {
853
- pushSourceURL(sourceMapURLCommentPrefix, sourceMapURLCommentStart);
1023
+ pushSourceURL(load, sourceMapURLCommentPrefix, sourceMapURLCommentStart, dynamicImportEndStack);
854
1024
  // sourceURL last
855
1025
  if (sourceURLCommentStart !== -1 && sourceURLCommentStart > sourceMapURLCommentStart)
856
- pushSourceURL(sourceURLCommentPrefix, sourceURLCommentStart);
1026
+ pushSourceURL(load, sourceURLCommentPrefix, sourceURLCommentStart, dynamicImportEndStack);
857
1027
  }
858
1028
 
859
- pushStringTo(source.length);
1029
+ pushStringTo(load, source.length, dynamicImportEndStack);
860
1030
 
861
1031
  if (sourceURLCommentStart === -1) resolvedSource += sourceURLCommentPrefix + load.r;
862
1032
 
863
1033
  load.b = createBlob(resolvedSource);
864
- load.S = undefined;
865
- }
1034
+ load.S = resolvedSource = undefined;
1035
+ };
866
1036
 
867
1037
  const sourceURLCommentPrefix = '\n//# sourceURL=';
868
1038
  const sourceMapURLCommentPrefix = '\n//# sourceMappingURL=';
@@ -878,15 +1048,15 @@
878
1048
  // restrict in-flight fetches to a pool of 100
879
1049
  let p = [];
880
1050
  let c = 0;
881
- function pushFetchPool() {
1051
+ const pushFetchPool = () => {
882
1052
  if (++c > 100) return new Promise(r => p.push(r));
883
- }
884
- function popFetchPool() {
1053
+ };
1054
+ const popFetchPool = () => {
885
1055
  c--;
886
1056
  if (p.length) p.shift()();
887
- }
1057
+ };
888
1058
 
889
- async function doFetch(url, fetchOpts, parent) {
1059
+ const doFetch = async (url, fetchOpts, parent) => {
890
1060
  if (enforceIntegrity && !fetchOpts.integrity) throw Error(`No integrity for ${url}${fromParent(parent)}.`);
891
1061
  const poolQueue = pushFetchPool();
892
1062
  if (poolQueue) await poolQueue;
@@ -905,15 +1075,16 @@
905
1075
  throw error;
906
1076
  }
907
1077
  return res;
908
- }
1078
+ };
909
1079
 
910
1080
  let esmsTsTransform;
911
- async function initTs() {
1081
+ const initTs = async () => {
912
1082
  const m = await import(tsTransform);
913
1083
  if (!esmsTsTransform) esmsTsTransform = m.transform;
914
- }
1084
+ };
915
1085
 
916
- async function fetchModule(url, fetchOpts, parent) {
1086
+ const hotPrefix = 'var h=import.meta.hot,';
1087
+ const fetchModule = async (url, fetchOpts, parent) => {
917
1088
  const mapIntegrity = composedImportMap.integrity[url];
918
1089
  const res = await doFetch(
919
1090
  url,
@@ -924,32 +1095,38 @@
924
1095
  const contentType = res.headers.get('content-type');
925
1096
  if (jsContentType.test(contentType)) return { r, s: await res.text(), t: 'js' };
926
1097
  else if (wasmContentType.test(contentType)) {
927
- const module = await (sourceCache[r] || (sourceCache[r] = WebAssembly.compileStreaming(res)));
928
- sourceCache[r] = module;
929
- let s = '',
1098
+ const wasmModule = await (sourceCache[r] || (sourceCache[r] = WebAssembly.compileStreaming(res)));
1099
+ const exports = WebAssembly.Module.exports(wasmModule);
1100
+ sourceCache[r] = wasmModule;
1101
+ const rStr = urlJsString(r);
1102
+ let s = `import*as $_ns from${rStr};`,
930
1103
  i = 0,
931
- importObj = '';
932
- for (const impt of WebAssembly.Module.imports(module)) {
933
- const specifier = urlJsString(impt.module);
934
- s += `import * as impt${i} from ${specifier};\n`;
935
- importObj += `${specifier}:impt${i++},`;
1104
+ obj = '';
1105
+ for (const { module, kind } of WebAssembly.Module.imports(wasmModule)) {
1106
+ const specifier = urlJsString(module);
1107
+ s += `import*as impt${i} from${specifier};\n`;
1108
+ obj += `${specifier}:${kind === 'global' ? `importShim._i.get(impt${i})||impt${i++}` : `impt${i++}`},`;
936
1109
  }
937
- i = 0;
938
- s += `const instance = await WebAssembly.instantiate(importShim._s[${urlJsString(r)}], {${importObj}});\n`;
939
- for (const expt of WebAssembly.Module.exports(module)) {
940
- s += `export const ${expt.name} = instance.exports['${expt.name}'];\n`;
1110
+ s += `${hotPrefix}i=await WebAssembly.instantiate(importShim._s[${rStr}],{${obj}});importShim._i.set($_ns,i);`;
1111
+ obj = '';
1112
+ for (const { name, kind } of exports) {
1113
+ s += `export let ${name}=i.exports['${name}'];`;
1114
+ if (kind === 'global') s += `try{${name}=${name}.value}catch{${name}=undefined}`;
1115
+ obj += `${name},`;
941
1116
  }
1117
+ s += `if(h)h.accept(m=>({${obj}}=m))`;
942
1118
  return { r, s, t: 'wasm' };
943
- } else if (jsonContentType.test(contentType)) return { r, s: `export default ${await res.text()}`, t: 'json' };
1119
+ } else if (jsonContentType.test(contentType))
1120
+ return { r, s: `${hotPrefix}j=${await res.text()};export{j as default};if(h)h.accept(m=>j=m.default)`, t: 'json' };
944
1121
  else if (cssContentType.test(contentType)) {
945
1122
  return {
946
1123
  r,
947
- s: `var s=new CSSStyleSheet();s.replaceSync(${JSON.stringify(
1124
+ s: `${hotPrefix}s=h&&h.data.s||new CSSStyleSheet();s.replaceSync(${JSON.stringify(
948
1125
  (await res.text()).replace(
949
1126
  cssUrlRegEx,
950
1127
  (_match, quotes = '', relUrl1, relUrl2) => `url(${quotes}${resolveUrl(relUrl1 || relUrl2, url)}${quotes})`
951
1128
  )
952
- )});export default s;`,
1129
+ )});if(h){h.data.s=s;h.accept(()=>{})}export default s`,
953
1130
  t: 'css'
954
1131
  };
955
1132
  } else if (tsContentType.test(contentType) || url.endsWith('.ts') || url.endsWith('.mts')) {
@@ -963,9 +1140,9 @@
963
1140
  throw Error(
964
1141
  `Unsupported Content-Type "${contentType}" loading ${url}${fromParent(parent)}. Modules must be served with a valid MIME type like application/javascript.`
965
1142
  );
966
- }
1143
+ };
967
1144
 
968
- function isUnsupportedType(type) {
1145
+ const isUnsupportedType = type => {
969
1146
  if (type === 'wasm' && !wasmInstancePhaseEnabled && !wasmSourcePhaseEnabled) throw featErr(`wasm-modules`);
970
1147
  return (
971
1148
  (type === 'css' && !supportsCssType) ||
@@ -973,13 +1150,13 @@
973
1150
  (type === 'wasm' && !supportsWasmInstancePhase && !supportsWasmSourcePhase) ||
974
1151
  type === 'ts'
975
1152
  );
976
- }
1153
+ };
977
1154
 
978
- function getOrCreateLoad(url, fetchOpts, parent, source) {
1155
+ const getOrCreateLoad = (url, fetchOpts, parent, source) => {
979
1156
  if (source && registry[url]) {
980
1157
  let i = 0;
981
- while (registry[url + ++i]);
982
- url += i;
1158
+ while (registry[url + '?' + ++i]);
1159
+ url += '?' + i;
983
1160
  }
984
1161
  let load = registry[url];
985
1162
  if (load) return load;
@@ -1028,14 +1205,14 @@
1028
1205
  return load;
1029
1206
  })();
1030
1207
  return load;
1031
- }
1208
+ };
1032
1209
 
1033
1210
  const featErr = feat =>
1034
1211
  Error(
1035
1212
  `${feat} feature must be enabled via <script type="esms-options">{ "polyfillEnable": ["${feat}"] }<${''}/script>`
1036
1213
  );
1037
1214
 
1038
- function linkLoad(load, fetchOpts) {
1215
+ const linkLoad = (load, fetchOpts) => {
1039
1216
  if (load.L) return;
1040
1217
  load.L = load.f.then(async () => {
1041
1218
  let childFetchOpts = fetchOpts;
@@ -1049,7 +1226,7 @@
1049
1226
  if (!sourcePhase || !supportsWasmSourcePhase) load.n = true;
1050
1227
  }
1051
1228
  let source = undefined;
1052
- if (a > 0 && !shimMode) {
1229
+ if (a > 0 && !shimMode && nativePassthrough) {
1053
1230
  const assertion = load.S.slice(a, se - 1);
1054
1231
  // no need to fetch JSON/CSS if supported, since it's a leaf node, we'll just strip the assertion syntax
1055
1232
  if (assertion.includes('json')) {
@@ -1076,9 +1253,9 @@
1076
1253
  })
1077
1254
  .filter(l => l);
1078
1255
  });
1079
- }
1256
+ };
1080
1257
 
1081
- function processScriptsAndPreloads() {
1258
+ const processScriptsAndPreloads = () => {
1082
1259
  for (const link of document.querySelectorAll(shimMode ? 'link[rel=modulepreload-shim]' : 'link[rel=modulepreload]')) {
1083
1260
  if (!link.ep) processPreload(link);
1084
1261
  }
@@ -1090,9 +1267,9 @@
1090
1267
  if (!script.ep) processScript(script);
1091
1268
  }
1092
1269
  }
1093
- }
1270
+ };
1094
1271
 
1095
- function getFetchOpts(script) {
1272
+ const getFetchOpts = script => {
1096
1273
  const fetchOpts = {};
1097
1274
  if (script.integrity) fetchOpts.integrity = script.integrity;
1098
1275
  if (script.referrerPolicy) fetchOpts.referrerPolicy = script.referrerPolicy;
@@ -1101,43 +1278,68 @@
1101
1278
  else if (script.crossOrigin === 'anonymous') fetchOpts.credentials = 'omit';
1102
1279
  else fetchOpts.credentials = 'same-origin';
1103
1280
  return fetchOpts;
1104
- }
1281
+ };
1105
1282
 
1106
1283
  let lastStaticLoadPromise = Promise.resolve();
1107
1284
 
1285
+ let domContentLoaded = false;
1108
1286
  let domContentLoadedCnt = 1;
1109
- function domContentLoadedCheck() {
1287
+ const domContentLoadedCheck = m => {
1288
+ if (m === undefined) {
1289
+ if (domContentLoaded) return;
1290
+ domContentLoaded = true;
1291
+ domContentLoadedCnt--;
1292
+ }
1110
1293
  if (--domContentLoadedCnt === 0 && !noLoadEventRetriggers && (shimMode || !baselinePassthrough)) {
1111
1294
  console.info(`es-module-shims: DOMContentLoaded refire`);
1295
+ document.removeEventListener('DOMContentLoaded', domContentLoadedEvent);
1112
1296
  document.dispatchEvent(new Event('DOMContentLoaded'));
1113
1297
  }
1114
- }
1298
+ };
1115
1299
  let loadCnt = 1;
1116
- function loadCheck() {
1300
+ const loadCheck = () => {
1117
1301
  if (--loadCnt === 0 && !noLoadEventRetriggers && (shimMode || !baselinePassthrough)) {
1118
1302
  console.info(`es-module-shims: load refire`);
1303
+ window.removeEventListener('load', loadEvent);
1119
1304
  window.dispatchEvent(new Event('load'));
1120
1305
  }
1121
- }
1306
+ };
1307
+
1308
+ const domContentLoadedEvent = async () => {
1309
+ await initPromise;
1310
+ domContentLoadedCheck();
1311
+ };
1312
+ const loadEvent = async () => {
1313
+ await initPromise;
1314
+ domContentLoadedCheck();
1315
+ loadCheck();
1316
+ };
1317
+
1122
1318
  // this should always trigger because we assume es-module-shims is itself a domcontentloaded requirement
1123
1319
  if (hasDocument) {
1124
- document.addEventListener('DOMContentLoaded', async () => {
1125
- await initPromise;
1126
- domContentLoadedCheck();
1127
- });
1128
- window.addEventListener('load', async () => {
1129
- await initPromise;
1130
- loadCheck();
1131
- });
1320
+ document.addEventListener('DOMContentLoaded', domContentLoadedEvent);
1321
+ window.addEventListener('load', loadEvent);
1132
1322
  }
1133
1323
 
1324
+ const readyListener = async () => {
1325
+ await initPromise;
1326
+ processScriptsAndPreloads();
1327
+ if (document.readyState === 'complete') {
1328
+ readyStateCompleteCheck();
1329
+ }
1330
+ };
1331
+
1134
1332
  let readyStateCompleteCnt = 1;
1135
- function readyStateCompleteCheck() {
1136
- if (--readyStateCompleteCnt === 0 && !noLoadEventRetriggers && (shimMode || !baselinePassthrough)) {
1137
- console.info(`es-module-shims: readystatechange complete refire`);
1138
- document.dispatchEvent(new Event('readystatechange'));
1333
+ const readyStateCompleteCheck = () => {
1334
+ if (--readyStateCompleteCnt === 0) {
1335
+ domContentLoadedCheck();
1336
+ if (!noLoadEventRetriggers && (shimMode || !baselinePassthrough)) {
1337
+ console.info(`es-module-shims: readystatechange complete refire`);
1338
+ document.removeEventListener('readystatechange', readyListener);
1339
+ document.dispatchEvent(new Event('readystatechange'));
1340
+ }
1139
1341
  }
1140
- }
1342
+ };
1141
1343
 
1142
1344
  const hasNext = script => script.nextSibling || (script.parentNode && hasNext(script.parentNode));
1143
1345
  const epCheck = (script, ready) =>
@@ -1146,7 +1348,7 @@
1146
1348
  script.getAttribute('noshim') !== null ||
1147
1349
  !(script.ep = true);
1148
1350
 
1149
- function processImportMap(script, ready = readyStateCompleteCnt > 0) {
1351
+ const processImportMap = (script, ready = readyStateCompleteCnt > 0) => {
1150
1352
  if (epCheck(script, ready)) return;
1151
1353
  console.info(`es-module-shims: reading import map`);
1152
1354
  // we dont currently support external import maps in polyfill mode to match native
@@ -1177,9 +1379,9 @@
1177
1379
  }
1178
1380
  }
1179
1381
  legacyAcceptingImportMaps = false;
1180
- }
1382
+ };
1181
1383
 
1182
- function processScript(script, ready = readyStateCompleteCnt > 0) {
1384
+ const processScript = (script, ready = readyStateCompleteCnt > 0) => {
1183
1385
  if (epCheck(script, ready)) return;
1184
1386
  console.info(`es-module-shims: checking script ${script.src || '<inline>'}`);
1185
1387
  // does this load block readystate complete
@@ -1202,22 +1404,24 @@
1202
1404
  }
1203
1405
  return topLevelLoad(
1204
1406
  script.src || baseUrl,
1407
+ baseUrl,
1205
1408
  getFetchOpts(script),
1206
1409
  transformed === undefined ? script.innerHTML : transformed,
1207
1410
  !shimMode && transformed === undefined,
1208
1411
  isBlockingReadyScript && lastStaticLoadPromise,
1209
- true
1412
+ 'ts'
1210
1413
  );
1211
1414
  })
1212
1415
  .catch(throwError);
1213
1416
  } else {
1214
1417
  loadPromise = topLevelLoad(
1215
1418
  script.src || baseUrl,
1419
+ baseUrl,
1216
1420
  getFetchOpts(script),
1217
1421
  !script.src ? script.innerHTML : undefined,
1218
1422
  !shimMode,
1219
1423
  isBlockingReadyScript && lastStaticLoadPromise,
1220
- ts
1424
+ 'ts'
1221
1425
  ).catch(throwError);
1222
1426
  }
1223
1427
  if (!noLoadEventRetriggers) loadPromise.then(() => script.dispatchEvent(new Event('load')));
@@ -1226,13 +1430,13 @@
1226
1430
  }
1227
1431
  if (isDomContentLoadedScript) loadPromise.then(domContentLoadedCheck);
1228
1432
  if (isLoadScript) loadPromise.then(loadCheck);
1229
- }
1433
+ };
1230
1434
 
1231
1435
  const fetchCache = {};
1232
- function processPreload(link) {
1436
+ const processPreload = link => {
1233
1437
  link.ep = true;
1234
1438
  if (fetchCache[link.href]) return;
1235
1439
  fetchCache[link.href] = fetchModule(link.href, getFetchOpts(link));
1236
- }
1440
+ };
1237
1441
 
1238
1442
  })();