Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
test("Import npm packages", async t => {
const output = await file(path.resolve(__dirname, "fixtures/test01.frag"));
// Test sourcemaps
const lastLine = output.split("\n").pop();
t.assert(
/\/\/# sourceMappingURL=data:application\/json;charset=utf-8;base64,/.test(
lastLine
),
"contains sourceMaps of the file"
);
const sm = convert.fromComment(lastLine).toObject();
const consumer = await new sourceMap.SourceMapConsumer(sm);
const hasPos = (
line: number,
column: number,
expLine: number,
expCol: number
) => {
const op = gOP(output, { line, column }, consumer);
// console.log(line, column, op.line, op.column);
t.deepEqual(
{ line: op.line, column: op.column },
{ line: expLine, column: expCol }
);
};
// Line 12
.on('end', function () {
var sm = convert.fromSource(bundle);
var sources = sm.getProperty('sources')
.filter(function(source) {
// exclude browserify's prelude
return !/_prelude\.js$/.test(source);
});
t.equal(sources.length, 3, 'molds 3 sources')
t.ok(~sources.indexOf('js/main.js'), 'molds main.js relative to root')
t.ok(~sources.indexOf('js/foo.js'), 'molds foo.js relative to root')
t.ok(~sources.indexOf('js/wunder/bar.js'), 'molds wunder/bar.js relative to root')
});
});
end = function () {
if(self.opts.minify === false) {
this.queue(null)
return
}
var thisStream = this
, unminCode = buffs.join('')
, originalCode = false
, existingMap = convertSM.fromSource(unminCode)
, finish;
existingMap = existingMap ? existingMap.toObject() : false;
if(existingMap && existingMap.sourcesContent && existingMap.sourcesContent.length) {
originalCode = convertSM.removeComments(existingMap.sourcesContent[0]);
existingMap = JSON.stringify(existingMap);
}
// Only accept existing maps with sourcesContent
else {
existingMap = false;
}
finish = function (tempExistingMapFile, cleanupCallback) {
// Don't minify JSON!
if(file.match(/\.json$/)) {
try {
thisStream.queue(JSON.stringify(JSON.parse(unminCode)))
}
catch(e) {
console.error('failed to parse JSON in ' + file)
thisStream.queue(unminCode)
async load () {
const rawSource = this.sources.source || await readFile(this.path, 'utf8')
const rawSourceMap = this.sources.sourceMap ||
// if we find a source-map (either inline, or a .map file) we load
// both the transpiled and original source, both of which are used during
// the backflips we perform to remap absolute to relative positions.
convertSourceMap.fromSource(rawSource) || convertSourceMap.fromMapFileSource(rawSource, dirname(this.path))
if (rawSourceMap) {
if (rawSourceMap.sourcemap.sources.length > 1) {
console.warn('v8-to-istanbul: source-mappings from one to many files not yet supported')
this.source = new CovSource(rawSource, this.wrapperLength)
} else {
this._rewritePath(rawSourceMap)
this.sourceMap = await new SourceMapConsumer(rawSourceMap.sourcemap)
let originalRawSource
if (this.sources.originalSource) {
originalRawSource = this.sources.originalSource
} else {
originalRawSource = await readFile(this.path, 'utf8')
}
script = debugExpr + script;
}
// bail early if we don't have a path
if (!currentWrapFile || !useSourceMaps) return moduleWrap(script);
var sourceFile = path.relative(basedir, currentWrapFile).replace(/\\/g, '/');
var sourceFileName = path.basename(sourceFile);
var sourceFileDir = path.dirname(sourceFile);
var hasComment = convertSourceMap.commentRegex.test(script);
var hasMapFile = convertSourceMap.mapFileCommentRegex.test(script);
// if we have a map pointing to a file, inline it as base64
if (!hasComment && hasMapFile) {
try {
var sm = convertSourceMap.fromMapFileSource(original, sourceFileDir);
script = [
combineSourceMap.removeComments(script),
convertSourceMap.fromObject(sm.sourcemap).toComment()
].join('\n');
hasComment = true; // now we have base64 comment
} catch (err) {
// Don't attempt to handle source maps for this file,
// it is most likely a comment about source maps and not
// a *real* source map comment!
}
}
var wrapScript = moduleWrap(script);
// do not make any more alterations to the source maps
if (hasComment || hasMapFile) return wrapScript;
emitter.on('asset', function add (id, buff, meta = {}) {
assert(typeof id === 'string', 'pipeline: id should be type string')
assert(buff instanceof Buffer, 'pipeline: data should be type buffer')
if (meta.map) {
// create an asset for the source map
const mapAsset = add(id + '.map', meta.map, {
mime: 'application/json'
})
// add map comment to buffer
const map = sourcemap.generateMapFileComment(mapAsset.url, {
multiline: /\.css$/.test(id)
})
const src = buff.toString()
buff = Buffer.from(src.replace(/\n?$/, '\n' + map))
}
var asset = self.assets.get(id)
var hash = createHash(buff)
var base = state.base + '/'
if (!asset) {
asset = Object.create({ read, toJSON })
asset.label = label
self.assets.set(id, asset)
}
setSource(source) {
if (!source) {
this.fail('No sources received on stdin');
return;
}
this.source = source;
this.source_map = convert_source_map.fromSource(source);
if (!this.source_map) {
try {
this.source_map = convert_source_map.fromMapFileComment(source,
this.working_dir);
} catch (ignore) {
// It throws if there are no source maps
}
}
if (this.source_map) {
this.source_map = this.source_map.toObject();
this.source = convert_source_map.removeComments(source);
}
gzip(source, (err, buffer) => {
if (err) {
this.fail('gzip failure', err);
} else {
private async preprocess(dep: DepsInfo): Promise {
// Get sourcemaps created by pretransform
const rawMap = convert.fromSource(dep.source);
const consumer = rawMap
? await new sourceMap.SourceMapConsumer(rawMap.toObject())
: null;
if (consumer) {
dep.source = convert.removeComments(dep.source); // eslint-disable-line
}
const tokens = tokenize(dep.source);
const imports = [];
let exports = null;
depth(tokens);
scope(tokens);
// Note: tokens must be sorted by position
let lastLine = 1;
function writeSourceMaps(file, destPath, callback) {
var sourceMapFile;
var commentOpts = getCommentOptions(file.extname);
var comment;
if (destPath == null) {
// Encode source map into comment
comment = convert.fromObject(file.sourceMap).toComment(commentOpts);
} else {
var mapFile = path.join(destPath, file.relative) + '.map';
var sourceMapPath = path.join(file.base, mapFile);
// Create new sourcemap File
sourceMapFile = createSourceMapFile({
cwd: file.cwd,
base: file.base,
path: sourceMapPath,
content: file.sourceMap,
});
var sourcemapLocation = path.relative(file.dirname, sourceMapPath);
sourcemapLocation = normalizePath(sourcemapLocation);
{
enter: empowerAssert.enter
},
espower.createVisitor(jsAst, espowerOptions)
]));
var escodegenOutput = escodegen.generate(modifiedAst, escodegenOptions);
if (inMap) {
file.contents = new Buffer(escodegenOutput.code);
var outMap = convert.fromJSON(escodegenOutput.map.toString());
outMap.setProperty('sources', inMap.sources);
outMap.setProperty('sourcesContent', inMap.sourcesContent);
var reMap;
if (inMap.mappings === '') {
applySourceMap(file, outMap.toJSON());
reMap = convert.fromObject(file.sourceMap);
} else {
reMap = convert.fromObject(mergeSourceMap(inMap, outMap.toJSON()));
}
reMap.setProperty('sources', inMap.sources);
reMap.setProperty('sourcesContent', inMap.sourcesContent);
// do not set sourceMapRoot to keep paths relative until the end of chain
// reMap.setProperty('sourceRoot', file.base);
file.sourceMap = reMap.toObject();
} else {
file.contents = new Buffer(escodegenOutput);
}
}