|
1 |
| -/* ES Module Shims 1.7.2 */ |
| 1 | +/* ES Module Shims 1.7.3 */ |
2 | 2 | (function () {
|
3 | 3 |
|
4 | 4 | const hasWindow = typeof window !== 'undefined';
|
|
596 | 596 | // edge doesnt execute sibling in order, so we fix this up by ensuring all previous executions are explicit dependencies
|
597 | 597 | let resolvedSource = edge && lastLoad ? `import '${lastLoad}';` : '';
|
598 | 598 |
|
599 |
| - if (!imports.length) { |
600 |
| - resolvedSource += source; |
601 |
| - } |
602 |
| - else { |
603 |
| - // once all deps have loaded we can inline the dependency resolution blobs |
604 |
| - // and define this blob |
605 |
| - let lastIndex = 0, depIndex = 0, dynamicImportEndStack = []; |
606 |
| - function pushStringTo (originalIndex) { |
607 |
| - while (dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) { |
608 |
| - const dynamicImportEnd = dynamicImportEndStack.pop(); |
609 |
| - resolvedSource += `${source.slice(lastIndex, dynamicImportEnd)}, ${urlJsString(load.r)}`; |
610 |
| - lastIndex = dynamicImportEnd; |
611 |
| - } |
612 |
| - resolvedSource += source.slice(lastIndex, originalIndex); |
613 |
| - lastIndex = originalIndex; |
| 599 | + // once all deps have loaded we can inline the dependency resolution blobs |
| 600 | + // and define this blob |
| 601 | + let lastIndex = 0, depIndex = 0, dynamicImportEndStack = []; |
| 602 | + function pushStringTo (originalIndex) { |
| 603 | + while (dynamicImportEndStack[dynamicImportEndStack.length - 1] < originalIndex) { |
| 604 | + const dynamicImportEnd = dynamicImportEndStack.pop(); |
| 605 | + resolvedSource += `${source.slice(lastIndex, dynamicImportEnd)}, ${urlJsString(load.r)}`; |
| 606 | + lastIndex = dynamicImportEnd; |
614 | 607 | }
|
615 |
| - for (const { s: start, ss: statementStart, se: statementEnd, d: dynamicImportIndex } of imports) { |
616 |
| - // dependency source replacements |
617 |
| - if (dynamicImportIndex === -1) { |
618 |
| - let depLoad = load.d[depIndex++], blobUrl = depLoad.b, cycleShell = !blobUrl; |
619 |
| - if (cycleShell) { |
620 |
| - // circular shell creation |
621 |
| - if (!(blobUrl = depLoad.s)) { |
622 |
| - blobUrl = depLoad.s = createBlob(`export function u$_(m){${ |
623 |
| - depLoad.a[1].map(({ s, e }, i) => { |
624 |
| - const q = depLoad.S[s] === '"' || depLoad.S[s] === "'"; |
625 |
| - return `e$_${i}=m${q ? `[` : '.'}${depLoad.S.slice(s, e)}${q ? `]` : ''}`; |
626 |
| - }).join(',') |
627 |
| - }}${ |
628 |
| - depLoad.a[1].length ? `let ${depLoad.a[1].map((_, i) => `e$_${i}`).join(',')};` : '' |
629 |
| - }export {${ |
630 |
| - depLoad.a[1].map(({ s, e }, i) => `e$_${i} as ${depLoad.S.slice(s, e)}`).join(',') |
631 |
| - }}\n//# sourceURL=${depLoad.r}?cycle`); |
632 |
| - } |
633 |
| - } |
634 |
| - |
635 |
| - pushStringTo(start - 1); |
636 |
| - resolvedSource += `/*${source.slice(start - 1, statementEnd)}*/${urlJsString(blobUrl)}`; |
| 608 | + resolvedSource += source.slice(lastIndex, originalIndex); |
| 609 | + lastIndex = originalIndex; |
| 610 | + } |
637 | 611 |
|
638 |
| - // circular shell execution |
639 |
| - if (!cycleShell && depLoad.s) { |
640 |
| - resolvedSource += `;import*as m$_${depIndex} from'${depLoad.b}';import{u$_ as u$_${depIndex}}from'${depLoad.s}';u$_${depIndex}(m$_${depIndex})`; |
641 |
| - depLoad.s = undefined; |
| 612 | + for (const { s: start, ss: statementStart, se: statementEnd, d: dynamicImportIndex } of imports) { |
| 613 | + // dependency source replacements |
| 614 | + if (dynamicImportIndex === -1) { |
| 615 | + let depLoad = load.d[depIndex++], blobUrl = depLoad.b, cycleShell = !blobUrl; |
| 616 | + if (cycleShell) { |
| 617 | + // circular shell creation |
| 618 | + if (!(blobUrl = depLoad.s)) { |
| 619 | + blobUrl = depLoad.s = createBlob(`export function u$_(m){${ |
| 620 | + depLoad.a[1].map(({ s, e }, i) => { |
| 621 | + const q = depLoad.S[s] === '"' || depLoad.S[s] === "'"; |
| 622 | + return `e$_${i}=m${q ? `[` : '.'}${depLoad.S.slice(s, e)}${q ? `]` : ''}`; |
| 623 | + }).join(',') |
| 624 | + }}${ |
| 625 | + depLoad.a[1].length ? `let ${depLoad.a[1].map((_, i) => `e$_${i}`).join(',')};` : '' |
| 626 | + }export {${ |
| 627 | + depLoad.a[1].map(({ s, e }, i) => `e$_${i} as ${depLoad.S.slice(s, e)}`).join(',') |
| 628 | + }}\n//# sourceURL=${depLoad.r}?cycle`); |
642 | 629 | }
|
643 |
| - lastIndex = statementEnd; |
644 |
| - } |
645 |
| - // import.meta |
646 |
| - else if (dynamicImportIndex === -2) { |
647 |
| - load.m = { url: load.r, resolve: metaResolve }; |
648 |
| - metaHook(load.m, load.u); |
649 |
| - pushStringTo(start); |
650 |
| - resolvedSource += `importShim._r[${urlJsString(load.u)}].m`; |
651 |
| - lastIndex = statementEnd; |
652 | 630 | }
|
653 |
| - // dynamic import |
654 |
| - else { |
655 |
| - pushStringTo(statementStart + 6); |
656 |
| - resolvedSource += `Shim(`; |
657 |
| - dynamicImportEndStack.push(statementEnd - 1); |
658 |
| - lastIndex = start; |
| 631 | + |
| 632 | + pushStringTo(start - 1); |
| 633 | + resolvedSource += `/*${source.slice(start - 1, statementEnd)}*/${urlJsString(blobUrl)}`; |
| 634 | + |
| 635 | + // circular shell execution |
| 636 | + if (!cycleShell && depLoad.s) { |
| 637 | + resolvedSource += `;import*as m$_${depIndex} from'${depLoad.b}';import{u$_ as u$_${depIndex}}from'${depLoad.s}';u$_${depIndex}(m$_${depIndex})`; |
| 638 | + depLoad.s = undefined; |
659 | 639 | }
|
| 640 | + lastIndex = statementEnd; |
660 | 641 | }
|
| 642 | + // import.meta |
| 643 | + else if (dynamicImportIndex === -2) { |
| 644 | + load.m = { url: load.r, resolve: metaResolve }; |
| 645 | + metaHook(load.m, load.u); |
| 646 | + pushStringTo(start); |
| 647 | + resolvedSource += `importShim._r[${urlJsString(load.u)}].m`; |
| 648 | + lastIndex = statementEnd; |
| 649 | + } |
| 650 | + // dynamic import |
| 651 | + else { |
| 652 | + pushStringTo(statementStart + 6); |
| 653 | + resolvedSource += `Shim(`; |
| 654 | + dynamicImportEndStack.push(statementEnd - 1); |
| 655 | + lastIndex = start; |
| 656 | + } |
| 657 | + } |
| 658 | + |
| 659 | + // support progressive cycle binding updates (try statement avoids tdz errors) |
| 660 | + if (load.s) |
| 661 | + 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`; |
| 662 | + |
| 663 | + function pushSourceURL (commentPrefix, commentStart) { |
| 664 | + const urlStart = commentStart + commentPrefix.length; |
| 665 | + const commentEnd = source.indexOf('\n', urlStart); |
| 666 | + const urlEnd = commentEnd !== -1 ? commentEnd : source.length; |
| 667 | + pushStringTo(urlStart); |
| 668 | + resolvedSource += new URL(source.slice(urlStart, urlEnd), load.r).href; |
| 669 | + lastIndex = urlEnd; |
| 670 | + } |
| 671 | + |
| 672 | + let sourceURLCommentStart = source.lastIndexOf(sourceURLCommentPrefix); |
| 673 | + let sourceMapURLCommentStart = source.lastIndexOf(sourceMapURLCommentPrefix); |
661 | 674 |
|
662 |
| - // support progressive cycle binding updates (try statement avoids tdz errors) |
663 |
| - if (load.s) |
664 |
| - 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`; |
| 675 | + // ignore sourceMap comments before already spliced code |
| 676 | + if (sourceURLCommentStart < lastIndex) sourceURLCommentStart = -1; |
| 677 | + if (sourceMapURLCommentStart < lastIndex) sourceMapURLCommentStart = -1; |
665 | 678 |
|
666 |
| - pushStringTo(source.length); |
| 679 | + // sourceURL first / only |
| 680 | + if (sourceURLCommentStart !== -1 && (sourceMapURLCommentStart === -1 || sourceMapURLCommentStart > sourceURLCommentStart)) { |
| 681 | + pushSourceURL(sourceURLCommentPrefix, sourceURLCommentStart); |
667 | 682 | }
|
| 683 | + // sourceMappingURL |
| 684 | + if (sourceMapURLCommentStart !== -1) { |
| 685 | + pushSourceURL(sourceMapURLCommentPrefix, sourceMapURLCommentStart); |
| 686 | + // sourceURL last |
| 687 | + if (sourceURLCommentStart !== -1 && (sourceURLCommentStart > sourceMapURLCommentStart)) |
| 688 | + pushSourceURL(sourceURLCommentPrefix, sourceURLCommentStart); |
| 689 | + } |
| 690 | + |
| 691 | + pushStringTo(source.length); |
668 | 692 |
|
669 |
| - let hasSourceURL = false; |
670 |
| - resolvedSource = resolvedSource.replace(sourceMapURLRegEx, (match, isMapping, url) => (hasSourceURL = !isMapping, match.replace(url, () => new URL(url, load.r)))); |
671 |
| - if (!hasSourceURL) |
672 |
| - resolvedSource += '\n//# sourceURL=' + load.r; |
| 693 | + if (sourceURLCommentStart === -1) |
| 694 | + resolvedSource += sourceURLCommentPrefix + load.r; |
673 | 695 |
|
674 | 696 | load.b = lastLoad = createBlob(resolvedSource);
|
675 | 697 | load.S = undefined;
|
676 | 698 | }
|
677 | 699 |
|
678 |
| - // ; and // trailer support added for Ruby on Rails 7 source maps compatibility |
679 |
| - // https://github.com/guybedford/es-module-shims/issues/228 |
680 |
| - const sourceMapURLRegEx = /\n\/\/# source(Mapping)?URL=([^\n]+)\s*((;|\/\/[^#][^\n]*)\s*)*$/; |
| 700 | + const sourceURLCommentPrefix = '\n//# sourceURL='; |
| 701 | + const sourceMapURLCommentPrefix = '\n//# sourceMappingURL='; |
681 | 702 |
|
682 | 703 | const jsContentType = /^(text|application)\/(x-)?javascript(;|$)/;
|
683 | 704 | const jsonContentType = /^(text|application)\/json(;|$)/;
|
|
0 commit comments