123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- 'use strict'
- let MapGenerator = require('./map-generator')
- let stringify = require('./stringify')
- let warnOnce = require('./warn-once')
- let parse = require('./parse')
- const Result = require('./result')
- class NoWorkResult {
- constructor(processor, css, opts) {
- css = css.toString()
- this.stringified = false
- this._processor = processor
- this._css = css
- this._opts = opts
- this._map = undefined
- let root
- let str = stringify
- this.result = new Result(this._processor, root, this._opts)
- this.result.css = css
- let self = this
- Object.defineProperty(this.result, 'root', {
- get() {
- return self.root
- }
- })
- let map = new MapGenerator(str, root, this._opts, css)
- if (map.isMap()) {
- let [generatedCSS, generatedMap] = map.generate()
- if (generatedCSS) {
- this.result.css = generatedCSS
- }
- if (generatedMap) {
- this.result.map = generatedMap
- }
- }
- }
- get [Symbol.toStringTag]() {
- return 'NoWorkResult'
- }
- get processor() {
- return this.result.processor
- }
- get opts() {
- return this.result.opts
- }
- get css() {
- return this.result.css
- }
- get content() {
- return this.result.css
- }
- get map() {
- return this.result.map
- }
- get root() {
- if (this._root) {
- return this._root
- }
- let root
- let parser = parse
- try {
- root = parser(this._css, this._opts)
- } catch (error) {
- this.error = error
- }
- if (this.error) {
- throw this.error
- } else {
- this._root = root
- return root
- }
- }
- get messages() {
- return []
- }
- warnings() {
- return []
- }
- toString() {
- return this._css
- }
- then(onFulfilled, onRejected) {
- if (process.env.NODE_ENV !== 'production') {
- if (!('from' in this._opts)) {
- warnOnce(
- 'Without `from` option PostCSS could generate wrong source map ' +
- 'and will not find Browserslist config. Set it to CSS file path ' +
- 'or to `undefined` to prevent this warning.'
- )
- }
- }
- return this.async().then(onFulfilled, onRejected)
- }
- catch(onRejected) {
- return this.async().catch(onRejected)
- }
- finally(onFinally) {
- return this.async().then(onFinally, onFinally)
- }
- async() {
- if (this.error) return Promise.reject(this.error)
- return Promise.resolve(this.result)
- }
- sync() {
- if (this.error) throw this.error
- return this.result
- }
- }
- module.exports = NoWorkResult
- NoWorkResult.default = NoWorkResult
|