Spaces:
Running
Running
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 | |