| '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, |
| }; |