Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Rollup Plugin Name:
esm-shim
This PR contains:
Are tests included?
Breaking Changes?
If yes, then include "BREAKING CHANGES:" in the first commit message body, followed by a description of what is breaking.
List any relevant issue numbers:
Description
When using
esm-shim
to insert the required variables inside ES Modules, the regex matching logic was not working correctly, thematchAllPolyfill
function did not return the index from where in the file the matches was found. This led to an incorrect calculation on where to put the shim in the bundled file, which could cause invalid JS to be generated.For example take a look at this Blitz: https://stackblitz.com/edit/node-hz948e?file=index.js.
Since the
String.matchAll
function is not available in this project, aslib
is set toes6
intsconfig.json
, I decided to modify the polyfill to correctly return the indices of where the matches start. I also refactored the code a bit so it does only what it needs to - find the last ESM import so it know to place the shim after it.I added 2 test cases to test this feature: 1 with a single ESM import, and 1 with multiple imports.
I also tested a solution where I used
String.matchAll
, and that one worked out of the box - if whenever thelib
option is updated to a newer standard, it'd be better to just use that instead.