|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
exports.__esModule = true;
|
|
|
|
|
exports.default = void 0;
|
|
|
|
|
|
|
|
|
|
var _declaration = _interopRequireDefault(require("./declaration"));
|
|
|
|
|
|
|
|
|
|
var _processor = _interopRequireDefault(require("./processor"));
|
|
|
|
|
|
|
|
|
|
var _stringify = _interopRequireDefault(require("./stringify"));
|
|
|
|
|
|
|
|
|
|
var _comment = _interopRequireDefault(require("./comment"));
|
|
|
|
|
|
|
|
|
|
var _atRule = _interopRequireDefault(require("./at-rule"));
|
|
|
|
|
|
|
|
|
|
var _vendor = _interopRequireDefault(require("./vendor"));
|
|
|
|
|
|
|
|
|
|
var _parse = _interopRequireDefault(require("./parse"));
|
|
|
|
|
|
|
|
|
|
var _list = _interopRequireDefault(require("./list"));
|
|
|
|
|
|
|
|
|
|
var _rule = _interopRequireDefault(require("./rule"));
|
|
|
|
|
|
|
|
|
|
var _root = _interopRequireDefault(require("./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 = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
|
|
plugins[_key] = arguments[_key];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (plugins.length === 1 && Array.isArray(plugins[0])) {
|
|
|
|
|
plugins = plugins[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new _processor.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 //=> '6.0.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, processOpts, pluginOpts)
|
|
|
|
|
* // This is equivalent to:
|
|
|
|
|
* postcss([ cleaner(pluginOpts) ]).process(css, processOpts)
|
|
|
|
|
* ```
|
|
|
|
|
*
|
|
|
|
|
* 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) => {
|
|
|
|
|
* root.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) {
|
|
|
|
|
function creator() {
|
|
|
|
|
var transformer = initializer.apply(void 0, arguments);
|
|
|
|
|
transformer.postcssPlugin = name;
|
|
|
|
|
transformer.postcssVersion = new _processor.default().version;
|
|
|
|
|
return transformer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var cache;
|
|
|
|
|
Object.defineProperty(creator, 'postcss', {
|
|
|
|
|
get: function get() {
|
|
|
|
|
if (!cache) cache = creator();
|
|
|
|
|
return cache;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
creator.process = function (css, processOpts, pluginOpts) {
|
|
|
|
|
return postcss([creator(pluginOpts)]).process(css, processOpts);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
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 = _stringify.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 = _parse.default;
|
|
|
|
|
/**
|
|
|
|
|
* Contains the {@link vendor} module.
|
|
|
|
|
*
|
|
|
|
|
* @type {vendor}
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
* postcss.vendor.unprefixed('-moz-tab') //=> ['tab']
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
postcss.vendor = _vendor.default;
|
|
|
|
|
/**
|
|
|
|
|
* Contains the {@link list} module.
|
|
|
|
|
*
|
|
|
|
|
* @member {list}
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
* postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
postcss.list = _list.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 _comment.default(defaults);
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* Creates a new {@link AtRule} node.
|
|
|
|
|
*
|
|
|
|
|
* @param {object} [defaults] Properties for the new node.
|
|
|
|
|
*
|
|
|
|
|
* @return {AtRule} new at-rule node
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
* postcss.atRule({ name: 'charset' }).toString() //=> "@charset"
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
postcss.atRule = function (defaults) {
|
|
|
|
|
return new _atRule.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 _declaration.default(defaults);
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* Creates a new {@link Rule} node.
|
|
|
|
|
*
|
|
|
|
|
* @param {object} [defaults] Properties for the new node.
|
|
|
|
|
*
|
|
|
|
|
* @return {Rule} new rule node
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
* postcss.rule({ selector: 'a' }).toString() //=> "a {\n}"
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
postcss.rule = function (defaults) {
|
|
|
|
|
return new _rule.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 _root.default(defaults);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var _default = postcss;
|
|
|
|
|
exports.default = _default;
|
|
|
|
|
module.exports = exports.default;
|
|
|
|
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsImRlZmF1bHRzIiwiQ29tbWVudCIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQVNBLE9BQVQsR0FBOEI7QUFBQSxvQ0FBVEMsT0FBUztBQUFUQSxJQUFBQSxPQUFTO0FBQUE7O0FBQzVCLE1BQUlBLE9BQU8sQ0FBQ0MsTUFBUixLQUFtQixDQUFuQixJQUF3QkMsS0FBSyxDQUFDQyxPQUFOLENBQWNILE9BQU8sQ0FBQyxDQUFELENBQXJCLENBQTVCLEVBQXVEO0FBQ3JEQSxJQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQyxDQUFELENBQWpCO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFJSSxrQkFBSixDQUFjSixPQUFkLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdFQUQsT0FBTyxDQUFDTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBaUJDLElBQWpCLEVBQXVCQyxXQUF2QixFQUFvQztBQUNuRCxXQUFTQyxPQUFULEdBQTJCO0FBQ3pCLFFBQUlDLFdBQVcsR0FBR0YsV0FBVyxNQUFYLG1CQUFsQjtBQUNBRSxJQUFBQSxXQUFXLENBQUNDLGFBQVosR0FBNEJKLElBQTVCO0FBQ0FHLElBQUFBLFdBQVcsQ0FBQ0UsY0FBWixHQUE4QixJQUFJUCxrQkFBSixFQUFELENBQWtCUSxPQUEvQztBQUNBLFdBQU9ILFdBQVA7QUFDRDs7QUFFRCxNQUFJSSxLQUFKO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlAsT0FBdEIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDeENRLElBQUFBLEdBRHdDLGlCQUNqQztBQUNMLFVBQUksQ0FBQ0gsS0FBTCxFQUFZQSxLQUFLLEdBQUdMLE9BQU8sRUFBZjtBQUNaLGFBQU9LLEtBQVA7QUFDRDtBQUp1QyxHQUExQzs7QUFPQUwsRUFBQUEsT0FBTyxDQUFDUyxPQUFSLEdBQWtCLFVBQVVDLEdBQVYsRUFBZUMsV0FBZixFQUE0QkMsVUFBNUIsRUFBd0M7QUFDeEQsV0FBT3JCLE9BQU8sQ0FBQyxDQUFDUyxPQUFPLENBQUNZLFVBQUQsQ0FBUixDQUFELENBQVAsQ0FBK0JILE9BQS9CLENBQXVDQyxHQUF2QyxFQUE0Q0MsV0FBNUMsQ0FBUDtBQUNELEdBRkQ7O0FBSUEsU0FBT1gsT0FBUDtBQUNELENBckJEO0FBdUJBOzs7Ozs7Ozs7Ozs7O0FBV0FULE9BQU8sQ0FBQ3NCLFNBQVIsR0FBb0JBLGtCQUFwQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBdEIsT0FBTyxDQUFDdUIsS0FBUixHQUFnQkEsY0FBaEI7QUFFQTs7Ozs7Ozs7O0FBUUF2QixPQUFPLENBQUN3QixNQUFSLEdBQWlCQSxlQUFqQjtBQUVBOzs7Ozs7Ozs7QUFRQXhCLE9BQU8sQ0FBQ3lCLElBQVIsR0FBZUEsYUFBZjtBQUVBOzs7Ozs7Ozs7OztBQVVBekIsT0FBTyxDQUFDMEIsT0FBUixHQUFrQixVQUFBQyxRQUFRO0FBQUEsU0FBSSxJQUFJQyxnQkFBSixDQUFZRCxRQUFaLENBQUo7QUFBQSxDQUExQjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQzZCLE1BQVIsR0FBaUIsVUFBQUYsUUFBUTtBQUFBLFNBQUksSUFBSUcsZUFBSixDQUFXSCxRQUFYLENBQUo7QUFBQSxDQUF6QjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQytCLElBQVIsR0FBZSxVQUFBSixRQUFRO0FBQUEsU0FBSSxJQUFJSyxvQkFBSixDQUFnQkwsUUFBaEIsQ0FBSjtBQUFBLENBQXZCO0FBRUE7Ozs7Ozs7Ozs7OztBQVVBM0IsT0FBTyxDQUFDaUMsSUFBUixHQUFlLFVBQUFOLFFBQVE7QUFBQSxTQUFJLElBQUlPLGFBQUosQ0FBU1AsUUFBVCxDQUFKO0FBQUEsQ0FBdkI7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUEzQixPQUFPLENBQUNtQyxJQUFSLEdBQWUsVUFBQVIsUUFBUTtBQUFBLFNBQUksSUFBSVMsYUFBSixDQUFTVCxRQUFULENBQUo7QUFBQSxDQUF2Qjs7ZUFFZTNCLE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCBQcm9jZXNzb3IgZnJvbSAnLi9wcm9jZXNzb3InXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuaW1wb3J0IENvbW1lbnQgZnJvbSAnLi9jb21tZW50J1xuaW1wb3J0IEF0UnVsZSBmcm9tICcuL2F0LXJ1bGUnXG5pbXBvcnQgdmVuZG9yIGZyb20gJy4vdmVuZG9yJ1xuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UnXG5pbXBvcnQgbGlzdCBmcm9tICcuL2xpc3QnXG5pbXBvcnQgUnVsZSBmcm9tICcuL3J1bGUnXG5pbXBvcnQgUm9vdCBmcm9tICcuL3Jvb3QnXG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlIHRoYXQgd2lsbCBhcHBseSBgcGx1Z2luc2BcbiAqIGFzIENTUyBwcm9jZXNzb3JzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXkuPFBsdWdpbnxwbHVnaW5GdW5jdGlvbj58UHJvY2Vzc29yfSBwbHVnaW5zIFBvc3RDU1MgcGx1Z2lucy5cbiAqICAgICAgICBTZWUge0BsaW5rIFByb2Nlc3NvciN1c2V9IGZvciBwbHVnaW4gZm9ybWF0LlxuICpcbiAqIEByZXR1cm4ge1Byb2Nlc3Nvcn0gUHJvY2Vzc29yIHRvIHByb2Nlc3MgbXVsdGlwbGUgQ1NTLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJ1xuICpcbiAqIHBvc3Rjc3MocGx1Z2lucykucHJvY2Vzcyhjc3MsIHsgZnJvbSwgdG8gfSkudGhlbihyZXN1
|