mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-22 17:33:23 +01:00
development - add sourcemap debug tool
This commit is contained in:
parent
5c9cb0b787
commit
f4fe3e81c1
49
development/sourcemap-validator.js
Normal file
49
development/sourcemap-validator.js
Normal file
@ -0,0 +1,49 @@
|
||||
const fs = require('fs')
|
||||
const { SourceMapConsumer } = require('source-map')
|
||||
|
||||
//
|
||||
// Utility to help check if sourcemaps are working
|
||||
//
|
||||
// searches `dist/chrome/inpage.js` for "new Error" statements
|
||||
// and prints their source lines using the sourcemaps.
|
||||
// if not working it may error or print minified garbage
|
||||
//
|
||||
|
||||
start()
|
||||
|
||||
async function start() {
|
||||
const rawBuild = fs.readFileSync(__dirname + '/../dist/chrome/inpage.js', 'utf8')
|
||||
const rawSourceMap = fs.readFileSync(__dirname + '/../dist/sourcemaps/inpage.js.map', 'utf8')
|
||||
const consumer = await new SourceMapConsumer(rawSourceMap)
|
||||
|
||||
console.log('hasContentsOfAllSources:', consumer.hasContentsOfAllSources(), '\n')
|
||||
console.log('sources:')
|
||||
consumer.sources.map((sourcePath) => console.log(sourcePath))
|
||||
|
||||
console.log('\nexamining "new Error" statements:\n')
|
||||
const sourceLines = rawBuild.split('\n')
|
||||
sourceLines.map(line => indicesOf('new Error', line))
|
||||
.forEach((errorIndices, lineIndex) => {
|
||||
// if (errorIndex === null) return console.log('line does not contain "new Error"')
|
||||
errorIndices.forEach((errorIndex) => {
|
||||
const position = { line: lineIndex + 1, column: errorIndex }
|
||||
const result = consumer.originalPositionFor(position)
|
||||
if (!result.source) return console.warn(`!! missing source for position: ${position}`)
|
||||
// filter out deps distributed minified without sourcemaps
|
||||
if (result.source === 'node_modules/browserify/node_modules/browser-pack/_prelude.js') return // minified mess
|
||||
if (result.source === 'node_modules/web3/dist/web3.min.js') return // minified mess
|
||||
const sourceContent = consumer.sourceContentFor(result.source)
|
||||
const sourceLines = sourceContent.split('\n')
|
||||
const line = sourceLines[result.line-1]
|
||||
console.log(`\n========================== ${result.source} ====================================\n`)
|
||||
console.log(line)
|
||||
console.log(`\n==============================================================================\n`)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function indicesOf(substring, string) {
|
||||
var a=[],i=-1;
|
||||
while((i=string.indexOf(substring,i+1)) >= 0) a.push(i);
|
||||
return a;
|
||||
}
|
@ -269,6 +269,7 @@
|
||||
"selenium-webdriver": "^3.5.0",
|
||||
"shell-parallel": "^1.0.3",
|
||||
"sinon": "^5.0.0",
|
||||
"source-map": "^0.7.2",
|
||||
"stylelint-config-standard": "^18.2.0",
|
||||
"tape": "^4.5.1",
|
||||
"testem": "^2.0.0",
|
||||
|
Loading…
Reference in New Issue
Block a user