Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Turns partial code location into precise code location

License

NotificationsYou must be signed in to change notification settings

stacktracejs/stacktrace-gps

Repository files navigation

Build StatusCoverage StatusGitHub license

This library accepts a code location (in the form of aStackFrame) andreturns a new StackFrame with a more accurate location (usingsource maps) and guessed function names.

This is primarily a browser-centric library, but can be used with node.js. See theOffline Usage section below.

Usage

varstackframe=newStackFrame({fileName:'http://localhost:3000/file.min.js',lineNumber:1,columnNumber:3284});varcallback=functionmyCallback(foundFunctionName){console.log(foundFunctionName);};// Such meta. Wowvarerrback=functionmyErrback(error){console.log(StackTrace.fromError(error));};vargps=newStackTraceGPS();// Pinpoint actual function name and source-mapped locationgps.pinpoint(stackframe).then(callback,errback);//===> Promise(StackFrame({functionName: 'fun', fileName: 'file.js', lineNumber: 203, columnNumber: 9}), Error)// Better location/name information from source mapsgps.getMappedLocation(stackframe).then(callback,errback);//===> Promise(StackFrame({fileName: 'file.js', lineNumber: 203, columnNumber: 9}), Error)// Get function name from location informationgps.findFunctionName(stackframe).then(callback,errback);//===> Promise(StackFrame({functionName: 'fun', fileName: 'http://localhost:3000/file.min.js', lineNumber: 1, columnNumber: 3284}), Error)

Offline Usage

With a bit of preparation, you can use this library offline in any environment. Any encountered fileNames not in the cache return resolvedPromises with the original StackFrame. StackTraceGPS will make a best effort to provide as good of response with what is given and willfallback to the original StackFrame if nothing better could be found.

varstack=ErrorStackParser.parse(newError('boom'));console.assert(stack[0]==newStackFrame({fileName:'http://localhost:9999/file.min.js',lineNumber:1,columnNumber:32}));varsourceCache={'http://localhost:9999/file.min.js':'var foo=function(){};function bar(){}var baz=eval("XXX");\n//# sourceMappingURL=file.js.map'};varsourceMap='{"version":3,"sources":["./file.js"],"sourceRoot":"http://localhost:4000/","names":["foo","bar","baz","eval"],"mappings":"AAAA,GAAIA,KAAM,YACV,SAASC,QACT,GAAIC,KAAMC,KAAK","file":"file.min.js"}';varsourceMapConsumerCache={'http://localhost:4000/file.js.map':newSourceMap.SourceMapConsumer(sourceMap)};vargps=newStackTraceGPS({offline:true,sourceCache:sourceCache,sourceMapConsumerCache:sourceMapConsumerCache});gps.pinpoint(stack[0]).then(function(betterStackFrame){console.assert(betterStackFrame===newStackFrame({functionName:'bar',fileName:'http://localhost:9999/file.js',lineNumber:2,columnNumber:9}));});

Installation

npm install stacktrace-gpsbower install stacktrace-gpshttps://raw.githubusercontent.com/stacktracejs/stacktrace-gps/master/dist/stacktrace-gps.min.js

API

new StackTraceGPS(/*optional*/ options) => StackTraceGPS

options: Object

  • sourceCache: Object (String URL : String Source) - Pre-populate source cache to avoid network requests
  • sourceMapConsumerCache: Object (Source Mapping URL : SourceMap.SourceMapConsumer) - Pre-populate source cache to avoid network requests
  • offline: Boolean (default false) - Set totrue to prevent all network requests
  • ajax: Function (String URL => Promise(responseText)) - Function to be used for making X-Domain requests
  • atob: Function (String => String) - Function to convert base64-encoded strings to their original representation

.pinpoint(stackframe) => Promise(StackFrame)

Enhance function name and use source maps to produce a better StackFrame.

  • stackframe -StackFrame or like objecte.g. {fileName: 'path/to/file.js', lineNumber: 100, columnNumber: 5}

.findFunctionName(stackframe) => Promise(StackFrame)

Enhance function name and use source maps to produce a better StackFrame.

.getMappedLocation(stackframe) => Promise(StackFrame)

Enhance function name and use source maps to produce a better StackFrame.

Browser Support

Sauce Test Status

Functions that rely onSource Maps(pinpoint andgetMappedLocation) require recent browsers.

Contributing

Want to be listed as aContributor? Start with theContributing Guide!

About

Turns partial code location into precise code location

Topics

Resources

License

Contributing

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp