Merge pull request #8368 from yurydelendik/sourcemap
Enables source maps for webpack generated files.
This commit is contained in:
commit
deae2d8cb8
@ -1,28 +1,17 @@
|
||||
function f1() {
|
||||
/* head */
|
||||
"1";
|
||||
/* mid */
|
||||
"2";
|
||||
}
|
||||
/* tail */
|
||||
function f2() {
|
||||
// head
|
||||
"1";
|
||||
// mid
|
||||
"2";
|
||||
}
|
||||
// tail
|
||||
function f2() {
|
||||
if ("1") {
|
||||
// begin block
|
||||
"1";
|
||||
}
|
||||
"2";
|
||||
// trailing
|
||||
if (/* s */
|
||||
"3")
|
||||
/*e*/
|
||||
{
|
||||
"4";
|
||||
}
|
||||
if ("3") {
|
||||
"4";
|
||||
}
|
||||
}
|
||||
|
15
external/builder/preprocessor2.js
vendored
15
external/builder/preprocessor2.js
vendored
@ -347,28 +347,23 @@ function traverseTree(ctx, node) {
|
||||
}
|
||||
|
||||
function preprocessPDFJSCode(ctx, code) {
|
||||
var saveComments = !!ctx.saveComments;
|
||||
var format = ctx.format || {
|
||||
indent: {
|
||||
style: ' ',
|
||||
adjustMultilineComment: saveComments,
|
||||
}
|
||||
};
|
||||
var comments;
|
||||
var parseComment = {
|
||||
var parseOptions = {
|
||||
locations: true,
|
||||
onComments: saveComments || (comments = []),
|
||||
sourceFile: ctx.sourceFile,
|
||||
sourceType: 'module',
|
||||
};
|
||||
var codegenOptions = {
|
||||
format: format,
|
||||
comment: saveComments,
|
||||
parse: acorn.parse,
|
||||
sourceMap: ctx.sourceMap,
|
||||
sourceMapWithCode: ctx.sourceMap,
|
||||
};
|
||||
var syntax = acorn.parse(code, parseComment);
|
||||
if (saveComments) {
|
||||
escodegen.attachComments(syntax, comments);
|
||||
}
|
||||
var syntax = acorn.parse(code, parseOptions);
|
||||
traverseTree(ctx, syntax);
|
||||
return escodegen.generate(syntax, codegenOptions);
|
||||
}
|
||||
|
39
external/builder/test-fixtures.js
vendored
39
external/builder/test-fixtures.js
vendored
@ -1,17 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
require('shelljs/make');
|
||||
|
||||
var builder = require('./builder');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
var errors = 0;
|
||||
|
||||
cd(__dirname);
|
||||
cd('fixtures');
|
||||
ls('*-expected.*').forEach(function(expectationFilename) {
|
||||
var baseDir = path.join(__dirname, 'fixtures');
|
||||
var files = fs.readdirSync(baseDir).filter(function (name) {
|
||||
return /-expected\./.test(name);
|
||||
}).map(function (name) {
|
||||
return path.join(baseDir, name);
|
||||
});
|
||||
files.forEach(function(expectationFilename) {
|
||||
var inFilename = expectationFilename.replace('-expected', '');
|
||||
var expectation = cat(expectationFilename).trim()
|
||||
var expectation = fs.readFileSync(expectationFilename).toString().trim()
|
||||
.replace(/__filename/g, fs.realpathSync(inFilename));
|
||||
var outLines = [];
|
||||
|
||||
@ -32,20 +35,22 @@ ls('*-expected.*').forEach(function(expectationFilename) {
|
||||
if (out !== expectation) {
|
||||
errors++;
|
||||
|
||||
echo('Assertion failed for ' + inFilename);
|
||||
echo('--------------------------------------------------');
|
||||
echo('EXPECTED:');
|
||||
echo(expectation);
|
||||
echo('--------------------------------------------------');
|
||||
echo('ACTUAL');
|
||||
echo(out);
|
||||
echo('--------------------------------------------------');
|
||||
echo();
|
||||
console.log('Assertion failed for ' + inFilename);
|
||||
console.log('--------------------------------------------------');
|
||||
console.log('EXPECTED:');
|
||||
console.log(expectation);
|
||||
console.log('--------------------------------------------------');
|
||||
console.log('ACTUAL');
|
||||
console.log(out);
|
||||
console.log('--------------------------------------------------');
|
||||
console.log();
|
||||
}
|
||||
});
|
||||
|
||||
if (errors) {
|
||||
echo('Found ' + errors + ' expectation failures.');
|
||||
console.error('Found ' + errors + ' expectation failures.');
|
||||
process.exit(1);
|
||||
} else {
|
||||
echo('All tests completed without errors.');
|
||||
console.log('All tests completed without errors.');
|
||||
process.exit(0);
|
||||
}
|
||||
|
40
external/builder/test-fixtures_esprima.js
vendored
40
external/builder/test-fixtures_esprima.js
vendored
@ -1,17 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
require('shelljs/make');
|
||||
|
||||
var p2 = require('./preprocessor2.js');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
var errors = 0;
|
||||
|
||||
cd(__dirname);
|
||||
cd('fixtures_esprima');
|
||||
ls('*-expected.*').forEach(function(expectationFilename) {
|
||||
var baseDir = path.join(__dirname, 'fixtures_esprima');
|
||||
var files = fs.readdirSync(baseDir).filter(function (name) {
|
||||
return /-expected\./.test(name);
|
||||
}).map(function (name) {
|
||||
return path.join(baseDir, name);
|
||||
});
|
||||
files.forEach(function(expectationFilename) {
|
||||
var inFilename = expectationFilename.replace('-expected', '');
|
||||
var expectation = cat(expectationFilename).trim()
|
||||
var expectation = fs.readFileSync(expectationFilename).toString().trim()
|
||||
.replace(/__filename/g, fs.realpathSync(inFilename));
|
||||
var input = fs.readFileSync(inFilename).toString();
|
||||
|
||||
@ -24,7 +27,6 @@ ls('*-expected.*').forEach(function(expectationFilename) {
|
||||
var ctx = {
|
||||
defines: defines,
|
||||
rootPath: __dirname + '/../..',
|
||||
saveComments: true
|
||||
};
|
||||
var out;
|
||||
try {
|
||||
@ -35,20 +37,22 @@ ls('*-expected.*').forEach(function(expectationFilename) {
|
||||
if (out !== expectation) {
|
||||
errors++;
|
||||
|
||||
echo('Assertion failed for ' + inFilename);
|
||||
echo('--------------------------------------------------');
|
||||
echo('EXPECTED:');
|
||||
echo(expectation);
|
||||
echo('--------------------------------------------------');
|
||||
echo('ACTUAL');
|
||||
echo(out);
|
||||
echo('--------------------------------------------------');
|
||||
echo();
|
||||
console.log('Assertion failed for ' + inFilename);
|
||||
console.log('--------------------------------------------------');
|
||||
console.log('EXPECTED:');
|
||||
console.log(expectation);
|
||||
console.log('--------------------------------------------------');
|
||||
console.log('ACTUAL');
|
||||
console.log(out);
|
||||
console.log('--------------------------------------------------');
|
||||
console.log();
|
||||
}
|
||||
});
|
||||
|
||||
if (errors) {
|
||||
echo('Found ' + errors + ' expectation failures.');
|
||||
console.error('Found ' + errors + ' expectation failures.');
|
||||
process.exit(1);
|
||||
} else {
|
||||
echo('All tests completed without errors.');
|
||||
console.log('All tests completed without errors.');
|
||||
process.exit(0);
|
||||
}
|
||||
|
19
external/webpack/pdfjsdev-loader.js
vendored
19
external/webpack/pdfjsdev-loader.js
vendored
@ -17,6 +17,7 @@
|
||||
'use strict';
|
||||
|
||||
var preprocessor2 = require('../builder/preprocessor2.js');
|
||||
var path = require('path');
|
||||
|
||||
module.exports = function (source) {
|
||||
// Options must be specified, ignoring request if not.
|
||||
@ -24,7 +25,19 @@ module.exports = function (source) {
|
||||
return source;
|
||||
}
|
||||
this.cacheable();
|
||||
var ctx = this.query;
|
||||
source = preprocessor2.preprocessPDFJSCode(ctx, source);
|
||||
return source;
|
||||
|
||||
var filePath = this.resourcePath;
|
||||
var context = this.options.context;
|
||||
var sourcePath = path.relative(context, filePath).split(path.sep).join('/');
|
||||
|
||||
var ctx = Object.create(this.query);
|
||||
ctx.sourceMap = true;
|
||||
ctx.sourceFile = sourcePath;
|
||||
|
||||
var callback = this.callback;
|
||||
var sourceAndMap = preprocessor2.preprocessPDFJSCode(ctx, source);
|
||||
var map = sourceAndMap.map.toJSON();
|
||||
// escodegen does not embed source -- setting map's sourcesContent.
|
||||
map.sourcesContent = [source];
|
||||
callback(null, sourceAndMap.code, map);
|
||||
};
|
||||
|
15
gulpfile.js
15
gulpfile.js
@ -129,6 +129,8 @@ function createWebpackConfig(defines, output) {
|
||||
BUNDLE_BUILD: versionInfo.commit
|
||||
});
|
||||
var licenseHeader = fs.readFileSync('./src/license_header.js').toString();
|
||||
var enableSourceMaps = !bundleDefines.FIREFOX && !bundleDefines.MOZCENTRAL &&
|
||||
!bundleDefines.CHROME;
|
||||
|
||||
return {
|
||||
output: output,
|
||||
@ -142,6 +144,7 @@ function createWebpackConfig(defines, output) {
|
||||
'pdfjs-web': path.join(__dirname, 'web'),
|
||||
}
|
||||
},
|
||||
devtool: enableSourceMaps ? 'source-map' : undefined,
|
||||
module: {
|
||||
loaders: [
|
||||
{
|
||||
@ -1329,8 +1332,11 @@ gulp.task('dist-repo-prepare', ['dist-pre'], function () {
|
||||
.pipe(gulp.dest(DIST_DIR)),
|
||||
gulp.src([
|
||||
GENERIC_DIR + 'build/pdf.js',
|
||||
GENERIC_DIR + 'build/pdf.js.map',
|
||||
GENERIC_DIR + 'build/pdf.worker.js',
|
||||
GENERIC_DIR + 'build/pdf.worker.js.map',
|
||||
SINGLE_FILE_DIR + 'build/pdf.combined.js',
|
||||
SINGLE_FILE_DIR + 'build/pdf.combined.js.map',
|
||||
SRC_DIR + 'pdf.worker.entry.js',
|
||||
]).pipe(gulp.dest(DIST_DIR + 'build/')),
|
||||
gulp.src(MINIFIED_DIR + 'build/pdf.js')
|
||||
@ -1424,3 +1430,12 @@ gulp.task('mozcentraldiff', ['mozcentral', 'mozcentralbaseline'],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('externaltest', function () {
|
||||
gutil.log('Running test-fixtures.js');
|
||||
safeSpawnSync('node', ['external/builder/test-fixtures.js'],
|
||||
{stdio: 'inherit'});
|
||||
gutil.log('Running test-fixtures_esprima.js');
|
||||
safeSpawnSync('node', ['external/builder/test-fixtures_esprima.js'],
|
||||
{stdio: 'inherit'});
|
||||
});
|
||||
|
@ -35,7 +35,7 @@
|
||||
"yargs": "^3.14.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "gulp lint unittestcli"
|
||||
"test": "gulp lint unittestcli externaltest"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
Loading…
x
Reference in New Issue
Block a user