You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
217 lines
17 KiB
217 lines
17 KiB
4 years ago
|
"use strict";
|
||
|
|
||
|
exports.__esModule = true;
|
||
|
exports.default = void 0;
|
||
|
|
||
|
var _path = _interopRequireDefault(require("path"));
|
||
|
|
||
|
var _cssSyntaxError = _interopRequireDefault(require("./css-syntax-error"));
|
||
|
|
||
|
var _previousMap = _interopRequireDefault(require("./previous-map"));
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
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); } }
|
||
|
|
||
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||
|
|
||
|
var sequence = 0;
|
||
|
/**
|
||
|
* Represents the source CSS.
|
||
|
*
|
||
|
* @example
|
||
|
* const root = postcss.parse(css, { from: file })
|
||
|
* const input = root.source.input
|
||
|
*/
|
||
|
|
||
|
var Input =
|
||
|
/*#__PURE__*/
|
||
|
function () {
|
||
|
/**
|
||
|
* @param {string} css Input CSS source.
|
||
|
* @param {object} [opts] {@link Processor#process} options.
|
||
|
*/
|
||
|
function Input(css, opts) {
|
||
|
if (opts === void 0) {
|
||
|
opts = {};
|
||
|
}
|
||
|
|
||
|
if (css === null || typeof css === 'undefined' || typeof css === 'object' && !css.toString) {
|
||
|
throw new Error("PostCSS received " + css + " instead of CSS string");
|
||
|
}
|
||
|
/**
|
||
|
* Input CSS source
|
||
|
*
|
||
|
* @type {string}
|
||
|
*
|
||
|
* @example
|
||
|
* const input = postcss.parse('a{}', { from: file }).input
|
||
|
* input.css //=> "a{}"
|
||
|
*/
|
||
|
|
||
|
|
||
|
this.css = css.toString();
|
||
|
|
||
|
if (this.css[0] === "\uFEFF" || this.css[0] === "\uFFFE") {
|
||
|
this.hasBOM = true;
|
||
|
this.css = this.css.slice(1);
|
||
|
} else {
|
||
|
this.hasBOM = false;
|
||
|
}
|
||
|
|
||
|
if (opts.from) {
|
||
|
if (/^\w+:\/\//.test(opts.from) || _path.default.isAbsolute(opts.from)) {
|
||
|
/**
|
||
|
* The absolute path to the CSS source file defined
|
||
|
* with the `from` option.
|
||
|
*
|
||
|
* @type {string}
|
||
|
*
|
||
|
* @example
|
||
|
* const root = postcss.parse(css, { from: 'a.css' })
|
||
|
* root.source.input.file //=> '/home/ai/a.css'
|
||
|
*/
|
||
|
this.file = opts.from;
|
||
|
} else {
|
||
|
this.file = _path.default.resolve(opts.from);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var map = new _previousMap.default(this.css, opts);
|
||
|
|
||
|
if (map.text) {
|
||
|
/**
|
||
|
* The input source map passed from a compilation step before PostCSS
|
||
|
* (for example, from Sass compiler).
|
||
|
*
|
||
|
* @type {PreviousMap}
|
||
|
*
|
||
|
* @example
|
||
|
* root.source.input.map.consumer().sources //=> ['a.sass']
|
||
|
*/
|
||
|
this.map = map;
|
||
|
var file = map.consumer().file;
|
||
|
if (!this.file && file) this.file = this.mapResolve(file);
|
||
|
}
|
||
|
|
||
|
if (!this.file) {
|
||
|
sequence += 1;
|
||
|
/**
|
||
|
* The unique ID of the CSS source. It will be created if `from` option
|
||
|
* is not provided (because PostCSS does not know the file path).
|
||
|
*
|
||
|
* @type {string}
|
||
|
*
|
||
|
* @example
|
||
|
* const root = postcss.parse(css)
|
||
|
* root.source.input.file //=> undefined
|
||
|
* root.source.input.id //=> "<input css 1>"
|
||
|
*/
|
||
|
|
||
|
this.id = '<input css ' + sequence + '>';
|
||
|
}
|
||
|
|
||
|
if (this.map) this.map.file = this.from;
|
||
|
}
|
||
|
|
||
|
var _proto = Input.prototype;
|
||
|
|
||
|
_proto.error = function error(message, line, column, opts) {
|
||
|
if (opts === void 0) {
|
||
|
opts = {};
|
||
|
}
|
||
|
|
||
|
var result;
|
||
|
var origin = this.origin(line, column);
|
||
|
|
||
|
if (origin) {
|
||
|
result = new _cssSyntaxError.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);
|
||
|
} else {
|
||
|
result = new _cssSyntaxError.default(message, line, column, this.css, this.file, opts.plugin);
|
||
|
}
|
||
|
|
||
|
result.input = {
|
||
|
line: line,
|
||
|
column: column,
|
||
|
source: this.css
|
||
|
};
|
||
|
if (this.file) result.input.file = this.file;
|
||
|
return result;
|
||
|
}
|
||
|
/**
|
||
|
* Reads the input source map and returns a symbol position
|
||
|
* in the input source (e.g., in a Sass file that was compiled
|
||
|
* to CSS before being passed to PostCSS).
|
||
|
*
|
||
|
* @param {number} line Line in input CSS.
|
||
|
* @param {number} column Column in input CSS.
|
||
|
*
|
||
|
* @return {filePosition} Position in input source.
|
||
|
*
|
||
|
* @example
|
||
|
* root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }
|
||
|
*/
|
||
|
;
|
||
|
|
||
|
_proto.origin = function origin(line, column) {
|
||
|
if (!this.map) return false;
|
||
|
var consumer = this.map.consumer();
|
||
|
var from = consumer.originalPositionFor({
|
||
|
line: line,
|
||
|
column: column
|
||
|
});
|
||
|
if (!from.source) return false;
|
||
|
var result = {
|
||
|
file: this.mapResolve(from.source),
|
||
|
line: from.line,
|
||
|
column: from.column
|
||
|
};
|
||
|
var source = consumer.sourceContentFor(from.source);
|
||
|
if (source) result.source = source;
|
||
|
return result;
|
||
|
};
|
||
|
|
||
|
_proto.mapResolve = function mapResolve(file) {
|
||
|
if (/^\w+:\/\//.test(file)) {
|
||
|
return file;
|
||
|
}
|
||
|
|
||
|
return _path.default.resolve(this.map.consumer().sourceRoot || '.', file);
|
||
|
}
|
||
|
/**
|
||
|
* The CSS source identifier. Contains {@link Input#file} if the user
|
||
|
* set the `from` option, or {@link Input#id} if they did not.
|
||
|
*
|
||
|
* @type {string}
|
||
|
*
|
||
|
* @example
|
||
|
* const root = postcss.parse(css, { from: 'a.css' })
|
||
|
* root.source.input.from //=> "/home/ai/a.css"
|
||
|
*
|
||
|
* const root = postcss.parse(css)
|
||
|
* root.source.input.from //=> "<input css 1>"
|
||
|
*/
|
||
|
;
|
||
|
|
||
|
_createClass(Input, [{
|
||
|
key: "from",
|
||
|
get: function get() {
|
||
|
return this.file || this.id;
|
||
|
}
|
||
|
}]);
|
||
|
|
||
|
return Input;
|
||
|
}();
|
||
|
|
||
|
var _default = Input;
|
||
|
/**
|
||
|
* @typedef {object} filePosition
|
||
|
* @property {string} file Path to file.
|
||
|
* @property {number} line Source line in file.
|
||
|
* @property {number} column Source column in file.
|
||
|
*/
|
||
|
|
||
|
exports.default = _default;
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmVzNiJdLCJuYW1lcyI6WyJzZXF1ZW5jZSIsIklucHV0IiwiY3NzIiwib3B0cyIsInRvU3RyaW5nIiwiRXJyb3IiLCJoYXNCT00iLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwicGF0aCIsImlzQWJzb2x1dGUiLCJmaWxlIiwicmVzb2x2ZSIsIm1hcCIsIlByZXZpb3VzTWFwIiwidGV4dCIsImNvbnN1bWVyIiwibWFwUmVzb2x2ZSIsImlkIiwiZXJyb3IiLCJtZXNzYWdlIiwibGluZSIsImNvbHVtbiIsInJlc3VsdCIsIm9yaWdpbiIsIkNzc1N5bnRheEVycm9yIiwic291cmNlIiwicGx1Z2luIiwiaW5wdXQiLCJvcmlnaW5hbFBvc2l0aW9uRm9yIiwic291cmNlQ29udGVudEZvciIsInNvdXJjZVJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLENBQWY7QUFFQTs7Ozs7Ozs7SUFPTUMsSzs7O0FBQ0o7Ozs7QUFJQSxpQkFBYUMsR0FBYixFQUFrQkMsSUFBbEIsRUFBOEI7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQzVCLFFBQ0VELEdBQUcsS0FBSyxJQUFSLElBQ0EsT0FBT0EsR0FBUCxLQUFlLFdBRGYsSUFFQyxPQUFPQSxHQUFQLEtBQWUsUUFBZixJQUEyQixDQUFDQSxHQUFHLENBQUNFLFFBSG5DLEVBSUU7QUFDQSxZQUFNLElBQUlDLEtBQUosdUJBQStCSCxHQUEvQiw0QkFBTjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7O0FBU0EsU0FBS0EsR0FBTCxHQUFXQSxHQUFHLENBQUNFLFFBQUosRUFBWDs7QUFFQSxRQUFJLEtBQUtGLEdBQUwsQ0FBUyxDQUFULE1BQWdCLFFBQWhCLElBQTRCLEtBQUtBLEdBQUwsQ0FBUyxDQUFULE1BQWdCLFFBQWhELEVBQTBEO0FBQ3hELFdBQUtJLE1BQUwsR0FBYyxJQUFkO0FBQ0EsV0FBS0osR0FBTCxHQUFXLEtBQUtBLEdBQUwsQ0FBU0ssS0FBVCxDQUFlLENBQWYsQ0FBWDtBQUNELEtBSEQsTUFHTztBQUNMLFdBQUtELE1BQUwsR0FBYyxLQUFkO0FBQ0Q7O0FBRUQsUUFBSUgsSUFBSSxDQUFDSyxJQUFULEVBQWU7QUFDYixVQUFJLFlBQVlDLElBQVosQ0FBaUJOLElBQUksQ0FBQ0ssSUFBdEIsS0FBK0JFLGNBQUtDLFVBQUwsQ0FBZ0JSLElBQUksQ0FBQ0ssSUFBckIsQ0FBbkMsRUFBK0Q7QUFDN0Q7Ozs7Ozs7Ozs7QUFVQSxhQUFLSSxJQUFMLEdBQVlULElBQUksQ0FBQ0ssSUFBakI7QUFDRCxPQVpELE1BWU87QUFDTCxhQUFLSSxJQUFMLEdBQVlGLGNBQUtHLE9BQUwsQ0FBYVYsSUFBSSxDQUFDSyxJQUFsQixDQUFaO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJTSxHQUFHLEdBQUcsSUFBSUMsb0JBQUosQ0FBZ0IsS0FBS2IsR0FBckIsRUFBMEJDLElBQTFCLENBQVY7O0FBQ0EsUUFBSVcsR0FBRyxDQUFDRSxJQUFSLEVBQWM7QUFDWjs7Ozs7Ozs7O0FBU0EsV0FBS0YsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsVUFBSUYsSUFBSSxHQUFHRSxHQUFHLENBQUNHLFFBQUosR0FBZUwsSUFBMUI7QUFDQSxVQUFJLENBQUMsS0FBS0EsSUFBTixJQUFjQSxJQUFsQixFQUF3QixLQUFLQSxJQUFMLEdBQVksS0FBS00sVUFBTCxDQUFnQk4sSUFBaEIsQ0FBWjtBQUN6Qjs7QUFFRCxRQUFJLENBQUMsS0FBS0EsSUFBVixFQUFnQjtBQUNkWixNQUFBQSxRQUFRLElBQUksQ0FBWjtBQUNBOzs7Ozs7Ozs7Ozs7QUFXQSxXQUFLbUIsRUFBTCxHQUFVLGdCQUFnQm5CLFFBQWhCLEdBQTJCLEdBQXJDO0FBQ0Q7O0FBQ0QsUUFBSSxLQUFLYyxHQUFULEVBQWMsS0FBS0EsR0FBTCxDQUFTRixJQUFULEdBQWdCLEtBQUtKLElBQXJCO0FBQ2Y7Ozs7U0FFRFksSyxHQUFBLGVBQU9DLE9BQVAsRUFBZ0JDLElBQWhCLEVBQXNCQyxNQUF0QixFQUE4QnBCLElBQTlCLEVBQTBDO0FBQUEsUUFBWkEsSUFBWTtBQUFaQSxNQUFBQSxJQUFZLEdBQUwsRUFBSztBQUFBOztBQUN4QyxRQUFJcUIsTUFBSjtBQUNBLFFBQUlDLE1BQU0sR0FBRyxLQUFLQSxNQUFMLENBQVlILElBQVosRUFBa0JDLE1BQWxCLENBQWI7O0FBQ0EsUUFBSUUsTUFBSixFQUFZO0FBQ1ZELE1BQUFBLE1BQU0sR0FBRyxJQUFJRSx1QkFBSixDQUNQTCxPQURPLEVBQ0VJLE1BQU0sQ0FBQ0gsSUFEVCxFQUNlRyxNQUFNLENBQUNGLE1BRHRCLEVBRVBFLE1BQU0sQ0FBQ0UsTUFGQSxFQUVRRixNQUFNLENBQUNiLElBRmYsRUFFcUJULElBQUksQ0FBQ3lCLE1BRjFCLENBQVQ7QUFJRCxLQUxELE1BS087QUFDTEosTUFBQUEsTUFBTSxHQUFHLElBQUlFLHVCQUFKLENBQ1BMLE9BRE8sRUFDRUMsSUFERixFQUNRQyxNQURSLEVBQ2dCLEtBQUtyQixHQURyQixFQUMwQixLQUFLVSxJQUQvQixFQUNxQ1QsSUFBSSxDQUFDeUIsTUFEMUMsQ0FBVDtBQUVEOztBQUVESixJQUFBQSxNQUFNLENBQUNLLEtBQVAsR0FBZTtBQUFFUCxNQUFBQSxJQUFJLEVBQUpBLElBQUY7QUFBUUMsTUFBQUEsTUFBTSxFQUFOQSxNQUFSO0FBQWdCSSxNQUFBQSxNQUFNLEVBQUUsS0FBS3pCO0FBQTdCLEtBQWY7QUFDQSxRQUFJLEtBQUtVLElBQVQsRUFBZVksTUFBTSxDQUFDSyxLQUFQLENBQWFqQixJQUFiLEdBQW9CLEtBQUtBLElBQXpCO0FBRWYsV0FBT1ksTUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztTQWFBQyxNLEdBQUEsZ0JBQVFILElBQVIsRUFBY0MsTUFBZCxFQUFzQjtBQUNwQixRQUFJLENBQUMsS0FBS1QsR0FBVixFQUFlLE9BQU8sS0FBUDtBQUNmLFFBQUlHLFFBQVEsR0FBRyxLQUFLSCxHQUFMLENBQVNHLFFBQVQsRUFBZjtBQUVBLFFBQUlULElBQUksR0FBR1MsUUFBUSxDQUFDYSxtQkFBVCxDQUE2QjtBQUFFUixNQUFBQSxJQUFJLEVBQUpBLElBQUY7QUFBUUMsTUFBQUEsTUFBTSxFQUFOQTtBQUFSLEtBQTdCLENBQVg7QUFDQSxRQUFJLENBQUNmLElBQUksQ0FBQ21CLE1BQVYsRUFBa0IsT0FBTyxLQUFQO0FBRWxCLFFBQUlILE1BQU0sR0FBRztBQUNYWixNQUFBQSxJQUFJLEVBQUUsS0FBS00sVUFBTCxDQUFnQlYsSUFBSSxDQUFDbUIsTUFBckIsQ0FESztBQUVYTCxNQUFBQSxJQUFJLEVBQUVkLElBQUksQ0FBQ2MsSUFGQTtBQUdYQyxNQUFBQSxNQUFNLEVBQUVmLElBQUksQ0FBQ2U7QUFIRixLQUFiO0FBTUEsUUFBSUksTUFBTSxHQUFHVixRQUFR
|