UNPKG

es-module-shims

Version:
920 lines (828 loc) 72 kB
/** ES Module Shims Wasm @version 2.8.1 */ (function () { const self_ = typeof globalThis !== 'undefined' ? globalThis : self; let invalidate; const hotReload$1 = url => invalidate(new URL(url, baseUrl).href); const initHotReload = (topLevelLoad, importShim) => { let _importHook = importHook, _resolveHook = resolveHook, _metaHook = metaHook; let defaultResolve; let hotResolveHook = (id, parent, _defaultResolve) => { if (!defaultResolve) defaultResolve = _defaultResolve; const originalParent = stripVersion(parent); const url = stripVersion(defaultResolve(id, originalParent)); const hotState = getHotState(url); const parents = hotState.p; if (!parents.includes(originalParent)) parents.push(originalParent); return toVersioned(url, hotState); }; const hotImportHook = (url, _, __, source, sourceType) => { const hotState = getHotState(url); hotState.e = typeof source === 'string' ? source : true; hotState.t = sourceType; }; const hotMetaHook = (metaObj, url) => (metaObj.hot = new Hot(url)); const Hot = class Hot { constructor(url) { this.data = getHotState((this.url = stripVersion(url))).d; } accept(deps, cb) { if (typeof deps === 'function') { cb = deps; deps = null; } const hotState = getHotState(this.url); if (!hotState.A) return; (hotState.a = hotState.a || []).push([ typeof deps === 'string' ? defaultResolve(deps, this.url) : deps ? deps.map(d => defaultResolve(d, this.url)) : null, cb ]); } dispose(cb) { getHotState(this.url).u = cb; } invalidate() { const hotState = getHotState(this.url); hotState.a = hotState.A = null; const seen = [this.url]; hotState.p.forEach(p => invalidate(p, this.url, seen)); } }; const versionedRegEx = /\?v=\d+$/; const stripVersion = url => { const versionMatch = url.match(versionedRegEx); return versionMatch ? url.slice(0, -versionMatch[0].length) : url; }; const toVersioned = (url, hotState) => { const { v } = hotState; return url + (v ? '?v=' + v : ''); }; let hotRegistry = {}, curInvalidationRoots = new Set(), curInvalidationInterval; const getHotState = url => hotRegistry[url] || (hotRegistry[url] = { // version v: 0, // accept list ([deps, cb] pairs) a: null, // accepting acceptors A: true, // unload callback u: null, // entry point or inline script source e: false, // hot data d: {}, // parents p: [], // source type t: undefined }); invalidate = (url, fromUrl, seen = []) => { const hotState = hotRegistry[url]; if (!hotState || seen.includes(url)) return false; seen.push(url); hotState.A = false; if ( fromUrl && hotState.a && hotState.a.some(([d]) => d && (typeof d === 'string' ? d === fromUrl : d.includes(fromUrl))) ) { curInvalidationRoots.add(fromUrl); } else { if (hotState.e || hotState.a) curInvalidationRoots.add(url); hotState.v++; if (!hotState.a) hotState.p.forEach(p => invalidate(p, url, seen)); } if (!curInvalidationInterval) curInvalidationInterval = setTimeout(handleInvalidations, hotReloadInterval); return true; }; const handleInvalidations = () => { curInvalidationInterval = null; const earlyRoots = new Set(); for (const root of curInvalidationRoots) { const hotState = hotRegistry[root]; topLevelLoad( toVersioned(root, hotState), baseUrl, defaultFetchOpts, typeof hotState.e === 'string' ? hotState.e : undefined, false, undefined, hotState.t ).then(m => { if (hotState.a) { hotState.a.forEach(([d, c]) => d === null && !earlyRoots.has(c) && c(m)); // unload should be the latest unload handler from the just loaded module if (hotState.u) { hotState.u(hotState.d); hotState.u = null; } } hotState.p.forEach(p => { const hotState = hotRegistry[p]; if (hotState && hotState.a) hotState.a.forEach( async ([d, c]) => d && !earlyRoots.has(c) && (typeof d === 'string' ? d === root && c(m) : c(await Promise.all(d.map(d => (earlyRoots.push(c), importShim(toVersioned(d, getHotState(d)))))))) ); }); }, throwError); } curInvalidationRoots = new Set(); }; setHooks( _importHook ? chain(_importHook, hotImportHook) : hotImportHook, _resolveHook ? (id, parent, defaultResolve) => hotResolveHook(id, parent, (id, parent) => _resolveHook(id, parent, defaultResolve)) : hotResolveHook, _metaHook ? chain(_metaHook, hotMetaHook) : hotMetaHook ); }; const hasDocument = typeof document !== 'undefined'; const noop = () => {}; const chain = (a, b) => function () { a.apply(this, arguments); b.apply(this, arguments); }; const dynamicImport = (u, _errUrl) => import(u); const defineValue = (obj, prop, value) => Object.defineProperty(obj, prop, { writable: false, configurable: false, value }); const optionsScript = hasDocument ? document.querySelector('script[type=esms-options]') : undefined; const esmsInitOptions = optionsScript ? JSON.parse(optionsScript.innerHTML) : {}; Object.assign(esmsInitOptions, self_.esmsInitOptions || {}); const version = "2.8.1"; const r = esmsInitOptions.version; if (self_.importShim || (r && r !== version)) { return; } // shim mode is determined on initialization, no late shim mode const shimMode = esmsInitOptions.shimMode || (hasDocument ? document.querySelectorAll('script[type=module-shim],script[type=importmap-shim],link[rel=modulepreload-shim]') .length > 0 // Without a document, shim mode is always true as we cannot polyfill : true); let importHook, resolveHook, fetchHook = fetch, sourceHook, metaHook, tsTransform = esmsInitOptions.tsTransform || (hasDocument && document.currentScript && document.currentScript.src.replace(/(\.\w+)?\.js$/, '-typescript.js')) || './es-module-shims-typescript.js'; const defaultFetchOpts = { credentials: 'same-origin' }; const globalHook = name => (typeof name === 'string' ? self_[name] : name); if (esmsInitOptions.onimport) importHook = globalHook(esmsInitOptions.onimport); if (esmsInitOptions.resolve) resolveHook = globalHook(esmsInitOptions.resolve); if (esmsInitOptions.fetch) fetchHook = globalHook(esmsInitOptions.fetch); if (esmsInitOptions.source) sourceHook = globalHook(esmsInitOptions.source); if (esmsInitOptions.meta) metaHook = globalHook(esmsInitOptions.meta); const hasCustomizationHooks = importHook || resolveHook || fetchHook !== fetch || sourceHook || metaHook; const { noLoadEventRetriggers, enforceIntegrity, hotReload, hotReloadInterval = 100, nativePassthrough = !hasCustomizationHooks && !hotReload } = esmsInitOptions; const setHooks = (importHook_, resolveHook_, metaHook_) => ( (importHook = importHook_), (resolveHook = resolveHook_), (metaHook = metaHook_) ); 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 || console.error.bind(console)); const enable = Array.isArray(esmsInitOptions.polyfillEnable) ? esmsInitOptions.polyfillEnable : []; const disable = Array.isArray(esmsInitOptions.polyfillDisable) ? esmsInitOptions.polyfillDisable : []; const enableAll = esmsInitOptions.polyfillEnable === 'all' || enable.includes('all'); const wasmInstancePhaseEnabled = enable.includes('wasm-modules') || enable.includes('wasm-module-instances') || enableAll; const wasmSourcePhaseEnabled = enable.includes('wasm-modules') || enable.includes('wasm-module-sources') || enableAll; const deferPhaseEnabled = enable.includes('import-defer') || enableAll; const cssModulesEnabled = !disable.includes('css-modules'); const jsonModulesEnabled = !disable.includes('json-modules'); 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 : typeof location !== 'undefined' ? `${location.protocol}//${location.host}${ location.pathname.includes('/') ? location.pathname.slice(0, location.pathname.lastIndexOf('/') + 1) : location.pathname }` : 'about:blank'; 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); onerror(err); }; const fromParent = parent => (parent ? ` imported from ${parent}` : ''); const backslashRegEx = /\\/g; const asURL = url => { try { if (url.indexOf(':') !== -1) return new URL(url).href; } catch (_) {} }; const resolveUrl = (relUrl, parentUrl) => resolveIfNotPlainOrUrl(relUrl, parentUrl) || asURL(relUrl) || resolveIfNotPlainOrUrl('./' + relUrl, parentUrl); const 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(''); } }; const resolveAndComposeImportMap = (json, baseUrl, parentMap) => { const outMap = { imports: { ...parentMap.imports }, scopes: { ...parentMap.scopes }, integrity: { ...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; }; const 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); }; const applyPackages = (id, packages) => { const pkgName = getMatch(id, packages); if (pkgName) { const pkg = packages[pkgName]; if (pkg === null) return; return pkg + id.slice(pkgName.length); } }; const 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); }; const 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`); } }; const 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]; } }; let policy; if ( typeof self !== 'undefined' && (typeof self.trustedTypes !== 'undefined' || typeof self.TrustedTypes !== 'undefined') ) { try { policy = (self.trustedTypes || self.TrustedTypes).createPolicy('es-module-shims', { createHTML: html => html, createScript: script => script }); } catch {} } function maybeTrustedInnerHTML(html) { return policy ? policy.createHTML(html) : html; } function maybeTrustedScript(script) { return policy ? policy.createScript(script) : script; } // 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 supportsWasmInstancePhase = false; let supportsWasmSourcePhase = false; let supportsMultipleImportMaps = false; const wasmBytes = [0, 97, 115, 109, 1, 0, 0, 0]; let featureDetectionPromise = (async function () { if (!hasDocument) return Promise.all([ import(createBlob(`import"${createBlob('{}', 'text/json')}"with{type:"json"}`)).then( () => ( (supportsJsonType = true), import(createBlob(`import"${createBlob('', 'text/css')}"with{type:"css"}`)).then( () => (supportsCssType = true), noop ) ), noop ), wasmInstancePhaseEnabled && import(createBlob(`import"${createBlob(new Uint8Array(wasmBytes), 'application/wasm')}"`)).then( () => (supportsWasmInstancePhase = true), noop ), wasmSourcePhaseEnabled && import(createBlob(`import source x from"${createBlob(new Uint8Array(wasmBytes), 'application/wasm')}"`)).then( () => (supportsWasmSourcePhase = true), noop ) ]); const msgTag = `s${version}`; 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] === msgTag; if (!isFeatureDetectionMessage) return; [ , supportsImportMaps, supportsMultipleImportMaps, supportsJsonType, supportsCssType, supportsWasmSourcePhase, supportsWasmInstancePhase ] = data; resolve(); document.head.removeChild(iframe); window.removeEventListener('message', cb, false); } window.addEventListener('message', cb, false); // 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. const importMapTest = `<script nonce=${nonce || ''}>${ policy ? 't=(window.trustedTypes||window.TrustedTypes).createPolicy("es-module-shims",{createScript:s=>s});' : '' }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}",text:${ policy ? 't.createScript(innerText)' : 'innerText' }}));i(\`{"imports":{"x":"\${b('')}"}}\`);i(\`{"imports":{"y":"\${b('')}"}}\`);cm=${ supportsImportMaps && jsonModulesEnabled ? `c(b(\`import"\${b('{}','text/json')}"with{type:"json"}\`))` : 'false' };sp=${ supportsImportMaps && wasmSourcePhaseEnabled ? `c(b(\`import source x from "\${b(new Uint8Array(${JSON.stringify(wasmBytes)}),'application/wasm')\}"\`))` : 'false' };Promise.all([${supportsImportMaps ? 'true' : "c('x')"},${supportsImportMaps ? "c('y')" : false},cm,${ supportsImportMaps && cssModulesEnabled ? `cm.then(s=>s?c(b(\`import"\${b('','text/css')\}"with{type:"css"}\`)):false)` : 'false' },sp,${ supportsImportMaps && wasmInstancePhaseEnabled ? `${wasmSourcePhaseEnabled ? 'sp.then(s=>s?' : ''}c(b(\`import"\${b(new Uint8Array(${JSON.stringify(wasmBytes)}),'application/wasm')\}"\`))${wasmSourcePhaseEnabled ? ':false)' : ''}` : 'false' }]).then(a=>parent.postMessage(['${msgTag}'].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.innerText = maybeTrustedScript(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 = maybeTrustedInnerHTML(importMapTest); else iframe.contentDocument.write(importMapTest); // retrigger onload for Safari only if necessary if (onloadCalledWhileNotReady) doOnload(); }); })(); /* es-module-lexer 2.1.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",A[A.StaticDeferPhase=6]="StaticDeferPhase",A[A.DynamicDeferPhase=7]="DynamicDeferPhase";}(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,o=(C.__heap_base.value||C.__heap_base)+4*I-C.memory.buffer.byteLength;o>0&&C.memory.grow(Math.ceil(o/65536));const D=C.sa(I-1);if((A?B:Q)(E,new Uint16Array(C.memory.buffer,D,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 K=[],k=[];for(;C.ri();){const A=C.is(),Q=C.ie(),B=C.it(),g=C.ai(),I=C.id(),o=C.ss(),D=C.se();let k;C.ip()&&(k=w(E.slice(-1===I?A-1:A,-1===I?Q+1:Q)));const i=[];for(C.rsa();C.ra();){const A=C.aks(),Q=C.ake(),B=C.avs(),g=C.ave();i.push([N(E.slice(A,Q)),N(E.slice(B,g))]);}K.push({n:k,t:B,s:A,e:Q,ss:o,se:D,d:I,a:g,at:i.length>0?i:null});}for(;C.re();){const A=C.es(),Q=C.ee(),B=C.els(),g=C.ele(),I=N(E.slice(A,Q)),o=B<0?void 0:N(E.slice(B,g));k.push({s:A,e:Q,ls:B,le:g,n:I,ln:o});}function w(A){try{return (0,eval)(A)}catch(A){}}function N(A){if(!A)return A;const Q=A[0];return ('"'===Q||"'"===Q)&&w(A)||A}return [K,k,!!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;})); const _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 = (id, parentUrl) => { if (!resolveHook) return _resolve(id, parentUrl); const result = resolveHook(id, parentUrl, defaultResolve); return result ? { r: result, n: true, N: true } : _resolve(id, parentUrl); }; // import() async function importShim(id, opts, parentUrl) { if (typeof opts === 'string') { parentUrl = opts; opts = undefined; } await initPromise; // needed for shim check if (shimMode || !baselineSupport) { if (hasDocument) processScriptsAndPreloads(); legacyAcceptingImportMaps = false; } let sourceType = undefined; if (typeof opts === 'object') { if (opts.lang === 'ts') sourceType = 'ts'; if (typeof opts.with === 'object' && typeof opts.with.type === 'string') { sourceType = opts.with.type; } } return topLevelLoad(id, parentUrl || baseUrl, defaultFetchOpts, undefined, undefined, undefined, sourceType); } // import.source() // (opts not currently supported as no use cases yet) if (shimMode || wasmSourcePhaseEnabled) importShim.source = async (id, opts, parentUrl) => { if (typeof opts === 'string') { parentUrl = opts; opts = undefined; } await initPromise; // needed for shim check if (shimMode || !baselineSupport) { if (hasDocument) processScriptsAndPreloads(); legacyAcceptingImportMaps = false; } await importMapPromise; const url = resolve(id, parentUrl || baseUrl).r; const load = getOrCreateLoad(url, defaultFetchOpts, undefined, undefined); await load.f; return importShim._s[load.r]; }; // import.defer() is just a proxy for import(), since we can't actually defer if (shimMode || deferPhaseEnabled) importShim.defer = importShim; if (hotReload) { initHotReload(topLevelLoad, importShim); importShim.hotReload = hotReload$1; } const defaultResolve = (id, parentUrl) => { return ( resolveImportMap(composedImportMap, resolveIfNotPlainOrUrl(id, parentUrl) || id, parentUrl) || throwUnresolved(id, parentUrl) ); }; const throwUnresolved = (id, parentUrl) => { throw Error(`Unable to resolve specifier '${id}'${fromParent(parentUrl)}`); }; const metaResolve = function (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); }; importShim.version = version; const registry = (importShim._r = {}); // Wasm caches const sourceCache = (importShim._s = {}); /* const instanceCache = */ importShim._i = new WeakMap(); // Ensure this version is the only version defineValue(self_, 'importShim', Object.freeze(importShim)); const shimModeOptions = { ...esmsInitOptions, shimMode: true }; if (optionsScript) optionsScript.innerText = maybeTrustedScript(JSON.stringify(shimModeOptions)); self_.esmsInitOptions = shimModeOptions; const loadAll = async (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 baselineSupport; const initPromise = featureDetectionPromise.then(() => { baselineSupport = supportsImportMaps && (!jsonModulesEnabled || supportsJsonType) && (!cssModulesEnabled || supportsCssType) && (!wasmInstancePhaseEnabled || supportsWasmInstancePhase) && (!wasmSourcePhaseEnabled || supportsWasmSourcePhase) && !deferPhaseEnabled && (!multipleImportMaps || supportsMultipleImportMaps) && !importMapSrc && !hasCustomizationHooks; if (!shimMode && typeof WebAssembly !== 'undefined') { if (wasmSourcePhaseEnabled && !Object.getPrototypeOf(WebAssembly.Module).name) { const s = Symbol(); const brand = m => defineValue(m, s, '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 || !baselineSupport) { attachMutationObserver(); if (document.readyState === 'complete') { readyStateCompleteCheck(); } else { document.addEventListener('readystatechange', readyListener); } } processScriptsAndPreloads(); } return init; }); const 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, parentUrl, fetchOpts, source, nativelyLoaded, lastStaticLoadPromise, sourceType ) { await initPromise; await importMapPromise; url = (await resolve(url, parentUrl)).r; // 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 if (sourceType === 'css' || sourceType === 'json') { // Direct reexport for hot reloading skipped due to Firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1965620 source = `import m from'${url}'with{type:"${sourceType}"};export default m;`; url += '?entry'; } if (importHook) await importHook(url, typeof fetchOpts !== 'string' ? fetchOpts : {}, parentUrl, source, sourceType); // early analysis opt-out - no need to even fetch if we have feature support if (!shimMode && baselineSupport && nativePassthrough && sourceType !== 'ts') { // 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, undefined, 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 || !nativePassthrough || (!nativelyLoaded && source) ? dynamicImport(load.b, load.u) : import(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); revokeObjectURLs(Object.keys(seen)); return module; } const revokeObjectURLs = registryKeys => { let curIdx = 0; const handler = self_.requestIdleCallback || self_.requestAnimationFrame || (fn => setTimeout(fn, 0)); handler(cleanup); function cleanup() { for (const key of registryKeys.slice(curIdx, (curIdx += 100))) { const load = registry[key]; if (load && load.b && load.b !== load.u) URL.revokeObjectURL(load.b); } if (curIdx < registryKeys.length) handler(cleanup); } }; const urlJsString = url => `'${url.replace(/'/g, "\\'")}'`; let resolvedSource, lastIndex; const pushStringTo = (load, originalIndex, dynamicImportEndStack) => { while (dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) { const dynamicImportEnd = dynamicImportEndStack.pop(); resolvedSource += `${loa