Spaces:
Running
Running
; | |
exports.__esModule = true; | |
exports["default"] = void 0; | |
var _parser = _interopRequireDefault(require("./parser")); | |
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | |
var Processor = /*#__PURE__*/function () { | |
function Processor(func, options) { | |
this.func = func || function noop() {}; | |
this.funcRes = null; | |
this.options = options; | |
} | |
var _proto = Processor.prototype; | |
_proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) { | |
if (options === void 0) { | |
options = {}; | |
} | |
var merged = Object.assign({}, this.options, options); | |
if (merged.updateSelector === false) { | |
return false; | |
} else { | |
return typeof rule !== "string"; | |
} | |
}; | |
_proto._isLossy = function _isLossy(options) { | |
if (options === void 0) { | |
options = {}; | |
} | |
var merged = Object.assign({}, this.options, options); | |
if (merged.lossless === false) { | |
return true; | |
} else { | |
return false; | |
} | |
}; | |
_proto._root = function _root(rule, options) { | |
if (options === void 0) { | |
options = {}; | |
} | |
var parser = new _parser["default"](rule, this._parseOptions(options)); | |
return parser.root; | |
}; | |
_proto._parseOptions = function _parseOptions(options) { | |
return { | |
lossy: this._isLossy(options) | |
}; | |
}; | |
_proto._run = function _run(rule, options) { | |
var _this = this; | |
if (options === void 0) { | |
options = {}; | |
} | |
return new Promise(function (resolve, reject) { | |
try { | |
var root = _this._root(rule, options); | |
Promise.resolve(_this.func(root)).then(function (transform) { | |
var string = undefined; | |
if (_this._shouldUpdateSelector(rule, options)) { | |
string = root.toString(); | |
rule.selector = string; | |
} | |
return { | |
transform: transform, | |
root: root, | |
string: string | |
}; | |
}).then(resolve, reject); | |
} catch (e) { | |
reject(e); | |
return; | |
} | |
}); | |
}; | |
_proto._runSync = function _runSync(rule, options) { | |
if (options === void 0) { | |
options = {}; | |
} | |
var root = this._root(rule, options); | |
var transform = this.func(root); | |
if (transform && typeof transform.then === "function") { | |
throw new Error("Selector processor returned a promise to a synchronous call."); | |
} | |
var string = undefined; | |
if (options.updateSelector && typeof rule !== "string") { | |
string = root.toString(); | |
rule.selector = string; | |
} | |
return { | |
transform: transform, | |
root: root, | |
string: string | |
}; | |
} | |
/** | |
* Process rule into a selector AST. | |
* | |
* @param rule {postcss.Rule | string} The css selector to be processed | |
* @param options The options for processing | |
* @returns {Promise<parser.Root>} The AST of the selector after processing it. | |
*/ | |
; | |
_proto.ast = function ast(rule, options) { | |
return this._run(rule, options).then(function (result) { | |
return result.root; | |
}); | |
} | |
/** | |
* Process rule into a selector AST synchronously. | |
* | |
* @param rule {postcss.Rule | string} The css selector to be processed | |
* @param options The options for processing | |
* @returns {parser.Root} The AST of the selector after processing it. | |
*/ | |
; | |
_proto.astSync = function astSync(rule, options) { | |
return this._runSync(rule, options).root; | |
} | |
/** | |
* Process a selector into a transformed value asynchronously | |
* | |
* @param rule {postcss.Rule | string} The css selector to be processed | |
* @param options The options for processing | |
* @returns {Promise<any>} The value returned by the processor. | |
*/ | |
; | |
_proto.transform = function transform(rule, options) { | |
return this._run(rule, options).then(function (result) { | |
return result.transform; | |
}); | |
} | |
/** | |
* Process a selector into a transformed value synchronously. | |
* | |
* @param rule {postcss.Rule | string} The css selector to be processed | |
* @param options The options for processing | |
* @returns {any} The value returned by the processor. | |
*/ | |
; | |
_proto.transformSync = function transformSync(rule, options) { | |
return this._runSync(rule, options).transform; | |
} | |
/** | |
* Process a selector into a new selector string asynchronously. | |
* | |
* @param rule {postcss.Rule | string} The css selector to be processed | |
* @param options The options for processing | |
* @returns {string} the selector after processing. | |
*/ | |
; | |
_proto.process = function process(rule, options) { | |
return this._run(rule, options).then(function (result) { | |
return result.string || result.root.toString(); | |
}); | |
} | |
/** | |
* Process a selector into a new selector string synchronously. | |
* | |
* @param rule {postcss.Rule | string} The css selector to be processed | |
* @param options The options for processing | |
* @returns {string} the selector after processing. | |
*/ | |
; | |
_proto.processSync = function processSync(rule, options) { | |
var result = this._runSync(rule, options); | |
return result.string || result.root.toString(); | |
}; | |
return Processor; | |
}(); | |
exports["default"] = Processor; | |
module.exports = exports.default; |