66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
var File = require('vinyl');
|
|
|
|
var helpers = require('./lib/helpers');
|
|
|
|
var PLUGIN_NAME = 'vinyl-sourcemap';
|
|
|
|
function add(file, callback) {
|
|
|
|
// Bail early an error if the file argument is not a Vinyl file
|
|
if (!File.isVinyl(file)) {
|
|
return callback(new Error(PLUGIN_NAME + '-add: Not a vinyl file'));
|
|
}
|
|
|
|
// Bail early with an error if file has streaming contents
|
|
if (file.isStream()) {
|
|
return callback(new Error(PLUGIN_NAME + '-add: Streaming not supported'));
|
|
}
|
|
|
|
// Bail early successfully if file is null or already has a sourcemap
|
|
if (file.isNull() || file.sourceMap) {
|
|
return callback(null, file);
|
|
}
|
|
|
|
var state = {
|
|
path: '', // Root path for the sources in the map
|
|
map: null,
|
|
content: file.contents.toString(),
|
|
// TODO: handle this?
|
|
preExistingComment: null,
|
|
};
|
|
|
|
helpers.addSourceMaps(file, state, callback);
|
|
}
|
|
|
|
function write(file, destPath, callback) {
|
|
|
|
// Check if options or a callback are passed as second argument
|
|
if (typeof destPath === 'function') {
|
|
callback = destPath;
|
|
destPath = undefined;
|
|
}
|
|
|
|
// Bail early with an error if the file argument is not a Vinyl file
|
|
if (!File.isVinyl(file)) {
|
|
return callback(new Error(PLUGIN_NAME + '-write: Not a vinyl file'));
|
|
}
|
|
|
|
// Bail early with an error if file has streaming contents
|
|
if (file.isStream()) {
|
|
return callback(new Error(PLUGIN_NAME + '-write: Streaming not supported'));
|
|
}
|
|
|
|
// Bail early successfully if file is null or doesn't have sourcemap
|
|
if (file.isNull() || !file.sourceMap) {
|
|
return callback(null, file);
|
|
}
|
|
|
|
helpers.writeSourceMaps(file, destPath, callback);
|
|
}
|
|
|
|
module.exports = {
|
|
add: add,
|
|
write: write,
|
|
};
|