293 lines
19 KiB
JavaScript
293 lines
19 KiB
JavaScript
|
'use strict';
|
|||
|
|
|||
|
exports.__esModule = true;
|
|||
|
|
|||
|
var _declaration = require('./declaration');
|
|||
|
|
|||
|
var _declaration2 = _interopRequireDefault(_declaration);
|
|||
|
|
|||
|
var _processor = require('./processor');
|
|||
|
|
|||
|
var _processor2 = _interopRequireDefault(_processor);
|
|||
|
|
|||
|
var _stringify = require('./stringify');
|
|||
|
|
|||
|
var _stringify2 = _interopRequireDefault(_stringify);
|
|||
|
|
|||
|
var _comment = require('./comment');
|
|||
|
|
|||
|
var _comment2 = _interopRequireDefault(_comment);
|
|||
|
|
|||
|
var _atRule = require('./at-rule');
|
|||
|
|
|||
|
var _atRule2 = _interopRequireDefault(_atRule);
|
|||
|
|
|||
|
var _vendor = require('./vendor');
|
|||
|
|
|||
|
var _vendor2 = _interopRequireDefault(_vendor);
|
|||
|
|
|||
|
var _parse = require('./parse');
|
|||
|
|
|||
|
var _parse2 = _interopRequireDefault(_parse);
|
|||
|
|
|||
|
var _list = require('./list');
|
|||
|
|
|||
|
var _list2 = _interopRequireDefault(_list);
|
|||
|
|
|||
|
var _rule = require('./rule');
|
|||
|
|
|||
|
var _rule2 = _interopRequireDefault(_rule);
|
|||
|
|
|||
|
var _root = require('./root');
|
|||
|
|
|||
|
var _root2 = _interopRequireDefault(_root);
|
|||
|
|
|||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|||
|
|
|||
|
/**
|
|||
|
* Create a new {@link Processor} instance that will apply `plugins`
|
|||
|
* as CSS processors.
|
|||
|
*
|
|||
|
* @param {Array.<Plugin|pluginFunction>|Processor} plugins - PostCSS
|
|||
|
* plugins. See {@link Processor#use} for plugin format.
|
|||
|
*
|
|||
|
* @return {Processor} Processor to process multiple CSS
|
|||
|
*
|
|||
|
* @example
|
|||
|
* import postcss from 'postcss';
|
|||
|
*
|
|||
|
* postcss(plugins).process(css, { from, to }).then(result => {
|
|||
|
* console.log(result.css);
|
|||
|
* });
|
|||
|
*
|
|||
|
* @namespace postcss
|
|||
|
*/
|
|||
|
function postcss() {
|
|||
|
for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {
|
|||
|
plugins[_key] = arguments[_key];
|
|||
|
}
|
|||
|
|
|||
|
if (plugins.length === 1 && Array.isArray(plugins[0])) {
|
|||
|
plugins = plugins[0];
|
|||
|
}
|
|||
|
return new _processor2.default(plugins);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a PostCSS plugin with a standard API.
|
|||
|
*
|
|||
|
* The newly-wrapped function will provide both the name and PostCSS
|
|||
|
* version of the plugin.
|
|||
|
*
|
|||
|
* ```js
|
|||
|
* const processor = postcss([replace]);
|
|||
|
* processor.plugins[0].postcssPlugin //=> 'postcss-replace'
|
|||
|
* processor.plugins[0].postcssVersion //=> '5.1.0'
|
|||
|
* ```
|
|||
|
*
|
|||
|
* The plugin function receives 2 arguments: {@link Root}
|
|||
|
* and {@link Result} instance. The function should mutate the provided
|
|||
|
* `Root` node. Alternatively, you can create a new `Root` node
|
|||
|
* and override the `result.root` property.
|
|||
|
*
|
|||
|
* ```js
|
|||
|
* const cleaner = postcss.plugin('postcss-cleaner', () => {
|
|||
|
* return (root, result) => {
|
|||
|
* result.root = postcss.root();
|
|||
|
* };
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* As a convenience, plugins also expose a `process` method so that you can use
|
|||
|
* them as standalone tools.
|
|||
|
*
|
|||
|
* ```js
|
|||
|
* cleaner.process(css, options);
|
|||
|
* // This is equivalent to:
|
|||
|
* postcss([ cleaner(options) ]).process(css);
|
|||
|
* ```
|
|||
|
*
|
|||
|
* Asynchronous plugins should return a `Promise` instance.
|
|||
|
*
|
|||
|
* ```js
|
|||
|
* postcss.plugin('postcss-import', () => {
|
|||
|
* return (root, result) => {
|
|||
|
* return new Promise( (resolve, reject) => {
|
|||
|
* fs.readFile('base.css', (base) => {
|
|||
|
* root.prepend(base);
|
|||
|
* resolve();
|
|||
|
* });
|
|||
|
* });
|
|||
|
* };
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* Add warnings using the {@link Node#warn} method.
|
|||
|
* Send data to other plugins using the {@link Result#messages} array.
|
|||
|
*
|
|||
|
* ```js
|
|||
|
* postcss.plugin('postcss-caniuse-test', () => {
|
|||
|
* return (root, result) => {
|
|||
|
* css.walkDecls(decl => {
|
|||
|
* if ( !caniuse.support(decl.prop) ) {
|
|||
|
* decl.warn(result, 'Some browsers do not support ' + decl.prop);
|
|||
|
* }
|
|||
|
* });
|
|||
|
* };
|
|||
|
* });
|
|||
|
* ```
|
|||
|
*
|
|||
|
* @param {string} name - PostCSS plugin name. Same as in `name`
|
|||
|
* property in `package.json`. It will be saved
|
|||
|
* in `plugin.postcssPlugin` property.
|
|||
|
* @param {function} initializer - will receive plugin options
|
|||
|
* and should return {@link pluginFunction}
|
|||
|
*
|
|||
|
* @return {Plugin} PostCSS plugin
|
|||
|
*/
|
|||
|
postcss.plugin = function plugin(name, initializer) {
|
|||
|
var creator = function creator() {
|
|||
|
var transformer = initializer.apply(undefined, arguments);
|
|||
|
transformer.postcssPlugin = name;
|
|||
|
transformer.postcssVersion = new _processor2.default().version;
|
|||
|
return transformer;
|
|||
|
};
|
|||
|
|
|||
|
var cache = void 0;
|
|||
|
Object.defineProperty(creator, 'postcss', {
|
|||
|
get: function get() {
|
|||
|
if (!cache) cache = creator();
|
|||
|
return cache;
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
creator.process = function (root, opts) {
|
|||
|
return postcss([creator(opts)]).process(root, opts);
|
|||
|
};
|
|||
|
|
|||
|
return creator;
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* Default function to convert a node tree into a CSS string.
|
|||
|
*
|
|||
|
* @param {Node} node - start node for stringifing. Usually {@link Root}.
|
|||
|
* @param {builder} builder - function to concatenate CSS from node’s parts
|
|||
|
* or generate string and source map
|
|||
|
*
|
|||
|
* @return {void}
|
|||
|
*
|
|||
|
* @function
|
|||
|
*/
|
|||
|
postcss.stringify = _stringify2.default;
|
|||
|
|
|||
|
/**
|
|||
|
* Parses source css and returns a new {@link Root} node,
|
|||
|
* which contains the source CSS nodes.
|
|||
|
*
|
|||
|
* @param {string|toString} css - string with input CSS or any object
|
|||
|
* with toString() method, like a Buffer
|
|||
|
* @param {processOptions} [opts] - options with only `from` and `map` keys
|
|||
|
*
|
|||
|
* @return {Root} PostCSS AST
|
|||
|
*
|
|||
|
* @example
|
|||
|
* // Simple CSS concatenation with source map support
|
|||
|
* const root1 = postcss.parse(css1, { from: file1 });
|
|||
|
* const root2 = postcss.parse(css2, { from: file2 });
|
|||
|
* root1.append(root2).toResult().css;
|
|||
|
*
|
|||
|
* @function
|
|||
|
*/
|
|||
|
postcss.parse = _parse2.default;
|
|||
|
|
|||
|
/**
|
|||
|
* @member {vendor} - Contains the {@link vendor} module.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* postcss.vendor.unprefixed('-moz-tab') //=> ['tab']
|
|||
|
*/
|
|||
|
postcss.vendor = _vendor2.default;
|
|||
|
|
|||
|
/**
|
|||
|
* @member {list} - Contains the {@link list} module.
|
|||
|
*
|
|||
|
* @example
|
|||
|
* postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']
|
|||
|
*/
|
|||
|
postcss.list = _list2.default;
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new {@link Comment} node.
|
|||
|
*
|
|||
|
* @param {object} [defaults] - properties for the new node.
|
|||
|
*
|
|||
|
* @return {Comment} new Comment node
|
|||
|
*
|
|||
|
* @example
|
|||
|
* postcss.comment({ text: 'test' })
|
|||
|
*/
|
|||
|
postcss.comment = function (defaults) {
|
|||
|
return new _comment2.default(defaults);
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new {@link AtRule} node.
|
|||
|
*
|
|||
|
* @param {object} [defaults] - properties for the new node.
|
|||
|
*
|
|||
|
* @return {AtRule} new AtRule node
|
|||
|
*
|
|||
|
* @example
|
|||
|
* postcss.atRule({ name: 'charset' }).toString() //=> "@charset"
|
|||
|
*/
|
|||
|
postcss.atRule = function (defaults) {
|
|||
|
return new _atRule2.default(defaults);
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new {@link Declaration} node.
|
|||
|
*
|
|||
|
* @param {object} [defaults] - properties for the new node.
|
|||
|
*
|
|||
|
* @return {Declaration} new Declaration node
|
|||
|
*
|
|||
|
* @example
|
|||
|
* postcss.decl({ prop: 'color', value: 'red' }).toString() //=> "color: red"
|
|||
|
*/
|
|||
|
postcss.decl = function (defaults) {
|
|||
|
return new _declaration2.default(defaults);
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new {@link Rule} node.
|
|||
|
*
|
|||
|
* @param {object} [defaults] - properties for the new node.
|
|||
|
*
|
|||
|
* @return {AtRule} new Rule node
|
|||
|
*
|
|||
|
* @example
|
|||
|
* postcss.rule({ selector: 'a' }).toString() //=> "a {\n}"
|
|||
|
*/
|
|||
|
postcss.rule = function (defaults) {
|
|||
|
return new _rule2.default(defaults);
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* Creates a new {@link Root} node.
|
|||
|
*
|
|||
|
* @param {object} [defaults] - properties for the new node.
|
|||
|
*
|
|||
|
* @return {Root} new Root node
|
|||
|
*
|
|||
|
* @example
|
|||
|
* postcss.root({ after: '\n' }).toString() //=> "\n"
|
|||
|
*/
|
|||
|
postcss.root = function (defaults) {
|
|||
|
return new _root2.default(defaults);
|
|||
|
};
|
|||
|
|
|||
|
exports.default = postcss;
|
|||
|
module.exports = exports['default'];
|
|||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwicm9vdCIsIm9wdHMiLCJzdHJpbmdpZnkiLCJwYXJzZSIsInZlbmRvciIsImxpc3QiLCJjb21tZW50IiwiZGVmYXVsdHMiLCJhdFJ1bGUiLCJkZWNsIiwicnVsZSJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQVNBLE9BQVQsR0FBNkI7QUFBQSxvQ0FBVEMsT0FBUztBQUFUQSxXQUFTO0FBQUE7O0FBQ3pCLE1BQUtBLFFBQVFDLE1BQVIsS0FBbUIsQ0FBbkIsSUFBd0JDLE1BQU1DLE9BQU4sQ0FBY0gsUUFBUSxDQUFSLENBQWQsQ0FBN0IsRUFBeUQ7QUFDckRBLGNBQVVBLFFBQVEsQ0FBUixDQUFWO0FBQ0g7QUFDRCxTQUFPLHdCQUFjQSxPQUFkLENBQVA7QUFDSDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBRCxRQUFRSyxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBZ0JDLElBQWhCLEVBQXNCQyxXQUF0QixFQUFtQztBQUNoRCxNQUFJQyxVQUFVLFNBQVZBLE9BQVUsR0FBbUI7QUFDN0IsUUFBSUMsY0FBY0YsdUNBQWxCO0FBQ0FFLGdCQUFZQyxhQUFaLEdBQTZCSixJQUE3QjtBQUNBRyxnQkFBWUUsY0FBWixHQUE4Qix5QkFBRCxDQUFrQkMsT0FBL0M7QUFDQSxXQUFPSCxXQUFQO0FBQ0gsR0FMRDs7QUFPQSxNQUFJSSxjQUFKO0FBQ0FDLFNBQU9DLGNBQVAsQ0FBc0JQLE9BQXRCLEVBQStCLFNBQS9CLEVBQTBDO0FBQ3RDUSxPQURzQyxpQkFDaEM7QUFDRixVQUFLLENBQUNILEtBQU4sRUFBY0EsUUFBUUwsU0FBUjtBQUNkLGFBQU9LLEtBQVA7QUFDSDtBQUpxQyxHQUExQzs7QUFPQUwsVUFBUVMsT0FBUixHQUFrQixVQUFVQyxJQUFWLEVBQWdCQyxJQUFoQixFQUFzQjtBQUNwQyxXQUFPbkIsUUFBUSxDQUFFUSxRQUFRVyxJQUFSLENBQUYsQ0FBUixFQUEyQkYsT0FBM0IsQ0FBbUNDLElBQW5DLEVBQXlDQyxJQUF6QyxDQUFQO0FBQ0gsR0FGRDs7QUFJQSxTQUFPWCxPQUFQO0FBQ0gsQ0FyQkQ7O0FBdUJBOzs7Ozs7Ozs7OztBQVdBUixRQUFRb0IsU0FBUjs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBcEIsUUFBUXFCLEtBQVI7O0FBRUE7Ozs7OztBQU1BckIsUUFBUXNCLE1BQVI7O0FBRUE7Ozs7OztBQU1BdEIsUUFBUXVCLElBQVI7O0FBRUE7Ozs7Ozs7Ozs7QUFVQXZCLFFBQVF3QixPQUFSLEdBQWtCO0FBQUEsU0FBWSxzQkFBWUMsUUFBWixDQUFaO0FBQUEsQ0FBbEI7O0FBRUE7Ozs7Ozs7Ozs7QUFVQXpCLFFBQVEwQixNQUFSLEdBQWlCO0FBQUEsU0FBWSxxQkFBV0QsUUFBWCxDQUFaO0FBQUEsQ0FBakI7O0FBRUE7Ozs7Ozs7Ozs7QUFVQXpCLFFBQVEyQixJQUFSLEdBQWU7QUFBQSxTQUFZLDBCQUFnQkYsUUFBaEIsQ0FBWjtBQUFBLENBQWY7O0FBRUE7Ozs7Ozs7Ozs7QUFVQXpCLFFBQVE0QixJQUFSLEdBQWU7QUFBQSxTQUFZLG1CQUFTSCxRQUFULENBQVo7QUFBQSxDQUFmOztBQUVBOzs7Ozs7Ozs7O0FBVUF6QixRQUFRa0IsSUFBUixHQUFlO0FBQUEsU0FBWSxtQkFBU08sUUFBVCxDQUFaO0FBQUEsQ0FBZjs7a0JBRWV6QixPIiwiZmlsZSI6InBvc3Rjc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgUHJvY2Vzc29yICAgZnJvbSAnLi9wcm9jZXNzb3InO1xuaW1wb3J0IHN0cmluZ2lmeSAgIGZyb20gJy4vc3RyaW5naWZ5JztcbmltcG9ydCBDb21tZW50ICAgICBmcm9tICcuL2NvbW1lbnQnO1xuaW1wb3J0IEF0UnVsZSAgICAgIGZyb20gJy4vYXQtcnVsZSc7XG5pbXBvcnQgdmVuZG9yICAgICAgZnJvbSAnLi92ZW5kb3InO1xuaW1wb3J0IHBhcnNlICAgICAgIGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGxpc3QgICAgICAgIGZyb20gJy4vbGlzdCc7XG5pbXBvcnQgUnVsZSAgICAgICAgZnJvbSAnLi9ydWxlJztcbmltcG9ydCBSb290ICAgICAgICBmcm9tICcuL3Jvb3QnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgUHJvY2Vzc29yfSBpbnN0YW5jZSB0aGF0IHdpbGwgYXBwbHkgYHBsdWdpbnNgXG4gKiBhcyBDU1MgcHJvY2Vzc29ycy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5LjxQbHVnaW58cGx1Z2luRnVuY3Rpb24+fFByb2Nlc3Nvcn0gcGx1Z2lucyAtIFBvc3RDU1NcbiAqICAgICAgICBwbHVnaW5zLiBTZWUge0BsaW5rIFByb2Nlc3NvciN1c2V9IGZvciBwbHVnaW4gZm9ybWF0LlxuICpcbiAqIEByZXR1cm4ge1Byb2Nlc3Nvcn0gUHJvY2Vzc29yIHRvIHByb2Nlc3MgbXVsdGlwbGUgQ1NTXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCBwb3N0Y3NzIGZyb20gJ3Bvc3Rjc3MnO1xuICpcbiAqIHBvc3Rjc3MocGx1Z2lucykucHJvY2Vzcyhjc3MsIHsgZnJvbSwgdG8gfSkudGhlbihyZXN1bHQgPT4ge1xuICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAqIH0pO1xuICpcbiAqIEBuYW1lc3BhY2UgcG9zdGNzc1xuICovXG5mdW5jdGlvbiBwb3N0Y3NzKC4uLnBsdWdpbnMpIHtcbiAgICBpZiAoIHBsdWdpbnMubGVuZ3RoID09PSAxICYmIEFycmF5LmlzQXJyYXkocGx1Z2luc1swXSkgKSB7XG4gICAgICAgIHBsdWdpbnMgPSBwbHVnaW5zWzBdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb2Nlc3NvcihwbHVnaW5zKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgUG9zdENTUyBwbHVnaW4gd2l0aCBhIHN0YW5kYXJkIEFQSS5cbiAqXG4gKiBUaGUgbmV3bHktd3JhcHBlZCBmdW5jdGlvbiB3aWxsIHByb3Zp
|