es-module-shims.wasm.js 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974
  1. /* ES Module Shims Wasm 1.8.3 */
  2. (function () {
  3. const hasWindow = typeof window !== 'undefined';
  4. const hasDocument = typeof document !== 'undefined';
  5. const noop = () => {};
  6. const optionsScript = hasDocument ? document.querySelector('script[type=esms-options]') : undefined;
  7. const esmsInitOptions = optionsScript ? JSON.parse(optionsScript.innerHTML) : {};
  8. Object.assign(esmsInitOptions, self.esmsInitOptions || {});
  9. let shimMode = hasDocument ? !!esmsInitOptions.shimMode : true;
  10. const importHook = globalHook(shimMode && esmsInitOptions.onimport);
  11. const resolveHook = globalHook(shimMode && esmsInitOptions.resolve);
  12. let fetchHook = esmsInitOptions.fetch ? globalHook(esmsInitOptions.fetch) : fetch;
  13. const metaHook = esmsInitOptions.meta ? globalHook(shimMode && esmsInitOptions.meta) : noop;
  14. const mapOverrides = esmsInitOptions.mapOverrides;
  15. let nonce = esmsInitOptions.nonce;
  16. if (!nonce && hasDocument) {
  17. const nonceElement = document.querySelector('script[nonce]');
  18. if (nonceElement)
  19. nonce = nonceElement.nonce || nonceElement.getAttribute('nonce');
  20. }
  21. const onerror = globalHook(esmsInitOptions.onerror || noop);
  22. const onpolyfill = esmsInitOptions.onpolyfill ? globalHook(esmsInitOptions.onpolyfill) : () => {
  23. console.log('%c^^ Module TypeError above is polyfilled and can be ignored ^^', 'font-weight:900;color:#391');
  24. };
  25. const { revokeBlobURLs, noLoadEventRetriggers, enforceIntegrity } = esmsInitOptions;
  26. function globalHook (name) {
  27. return typeof name === 'string' ? self[name] : name;
  28. }
  29. const enable = Array.isArray(esmsInitOptions.polyfillEnable) ? esmsInitOptions.polyfillEnable : [];
  30. const cssModulesEnabled = enable.includes('css-modules');
  31. const jsonModulesEnabled = enable.includes('json-modules');
  32. const wasmModulesEnabled = enable.includes('wasm-modules');
  33. const edge = !navigator.userAgentData && !!navigator.userAgent.match(/Edge\/\d+\.\d+/);
  34. const baseUrl = hasDocument
  35. ? document.baseURI
  36. : `${location.protocol}//${location.host}${location.pathname.includes('/')
  37. ? location.pathname.slice(0, location.pathname.lastIndexOf('/') + 1)
  38. : location.pathname}`;
  39. const createBlob = (source, type = 'text/javascript') => URL.createObjectURL(new Blob([source], { type }));
  40. let { skip } = esmsInitOptions;
  41. if (Array.isArray(skip)) {
  42. const l = skip.map(s => new URL(s, baseUrl).href);
  43. skip = s => l.some(i => i[i.length - 1] === '/' && s.startsWith(i) || s === i);
  44. }
  45. else if (typeof skip === 'string') {
  46. const r = new RegExp(skip);
  47. skip = s => r.test(s);
  48. } else if (skip instanceof RegExp) {
  49. skip = s => skip.test(s);
  50. }
  51. const eoop = err => setTimeout(() => { throw err });
  52. const throwError = err => { (self.reportError || hasWindow && window.safari && console.error || eoop)(err), void onerror(err); };
  53. function fromParent (parent) {
  54. return parent ? ` imported from ${parent}` : '';
  55. }
  56. let importMapSrcOrLazy = false;
  57. function setImportMapSrcOrLazy () {
  58. importMapSrcOrLazy = true;
  59. }
  60. // shim mode is determined on initialization, no late shim mode
  61. if (!shimMode) {
  62. if (document.querySelectorAll('script[type=module-shim],script[type=importmap-shim],link[rel=modulepreload-shim]').length) {
  63. shimMode = true;
  64. }
  65. else {
  66. let seenScript = false;
  67. for (const script of document.querySelectorAll('script[type=module],script[type=importmap]')) {
  68. if (!seenScript) {
  69. if (script.type === 'module' && !script.ep)
  70. seenScript = true;
  71. }
  72. else if (script.type === 'importmap' && seenScript) {
  73. importMapSrcOrLazy = true;
  74. break;
  75. }
  76. }
  77. }
  78. }
  79. const backslashRegEx = /\\/g;
  80. function asURL (url) {
  81. try {
  82. if (url.indexOf(':') !== -1)
  83. return new URL(url).href;
  84. }
  85. catch (_) {}
  86. }
  87. function resolveUrl (relUrl, parentUrl) {
  88. return resolveIfNotPlainOrUrl(relUrl, parentUrl) || (asURL(relUrl) || resolveIfNotPlainOrUrl('./' + relUrl, parentUrl));
  89. }
  90. function resolveIfNotPlainOrUrl (relUrl, parentUrl) {
  91. const hIdx = parentUrl.indexOf('#'), qIdx = parentUrl.indexOf('?');
  92. if (hIdx + qIdx > -2)
  93. parentUrl = parentUrl.slice(0, hIdx === -1 ? qIdx : qIdx === -1 || qIdx > hIdx ? hIdx : qIdx);
  94. if (relUrl.indexOf('\\') !== -1)
  95. relUrl = relUrl.replace(backslashRegEx, '/');
  96. // protocol-relative
  97. if (relUrl[0] === '/' && relUrl[1] === '/') {
  98. return parentUrl.slice(0, parentUrl.indexOf(':') + 1) + relUrl;
  99. }
  100. // relative-url
  101. else if (relUrl[0] === '.' && (relUrl[1] === '/' || relUrl[1] === '.' && (relUrl[2] === '/' || relUrl.length === 2 && (relUrl += '/')) ||
  102. relUrl.length === 1 && (relUrl += '/')) ||
  103. relUrl[0] === '/') {
  104. const parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1);
  105. if (parentProtocol === 'blob:') {
  106. throw new TypeError(`Failed to resolve module specifier "${relUrl}". Invalid relative url or base scheme isn't hierarchical.`);
  107. }
  108. // Disabled, but these cases will give inconsistent results for deep backtracking
  109. //if (parentUrl[parentProtocol.length] !== '/')
  110. // throw new Error('Cannot resolve');
  111. // read pathname from parent URL
  112. // pathname taken to be part after leading "/"
  113. let pathname;
  114. if (parentUrl[parentProtocol.length + 1] === '/') {
  115. // resolving to a :// so we need to read out the auth and host
  116. if (parentProtocol !== 'file:') {
  117. pathname = parentUrl.slice(parentProtocol.length + 2);
  118. pathname = pathname.slice(pathname.indexOf('/') + 1);
  119. }
  120. else {
  121. pathname = parentUrl.slice(8);
  122. }
  123. }
  124. else {
  125. // resolving to :/ so pathname is the /... part
  126. pathname = parentUrl.slice(parentProtocol.length + (parentUrl[parentProtocol.length] === '/'));
  127. }
  128. if (relUrl[0] === '/')
  129. return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl;
  130. // join together and split for removal of .. and . segments
  131. // looping the string instead of anything fancy for perf reasons
  132. // '../../../../../z' resolved to 'x/y' is just 'z'
  133. const segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl;
  134. const output = [];
  135. let segmentIndex = -1;
  136. for (let i = 0; i < segmented.length; i++) {
  137. // busy reading a segment - only terminate on '/'
  138. if (segmentIndex !== -1) {
  139. if (segmented[i] === '/') {
  140. output.push(segmented.slice(segmentIndex, i + 1));
  141. segmentIndex = -1;
  142. }
  143. continue;
  144. }
  145. // new segment - check if it is relative
  146. else if (segmented[i] === '.') {
  147. // ../ segment
  148. if (segmented[i + 1] === '.' && (segmented[i + 2] === '/' || i + 2 === segmented.length)) {
  149. output.pop();
  150. i += 2;
  151. continue;
  152. }
  153. // ./ segment
  154. else if (segmented[i + 1] === '/' || i + 1 === segmented.length) {
  155. i += 1;
  156. continue;
  157. }
  158. }
  159. // it is the start of a new segment
  160. while (segmented[i] === '/') i++;
  161. segmentIndex = i;
  162. }
  163. // finish reading out the last segment
  164. if (segmentIndex !== -1)
  165. output.push(segmented.slice(segmentIndex));
  166. return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join('');
  167. }
  168. }
  169. function resolveAndComposeImportMap (json, baseUrl, parentMap) {
  170. const outMap = { imports: Object.assign({}, parentMap.imports), scopes: Object.assign({}, parentMap.scopes) };
  171. if (json.imports)
  172. resolveAndComposePackages(json.imports, outMap.imports, baseUrl, parentMap);
  173. if (json.scopes)
  174. for (let s in json.scopes) {
  175. const resolvedScope = resolveUrl(s, baseUrl);
  176. resolveAndComposePackages(json.scopes[s], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl, parentMap);
  177. }
  178. return outMap;
  179. }
  180. function getMatch (path, matchObj) {
  181. if (matchObj[path])
  182. return path;
  183. let sepIndex = path.length;
  184. do {
  185. const segment = path.slice(0, sepIndex + 1);
  186. if (segment in matchObj)
  187. return segment;
  188. } while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1)
  189. }
  190. function applyPackages (id, packages) {
  191. const pkgName = getMatch(id, packages);
  192. if (pkgName) {
  193. const pkg = packages[pkgName];
  194. if (pkg === null) return;
  195. return pkg + id.slice(pkgName.length);
  196. }
  197. }
  198. function resolveImportMap (importMap, resolvedOrPlain, parentUrl) {
  199. let scopeUrl = parentUrl && getMatch(parentUrl, importMap.scopes);
  200. while (scopeUrl) {
  201. const packageResolution = applyPackages(resolvedOrPlain, importMap.scopes[scopeUrl]);
  202. if (packageResolution)
  203. return packageResolution;
  204. scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), importMap.scopes);
  205. }
  206. return applyPackages(resolvedOrPlain, importMap.imports) || resolvedOrPlain.indexOf(':') !== -1 && resolvedOrPlain;
  207. }
  208. function resolveAndComposePackages (packages, outPackages, baseUrl, parentMap) {
  209. for (let p in packages) {
  210. const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;
  211. if ((!shimMode || !mapOverrides) && outPackages[resolvedLhs] && (outPackages[resolvedLhs] !== packages[resolvedLhs])) {
  212. throw Error(`Rejected map override "${resolvedLhs}" from ${outPackages[resolvedLhs]} to ${packages[resolvedLhs]}.`);
  213. }
  214. let target = packages[p];
  215. if (typeof target !== 'string')
  216. continue;
  217. const mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(target, baseUrl) || target, baseUrl);
  218. if (mapped) {
  219. outPackages[resolvedLhs] = mapped;
  220. continue;
  221. }
  222. console.warn(`Mapping "${p}" -> "${packages[p]}" does not resolve`);
  223. }
  224. }
  225. let dynamicImport = !hasDocument && (0, eval)('u=>import(u)');
  226. let supportsDynamicImport;
  227. const dynamicImportCheck = hasDocument && new Promise(resolve => {
  228. const s = Object.assign(document.createElement('script'), {
  229. src: createBlob('self._d=u=>import(u)'),
  230. ep: true
  231. });
  232. s.setAttribute('nonce', nonce);
  233. s.addEventListener('load', () => {
  234. if (!(supportsDynamicImport = !!(dynamicImport = self._d))) {
  235. let err;
  236. window.addEventListener('error', _err => err = _err);
  237. dynamicImport = (url, opts) => new Promise((resolve, reject) => {
  238. const s = Object.assign(document.createElement('script'), {
  239. type: 'module',
  240. src: createBlob(`import*as m from'${url}';self._esmsi=m`)
  241. });
  242. err = undefined;
  243. s.ep = true;
  244. if (nonce)
  245. s.setAttribute('nonce', nonce);
  246. // Safari is unique in supporting module script error events
  247. s.addEventListener('error', cb);
  248. s.addEventListener('load', cb);
  249. function cb (_err) {
  250. document.head.removeChild(s);
  251. if (self._esmsi) {
  252. resolve(self._esmsi, baseUrl);
  253. self._esmsi = undefined;
  254. }
  255. else {
  256. reject(!(_err instanceof Event) && _err || err && err.error || new Error(`Error loading ${opts && opts.errUrl || url} (${s.src}).`));
  257. err = undefined;
  258. }
  259. }
  260. document.head.appendChild(s);
  261. });
  262. }
  263. document.head.removeChild(s);
  264. delete self._d;
  265. resolve();
  266. });
  267. document.head.appendChild(s);
  268. });
  269. // support browsers without dynamic import support (eg Firefox 6x)
  270. let supportsJsonAssertions = false;
  271. let supportsCssAssertions = false;
  272. const supports = hasDocument && HTMLScriptElement.supports;
  273. let supportsImportMaps = supports && supports.name === 'supports' && supports('importmap');
  274. let supportsImportMeta = supportsDynamicImport;
  275. let supportsWasmModules = false;
  276. const importMetaCheck = 'import.meta';
  277. const moduleCheck = 'import"x"';
  278. const cssModulesCheck = `assert{type:"css"}`;
  279. const jsonModulesCheck = `assert{type:"json"}`;
  280. let featureDetectionPromise = Promise.resolve(dynamicImportCheck).then(() => {
  281. if (!supportsDynamicImport)
  282. return;
  283. if (!hasDocument)
  284. return Promise.all([
  285. supportsImportMaps || dynamicImport(createBlob(importMetaCheck)).then(() => supportsImportMeta = true, noop),
  286. cssModulesEnabled && dynamicImport(createBlob(moduleCheck.replace('x', createBlob('', 'text/css')) + cssModulesCheck)).then(() => supportsCssAssertions = true, noop),
  287. jsonModulesEnabled && dynamicImport(createBlob(moduleCheck.replace('x', createBlob('{}', 'text/json')) + jsonModulesCheck)).then(() => supportsJsonAssertions = true, noop),
  288. wasmModulesEnabled && dynamicImport(createBlob(moduleCheck.replace('x', createBlob(new Uint8Array([0,97,115,109,1,0,0,0]), 'application/wasm')))).then(() => supportsWasmModules = true, noop),
  289. ]);
  290. return new Promise(resolve => {
  291. const iframe = document.createElement('iframe');
  292. iframe.style.display = 'none';
  293. iframe.setAttribute('nonce', nonce);
  294. function cb ({ data }) {
  295. const isFeatureDetectionMessage = Array.isArray(data) && data[0] === 'esms';
  296. if (!isFeatureDetectionMessage) {
  297. return;
  298. }
  299. supportsImportMaps = data[1];
  300. supportsImportMeta = data[2];
  301. supportsCssAssertions = data[3];
  302. supportsJsonAssertions = data[4];
  303. resolve();
  304. document.head.removeChild(iframe);
  305. window.removeEventListener('message', cb, false);
  306. }
  307. window.addEventListener('message', cb, false);
  308. const importMapTest = `<script nonce=${nonce || ''}>b=(s,type='text/javascript')=>URL.createObjectURL(new Blob([s],{type}));document.head.appendChild(Object.assign(document.createElement('script'),{type:'importmap',nonce:"${nonce}",innerText:\`{"imports":{"x":"\${b('')}"}}\`}));Promise.all([${
  309. supportsImportMaps ? 'true,true' : `'x',b('${importMetaCheck}')`}, ${cssModulesEnabled ? `b('${cssModulesCheck}'.replace('x',b('','text/css')))` : 'false'}, ${
  310. jsonModulesEnabled ? `b('${jsonModulesCheck}'.replace('x',b('{}','text/json')))` : 'false'}].map(x =>typeof x==='string'?import(x).then(x =>!!x,()=>false):x)).then(a=>parent.postMessage(['esms'].concat(a),'*'))<${''}/script>`;
  311. // Safari will call onload eagerly on head injection, but we don't want the Wechat
  312. // path to trigger before setting srcdoc, therefore we track the timing
  313. let readyForOnload = false, onloadCalledWhileNotReady = false;
  314. function doOnload () {
  315. if (!readyForOnload) {
  316. onloadCalledWhileNotReady = true;
  317. return;
  318. }
  319. // WeChat browser doesn't support setting srcdoc scripts
  320. // But iframe sandboxes don't support contentDocument so we do this as a fallback
  321. const doc = iframe.contentDocument;
  322. if (doc && doc.head.childNodes.length === 0) {
  323. const s = doc.createElement('script');
  324. if (nonce)
  325. s.setAttribute('nonce', nonce);
  326. s.innerHTML = importMapTest.slice(15 + (nonce ? nonce.length : 0), -9);
  327. doc.head.appendChild(s);
  328. }
  329. }
  330. iframe.onload = doOnload;
  331. // WeChat browser requires append before setting srcdoc
  332. document.head.appendChild(iframe);
  333. // setting srcdoc is not supported in React native webviews on iOS
  334. // setting src to a blob URL results in a navigation event in webviews
  335. // document.write gives usability warnings
  336. readyForOnload = true;
  337. if ('srcdoc' in iframe)
  338. iframe.srcdoc = importMapTest;
  339. else
  340. iframe.contentDocument.write(importMapTest);
  341. // retrigger onload for Safari only if necessary
  342. if (onloadCalledWhileNotReady) doOnload();
  343. });
  344. });
  345. /* es-module-lexer 1.4.1 */
  346. 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,k=(C.__heap_base.value||C.__heap_base)+4*I-C.memory.buffer.byteLength;k>0&&C.memory.grow(Math.ceil(k/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.ai(),g=C.id(),I=C.ss(),k=C.se();let K;C.ip()&&(K=w(E.slice(-1===g?A-1:A,-1===g?Q+1:Q))),o.push({n:K,s:A,e:Q,ss:I,se:k,d:g,a:B});}for(;C.re();){const A=C.es(),Q=C.ee(),B=C.els(),g=C.ele(),I=E.slice(A,Q),k=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:'"'===k||"'"===k?w(I):I,ln:'"'===o||"'"===o?w(K):K});}function w(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 init=WebAssembly.compile((E="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","undefined"!=typeof Buffer?Buffer.from(E,"base64"):Uint8Array.from(atob(E),(A=>A.charCodeAt(0))))).then(WebAssembly.instantiate).then((({exports:A})=>{C=A;}));var E;
  347. async function _resolve (id, parentUrl) {
  348. const urlResolved = resolveIfNotPlainOrUrl(id, parentUrl) || asURL(id);
  349. return {
  350. r: resolveImportMap(importMap, urlResolved || id, parentUrl) || throwUnresolved(id, parentUrl),
  351. // b = bare specifier
  352. b: !urlResolved && !asURL(id)
  353. };
  354. }
  355. const resolve = resolveHook ? async (id, parentUrl) => {
  356. let result = resolveHook(id, parentUrl, defaultResolve);
  357. // will be deprecated in next major
  358. if (result && result.then)
  359. result = await result;
  360. return result ? { r: result, b: !resolveIfNotPlainOrUrl(id, parentUrl) && !asURL(id) } : _resolve(id, parentUrl);
  361. } : _resolve;
  362. // importShim('mod');
  363. // importShim('mod', { opts });
  364. // importShim('mod', { opts }, parentUrl);
  365. // importShim('mod', parentUrl);
  366. async function importShim (id, ...args) {
  367. // parentUrl if present will be the last argument
  368. let parentUrl = args[args.length - 1];
  369. if (typeof parentUrl !== 'string')
  370. parentUrl = baseUrl;
  371. // needed for shim check
  372. await initPromise;
  373. if (importHook) await importHook(id, typeof args[1] !== 'string' ? args[1] : {}, parentUrl);
  374. if (acceptingImportMaps || shimMode || !baselinePassthrough) {
  375. if (hasDocument)
  376. processScriptsAndPreloads(true);
  377. if (!shimMode)
  378. acceptingImportMaps = false;
  379. }
  380. await importMapPromise;
  381. return topLevelLoad((await resolve(id, parentUrl)).r, { credentials: 'same-origin' });
  382. }
  383. self.importShim = importShim;
  384. function defaultResolve (id, parentUrl) {
  385. return resolveImportMap(importMap, resolveIfNotPlainOrUrl(id, parentUrl) || id, parentUrl) || throwUnresolved(id, parentUrl);
  386. }
  387. function throwUnresolved (id, parentUrl) {
  388. throw Error(`Unable to resolve specifier '${id}'${fromParent(parentUrl)}`);
  389. }
  390. const resolveSync = (id, parentUrl = baseUrl) => {
  391. parentUrl = `${parentUrl}`;
  392. const result = resolveHook && resolveHook(id, parentUrl, defaultResolve);
  393. return result && !result.then ? result : defaultResolve(id, parentUrl);
  394. };
  395. function metaResolve (id, parentUrl = this.url) {
  396. return resolveSync(id, parentUrl);
  397. }
  398. importShim.resolve = resolveSync;
  399. importShim.getImportMap = () => JSON.parse(JSON.stringify(importMap));
  400. importShim.addImportMap = importMapIn => {
  401. if (!shimMode) throw new Error('Unsupported in polyfill mode.');
  402. importMap = resolveAndComposeImportMap(importMapIn, baseUrl, importMap);
  403. };
  404. const registry = importShim._r = {};
  405. importShim._w = {};
  406. async function loadAll (load, seen) {
  407. if (load.b || seen[load.u])
  408. return;
  409. seen[load.u] = 1;
  410. await load.L;
  411. await Promise.all(load.d.map(dep => loadAll(dep, seen)));
  412. if (!load.n)
  413. load.n = load.d.some(dep => dep.n);
  414. }
  415. let importMap = { imports: {}, scopes: {} };
  416. let baselinePassthrough;
  417. const initPromise = featureDetectionPromise.then(() => {
  418. baselinePassthrough = esmsInitOptions.polyfillEnable !== true && supportsDynamicImport && supportsImportMeta && supportsImportMaps && (!jsonModulesEnabled || supportsJsonAssertions) && (!cssModulesEnabled || supportsCssAssertions) && (!wasmModulesEnabled || supportsWasmModules) && !importMapSrcOrLazy;
  419. if (hasDocument) {
  420. if (!supportsImportMaps) {
  421. const supports = HTMLScriptElement.supports || (type => type === 'classic' || type === 'module');
  422. HTMLScriptElement.supports = type => type === 'importmap' || supports(type);
  423. }
  424. if (shimMode || !baselinePassthrough) {
  425. new MutationObserver(mutations => {
  426. for (const mutation of mutations) {
  427. if (mutation.type !== 'childList') continue;
  428. for (const node of mutation.addedNodes) {
  429. if (node.tagName === 'SCRIPT') {
  430. if (node.type === (shimMode ? 'module-shim' : 'module'))
  431. processScript(node, true);
  432. if (node.type === (shimMode ? 'importmap-shim' : 'importmap'))
  433. processImportMap(node, true);
  434. }
  435. else if (node.tagName === 'LINK' && node.rel === (shimMode ? 'modulepreload-shim' : 'modulepreload')) {
  436. processPreload(node);
  437. }
  438. }
  439. }
  440. }).observe(document, {childList: true, subtree: true});
  441. processScriptsAndPreloads();
  442. if (document.readyState === 'complete') {
  443. readyStateCompleteCheck();
  444. }
  445. else {
  446. async function readyListener() {
  447. await initPromise;
  448. processScriptsAndPreloads();
  449. if (document.readyState === 'complete') {
  450. readyStateCompleteCheck();
  451. document.removeEventListener('readystatechange', readyListener);
  452. }
  453. }
  454. document.addEventListener('readystatechange', readyListener);
  455. }
  456. }
  457. }
  458. return init;
  459. });
  460. let importMapPromise = initPromise;
  461. let firstPolyfillLoad = true;
  462. let acceptingImportMaps = true;
  463. async function topLevelLoad (url, fetchOpts, source, nativelyLoaded, lastStaticLoadPromise) {
  464. if (!shimMode)
  465. acceptingImportMaps = false;
  466. await initPromise;
  467. await importMapPromise;
  468. if (importHook) await importHook(url, typeof fetchOpts !== 'string' ? fetchOpts : {}, '');
  469. // early analysis opt-out - no need to even fetch if we have feature support
  470. if (!shimMode && baselinePassthrough) {
  471. // for polyfill case, only dynamic import needs a return value here, and dynamic import will never pass nativelyLoaded
  472. if (nativelyLoaded)
  473. return null;
  474. await lastStaticLoadPromise;
  475. return dynamicImport(source ? createBlob(source) : url, { errUrl: url || source });
  476. }
  477. const load = getOrCreateLoad(url, fetchOpts, null, source);
  478. const seen = {};
  479. await loadAll(load, seen);
  480. lastLoad = undefined;
  481. resolveDeps(load, seen);
  482. await lastStaticLoadPromise;
  483. if (source && !shimMode && !load.n) {
  484. if (nativelyLoaded) return;
  485. if (revokeBlobURLs) revokeObjectURLs(Object.keys(seen));
  486. return await dynamicImport(createBlob(source), { errUrl: source });
  487. }
  488. if (firstPolyfillLoad && !shimMode && load.n && nativelyLoaded) {
  489. onpolyfill();
  490. firstPolyfillLoad = false;
  491. }
  492. const module = await dynamicImport(!shimMode && !load.n && nativelyLoaded ? load.u : load.b, { errUrl: load.u });
  493. // if the top-level load is a shell, run its update function
  494. if (load.s)
  495. (await dynamicImport(load.s)).u$_(module);
  496. if (revokeBlobURLs) revokeObjectURLs(Object.keys(seen));
  497. // when tla is supported, this should return the tla promise as an actual handle
  498. // so readystate can still correspond to the sync subgraph exec completions
  499. return module;
  500. }
  501. function revokeObjectURLs(registryKeys) {
  502. let batch = 0;
  503. const keysLength = registryKeys.length;
  504. const schedule = self.requestIdleCallback ? self.requestIdleCallback : self.requestAnimationFrame;
  505. schedule(cleanup);
  506. function cleanup() {
  507. const batchStartIndex = batch * 100;
  508. if (batchStartIndex > keysLength) return
  509. for (const key of registryKeys.slice(batchStartIndex, batchStartIndex + 100)) {
  510. const load = registry[key];
  511. if (load) URL.revokeObjectURL(load.b);
  512. }
  513. batch++;
  514. schedule(cleanup);
  515. }
  516. }
  517. function urlJsString (url) {
  518. return `'${url.replace(/'/g, "\\'")}'`;
  519. }
  520. let lastLoad;
  521. function resolveDeps (load, seen) {
  522. if (load.b || !seen[load.u])
  523. return;
  524. seen[load.u] = 0;
  525. for (const dep of load.d)
  526. resolveDeps(dep, seen);
  527. const [imports, exports] = load.a;
  528. // "execution"
  529. const source = load.S;
  530. // edge doesnt execute sibling in order, so we fix this up by ensuring all previous executions are explicit dependencies
  531. let resolvedSource = edge && lastLoad ? `import '${lastLoad}';` : '';
  532. // once all deps have loaded we can inline the dependency resolution blobs
  533. // and define this blob
  534. let lastIndex = 0, depIndex = 0, dynamicImportEndStack = [];
  535. function pushStringTo (originalIndex) {
  536. while (dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) {
  537. const dynamicImportEnd = dynamicImportEndStack.pop();
  538. resolvedSource += `${source.slice(lastIndex, dynamicImportEnd)}, ${urlJsString(load.r)}`;
  539. lastIndex = dynamicImportEnd;
  540. }
  541. resolvedSource += source.slice(lastIndex, originalIndex);
  542. lastIndex = originalIndex;
  543. }
  544. for (const { s: start, ss: statementStart, se: statementEnd, d: dynamicImportIndex } of imports) {
  545. // dependency source replacements
  546. if (dynamicImportIndex === -1) {
  547. let depLoad = load.d[depIndex++], blobUrl = depLoad.b, cycleShell = !blobUrl;
  548. if (cycleShell) {
  549. // circular shell creation
  550. if (!(blobUrl = depLoad.s)) {
  551. blobUrl = depLoad.s = createBlob(`export function u$_(m){${
  552. depLoad.a[1].map(({ s, e }, i) => {
  553. const q = depLoad.S[s] === '"' || depLoad.S[s] === "'";
  554. return `e$_${i}=m${q ? `[` : '.'}${depLoad.S.slice(s, e)}${q ? `]` : ''}`;
  555. }).join(',')
  556. }}${
  557. depLoad.a[1].length ? `let ${depLoad.a[1].map((_, i) => `e$_${i}`).join(',')};` : ''
  558. }export {${
  559. depLoad.a[1].map(({ s, e }, i) => `e$_${i} as ${depLoad.S.slice(s, e)}`).join(',')
  560. }}\n//# sourceURL=${depLoad.r}?cycle`);
  561. }
  562. }
  563. pushStringTo(start - 1);
  564. resolvedSource += `/*${source.slice(start - 1, statementEnd)}*/${urlJsString(blobUrl)}`;
  565. // circular shell execution
  566. if (!cycleShell && depLoad.s) {
  567. resolvedSource += `;import*as m$_${depIndex} from'${depLoad.b}';import{u$_ as u$_${depIndex}}from'${depLoad.s}';u$_${depIndex}(m$_${depIndex})`;
  568. depLoad.s = undefined;
  569. }
  570. lastIndex = statementEnd;
  571. }
  572. // import.meta
  573. else if (dynamicImportIndex === -2) {
  574. load.m = { url: load.r, resolve: metaResolve };
  575. metaHook(load.m, load.u);
  576. pushStringTo(start);
  577. resolvedSource += `importShim._r[${urlJsString(load.u)}].m`;
  578. lastIndex = statementEnd;
  579. }
  580. // dynamic import
  581. else {
  582. pushStringTo(statementStart + 6);
  583. resolvedSource += `Shim(`;
  584. dynamicImportEndStack.push(statementEnd - 1);
  585. lastIndex = start;
  586. }
  587. }
  588. // support progressive cycle binding updates (try statement avoids tdz errors)
  589. if (load.s)
  590. 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`;
  591. function pushSourceURL (commentPrefix, commentStart) {
  592. const urlStart = commentStart + commentPrefix.length;
  593. const commentEnd = source.indexOf('\n', urlStart);
  594. const urlEnd = commentEnd !== -1 ? commentEnd : source.length;
  595. pushStringTo(urlStart);
  596. resolvedSource += new URL(source.slice(urlStart, urlEnd), load.r).href;
  597. lastIndex = urlEnd;
  598. }
  599. let sourceURLCommentStart = source.lastIndexOf(sourceURLCommentPrefix);
  600. let sourceMapURLCommentStart = source.lastIndexOf(sourceMapURLCommentPrefix);
  601. // ignore sourceMap comments before already spliced code
  602. if (sourceURLCommentStart < lastIndex) sourceURLCommentStart = -1;
  603. if (sourceMapURLCommentStart < lastIndex) sourceMapURLCommentStart = -1;
  604. // sourceURL first / only
  605. if (sourceURLCommentStart !== -1 && (sourceMapURLCommentStart === -1 || sourceMapURLCommentStart > sourceURLCommentStart)) {
  606. pushSourceURL(sourceURLCommentPrefix, sourceURLCommentStart);
  607. }
  608. // sourceMappingURL
  609. if (sourceMapURLCommentStart !== -1) {
  610. pushSourceURL(sourceMapURLCommentPrefix, sourceMapURLCommentStart);
  611. // sourceURL last
  612. if (sourceURLCommentStart !== -1 && (sourceURLCommentStart > sourceMapURLCommentStart))
  613. pushSourceURL(sourceURLCommentPrefix, sourceURLCommentStart);
  614. }
  615. pushStringTo(source.length);
  616. if (sourceURLCommentStart === -1)
  617. resolvedSource += sourceURLCommentPrefix + load.r;
  618. load.b = lastLoad = createBlob(resolvedSource);
  619. load.S = undefined;
  620. }
  621. const sourceURLCommentPrefix = '\n//# sourceURL=';
  622. const sourceMapURLCommentPrefix = '\n//# sourceMappingURL=';
  623. const jsContentType = /^(text|application)\/(x-)?javascript(;|$)/;
  624. const wasmContentType = /^(application)\/wasm(;|$)/;
  625. const jsonContentType = /^(text|application)\/json(;|$)/;
  626. const cssContentType = /^(text|application)\/css(;|$)/;
  627. const cssUrlRegEx = /url\(\s*(?:(["'])((?:\\.|[^\n\\"'])+)\1|((?:\\.|[^\s,"'()\\])+))\s*\)/g;
  628. // restrict in-flight fetches to a pool of 100
  629. let p = [];
  630. let c = 0;
  631. function pushFetchPool () {
  632. if (++c > 100)
  633. return new Promise(r => p.push(r));
  634. }
  635. function popFetchPool () {
  636. c--;
  637. if (p.length)
  638. p.shift()();
  639. }
  640. async function doFetch (url, fetchOpts, parent) {
  641. if (enforceIntegrity && !fetchOpts.integrity)
  642. throw Error(`No integrity for ${url}${fromParent(parent)}.`);
  643. const poolQueue = pushFetchPool();
  644. if (poolQueue) await poolQueue;
  645. try {
  646. var res = await fetchHook(url, fetchOpts);
  647. }
  648. catch (e) {
  649. e.message = `Unable to fetch ${url}${fromParent(parent)} - see network log for details.\n` + e.message;
  650. throw e;
  651. }
  652. finally {
  653. popFetchPool();
  654. }
  655. if (!res.ok) {
  656. const error = new TypeError(`${res.status} ${res.statusText} ${res.url}${fromParent(parent)}`);
  657. error.response = res;
  658. throw error;
  659. }
  660. return res;
  661. }
  662. async function fetchModule (url, fetchOpts, parent) {
  663. const res = await doFetch(url, fetchOpts, parent);
  664. const contentType = res.headers.get('content-type');
  665. if (jsContentType.test(contentType))
  666. return { r: res.url, s: await res.text(), t: 'js' };
  667. else if (wasmContentType.test(contentType)) {
  668. const module = importShim._w[url] = await WebAssembly.compileStreaming(res);
  669. let s = '', i = 0, importObj = '';
  670. for (const impt of WebAssembly.Module.imports(module)) {
  671. s += `import * as impt${i} from '${impt.module}';\n`;
  672. importObj += `'${impt.module}':impt${i++},`;
  673. }
  674. i = 0;
  675. s += `const instance = await WebAssembly.instantiate(importShim._w['${url}'], {${importObj}});\n`;
  676. for (const expt of WebAssembly.Module.exports(module)) {
  677. s += `export const ${expt.name} = instance.exports['${expt.name}'];\n`;
  678. }
  679. return { r: res.url, s, t: 'wasm' };
  680. }
  681. else if (jsonContentType.test(contentType))
  682. return { r: res.url, s: `export default ${await res.text()}`, t: 'json' };
  683. else if (cssContentType.test(contentType)) {
  684. return { r: res.url, s: `var s=new CSSStyleSheet();s.replaceSync(${
  685. JSON.stringify((await res.text()).replace(cssUrlRegEx, (_match, quotes = '', relUrl1, relUrl2) => `url(${quotes}${resolveUrl(relUrl1 || relUrl2, url)}${quotes})`))
  686. });export default s;`, t: 'css' };
  687. }
  688. else
  689. throw Error(`Unsupported Content-Type "${contentType}" loading ${url}${fromParent(parent)}. Modules must be served with a valid MIME type like application/javascript.`);
  690. }
  691. function getOrCreateLoad (url, fetchOpts, parent, source) {
  692. let load = registry[url];
  693. if (load && !source)
  694. return load;
  695. load = {
  696. // url
  697. u: url,
  698. // response url
  699. r: source ? url : undefined,
  700. // fetchPromise
  701. f: undefined,
  702. // source
  703. S: undefined,
  704. // linkPromise
  705. L: undefined,
  706. // analysis
  707. a: undefined,
  708. // deps
  709. d: undefined,
  710. // blobUrl
  711. b: undefined,
  712. // shellUrl
  713. s: undefined,
  714. // needsShim
  715. n: false,
  716. // type
  717. t: null,
  718. // meta
  719. m: null
  720. };
  721. if (registry[url]) {
  722. let i = 0;
  723. while (registry[load.u + ++i]);
  724. load.u += i;
  725. }
  726. registry[load.u] = load;
  727. load.f = (async () => {
  728. if (!source) {
  729. // preload fetch options override fetch options (race)
  730. let t;
  731. ({ r: load.r, s: source, t } = await (fetchCache[url] || fetchModule(url, fetchOpts, parent)));
  732. if (t && !shimMode) {
  733. if (t === 'css' && !cssModulesEnabled || t === 'json' && !jsonModulesEnabled || t === 'wasm' && !wasmModulesEnabled)
  734. throw Error(`${t}-modules require <script type="esms-options">{ "polyfillEnable": ["${t}-modules"] }<${''}/script>`);
  735. if (t === 'css' && !supportsCssAssertions || t === 'json' && !supportsJsonAssertions || t === 'wasm' && !supportsWasmModules)
  736. load.n = true;
  737. }
  738. }
  739. try {
  740. load.a = parse(source, load.u);
  741. }
  742. catch (e) {
  743. throwError(e);
  744. load.a = [[], [], false];
  745. }
  746. load.S = source;
  747. return load;
  748. })();
  749. load.L = load.f.then(async () => {
  750. let childFetchOpts = fetchOpts;
  751. load.d = (await Promise.all(load.a[0].map(async ({ n, d }) => {
  752. if (d >= 0 && !supportsDynamicImport || d === -2 && !supportsImportMeta)
  753. load.n = true;
  754. if (d !== -1 || !n) return;
  755. const { r, b } = await resolve(n, load.r || load.u);
  756. if (b && (!supportsImportMaps || importMapSrcOrLazy))
  757. load.n = true;
  758. if (d !== -1) return;
  759. if (skip && skip(r)) return { b: r };
  760. if (childFetchOpts.integrity)
  761. childFetchOpts = Object.assign({}, childFetchOpts, { integrity: undefined });
  762. return getOrCreateLoad(r, childFetchOpts, load.r).f;
  763. }))).filter(l => l);
  764. });
  765. return load;
  766. }
  767. function processScriptsAndPreloads (mapsOnly = false) {
  768. if (!mapsOnly)
  769. for (const link of document.querySelectorAll(shimMode ? 'link[rel=modulepreload-shim]' : 'link[rel=modulepreload]'))
  770. processPreload(link);
  771. for (const script of document.querySelectorAll(shimMode ? 'script[type=importmap-shim]' : 'script[type=importmap]'))
  772. processImportMap(script);
  773. if (!mapsOnly)
  774. for (const script of document.querySelectorAll(shimMode ? 'script[type=module-shim]' : 'script[type=module]'))
  775. processScript(script);
  776. }
  777. function getFetchOpts (script) {
  778. const fetchOpts = {};
  779. if (script.integrity)
  780. fetchOpts.integrity = script.integrity;
  781. if (script.referrerPolicy)
  782. fetchOpts.referrerPolicy = script.referrerPolicy;
  783. if (script.fetchPriority)
  784. fetchOpts.priority = script.fetchPriority;
  785. if (script.crossOrigin === 'use-credentials')
  786. fetchOpts.credentials = 'include';
  787. else if (script.crossOrigin === 'anonymous')
  788. fetchOpts.credentials = 'omit';
  789. else
  790. fetchOpts.credentials = 'same-origin';
  791. return fetchOpts;
  792. }
  793. let lastStaticLoadPromise = Promise.resolve();
  794. let domContentLoadedCnt = 1;
  795. function domContentLoadedCheck () {
  796. if (--domContentLoadedCnt === 0 && !noLoadEventRetriggers && (shimMode || !baselinePassthrough)) {
  797. document.dispatchEvent(new Event('DOMContentLoaded'));
  798. }
  799. }
  800. // this should always trigger because we assume es-module-shims is itself a domcontentloaded requirement
  801. if (hasDocument) {
  802. document.addEventListener('DOMContentLoaded', async () => {
  803. await initPromise;
  804. domContentLoadedCheck();
  805. });
  806. }
  807. let readyStateCompleteCnt = 1;
  808. function readyStateCompleteCheck () {
  809. if (--readyStateCompleteCnt === 0 && !noLoadEventRetriggers && (shimMode || !baselinePassthrough)) {
  810. document.dispatchEvent(new Event('readystatechange'));
  811. }
  812. }
  813. const hasNext = script => script.nextSibling || script.parentNode && hasNext(script.parentNode);
  814. const epCheck = (script, ready) => script.ep || !ready && (!script.src && !script.innerHTML || !hasNext(script)) || script.getAttribute('noshim') !== null || !(script.ep = true);
  815. function processImportMap (script, ready = readyStateCompleteCnt > 0) {
  816. if (epCheck(script, ready)) return;
  817. // we dont currently support multiple, external or dynamic imports maps in polyfill mode to match native
  818. if (script.src) {
  819. if (!shimMode)
  820. return;
  821. setImportMapSrcOrLazy();
  822. }
  823. if (acceptingImportMaps) {
  824. importMapPromise = importMapPromise
  825. .then(async () => {
  826. importMap = resolveAndComposeImportMap(script.src ? await (await doFetch(script.src, getFetchOpts(script))).json() : JSON.parse(script.innerHTML), script.src || baseUrl, importMap);
  827. })
  828. .catch(e => {
  829. console.log(e);
  830. if (e instanceof SyntaxError)
  831. e = new Error(`Unable to parse import map ${e.message} in: ${script.src || script.innerHTML}`);
  832. throwError(e);
  833. });
  834. if (!shimMode)
  835. acceptingImportMaps = false;
  836. }
  837. }
  838. function processScript (script, ready = readyStateCompleteCnt > 0) {
  839. if (epCheck(script, ready)) return;
  840. // does this load block readystate complete
  841. const isBlockingReadyScript = script.getAttribute('async') === null && readyStateCompleteCnt > 0;
  842. // does this load block DOMContentLoaded
  843. const isDomContentLoadedScript = domContentLoadedCnt > 0;
  844. if (isBlockingReadyScript) readyStateCompleteCnt++;
  845. if (isDomContentLoadedScript) domContentLoadedCnt++;
  846. const loadPromise = topLevelLoad(script.src || baseUrl, getFetchOpts(script), !script.src && script.innerHTML, !shimMode, isBlockingReadyScript && lastStaticLoadPromise)
  847. .then(() => {
  848. // if the type of the script tag "module-shim", browser does not dispatch a "load" event
  849. // see https://github.com/guybedford/es-module-shims/issues/346
  850. if (shimMode) {
  851. script.dispatchEvent(new Event('load'));
  852. }
  853. })
  854. .catch(throwError);
  855. if (isBlockingReadyScript)
  856. lastStaticLoadPromise = loadPromise.then(readyStateCompleteCheck);
  857. if (isDomContentLoadedScript)
  858. loadPromise.then(domContentLoadedCheck);
  859. }
  860. const fetchCache = {};
  861. function processPreload (link) {
  862. if (link.ep) return;
  863. link.ep = true;
  864. if (fetchCache[link.href])
  865. return;
  866. fetchCache[link.href] = fetchModule(link.href, getFetchOpts(link));
  867. }
  868. })();