| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 'use strict'let NoWorkResult = require('./no-work-result')let LazyResult = require('./lazy-result')let Document = require('./document')let Root = require('./root')class Processor {  constructor(plugins = []) {    this.version = '8.4.20'    this.plugins = this.normalize(plugins)  }  use(plugin) {    this.plugins = this.plugins.concat(this.normalize([plugin]))    return this  }  process(css, opts = {}) {    if (      this.plugins.length === 0 &&      typeof opts.parser === 'undefined' &&      typeof opts.stringifier === 'undefined' &&      typeof opts.syntax === 'undefined'    ) {      return new NoWorkResult(this, css, opts)    } else {      return new LazyResult(this, css, opts)    }  }  normalize(plugins) {    let normalized = []    for (let i of plugins) {      if (i.postcss === true) {        i = i()      } else if (i.postcss) {        i = i.postcss      }      if (typeof i === 'object' && Array.isArray(i.plugins)) {        normalized = normalized.concat(i.plugins)      } else if (typeof i === 'object' && i.postcssPlugin) {        normalized.push(i)      } else if (typeof i === 'function') {        normalized.push(i)      } else if (typeof i === 'object' && (i.parse || i.stringify)) {        if (process.env.NODE_ENV !== 'production') {          throw new Error(            'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +              'one of the syntax/parser/stringifier options as outlined ' +              'in your PostCSS runner documentation.'          )        }      } else {        throw new Error(i + ' is not a PostCSS plugin')      }    }    return normalized  }}module.exports = ProcessorProcessor.default = ProcessorRoot.registerProcessor(Processor)Document.registerProcessor(Processor)
 |