diff options
Diffstat (limited to 'node_modules/postcss-reporter')
| -rw-r--r-- | node_modules/postcss-reporter/LICENSE | 22 | ||||
| -rw-r--r-- | node_modules/postcss-reporter/README.md | 12 | ||||
| -rw-r--r-- | node_modules/postcss-reporter/index.js | 4 | ||||
| -rw-r--r-- | node_modules/postcss-reporter/lib/formatter.js | 95 | ||||
| -rw-r--r-- | node_modules/postcss-reporter/lib/reporter.js | 101 | ||||
| -rw-r--r-- | node_modules/postcss-reporter/lib/util.js | 19 | ||||
| -rw-r--r-- | node_modules/postcss-reporter/package.json | 31 |
7 files changed, 284 insertions, 0 deletions
diff --git a/node_modules/postcss-reporter/LICENSE b/node_modules/postcss-reporter/LICENSE new file mode 100644 index 0000000..6d347c0 --- /dev/null +++ b/node_modules/postcss-reporter/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 David Clark + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/node_modules/postcss-reporter/README.md b/node_modules/postcss-reporter/README.md new file mode 100644 index 0000000..ca6c43b --- /dev/null +++ b/node_modules/postcss-reporter/README.md @@ -0,0 +1,12 @@ +# postcss-reporter + +A PostCSS plugin to `console.log()` the messages (warnings, etc.) registered by other PostCSS plugins. + +--- + +**SEEKING A NEW MAINTAINER!** Interested in contributing to the ecosystem of PostCSS and Stylelint? Please open an issue if you'd like to take over maintenance of this package. + +--- + +## Docs +Read **[full docs](https://github.com/postcss/postcss-reporter#readme)** on GitHub. diff --git a/node_modules/postcss-reporter/index.js b/node_modules/postcss-reporter/index.js new file mode 100644 index 0000000..01116aa --- /dev/null +++ b/node_modules/postcss-reporter/index.js @@ -0,0 +1,4 @@ +var reporter = require('./lib/reporter'); + +module.exports = reporter; +module.exports.postcss = true; diff --git a/node_modules/postcss-reporter/lib/formatter.js b/node_modules/postcss-reporter/lib/formatter.js new file mode 100644 index 0000000..7358cc6 --- /dev/null +++ b/node_modules/postcss-reporter/lib/formatter.js @@ -0,0 +1,95 @@ +var pico = require('picocolors'); +var path = require('path'); +var firstBy = require('thenby'); +var util = require('./util'); + +var supportsLargeCharset = + process.platform !== 'win32' || + process.env.CI || + process.env.TERM === 'xterm-256color'; +var warningSymbol = supportsLargeCharset ? '⚠' : '!!'; + +function createSortFunction(positionless, sortByPosition) { + var positionValue = 0 + + if (positionless === 'any') { positionValue = 1; } + if (positionless === 'first') { positionValue = 2; } + if (positionless === 'last') { positionValue = 0; } + + var sortFunction = firstBy((m) => { + if (!m.line) return 1; + return positionValue; + }) + + if (sortByPosition) { + sortFunction = sortFunction.thenBy('line').thenBy('column'); + } + + return sortFunction; +} + +module.exports = function (opts) { + var options = opts || {}; + var sortByPosition = + typeof options.sortByPosition !== 'undefined' + ? options.sortByPosition + : true; + var positionless = options.positionless || 'first'; + + var sortFunction = createSortFunction(positionless, sortByPosition); + + return function (input) { + var messages = input.messages.filter(function (message) { + return typeof message.text === 'string'; + }); + var source = input.source; + + if (!messages.length) return ''; + + var orderedMessages = messages.sort(sortFunction); + + var output = '\n'; + + if (source) { + output += pico.bold(pico.underline(logFrom(source))) + '\n'; + } + + orderedMessages.forEach(function (w) { + output += messageToString(w) + '\n'; + }); + + return output; + + function messageToString(message) { + var location = util.getLocation(message); + var str = ''; + + if (location.line) { + str += pico.bold(location.line); + } + + if (location.column) { + str += pico.bold(':' + location.column); + } + + if (location.line || location.column) { + str += '\t'; + } + + if (!options.noIcon && message.type === 'warning') { + str += pico.yellow(warningSymbol + ' '); + } + + str += message.text; + if (!options.noPlugin) { + str += pico.yellow(' [' + message.plugin + ']'); + } + return str; + } + + function logFrom(fromValue) { + if (fromValue.charAt(0) === '<') return fromValue; + return path.relative(process.cwd(), fromValue).split(path.sep).join('/'); + } + }; +}; diff --git a/node_modules/postcss-reporter/lib/reporter.js b/node_modules/postcss-reporter/lib/reporter.js new file mode 100644 index 0000000..71872a9 --- /dev/null +++ b/node_modules/postcss-reporter/lib/reporter.js @@ -0,0 +1,101 @@ +var defaultFormatter = require('./formatter'); +var pico = require('picocolors'); +var util = require('./util'); + +module.exports = function (opts = {}) { + var formatter = + opts.formatter || + defaultFormatter({ + noIcon: opts.noIcon, + noPlugin: opts.noPlugin, + }); + + var pluginFilter; + if (!opts.plugins) { + // Every plugin + pluginFilter = function () { + return true; + }; + } else if ( + opts.plugins.every(function (plugin) { + return plugin[0] === '!'; + }) + ) { + // Deny list + pluginFilter = function (message) { + return opts.plugins.indexOf('!' + message.plugin) === -1; + }; + } else { + // Allow list + pluginFilter = function (message) { + return opts.plugins.indexOf(message.plugin) !== -1; + }; + } + + var messageFilter = opts.filter || ((message) => message.type === 'warning'); + + return { + postcssPlugin: 'postcss-reporter', + OnceExit(css, { result }) { + var messagesToLog = result.messages + .filter(pluginFilter) + .filter(messageFilter); + + var resultSource = !result.root.source + ? '' + : result.root.source.input.file || result.root.source.input.id; + + var sourceGroupedMessages = messagesToLog.reduce((grouped, message) => { + const key = util.getLocation(message).file || resultSource; + + if (!grouped.hasOwnProperty(key)) { + grouped[key] = []; + } + + grouped[key].push(message); + + return grouped; + }, {}); + + var report = ''; + for (const source in sourceGroupedMessages) { + if (sourceGroupedMessages.hasOwnProperty(source)) { + report += formatter({ + messages: sourceGroupedMessages[source], + source: source, + }); + } + } + + if (opts.clearReportedMessages) { + result.messages = result.messages.filter(message => !messagesToLog.includes(message)); + } + + if (opts.clearAllMessages) { + var messagesToClear = result.messages.filter(pluginFilter); + result.messages = result.messages.filter(message => !messagesToClear.includes(message)); + } + + if (!report) return; + + console.log(report); + + if (opts.throwError && shouldThrowError()) { + throw new Error( + pico.red( + pico.bold('\n** postcss-reporter: warnings or errors were found **') + ) + ); + } + + function shouldThrowError() { + return ( + messagesToLog.length && + messagesToLog.some((message) => { + return message.type === 'warning' || message.type === 'error'; + }) + ); + } + }, + }; +}; diff --git a/node_modules/postcss-reporter/lib/util.js b/node_modules/postcss-reporter/lib/util.js new file mode 100644 index 0000000..094b3ac --- /dev/null +++ b/node_modules/postcss-reporter/lib/util.js @@ -0,0 +1,19 @@ +exports.getLocation = function (message) { + var messageNode = message.node; + + var location = { + line: message.line, + column: message.column, + }; + + var messageInput = messageNode && messageNode.source && messageNode.source.input; + + if (!messageInput) return location; + + var originLocation = + messageInput.origin && messageInput.origin(message.line, message.column); + if (originLocation) return originLocation; + + location.file = messageInput.file || messageInput.id; + return location; +}; diff --git a/node_modules/postcss-reporter/package.json b/node_modules/postcss-reporter/package.json new file mode 100644 index 0000000..15a9867 --- /dev/null +++ b/node_modules/postcss-reporter/package.json @@ -0,0 +1,31 @@ +{ + "name": "postcss-reporter", + "version": "7.0.5", + "description": "Log PostCSS messages in the console", + "main": "index.js", + "files": [ + "index.js", + "lib" + ], + "engines": { + "node": ">=10" + }, + "repository": "postcss/postcss-reporter", + "author": { + "name": "David Clark", + "email": "david.dave.clark@gmail.com", + "url": "https://davidtheclark.com" + }, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + }, + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + } +} |