207 lines
15 KiB
JavaScript
207 lines
15 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
exports.__esModule = true;
|
||
|
|
||
|
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
||
|
|
||
|
var _warning = require('./warning');
|
||
|
|
||
|
var _warning2 = _interopRequireDefault(_warning);
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||
|
|
||
|
/**
|
||
|
* Provides the result of the PostCSS transformations.
|
||
|
*
|
||
|
* A Result instance is returned by {@link LazyResult#then}
|
||
|
* or {@link Root#toResult} methods.
|
||
|
*
|
||
|
* @example
|
||
|
* postcss([cssnext]).process(css).then(function (result) {
|
||
|
* console.log(result.css);
|
||
|
* });
|
||
|
*
|
||
|
* @example
|
||
|
* var result2 = postcss.parse(css).toResult();
|
||
|
*/
|
||
|
var Result = function () {
|
||
|
|
||
|
/**
|
||
|
* @param {Processor} processor - processor used for this transformation.
|
||
|
* @param {Root} root - Root node after all transformations.
|
||
|
* @param {processOptions} opts - options from the {@link Processor#process}
|
||
|
* or {@link Root#toResult}
|
||
|
*/
|
||
|
function Result(processor, root, opts) {
|
||
|
_classCallCheck(this, Result);
|
||
|
|
||
|
/**
|
||
|
* @member {Processor} - The Processor instance used
|
||
|
* for this transformation.
|
||
|
*
|
||
|
* @example
|
||
|
* for ( let plugin of result.processor.plugins) {
|
||
|
* if ( plugin.postcssPlugin === 'postcss-bad' ) {
|
||
|
* throw 'postcss-good is incompatible with postcss-bad';
|
||
|
* }
|
||
|
* });
|
||
|
*/
|
||
|
this.processor = processor;
|
||
|
/**
|
||
|
* @member {Message[]} - Contains messages from plugins
|
||
|
* (e.g., warnings or custom messages).
|
||
|
* Each message should have type
|
||
|
* and plugin properties.
|
||
|
*
|
||
|
* @example
|
||
|
* postcss.plugin('postcss-min-browser', () => {
|
||
|
* return (root, result) => {
|
||
|
* var browsers = detectMinBrowsersByCanIUse(root);
|
||
|
* result.messages.push({
|
||
|
* type: 'min-browser',
|
||
|
* plugin: 'postcss-min-browser',
|
||
|
* browsers: browsers
|
||
|
* });
|
||
|
* };
|
||
|
* });
|
||
|
*/
|
||
|
this.messages = [];
|
||
|
/**
|
||
|
* @member {Root} - Root node after all transformations.
|
||
|
*
|
||
|
* @example
|
||
|
* root.toResult().root == root;
|
||
|
*/
|
||
|
this.root = root;
|
||
|
/**
|
||
|
* @member {processOptions} - Options from the {@link Processor#process}
|
||
|
* or {@link Root#toResult} call
|
||
|
* that produced this Result instance.
|
||
|
*
|
||
|
* @example
|
||
|
* root.toResult(opts).opts == opts;
|
||
|
*/
|
||
|
this.opts = opts;
|
||
|
/**
|
||
|
* @member {string} - A CSS string representing of {@link Result#root}.
|
||
|
*
|
||
|
* @example
|
||
|
* postcss.parse('a{}').toResult().css //=> "a{}"
|
||
|
*/
|
||
|
this.css = undefined;
|
||
|
/**
|
||
|
* @member {SourceMapGenerator} - An instance of `SourceMapGenerator`
|
||
|
* class from the `source-map` library,
|
||
|
* representing changes
|
||
|
* to the {@link Result#root} instance.
|
||
|
*
|
||
|
* @example
|
||
|
* result.map.toJSON() //=> { version: 3, file: 'a.css', … }
|
||
|
*
|
||
|
* @example
|
||
|
* if ( result.map ) {
|
||
|
* fs.writeFileSync(result.opts.to + '.map', result.map.toString());
|
||
|
* }
|
||
|
*/
|
||
|
this.map = undefined;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns for @{link Result#css} content.
|
||
|
*
|
||
|
* @example
|
||
|
* result + '' === result.css
|
||
|
*
|
||
|
* @return {string} string representing of {@link Result#root}
|
||
|
*/
|
||
|
|
||
|
|
||
|
Result.prototype.toString = function toString() {
|
||
|
return this.css;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Creates an instance of {@link Warning} and adds it
|
||
|
* to {@link Result#messages}.
|
||
|
*
|
||
|
* @param {string} text - warning message
|
||
|
* @param {Object} [opts] - warning options
|
||
|
* @param {Node} opts.node - CSS node that caused the warning
|
||
|
* @param {string} opts.word - word in CSS source that caused the warning
|
||
|
* @param {number} opts.index - index in CSS node string that caused
|
||
|
* the warning
|
||
|
* @param {string} opts.plugin - name of the plugin that created
|
||
|
* this warning. {@link Result#warn} fills
|
||
|
* this property automatically.
|
||
|
*
|
||
|
* @return {Warning} created warning
|
||
|
*/
|
||
|
|
||
|
|
||
|
Result.prototype.warn = function warn(text) {
|
||
|
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||
|
|
||
|
if (!opts.plugin) {
|
||
|
if (this.lastPlugin && this.lastPlugin.postcssPlugin) {
|
||
|
opts.plugin = this.lastPlugin.postcssPlugin;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var warning = new _warning2.default(text, opts);
|
||
|
this.messages.push(warning);
|
||
|
|
||
|
return warning;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Returns warnings from plugins. Filters {@link Warning} instances
|
||
|
* from {@link Result#messages}.
|
||
|
*
|
||
|
* @example
|
||
|
* result.warnings().forEach(warn => {
|
||
|
* console.warn(warn.toString());
|
||
|
* });
|
||
|
*
|
||
|
* @return {Warning[]} warnings from plugins
|
||
|
*/
|
||
|
|
||
|
|
||
|
Result.prototype.warnings = function warnings() {
|
||
|
return this.messages.filter(function (i) {
|
||
|
return i.type === 'warning';
|
||
|
});
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* An alias for the {@link Result#css} property.
|
||
|
* Use it with syntaxes that generate non-CSS output.
|
||
|
* @type {string}
|
||
|
*
|
||
|
* @example
|
||
|
* result.css === result.content;
|
||
|
*/
|
||
|
|
||
|
|
||
|
_createClass(Result, [{
|
||
|
key: 'content',
|
||
|
get: function get() {
|
||
|
return this.css;
|
||
|
}
|
||
|
}]);
|
||
|
|
||
|
return Result;
|
||
|
}();
|
||
|
|
||
|
exports.default = Result;
|
||
|
|
||
|
/**
|
||
|
* @typedef {object} Message
|
||
|
* @property {string} type - message type
|
||
|
* @property {string} plugin - source PostCSS plugin name
|
||
|
*/
|
||
|
|
||
|
module.exports = exports['default'];
|
||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3VsdC5lczYiXSwibmFtZXMiOlsiUmVzdWx0IiwicHJvY2Vzc29yIiwicm9vdCIsIm9wdHMiLCJtZXNzYWdlcyIsImNzcyIsInVuZGVmaW5lZCIsIm1hcCIsInRvU3RyaW5nIiwid2FybiIsInRleHQiLCJwbHVnaW4iLCJsYXN0UGx1Z2luIiwicG9zdGNzc1BsdWdpbiIsIndhcm5pbmciLCJwdXNoIiwid2FybmluZ3MiLCJmaWx0ZXIiLCJpIiwidHlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O0lBY01BLE07O0FBRUY7Ozs7OztBQU1BLGtCQUFZQyxTQUFaLEVBQXVCQyxJQUF2QixFQUE2QkMsSUFBN0IsRUFBbUM7QUFBQTs7QUFDL0I7Ozs7Ozs7Ozs7O0FBV0EsU0FBS0YsU0FBTCxHQUFpQkEsU0FBakI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQUtHLFFBQUwsR0FBZ0IsRUFBaEI7QUFDQTs7Ozs7O0FBTUEsU0FBS0YsSUFBTCxHQUFZQSxJQUFaO0FBQ0E7Ozs7Ozs7O0FBUUEsU0FBS0MsSUFBTCxHQUFZQSxJQUFaO0FBQ0E7Ozs7OztBQU1BLFNBQUtFLEdBQUwsR0FBV0MsU0FBWDtBQUNBOzs7Ozs7Ozs7Ozs7OztBQWNBLFNBQUtDLEdBQUwsR0FBV0QsU0FBWDtBQUNIOztBQUVEOzs7Ozs7Ozs7O21CQVFBRSxRLHVCQUFXO0FBQ1AsV0FBTyxLQUFLSCxHQUFaO0FBQ0gsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQWdCQUksSSxpQkFBS0MsSSxFQUFrQjtBQUFBLFFBQVpQLElBQVksdUVBQUwsRUFBSzs7QUFDbkIsUUFBSyxDQUFDQSxLQUFLUSxNQUFYLEVBQW9CO0FBQ2hCLFVBQUssS0FBS0MsVUFBTCxJQUFtQixLQUFLQSxVQUFMLENBQWdCQyxhQUF4QyxFQUF3RDtBQUNwRFYsYUFBS1EsTUFBTCxHQUFjLEtBQUtDLFVBQUwsQ0FBZ0JDLGFBQTlCO0FBQ0g7QUFDSjs7QUFFRCxRQUFJQyxVQUFVLHNCQUFZSixJQUFaLEVBQWtCUCxJQUFsQixDQUFkO0FBQ0EsU0FBS0MsUUFBTCxDQUFjVyxJQUFkLENBQW1CRCxPQUFuQjs7QUFFQSxXQUFPQSxPQUFQO0FBQ0gsRzs7QUFFRDs7Ozs7Ozs7Ozs7OzttQkFXQUUsUSx1QkFBVztBQUNQLFdBQU8sS0FBS1osUUFBTCxDQUFjYSxNQUFkLENBQXNCO0FBQUEsYUFBS0MsRUFBRUMsSUFBRixLQUFXLFNBQWhCO0FBQUEsS0FBdEIsQ0FBUDtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozt3QkFRYztBQUNWLGFBQU8sS0FBS2QsR0FBWjtBQUNIOzs7Ozs7a0JBSVVMLE07O0FBRWYiLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdhcm5pbmcgZnJvbSAnLi93YXJuaW5nJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgcmVzdWx0IG9mIHRoZSBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIFJlc3VsdCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufVxuICogb3Ige0BsaW5rIFJvb3QjdG9SZXN1bHR9IG1ldGhvZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcykudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gKiAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgcmVzdWx0MiA9IHBvc3Rjc3MucGFyc2UoY3NzKS50b1Jlc3VsdCgpO1xuICovXG5jbGFzcyBSZXN1bHQge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtQcm9jZXNzb3J9IHByb2Nlc3NvciAtIHByb2Nlc3NvciB1c2VkIGZvciB0aGlzIHRyYW5zZm9ybWF0aW9uLlxuICAgICAqIEBwYXJhbSB7Um9vdH0gICAgICByb290ICAgICAgLSBSb290IG5vZGUgYWZ0ZXIgYWxsIHRyYW5zZm9ybWF0aW9ucy5cbiAgICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBvcHRzIC0gb3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHtAbGluayBSb290I3RvUmVzdWx0fVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb2Nlc3Nvciwgcm9vdCwgb3B0cykge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7UHJvY2Vzc29yfSAtIFRoZSBQcm9jZXNzb3IgaW5zdGFuY2UgdXNlZFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgdHJhbnNmb3JtYXRpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGZvciAoIGxldCBwbHVnaW4gb2YgcmVzdWx0LnByb2Nlc3Nvci5wbHVnaW5zKSB7XG4gICAgICAgICAqICAgaWYgKCBwbHVnaW4ucG9zdGNzc1BsdWdpbiA9PT0gJ3Bvc3Rjc3MtYmFkJyApIHtcbiAgICAgICAgICogICAgIHRocm93ICdwb3N0Y3NzLWdvb2QgaXMgaW5jb21wYXRpYmxlIHdpdGggcG9zdGNzcy1iYWQnO1xuICAgICAgICAgKiAgIH1cbiAgICAgICAgICogfSk7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnByb2Nlc3NvciA9IHByb2Nlc3NvcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge01lc3NhZ2VbXX0gLSBDb250YWlucyBtZXNzYWdlcyBmcm9tIHBsdWdpbnNcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCB3YXJuaW5ncyBvciBjdXN0b20gbWVzc2FnZXMpLlxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBtZXNzYWdlIHNob3VsZCBoYXZlIHR5cGVcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIGFuZCBwbHVnaW4gcHJvcGVydGllcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtbWluLWJyb3dzZXInLCAoKSA9PiB7XG4gICAgICAgICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICAgICAgICogICAgIHZhciBicm93c2VycyA9IGRldGVjdE1pbkJyb3dzZXJzQnlDYW5JVXNlKHJvb3QpO1xuICAgICAgICAgKiAgICAgcmVzdWx0Lm1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgKiAgICAgICB0eXBlOiAgICAnbWluLWJyb3dzZXInLFxuICAgICAgICAgKiAgICAgICBwbHVnaW46ICAn
|