Skip to content

Commit c3c1677

Browse files
committed
feat(unassertify): adjust sourcemap when preceding transform exists
1 parent 08cbe53 commit c3c1677

File tree

3 files changed

+67
-3
lines changed

3 files changed

+67
-3
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ function handleIncomingSourceMap (originalCode) {
3636
}
3737

3838
function applyUnassertWithSourceMap (code, filepath, options) {
39-
var ast = esprima.parse(code, { sourceType: 'module' });
39+
var ast = esprima.parse(code, { sourceType: 'module', tolerant: true, loc: true });
4040
var inMap = handleIncomingSourceMap(code);
4141
var instrumented = escodegen.generate(unassert(ast), {
4242
sourceMap: filepath,

test/fixtures/func/expected-with-sourcemap.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/test.js

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ var unassertify = require('..');
44
var fs = require('fs');
55
var path = require('path');
66
var Stream = require('stream');
7-
var assert = require('assert');
7+
var assert = require('power-assert');
88
var browserify = require('browserify');
9+
var coffeeify = require('coffeeify');
910
var es = require('event-stream');
11+
var convert = require('convert-source-map');
1012

1113

1214
describe('unassertify', function () {
@@ -22,6 +24,68 @@ describe('unassertify', function () {
2224
done();
2325
}));
2426
});
27+
it('produces sourcemap when debug: true', function (done) {
28+
var b = browserify({debug: true});
29+
var testFilepath = path.normalize(path.join(__dirname, 'fixtures', 'func', 'fixture.js'));
30+
b.add(testFilepath);
31+
b.transform(unassertify);
32+
b.bundle().pipe(es.wait(function(err, data) {
33+
assert(!err);
34+
var code = data.toString('utf-8');
35+
// console.log(code);
36+
assert(! /assert/.test(code));
37+
var inlineMap = convert.fromSource(code);
38+
assert(inlineMap);
39+
var sourceMap = inlineMap.toObject();
40+
assert(sourceMap);
41+
// console.log(JSON.stringify(sourceMap, null, 2));
42+
assert(sourceMap.sources.some(function (fpath) { return fpath === testFilepath; }));
43+
done();
44+
}));
45+
});
46+
});
47+
48+
49+
describe('with preceding transform', function () {
50+
it('just remove assertions and dependencies when debug: false', function (done) {
51+
var b = browserify();
52+
b.add(path.normalize(path.join(__dirname, 'fixtures', 'coffee', 'fixture.coffee')));
53+
b.transform(coffeeify);
54+
b.transform(unassertify);
55+
b.bundle().pipe(es.wait(function(err, data) {
56+
assert(!err);
57+
var code = data.toString('utf-8');
58+
// console.log(code);
59+
var inlineMap = convert.fromSource(code);
60+
assert(!inlineMap);
61+
assert(! /require\('assert'\)/.test(code));
62+
done();
63+
}));
64+
});
65+
it('adjust sourcemap if debug: true', function (done) {
66+
var b = browserify({debug: true});
67+
var testFilepath = path.normalize(path.join(__dirname, 'fixtures', 'coffee', 'fixture.coffee'));
68+
b.add(testFilepath);
69+
b.transform(coffeeify);
70+
b.transform(unassertify);
71+
b.bundle().pipe(es.wait(function(err, data) {
72+
assert(!err);
73+
var code = data.toString('utf-8');
74+
// console.log(code);
75+
assert(! /require\('assert'\)/.test(code));
76+
var inlineMap = convert.fromSource(code);
77+
assert(inlineMap);
78+
var sourceMap = inlineMap.toObject();
79+
assert(sourceMap);
80+
// console.log(JSON.stringify(sourceMap, null, 2));
81+
assert(sourceMap.sources.some(function (fpath) { return fpath === testFilepath; }));
82+
var originalCode = fs.readFileSync(testFilepath, 'utf-8');
83+
assert(sourceMap.sourcesContent.some(function (eachCode) {
84+
return eachCode === originalCode;
85+
}));
86+
done();
87+
}));
88+
});
2589
});
2690

2791

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy