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.
- package/README.md +54 -5
- package/dist/es-module-shims.debug.js +640 -436
- package/dist/es-module-shims.js +627 -426
- package/dist/es-module-shims.wasm.js +627 -426
- package/package.json +1 -1
|
@@ -1,111 +1,283 @@
|
|
|
1
|
-
|
|
1
|
+
/** ES Module Shims 2.3.0 */
|
|
2
2
|
(function () {
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
277
|
+
const resolveUrl = (relUrl, parentUrl) =>
|
|
278
|
+
resolveIfNotPlainOrUrl(relUrl, parentUrl) || asURL(relUrl) || resolveIfNotPlainOrUrl('./' + relUrl, parentUrl);
|
|
107
279
|
|
|
108
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
444
|
-
|
|
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
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
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
|
-
|
|
628
|
+
if (opts.lang === 'ts') sourceType = 'ts';
|
|
470
629
|
if (typeof opts.with === 'object' && typeof opts.with.type === 'string') {
|
|
471
|
-
|
|
472
|
-
url += '?entry';
|
|
630
|
+
sourceType = opts.with.type;
|
|
473
631
|
}
|
|
474
632
|
}
|
|
475
|
-
return topLevelLoad(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
672
|
+
if (hotReload) importShim$1.hotReload = hotReload$1;
|
|
500
673
|
|
|
501
|
-
|
|
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
|
-
|
|
683
|
+
const throwUnresolved = (id, parentUrl) => {
|
|
509
684
|
throw Error(`Unable to resolve specifier '${id}'${fromParent(parentUrl)}`);
|
|
510
|
-
}
|
|
685
|
+
};
|
|
511
686
|
|
|
512
|
-
function
|
|
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
|
-
|
|
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
|
|
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
|
-
!
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
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
|
-
|
|
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
|
|
805
|
+
const topLevelLoad = async (url, parentUrl, fetchOpts, source, nativelyLoaded, lastStaticLoadPromise, sourceType) => {
|
|
640
806
|
await initPromise;
|
|
641
807
|
await importMapPromise;
|
|
642
|
-
|
|
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 &&
|
|
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
|
-
|
|
682
|
-
let
|
|
683
|
-
const
|
|
684
|
-
|
|
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
|
|
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
|
-
|
|
694
|
-
schedule(cleanup);
|
|
865
|
+
if (curIdx < registryKeys.length) handler(cleanup);
|
|
695
866
|
}
|
|
696
|
-
}
|
|
867
|
+
};
|
|
697
868
|
|
|
698
|
-
|
|
699
|
-
return `'${url.replace(/'/g, "\\'")}'`;
|
|
700
|
-
}
|
|
869
|
+
const urlJsString = url => `'${url.replace(/'/g, "\\'")}'`;
|
|
701
870
|
|
|
702
|
-
|
|
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
|
-
|
|
727
|
-
|
|
728
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1051
|
+
const pushFetchPool = () => {
|
|
882
1052
|
if (++c > 100) return new Promise(r => p.push(r));
|
|
883
|
-
}
|
|
884
|
-
|
|
1053
|
+
};
|
|
1054
|
+
const popFetchPool = () => {
|
|
885
1055
|
c--;
|
|
886
1056
|
if (p.length) p.shift()();
|
|
887
|
-
}
|
|
1057
|
+
};
|
|
888
1058
|
|
|
889
|
-
async
|
|
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
|
|
1081
|
+
const initTs = async () => {
|
|
912
1082
|
const m = await import(tsTransform);
|
|
913
1083
|
if (!esmsTsTransform) esmsTsTransform = m.transform;
|
|
914
|
-
}
|
|
1084
|
+
};
|
|
915
1085
|
|
|
916
|
-
|
|
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
|
|
928
|
-
|
|
929
|
-
|
|
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
|
-
|
|
932
|
-
for (const
|
|
933
|
-
const specifier = urlJsString(
|
|
934
|
-
s += `import
|
|
935
|
-
|
|
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
|
|
938
|
-
|
|
939
|
-
for (const
|
|
940
|
-
s += `export
|
|
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))
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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',
|
|
1125
|
-
|
|
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
|
-
|
|
1136
|
-
if (--readyStateCompleteCnt === 0
|
|
1137
|
-
|
|
1138
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
})();
|