UNPKG

es-module-shims

Version:
933 lines (839 loc) 59.5 kB
/* ES Module Shims Wasm 2.0.10 */ (function () { const hasDocument = typeof document !== 'undefined'; const noop = () => {}; const dynamicImport = (u, errUrl) => import(u); const optionsScript = hasDocument ? document.querySelector('script[type=esms-options]') : undefined; const esmsInitOptions = optionsScript ? JSON.parse(optionsScript.innerHTML) : {}; Object.assign(esmsInitOptions, self.esmsInitOptions || {}); // shim mode is determined on initialization, no late shim mode const shimMode = hasDocument ? esmsInitOptions.shimMode || document.querySelectorAll('script[type=module-shim],script[type=importmap-shim],link[rel=modulepreload-shim]') .length > 0 : true; const importHook = globalHook(shimMode && esmsInitOptions.onimport); const resolveHook = globalHook(shimMode && esmsInitOptions.resolve); let fetchHook = esmsInitOptions.fetch ? globalHook(esmsInitOptions.fetch) : fetch; const metaHook = esmsInitOptions.meta ? globalHook(shimMode && esmsInitOptions.meta) : noop; const tsTransform = esmsInitOptions.tsTransform || (hasDocument && document.currentScript && document.currentScript.src.replace(/\.js$/, '-typescript.js')) || './es-module-shims-typescript.js'; const mapOverrides = esmsInitOptions.mapOverrides; let nonce = esmsInitOptions.nonce; if (!nonce && hasDocument) { const nonceElement = document.querySelector('script[nonce]'); if (nonceElement) nonce = nonceElement.nonce || nonceElement.getAttribute('nonce'); } const onerror = globalHook(esmsInitOptions.onerror || noop); const { revokeBlobURLs, noLoadEventRetriggers, enforceIntegrity } = esmsInitOptions; function globalHook(name) { return typeof name === 'string' ? self[name] : name; } const enable = Array.isArray(esmsInitOptions.polyfillEnable) ? esmsInitOptions.polyfillEnable : []; const enableAll = esmsInitOptions.polyfillEnable === 'all' || enable.includes('all'); const enableLatest = esmsInitOptions.polyfillEnable === 'latest' || enable.includes('latest'); const cssModulesEnabled = enable.includes('css-modules') || enableAll || enableLatest; const jsonModulesEnabled = enable.includes('json-modules') || enableAll || enableLatest; const wasmModulesEnabled = enable.includes('wasm-modules') || enableAll; const sourcePhaseEnabled = enable.includes('source-phase') || enableAll; const typescriptEnabled = enable.includes('typescript') || enableAll; const onpolyfill = esmsInitOptions.onpolyfill ? globalHook(esmsInitOptions.onpolyfill) : () => { console.log(`%c^^ Module error above is polyfilled and can be ignored ^^`, 'font-weight:900;color:#391'); }; const baseUrl = hasDocument ? document.baseURI : `${location.protocol}//${location.host}${ location.pathname.includes('/') ? location.pathname.slice(0, location.pathname.lastIndexOf('/') + 1) : location.pathname }`; const createBlob = (source, type = 'text/javascript') => URL.createObjectURL(new Blob([source], { type })); let { skip } = esmsInitOptions; if (Array.isArray(skip)) { const l = skip.map(s => new URL(s, baseUrl).href); skip = s => l.some(i => (i[i.length - 1] === '/' && s.startsWith(i)) || s === i); } else if (typeof skip === 'string') { const r = new RegExp(skip); skip = s => r.test(s); } else if (skip instanceof RegExp) { skip = s => skip.test(s); } const dispatchError = error => self.dispatchEvent(Object.assign(new Event('error'), { error })); const throwError = err => { (self.reportError || dispatchError)(err), void onerror(err); }; function fromParent(parent) { return parent ? ` imported from ${parent}` : ''; } const backslashRegEx = /\\/g; function asURL(url) { try { if (url.indexOf(':') !== -1) return new URL(url).href; } catch (_) {} } function resolveUrl(relUrl, parentUrl) { return resolveIfNotPlainOrUrl(relUrl, parentUrl) || asURL(relUrl) || resolveIfNotPlainOrUrl('./' + relUrl, parentUrl); } function resolveIfNotPlainOrUrl(relUrl, parentUrl) { const hIdx = parentUrl.indexOf('#'), qIdx = parentUrl.indexOf('?'); if (hIdx + qIdx > -2) parentUrl = parentUrl.slice( 0, hIdx === -1 ? qIdx : qIdx === -1 || qIdx > hIdx ? hIdx : qIdx ); if (relUrl.indexOf('\\') !== -1) relUrl = relUrl.replace(backslashRegEx, '/'); // protocol-relative if (relUrl[0] === '/' && relUrl[1] === '/') { return parentUrl.slice(0, parentUrl.indexOf(':') + 1) + relUrl; } // relative-url else if ( (relUrl[0] === '.' && (relUrl[1] === '/' || (relUrl[1] === '.' && (relUrl[2] === '/' || (relUrl.length === 2 && (relUrl += '/')))) || (relUrl.length === 1 && (relUrl += '/')))) || relUrl[0] === '/' ) { const parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1); if (parentProtocol === 'blob:') { throw new TypeError( `Failed to resolve module specifier "${relUrl}". Invalid relative url or base scheme isn't hierarchical.` ); } // Disabled, but these cases will give inconsistent results for deep backtracking //if (parentUrl[parentProtocol.length] !== '/') // throw new Error('Cannot resolve'); // read pathname from parent URL // pathname taken to be part after leading "/" let pathname; if (parentUrl[parentProtocol.length + 1] === '/') { // resolving to a :// so we need to read out the auth and host if (parentProtocol !== 'file:') { pathname = parentUrl.slice(parentProtocol.length + 2); pathname = pathname.slice(pathname.indexOf('/') + 1); } else { pathname = parentUrl.slice(8); } } else { // resolving to :/ so pathname is the /... part pathname = parentUrl.slice(parentProtocol.length + (parentUrl[parentProtocol.length] === '/')); } if (relUrl[0] === '/') return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl; // join together and split for removal of .. and . segments // looping the string instead of anything fancy for perf reasons // '../../../../../z' resolved to 'x/y' is just 'z' const segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl; const output = []; let segmentIndex = -1; for (let i = 0; i < segmented.length; i++) { // busy reading a segment - only terminate on '/' if (segmentIndex !== -1) { if (segmented[i] === '/') { output.push(segmented.slice(segmentIndex, i + 1)); segmentIndex = -1; } continue; } // new segment - check if it is relative else if (segmented[i] === '.') { // ../ segment if (segmented[i + 1] === '.' && (segmented[i + 2] === '/' || i + 2 === segmented.length)) { output.pop(); i += 2; continue; } // ./ segment else if (segmented[i + 1] === '/' || i + 1 === segmented.length) { i += 1; continue; } } // it is the start of a new segment while (segmented[i] === '/') i++; segmentIndex = i; } // finish reading out the last segment if (segmentIndex !== -1) output.push(segmented.slice(segmentIndex)); return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join(''); } } function resolveAndComposeImportMap(json, baseUrl, parentMap) { const outMap = { imports: Object.assign({}, parentMap.imports), scopes: Object.assign({}, parentMap.scopes), integrity: Object.assign({}, parentMap.integrity) }; if (json.imports) resolveAndComposePackages(json.imports, outMap.imports, baseUrl, parentMap); if (json.scopes) for (let s in json.scopes) { const resolvedScope = resolveUrl(s, baseUrl); resolveAndComposePackages( json.scopes[s], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl, parentMap ); } if (json.integrity) resolveAndComposeIntegrity(json.integrity, outMap.integrity, baseUrl); return outMap; } function getMatch(path, matchObj) { if (matchObj[path]) return path; let sepIndex = path.length; do { const segment = path.slice(0, sepIndex + 1); if (segment in matchObj) return segment; } while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1); } function applyPackages(id, packages) { const pkgName = getMatch(id, packages); if (pkgName) { const pkg = packages[pkgName]; if (pkg === null) return; return pkg + id.slice(pkgName.length); } } function resolveImportMap(importMap, resolvedOrPlain, parentUrl) { let scopeUrl = parentUrl && getMatch(parentUrl, importMap.scopes); while (scopeUrl) { const packageResolution = applyPackages(resolvedOrPlain, importMap.scopes[scopeUrl]); if (packageResolution) return packageResolution; scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), importMap.scopes); } return applyPackages(resolvedOrPlain, importMap.imports) || (resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain); } function resolveAndComposePackages(packages, outPackages, baseUrl, parentMap) { for (let p in packages) { const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p; if ( (!shimMode || !mapOverrides) && outPackages[resolvedLhs] && outPackages[resolvedLhs] !== packages[resolvedLhs] ) { console.warn( `es-module-shims: Rejected map override "${resolvedLhs}" from ${outPackages[resolvedLhs]} to ${packages[resolvedLhs]}.` ); continue; } let target = packages[p]; if (typeof target !== 'string') continue; const mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(target, baseUrl) || target, baseUrl); if (mapped) { outPackages[resolvedLhs] = mapped; continue; } console.warn(`es-module-shims: Mapping "${p}" -> "${packages[p]}" does not resolve`); } } function resolveAndComposeIntegrity(integrity, outIntegrity, baseUrl) { for (let p in integrity) { const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p; if ( (!shimMode || !mapOverrides) && outIntegrity[resolvedLhs] && outIntegrity[resolvedLhs] !== integrity[resolvedLhs] ) { console.warn( `es-module-shims: Rejected map integrity override "${resolvedLhs}" from ${outIntegrity[resolvedLhs]} to ${integrity[resolvedLhs]}.` ); } outIntegrity[resolvedLhs] = integrity[p]; } } // support browsers without dynamic import support (eg Firefox 6x) let supportsJsonType = false; let supportsCssType = false; const supports = hasDocument && HTMLScriptElement.supports; let supportsImportMaps = supports && supports.name === 'supports' && supports('importmap'); let supportsWasmModules = false; let supportsSourcePhase = false; let supportsMultipleImportMaps = false; const wasmBytes = [0, 97, 115, 109, 1, 0, 0, 0]; let featureDetectionPromise = (async function () { if (!hasDocument) return Promise.all([ cssModulesEnabled && import(createBlob(`import"${createBlob('', 'text/css')}"with{type:"css"}`)).then( () => (supportsCssType = true), noop ), jsonModulesEnabled && import(createBlob(`import"${createBlob('{}', 'text/json')}"with{type:"json"}`)).then( () => (supportsJsonType = true), noop ), wasmModulesEnabled && import(createBlob(`import"${createBlob(new Uint8Array(wasmBytes), 'application/wasm')}"`)).then( () => (supportsWasmModules = true), noop ), wasmModulesEnabled && sourcePhaseEnabled && import(createBlob(`import source x from"${createBlob(new Uint8Array(wasmBytes), 'application/wasm')}"`)).then( () => (supportsSourcePhase = true), noop ) ]); return new Promise(resolve => { const iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.setAttribute('nonce', nonce); function cb({ data }) { const isFeatureDetectionMessage = Array.isArray(data) && data[0] === 'esms'; if (!isFeatureDetectionMessage) return; [ , supportsImportMaps, supportsMultipleImportMaps, supportsCssType, supportsJsonType, supportsWasmModules, supportsSourcePhase ] = data; resolve(); document.head.removeChild(iframe); window.removeEventListener('message', cb, false); } window.addEventListener('message', cb, false); const importMapTest = `<script nonce=${nonce || ''}>b=(s,type='text/javascript')=>URL.createObjectURL(new Blob([s],{type}));i=innerText=>document.head.appendChild(Object.assign(document.createElement('script'),{type:'importmap',nonce:"${nonce}",innerText}));i(\`{"imports":{"x":"\${b('')}"}}\`);i(\`{"imports":{"y":"\${b('')}"}}\`);Promise.all([${ supportsImportMaps ? 'true' : "'x'" },${supportsImportMaps ? "'y'" : false},${supportsImportMaps && cssModulesEnabled ? `b(\`import"\${b('','text/css')}"with{type:"css"}\`)` : 'false'}, ${ supportsImportMaps && jsonModulesEnabled ? `b(\`import"\${b('{}','text/json')\}"with{type:"json"}\`)` : 'false' },${ supportsImportMaps && wasmModulesEnabled ? `b(\`import"\${b(new Uint8Array(${JSON.stringify(wasmBytes)}),'application/wasm')\}"\`)` : 'false' },${ supportsImportMaps && wasmModulesEnabled && sourcePhaseEnabled ? `b(\`import source x from "\${b(new Uint8Array(${JSON.stringify(wasmBytes)}),'application/wasm')\}"\`)` : 'false' }].map(x =>typeof x==='string'?import(x).then(()=>true,()=>false):x)).then(a=>parent.postMessage(['esms'].concat(a),'*'))<${''}/script>`; // Safari will call onload eagerly on head injection, but we don't want the Wechat // path to trigger before setting srcdoc, therefore we track the timing let readyForOnload = false, onloadCalledWhileNotReady = false; function doOnload() { if (!readyForOnload) { onloadCalledWhileNotReady = true; return; } // WeChat browser doesn't support setting srcdoc scripts // But iframe sandboxes don't support contentDocument so we do this as a fallback const doc = iframe.contentDocument; if (doc && doc.head.childNodes.length === 0) { const s = doc.createElement('script'); if (nonce) s.setAttribute('nonce', nonce); s.innerHTML = importMapTest.slice(15 + (nonce ? nonce.length : 0), -9); doc.head.appendChild(s); } } iframe.onload = doOnload; // WeChat browser requires append before setting srcdoc document.head.appendChild(iframe); // setting srcdoc is not supported in React native webviews on iOS // setting src to a blob URL results in a navigation event in webviews // document.write gives usability warnings readyForOnload = true; if ('srcdoc' in iframe) iframe.srcdoc = importMapTest; else iframe.contentDocument.write(importMapTest); // retrigger onload for Safari only if necessary if (onloadCalledWhileNotReady) doOnload(); }); })(); /* es-module-lexer 1.6.0 */ var ImportType;!function(A){A[A.Static=1]="Static",A[A.Dynamic=2]="Dynamic",A[A.ImportMeta=3]="ImportMeta",A[A.StaticSourcePhase=4]="StaticSourcePhase",A[A.DynamicSourcePhase=5]="DynamicSourcePhase";}(ImportType||(ImportType={}));const A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];function parse(E,g="@"){if(!C)return init.then((()=>parse(E)));const I=E.length+1,w=(C.__heap_base.value||C.__heap_base)+4*I-C.memory.buffer.byteLength;w>0&&C.memory.grow(Math.ceil(w/65536));const K=C.sa(I-1);if((A?B:Q)(E,new Uint16Array(C.memory.buffer,K,I)),!C.parse())throw Object.assign(new Error(`Parse error ${g}:${E.slice(0,C.e()).split("\n").length}:${C.e()-E.lastIndexOf("\n",C.e()-1)}`),{idx:C.e()});const o=[],D=[];for(;C.ri();){const A=C.is(),Q=C.ie(),B=C.it(),g=C.ai(),I=C.id(),w=C.ss(),K=C.se();let D;C.ip()&&(D=k(E.slice(-1===I?A-1:A,-1===I?Q+1:Q))),o.push({n:D,t:B,s:A,e:Q,ss:w,se:K,d:I,a:g});}for(;C.re();){const A=C.es(),Q=C.ee(),B=C.els(),g=C.ele(),I=E.slice(A,Q),w=I[0],K=B<0?void 0:E.slice(B,g),o=K?K[0]:"";D.push({s:A,e:Q,ls:B,le:g,n:'"'===w||"'"===w?k(I):I,ln:'"'===o||"'"===o?k(K):K});}function k(A){try{return (0,eval)(A)}catch(A){}}return [o,D,!!C.f(),!!C.ms()]}function Q(A,Q){const B=A.length;let C=0;for(;C<B;){const B=A.charCodeAt(C);Q[C++]=(255&B)<<8|B>>>8;}}function B(A,Q){const B=A.length;let C=0;for(;C<B;)Q[C]=A.charCodeAt(C++);}let C;const E=()=>{return A="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","undefined"!=typeof Buffer?Buffer.from(A,"base64"):Uint8Array.from(atob(A),(A=>A.charCodeAt(0)));var A;};const init=WebAssembly.compile(E()).then(WebAssembly.instantiate).then((({exports:A})=>{C=A;})); function _resolve(id, parentUrl = baseUrl) { const urlResolved = resolveIfNotPlainOrUrl(id, parentUrl) || asURL(id); const firstResolved = firstImportMap && resolveImportMap(firstImportMap, urlResolved || id, parentUrl); const composedResolved = composedImportMap === firstImportMap ? firstResolved : ( resolveImportMap(composedImportMap, urlResolved || id, parentUrl) ); const resolved = composedResolved || firstResolved || throwUnresolved(id, parentUrl); // needsShim, shouldShim per load record to set on parent let n = false, N = false; if (!supportsImportMaps) { // bare specifier -> needs shim if (!urlResolved) n = true; // url mapping -> should shim else if (urlResolved !== resolved) N = true; } else if (!supportsMultipleImportMaps) { // bare specifier and not resolved by first import map -> needs shim if (!urlResolved && !firstResolved) n = true; // resolution doesn't match first import map -> should shim if (firstResolved && resolved !== firstResolved) N = true; } return { r: resolved, n, N }; } const resolve = resolveHook ? (id, parentUrl = baseUrl) => { const result = resolveHook(id, parentUrl, defaultResolve); return result ? { r: result, n: true, N: true } : _resolve(id, parentUrl); } : _resolve; async function importHandler(id, opts, parentUrl = baseUrl, sourcePhase) { await initPromise; // needed for shim check if (importHook) await importHook(id, opts, parentUrl); if (shimMode || !baselinePassthrough) { if (hasDocument) processScriptsAndPreloads(); legacyAcceptingImportMaps = false; } await importMapPromise; return resolve(id, parentUrl).r; } // import() async function importShim(id, opts, parentUrl) { if (typeof opts === 'string') { parentUrl = opts; opts = undefined; } // we mock import('./x.css', { with: { type: 'css' }}) support via an inline static reexport // because we can't syntactically pass through to dynamic import with a second argument in this libarary let url = await importHandler(id, opts, parentUrl); let source = null; if (typeof opts === 'object' && typeof opts.with === 'object' && typeof opts.with.type === 'string') { source = `export{default}from'${url}'with{type:"${opts.with.type}"}`; url += '?entry'; } return topLevelLoad(url, { credentials: 'same-origin' }, source, undefined, undefined); } // import.source() // (opts not currently supported as no use cases yet) if (shimMode || sourcePhaseEnabled) importShim.source = async function importShimSource(specifier, opts, parentUrl) { if (typeof opts === 'string') { parentUrl = opts; opts = undefined; } const url = await importHandler(specifier, opts, parentUrl); const load = getOrCreateLoad(url, { credentials: 'same-origin' }, null, null); if (firstPolyfillLoad && !shimMode && load.n && nativelyLoaded) { onpolyfill(); firstPolyfillLoad = false; } await load.f; return importShim._s[load.r]; }; self.importShim = importShim; function defaultResolve(id, parentUrl) { return ( resolveImportMap(composedImportMap, resolveIfNotPlainOrUrl(id, parentUrl) || id, parentUrl) || throwUnresolved(id, parentUrl) ); } function throwUnresolved(id, parentUrl) { throw Error(`Unable to resolve specifier '${id}'${fromParent(parentUrl)}`); } function metaResolve(id, parentUrl = this.url) { return resolve(id, `${parentUrl}`).r; } importShim.resolve = (id, parentUrl) => resolve(id, parentUrl).r; importShim.getImportMap = () => JSON.parse(JSON.stringify(composedImportMap)); importShim.addImportMap = importMapIn => { if (!shimMode) throw new Error('Unsupported in polyfill mode.'); composedImportMap = resolveAndComposeImportMap(importMapIn, baseUrl, composedImportMap); }; const registry = (importShim._r = {}); const sourceCache = (importShim._s = {}); async function loadAll(load, seen) { seen[load.u] = 1; await load.L; await Promise.all( load.d.map(({ l: dep, s: sourcePhase }) => { if (dep.b || seen[dep.u]) return; if (sourcePhase) return dep.f; return loadAll(dep, seen); }) ); } let importMapSrc = false; let multipleImportMaps = false; let firstImportMap = null; // To support polyfilling multiple import maps, we separately track the composed import map from the first import map let composedImportMap = { imports: {}, scopes: {}, integrity: {} }; let baselinePassthrough; const initPromise = featureDetectionPromise.then(() => { baselinePassthrough = esmsInitOptions.polyfillEnable !== true && supportsImportMaps && (!jsonModulesEnabled || supportsJsonType) && (!cssModulesEnabled || supportsCssType) && (!wasmModulesEnabled || supportsWasmModules) && (!sourcePhaseEnabled || supportsSourcePhase) && (!multipleImportMaps || supportsMultipleImportMaps) && !importMapSrc && !typescriptEnabled; if ( !shimMode && sourcePhaseEnabled && typeof WebAssembly !== 'undefined' && !Object.getPrototypeOf(WebAssembly.Module).name ) { const s = Symbol(); const brand = m => Object.defineProperty(m, s, { writable: false, configurable: false, value: 'WebAssembly.Module' }); class AbstractModuleSource { get [Symbol.toStringTag]() { if (this[s]) return this[s]; throw new TypeError('Not an AbstractModuleSource'); } } const { Module: wasmModule, compile: wasmCompile, compileStreaming: wasmCompileStreaming } = WebAssembly; WebAssembly.Module = Object.setPrototypeOf( Object.assign(function Module(...args) { return brand(new wasmModule(...args)); }, wasmModule), AbstractModuleSource ); WebAssembly.Module.prototype = Object.setPrototypeOf(wasmModule.prototype, AbstractModuleSource.prototype); WebAssembly.compile = function compile(...args) { return wasmCompile(...args).then(brand); }; WebAssembly.compileStreaming = function compileStreaming(...args) { return wasmCompileStreaming(...args).then(brand); }; } if (hasDocument) { if (!supportsImportMaps) { const supports = HTMLScriptElement.supports || (type => type === 'classic' || type === 'module'); HTMLScriptElement.supports = type => type === 'importmap' || supports(type); } if (shimMode || !baselinePassthrough) { attachMutationObserver(); if (document.readyState === 'complete') { readyStateCompleteCheck(); } else { async function readyListener() { await initPromise; processScriptsAndPreloads(); if (document.readyState === 'complete') { readyStateCompleteCheck(); document.removeEventListener('readystatechange', readyListener); } } document.addEventListener('readystatechange', readyListener); } } processScriptsAndPreloads(); } return init; }); function attachMutationObserver() { const observer = new MutationObserver(mutations => { for (const mutation of mutations) { if (mutation.type !== 'childList') continue; for (const node of mutation.addedNodes) { if (node.tagName === 'SCRIPT') { if (node.type === (shimMode ? 'module-shim' : 'module') && !node.ep) processScript(node, true); if (node.type === (shimMode ? 'importmap-shim' : 'importmap') && !node.ep) processImportMap(node, true); } else if ( node.tagName === 'LINK' && node.rel === (shimMode ? 'modulepreload-shim' : 'modulepreload') && !node.ep ) { processPreload(node); } } } }); observer.observe(document, { childList: true }); observer.observe(document.head, { childList: true }); processScriptsAndPreloads(); } let importMapPromise = initPromise; let firstPolyfillLoad = true; let legacyAcceptingImportMaps = true; async function topLevelLoad(url, fetchOpts, source, nativelyLoaded, lastStaticLoadPromise) { legacyAcceptingImportMaps = false; await initPromise; await importMapPromise; if (importHook) await importHook(url, typeof fetchOpts !== 'string' ? fetchOpts : {}, ''); // early analysis opt-out - no need to even fetch if we have feature support if (!shimMode && baselinePassthrough) { // for polyfill case, only dynamic import needs a return value here, and dynamic import will never pass nativelyLoaded if (nativelyLoaded) return null; await lastStaticLoadPromise; return dynamicImport(source ? createBlob(source) : url); } const load = getOrCreateLoad(url, fetchOpts, null, source); linkLoad(load, fetchOpts); const seen = {}; await loadAll(load, seen); resolveDeps(load, seen); await lastStaticLoadPromise; if (!shimMode && !load.n) { if (nativelyLoaded) { return; } if (source) { return await dynamicImport(createBlob(source)); } } if (firstPolyfillLoad && !shimMode && load.n && nativelyLoaded) { onpolyfill(); firstPolyfillLoad = false; } const module = await (!shimMode && !load.n && !load.N ? import(load.u) : dynamicImport(load.b, load.u)); // if the top-level load is a shell, run its update function if (load.s) (await dynamicImport(load.s, load.u)).u$_(module); if (revokeBlobURLs) revokeObjectURLs(Object.keys(seen)); // when tla is supported, this should return the tla promise as an actual handle // so readystate can still correspond to the sync subgraph exec completions return module; } function revokeObjectURLs(registryKeys) { let batch = 0; const keysLength = registryKeys.length; const schedule = self.requestIdleCallback ? self.requestIdleCallback : self.requestAnimationFrame; schedule(cleanup); function cleanup() { const batchStartIndex = batch * 100; if (batchStartIndex > keysLength) return; for (const key of registryKeys.slice(batchStartIndex, batchStartIndex + 100)) { const load = registry[key]; if (load && load.b) URL.revokeObjectURL(load.b); } batch++; schedule(cleanup); } } function urlJsString(url) { return `'${url.replace(/'/g, "\\'")}'`; } function resolveDeps(load, seen) { if (load.b || !seen[load.u]) return; seen[load.u] = 0; for (const { l: dep, s: sourcePhase } of load.d) { if (!sourcePhase) resolveDeps(dep, seen); } if (!load.n) load.n = load.d.some(dep => dep.l.n); if (!load.N) load.N = load.d.some(dep => dep.l.N); // use native loader whenever possible (n = needs shim) via executable subgraph passthrough // so long as the module doesn't use dynamic import or unsupported URL mappings (N = should shim) if (!shimMode && !load.n && !load.N) { load.b = load.u; load.S = undefined; return; } const [imports, exports] = load.a; // "execution" const source = load.S; let resolvedSource = ''; // once all deps have loaded we can inline the dependency resolution blobs // and define this blob let lastIndex = 0, depIndex = 0, dynamicImportEndStack = []; function pushStringTo(originalIndex) { while (dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) { const dynamicImportEnd = dynamicImportEndStack.pop(); resolvedSource += `${source.slice(lastIndex, dynamicImportEnd)}, ${urlJsString(load.r)}`; lastIndex = dynamicImportEnd; } resolvedSource += source.slice(lastIndex, originalIndex); lastIndex = originalIndex; } for (const { s: start, e: end, ss: statementStart, se: statementEnd, d: dynamicImportIndex, t, a } of imports) { // source phase if (t === 4) { let { l: depLoad } = load.d[depIndex++]; pushStringTo(statementStart); resolvedSource += 'import '; lastIndex = statementStart + 14; pushStringTo(start - 1); resolvedSource += `/*${source.slice(start - 1, end + 1)}*/'${createBlob(`export default importShim._s[${urlJsString(depLoad.r)}]`)}'`; lastIndex = end + 1; } // dependency source replacements else if (dynamicImportIndex === -1) { let { l: depLoad } = load.d[depIndex++], blobUrl = depLoad.b, cycleShell = !blobUrl; if (cycleShell) { // circular shell creation if (!(blobUrl = depLoad.s)) { blobUrl = depLoad.s = createBlob( `export function u$_(m){${depLoad.a[1] .map(({ s, e }, i) => { const q = depLoad.S[s] === '"' || depLoad.S[s] === "'"; return `e$_${i}=m${q ? `[` : '.'}${depLoad.S.slice(s, e)}${q ? `]` : ''}`; }) .join(',')}}${ depLoad.a[1].length ? `let ${depLoad.a[1].map((_, i) => `e$_${i}`).join(',')};` : '' }export {${depLoad.a[1] .map(({ s, e }, i) => `e$_${i} as ${depLoad.S.slice(s, e)}`) .join(',')}}\n//# sourceURL=${depLoad.r}?cycle` ); } } // strip import assertions unless we support them const stripAssertion = (!supportsCssType && !supportsJsonType) || !(a > 0); pushStringTo(start - 1); resolvedSource += `/*${source.slice(start - 1, end + 1)}*/'${blobUrl}'`; // circular shell execution if (!cycleShell && depLoad.s) { resolvedSource += `;import*as m$_${depIndex} from'${depLoad.b}';import{u$_ as u$_${depIndex}}from'${depLoad.s}';u$_${depIndex}(m$_${depIndex})`; depLoad.s = undefined; } lastIndex = stripAssertion ? statementEnd : end + 1; } // import.meta else if (dynamicImportIndex === -2) { load.m = { url: load.r, resolve: metaResolve }; metaHook(load.m, load.u); pushStringTo(start); resolvedSource += `importShim._r[${urlJsString(load.u)}].m`; lastIndex = statementEnd; } // dynamic import else { pushStringTo(statementStart + 6); resolvedSource += `Shim${t === 5 ? '.source' : ''}(`; dynamicImportEndStack.push(statementEnd - 1); lastIndex = start; } } // support progressive cycle binding updates (try statement avoids tdz errors) if (load.s && (imports.length === 0 || imports[imports.length - 1].d === -1)) resolvedSource += `\n;import{u$_}from'${load.s}';try{u$_({${exports .filter(e => e.ln) .map(({ s, e, ln }) => `${source.slice(s, e)}:${ln}`) .join(',')}})}catch(_){};\n`; function pushSourceURL(commentPrefix, commentStart) { const urlStart = commentStart + commentPrefix.length; const commentEnd = source.indexOf('\n', urlStart); const urlEnd = commentEnd !== -1 ? commentEnd : source.length; let sourceUrl = source.slice(urlStart, urlEnd); try { sourceUrl = new URL(sourceUrl, load.r).href; } catch {} pushStringTo(urlStart); resolvedSource += sourceUrl; lastIndex = urlEnd; } let sourceURLCommentStart = source.lastIndexOf(sourceURLCommentPrefix); let sourceMapURLCommentStart = source.lastIndexOf(sourceMapURLCommentPrefix); // ignore sourceMap comments before already spliced code if (sourceURLCommentStart < lastIndex) sourceURLCommentStart = -1; if (sourceMapURLCommentStart < lastIndex) sourceMapURLCommentStart = -1; // sourceURL first / only if ( sourceURLCommentStart !== -1 && (sourceMapURLCommentStart === -1 || sourceMapURLCommentStart > sourceURLCommentStart) ) { pushSourceURL(sourceURLCommentPrefix, sourceURLCommentStart); } // sourceMappingURL if (sourceMapURLCommentStart !== -1) { pushSourceURL(sourceMapURLCommentPrefix, sourceMapURLCommentStart); // sourceURL last if (sourceURLCommentStart !== -1 && sourceURLCommentStart > sourceMapURLCommentStart) pushSourceURL(sourceURLCommentPrefix, sourceURLCommentStart); } pushStringTo(source.length); if (sourceURLCommentStart === -1) resolvedSource += sourceURLCommentPrefix + load.r; load.b = createBlob(resolvedSource); load.S = undefined; } const sourceURLCommentPrefix = '\n//# sourceURL='; const sourceMapURLCommentPrefix = '\n//# sourceMappingURL='; const jsContentType = /^(text|application)\/(x-)?javascript(;|$)/; const wasmContentType = /^application\/wasm(;|$)/; const jsonContentType = /^(text|application)\/json(;|$)/; const cssContentType = /^(text|application)\/css(;|$)/; const tsContentType = /^application\/typescript(;|$)|/; const cssUrlRegEx = /url\(\s*(?:(["'])((?:\\.|[^\n\\"'])+)\1|((?:\\.|[^\s,"'()\\])+))\s*\)/g; // restrict in-flight fetches to a pool of 100 let p = []; let c = 0; function pushFetchPool() { if (++c > 100) return new Promise(r => p.push(r)); } function popFetchPool() { c--; if (p.length) p.shift()(); } async function doFetch(url, fetchOpts, parent) { if (enforceIntegrity && !fetchOpts.integrity) throw Error(`No integrity for ${url}${fromParent(parent)}.`); const poolQueue = pushFetchPool(); if (poolQueue) await poolQueue; try { var res = await fetchHook(url, fetchOpts); } catch (e) { e.message = `Unable to fetch ${url}${fromParent(parent)} - see network log for details.\n` + e.message; throw e; } finally { popFetchPool(); } if (!res.ok) { const error = new TypeError(`${res.status} ${res.statusText} ${res.url}${fromParent(parent)}`); error.response = res; throw error; } return res; } let esmsTsTransform; async function initTs() { const m = await import(tsTransform); if (!esmsTsTransform) esmsTsTransform = m.transform; } async function fetchModule(url, fetchOpts, parent) { const mapIntegrity = composedImportMap.integrity[url]; const res = await doFetch( url, mapIntegrity && !fetchOpts.integrity ? Object.assign({}, fetchOpts, { integrity: mapIntegrity }) : fetchOpts, parent ); const r = res.url; const contentType = res.headers.get('content-type'); if (jsContentType.test(contentType)) return { r, s: await res.text(), t: 'js' }; else if (wasmContentType.test(contentType)) { const module = await (sourceCache[r] || (sourceCache[r] = WebAssembly.compileStreaming(res))); sourceCache[r] = module; let s = '', i = 0, importObj = ''; for (const impt of WebAssembly.Module.imports(module)) { const specifier = urlJsString(impt.module); s += `import * as impt${i} from ${specifier};\n`; importObj += `${specifier}:impt${i++},`; } i = 0; s += `const instance = await WebAssembly.instantiate(importShim._s[${urlJsString(r)}], {${importObj}});\n`; for (const expt of WebAssembly.Module.exports(module)) { s += `export const ${expt.name} = instance.exports['${expt.name}'];\n`; } return { r, s, t: 'wasm' }; } else if (jsonContentType.test(contentType)) return { r, s: `export default ${await res.text()}`, t: 'json' }; else if (cssContentType.test(contentType)) { return { r, s: `var s=new CSSStyleSheet();s.replaceSync(${JSON.stringify( (await res.text()).replace( cssUrlRegEx, (_match, quotes = '', relUrl1, relUrl2) => `url(${quotes}${resolveUrl(relUrl1 || relUrl2, url)}${quotes})` ) )});export default s;`, t: 'css' }; } else if ( (shimMode || typescriptEnabled) && (tsContentType.test(contentType) || url.endsWith('.ts') || url.endsWith('.mts')) ) { const source = await res.text(); if (!esmsTsTransform) await initTs(); const transformed = esmsTsT