Show More
Commit Description:
Update README.rdoc
Commit Description:
Update README.rdoc
References:
File last commit:
Show/Diff file:
Action:
node_modules/static-module/test/sourcemap.js
| 126 lines
| 3.6 KiB
| application/javascript
| JavascriptLexer
|
r789 | var test = require('tape'); | |||
var fs = require('fs'); | ||||
var concat = require('concat-stream'); | ||||
var PassThrough = require('stream').PassThrough; | ||||
var convertSourceMap = require('convert-source-map'); | ||||
var SourceMapConsumer = require('source-map').SourceMapConsumer; | ||||
var uglify = require('uglify-js'); | ||||
var staticModule = require('../'); | ||||
test('source maps', function (t) { | ||||
t.plan(6); | ||||
var transform = staticModule({ | ||||
sheetify: function (filename) { | ||||
var stream = PassThrough(); | ||||
stream.write('`.css{\n'); | ||||
stream.write(' color: red;\n'); | ||||
stream.end('}`'); | ||||
return stream; | ||||
} | ||||
}, { sourceMap: true, inputFilename: 'main.js' }); | ||||
fs.createReadStream(__dirname + '/sourcemap/main.js').pipe(transform).pipe(concat({ encoding: 'string' }, function (res) { | ||||
var consumer = new SourceMapConsumer(convertSourceMap.fromSource(res).toObject()); | ||||
var mapped = consumer.originalPositionFor({ | ||||
line: 8, | ||||
column: 0 | ||||
}); | ||||
t.equal(mapped.line, 8); | ||||
t.equal(mapped.column, 0); | ||||
mapped = consumer.originalPositionFor({ | ||||
line: 10, | ||||
column: 2 | ||||
}); | ||||
t.equal(mapped.line, 8); | ||||
t.equal(mapped.column, 19); | ||||
mapped = consumer.originalPositionFor({ | ||||
line: 12, | ||||
column: 0 | ||||
}); | ||||
t.equal(mapped.line, 10); | ||||
t.equal(mapped.column, 0); | ||||
})); | ||||
}); | ||||
test('input source map', function (t) { | ||||
t.plan(4); | ||||
var content = fs.readFileSync(__dirname + '/sourcemap/main.js', 'utf8'); | ||||
var minified = uglify.minify({ 'main.js': content }, { | ||||
output: { beautify: true }, | ||||
sourceMap: { | ||||
url: 'inline', | ||||
includeSources: true | ||||
} | ||||
}); | ||||
var transform = staticModule({ | ||||
sheetify: function (filename) { | ||||
var stream = PassThrough(); | ||||
stream.end('`.css{\n color: orange;\n}`'); | ||||
return stream; | ||||
} | ||||
}, { sourceMap: true, inputFilename: 'main.js' }); | ||||
transform.pipe(concat({ encoding: 'string' }, function (res) { | ||||
var consumer = new SourceMapConsumer(convertSourceMap.fromSource(res).toObject()); | ||||
var mapped = consumer.originalPositionFor({ | ||||
line: 7, | ||||
column: 0 | ||||
}); | ||||
t.equal(mapped.line, 8); | ||||
t.equal(mapped.column, 0); | ||||
mapped = consumer.originalPositionFor({ | ||||
line: 9, | ||||
column: 4 | ||||
}); | ||||
t.equal(mapped.line, 10); | ||||
t.equal(mapped.column, 0); | ||||
})); | ||||
transform.end(minified.code); | ||||
}); | ||||
test('retain input source map when file has no static-module use', function (t) { | ||||
t.plan(4); | ||||
var content = fs.readFileSync(__dirname + '/sourcemap/main.js', 'utf8'); | ||||
var minified = uglify.minify({ 'main.js': content }, { | ||||
output: { beautify: true }, | ||||
sourceMap: { | ||||
url: 'inline', | ||||
includeSources: true | ||||
} | ||||
}); | ||||
var transform = staticModule({ | ||||
not_sheetify: function () { return 'whatever'; } | ||||
}, { sourceMap: true, inputFilename: 'main.js' }); | ||||
transform.pipe(concat({ encoding: 'string' }, function (res) { | ||||
var consumer = new SourceMapConsumer(convertSourceMap.fromSource(res).toObject()); | ||||
var mapped = consumer.originalPositionFor({ | ||||
line: 7, | ||||
column: 0 | ||||
}); | ||||
t.equal(mapped.line, 8); | ||||
t.equal(mapped.column, 0); | ||||
mapped = consumer.originalPositionFor({ | ||||
line: 7, | ||||
column: 21 | ||||
}); | ||||
t.equal(mapped.line, 10); | ||||
t.equal(mapped.column, 0); | ||||
})); | ||||
transform.end(minified.code); | ||||
}); | ||||