istanbuljs / babel-plugin-istanbul

A babel plugin that adds istanbul instrumentation to ES6 code
BSD 3-Clause "New" or "Revised" License
616 stars 72 forks source link

chore(sourcemap): convert inputSourceMap to plain js object #272

Open thebanjomatic opened 2 years ago

thebanjomatic commented 2 years ago

@babel/core recently made a change where the sourcemap is no longer a plain js object, but instead is a class SourceMap. This breaks when the coverage data gets passed into valueToNode by istanbul-lib-instrument because the coverage data is no longer entirely plain json objects (this.cov.toJSON() just returns the data and doesn't do any conversion).

In this PR we are checking if the input sourcemap is a plain js object, and converting it if it is not.

Note that this does seem like the more appropriate place to make the fix since it is istanbul that has the requirement that the coverage data is a plain javascript object and the patch applied here https://github.com/babel/babel/pull/14283 is more of a temporary workaround.

https://github.com/istanbuljs/istanbuljs/issues/672

bcoe commented 2 years ago

@thebanjomatic I think this problem is better fixed here, if I'm following:

https://github.com/istanbuljs/istanbuljs/pull/662

The only thing blocking #662 from landing is that someone needs to write a test. I would happy accept a PR for a test, if you'd like to contribute (you can branch from #662).

SimenB commented 1 day ago

Should we close this since it was fixed upstream?