Skip to content

Commit

Permalink
Merge pull request #8368 from yurydelendik/sourcemap
Browse files Browse the repository at this point in the history
Enables source maps for webpack generated files.
  • Loading branch information
yurydelendik authored May 5, 2017
2 parents c3cfcbe + 996805f commit deae2d8
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 63 deletions.
17 changes: 3 additions & 14 deletions external/builder/fixtures_esprima/comments-expected.js
Original file line number Diff line number Diff line change
@@ -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 changes: 5 additions & 10 deletions external/builder/preprocessor2.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
39 changes: 22 additions & 17 deletions external/builder/test-fixtures.js
Original file line number Diff line number Diff line change
@@ -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 = [];

Expand All @@ -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 changes: 22 additions & 18 deletions external/builder/test-fixtures_esprima.js
Original file line number Diff line number Diff line change
@@ -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();

Expand All @@ -24,7 +27,6 @@ ls('*-expected.*').forEach(function(expectationFilename) {
var ctx = {
defines: defines,
rootPath: __dirname + '/../..',
saveComments: true
};
var out;
try {
Expand All @@ -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 changes: 16 additions & 3 deletions external/webpack/pdfjsdev-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,27 @@
'use strict';

var preprocessor2 = require('../builder/preprocessor2.js');
var path = require('path');

module.exports = function (source) {
// Options must be specified, ignoring request if not.
if (!this.query || typeof this.query !== 'object') {
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 changes: 15 additions & 0 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -142,6 +144,7 @@ function createWebpackConfig(defines, output) {
'pdfjs-web': path.join(__dirname, 'web'),
}
},
devtool: enableSourceMaps ? 'source-map' : undefined,
module: {
loaders: [
{
Expand Down Expand Up @@ -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')
Expand Down Expand Up @@ -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'});
});
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"yargs": "^3.14.0"
},
"scripts": {
"test": "gulp lint unittestcli"
"test": "gulp lint unittestcli externaltest"
},
"repository": {
"type": "git",
Expand Down

0 comments on commit deae2d8

Please sign in to comment.