parse-tree.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. var less_error_1 = __importDefault(require("./less-error"));
  7. var transform_tree_1 = __importDefault(require("./transform-tree"));
  8. var logger_1 = __importDefault(require("./logger"));
  9. exports.default = (function (SourceMapBuilder) {
  10. var ParseTree = /** @class */ (function () {
  11. function ParseTree(root, imports) {
  12. this.root = root;
  13. this.imports = imports;
  14. }
  15. ParseTree.prototype.toCSS = function (options) {
  16. var evaldRoot;
  17. var result = {};
  18. var sourceMapBuilder;
  19. try {
  20. evaldRoot = transform_tree_1.default(this.root, options);
  21. }
  22. catch (e) {
  23. throw new less_error_1.default(e, this.imports);
  24. }
  25. try {
  26. var compress = Boolean(options.compress);
  27. if (compress) {
  28. logger_1.default.warn('The compress option has been deprecated. ' +
  29. 'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');
  30. }
  31. var toCSSOptions = {
  32. compress: compress,
  33. dumpLineNumbers: options.dumpLineNumbers,
  34. strictUnits: Boolean(options.strictUnits),
  35. numPrecision: 8
  36. };
  37. if (options.sourceMap) {
  38. sourceMapBuilder = new SourceMapBuilder(options.sourceMap);
  39. result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);
  40. }
  41. else {
  42. result.css = evaldRoot.toCSS(toCSSOptions);
  43. }
  44. }
  45. catch (e) {
  46. throw new less_error_1.default(e, this.imports);
  47. }
  48. if (options.pluginManager) {
  49. var postProcessors = options.pluginManager.getPostProcessors();
  50. for (var i = 0; i < postProcessors.length; i++) {
  51. result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options: options, imports: this.imports });
  52. }
  53. }
  54. if (options.sourceMap) {
  55. result.map = sourceMapBuilder.getExternalSourceMap();
  56. }
  57. result.imports = [];
  58. for (var file in this.imports.files) {
  59. if (this.imports.files.hasOwnProperty(file) && file !== this.imports.rootFilename) {
  60. result.imports.push(file);
  61. }
  62. }
  63. return result;
  64. };
  65. return ParseTree;
  66. }());
  67. return ParseTree;
  68. });
  69. //# sourceMappingURL=parse-tree.js.map