This commit is contained in:
Simon Priet
2021-09-05 22:53:58 +02:00
commit 9e2991e668
17888 changed files with 1263126 additions and 0 deletions

View File

@@ -0,0 +1,342 @@
'use strict';
/*jshint asi: true*/
var test = require('tap').test
var generator = require('..');
var foo = '' + function foo () {
var hello = 'hello';
var world = 'world';
console.log('%s %s', hello, world);
}
var bar = '' + function bar () {
console.log('yes?');
}
function decode(base64) {
return new Buffer(base64, 'base64').toString();
}
function inspect(obj, depth) {
console.error(require('util').inspect(obj, false, depth || 5, true));
}
test('generated mappings', function (t) {
t.test('one file no offset', function (t) {
var gen = generator()
.addGeneratedMappings('foo.js', foo)
t.deepEqual(
gen._mappings()
, [ { generatedLine: 1,
generatedColumn: 0,
originalLine: 1,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 2,
generatedColumn: 0,
originalLine: 2,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 3,
generatedColumn: 0,
originalLine: 3,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 4,
generatedColumn: 0,
originalLine: 4,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 5,
generatedColumn: 0,
originalLine: 5,
originalColumn: 0,
source: 'foo.js',
name: null } ]
, 'generates correct mappings'
)
t.deepEqual(
JSON.parse(decode(gen.base64Encode()))
, {"version":3,"file":"","sources":["foo.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA","sourceRoot":""}
, 'encodes generated mappings'
)
t.equal(
gen.inlineMappingUrl()
, '//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIifQ=='
, 'returns correct inline mapping url'
)
t.end()
})
t.test('two files no offset', function (t) {
var gen = generator()
.addGeneratedMappings('foo.js', foo)
.addGeneratedMappings('bar.js', bar)
t.deepEqual(
gen._mappings()
, [ { generatedLine: 1,
generatedColumn: 0,
originalLine: 1,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 2,
generatedColumn: 0,
originalLine: 2,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 3,
generatedColumn: 0,
originalLine: 3,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 4,
generatedColumn: 0,
originalLine: 4,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 5,
generatedColumn: 0,
originalLine: 5,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 1,
generatedColumn: 0,
originalLine: 1,
originalColumn: 0,
source: 'bar.js',
name: null },
{ generatedLine: 2,
generatedColumn: 0,
originalLine: 2,
originalColumn: 0,
source: 'bar.js',
name: null },
{ generatedLine: 3,
generatedColumn: 0,
originalLine: 3,
originalColumn: 0,
source: 'bar.js',
name: null } ]
, 'generates correct mappings'
)
t.deepEqual(
JSON.parse(decode(gen.base64Encode()))
, {"version":3,"file":"","sources":["foo.js","bar.js"],"names":[],"mappings":"ACAA,ADAA;ACCA,ADAA;ACCA,ADAA;AACA;AACA","sourceRoot": ""}
, 'encodes generated mappings'
)
t.equal(
gen.inlineMappingUrl()
, '//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvby5qcyIsImJhci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUNBQSxBREFBO0FDQ0EsQURBQTtBQ0NBLEFEQUE7QUFDQTtBQUNBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIifQ=='
, 'returns correct inline mapping url'
)
t.end()
})
t.test('one line source', function (t) {
var gen = generator().addGeneratedMappings('one-liner.js', 'console.log("line one");')
t.deepEqual(
gen._mappings()
, [ { generatedLine: 1,
generatedColumn: 0,
originalLine: 1,
originalColumn: 0,
source: 'one-liner.js',
name: null } ]
, 'generates correct mappings'
)
t.end()
})
t.test('with offset', function (t) {
var gen = generator()
.addGeneratedMappings('foo.js', foo, { line: 20 })
.addGeneratedMappings('bar.js', bar, { line: 23, column: 22 })
t.deepEqual(
gen._mappings()
, [ { generatedLine: 21,
generatedColumn: 0,
originalLine: 1,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 22,
generatedColumn: 0,
originalLine: 2,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 23,
generatedColumn: 0,
originalLine: 3,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 24,
generatedColumn: 0,
originalLine: 4,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 25,
generatedColumn: 0,
originalLine: 5,
originalColumn: 0,
source: 'foo.js',
name: null },
{ generatedLine: 24,
generatedColumn: 22,
originalLine: 1,
originalColumn: 0,
source: 'bar.js',
name: null },
{ generatedLine: 25,
generatedColumn: 22,
originalLine: 2,
originalColumn: 0,
source: 'bar.js',
name: null },
{ generatedLine: 26,
generatedColumn: 22,
originalLine: 3,
originalColumn: 0,
source: 'bar.js',
name: null } ]
, 'generates correct mappings'
)
t.deepEqual(
JSON.parse(decode(gen.base64Encode()))
, {"version":3,"file":"","sources":["foo.js","bar.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA,sBCHA;ADIA,sBCHA;sBACA", "sourceRoot": ""}
, 'encodes generated mappings with offset'
)
t.end()
})
})
test('given mappings, with one having no original', function (t) {
t.test('no offset', function (t) {
var gen = generator()
.addMappings('foo.js', [{ original: { line: 2, column: 3 } , generated: { line: 5, column: 10 } }])
// This addresses an edgecase in which a transpiler generates mappings but doesn't include the original position.
// If we set source to sourceFile (as usual) in that case, the mappings are considered invalid by the source-map module's
// SourceMapGenerator. Keeping source undefined fixes this problem.
// Raised issue: https://github.com/thlorenz/inline-source-map/issues/2
// Validate function: https://github.com/mozilla/source-map/blob/a3372ea78e662582087dd25ebda999c06424e047/lib/source-map/source-map-generator.js#L232
.addMappings('bar.js', [
{ original: { line: 6, column: 0 } , generated: { line: 7, column: 20 } }
, { generated: { line: 8, column: 30 } }
])
t.deepEqual(
gen._mappings()
, [ { generatedLine: 5,
generatedColumn: 10,
originalLine: 2,
originalColumn: 3,
source: 'foo.js',
name: null },
{ generatedLine: 7,
generatedColumn: 20,
originalLine: 6,
originalColumn: 0,
source: 'bar.js',
name: null },
{ generatedLine: 8,
generatedColumn: 30,
originalLine: false,
originalColumn: false,
source: undefined,
name: null } ]
, 'adds correct mappings'
)
t.deepEqual(
JSON.parse(decode(gen.base64Encode()))
, {"version":3,"file":"","sources":["foo.js","bar.js"],"names":[],"mappings":";;;;UACG;;oBCIH;8B", sourceRoot: ""}
, 'encodes generated mappings'
)
t.equal(
gen.inlineMappingUrl()
, '//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvby5qcyIsImJhci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O1VBQ0c7O29CQ0lIOzhCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIifQ=='
, 'returns correct inline mapping url'
)
t.end()
})
t.test('with offset', function (t) {
var gen = generator()
.addMappings('foo.js', [{ original: { line: 2, column: 3 } , generated: { line: 5, column: 10 } }], { line: 5 })
.addMappings('bar.js', [{ original: { line: 6, column: 0 } , generated: { line: 7, column: 20 } }, { generated: { line: 8, column: 30 } }], { line: 9, column: 3 })
t.deepEqual(
gen._mappings()
, [ { generatedLine: 10,
generatedColumn: 10,
originalLine: 2,
originalColumn: 3,
source: 'foo.js',
name: null },
{ generatedLine: 16,
generatedColumn: 23,
originalLine: 6,
originalColumn: 0,
source: 'bar.js',
name: null },
{ generatedLine: 17,
generatedColumn: 33,
originalLine: false,
originalColumn: false,
source: undefined,
name: null } ]
, 'adds correct mappings'
)
t.deepEqual(
JSON.parse(decode(gen.base64Encode()))
, {"version":3,"file":"","sources":["foo.js","bar.js"],"names":[],"mappings":";;;;;;;;;UACG;;;;;;uBCIH;iC", sourceRoot: ""}
, 'encodes mappings with offset'
)
t.end()
})
});
test('inline mapping url with charset opt', function(t){
t.test('set inline mapping url charset to gbk', function(t){
var gen = generator({charset: 'gbk'})
.addGeneratedMappings('foo.js', foo);
t.equal(
gen.inlineMappingUrl(),
'//# sourceMappingURL=data:application/json;charset=gbk;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIifQ==',
'charset set to gbk'
);
t.end();
});
t.test('default charset should be utf-8', function(t){
var gen = generator()
.addGeneratedMappings('foo.js', foo);
t.equal(
gen.inlineMappingUrl(),
'//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIifQ==',
'charset default to utf-8'
);
t.end();
});
});

143
node_modules/inline-source-map/test/source-content.js generated vendored Normal file
View File

@@ -0,0 +1,143 @@
'use strict';
/*jshint asi: true*/
var test = require('tap').test
var generator = require('..');
var foo = '' + function foo () {
var hello = 'hello';
var world = 'world';
console.log('%s %s', hello, world);
}
var bar = '' + function bar () {
console.log('yes?');
}
function decode(base64) {
return new Buffer(base64, 'base64').toString();
}
function inspect(obj, depth) {
console.log(require('util').inspect(obj, false, depth || 5, true));
}
test('generated mappings', function (t) {
t.test('one file with source content', function (t) {
var gen = generator()
.addGeneratedMappings('foo.js', foo)
.addSourceContent('foo.js', foo)
t.deepEqual(
gen.toJSON()
, { "version": 3,
"file": "",
"sources": [
"foo.js"
],
"names": [],
"mappings": "AAAA;AACA;AACA;AACA;AACA",
"sourceRoot": "",
"sourcesContent": [
"function foo() {\n var hello = 'hello';\n var world = 'world';\n console.log('%s %s', hello, world);\n}"
],
}
, 'includes source content'
)
t.equal(
decode(gen.base64Encode())
, '{"version":3,"sources":["foo.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA","file":"","sourceRoot":"","sourcesContent":["function foo() {\\n var hello = \'hello\';\\n var world = \'world\';\\n console.log(\'%s %s\', hello, world);\\n}"]}'
, 'encodes generated mappings including source content'
)
t.equal(
gen.inlineMappingUrl()
, '//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBmb28oKSB7XG4gIHZhciBoZWxsbyA9ICdoZWxsbyc7XG4gIHZhciB3b3JsZCA9ICd3b3JsZCc7XG4gIGNvbnNvbGUubG9nKCclcyAlcycsIGhlbGxvLCB3b3JsZCk7XG59Il19'
, 'returns correct inline mapping url including source content'
)
t.end()
})
t.test('two files with source content', function (t) {
var gen = generator()
.addGeneratedMappings('foo.js', foo)
.addSourceContent('foo.js', foo)
.addGeneratedMappings('bar.js', bar)
.addSourceContent('bar.js', bar)
t.deepEqual(
gen.toJSON()
, { "version": 3,
"file": "",
"sources": [
"foo.js",
"bar.js"
],
"names": [],
"mappings": "ACAA,ADAA;ACCA,ADAA;ACCA,ADAA;AACA;AACA",
"sourceRoot": "",
"sourcesContent": [
"function foo() {\n var hello = 'hello';\n var world = 'world';\n console.log('%s %s', hello, world);\n}",
"function bar() {\n console.log('yes?');\n}"
],
}
, 'includes source content for both files'
)
t.deepEqual(
decode(gen.base64Encode())
, '{"version":3,"sources":["foo.js","bar.js"],"names":[],"mappings":"ACAA,ADAA;ACCA,ADAA;ACCA,ADAA;AACA;AACA","file":"","sourceRoot":"","sourcesContent":["function foo() {\\n var hello = \'hello\';\\n var world = \'world\';\\n console.log(\'%s %s\', hello, world);\\n}","function bar() {\\n console.log(\'yes?\');\\n}"]}'
, 'encodes generated mappings including source content'
)
t.equal(
gen.inlineMappingUrl()
, '//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvby5qcyIsImJhci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUNBQSxBREFBO0FDQ0EsQURBQTtBQ0NBLEFEQUE7QUFDQTtBQUNBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBmb28oKSB7XG4gIHZhciBoZWxsbyA9ICdoZWxsbyc7XG4gIHZhciB3b3JsZCA9ICd3b3JsZCc7XG4gIGNvbnNvbGUubG9nKCclcyAlcycsIGhlbGxvLCB3b3JsZCk7XG59IiwiZnVuY3Rpb24gYmFyKCkge1xuICBjb25zb2xlLmxvZygneWVzPycpO1xufSJdfQ=='
, 'returns correct inline mapping url including source content'
)
t.end()
})
t.test('two files, only one with source content', function (t) {
var gen = generator()
.addGeneratedMappings('foo.js', foo)
.addGeneratedMappings('bar.js', bar)
.addSourceContent('bar.js', bar)
t.deepEqual(
gen.toJSON()
, { "version": 3,
"file": "",
"sources": [
"foo.js",
"bar.js"
],
"names": [],
"mappings": "ACAA,ADAA;ACCA,ADAA;ACCA,ADAA;AACA;AACA",
"sourcesContent": [ null, "function bar() {\n console.log('yes?');\n}" ],
"sourceRoot": ""
}
, 'includes source content for the file with source content and [null] for the other file'
)
t.deepEqual(
decode(gen.base64Encode())
, '{"version":3,"sources":["foo.js","bar.js"],"names":[],"mappings":"ACAA,ADAA;ACCA,ADAA;ACCA,ADAA;AACA;AACA","file":"","sourceRoot":"","sourcesContent":[null,"function bar() {\\n console.log(\'yes?\');\\n}"]}'
, 'encodes generated mappings including source content'
)
t.equal(
gen.inlineMappingUrl()
, '//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvby5qcyIsImJhci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUNBQSxBREFBO0FDQ0EsQURBQTtBQ0NBLEFEQUE7QUFDQTtBQUNBIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImZ1bmN0aW9uIGJhcigpIHtcbiAgY29uc29sZS5sb2coJ3llcz8nKTtcbn0iXX0='
, 'returns correct inline mapping url including source content'
)
t.end()
})
t.test('one file with empty source', function (t) {
var gen = generator()
.addGeneratedMappings('empty.js', '')
.addSourceContent('empty.js', '')
t.deepEqual(gen.toJSON()["sourcesContent"], [""])
t.end()
});
})