Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
customTags: options.tags,
reporter: options.reporter,
withInlineFiles: options.withInlineFiles
});
todos = todos.concat(todo);
});
if (options.console) {
output = leasot.reporter(todos, { reporter: 'table', spacing: 2 });
if (options.relativeFilePath) {
output = relativePath(output);
}
console.log(output + "\n"); // eslint-disable-line
}
output = leasot.reporter(todos, { reporter: options.reporter, spacing: 2 });
if (output.length > 0) {
let outputFilename = options.filename || '';
if (outputFilename.length === 0) {
outputFilename =
options.reporter === 'markdown'
? 'TODO.md'
: 'todo.' + options.reporter;
if (options.reporter === 'table') {
outputFilename = 'todo.txt';
}
}
if (!options.suppressFileOutput) {
if (options.relativeFilePath) {
output = relativePath(output);
}
}
const todo = leasot.parse({
ext: path.extname(file),
content: fs.readFileSync(file, 'utf8'),
fileName: file,
customTags: options.tags,
reporter: options.reporter,
withInlineFiles: options.withInlineFiles
});
todos = todos.concat(todo);
});
if (options.console) {
output = leasot.reporter(todos, { reporter: 'table', spacing: 2 });
if (options.relativeFilePath) {
output = relativePath(output);
}
console.log(output + "\n"); // eslint-disable-line
}
output = leasot.reporter(todos, { reporter: options.reporter, spacing: 2 });
if (output.length > 0) {
let outputFilename = options.filename || '';
if (outputFilename.length === 0) {
outputFilename =
options.reporter === 'markdown'
? 'TODO.md'
: 'todo.' + options.reporter;
if (options.reporter === 'table') {
testFiles.forEach(file => {
// skip source files from node_modules
// https://github.com/mikeerickson/todo-webpack-plugin/issues/21
if (file.match(/node_modules/g)) {
return;
}
if (options.skipUnsupported) {
if (!leasot.isExtSupported(path.extname(file))) {
return;
}
}
const todo = leasot.parse({
ext: path.extname(file),
content: fs.readFileSync(file, 'utf8'),
fileName: file,
customTags: options.tags,
reporter: options.reporter,
withInlineFiles: options.withInlineFiles
});
todos = todos.concat(todo);
});
testFiles.forEach(file => {
// skip source files from node_modules
// https://github.com/mikeerickson/todo-webpack-plugin/issues/21
if (file.match(/node_modules/g)) {
return;
}
if (options.skipUnsupported) {
if (!leasot.isExtSupported(path.extname(file))) {
return;
}
}
const todo = leasot.parse({
ext: path.extname(file),
content: fs.readFileSync(file, 'utf8'),
fileName: file,
customTags: options.tags,
reporter: options.reporter,
withInlineFiles: options.withInlineFiles
});
todos = todos.concat(todo);
});
return through.obj(function(file, enc, cb) {
if (file.isNull()) {
return cb(null, file);
}
if (file.isStream()) {
return cb(new PluginError(pluginName, 'Streaming not supported'));
}
// replace contents with requested reporter contents
if (file.todos && file.todos.length) {
const newContents = leasot.report(file.todos, reporter, reportOptions);
if (fileName) {
file.path = path.join(file.base, fileName);
}
file.contents = Buffer.from(newContents);
}
cb(null, file);
});
};
function reportTodos(cb) {
if (!firstFile) {
return cb();
}
const reporterContents = leasot.report(comments, reporter, reportOptions);
const todoFile = new Vinyl({
base: firstFile.base,
contents: Buffer.from(reporterContents),
cwd: firstFile.cwd,
path: path.join(firstFile.base, fileName),
});
// also pass along comments object for future reporters
todoFile.todos = comments;
cb(null, todoFile);
}
);
//check if parser for filetype exists
if (!leasot.isExtensionSupported(ext)) {
if (!skipUnsupported) {
const msg = `File: ${file.path} with extension ${colors.red(ext)} is not supported`;
return cb(new PluginError(pluginName, msg));
}
if (verbose) {
const msg = `Skipping file ${file.path} with extension ${colors.red(ext)} as it is unsupported`;
fancyLog(msg);
}
return cb();
}
const filePath = absolute ? file.path : (file.path && file.relative) || file.path;
const parsedComments = leasot.parse(file.contents.toString(), {
associateParser: parseOptions.associateParser,
customParsers: parseOptions.customParsers,
customTags: parseOptions.customTags,
extension: ext,
filename: filePath,
withInlineFiles: parseOptions.withInlineFiles,
});
if (verbose) {
logCommentsToConsole(parsedComments);
}
comments.push(...parsedComments);
cb();
},
function reportTodos(cb) {
processString(content, relativePath) {
if (this.enabled) {
const fileExtension = path.extname(relativePath);
if (leasot.isExtSupported(fileExtension)) {
this._markers.push(leasot.parse({
ext: fileExtension,
content: content,
fileName: relativePath,
customTags: this.kinds
}));
} else {
this._exceptions.push(fileExtension);
}
}
return content;
}
processString(content, relativePath) {
if (this.enabled) {
const fileExtension = path.extname(relativePath);
if (leasot.isExtSupported(fileExtension)) {
this._markers.push(leasot.parse({
ext: fileExtension,
content: content,
fileName: relativePath,
customTags: this.kinds
}));
} else {
this._exceptions.push(fileExtension);
}
}
return content;
}
if (file.isNull()) {
cb(null, file);
return;
}
if (file.isStream()) {
cb(new PluginError(pluginName, 'Streaming not supported'));
return;
}
firstFile = firstFile || file;
//get extension - assume .js as default
const ext = path.extname(file.path) || '.js';
//check if parser for filetype exists
if (!leasot.isExtensionSupported(ext)) {
if (!skipUnsupported) {
const msg = `File: ${file.path} with extension ${colors.red(ext)} is not supported`;
return cb(new PluginError(pluginName, msg));
}
if (verbose) {
const msg = `Skipping file ${file.path} with extension ${colors.red(ext)} as it is unsupported`;
fancyLog(msg);
}
return cb();
}
const filePath = absolute ? file.path : (file.path && file.relative) || file.path;
const parsedComments = leasot.parse(file.contents.toString(), {
associateParser: parseOptions.associateParser,
customParsers: parseOptions.customParsers,
customTags: parseOptions.customTags,