mirror of
https://github.com/wu736139669/Monkey-Test.git
synced 2026-08-05 05:55:46 +00:00
261 lines
8.0 KiB
JavaScript
261 lines
8.0 KiB
JavaScript
'use strict';
|
|
|
|
exports.__esModule = true;
|
|
|
|
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
|
|
|
var _mapGenerator = require('./map-generator');
|
|
|
|
var _mapGenerator2 = _interopRequireDefault(_mapGenerator);
|
|
|
|
var _warnOnce = require('./warn-once');
|
|
|
|
var _warnOnce2 = _interopRequireDefault(_warnOnce);
|
|
|
|
var _result = require('./result');
|
|
|
|
var _result2 = _interopRequireDefault(_result);
|
|
|
|
var _parse = require('./parse');
|
|
|
|
var _parse2 = _interopRequireDefault(_parse);
|
|
|
|
var _root = require('./root');
|
|
|
|
var _root2 = _interopRequireDefault(_root);
|
|
|
|
var Promise = global.Promise || require('es6-promise').Promise;
|
|
|
|
function isPromise(obj) {
|
|
return typeof obj === 'object' && typeof obj.then === 'function';
|
|
}
|
|
|
|
var LazyResult = (function () {
|
|
function LazyResult(processor, css, opts) {
|
|
_classCallCheck(this, LazyResult);
|
|
|
|
this.stringified = false;
|
|
this.processed = false;
|
|
|
|
var root = undefined;
|
|
if (css instanceof _root2['default']) {
|
|
root = css;
|
|
} else if (css instanceof LazyResult || css instanceof _result2['default']) {
|
|
root = css.root;
|
|
if (css.map && typeof opts.map === 'undefined') {
|
|
opts.map = { prev: css.map };
|
|
}
|
|
} else {
|
|
try {
|
|
root = _parse2['default'](css, opts);
|
|
} catch (error) {
|
|
this.error = error;
|
|
}
|
|
}
|
|
|
|
this.result = new _result2['default'](processor, root, opts);
|
|
}
|
|
|
|
LazyResult.prototype.warnings = function warnings() {
|
|
return this.sync().warnings();
|
|
};
|
|
|
|
LazyResult.prototype.toString = function toString() {
|
|
return this.css;
|
|
};
|
|
|
|
LazyResult.prototype.then = function then(onFulfilled, onRejected) {
|
|
return this.async().then(onFulfilled, onRejected);
|
|
};
|
|
|
|
LazyResult.prototype['catch'] = function _catch(onRejected) {
|
|
return this.async()['catch'](onRejected);
|
|
};
|
|
|
|
LazyResult.prototype.handleError = function handleError(error, plugin) {
|
|
try {
|
|
this.error = error;
|
|
if (error.name === 'CssSyntaxError' && !error.plugin) {
|
|
error.plugin = plugin.postcssPlugin;
|
|
error.setMessage();
|
|
} else if (plugin.postcssVersion) {
|
|
var pluginName = plugin.postcssPlugin;
|
|
var pluginVer = plugin.postcssVersion;
|
|
var runtimeVer = this.result.processor.version;
|
|
var a = pluginVer.split('.');
|
|
var b = runtimeVer.split('.');
|
|
|
|
if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {
|
|
_warnOnce2['default']('Your current PostCSS version is ' + runtimeVer + ', ' + ('but ' + pluginName + ' uses ' + pluginVer + '. Perhaps ') + 'this is the source of the error below.');
|
|
}
|
|
}
|
|
} catch (err) {}
|
|
};
|
|
|
|
LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) {
|
|
var _this = this;
|
|
|
|
if (this.plugin >= this.processor.plugins.length) {
|
|
this.processed = true;
|
|
return resolve();
|
|
}
|
|
|
|
try {
|
|
(function () {
|
|
var plugin = _this.processor.plugins[_this.plugin];
|
|
var promise = _this.run(plugin);
|
|
_this.plugin += 1;
|
|
|
|
if (isPromise(promise)) {
|
|
promise.then(function () {
|
|
_this.asyncTick(resolve, reject);
|
|
})['catch'](function (error) {
|
|
_this.handleError(error, plugin);
|
|
_this.processed = true;
|
|
reject(error);
|
|
});
|
|
} else {
|
|
_this.asyncTick(resolve, reject);
|
|
}
|
|
})();
|
|
} catch (error) {
|
|
this.processed = true;
|
|
reject(error);
|
|
}
|
|
};
|
|
|
|
LazyResult.prototype.async = function async() {
|
|
var _this2 = this;
|
|
|
|
if (this.processed) {
|
|
return new Promise(function (resolve, reject) {
|
|
if (_this2.error) {
|
|
reject(_this2.error);
|
|
} else {
|
|
resolve(_this2.stringify());
|
|
}
|
|
});
|
|
}
|
|
if (this.processing) {
|
|
return this.processing;
|
|
}
|
|
|
|
this.processing = new Promise(function (resolve, reject) {
|
|
if (_this2.error) return reject(_this2.error);
|
|
_this2.plugin = 0;
|
|
_this2.asyncTick(resolve, reject);
|
|
}).then(function () {
|
|
_this2.processed = true;
|
|
return _this2.stringify();
|
|
});
|
|
|
|
return this.processing;
|
|
};
|
|
|
|
LazyResult.prototype.sync = function sync() {
|
|
if (this.processed) return this.result;
|
|
this.processed = true;
|
|
|
|
if (this.processing) {
|
|
throw new Error('Use process(css).then(cb) to work with async plugins');
|
|
}
|
|
|
|
if (this.error) throw this.error;
|
|
|
|
for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
var _ref;
|
|
|
|
if (_isArray) {
|
|
if (_i >= _iterator.length) break;
|
|
_ref = _iterator[_i++];
|
|
} else {
|
|
_i = _iterator.next();
|
|
if (_i.done) break;
|
|
_ref = _i.value;
|
|
}
|
|
|
|
var plugin = _ref;
|
|
|
|
var promise = this.run(plugin);
|
|
if (isPromise(promise)) {
|
|
throw new Error('Use process(css).then(cb) to work with async plugins');
|
|
}
|
|
}
|
|
|
|
return this.result;
|
|
};
|
|
|
|
LazyResult.prototype.run = function run(plugin) {
|
|
this.result.lastPlugin = plugin;
|
|
|
|
var returned = undefined;
|
|
try {
|
|
returned = plugin(this.result.root, this.result);
|
|
} catch (error) {
|
|
this.handleError(error, plugin);
|
|
throw error;
|
|
}
|
|
|
|
if (returned instanceof _root2['default']) {
|
|
this.result.root = returned;
|
|
} else {
|
|
return returned;
|
|
}
|
|
};
|
|
|
|
LazyResult.prototype.stringify = function stringify() {
|
|
if (this.stringified) return this.result;
|
|
this.stringified = true;
|
|
|
|
this.sync();
|
|
var map = new _mapGenerator2['default'](this.result.root, this.result.opts);
|
|
var data = map.generate();
|
|
this.result.css = data[0];
|
|
this.result.map = data[1];
|
|
|
|
return this.result;
|
|
};
|
|
|
|
_createClass(LazyResult, [{
|
|
key: 'processor',
|
|
get: function get() {
|
|
return this.result.processor;
|
|
}
|
|
}, {
|
|
key: 'opts',
|
|
get: function get() {
|
|
return this.result.opts;
|
|
}
|
|
}, {
|
|
key: 'css',
|
|
get: function get() {
|
|
return this.stringify().css;
|
|
}
|
|
}, {
|
|
key: 'map',
|
|
get: function get() {
|
|
return this.stringify().map;
|
|
}
|
|
}, {
|
|
key: 'root',
|
|
get: function get() {
|
|
return this.sync().root;
|
|
}
|
|
}, {
|
|
key: 'messages',
|
|
get: function get() {
|
|
return this.sync().messages;
|
|
}
|
|
}]);
|
|
|
|
return LazyResult;
|
|
})();
|
|
|
|
exports['default'] = LazyResult;
|
|
module.exports = exports['default'];
|
|
|
|
// Prevent hiding events because of error in error handler
|