SourceMaps

Art Fiedler artfiedler at gmail.com
Wed Nov 30 23:05:32 UTC 2016


Would be nice to provide SourceMaps to the ScriptEngine... I've seen here...

    http://stackoverflow.com/questions/35137455/nashorn-use-of-source-maps

That nashorn doesn't support source maps, and I'm sure there is a library
out there that
is catching the exception and formatting it before it would come to my
code. Also note
new Error() doesn't seem to provide the columnNumber to do my own
source map conversion.

I would propose supporting inline source maps in the js code... or
implementing in java by starting out with
something like a SourceMapProvider  interface...

public interface SourceMapProvider {
    public SourceMapConsumer getConsumer(String filename);
    public SourceMapConsumer putConsumer(String filename, SourceMapConsumer
consumer);

    public SourcePosition getOriginalPosition(String filename, int line,
int column);
    public SourcePosition getOriginalPosition(String filename, int offset);
    public SourcePosition getGeneratedPosition(String filename, int line,
int column);
    public SourcePosition getGeneratedPosition(String filename, int offset);
}
public interface SourceMapConsumer {
    public String getFilename();
    public SourcePosition getOriginalPosition(int line, int column);
    public SourcePosition getOriginalPosition(int offset);
    public SourcePosition getGeneratedPosition(int line, int column);
    public SourcePosition getGeneratedPosition(int offset);
}
public interface SourcePosition {
    public String getFilename();
    public int getOriginalLine();
    public int getOriginalColumn();
    public int getOriginalOffset();
    public String getOriginalName(); // Original Identifier, I believe this
would be used for replaced variable names etc
    public int getGeneratedLine();
    public int getGeneratedColumn();
    public int getGeneratedOffset();
}

scriptEngine.setSourceMapProvider(mySourceMaps);
scriptEngine.eval("//@sourceURL=myfile.js\n... minified or transformed code
...");
scriptEngine.eval("//@sourceURL=myotherfile.js\n... minified or transformed
code ...");

The idea would be that the CodeGenerator, etc... would query the provider
for line/column info
passed to an error if a SourceMapProvider was specified and a
SourceMapConsumer exists for that the file.

-Arthur Fiedler


More information about the nashorn-dev mailing list